diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..77216b6950 --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +Thumbs.db +/deploy.exclude +/deploy.sh +/messages.mo +*~ +*.DS_Store +#* +.idea/* +plugins.local/* +themes.local/* +config.php +feed-icons/* +cache/*/* +lock/* +tags +cache/htmlpurifier/*/*ser +lib/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer/*/*ser +web.config diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000000..22b33f000f --- /dev/null +++ b/.htaccess @@ -0,0 +1,3 @@ +AddType image/svg+xml svg +AddType image/svg+xml svgz + diff --git a/LICENSE b/LICENSE deleted file mode 100644 index d511905c16..0000000000 --- a/LICENSE +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/README b/README deleted file mode 100644 index 1352f9c701..0000000000 --- a/README +++ /dev/null @@ -1,36 +0,0 @@ -Tiny Tiny RSS -============= - -Web-based news feed aggregator, designed to allow you to read news from -any location, while feeling as close to a real desktop application as possible. - -http://tt-rss.org - -Licensed under GNU GPL version 2 - -Copyright (c) 2005-2010 Andrew Dolgov (unless explicitly stated otherwise). - -Requirements -============ - - * Compatible web browser (http://tt-rss.org/wiki/CompatibleBrowsers) - * Web server, for example Apache - * PHP (with support for mbstring functions) - * PostgreSQL (tested on 8.3) or MySQL (InnoDB and version 4.1+ required) - -Installation Notes -================== - - http://tt-rss.org/wiki/InstallationNotes - -See also -======== - - * FAQ: http://tt-rss.org/wiki/FrequentlyAskedQuestions - * Forum: http://tt-rss.org/forum - * Wiki: http://tt-rss.org/wiki/WikiStart - -Contact -======= - -Send your questions, comments, patches to Andrew Dolgov diff --git a/README.md b/README.md new file mode 100644 index 0000000000..0c3176f130 --- /dev/null +++ b/README.md @@ -0,0 +1,41 @@ +Tiny Tiny RSS +============= + +Web-based news feed aggregator, designed to allow you to read news from +any location, while feeling as close to a real desktop application as possible. + +http://tt-rss.org (http://mirror.tt-rss.org) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +Copyright (c) 2005 Andrew Dolgov (unless explicitly stated otherwise). + +Uses Silk icons by Mark James: http://www.famfamfam.com/lab/icons/silk/ + +## Requirements + +* Compatible web browser (http://tt-rss.org/wiki/CompatibleBrowsers) +* Web server, for example Apache +* PHP (with support for mbstring functions) +* PostgreSQL (tested on 8.3) or MySQL (InnoDB and version 4.1+ required) + +## Installation Notes + +http://tt-rss.org/wiki/InstallationNotes + +## See also + +* FAQ: http://tt-rss.org/wiki/FrequentlyAskedQuestions +* Forum: http://tt-rss.org/forum +* Wiki: http://tt-rss.org/wiki/WikiStart diff --git a/api/index.php b/api/index.php index 3064549bc2..facdf82c54 100644 --- a/api/index.php +++ b/api/index.php @@ -2,400 +2,73 @@ error_reporting(E_ERROR | E_PARSE); require_once "../config.php"; - - require_once "../db.php"; - require_once "../db-prefs.php"; - require_once "../functions.php"; - $link = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); + set_include_path(dirname(__FILE__) . PATH_SEPARATOR . + dirname(dirname(__FILE__)) . PATH_SEPARATOR . + dirname(dirname(__FILE__)) . "/include" . PATH_SEPARATOR . + get_include_path()); - $session_expire = SESSION_EXPIRE_TIME; //seconds - $session_name = (!defined('TTRSS_SESSION_NAME')) ? "ttrss_sid_api" : TTRSS_SESSION_NAME . "_api"; + chdir(".."); - session_name($session_name); + define('TTRSS_SESSION_NAME', 'ttrss_api_sid'); + define('NO_SESSION_AUTOSTART', true); - if ($_REQUEST["sid"]) { - session_id($_REQUEST["sid"]); - } - - session_start(); - - if (!$link) { - if (DB_TYPE == "mysql") { - print mysql_error(); - } - // PG seems to display its own errors just fine by default. - return; - } + require_once "autoload.php"; + require_once "db.php"; + require_once "db-prefs.php"; + require_once "functions.php"; + require_once "sessions.php"; - init_connection($link); + ini_set("session.gc_maxlifetime", 86400); - $op = db_escape_string($_REQUEST["op"]); + define('AUTH_DISABLE_OTP', true); -// header("Content-Type: application/json"); + if (defined('ENABLE_GZIP_OUTPUT') && ENABLE_GZIP_OUTPUT && + function_exists("ob_gzhandler")) { - if (!$_SESSION["uid"] && $op != "login" && $op != "isLoggedIn") { - print json_encode(array("error" => 'NOT_LOGGED_IN')); - return; + ob_start("ob_gzhandler"); + } else { + ob_start(); } - if ($_SESSION["uid"] && $op != "logout" && !get_pref($link, 'ENABLE_API_ACCESS')) { - print json_encode(array("error" => 'API_DISABLED')); - return; - } - - switch ($op) { - case "getVersion": - $rv = array("version" => VERSION); - print json_encode($rv); - break; - case "login": - $login = db_escape_string($_REQUEST["user"]); - $password = db_escape_string($_REQUEST["password"]); - - $result = db_query($link, "SELECT id FROM ttrss_users WHERE login = '$login'"); - - if (db_num_rows($result) != 0) { - $uid = db_fetch_result($result, 0, "id"); - } else { - $uid = 0; - } - - if (get_pref($link, "ENABLE_API_ACCESS", $uid)) { - if (authenticate_user($link, $login, $password)) { - print json_encode(array("session_id" => session_id())); - } else { - print json_encode(array("error" => "LOGIN_ERROR")); - } - } else { - print json_encode(array("error" => "API_DISABLED")); - } - - break; - case "logout": - logout_user(); - print json_encode(array("status" => "OK")); - break; - case "isLoggedIn": - print json_encode(array("status" => $_SESSION["uid"] != '')); - break; - case "getUnread": - $feed_id = db_escape_string($_REQUEST["feed_id"]); - $is_cat = db_escape_string($_REQUEST["is_cat"]); - - if ($feed_id) { - print json_encode(array("unread" => getFeedUnread($link, $feed_id, $is_cat))); - } else { - print json_encode(array("unread" => getGlobalUnread($link))); - } - break; - case "getCounters": - - /* TODO */ - - break; - case "getFeeds": - $cat_id = db_escape_string($_REQUEST["cat_id"]); - $unread_only = (bool)db_escape_string($_REQUEST["unread_only"]); - $limit = (int) db_escape_string($_REQUEST["limit"]); - $offset = (int) db_escape_string($_REQUEST["offset"]); - - if ($limit) { - $limit_qpart = "LIMIT $limit OFFSET $offset"; - } else { - $limit_qpart = ""; - } - - if (!$cat_id) { - $result = db_query($link, "SELECT - id, feed_url, cat_id, title, ". - SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated - FROM ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"] . - "ORDER BY cat_id, title " . $limit_qpart); - } else { - $result = db_query($link, "SELECT - id, feed_url, cat_id, title, ". - SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated - FROM ttrss_feeds WHERE - cat_id = '$cat_id' AND owner_uid = " . $_SESSION["uid"] . - "ORDER BY cat_id, title " . $limit_qpart); - } - - $feeds = array(); - - while ($line = db_fetch_assoc($result)) { - - $unread = getFeedUnread($link, $line["id"]); - - $icon_path = "../" . ICONS_DIR . "/" . $line["id"] . ".ico"; - $has_icon = file_exists($icon_path) && filesize($icon_path) > 0; - - if ($unread || !$unread_only) { - - $row = array( - "feed_url" => $line["feed_url"], - "title" => $line["title"], - "id" => (int)$line["id"], - "unread" => (int)$unread, - "has_icon" => $has_icon, - "cat_id" => (int)$line["cat_id"], - "last_updated" => strtotime($line["last_updated"]) - ); - - array_push($feeds, $row); - } - } - - /* Labels */ - - if (!$cat_id || $cat_id == -2) { - $counters = getLabelCounters($link, true); - - foreach (array_keys($counters) as $id) { - - $unread = $counters[$id]["counter"]; - - if ($unread || !$unread_only) { - - $row = array( - "id" => $id, - "title" => $counters[$id]["description"], - "unread" => $counters[$id]["counter"], - "cat_id" => -2, - ); - - array_push($feeds, $row); - } - } - } - - /* Virtual feeds */ - - if (!$cat_id || $cat_id == -1) { - foreach (array(-1, -2, -3, -4, 0) as $i) { - $unread = getFeedUnread($link, $i); - - if ($unread || !$unread_only) { - $title = getFeedTitle($link, $i); - - $row = array( - "id" => $i, - "title" => $title, - "unread" => $unread, - "cat_id" => -1, - ); - array_push($feeds, $row); - } - - } - } - - print json_encode($feeds); - - break; - case "getCategories": - $unread_only = (bool)db_escape_string($_REQUEST["unread_only"]); - - $result = db_query($link, "SELECT - id, title FROM ttrss_feed_categories - WHERE owner_uid = " . - $_SESSION["uid"]); - - $cats = array(); - - while ($line = db_fetch_assoc($result)) { - $unread = getFeedUnread($link, $line["id"], true); - - if ($unread || !$unread_only) { - array_push($cats, array("id" => $line["id"], - "title" => $line["title"], - "unread" => $unread)); - } - } - - print json_encode($cats); - break; - case "getHeadlines": - $feed_id = db_escape_string($_REQUEST["feed_id"]); - $limit = (int)db_escape_string($_REQUEST["limit"]); - $offset = (int)db_escape_string($_REQUEST["skip"]); - $filter = db_escape_string($_REQUEST["filter"]); - $is_cat = (bool)db_escape_string($_REQUEST["is_cat"]); - $show_excerpt = (bool)db_escape_string($_REQUEST["show_excerpt"]); - $show_content = (bool)db_escape_string($_REQUEST["show_content"]); - /* all_articles, unread, adaptive, marked, updated */ - $view_mode = db_escape_string($_REQUEST["view_mode"]); + $input = file_get_contents("php://input"); - /* do not rely on params below */ - - $search = db_escape_string($_REQUEST["search"]); - $search_mode = db_escape_string($_REQUEST["search_mode"]); - $match_on = db_escape_string($_REQUEST["match_on"]); - - $qfh_ret = queryFeedHeadlines($link, $feed_id, $limit, - $view_mode, $is_cat, $search, $search_mode, $match_on, - false, $offset); - - $result = $qfh_ret[0]; - $feed_title = $qfh_ret[1]; - - $headlines = array(); - - while ($line = db_fetch_assoc($result)) { - $is_updated = ($line["last_read"] == "" && - ($line["unread"] != "t" && $line["unread"] != "1")); - - $headline_row = array( - "id" => (int)$line["id"], - "unread" => sql_bool_to_bool($line["unread"]), - "marked" => sql_bool_to_bool($line["marked"]), - "updated" => strtotime($line["updated"]), - "is_updated" => $is_updated, - "title" => $line["title"], - "link" => $line["link"], - "feed_id" => $line["feed_id"], - ); - - if ($show_excerpt) { - $excerpt = truncate_string(strip_tags($line["content_preview"]), 100); - $headline_row["excerpt"] = $excerpt; - } - - if ($show_content) { - $headline_row["content"] = $line["content_preview"]; - } - - array_push($headlines, $headline_row); - } - - print json_encode($headlines); - - break; - case "updateArticle": - $article_ids = split(",", db_escape_string($_REQUEST["article_ids"])); - $mode = (int) db_escape_string($_REQUEST["mode"]); - $field_raw = (int)db_escape_string($_REQUEST["field"]); - - $field = ""; - $set_to = ""; - - switch ($field_raw) { - case 0: - $field = "marked"; - break; - case 1: - $field = "published"; - break; - case 2: - $field = "unread"; - break; - }; - - switch ($mode) { - case 1: - $set_to = "true"; - break; - case 0: - $set_to = "false"; - break; - case 2: - $set_to = "NOT $field"; - break; - } - - if ($field && $set_to && count($article_ids) > 0) { - - $article_ids = join(", ", $article_ids); - - if ($field == "unread") { - $result = db_query($link, "UPDATE ttrss_user_entries SET $field = $set_to, - last_read = NOW() - WHERE ref_id IN ($article_ids) AND owner_uid = " . $_SESSION["uid"]); - } else { - $result = db_query($link, "UPDATE ttrss_user_entries SET $field = $set_to - WHERE ref_id IN ($article_ids) AND owner_uid = " . $_SESSION["uid"]); - } - } - - break; - - case "getArticle": - - $article_id = (int)db_escape_string($_REQUEST["article_id"]); - - $query = "SELECT title,link,content,feed_id,comments,int_id, - marked,unread,published, - ".SUBSTRING_FOR_DATE."(updated,1,16) as updated, - author - FROM ttrss_entries,ttrss_user_entries - WHERE id = '$article_id' AND ref_id = id AND owner_uid = " . - $_SESSION["uid"] ; - - $result = db_query($link, $query); - - $article = array(); - - if (db_num_rows($result) != 0) { - $line = db_fetch_assoc($result); - - $article = array( - "title" => $line["title"], - "link" => $line["link"], - "labels" => get_article_labels($link, $article_id), - "unread" => sql_bool_to_bool($line["unread"]), - "marked" => sql_bool_to_bool($line["marked"]), - "published" => sql_bool_to_bool($line["published"]), - "comments" => $line["comments"], - "author" => $line["author"], - "updated" => strtotime($line["updated"]), - "content" => $line["content"], - "feed_id" => $line["feed_id"], - ); - } - - print json_encode($article); - - break; - case "getConfig": - $config = array( - "icons_dir" => ICONS_DIR, - "icons_url" => ICONS_URL); - - if (ENABLE_UPDATE_DAEMON) { - $config["daemon_is_running"] = file_is_locked("update_daemon.lock"); - } - - $result = db_query($link, "SELECT COUNT(*) AS cf FROM - ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"]); - - $num_feeds = db_fetch_result($result, 0, "cf"); - - $config["num_feeds"] = (int)$num_feeds; - - print json_encode($config); - - break; - - case "updateFeed": - $feed_id = db_escape_string($_REQUEST["feed_id"]); - - update_rss_feed($link, $feed_id, true); + if (defined('_API_DEBUG_HTTP_ENABLED') && _API_DEBUG_HTTP_ENABLED) { + // Override $_REQUEST with JSON-encoded data if available + // fallback on HTTP parameters + if ($input) { + $input = json_decode($input, true); + if ($input) $_REQUEST = $input; + } + } else { + // Accept JSON only + $input = json_decode($input, true); + $_REQUEST = $input; + } - print json_encode(array("status" => "OK")); + if ($_REQUEST["sid"]) { + session_id($_REQUEST["sid"]); + @session_start(); + } else if (defined('_API_DEBUG_HTTP_ENABLED')) { + @session_start(); + } - break; + if (!init_plugins()) return; - case "getPref": - $pref_name = db_escape_string($_REQUEST["pref_name"]); - print json_encode(array("value" => get_pref($link, $pref_name))); - break; + $method = strtolower($_REQUEST["op"]); - default: - print json_encode(array("error" => 'UNKNOWN_METHOD')); - break; + $handler = new API($_REQUEST); + if ($handler->before($method)) { + if ($method && method_exists($handler, $method)) { + $handler->$method(); + } else if (method_exists($handler, 'index')) { + $handler->index($method); + } + $handler->after(); } - db_close($link); - + header("Api-Content-Length: " . ob_get_length()); + + ob_end_flush(); ?> diff --git a/atom-to-html.xsl b/atom-to-html.xsl new file mode 100644 index 0000000000..1b827bb8f7 --- /dev/null +++ b/atom-to-html.xsl @@ -0,0 +1,51 @@ + + + + + + + + + <xsl:value-of select="atom:title"/> + + + + + + + + +
+ +

+ +

This feed has been exported from + Tiny Tiny RSS. + It contains the following items:

+ + +

+ +
+ +
+ + +

Extra...

+
+ + +
+ +
+ + + +
+ +
+ diff --git a/backend.php b/backend.php index 8ccc503afc..b2eba083ee 100644 --- a/backend.php +++ b/backend.php @@ -1,106 +1,72 @@ -

Error: Not logged in.

- - - "; + if ($_SESSION["uid"]) { + if (!validate_session()) { + header("Content-Type: text/json"); + print error_json(6); + return; } - exit; + load_user_plugins( $_SESSION["uid"]); } $purge_intervals = array( @@ -115,447 +81,67 @@ $update_intervals = array( 0 => __("Default interval"), -1 => __("Disable updates"), - 15 => __("Each 15 minutes"), - 30 => __("Each 30 minutes"), + 15 => __("15 minutes"), + 30 => __("30 minutes"), 60 => __("Hourly"), - 240 => __("Each 4 hours"), - 720 => __("Each 12 hours"), + 240 => __("4 hours"), + 720 => __("12 hours"), 1440 => __("Daily"), 10080 => __("Weekly")); $update_intervals_nodefault = array( -1 => __("Disable updates"), - 15 => __("Each 15 minutes"), - 30 => __("Each 30 minutes"), + 15 => __("15 minutes"), + 30 => __("30 minutes"), 60 => __("Hourly"), - 240 => __("Each 4 hours"), - 720 => __("Each 12 hours"), + 240 => __("4 hours"), + 720 => __("12 hours"), 1440 => __("Daily"), 10080 => __("Weekly")); - $update_methods = array( - 0 => __("Default"), - 1 => __("Magpie"), - 2 => __("SimplePie")); - - if (ENABLE_SIMPLEPIE) { - $update_methods[0] .= ' (SimplePie)'; - } else { - $update_methods[0] .= ' (Magpie)'; - } - $access_level_names = array( - 0 => __("User"), + 0 => __("User"), 5 => __("Power User"), 10 => __("Administrator")); - require_once "modules/pref-prefs.php"; - require_once "modules/popup-dialog.php"; - require_once "modules/help.php"; - require_once "modules/pref-feeds.php"; - require_once "modules/pref-filters.php"; - require_once "modules/pref-labels.php"; - require_once "modules/pref-users.php"; + $op = str_replace("-", "_", $op); - if (!sanity_check($link)) { return; } + $override = PluginHost::getInstance()->lookup_handler($op, $method); - switch($op) { // Select action according to $op value. - case "rpc": - // Handle remote procedure calls. - handle_rpc_request($link); - break; // rpc - - case "feeds": - if (ENABLE_GZIP_OUTPUT) { - ob_start("ob_gzhandler"); - } - - $tags = $_REQUEST["tags"]; - - $subop = $_REQUEST["subop"]; - - switch($subop) { - case "catchupAll": - db_query($link, "UPDATE ttrss_user_entries SET - last_read = NOW(),unread = false WHERE owner_uid = " . $_SESSION["uid"]); - ccache_zero_all($link, $_SESSION["uid"]); - - break; - - case "collapse": - $cat_id = db_escape_string($_REQUEST["cid"]); - toggle_collapse_cat($link, $cat_id); - return; - break; - - case "catsortreset": - db_query($link, "UPDATE ttrss_feed_categories - SET order_id = 0 WHERE owner_uid = " . $_SESSION["uid"]); - return; - break; + if (class_exists($op) || $override) { - case "catsort": - $corder = db_escape_string($_REQUEST["corder"]); - - $cats = split(",", $corder); - - for ($i = 0; $i < count($cats); $i++) { - $cat_id = $cats[$i]; + if ($override) { + $handler = $override; + } else { + $handler = new $op($_REQUEST); + } - if ($cat_id > 0) { - db_query($link, "UPDATE ttrss_feed_categories - SET order_id = '$i' WHERE id = '$cat_id' AND - owner_uid = " . $_SESSION["uid"]); + if ($handler && implements_interface($handler, 'IHandler')) { + if (validate_csrf($csrf_token) || $handler->csrf_ignore($method)) { + if ($handler->before($method)) { + if ($method && method_exists($handler, $method)) { + $handler->$method(); + } else { + if (method_exists($handler, "catchall")) { + $handler->catchall($method); } } - + $handler->after(); + return; + } else { + header("Content-Type: text/json"); + print error_json(6); return; - break; - - } - - $_SESSION["viewfeed:counters_stamp"] = time(); - - outputFeedList($link, $tags); - break; // feeds - - case "view": - - $id = db_escape_string($_REQUEST["id"]); - $cids = split(",", db_escape_string($_REQUEST["cids"])); - $mode = db_escape_string($_REQUEST["mode"]); - $omode = db_escape_string($_REQUEST["omode"]); - - $csync = $_REQUEST["csync"]; - - print ""; - - // in prefetch mode we only output requested cids, main article - // just gets marked as read (it already exists in client cache) - - if ($mode == "") { - outputArticleXML($link, $id, false); - } else if ($mode == "zoom") { - outputArticleXML($link, $id, false, true, true); - } else { - catchupArticleById($link, $id, 0); - } - - if (!$_SESSION["bw_limit"]) { - foreach ($cids as $cid) { - if ($cid) { - outputArticleXML($link, $cid, false, false); - } - } - } - -// if (get_pref($link, "SYNC_COUNTERS") || ($mode == "prefetch" && $csync)) { - - if (time() - $_SESSION["view:counters_stamp"] > 5 && $mode == "prefetch") { - print ""; - getAllCounters($link, $omode); - print ""; - $_SESSION["view:counters_stamp"] = time(); - } - - print ""; - break; // view - - case "viewfeed": - - $print_exec_time = true; - $timing_info = getmicrotime(); - - print ""; - - if ($_REQUEST["debug"]) $timing_info = print_checkpoint("0", $timing_info); - - $omode = db_escape_string($_REQUEST["omode"]); - - $feed = db_escape_string($_REQUEST["feed"]); - $subop = db_escape_string($_REQUEST["subop"]); - $view_mode = db_escape_string($_REQUEST["view_mode"]); - $limit = (int) get_pref($link, "DEFAULT_ARTICLE_LIMIT"); - $cat_view = db_escape_string($_REQUEST["cat"]); - $next_unread_feed = db_escape_string($_REQUEST["nuf"]); - $offset = db_escape_string($_REQUEST["skip"]); - $vgroup_last_feed = db_escape_string($_REQUEST["vgrlf"]); - $csync = $_REQUEST["csync"]; - $order_by = db_escape_string($_REQUEST["order_by"]); - - /* Updating a label ccache means recalculating all of the caches - * so for performance reasons we don't do that here */ - -// if (time() - $_SESSION["viewfeed:ccache_update_stamp"] > 120) { - if ($feed >= 0) { - ccache_update($link, $feed, $_SESSION["uid"], $cat_view); - } - $_SESSION["viewfeed:ccache_update_stamp"] = time(); -// } - - set_pref($link, "_DEFAULT_VIEW_MODE", $view_mode); - set_pref($link, "_DEFAULT_VIEW_LIMIT", $limit); - set_pref($link, "_DEFAULT_VIEW_ORDER_BY", $order_by); - - if (!$cat_view && preg_match("/^[0-9][0-9]*$/", $feed)) { - db_query($link, "UPDATE ttrss_feeds SET last_viewed = NOW() - WHERE id = '$feed' AND owner_uid = ".$_SESSION["uid"]); - } - - if (!$next_unread_feed) { - print ""; - - print ""; - print ""; - - $headlines_unread = ccache_find($link, $returned_feed, $_SESSION["uid"], - $cat_view, true); - - if ($headlines_unread == -1) { - $headlines_unread = getFeedUnread($link, $returned_feed, $cat_view); - - } - - print ""; - printf("", $disable_cache); - - if ($_REQUEST["debug"]) $timing_info = print_checkpoint("10", $timing_info); - - if (is_array($topmost_article_ids) && !get_pref($link, 'COMBINED_DISPLAY_MODE') && !$_SESSION["bw_limit"]) { - print ""; - foreach ($topmost_article_ids as $id) { - outputArticleXML($link, $id, $feed, false); - } - print ""; - } - - if ($_REQUEST["debug"]) $timing_info = print_checkpoint("20", $timing_info); - - -// if (get_pref($link, "SYNC_COUNTERS") || -// time() - $_SESSION["get_all_counters_stamp"] > $viewfeed_ctr_interval) { -// print ""; -// getAllCounters($link, $omode, $feed); -// print ""; -// } - - if (get_pref($link, 'COMBINED_DISPLAY_MODE') || $subop || - time() - $_SESSION["viewfeed:counters_stamp"] > 5) { - if (!$offset) { - print ""; - getAllCounters($link, $omode, $feed); - print ""; - $_SESSION["viewfeed:counters_stamp"] = time(); - } - } - - if ($_REQUEST["debug"]) $timing_info = print_checkpoint("30", $timing_info); - - print_runtime_info($link); - - print ""; - break; // viewfeed - - case "pref-feeds": - module_pref_feeds($link); - break; // pref-feeds - - case "pref-filters": - module_pref_filters($link); - break; // pref-filters - - case "pref-labels": - module_pref_labels($link); - break; // pref-labels - - case "pref-prefs": - module_pref_prefs($link); - break; // pref-prefs - - case "pref-users": - module_pref_users($link); - break; // prefs-users - - case "help": - module_help($link); - break; // help - - case "dlg": - module_popup_dialog($link); - break; // dlg - - case "pref-pub-items": - module_pref_pub_items($link); - break; // pref-pub-items - - case "globalUpdateFeeds": - // update feeds of all users, may be used anonymously - - print ""; - - print " - - "; - break; // globalUpdateFeeds - - case "pref-feed-browser": - module_pref_feed_browser($link); - break; // pref-feed-browser - - case "publish": - $key = db_escape_string($_REQUEST["key"]); - $limit = (int)db_escape_string($_REQUEST["limit"]); - - $result = db_query($link, "SELECT login, owner_uid - FROM ttrss_user_prefs, ttrss_users WHERE - pref_name = '_PREFS_PUBLISH_KEY' AND - value = '$key' AND - ttrss_users.id = owner_uid"); - - if (db_num_rows($result) == 1) { - $owner = db_fetch_result($result, 0, "owner_uid"); - $login = db_fetch_result($result, 0, "login"); - - generate_syndicated_feed($link, $owner, -2, false, $limit); - - } else { - print "User not found"; - } - break; // publish - - case "rss": - $feed = db_escape_string($_REQUEST["id"]); - $user = db_escape_string($_REQUEST["user"]); - $pass = db_escape_string($_REQUEST["pass"]); - $is_cat = $_REQUEST["is_cat"] != false; - $limit = (int)db_escape_string($_REQUEST["limit"]); - - $search = db_escape_string($_REQUEST["q"]); - $match_on = db_escape_string($_REQUEST["m"]); - $search_mode = db_escape_string($_REQUEST["smode"]); - - if (SINGLE_USER_MODE) { - authenticate_user($link, "admin", null); - } - - if (!$_SESSION["uid"] && $user && $pass) { - authenticate_user($link, $user, $pass); - } - - if ($_SESSION["uid"] || - http_authenticate_user($link)) { - - generate_syndicated_feed($link, 0, $feed, $is_cat, $limit, - $search, $search_mode, $match_on); - } - break; // rss - - case "getUnread": - $login = db_escape_string($_REQUEST["login"]); - $fresh = $_REQUEST["fresh"] == "1"; - - header("Content-Type: text/plain; charset=utf-8"); - - $result = db_query($link, "SELECT id FROM ttrss_users WHERE login = '$login'"); - - if (db_num_rows($result) == 1) { - $uid = db_fetch_result($result, 0, "id"); - - print getGlobalUnread($link, $uid); - - if ($fresh) { - print ";"; - print getFeedArticles($link, -3, false, true, $uid); } - } else { - print "-1;User not found"; - } - - $print_exec_time = false; - break; // getUnread - - case "digestTest": - header("Content-Type: text/plain"); - print_r(prepare_headlines_digest($link, $_SESSION["uid"])); - $print_exec_time = false; - break; // digestTest - - case "digestSend": - header("Content-Type: text/plain"); - send_headlines_digests($link); - $print_exec_time = false; - break; // digestSend - - case "getProfiles": - $login = db_escape_string($_REQUEST["login"]); - $password = db_escape_string($_REQUEST["password"]); - - if (authenticate_user($link, $login, $password)) { - $result = db_query($link, "SELECT * FROM ttrss_settings_profiles - WHERE owner_uid = " . $_SESSION["uid"] . " ORDER BY title"); - - print ""; - - $_SESSION = array(); + header("Content-Type: text/json"); + print error_json(6); + return; } - break; + } + } - } // Select action according to $op value. + header("Content-Type: text/json"); + print error_json(13); - // We close the connection to database. - db_close($link); ?> - - - - diff --git a/cache/.htaccess b/cache/.htaccess new file mode 100755 index 0000000000..93169e4eb4 --- /dev/null +++ b/cache/.htaccess @@ -0,0 +1,2 @@ +Order deny,allow +Deny from all diff --git a/icons/.empty b/cache/export/.empty old mode 100644 new mode 100755 similarity index 100% rename from icons/.empty rename to cache/export/.empty diff --git a/lib/xmlrpc/.empty b/cache/images/.empty old mode 100644 new mode 100755 similarity index 100% rename from lib/xmlrpc/.empty rename to cache/images/.empty diff --git a/cache/js/.empty b/cache/js/.empty new file mode 100755 index 0000000000..e69de29bb2 diff --git a/cache/simplepie/.empty b/cache/simplepie/.empty new file mode 100755 index 0000000000..e69de29bb2 diff --git a/cache/upload/.empty b/cache/upload/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/classes/.htaccess b/classes/.htaccess new file mode 100644 index 0000000000..93169e4eb4 --- /dev/null +++ b/classes/.htaccess @@ -0,0 +1,2 @@ +Order deny,allow +Deny from all diff --git a/classes/api.php b/classes/api.php new file mode 100644 index 0000000000..08c1846d2a --- /dev/null +++ b/classes/api.php @@ -0,0 +1,870 @@ +wrap(self::STATUS_ERR, array("error" => 'NOT_LOGGED_IN')); + return false; + } + + if ($_SESSION["uid"] && $method != "logout" && !get_pref('ENABLE_API_ACCESS')) { + $this->wrap(self::STATUS_ERR, array("error" => 'API_DISABLED')); + return false; + } + + $this->seq = (int) $_REQUEST['seq']; + + return true; + } + return false; + } + + function wrap($status, $reply) { + print json_encode(array("seq" => $this->seq, + "status" => $status, + "content" => $reply)); + } + + function getVersion() { + $rv = array("version" => VERSION); + $this->wrap(self::STATUS_OK, $rv); + } + + function getApiLevel() { + $rv = array("level" => self::API_LEVEL); + $this->wrap(self::STATUS_OK, $rv); + } + + function login() { + @session_destroy(); + @session_start(); + + $login = $this->dbh->escape_string($_REQUEST["user"]); + $password = $_REQUEST["password"]; + $password_base64 = base64_decode($_REQUEST["password"]); + + if (SINGLE_USER_MODE) $login = "admin"; + + $result = $this->dbh->query("SELECT id FROM ttrss_users WHERE login = '$login'"); + + if ($this->dbh->num_rows($result) != 0) { + $uid = $this->dbh->fetch_result($result, 0, "id"); + } else { + $uid = 0; + } + + if (!$uid) { + $this->wrap(self::STATUS_ERR, array("error" => "LOGIN_ERROR")); + return; + } + + if (get_pref("ENABLE_API_ACCESS", $uid)) { + if (authenticate_user($login, $password)) { // try login with normal password + $this->wrap(self::STATUS_OK, array("session_id" => session_id(), + "api_level" => self::API_LEVEL)); + } else if (authenticate_user($login, $password_base64)) { // else try with base64_decoded password + $this->wrap(self::STATUS_OK, array("session_id" => session_id(), + "api_level" => self::API_LEVEL)); + } else { // else we are not logged in + user_error("Failed login attempt for $login from {$_SERVER['REMOTE_ADDR']}", E_USER_WARNING); + $this->wrap(self::STATUS_ERR, array("error" => "LOGIN_ERROR")); + } + } else { + $this->wrap(self::STATUS_ERR, array("error" => "API_DISABLED")); + } + + } + + function logout() { + logout_user(); + $this->wrap(self::STATUS_OK, array("status" => "OK")); + } + + function isLoggedIn() { + $this->wrap(self::STATUS_OK, array("status" => $_SESSION["uid"] != '')); + } + + function getUnread() { + $feed_id = $this->dbh->escape_string($_REQUEST["feed_id"]); + $is_cat = $this->dbh->escape_string($_REQUEST["is_cat"]); + + if ($feed_id) { + $this->wrap(self::STATUS_OK, array("unread" => getFeedUnread($feed_id, $is_cat))); + } else { + $this->wrap(self::STATUS_OK, array("unread" => getGlobalUnread())); + } + } + + /* Method added for ttrss-reader for Android */ + function getCounters() { + $this->wrap(self::STATUS_OK, getAllCounters()); + } + + function getFeeds() { + $cat_id = $this->dbh->escape_string($_REQUEST["cat_id"]); + $unread_only = sql_bool_to_bool($_REQUEST["unread_only"]); + $limit = (int) $this->dbh->escape_string($_REQUEST["limit"]); + $offset = (int) $this->dbh->escape_string($_REQUEST["offset"]); + $include_nested = sql_bool_to_bool($_REQUEST["include_nested"]); + + $feeds = $this->api_get_feeds($cat_id, $unread_only, $limit, $offset, $include_nested); + + $this->wrap(self::STATUS_OK, $feeds); + } + + function getCategories() { + $unread_only = sql_bool_to_bool($_REQUEST["unread_only"]); + $enable_nested = sql_bool_to_bool($_REQUEST["enable_nested"]); + $include_empty = sql_bool_to_bool($_REQUEST['include_empty']); + + // TODO do not return empty categories, return Uncategorized and standard virtual cats + + if ($enable_nested) + $nested_qpart = "parent_cat IS NULL"; + else + $nested_qpart = "true"; + + $result = $this->dbh->query("SELECT + id, title, order_id, (SELECT COUNT(id) FROM + ttrss_feeds WHERE + ttrss_feed_categories.id IS NOT NULL AND cat_id = ttrss_feed_categories.id) AS num_feeds, + (SELECT COUNT(id) FROM + ttrss_feed_categories AS c2 WHERE + c2.parent_cat = ttrss_feed_categories.id) AS num_cats + FROM ttrss_feed_categories + WHERE $nested_qpart AND owner_uid = " . + $_SESSION["uid"]); + + $cats = array(); + + while ($line = $this->dbh->fetch_assoc($result)) { + if ($include_empty || $line["num_feeds"] > 0 || $line["num_cats"] > 0) { + $unread = getFeedUnread($line["id"], true); + + if ($enable_nested) + $unread += getCategoryChildrenUnread($line["id"]); + + if ($unread || !$unread_only) { + array_push($cats, array("id" => $line["id"], + "title" => $line["title"], + "unread" => $unread, + "order_id" => (int) $line["order_id"], + )); + } + } + } + + foreach (array(-2,-1,0) as $cat_id) { + if ($include_empty || !$this->isCategoryEmpty($cat_id)) { + $unread = getFeedUnread($cat_id, true); + + if ($unread || !$unread_only) { + array_push($cats, array("id" => $cat_id, + "title" => getCategoryTitle($cat_id), + "unread" => $unread)); + } + } + } + + $this->wrap(self::STATUS_OK, $cats); + } + + function getHeadlines() { + $feed_id = $this->dbh->escape_string($_REQUEST["feed_id"]); + if ($feed_id != "") { + + if (is_numeric($feed_id)) $feed_id = (int) $feed_id; + + $limit = (int)$this->dbh->escape_string($_REQUEST["limit"]); + + if (!$limit || $limit >= 200) $limit = 200; + + $offset = (int)$this->dbh->escape_string($_REQUEST["skip"]); + $filter = $this->dbh->escape_string($_REQUEST["filter"]); + $is_cat = sql_bool_to_bool($_REQUEST["is_cat"]); + $show_excerpt = sql_bool_to_bool($_REQUEST["show_excerpt"]); + $show_content = sql_bool_to_bool($_REQUEST["show_content"]); + /* all_articles, unread, adaptive, marked, updated */ + $view_mode = $this->dbh->escape_string($_REQUEST["view_mode"]); + $include_attachments = sql_bool_to_bool($_REQUEST["include_attachments"]); + $since_id = (int)$this->dbh->escape_string($_REQUEST["since_id"]); + $include_nested = sql_bool_to_bool($_REQUEST["include_nested"]); + $sanitize_content = !isset($_REQUEST["sanitize"]) || + sql_bool_to_bool($_REQUEST["sanitize"]); + $force_update = sql_bool_to_bool($_REQUEST["force_update"]); + $has_sandbox = sql_bool_to_bool($_REQUEST["has_sandbox"]); + $excerpt_length = (int)$this->dbh->escape_string($_REQUEST["excerpt_length"]); + $check_first_id = (int)$this->dbh->escape_string($_REQUEST["check_first_id"]); + $include_header = sql_bool_to_bool($_REQUEST["include_header"]); + + $_SESSION['hasSandbox'] = $has_sandbox; + + $override_order = false; + switch ($_REQUEST["order_by"]) { + case "title": + $override_order = "ttrss_entries.title"; + break; + case "date_reverse": + $override_order = "score DESC, date_entered, updated"; + break; + case "feed_dates": + $override_order = "updated DESC"; + break; + } + + /* do not rely on params below */ + + $search = $this->dbh->escape_string($_REQUEST["search"]); + + list($headlines, $headlines_header) = $this->api_get_headlines($feed_id, $limit, $offset, + $filter, $is_cat, $show_excerpt, $show_content, $view_mode, $override_order, + $include_attachments, $since_id, $search, + $include_nested, $sanitize_content, $force_update, $excerpt_length, $check_first_id); + + if ($include_header) { + $this->wrap(self::STATUS_OK, array($headlines_header, $headlines)); + } else { + $this->wrap(self::STATUS_OK, $headlines); + } + } else { + $this->wrap(self::STATUS_ERR, array("error" => 'INCORRECT_USAGE')); + } + } + + function updateArticle() { + $article_ids = array_filter(explode(",", $this->dbh->escape_string($_REQUEST["article_ids"])), is_numeric); + $mode = (int) $this->dbh->escape_string($_REQUEST["mode"]); + $data = $this->dbh->escape_string($_REQUEST["data"]); + $field_raw = (int)$this->dbh->escape_string($_REQUEST["field"]); + + $field = ""; + $set_to = ""; + + switch ($field_raw) { + case 0: + $field = "marked"; + $additional_fields = ",last_marked = NOW()"; + break; + case 1: + $field = "published"; + $additional_fields = ",last_published = NOW()"; + break; + case 2: + $field = "unread"; + $additional_fields = ",last_read = NOW()"; + break; + case 3: + $field = "note"; + }; + + switch ($mode) { + case 1: + $set_to = "true"; + break; + case 0: + $set_to = "false"; + break; + case 2: + $set_to = "NOT $field"; + break; + } + + if ($field == "note") $set_to = "'$data'"; + + if ($field && $set_to && count($article_ids) > 0) { + + $article_ids = join(", ", $article_ids); + + $result = $this->dbh->query("UPDATE ttrss_user_entries SET $field = $set_to $additional_fields WHERE ref_id IN ($article_ids) AND owner_uid = " . $_SESSION["uid"]); + + $num_updated = $this->dbh->affected_rows($result); + + if ($num_updated > 0 && $field == "unread") { + $result = $this->dbh->query("SELECT DISTINCT feed_id FROM ttrss_user_entries + WHERE ref_id IN ($article_ids)"); + + while ($line = $this->dbh->fetch_assoc($result)) { + ccache_update($line["feed_id"], $_SESSION["uid"]); + } + } + + if ($num_updated > 0 && $field == "published") { + if (PUBSUBHUBBUB_HUB) { + $rss_link = get_self_url_prefix() . + "/public.php?op=rss&id=-2&key=" . + get_feed_access_key(-2, false); + + $p = new Publisher(PUBSUBHUBBUB_HUB); + $pubsub_result = $p->publish_update($rss_link); + } + } + + $this->wrap(self::STATUS_OK, array("status" => "OK", + "updated" => $num_updated)); + + } else { + $this->wrap(self::STATUS_ERR, array("error" => 'INCORRECT_USAGE')); + } + + } + + function getArticle() { + + $article_id = join(",", array_filter(explode(",", $this->dbh->escape_string($_REQUEST["article_id"])), is_numeric)); + + if ($article_id) { + + $query = "SELECT id,title,link,content,feed_id,comments,int_id, + marked,unread,published,score,note,lang, + ".SUBSTRING_FOR_DATE."(updated,1,16) as updated, + author,(SELECT title FROM ttrss_feeds WHERE id = feed_id) AS feed_title + FROM ttrss_entries,ttrss_user_entries + WHERE id IN ($article_id) AND ref_id = id AND owner_uid = " . + $_SESSION["uid"] ; + + $result = $this->dbh->query($query); + + $articles = array(); + + if ($this->dbh->num_rows($result) != 0) { + + while ($line = $this->dbh->fetch_assoc($result)) { + + $attachments = get_article_enclosures($line['id']); + + $article = array( + "id" => $line["id"], + "title" => $line["title"], + "link" => $line["link"], + "labels" => get_article_labels($line['id']), + "unread" => sql_bool_to_bool($line["unread"]), + "marked" => sql_bool_to_bool($line["marked"]), + "published" => sql_bool_to_bool($line["published"]), + "comments" => $line["comments"], + "author" => $line["author"], + "updated" => (int) strtotime($line["updated"]), + "content" => $line["content"], + "feed_id" => $line["feed_id"], + "attachments" => $attachments, + "score" => (int)$line["score"], + "feed_title" => $line["feed_title"], + "note" => $line["note"], + "lang" => $line["lang"] + ); + + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_RENDER_ARTICLE_API) as $p) { + $article = $p->hook_render_article_api(array("article" => $article)); + } + + + array_push($articles, $article); + + } + } + + $this->wrap(self::STATUS_OK, $articles); + } else { + $this->wrap(self::STATUS_ERR, array("error" => 'INCORRECT_USAGE')); + } + } + + function getConfig() { + $config = array( + "icons_dir" => ICONS_DIR, + "icons_url" => ICONS_URL); + + $config["daemon_is_running"] = file_is_locked("update_daemon.lock"); + + $result = $this->dbh->query("SELECT COUNT(*) AS cf FROM + ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"]); + + $num_feeds = $this->dbh->fetch_result($result, 0, "cf"); + + $config["num_feeds"] = (int)$num_feeds; + + $this->wrap(self::STATUS_OK, $config); + } + + function updateFeed() { + require_once "include/rssfuncs.php"; + + $feed_id = (int) $this->dbh->escape_string($_REQUEST["feed_id"]); + + update_rss_feed($feed_id, true); + + $this->wrap(self::STATUS_OK, array("status" => "OK")); + } + + function catchupFeed() { + $feed_id = $this->dbh->escape_string($_REQUEST["feed_id"]); + $is_cat = $this->dbh->escape_string($_REQUEST["is_cat"]); + + catchup_feed($feed_id, $is_cat); + + $this->wrap(self::STATUS_OK, array("status" => "OK")); + } + + function getPref() { + $pref_name = $this->dbh->escape_string($_REQUEST["pref_name"]); + + $this->wrap(self::STATUS_OK, array("value" => get_pref($pref_name))); + } + + function getLabels() { + //$article_ids = array_filter(explode(",", $this->dbh->escape_string($_REQUEST["article_ids"])), is_numeric); + + $article_id = (int)$_REQUEST['article_id']; + + $rv = array(); + + $result = $this->dbh->query("SELECT id, caption, fg_color, bg_color + FROM ttrss_labels2 + WHERE owner_uid = '".$_SESSION['uid']."' ORDER BY caption"); + + if ($article_id) + $article_labels = get_article_labels($article_id); + else + $article_labels = array(); + + while ($line = $this->dbh->fetch_assoc($result)) { + + $checked = false; + foreach ($article_labels as $al) { + if (feed_to_label_id($al[0]) == $line['id']) { + $checked = true; + break; + } + } + + array_push($rv, array( + "id" => (int)label_to_feed_id($line['id']), + "caption" => $line['caption'], + "fg_color" => $line['fg_color'], + "bg_color" => $line['bg_color'], + "checked" => $checked)); + } + + $this->wrap(self::STATUS_OK, $rv); + } + + function setArticleLabel() { + + $article_ids = array_filter(explode(",", $this->dbh->escape_string($_REQUEST["article_ids"])), is_numeric); + $label_id = (int) $this->dbh->escape_string($_REQUEST['label_id']); + $assign = (bool) $this->dbh->escape_string($_REQUEST['assign']) == "true"; + + $label = $this->dbh->escape_string(label_find_caption( + feed_to_label_id($label_id), $_SESSION["uid"])); + + $num_updated = 0; + + if ($label) { + + foreach ($article_ids as $id) { + + if ($assign) + label_add_article($id, $label, $_SESSION["uid"]); + else + label_remove_article($id, $label, $_SESSION["uid"]); + + ++$num_updated; + + } + } + + $this->wrap(self::STATUS_OK, array("status" => "OK", + "updated" => $num_updated)); + + } + + function index($method) { + $plugin = PluginHost::getInstance()->get_api_method(strtolower($method)); + + if ($plugin && method_exists($plugin, $method)) { + $reply = $plugin->$method(); + + $this->wrap($reply[0], $reply[1]); + + } else { + $this->wrap(self::STATUS_ERR, array("error" => 'UNKNOWN_METHOD', "method" => $method)); + } + } + + function shareToPublished() { + $title = $this->dbh->escape_string(strip_tags($_REQUEST["title"])); + $url = $this->dbh->escape_string(strip_tags($_REQUEST["url"])); + $content = $this->dbh->escape_string(strip_tags($_REQUEST["content"])); + + if (Article::create_published_article($title, $url, $content, "", $_SESSION["uid"])) { + $this->wrap(self::STATUS_OK, array("status" => 'OK')); + } else { + $this->wrap(self::STATUS_ERR, array("error" => 'Publishing failed')); + } + } + + static function api_get_feeds($cat_id, $unread_only, $limit, $offset, $include_nested = false) { + + $feeds = array(); + + /* Labels */ + + if ($cat_id == -4 || $cat_id == -2) { + $counters = getLabelCounters(true); + + foreach (array_values($counters) as $cv) { + + $unread = $cv["counter"]; + + if ($unread || !$unread_only) { + + $row = array( + "id" => (int) $cv["id"], + "title" => $cv["description"], + "unread" => $cv["counter"], + "cat_id" => -2, + ); + + array_push($feeds, $row); + } + } + } + + /* Virtual feeds */ + + if ($cat_id == -4 || $cat_id == -1) { + foreach (array(-1, -2, -3, -4, -6, 0) as $i) { + $unread = getFeedUnread($i); + + if ($unread || !$unread_only) { + $title = getFeedTitle($i); + + $row = array( + "id" => $i, + "title" => $title, + "unread" => $unread, + "cat_id" => -1, + ); + array_push($feeds, $row); + } + + } + } + + /* Child cats */ + + if ($include_nested && $cat_id) { + $result = db_query("SELECT + id, title FROM ttrss_feed_categories + WHERE parent_cat = '$cat_id' AND owner_uid = " . $_SESSION["uid"] . + " ORDER BY id, title"); + + while ($line = db_fetch_assoc($result)) { + $unread = getFeedUnread($line["id"], true) + + getCategoryChildrenUnread($line["id"]); + + if ($unread || !$unread_only) { + $row = array( + "id" => (int) $line["id"], + "title" => $line["title"], + "unread" => $unread, + "is_cat" => true, + ); + array_push($feeds, $row); + } + } + } + + /* Real feeds */ + + if ($limit) { + $limit_qpart = "LIMIT $limit OFFSET $offset"; + } else { + $limit_qpart = ""; + } + + if ($cat_id == -4 || $cat_id == -3) { + $result = db_query("SELECT + id, feed_url, cat_id, title, order_id, ". + SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated + FROM ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"] . + " ORDER BY cat_id, title " . $limit_qpart); + } else { + + if ($cat_id) + $cat_qpart = "cat_id = '$cat_id'"; + else + $cat_qpart = "cat_id IS NULL"; + + $result = db_query("SELECT + id, feed_url, cat_id, title, order_id, ". + SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated + FROM ttrss_feeds WHERE + $cat_qpart AND owner_uid = " . $_SESSION["uid"] . + " ORDER BY cat_id, title " . $limit_qpart); + } + + while ($line = db_fetch_assoc($result)) { + + $unread = getFeedUnread($line["id"]); + + $has_icon = feed_has_icon($line['id']); + + if ($unread || !$unread_only) { + + $row = array( + "feed_url" => $line["feed_url"], + "title" => $line["title"], + "id" => (int)$line["id"], + "unread" => (int)$unread, + "has_icon" => $has_icon, + "cat_id" => (int)$line["cat_id"], + "last_updated" => (int) strtotime($line["last_updated"]), + "order_id" => (int) $line["order_id"], + ); + + array_push($feeds, $row); + } + } + + return $feeds; + } + + static function api_get_headlines($feed_id, $limit, $offset, + $filter, $is_cat, $show_excerpt, $show_content, $view_mode, $order, + $include_attachments, $since_id, + $search = "", $include_nested = false, $sanitize_content = true, + $force_update = false, $excerpt_length = 100, $check_first_id = false) { + + if ($force_update && $feed_id > 0 && is_numeric($feed_id)) { + // Update the feed if required with some basic flood control + + $result = db_query( + "SELECT cache_images,".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated + FROM ttrss_feeds WHERE id = '$feed_id'"); + + if (db_num_rows($result) != 0) { + $last_updated = strtotime(db_fetch_result($result, 0, "last_updated")); + $cache_images = sql_bool_to_bool(db_fetch_result($result, 0, "cache_images")); + + if (!$cache_images && time() - $last_updated > 120) { + include "rssfuncs.php"; + update_rss_feed($feed_id, true, true); + } else { + db_query("UPDATE ttrss_feeds SET last_updated = '1970-01-01', last_update_started = '1970-01-01' + WHERE id = '$feed_id'"); + } + } + } + + /*$qfh_ret = queryFeedHeadlines($feed_id, $limit, + $view_mode, $is_cat, $search, false, + $order, $offset, 0, false, $since_id, $include_nested);*/ + + //function queryFeedHeadlines($feed, $limit, + // $view_mode, $cat_view, $search, $search_mode, + // $override_order = false, $offset = 0, $owner_uid = 0, $filter = false, $since_id = 0, $include_children = false, + // $ignore_vfeed_group = false, $override_strategy = false, $override_vfeed = false, $start_ts = false, $check_top_id = false) { + + $params = array( + "feed" => $feed_id, + "limit" => $limit, + "view_mode" => $view_mode, + "cat_view" => $is_cat, + "search" => $search, + "override_order" => $order, + "offset" => $offset, + "since_id" => $since_id, + "include_children" => $include_nested, + "check_first_id" => $check_first_id + ); + + $qfh_ret = queryFeedHeadlines($params); + + $result = $qfh_ret[0]; + $feed_title = $qfh_ret[1]; + $first_id = $qfh_ret[6]; + + $headlines = array(); + + $headlines_header = array( + 'id' => $feed_id, + 'first_id' => $first_id, + 'is_cat' => $is_cat); + + if (!is_numeric($result)) { + while ($line = db_fetch_assoc($result)) { + $line["content_preview"] = truncate_string(strip_tags($line["content"]), $excerpt_length); + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) { + $line = $p->hook_query_headlines($line, $excerpt_length, true); + } + + $is_updated = ($line["last_read"] == "" && + ($line["unread"] != "t" && $line["unread"] != "1")); + + $tags = explode(",", $line["tag_cache"]); + + $label_cache = $line["label_cache"]; + $labels = false; + + if ($label_cache) { + $label_cache = json_decode($label_cache, true); + + if ($label_cache) { + if ($label_cache["no-labels"] == 1) + $labels = array(); + else + $labels = $label_cache; + } + } + + if (!is_array($labels)) $labels = get_article_labels($line["id"]); + + //if (!$tags) $tags = get_article_tags($line["id"]); + //if (!$labels) $labels = get_article_labels($line["id"]); + + $headline_row = array( + "id" => (int)$line["id"], + "unread" => sql_bool_to_bool($line["unread"]), + "marked" => sql_bool_to_bool($line["marked"]), + "published" => sql_bool_to_bool($line["published"]), + "updated" => (int)strtotime($line["updated"]), + "is_updated" => $is_updated, + "title" => $line["title"], + "link" => $line["link"], + "feed_id" => $line["feed_id"], + "tags" => $tags, + ); + + if ($include_attachments) + $headline_row['attachments'] = get_article_enclosures( + $line['id']); + + if ($show_excerpt) + $headline_row["excerpt"] = $line["content_preview"]; + + if ($show_content) { + + if ($sanitize_content) { + $headline_row["content"] = sanitize( + $line["content"], + sql_bool_to_bool($line['hide_images']), + false, $line["site_url"], false, $line["id"]); + } else { + $headline_row["content"] = $line["content"]; + } + } + + // unify label output to ease parsing + if ($labels["no-labels"] == 1) $labels = array(); + + $headline_row["labels"] = $labels; + + $headline_row["feed_title"] = $line["feed_title"] ? $line["feed_title"] : + $feed_title; + + $headline_row["comments_count"] = (int)$line["num_comments"]; + $headline_row["comments_link"] = $line["comments"]; + + $headline_row["always_display_attachments"] = sql_bool_to_bool($line["always_display_enclosures"]); + + $headline_row["author"] = $line["author"]; + + $headline_row["score"] = (int)$line["score"]; + $headline_row["note"] = $line["note"]; + $headline_row["lang"] = $line["lang"]; + + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_RENDER_ARTICLE_API) as $p) { + $headline_row = $p->hook_render_article_api(array("headline" => $headline_row)); + } + + array_push($headlines, $headline_row); + } + } else if (is_numeric($result) && $result == -1) { + $headlines_header['first_id_changed'] = true; + } + + return array($headlines, $headlines_header); + } + + function unsubscribeFeed() { + $feed_id = (int) $this->dbh->escape_string($_REQUEST["feed_id"]); + + $result = $this->dbh->query("SELECT id FROM ttrss_feeds WHERE + id = '$feed_id' AND owner_uid = ".$_SESSION["uid"]); + + if ($this->dbh->num_rows($result) != 0) { + Pref_Feeds::remove_feed($feed_id, $_SESSION["uid"]); + $this->wrap(self::STATUS_OK, array("status" => "OK")); + } else { + $this->wrap(self::STATUS_ERR, array("error" => "FEED_NOT_FOUND")); + } + } + + function subscribeToFeed() { + $feed_url = $this->dbh->escape_string($_REQUEST["feed_url"]); + $category_id = (int) $this->dbh->escape_string($_REQUEST["category_id"]); + $login = $this->dbh->escape_string($_REQUEST["login"]); + $password = $this->dbh->escape_string($_REQUEST["password"]); + + if ($feed_url) { + $rc = subscribe_to_feed($feed_url, $category_id, $login, $password); + + $this->wrap(self::STATUS_OK, array("status" => $rc)); + } else { + $this->wrap(self::STATUS_ERR, array("error" => 'INCORRECT_USAGE')); + } + } + + function getFeedTree() { + $include_empty = sql_bool_to_bool($_REQUEST['include_empty']); + + $pf = new Pref_Feeds($_REQUEST); + + $_REQUEST['mode'] = 2; + $_REQUEST['force_show_empty'] = $include_empty; + + if ($pf){ + $data = $pf->makefeedtree(); + $this->wrap(self::STATUS_OK, array("categories" => $data)); + } else { + $this->wrap(self::STATUS_ERR, array("error" => + 'UNABLE_TO_INSTANTIATE_OBJECT')); + } + + } + + // only works for labels or uncategorized for the time being + private function isCategoryEmpty($id) { + + if ($id == -2) { + $result = $this->dbh->query("SELECT COUNT(*) AS count FROM ttrss_labels2 + WHERE owner_uid = " . $_SESSION["uid"]); + + return $this->dbh->fetch_result($result, 0, "count") == 0; + + } else if ($id == 0) { + $result = $this->dbh->query("SELECT COUNT(*) AS count FROM ttrss_feeds + WHERE cat_id IS NULL AND owner_uid = " . $_SESSION["uid"]); + + return $this->dbh->fetch_result($result, 0, "count") == 0; + + } + + return false; + } + + +} + +?> diff --git a/classes/article.php b/classes/article.php new file mode 100644 index 0000000000..d43c04f241 --- /dev/null +++ b/classes/article.php @@ -0,0 +1,357 @@ +dbh->escape_string($_REQUEST['id']); + + $result = $this->dbh->query("SELECT link FROM ttrss_entries, ttrss_user_entries + WHERE id = '$id' AND id = ref_id AND owner_uid = '".$_SESSION['uid']."' + LIMIT 1"); + + if ($this->dbh->num_rows($result) == 1) { + $article_url = $this->dbh->fetch_result($result, 0, 'link'); + $article_url = str_replace("\n", "", $article_url); + + header("Location: $article_url"); + return; + + } else { + print_error(__("Article not found.")); + } + } + + function view() { + $id = $this->dbh->escape_string($_REQUEST["id"]); + $cids = explode(",", $this->dbh->escape_string($_REQUEST["cids"])); + $mode = $this->dbh->escape_string($_REQUEST["mode"]); + + // in prefetch mode we only output requested cids, main article + // just gets marked as read (it already exists in client cache) + + $articles = array(); + + if ($mode == "") { + array_push($articles, format_article($id, false)); + } else if ($mode == "zoom") { + array_push($articles, format_article($id, true, true)); + } else if ($mode == "raw") { + if ($_REQUEST['html']) { + header("Content-Type: text/html"); + print ''; + } + + $article = format_article($id, false); + print $article['content']; + return; + } + + $this->catchupArticleById($id, 0); + + if (!$_SESSION["bw_limit"]) { + foreach ($cids as $cid) { + if ($cid) { + array_push($articles, format_article($cid, false, false)); + } + } + } + + print json_encode($articles); + } + + private function catchupArticleById($id, $cmode) { + + if ($cmode == 0) { + $this->dbh->query("UPDATE ttrss_user_entries SET + unread = false,last_read = NOW() + WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); + } else if ($cmode == 1) { + $this->dbh->query("UPDATE ttrss_user_entries SET + unread = true + WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); + } else { + $this->dbh->query("UPDATE ttrss_user_entries SET + unread = NOT unread,last_read = NOW() + WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); + } + + $feed_id = getArticleFeed($id); + ccache_update($feed_id, $_SESSION["uid"]); + } + + static function create_published_article($title, $url, $content, $labels_str, + $owner_uid) { + + $guid = 'SHA1:' . sha1("ttshared:" . $url . $owner_uid); // include owner_uid to prevent global GUID clash + $content_hash = sha1($content); + + if ($labels_str != "") { + $labels = explode(",", $labels_str); + } else { + $labels = array(); + } + + $rc = false; + + if (!$title) $title = $url; + if (!$title && !$url) return false; + + if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) return false; + + db_query("BEGIN"); + + // only check for our user data here, others might have shared this with different content etc + $result = db_query("SELECT id FROM ttrss_entries, ttrss_user_entries WHERE + guid = '$guid' AND ref_id = id AND owner_uid = '$owner_uid' LIMIT 1"); + + if (db_num_rows($result) != 0) { + $ref_id = db_fetch_result($result, 0, "id"); + + $result = db_query("SELECT int_id FROM ttrss_user_entries WHERE + ref_id = '$ref_id' AND owner_uid = '$owner_uid' LIMIT 1"); + + if (db_num_rows($result) != 0) { + $int_id = db_fetch_result($result, 0, "int_id"); + + db_query("UPDATE ttrss_entries SET + content = '$content', content_hash = '$content_hash' WHERE id = '$ref_id'"); + + db_query("UPDATE ttrss_user_entries SET published = true, + last_published = NOW() WHERE + int_id = '$int_id' AND owner_uid = '$owner_uid'"); + } else { + + db_query("INSERT INTO ttrss_user_entries + (ref_id, uuid, feed_id, orig_feed_id, owner_uid, published, tag_cache, label_cache, + last_read, note, unread, last_published) + VALUES + ('$ref_id', '', NULL, NULL, $owner_uid, true, '', '', NOW(), '', false, NOW())"); + } + + if (count($labels) != 0) { + foreach ($labels as $label) { + label_add_article($ref_id, trim($label), $owner_uid); + } + } + + $rc = true; + + } else { + $result = db_query("INSERT INTO ttrss_entries + (title, guid, link, updated, content, content_hash, date_entered, date_updated) + VALUES + ('$title', '$guid', '$url', NOW(), '$content', '$content_hash', NOW(), NOW())"); + + $result = db_query("SELECT id FROM ttrss_entries WHERE guid = '$guid'"); + + if (db_num_rows($result) != 0) { + $ref_id = db_fetch_result($result, 0, "id"); + + db_query("INSERT INTO ttrss_user_entries + (ref_id, uuid, feed_id, orig_feed_id, owner_uid, published, tag_cache, label_cache, + last_read, note, unread, last_published) + VALUES + ('$ref_id', '', NULL, NULL, $owner_uid, true, '', '', NOW(), '', false, NOW())"); + + if (count($labels) != 0) { + foreach ($labels as $label) { + label_add_article($ref_id, trim($label), $owner_uid); + } + } + + $rc = true; + } + } + + db_query("COMMIT"); + + return $rc; + } + + function editArticleTags() { + + print __("Tags for this article (separated by commas):")."
"; + + $param = $this->dbh->escape_string($_REQUEST['param']); + + $tags = get_article_tags($this->dbh->escape_string($param)); + + $tags_str = join(", ", $tags); + + print ""; + print ""; + print ""; + + print "
"; + + print " +
"; + + print "
"; + + print "
"; + + print " "; + print ""; + print "
"; + + } + + function setScore() { + $ids = $this->dbh->escape_string($_REQUEST['id']); + $score = (int)$this->dbh->escape_string($_REQUEST['score']); + + $this->dbh->query("UPDATE ttrss_user_entries SET + score = '$score' WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]); + + print json_encode(array("id" => $ids, + "score" => (int)$score, + "score_pic" => get_score_pic($score))); + } + + function getScore() { + $id = $this->dbh->escape_string($_REQUEST['id']); + + $result = $this->dbh->query("SELECT score FROM ttrss_user_entries WHERE ref_id = $id AND owner_uid = " . $_SESSION["uid"]); + $score = $this->dbh->fetch_result($result, 0, "score"); + + print json_encode(array("id" => $id, + "score" => (int)$score, + "score_pic" => get_score_pic($score))); + } + + + function setArticleTags() { + + $id = $this->dbh->escape_string($_REQUEST["id"]); + + $tags_str = $this->dbh->escape_string($_REQUEST["tags_str"]); + $tags = array_unique(trim_array(explode(",", $tags_str))); + + $this->dbh->query("BEGIN"); + + $result = $this->dbh->query("SELECT int_id FROM ttrss_user_entries WHERE + ref_id = '$id' AND owner_uid = '".$_SESSION["uid"]."' LIMIT 1"); + + if ($this->dbh->num_rows($result) == 1) { + + $tags_to_cache = array(); + + $int_id = $this->dbh->fetch_result($result, 0, "int_id"); + + $this->dbh->query("DELETE FROM ttrss_tags WHERE + post_int_id = $int_id AND owner_uid = '".$_SESSION["uid"]."'"); + + foreach ($tags as $tag) { + $tag = sanitize_tag($tag); + + if (!tag_is_valid($tag)) { + continue; + } + + if (preg_match("/^[0-9]*$/", $tag)) { + continue; + } + + // print ""; + + if ($tag != '') { + $this->dbh->query("INSERT INTO ttrss_tags + (post_int_id, owner_uid, tag_name) VALUES ('$int_id', '".$_SESSION["uid"]."', '$tag')"); + } + + array_push($tags_to_cache, $tag); + } + + /* update tag cache */ + + sort($tags_to_cache); + $tags_str = join(",", $tags_to_cache); + + $this->dbh->query("UPDATE ttrss_user_entries + SET tag_cache = '$tags_str' WHERE ref_id = '$id' + AND owner_uid = " . $_SESSION["uid"]); + } + + $this->dbh->query("COMMIT"); + + $tags = get_article_tags($id); + $tags_str = format_tags_string($tags, $id); + $tags_str_full = join(", ", $tags); + + if (!$tags_str_full) $tags_str_full = __("no tags"); + + print json_encode(array("id" => (int)$id, + "content" => $tags_str, "content_full" => $tags_str_full)); + } + + + function completeTags() { + $search = $this->dbh->escape_string($_REQUEST["search"]); + + $result = $this->dbh->query("SELECT DISTINCT tag_name FROM ttrss_tags + WHERE owner_uid = '".$_SESSION["uid"]."' AND + tag_name LIKE '$search%' ORDER BY tag_name + LIMIT 10"); + + print "
    "; + while ($line = $this->dbh->fetch_assoc($result)) { + print "
  • " . $line["tag_name"] . "
  • "; + } + print "
"; + } + + function assigntolabel() { + return $this->labelops(true); + } + + function removefromlabel() { + return $this->labelops(false); + } + + private function labelops($assign) { + $reply = array(); + + $ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"])); + $label_id = $this->dbh->escape_string($_REQUEST["lid"]); + + $label = $this->dbh->escape_string(label_find_caption($label_id, + $_SESSION["uid"])); + + $reply["info-for-headlines"] = array(); + + if ($label) { + + foreach ($ids as $id) { + + if ($assign) + label_add_article($id, $label, $_SESSION["uid"]); + else + label_remove_article($id, $label, $_SESSION["uid"]); + + $labels = get_article_labels($id, $_SESSION["uid"]); + + array_push($reply["info-for-headlines"], + array("id" => $id, "labels" => format_article_labels($labels, $id))); + + } + } + + $reply["message"] = "UPDATE_COUNTERS"; + + print json_encode($reply); + } + + + +} diff --git a/classes/auth/base.php b/classes/auth/base.php new file mode 100644 index 0000000000..69acd0985c --- /dev/null +++ b/classes/auth/base.php @@ -0,0 +1,61 @@ +dbh = Db::get(); + } + + function check_password($owner_uid, $password) { + return false; + } + + function authenticate($login, $password) { + return false; + } + + // Auto-creates specified user if allowed by system configuration + // Can be used instead of find_user_by_login() by external auth modules + function auto_create_user($login, $password = false) { + if ($login && defined('AUTH_AUTO_CREATE') && AUTH_AUTO_CREATE) { + $user_id = $this->find_user_by_login($login); + + if (!$password) $password = make_password(); + + if (!$user_id) { + $login = $this->dbh->escape_string($login); + $salt = substr(bin2hex(get_random_bytes(125)), 0, 250); + $pwd_hash = encrypt_password($password, $salt, true); + + $query = "INSERT INTO ttrss_users + (login,access_level,last_login,created,pwd_hash,salt) + VALUES ('$login', 0, null, NOW(), '$pwd_hash','$salt')"; + + $this->dbh->query($query); + + return $this->find_user_by_login($login); + + } else { + return $user_id; + } + } + + return $this->find_user_by_login($login); + } + + function find_user_by_login($login) { + $login = $this->dbh->escape_string($login); + + $result = $this->dbh->query("SELECT id FROM ttrss_users WHERE + login = '$login'"); + + if ($this->dbh->num_rows($result) > 0) { + return $this->dbh->fetch_result($result, 0, "id"); + } else { + return false; + } + + } +} + +?> diff --git a/classes/backend.php b/classes/backend.php new file mode 100644 index 0000000000..7737df0f69 --- /dev/null +++ b/classes/backend.php @@ -0,0 +1,119 @@ +"; + } + + function digestTest() { + header("Content-type: text/html"); + + require_once "digest.php"; + + $rv = prepare_headlines_digest($_SESSION['uid'], 1, 1000); + + $rv[3] = "
" . $rv[3] . "
"; + + print_r($rv); + } + + private function display_main_help() { + $info = get_hotkeys_info(); + $imap = get_hotkeys_map(); + $omap = array(); + + foreach ($imap[1] as $sequence => $action) { + if (!isset($omap[$action])) $omap[$action] = array(); + + array_push($omap[$action], $sequence); + } + + print_notice("". + __("Other interface tips are available in the Tiny Tiny RSS wiki.") . + ""); + + print "
    "; + + print "

    " . __("Keyboard Shortcuts") . "

    "; + + foreach ($info as $section => $hotkeys) { + + print "
  • " . $section . "

  • "; + + foreach ($hotkeys as $action => $description) { + + if (is_array($omap[$action])) { + foreach ($omap[$action] as $sequence) { + if (strpos($sequence, "|") !== FALSE) { + $sequence = substr($sequence, + strpos($sequence, "|")+1, + strlen($sequence)); + } else { + $keys = explode(" ", $sequence); + + for ($i = 0; $i < count($keys); $i++) { + if (strlen($keys[$i]) > 1) { + $tmp = ''; + foreach (str_split($keys[$i]) as $c) { + switch ($c) { + case '*': + $tmp .= __('Shift') . '+'; + break; + case '^': + $tmp .= __('Ctrl') . '+'; + break; + default: + $tmp .= $c; + } + } + $keys[$i] = $tmp; + } + } + $sequence = join(" ", $keys); + } + + print "
  • "; + print "$sequence"; + print $description; + print "
  • "; + } + } + } + } + + print "
"; + } + + function help() { + $topic = basename($_REQUEST["topic"]); + + switch ($topic) { + case "main": + $this->display_main_help(); + break; + case "prefs": + //$this->display_prefs_help(); + break; + default: + print "

".__("Help topic not found.")."

"; + } + + print "
"; + print ""; + print "
"; + + /* if (file_exists("help/$topic.php")) { + include("help/$topic.php"); + } else { + print "

".__("Help topic not found.")."

"; + } */ + /* print "
+
"; */ + + } +} +?> diff --git a/classes/db.php b/classes/db.php new file mode 100644 index 0000000000..695ca6ea2e --- /dev/null +++ b/classes/db.php @@ -0,0 +1,98 @@ +adapter = new Db_PDO(); + } else { + switch (DB_TYPE) { + case "mysql": + if (function_exists("mysqli_connect")) { + $this->adapter = new Db_Mysqli(); + } else { + $this->adapter = new Db_Mysql(); + } + break; + case "pgsql": + $this->adapter = new Db_Pgsql(); + break; + default: + die("Unknown DB_TYPE: " . DB_TYPE); + } + } + + if (!$this->adapter) die("Error initializing database adapter for " . DB_TYPE); + + $this->link = $this->adapter->connect(DB_HOST, DB_USER, DB_PASS, DB_NAME, defined('DB_PORT') ? DB_PORT : ""); + + if (!$this->link) { + die("Error connecting through adapter: " . $this->adapter->last_error()); + } + + error_reporting($er); + } + + private function __clone() { + // + } + + public static function get() { + if (self::$instance == null) + self::$instance = new self(); + + return self::$instance; + } + + static function quote($str){ + return("'$str'"); + } + + function reconnect() { + $this->link = $this->adapter->connect(DB_HOST, DB_USER, DB_PASS, DB_NAME, defined('DB_PORT') ? DB_PORT : ""); + } + + function connect($host, $user, $pass, $db, $port) { + //return $this->adapter->connect($host, $user, $pass, $db, $port); + return ; + } + + function escape_string($s, $strip_tags = true) { + return $this->adapter->escape_string($s, $strip_tags); + } + + function query($query, $die_on_error = true) { + return $this->adapter->query($query, $die_on_error); + } + + function fetch_assoc($result) { + return $this->adapter->fetch_assoc($result); + } + + function num_rows($result) { + return $this->adapter->num_rows($result); + } + + function fetch_result($result, $row, $param) { + return $this->adapter->fetch_result($result, $row, $param); + } + + function close() { + return $this->adapter->close(); + } + + function affected_rows($result) { + return $this->adapter->affected_rows($result); + } + + function last_error() { + return $this->adapter->last_error(); + } + +} +?> diff --git a/classes/db/mysql.php b/classes/db/mysql.php new file mode 100644 index 0000000000..d4b45b98c6 --- /dev/null +++ b/classes/db/mysql.php @@ -0,0 +1,76 @@ +link = mysql_connect($host, $user, $pass); + + if ($this->link) { + $result = mysql_select_db($db, $this->link); + if (!$result) { + die("Can't select DB: " . mysql_error($this->link)); + } + + $this->init(); + + return $this->link; + } else { + die("Unable to connect to database (as $user to $host, database $db): " . mysql_error()); + } + } + + function escape_string($s, $strip_tags = true) { + if ($strip_tags) $s = strip_tags($s); + + return mysql_real_escape_string($s, $this->link); + } + + function query($query, $die_on_error = true) { + $result = @mysql_query($query, $this->link); + if (!$result) { + $error = @mysql_error($this->link); + + @mysql_query("ROLLBACK", $this->link); + user_error("Query $query failed: " . ($this->link ? $error : "No connection"), + $die_on_error ? E_USER_ERROR : E_USER_WARNING); + } + return $result; + } + + function fetch_assoc($result) { + return mysql_fetch_assoc($result); + } + + + function num_rows($result) { + return mysql_num_rows($result); + } + + function fetch_result($result, $row, $param) { + return mysql_result($result, $row, $param); + } + + function close() { + return mysql_close($this->link); + } + + function affected_rows($result) { + return mysql_affected_rows($this->link); + } + + function last_error() { + return mysql_error(); + } + + function init() { + $this->query("SET time_zone = '+0:0'"); + + if (defined('MYSQL_CHARSET') && MYSQL_CHARSET) { + $this->query("SET NAMES " . MYSQL_CHARSET); + } + + return true; + } + +} +?> diff --git a/classes/db/mysqli.php b/classes/db/mysqli.php new file mode 100644 index 0000000000..c685b75a02 --- /dev/null +++ b/classes/db/mysqli.php @@ -0,0 +1,80 @@ +link = mysqli_connect($host, $user, $pass, $db, $port); + else + $this->link = mysqli_connect($host, $user, $pass, $db); + + if ($this->link) { + $this->init(); + + return $this->link; + } else { + die("Unable to connect to database (as $user to $host, database $db): " . mysqli_connect_error()); + } + } + + function escape_string($s, $strip_tags = true) { + if ($strip_tags) $s = strip_tags($s); + + return mysqli_real_escape_string($this->link, $s); + } + + function query($query, $die_on_error = true) { + $result = @mysqli_query($this->link, $query); + if (!$result) { + $error = @mysqli_error($this->link); + + @mysqli_query($this->link, "ROLLBACK"); + user_error("Query $query failed: " . ($this->link ? $error : "No connection"), + $die_on_error ? E_USER_ERROR : E_USER_WARNING); + } + + return $result; + } + + function fetch_assoc($result) { + return mysqli_fetch_assoc($result); + } + + + function num_rows($result) { + return mysqli_num_rows($result); + } + + function fetch_result($result, $row, $param) { + if (mysqli_data_seek($result, $row)) { + $line = mysqli_fetch_assoc($result); + return $line[$param]; + } else { + return false; + } + } + + function close() { + return mysqli_close($this->link); + } + + function affected_rows($result) { + return mysqli_affected_rows($this->link); + } + + function last_error() { + return mysqli_error(); + } + + function init() { + $this->query("SET time_zone = '+0:0'"); + + if (defined('MYSQL_CHARSET') && MYSQL_CHARSET) { + $this->query("SET NAMES " . MYSQL_CHARSET); + } + + return true; + } + +} +?> diff --git a/classes/db/pdo.php b/classes/db/pdo.php new file mode 100644 index 0000000000..3aeebbe678 --- /dev/null +++ b/classes/db/pdo.php @@ -0,0 +1,101 @@ +pdo = new PDO($connstr, $user, $pass); + $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $this->init(); + } catch (PDOException $e) { + die($e->getMessage()); + } + + return $this->pdo; + } + + function escape_string($s, $strip_tags = true) { + if ($strip_tags) $s = strip_tags($s); + + $qs = $this->pdo->quote($s); + + return mb_substr($qs, 1, mb_strlen($qs)-2); + } + + function query($query, $die_on_error = true) { + try { + return new Db_Stmt($this->pdo->query($query)); + } catch (PDOException $e) { + user_error($e->getMessage(), $die_on_error ? E_USER_ERROR : E_USER_WARNING); + } + } + + function fetch_assoc($result) { + try { + if ($result) { + return $result->fetch(); + } else { + return null; + } + } catch (PDOException $e) { + user_error($e->getMessage(), E_USER_WARNING); + } + } + + function num_rows($result) { + try { + if ($result) { + return $result->rowCount(); + } else { + return false; + } + } catch (PDOException $e) { + user_error($e->getMessage(), E_USER_WARNING); + } + } + + function fetch_result($result, $row, $param) { + return $result->fetch_result($row, $param); + } + + function close() { + $this->pdo = null; + } + + function affected_rows($result) { + try { + if ($result) { + return $result->rowCount(); + } else { + return null; + } + } catch (PDOException $e) { + user_error($e->getMessage(), E_USER_WARNING); + } + } + + function last_error() { + return join(" ", $this->pdo->errorInfo()); + } + + function init() { + switch (DB_TYPE) { + case "pgsql": + $this->query("set client_encoding = 'UTF-8'"); + $this->query("set datestyle = 'ISO, european'"); + $this->query("set TIME ZONE 0"); + return; + case "mysql": + $this->query("SET time_zone = '+0:0'"); + return; + } + + return true; + } + +} +?> diff --git a/classes/db/pgsql.php b/classes/db/pgsql.php new file mode 100644 index 0000000000..ba37f83a6c --- /dev/null +++ b/classes/db/pgsql.php @@ -0,0 +1,85 @@ + 0) { + $string = "$string port=" . $port; + } + + $this->link = pg_connect($string); + + if (!$this->link) { + die("Unable to connect to database (as $user to $host, database $db):" . pg_last_error()); + } + + $this->init(); + + return $this->link; + } + + function escape_string($s, $strip_tags = true) { + if ($strip_tags) $s = strip_tags($s); + + return pg_escape_string($s); + } + + function query($query, $die_on_error = true) { + $result = @pg_query($this->link, $query); + + if (!$result) { + $error = @pg_last_error($this->link); + + @pg_query($this->link, "ROLLBACK"); + $query = htmlspecialchars($query); // just in case + user_error("Query $query failed: " . ($this->link ? $error : "No connection"), + $die_on_error ? E_USER_ERROR : E_USER_WARNING); + } + return $result; + } + + function fetch_assoc($result) { + return pg_fetch_assoc($result); + } + + + function num_rows($result) { + return pg_num_rows($result); + } + + function fetch_result($result, $row, $param) { + return pg_fetch_result($result, $row, $param); + } + + function close() { + return pg_close($this->link); + } + + function affected_rows($result) { + return pg_affected_rows($result); + } + + function last_error() { + return pg_last_error($this->link); + } + + function init() { + $this->query("set client_encoding = 'UTF-8'"); + pg_set_client_encoding("UNICODE"); + $this->query("set datestyle = 'ISO, european'"); + $this->query("set TIME ZONE 0"); + + return true; + } +} +?> diff --git a/classes/db/prefs.php b/classes/db/prefs.php new file mode 100644 index 0000000000..3e92bb89b5 --- /dev/null +++ b/classes/db/prefs.php @@ -0,0 +1,190 @@ +dbh = Db::get(); + $this->cache = array(); + + if ($_SESSION["uid"]) $this->cache(); + } + + private function __clone() { + // + } + + public static function get() { + if (self::$instance == null) + self::$instance = new self(); + + return self::$instance; + } + + function cache() { + $profile = false; + + $user_id = $_SESSION["uid"]; + @$profile = $_SESSION["profile"]; + + if ($profile) { + $profile_qpart = "profile = '$profile' AND"; + } else { + $profile_qpart = "profile IS NULL AND"; + } + + if (get_schema_version() < 63) $profile_qpart = ""; + + $result = db_query("SELECT + value,ttrss_prefs_types.type_name as type_name,ttrss_prefs.pref_name AS pref_name + FROM + ttrss_user_prefs,ttrss_prefs,ttrss_prefs_types + WHERE + $profile_qpart + ttrss_prefs.pref_name NOT LIKE '_MOBILE%' AND + ttrss_prefs_types.id = type_id AND + owner_uid = '$user_id' AND + ttrss_user_prefs.pref_name = ttrss_prefs.pref_name"); + + while ($line = db_fetch_assoc($result)) { + if ($user_id == $_SESSION["uid"]) { + $pref_name = $line["pref_name"]; + + $this->cache[$pref_name]["type"] = $line["type_name"]; + $this->cache[$pref_name]["value"] = $line["value"]; + } + } + } + + function read($pref_name, $user_id = false, $die_on_error = false) { + + $pref_name = db_escape_string($pref_name); + $profile = false; + + if (!$user_id) { + $user_id = $_SESSION["uid"]; + @$profile = $_SESSION["profile"]; + } else { + $user_id = sprintf("%d", $user_id); + } + + if (isset($this->cache[$pref_name])) { + $tuple = $this->cache[$pref_name]; + return $this->convert($tuple["value"], $tuple["type"]); + } + + if ($profile) { + $profile_qpart = "profile = '$profile' AND"; + } else { + $profile_qpart = "profile IS NULL AND"; + } + + if (get_schema_version() < 63) $profile_qpart = ""; + + $result = db_query("SELECT + value,ttrss_prefs_types.type_name as type_name + FROM + ttrss_user_prefs,ttrss_prefs,ttrss_prefs_types + WHERE + $profile_qpart + ttrss_user_prefs.pref_name = '$pref_name' AND + ttrss_prefs_types.id = type_id AND + owner_uid = '$user_id' AND + ttrss_user_prefs.pref_name = ttrss_prefs.pref_name"); + + if (db_num_rows($result) > 0) { + $value = db_fetch_result($result, 0, "value"); + $type_name = db_fetch_result($result, 0, "type_name"); + + if ($user_id == $_SESSION["uid"]) { + $this->cache[$pref_name]["type"] = $type_name; + $this->cache[$pref_name]["value"] = $value; + } + + return $this->convert($value, $type_name); + + } else { + user_error("Fatal error, unknown preferences key: $pref_name (owner: $user_id)", $die_on_error ? E_USER_ERROR : E_USER_WARNING); + return null; + } + } + + function convert($value, $type_name) { + if ($type_name == "bool") { + return $value == "true"; + } else if ($type_name == "integer") { + return (int)$value; + } else { + return $value; + } + } + + function write($pref_name, $value, $user_id = false, $strip_tags = true) { + $pref_name = db_escape_string($pref_name); + $value = db_escape_string($value, $strip_tags); + + if (!$user_id) { + $user_id = $_SESSION["uid"]; + @$profile = $_SESSION["profile"]; + } else { + $user_id = sprintf("%d", $user_id); + $prefs_cache = false; + } + + if ($profile) { + $profile_qpart = "AND profile = '$profile'"; + } else { + $profile_qpart = "AND profile IS NULL"; + } + + if (get_schema_version() < 63) $profile_qpart = ""; + + $type_name = ""; + $current_value = ""; + + if (isset($this->cache[$pref_name])) { + $type_name = $this->cache[$pref_name]["type"]; + $current_value = $this->cache[$pref_name]["value"]; + } + + if (!$type_name) { + $result = db_query("SELECT type_name + FROM ttrss_prefs,ttrss_prefs_types + WHERE pref_name = '$pref_name' AND type_id = ttrss_prefs_types.id"); + + if (db_num_rows($result) > 0) + $type_name = db_fetch_result($result, 0, "type_name"); + } else if ($current_value == $value) { + return; + } + + if ($type_name) { + if ($type_name == "bool") { + if ($value == "1" || $value == "true") { + $value = "true"; + } else { + $value = "false"; + } + } else if ($type_name == "integer") { + $value = sprintf("%d", $value); + } + + if ($pref_name == 'USER_TIMEZONE' && $value == '') { + $value = 'UTC'; + } + + db_query("UPDATE ttrss_user_prefs SET + value = '$value' WHERE pref_name = '$pref_name' + $profile_qpart + AND owner_uid = " . $_SESSION["uid"]); + + if ($user_id == $_SESSION["uid"]) { + $this->cache[$pref_name]["type"] = $type_name; + $this->cache[$pref_name]["value"] = $value; + } + } + } + +} +?> diff --git a/classes/db/stmt.php b/classes/db/stmt.php new file mode 100644 index 0000000000..4d3596ef1f --- /dev/null +++ b/classes/db/stmt.php @@ -0,0 +1,32 @@ +stmt = $stmt; + $this->cache = false; + } + + function fetch_result($row, $param) { + if (!$this->cache) { + $this->cache = $this->stmt->fetchAll(); + } + + if (isset($this->cache[$row])) { + return $this->cache[$row][$param]; + } else { + user_error("Unable to jump to row $row", E_USER_WARNING); + return false; + } + } + + function rowCount() { + return $this->stmt->rowCount(); + } + + function fetch() { + return $this->stmt->fetch(); + } +} +?> diff --git a/classes/dbupdater.php b/classes/dbupdater.php new file mode 100644 index 0000000000..a319da03d2 --- /dev/null +++ b/classes/dbupdater.php @@ -0,0 +1,65 @@ +dbh = $dbh; + $this->db_type = $db_type; + $this->need_version = (int) $need_version; + } + + function getSchemaVersion() { + $result = db_query("SELECT schema_version FROM ttrss_version"); + return (int) db_fetch_result($result, 0, "schema_version"); + } + + function isUpdateRequired() { + return $this->getSchemaVersion() < $this->need_version; + } + + function getSchemaLines($version) { + $filename = "schema/versions/".$this->db_type."/$version.sql"; + + if (file_exists($filename)) { + return explode(";", preg_replace("/[\r\n]/", "", file_get_contents($filename))); + } else { + return false; + } + } + + function performUpdateTo($version) { + if ($this->getSchemaVersion() == $version - 1) { + + $lines = $this->getSchemaLines($version); + + if (is_array($lines)) { + + db_query("BEGIN"); + + foreach ($lines as $line) { + if (strpos($line, "--") !== 0 && $line) { + db_query($line); + } + } + + $db_version = $this->getSchemaVersion(); + + if ($db_version == $version) { + db_query("COMMIT"); + return true; + } else { + db_query("ROLLBACK"); + return false; + } + } else { + return true; + } + } else { + return false; + } + } + +} ?> diff --git a/classes/dlg.php b/classes/dlg.php new file mode 100644 index 0000000000..7b1abca3a4 --- /dev/null +++ b/classes/dlg.php @@ -0,0 +1,194 @@ +param = $this->dbh->escape_string($_REQUEST["param"]); + return true; + } + return false; + } + + function importOpml() { + print __("If you have imported labels and/or filters, you might need to reload preferences to see your new data.") . "

"; + + print "
"; + + $this->dbh->query("BEGIN"); + + print "
    "; + + $opml = new Opml($_REQUEST); + + $opml->opml_import($_SESSION["uid"]); + + $this->dbh->query("COMMIT"); + + print "
"; + print "
"; + + print "
"; + print ""; + print "
"; + + print ""; + + //return; + } + + function pubOPMLUrl() { + $url_path = Opml::opml_publish_url(); + + print __("Your Public OPML URL is:"); + + print "
"; + print "$url_path"; + print "
"; + + print "
"; + + print " "; + + print ""; + + print "
"; + + //return; + } + + function explainError() { + print "
"; + + if ($this->param == 1) { + print __("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."); + + $stamp = (int) file_get_contents(LOCK_DIRECTORY . "/update_daemon.stamp"); + + print "

" . __("Last update:") . " " . date("Y.m.d, G:i", $stamp); + + } + + if ($this->param == 3) { + print __("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."); + + $stamp = (int) file_get_contents(LOCK_DIRECTORY . "/update_daemon.stamp"); + + print "

" . __("Last update:") . " " . date("Y.m.d, G:i", $stamp); + + } + + print "

"; + + print "
"; + + print ""; + + print "
"; + + //return; + } + + function printTagCloud() { + print "
"; + + // from here: http://www.roscripts.com/Create_tag_cloud-71.html + + $query = "SELECT tag_name, COUNT(post_int_id) AS count + FROM ttrss_tags WHERE owner_uid = ".$_SESSION["uid"]." + GROUP BY tag_name ORDER BY count DESC LIMIT 50"; + + $result = $this->dbh->query($query); + + $tags = array(); + + while ($line = $this->dbh->fetch_assoc($result)) { + $tags[$line["tag_name"]] = $line["count"]; + } + + if(count($tags) == 0 ){ return; } + + ksort($tags); + + $max_size = 32; // max font size in pixels + $min_size = 11; // min font size in pixels + + // largest and smallest array values + $max_qty = max(array_values($tags)); + $min_qty = min(array_values($tags)); + + // find the range of values + $spread = $max_qty - $min_qty; + if ($spread == 0) { // we don't want to divide by zero + $spread = 1; + } + + // set the font-size increment + $step = ($max_size - $min_size) / ($spread); + + // loop through the tag array + foreach ($tags as $key => $value) { + // calculate font-size + // find the $value in excess of $min_qty + // multiply by the font-size increment ($size) + // and add the $min_size set above + $size = round($min_size + (($value - $min_qty) * $step)); + + $key_escaped = str_replace("'", "\\'", $key); + + echo "' . $key . ' '; + } + + + + print "
"; + + print "
"; + print ""; + print "
"; + + } + + function generatedFeed() { + + $this->params = explode(":", $this->param, 3); + $feed_id = $this->dbh->escape_string($this->params[0]); + $is_cat = (bool) $this->params[1]; + + $key = get_feed_access_key($feed_id, $is_cat); + + $url_path = htmlspecialchars($this->params[2]) . "&key=" . $key; + + print "

".__("You can view this feed as RSS using the following URL:")."

"; + + print "
"; + print "$url_path"; + print "
"; + + print "
"; + + print " "; + + print ""; + + print "
"; + + //return; + } + +} +?> diff --git a/classes/feedenclosure.php b/classes/feedenclosure.php new file mode 100644 index 0000000000..64f1a0616a --- /dev/null +++ b/classes/feedenclosure.php @@ -0,0 +1,10 @@ + diff --git a/classes/feeditem.php b/classes/feeditem.php new file mode 100644 index 0000000000..e64a13fdc9 --- /dev/null +++ b/classes/feeditem.php @@ -0,0 +1,15 @@ + diff --git a/classes/feeditem/atom.php b/classes/feeditem/atom.php new file mode 100644 index 0000000000..dfac7149f6 --- /dev/null +++ b/classes/feeditem/atom.php @@ -0,0 +1,201 @@ +elem->getElementsByTagName("id")->item(0); + + if ($id) { + return $id->nodeValue; + } else { + return $this->get_link(); + } + } + + function get_date() { + $updated = $this->elem->getElementsByTagName("updated")->item(0); + + if ($updated) { + return strtotime($updated->nodeValue); + } + + $published = $this->elem->getElementsByTagName("published")->item(0); + + if ($published) { + return strtotime($published->nodeValue); + } + + $date = $this->xpath->query("dc:date", $this->elem)->item(0); + + if ($date) { + return strtotime($date->nodeValue); + } + } + + + function get_link() { + $links = $this->elem->getElementsByTagName("link"); + + foreach ($links as $link) { + if ($link && $link->hasAttribute("href") && + (!$link->hasAttribute("rel") + || $link->getAttribute("rel") == "alternate" + || $link->getAttribute("rel") == "standout")) { + $base = $this->xpath->evaluate("string(ancestor-or-self::*[@xml:base][1]/@xml:base)", $link); + + if ($base) + return rewrite_relative_url($base, trim($link->getAttribute("href"))); + else + return trim($link->getAttribute("href")); + + } + } + } + + function get_title() { + $title = $this->elem->getElementsByTagName("title")->item(0); + + if ($title) { + return trim($title->nodeValue); + } + } + + function get_content() { + $content = $this->elem->getElementsByTagName("content")->item(0); + + if ($content) { + if ($content->hasAttribute('type')) { + if ($content->getAttribute('type') == 'xhtml') { + for ($i = 0; $i < $content->childNodes->length; $i++) { + $child = $content->childNodes->item($i); + + if ($child->hasChildNodes()) { + return $this->doc->saveXML($child); + } + } + } + } + + return $content->nodeValue; + } + } + + function get_description() { + $content = $this->elem->getElementsByTagName("summary")->item(0); + + if ($content) { + if ($content->hasAttribute('type')) { + if ($content->getAttribute('type') == 'xhtml') { + for ($i = 0; $i < $content->childNodes->length; $i++) { + $child = $content->childNodes->item($i); + + if ($child->hasChildNodes()) { + return $this->doc->saveXML($child); + } + } + } + } + + return $content->nodeValue; + } + + } + + function get_categories() { + $categories = $this->elem->getElementsByTagName("category"); + $cats = array(); + + foreach ($categories as $cat) { + if ($cat->hasAttribute("term")) + array_push($cats, trim($cat->getAttribute("term"))); + } + + $categories = $this->xpath->query("dc:subject", $this->elem); + + foreach ($categories as $cat) { + array_push($cats, trim($cat->nodeValue)); + } + + return $cats; + } + + function get_enclosures() { + $links = $this->elem->getElementsByTagName("link"); + + $encs = array(); + + foreach ($links as $link) { + if ($link && $link->hasAttribute("href") && $link->hasAttribute("rel")) { + if ($link->getAttribute("rel") == "enclosure") { + $enc = new FeedEnclosure(); + + $enc->type = $link->getAttribute("type"); + $enc->link = $link->getAttribute("href"); + $enc->length = $link->getAttribute("length"); + + array_push($encs, $enc); + } + } + } + + $enclosures = $this->xpath->query("media:content", $this->elem); + + foreach ($enclosures as $enclosure) { + $enc = new FeedEnclosure(); + + $enc->type = $enclosure->getAttribute("type"); + $enc->link = $enclosure->getAttribute("url"); + $enc->length = $enclosure->getAttribute("length"); + $enc->height = $enclosure->getAttribute("height"); + $enc->width = $enclosure->getAttribute("width"); + + $desc = $this->xpath->query("media:description", $enclosure)->item(0); + if ($desc) $enc->title = strip_tags($desc->nodeValue); + + array_push($encs, $enc); + } + + + $enclosures = $this->xpath->query("media:group", $this->elem); + + foreach ($enclosures as $enclosure) { + $enc = new FeedEnclosure(); + + $content = $this->xpath->query("media:content", $enclosure)->item(0); + + if ($content) { + $enc->type = $content->getAttribute("type"); + $enc->link = $content->getAttribute("url"); + $enc->length = $content->getAttribute("length"); + $enc->height = $content->getAttribute("height"); + $enc->width = $content->getAttribute("width"); + + $desc = $this->xpath->query("media:description", $content)->item(0); + if ($desc) { + $enc->title = strip_tags($desc->nodeValue); + } else { + $desc = $this->xpath->query("media:description", $enclosure)->item(0); + if ($desc) $enc->title = strip_tags($desc->nodeValue); + } + + array_push($encs, $enc); + } + } + + $enclosures = $this->xpath->query("media:thumbnail", $this->elem); + + foreach ($enclosures as $enclosure) { + $enc = new FeedEnclosure(); + + $enc->type = "image/generic"; + $enc->link = $enclosure->getAttribute("url"); + $enc->height = $enclosure->getAttribute("height"); + $enc->width = $enclosure->getAttribute("width"); + + array_push($encs, $enc); + } + + return $encs; + } + +} +?> diff --git a/classes/feeditem/common.php b/classes/feeditem/common.php new file mode 100644 index 0000000000..80bebf8fb9 --- /dev/null +++ b/classes/feeditem/common.php @@ -0,0 +1,75 @@ +elem = $elem; + $this->xpath = $xpath; + $this->doc = $doc; + + try { + + $source = $elem->getElementsByTagName("source")->item(0); + + // we don't need element + if ($source) + $elem->removeChild($source); + } catch (DOMException $e) { + // + } + } + + function get_author() { + $author = $this->elem->getElementsByTagName("author")->item(0); + + if ($author) { + $name = $author->getElementsByTagName("name")->item(0); + + if ($name) return $name->nodeValue; + + $email = $author->getElementsByTagName("email")->item(0); + + if ($email) return $email->nodeValue; + + if ($author->nodeValue) + return $author->nodeValue; + } + + $author = $this->xpath->query("dc:creator", $this->elem)->item(0); + + if ($author) { + return $author->nodeValue; + } + } + + function get_comments_url() { + //RSS only. Use a query here to avoid namespace clashes (e.g. with slash). + //might give a wrong result if a default namespace was declared (possible with XPath 2.0) + $com_url = $this->xpath->query("comments", $this->elem)->item(0); + + if($com_url) + return $com_url->nodeValue; + + //Atom Threading Extension (RFC 4685) stuff. Could be used in RSS feeds, so it's in common. + //'text/html' for type is too restrictive? + $com_url = $this->xpath->query("atom:link[@rel='replies' and contains(@type,'text/html')]/@href", $this->elem)->item(0); + + if($com_url) + return $com_url->nodeValue; + } + + function get_comments_count() { + //also query for ATE stuff here + $query = "slash:comments|thread:total|atom:link[@rel='replies']/@thread:count"; + $comments = $this->xpath->query($query, $this->elem)->item(0); + + if ($comments) { + return $comments->nodeValue; + } + } + + +} +?> diff --git a/classes/feeditem/rss.php b/classes/feeditem/rss.php new file mode 100644 index 0000000000..27a364b812 --- /dev/null +++ b/classes/feeditem/rss.php @@ -0,0 +1,191 @@ +elem->getElementsByTagName("guid")->item(0); + + if ($id) { + return $id->nodeValue; + } else { + return $this->get_link(); + } + } + + function get_date() { + $pubDate = $this->elem->getElementsByTagName("pubDate")->item(0); + + if ($pubDate) { + return strtotime($pubDate->nodeValue); + } + + $date = $this->xpath->query("dc:date", $this->elem)->item(0); + + if ($date) { + return strtotime($date->nodeValue); + } + } + + 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 trim($link->getAttribute("href")); + } + } + + $link = $this->elem->getElementsByTagName("guid")->item(0); + + if ($link && $link->hasAttributes() && $link->getAttribute("isPermaLink") == "true") { + return trim($link->nodeValue); + } + + $link = $this->elem->getElementsByTagName("link")->item(0); + + if ($link) { + return trim($link->nodeValue); + } + } + + function get_title() { + $title = $this->xpath->query("title", $this->elem)->item(0); + + if ($title) { + return trim($title->nodeValue); + } + + // if the document has a default namespace then querying for + // title would fail because of reasons so let's try the old way + $title = $this->elem->getElementsByTagName("title")->item(0); + + if ($title) { + return trim($title->nodeValue); + } + } + + function get_content() { + $contentA = $this->xpath->query("content:encoded", $this->elem)->item(0); + $contentB = $this->elem->getElementsByTagName("description")->item(0); + + if ($contentA && !$contentB) { + return $contentA->nodeValue; + } + + + if ($contentB && !$contentA) { + return $contentB->nodeValue; + } + + if ($contentA && $contentB) { + return mb_strlen($contentA->nodeValue) > mb_strlen($contentB->nodeValue) ? + $contentA->nodeValue : $contentB->nodeValue; + } + } + + function get_description() { + $summary = $this->elem->getElementsByTagName("description")->item(0); + + if ($summary) { + return $summary->nodeValue; + } + } + + function get_categories() { + $categories = $this->elem->getElementsByTagName("category"); + $cats = array(); + + foreach ($categories as $cat) { + array_push($cats, trim($cat->nodeValue)); + } + + $categories = $this->xpath->query("dc:subject", $this->elem); + + foreach ($categories as $cat) { + array_push($cats, trim($cat->nodeValue)); + } + + return $cats; + } + + function get_enclosures() { + $enclosures = $this->elem->getElementsByTagName("enclosure"); + + $encs = array(); + + foreach ($enclosures as $enclosure) { + $enc = new FeedEnclosure(); + + $enc->type = $enclosure->getAttribute("type"); + $enc->link = $enclosure->getAttribute("url"); + $enc->length = $enclosure->getAttribute("length"); + $enc->height = $enclosure->getAttribute("height"); + $enc->width = $enclosure->getAttribute("width"); + + array_push($encs, $enc); + } + + $enclosures = $this->xpath->query("media:content", $this->elem); + + foreach ($enclosures as $enclosure) { + $enc = new FeedEnclosure(); + + $enc->type = $enclosure->getAttribute("type"); + $enc->link = $enclosure->getAttribute("url"); + $enc->length = $enclosure->getAttribute("length"); + $enc->height = $enclosure->getAttribute("height"); + $enc->width = $enclosure->getAttribute("width"); + + $desc = $this->xpath->query("media:description", $enclosure)->item(0); + if ($desc) $enc->title = strip_tags($desc->nodeValue); + + array_push($encs, $enc); + } + + + $enclosures = $this->xpath->query("media:group", $this->elem); + + foreach ($enclosures as $enclosure) { + $enc = new FeedEnclosure(); + + $content = $this->xpath->query("media:content", $enclosure)->item(0); + + if ($content) { + $enc->type = $content->getAttribute("type"); + $enc->link = $content->getAttribute("url"); + $enc->length = $content->getAttribute("length"); + $enc->height = $content->getAttribute("height"); + $enc->width = $content->getAttribute("width"); + + $desc = $this->xpath->query("media:description", $content)->item(0); + if ($desc) { + $enc->title = strip_tags($desc->nodeValue); + } else { + $desc = $this->xpath->query("media:description", $enclosure)->item(0); + if ($desc) $enc->title = strip_tags($desc->nodeValue); + } + + array_push($encs, $enc); + } + } + + $enclosures = $this->xpath->query("media:thumbnail", $this->elem); + + foreach ($enclosures as $enclosure) { + $enc = new FeedEnclosure(); + + $enc->type = "image/generic"; + $enc->link = $enclosure->getAttribute("url"); + $enc->height = $enclosure->getAttribute("height"); + $enc->width = $enclosure->getAttribute("width"); + + array_push($encs, $enc); + } + + return $encs; + } + +} +?> diff --git a/classes/feedparser.php b/classes/feedparser.php new file mode 100644 index 0000000000..9247bf4506 --- /dev/null +++ b/classes/feedparser.php @@ -0,0 +1,282 @@ +)/s', $data, $matches) === 1) { + $data = mb_convert_encoding($data, 'UTF-8', $matches[2]); + + $data = preg_replace('/^<\?xml[\t\n\r ].*?\?>/s', $matches[1] . "UTF-8" . $matches[3] , $data); + } + + return $data; + } + + function __construct($data) { + libxml_use_internal_errors(true); + libxml_clear_errors(); + $this->doc = new DOMDocument(); + $this->doc->loadXML($data); + + mb_substitute_character("none"); + + $error = libxml_get_last_error(); + + // libxml compiled without iconv? + if ($error && $error->code == 32) { + $data = $this->normalize_encoding($data); + + if ($data) { + libxml_clear_errors(); + + $this->doc = new DOMDocument(); + $this->doc->loadXML($data); + + $error = libxml_get_last_error(); + } + } + + // some terrible invalid unicode entity? + if ($error) { + foreach (libxml_get_errors() as $err) { + if ($err->code == 9) { + // if the source feed is not in utf8, next conversion will fail + $data = $this->normalize_encoding($data); + + // remove dangling bytes + $data = mb_convert_encoding($data, 'UTF-8', 'UTF-8'); + + // apparently not all UTF-8 characters are valid for XML + $data = preg_replace('/[^\x{0009}\x{000a}\x{000d}\x{0020}-\x{D7FF}\x{E000}-\x{FFFD}]+/u', ' ', $data); + + if ($data) { + libxml_clear_errors(); + + $this->doc = new DOMDocument(); + $this->doc->loadXML($data); + + $error = libxml_get_last_error(); + } + break; + } + } + } + + if ($error) { + foreach (libxml_get_errors() as $error) { + if ($error->level == LIBXML_ERR_FATAL) { + if(!isset($this->error)) //currently only the first error is reported + $this->error = $this->format_error($error); + $this->libxml_errors [] = $this->format_error($error); + } + } + } + libxml_clear_errors(); + + $this->items = array(); + } + + function init() { + $root = $this->doc->firstChild; + $xpath = new DOMXPath($this->doc); + $xpath->registerNamespace('atom', 'http://www.w3.org/2005/Atom'); + $xpath->registerNamespace('atom03', 'http://purl.org/atom/ns#'); + $xpath->registerNamespace('media', 'http://search.yahoo.com/mrss/'); + $xpath->registerNamespace('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'); + $xpath->registerNamespace('slash', 'http://purl.org/rss/1.0/modules/slash/'); + $xpath->registerNamespace('dc', 'http://purl.org/dc/elements/1.1/'); + $xpath->registerNamespace('content', 'http://purl.org/rss/1.0/modules/content/'); + $xpath->registerNamespace('thread', 'http://purl.org/syndication/thread/1.0'); + + $this->xpath = $xpath; + + $root = $xpath->query("(//atom03:feed|//atom:feed|//channel|//rdf:rdf|//rdf:RDF)"); + + if ($root && $root->length > 0) { + $root = $root->item(0); + + if ($root) { + switch (mb_strtolower($root->tagName)) { + case "rdf:rdf": + $this->type = $this::FEED_RDF; + break; + case "channel": + $this->type = $this::FEED_RSS; + break; + case "feed": + case "atom:feed": + $this->type = $this::FEED_ATOM; + break; + default: + if( !isset($this->error) ){ + $this->error = "Unknown/unsupported feed type"; + } + return; + } + } + + switch ($this->type) { + case $this::FEED_ATOM: + + $title = $xpath->query("//atom:feed/atom:title")->item(0); + + if (!$title) + $title = $xpath->query("//atom03:feed/atom03:title")->item(0); + + + if ($title) { + $this->title = $title->nodeValue; + } + + $link = $xpath->query("//atom:feed/atom:link[not(@rel)]")->item(0); + + if (!$link) + $link = $xpath->query("//atom:feed/atom:link[@rel='alternate']")->item(0); + + if (!$link) + $link = $xpath->query("//atom03:feed/atom03:link[not(@rel)]")->item(0); + + if (!$link) + $link = $xpath->query("//atom03:feed/atom03:link[@rel='alternate']")->item(0); + + if ($link && $link->hasAttributes()) { + $this->link = $link->getAttribute("href"); + } + + $articles = $xpath->query("//atom:entry"); + + if (!$articles || $articles->length == 0) + $articles = $xpath->query("//atom03:entry"); + + foreach ($articles as $article) { + array_push($this->items, new FeedItem_Atom($article, $this->doc, $this->xpath)); + } + + break; + case $this::FEED_RSS: + $title = $xpath->query("//channel/title")->item(0); + + if ($title) { + $this->title = $title->nodeValue; + } + + $link = $xpath->query("//channel/link")->item(0); + + if ($link) { + if ($link->getAttribute("href")) + $this->link = $link->getAttribute("href"); + else if ($link->nodeValue) + $this->link = $link->nodeValue; + } + + $articles = $xpath->query("//channel/item"); + + foreach ($articles as $article) { + array_push($this->items, new FeedItem_RSS($article, $this->doc, $this->xpath)); + } + + break; + case $this::FEED_RDF: + $xpath->registerNamespace('rssfake', 'http://purl.org/rss/1.0/'); + + $title = $xpath->query("//rssfake:channel/rssfake:title")->item(0); + + if ($title) { + $this->title = $title->nodeValue; + } + + $link = $xpath->query("//rssfake:channel/rssfake:link")->item(0); + + if ($link) { + $this->link = $link->nodeValue; + } + + $articles = $xpath->query("//rssfake:item"); + + foreach ($articles as $article) { + array_push($this->items, new FeedItem_RSS($article, $this->doc, $this->xpath)); + } + + break; + + } + + if ($this->title) $this->title = trim($this->title); + if ($this->link) $this->link = trim($this->link); + + } else { + if( !isset($this->error) ){ + $this->error = "Unknown/unsupported feed type"; + } + return; + } + } + + function format_error($error) { + if ($error) { + return sprintf("LibXML error %s at line %d (column %d): %s", + $error->code, $error->line, $error->column, + $error->message); + } else { + return ""; + } + } + + function error() { + return $this->error; + } + + function errors() { + return $this->libxml_errors; + } + + function get_link() { + return $this->link; + } + + function get_title() { + return $this->title; + } + + function get_items() { + return $this->items; + } + + function get_links($rel) { + $rv = array(); + + switch ($this->type) { + case $this::FEED_ATOM: + $links = $this->xpath->query("//atom:feed/atom:link"); + + foreach ($links as $link) { + if (!$rel || $link->hasAttribute('rel') && $link->getAttribute('rel') == $rel) { + array_push($rv, trim($link->getAttribute('href'))); + } + } + break; + case $this::FEED_RSS: + $links = $this->xpath->query("//atom:link"); + + foreach ($links as $link) { + if (!$rel || $link->hasAttribute('rel') && $link->getAttribute('rel') == $rel) { + array_push($rv, trim($link->getAttribute('href'))); + } + } + break; + } + + return $rv; + } +} ?> diff --git a/classes/feeds.php b/classes/feeds.php new file mode 100644 index 0000000000..996b1b23fb --- /dev/null +++ b/classes/feeds.php @@ -0,0 +1,1209 @@ +"; + + $rss_link = htmlspecialchars(get_self_url_prefix() . + "/public.php?op=rss&id=$feed_id$cat_q$search_q"); + + // right part + + $error_class = $error ? "error" : ""; + + $reply .= " + + "; + + +# $reply .= ""; + $reply .= ""; + + if ($feed_site_url) { + $last_updated = T_sprintf("Last updated: %s", + $feed_last_updated); + + $target = "target=\"_blank\""; + $reply .= "". + truncate_string($feed_title, 30).""; + + if ($error) { + $error = htmlspecialchars($error); + $reply .= " error"; + } + + } else { + $reply .= $feed_title; + } + + $reply .= ""; + + $reply .= ""; + +# $reply .= ""; + + // left part + + $reply .= ""; + $reply .= ""; + + $reply .= " + ".__('All').", + ".__('Unread').", + ".__('Invert').", + ".__('None').""; + + $reply .= " "; + + $reply .= ""; + + //$reply .= "get_hooks(PluginHost::HOOK_HEADLINE_TOOLBAR_BUTTON) as $p) { + $reply .= $p->hook_headline_toolbar_button($feed_id, $is_cat); + } + + $reply .= ""; + + return $reply; + } + + private function format_headlines_list($feed, $method, $view_mode, $limit, $cat_view, + $next_unread_feed, $offset, $vgr_last_feed = false, + $override_order = false, $include_children = false, $check_first_id = false) { + + $disable_cache = false; + + $reply = array(); + + $rgba_cache = array(); + + $timing_info = microtime(true); + + $topmost_article_ids = array(); + + if (!$offset) $offset = 0; + if ($method == "undefined") $method = ""; + + $method_split = explode(":", $method); + + if ($method == "ForceUpdate" && $feed > 0 && is_numeric($feed)) { + // Update the feed if required with some basic flood control + + $result = $this->dbh->query( + "SELECT cache_images,".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated + FROM ttrss_feeds WHERE id = '$feed'"); + + if ($this->dbh->num_rows($result) != 0) { + $last_updated = strtotime($this->dbh->fetch_result($result, 0, "last_updated")); + $cache_images = sql_bool_to_bool($this->dbh->fetch_result($result, 0, "cache_images")); + + if (!$cache_images && time() - $last_updated > 120) { + include "rssfuncs.php"; + update_rss_feed($feed, true, true); + } else { + $this->dbh->query("UPDATE ttrss_feeds SET last_updated = '1970-01-01', last_update_started = '1970-01-01' + WHERE id = '$feed'"); + } + } + } + + if ($method_split[0] == "MarkAllReadGR") { + catchup_feed($method_split[1], false); + } + + // FIXME: might break tag display? + + if (is_numeric($feed) && $feed > 0 && !$cat_view) { + $result = $this->dbh->query( + "SELECT id FROM ttrss_feeds WHERE id = '$feed' LIMIT 1"); + + if ($this->dbh->num_rows($result) == 0) { + $reply['content'] = "
".__('Feed not found.')."
"; + } + } + + @$search = $this->dbh->escape_string($_REQUEST["query"]); + + if ($search) { + $disable_cache = true; + } + + if ($_REQUEST["debug"]) $timing_info = print_checkpoint("H0", $timing_info); + + + if (!$cat_view && is_numeric($feed) && $feed < PLUGIN_FEED_BASE_INDEX && $feed > LABEL_BASE_INDEX) { + $handler = PluginHost::getInstance()->get_feed_handler( + PluginHost::feed_to_pfeed_id($feed)); + + if ($handler) { + $options = array( + "limit" => $limit, + "view_mode" => $view_mode, + "cat_view" => $cat_view, + "search" => $search, + "override_order" => $override_order, + "offset" => $offset, + "owner_uid" => $_SESSION["uid"], + "filter" => false, + "since_id" => 0, + "include_children" => $include_children); + + $qfh_ret = $handler->get_headlines(PluginHost::feed_to_pfeed_id($feed), + $options); + } + + } else { + /*$qfh_ret = queryFeedHeadlines($feed, $limit, $view_mode, $cat_view, + $search, false, $override_order, $offset, 0, + false, 0, $include_children, $topid);*/ + + //function queryFeedHeadlines($feed, $limit, + // $view_mode, $cat_view, $search, $search_mode, + // $override_order = false, $offset = 0, $owner_uid = 0, $filter = false, $since_id = 0, $include_children = false, + // $ignore_vfeed_group = false, $override_strategy = false, $override_vfeed = false, $start_ts = false, $check_top_id = false) { + + $params = array( + "feed" => $feed, + "limit" => $limit, + "view_mode" => $view_mode, + "cat_view" => $cat_view, + "search" => $search, + "override_order" => $override_order, + "offset" => $offset, + "include_children" => $include_children, + "check_first_id" => $check_first_id + ); + + $qfh_ret = queryFeedHeadlines($params); + } + + $vfeed_group_enabled = get_pref("VFEED_GROUP_BY_FEED") && $feed != -6; + + if ($_REQUEST["debug"]) $timing_info = print_checkpoint("H1", $timing_info); + + $result = $qfh_ret[0]; + $feed_title = $qfh_ret[1]; + $feed_site_url = $qfh_ret[2]; + $last_error = $qfh_ret[3]; + $last_updated = strpos($qfh_ret[4], '1970-') === FALSE ? + make_local_datetime($qfh_ret[4], false) : __("Never"); + $highlight_words = $qfh_ret[5]; + $reply['first_id'] = $qfh_ret[6]; + + $vgroup_last_feed = $vgr_last_feed; + + $reply['toolbar'] = $this->format_headline_subtoolbar($feed_site_url, + $feed_title, + $feed, $cat_view, $search, $view_mode, + $last_error, $last_updated); + + $headlines_count = $this->dbh->num_rows($result); + + /* if (get_pref('COMBINED_DISPLAY_MODE')) { + $button_plugins = array(); + foreach (explode(",", ARTICLE_BUTTON_PLUGINS) as $p) { + $pclass = "button_" . trim($p); + + if (class_exists($pclass)) { + $plugin = new $pclass(); + array_push($button_plugins, $plugin); + } + } + } */ + + if ($offset == 0) { + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_HEADLINES_BEFORE) as $p) { + $reply['content'] .= $p->hook_headlines_before($feed, $cat_view, $qfh_ret); + } + } + + $reply['content'] = ''; + + if (!is_numeric($result) && $this->dbh->num_rows($result) > 0) { + + $lnum = $offset; + + $num_unread = 0; + $cur_feed_title = ''; + + if ($_REQUEST["debug"]) $timing_info = print_checkpoint("PS", $timing_info); + + $expand_cdm = get_pref('CDM_EXPANDED'); + + while ($line = $this->dbh->fetch_assoc($result)) { + + $line["content_preview"] = "— " . truncate_string(strip_tags($line["content"]), 250); + + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) { + $line = $p->hook_query_headlines($line, 250, false); + } + + if (get_pref('SHOW_CONTENT_PREVIEW')) { + $content_preview = $line["content_preview"]; + } + + $id = $line["id"]; + $feed_id = $line["feed_id"]; + $label_cache = $line["label_cache"]; + $labels = false; + + if ($label_cache) { + $label_cache = json_decode($label_cache, true); + + if ($label_cache) { + if ($label_cache["no-labels"] == 1) + $labels = array(); + else + $labels = $label_cache; + } + } + + if (!is_array($labels)) $labels = get_article_labels($id); + + $labels_str = ""; + $labels_str .= format_article_labels($labels, $id); + $labels_str .= ""; + + if (count($topmost_article_ids) < 3) { + array_push($topmost_article_ids, $id); + } + + $class = ""; + + if (sql_bool_to_bool($line["unread"])) { + $class .= " Unread"; + ++$num_unread; + } + + if (sql_bool_to_bool($line["marked"])) { + $marked_pic = "\"Unstar"; + $class .= " marked"; + } else { + $marked_pic = "\"Star"; + } + + if (sql_bool_to_bool($line["published"])) { + $published_pic = "\"Unpublish"; + $class .= " published"; + } else { + $published_pic = "\"Publish"; + } + +# $content_link = "" . +# $line["title"] . ""; + +# $content_link = "" . +# $line["title"] . ""; + +# $content_link = "" . +# $line["title"] . ""; + + $updated_fmt = make_local_datetime($line["updated"], false, false, false, true); + $date_entered_fmt = T_sprintf("Imported at %s", + make_local_datetime($line["date_entered"], false)); + + $score = $line["score"]; + + $score_pic = "images/" . get_score_pic($score); + +/* $score_title = __("(Click to change)"); + $score_pic = ""; */ + + $score_pic = ""; + + if ($score > 500) { + $hlc_suffix = "high"; + } else if ($score < -100) { + $hlc_suffix = "low"; + } else { + $hlc_suffix = ""; + } + + $entry_author = $line["author"]; + + if ($entry_author) { + $entry_author = " — $entry_author"; + } + + $has_feed_icon = feed_has_icon($feed_id); + + if ($has_feed_icon) { + $feed_icon_img = "\"\""; + } else { + $feed_icon_img = "\"\""; + } + + $entry_site_url = $line["site_url"]; + + //setting feed headline background color, needs to change text color based on dark/light + $fav_color = $line['favicon_avg_color']; + + require_once "colors.php"; + + if ($fav_color && $fav_color != 'fail') { + if (!isset($rgba_cache[$feed_id])) { + $rgba_cache[$feed_id] = join(",", _color_unpack($fav_color)); + } + } + + if (!get_pref('COMBINED_DISPLAY_MODE')) { + + if ($vfeed_group_enabled) { + if ($feed_id != $vgroup_last_feed && $line["feed_title"]) { + + $cur_feed_title = $line["feed_title"]; + $vgroup_last_feed = $feed_id; + + $cur_feed_title = htmlspecialchars($cur_feed_title); + + $vf_catchup_link = "".__('mark feed as read').""; + + $reply['content'] .= "
". + "
$feed_icon_img
". + "". + $line["feed_title"]." + $vf_catchup_link
"; + + + } + } + + $mouseover_attrs = "onmouseover='postMouseIn(event, $id)' + onmouseout='postMouseOut($id)'"; + + $reply['content'] .= "
"; + + $reply['content'] .= "
"; + + $reply['content'] .= ""; + + $reply['content'] .= "$marked_pic"; + $reply['content'] .= "$published_pic"; + + $reply['content'] .= "
"; + + $reply['content'] .= ""; + + if (!$vfeed_group_enabled) { + if (@$line["feed_title"]) { + $rgba = @$rgba_cache[$feed_id]; + + $reply['content'] .= "". + truncate_string($line["feed_title"],30).""; + } + } + + + $reply['content'] .= ""; + + $reply['content'] .= "
$updated_fmt
+
"; + + $reply['content'] .= "
"; + + $reply['content'] .= $score_pic; + + if ($line["feed_title"] && !$vfeed_group_enabled) { + + $reply['content'] .= " + $feed_icon_img"; + } + + $reply['content'] .= "
"; + $reply['content'] .= "
"; + + } else { + + if ($line["tag_cache"]) + $tags = explode(",", $line["tag_cache"]); + else + $tags = false; + + $line["content"] = sanitize($line["content"], + sql_bool_to_bool($line['hide_images']), false, $entry_site_url, $highlight_words, $line["id"]); + + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_RENDER_ARTICLE_CDM) as $p) { + $line = $p->hook_render_article_cdm($line); + } + + if ($vfeed_group_enabled && $line["feed_title"]) { + if ($feed_id != $vgroup_last_feed) { + + $cur_feed_title = $line["feed_title"]; + $vgroup_last_feed = $feed_id; + + $cur_feed_title = htmlspecialchars($cur_feed_title); + + $vf_catchup_link = "".__('mark feed as read').""; + + $has_feed_icon = feed_has_icon($feed_id); + + if ($has_feed_icon) { + $feed_icon_img = "\"\""; + } else { + //$feed_icon_img = "\"\""; + } + + $reply['content'] .= "
". + "
$feed_icon_img
". + "". + $line["feed_title"]." $vf_catchup_link
"; + + } + } + + $mouseover_attrs = "onmouseover='postMouseIn(event, $id)' + onmouseout='postMouseOut($id)'"; + + $expanded_class = $expand_cdm ? "expanded" : "expandable"; + + $reply['content'] .= "
"; + + $reply['content'] .= "
"; + $reply['content'] .= "
"; + + $reply['content'] .= ""; + + $reply['content'] .= "$marked_pic"; + $reply['content'] .= "$published_pic"; + + $reply['content'] .= "
"; + + if ($highlight_words && count($highlight_words > 0)) { + foreach ($highlight_words as $word) { + $line["title"] = preg_replace("/(\Q$word\E)/i", + "$1", $line["title"]); + } + } + + $reply['content'] .= " + ". + $line["title"] . + " $entry_author"; + + $reply['content'] .= $labels_str; + + $reply['content'] .= ""; + + if (!$expand_cdm) + $content_hidden = "style=\"display : none\""; + else + $excerpt_hidden = "style=\"display : none\""; + + $reply['content'] .= "" . $content_preview . ""; + + $reply['content'] .= ""; + + if (!$vfeed_group_enabled) { + if (@$line["feed_title"]) { + $rgba = @$rgba_cache[$feed_id]; + + $reply['content'] .= ""; + } + } + + $reply['content'] .= " + $updated_fmt"; + + $reply['content'] .= "
"; + $reply['content'] .= "$score_pic"; + + if (!get_pref("VFEED_GROUP_BY_FEED") && $line["feed_title"]) { + $reply['content'] .= "$feed_icon_img"; + } + $reply['content'] .= "
"; + + $reply['content'] .= "
"; + + $reply['content'] .= "
"; + + $reply['content'] .= "
"; + if ($line['note']) { + $reply['content'] .= format_article_note($id, $line['note']); + } + $reply['content'] .= "
"; + + if (!$line['lang']) $line['lang'] = 'en'; + + $reply['content'] .= "
"; + + if ($line["orig_feed_id"]) { + + $tmp_result = $this->dbh->query("SELECT * FROM ttrss_archived_feeds + WHERE id = ".$line["orig_feed_id"]); + + if ($this->dbh->num_rows($tmp_result) != 0) { + + $reply['content'] .= "
"; + $reply['content'] .= __("Originally from:"); + + $reply['content'] .= " "; + + $tmp_line = $this->dbh->fetch_assoc($tmp_result); + + $reply['content'] .= "" . + $tmp_line['title'] . ""; + + $reply['content'] .= " "; + + $reply['content'] .= ""; + $reply['content'] .= ""; + + $reply['content'] .= "
"; + } + } + + $reply['content'] .= ""; + +// if (!$expand_cdm) { + $reply['content'] .= ""; + $reply['content'] .= htmlspecialchars($line["content"]); + $reply['content'] .= ""; + + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_ARTICLE_LEFT_BUTTON) as $p) { + $reply['content'] .= $p->hook_article_left_button($line); + } + + $tags_str = format_tags_string($tags, $id); + + $reply['content'] .= "Tags + $tags_str + (+)"; + + $num_comments = $line["num_comments"]; + $entry_comments = ""; + + if ($num_comments > 0) { + if ($line["comments"]) { + $comments_url = htmlspecialchars($line["comments"]); + } else { + $comments_url = htmlspecialchars($line["link"]); + } + $entry_comments = "$num_comments ". + _ngettext("comment", "comments", $num_comments).""; + + } else { + if ($line["comments"] && $line["link"] != $line["comments"]) { + $entry_comments = "".__("comments").""; + } + } + + if ($entry_comments) $reply['content'] .= " ($entry_comments)"; + + $reply['content'] .= "
"; + +// $reply['content'] .= "$marked_pic"; +// $reply['content'] .= "$published_pic"; + + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_ARTICLE_BUTTON) as $p) { + $reply['content'] .= $p->hook_article_button($line); + } + + $reply['content'] .= "
"; + $reply['content'] .= "
"; + + $reply['content'] .= "
"; + + $reply['content'] .= "
"; + + } + + ++$lnum; + } + + if ($_REQUEST["debug"]) $timing_info = print_checkpoint("PE", $timing_info); + + } else if (!is_numeric($result)) { + $message = ""; + + switch ($view_mode) { + case "unread": + $message = __("No unread articles found to display."); + break; + case "updated": + $message = __("No updated articles found to display."); + break; + case "marked": + $message = __("No starred articles found to display."); + break; + default: + if ($feed < LABEL_BASE_INDEX) { + $message = __("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."); + } else { + $message = __("No articles found to display."); + } + } + + if (!$offset && $message) { + $reply['content'] = "
$message"; + + $reply['content'] .= "

"; + + $result = $this->dbh->query("SELECT ".SUBSTRING_FOR_DATE."(MAX(last_updated), 1, 19) AS last_updated FROM ttrss_feeds + WHERE owner_uid = " . $_SESSION['uid']); + + $last_updated = $this->dbh->fetch_result($result, 0, "last_updated"); + $last_updated = make_local_datetime($last_updated, false); + + $reply['content'] .= sprintf(__("Feeds last updated at %s"), $last_updated); + + $result = $this->dbh->query("SELECT COUNT(id) AS num_errors + FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ".$_SESSION["uid"]); + + $num_errors = $this->dbh->fetch_result($result, 0, "num_errors"); + + if ($num_errors > 0) { + $reply['content'] .= "
"; + $reply['content'] .= "". + __('Some feeds have update errors (click for details)').""; + } + $reply['content'] .= "

"; + + } + } else if (is_numeric($result) && $result == -1) { + $reply['first_id_changed'] = true; + } + + if ($_REQUEST["debug"]) $timing_info = print_checkpoint("H2", $timing_info); + + return array($topmost_article_ids, $headlines_count, $feed, $disable_cache, + $vgroup_last_feed, $reply); + } + + function catchupAll() { + $this->dbh->query("UPDATE ttrss_user_entries SET + last_read = NOW(), unread = false WHERE unread = true AND owner_uid = " . $_SESSION["uid"]); + ccache_zero_all($_SESSION["uid"]); + } + + function view() { + $timing_info = microtime(true); + + $reply = array(); + + if ($_REQUEST["debug"]) $timing_info = print_checkpoint("0", $timing_info); + + $feed = $this->dbh->escape_string($_REQUEST["feed"]); + $method = $this->dbh->escape_string($_REQUEST["m"]); + $view_mode = $this->dbh->escape_string($_REQUEST["view_mode"]); + $limit = 30; + @$cat_view = $_REQUEST["cat"] == "true"; + @$next_unread_feed = $this->dbh->escape_string($_REQUEST["nuf"]); + @$offset = $this->dbh->escape_string($_REQUEST["skip"]); + @$vgroup_last_feed = $this->dbh->escape_string($_REQUEST["vgrlf"]); + $order_by = $this->dbh->escape_string($_REQUEST["order_by"]); + $check_first_id = $this->dbh->escape_string($_REQUEST["fid"]); + + if (is_numeric($feed)) $feed = (int) $feed; + + /* Feed -5 is a special case: it is used to display auxiliary information + * when there's nothing to load - e.g. no stuff in fresh feed */ + + if ($feed == -5) { + print json_encode($this->generate_dashboard_feed()); + return; + } + + $result = false; + + if ($feed < LABEL_BASE_INDEX) { + $label_feed = feed_to_label_id($feed); + $result = $this->dbh->query("SELECT id FROM ttrss_labels2 WHERE + id = '$label_feed' AND owner_uid = " . $_SESSION['uid']); + } else if (!$cat_view && is_numeric($feed) && $feed > 0) { + $result = $this->dbh->query("SELECT id FROM ttrss_feeds WHERE + id = '$feed' AND owner_uid = " . $_SESSION['uid']); + } else if ($cat_view && is_numeric($feed) && $feed > 0) { + $result = $this->dbh->query("SELECT id FROM ttrss_feed_categories WHERE + id = '$feed' AND owner_uid = " . $_SESSION['uid']); + } + + if ($result && $this->dbh->num_rows($result) == 0) { + print json_encode($this->generate_error_feed(__("Feed not found."))); + return; + } + + /* Updating a label ccache means recalculating all of the caches + * so for performance reasons we don't do that here */ + + if ($feed >= 0) { + ccache_update($feed, $_SESSION["uid"], $cat_view); + } + + set_pref("_DEFAULT_VIEW_MODE", $view_mode); + set_pref("_DEFAULT_VIEW_ORDER_BY", $order_by); + + /* bump login timestamp if needed */ + if (time() - $_SESSION["last_login_update"] > 3600) { + $this->dbh->query("UPDATE ttrss_users SET last_login = NOW() WHERE id = " . + $_SESSION["uid"]); + $_SESSION["last_login_update"] = time(); + } + + if (!$cat_view && is_numeric($feed) && $feed > 0) { + $this->dbh->query("UPDATE ttrss_feeds SET last_viewed = NOW() + WHERE id = '$feed' AND owner_uid = ".$_SESSION["uid"]); + } + + $reply['headlines'] = array(); + + $override_order = false; + + switch ($order_by) { + case "title": + $override_order = "ttrss_entries.title"; + break; + case "date_reverse": + $override_order = "score DESC, date_entered, updated"; + break; + case "feed_dates": + $override_order = "updated DESC"; + break; + } + + if ($_REQUEST["debug"]) $timing_info = print_checkpoint("04", $timing_info); + + $ret = $this->format_headlines_list($feed, $method, + $view_mode, $limit, $cat_view, $next_unread_feed, $offset, + $vgroup_last_feed, $override_order, true, $check_first_id); + + //$topmost_article_ids = $ret[0]; + $headlines_count = $ret[1]; + /* $returned_feed = $ret[2]; */ + $disable_cache = $ret[3]; + $vgroup_last_feed = $ret[4]; + + //$reply['headlines']['content'] =& $ret[5]['content']; + //$reply['headlines']['toolbar'] =& $ret[5]['toolbar']; + + $reply['headlines'] =& $ret[5]; + + if (!$next_unread_feed) + $reply['headlines']['id'] = $feed; + else + $reply['headlines']['id'] = $next_unread_feed; + + $reply['headlines']['is_cat'] = (bool) $cat_view; + + if ($_REQUEST["debug"]) $timing_info = print_checkpoint("05", $timing_info); + + $reply['headlines-info'] = array("count" => (int) $headlines_count, + "vgroup_last_feed" => $vgroup_last_feed, + "disable_cache" => (bool) $disable_cache); + + if ($_REQUEST["debug"]) $timing_info = print_checkpoint("30", $timing_info); + + $reply['runtime-info'] = make_runtime_info(); + + print json_encode($reply); + + } + + private function generate_dashboard_feed() { + $reply = array(); + + $reply['headlines']['id'] = -5; + $reply['headlines']['is_cat'] = false; + + $reply['headlines']['toolbar'] = ''; + + $reply['headlines']['content'] = "
".__('No feed selected.'); + + $reply['headlines']['content'] .= "

"; + + $result = $this->dbh->query("SELECT ".SUBSTRING_FOR_DATE."(MAX(last_updated), 1, 19) AS last_updated FROM ttrss_feeds + WHERE owner_uid = " . $_SESSION['uid']); + + $last_updated = $this->dbh->fetch_result($result, 0, "last_updated"); + $last_updated = make_local_datetime($last_updated, false); + + $reply['headlines']['content'] .= sprintf(__("Feeds last updated at %s"), $last_updated); + + $result = $this->dbh->query("SELECT COUNT(id) AS num_errors + FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ".$_SESSION["uid"]); + + $num_errors = $this->dbh->fetch_result($result, 0, "num_errors"); + + if ($num_errors > 0) { + $reply['headlines']['content'] .= "
"; + $reply['headlines']['content'] .= "". + __('Some feeds have update errors (click for details)').""; + } + $reply['headlines']['content'] .= "

"; + + $reply['headlines-info'] = array("count" => 0, + "vgroup_last_feed" => '', + "unread" => 0, + "disable_cache" => true); + + return $reply; + } + + private function generate_error_feed($error) { + $reply = array(); + + $reply['headlines']['id'] = -7; + $reply['headlines']['is_cat'] = false; + + $reply['headlines']['toolbar'] = ''; + $reply['headlines']['content'] = "
". $error . "
"; + + $reply['headlines-info'] = array("count" => 0, + "vgroup_last_feed" => '', + "unread" => 0, + "disable_cache" => true); + + return $reply; + } + + function quickAddFeed() { + print ""; + print ""; + + print ""; + + print "
".__("Feed or site URL")."
"; + print "
"; + + print "
+
"; + + print ""; + + print "
"; + + if (get_pref('ENABLE_FEED_CATS')) { + print __('Place in category:') . " "; + print_feed_cat_select("cat", false, 'dojoType="dijit.form.Select"'); + } + + print "
"; + + print ''; + + print ""; + + + print "
+ +
"; + + print ""; + + print "
+ "; + + if (!(defined('_DISABLE_FEED_BROWSER') && _DISABLE_FEED_BROWSER)) { + print ""; + } + + print " +
"; + + //return; + } + + function feedBrowser() { + if (defined('_DISABLE_FEED_BROWSER') && _DISABLE_FEED_BROWSER) return; + + $browser_search = $this->dbh->escape_string($_REQUEST["search"]); + + print ""; + print ""; + + print "
+
+ + + +
"; + + print " "; + + print __("limit:"); + + print " "; + + print "
"; + + require_once "feedbrowser.php"; + + print "
    "; + print make_feed_browser("", 25); + print "
"; + + print "
+ + +
"; + + } + + function search() { + $this->params = explode(":", $this->dbh->escape_string($_REQUEST["param"]), 2); + + $active_feed_id = sprintf("%d", $this->params[0]); + $is_cat = $this->params[1] != "false"; + + print "
".__('Look for')."
"; + + print "
"; + + print ""; + + print "
".T_sprintf('in %s', getFeedTitle($active_feed_id, $is_cat)).""; + + print "
"; + + print "
"; + + if (count(PluginHost::getInstance()->get_hooks(PluginHost::HOOK_SEARCH)) == 0) { + print ""; + } + + print " + +
"; + } + + function update_debugger() { + header("Content-type: text/html"); + + $feed_id = (int)$_REQUEST["feed_id"]; + @$do_update = $_REQUEST["action"] == "do_update"; + $csrf_token = $_REQUEST["csrf_token"]; + + $refetch_checked = isset($_REQUEST["force_refetch"]) ? "checked" : ""; + $rehash_checked = isset($_REQUEST["force_rehash"]) ? "checked" : ""; + + ?> + + + + Feed Debugger + + +

Feed Debugger:

+
+ + + + + + + > Force refetch
+ > Force rehash
+ +

+

+ +
+ +
+ + + + diff --git a/classes/handler.php b/classes/handler.php new file mode 100644 index 0000000000..b209320458 --- /dev/null +++ b/classes/handler.php @@ -0,0 +1,24 @@ +dbh = Db::get(); + $this->args = $args; + } + + function csrf_ignore($method) { + return true; + } + + function before($method) { + return true; + } + + function after() { + return true; + } + +} +?> diff --git a/classes/handler/protected.php b/classes/handler/protected.php new file mode 100644 index 0000000000..4ce86534d9 --- /dev/null +++ b/classes/handler/protected.php @@ -0,0 +1,8 @@ + diff --git a/classes/handler/public.php b/classes/handler/public.php new file mode 100644 index 0000000000..1bf0887011 --- /dev/null +++ b/classes/handler/public.php @@ -0,0 +1,1075 @@ + $owner_uid, + "feed" => $feed, + "limit" => 1, + "view_mode" => $view_mode, + "cat_view" => $is_cat, + "search" => $search, + "override_order" => $date_sort_field, + "include_children" => true, + "ignore_vfeed_group" => true, + "offset" => $offset, + "start_ts" => $start_ts + ); + + $qfh_ret = queryFeedHeadlines($params); + + $result = $qfh_ret[0]; + + if ($this->dbh->num_rows($result) != 0) { + + $ts = strtotime($this->dbh->fetch_result($result, 0, $date_check_field)); + + if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && + strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $ts) { + header('HTTP/1.0 304 Not Modified'); + return; + } + + $last_modified = gmdate("D, d M Y H:i:s", $ts) . " GMT"; + header("Last-Modified: $last_modified", true); + } + + /*$qfh_ret = queryFeedHeadlines($feed, + $limit, $view_mode, $is_cat, $search, false, + $date_sort_field, $offset, $owner_uid, + false, 0, true, true, false, false, $start_ts);*/ + + $params = array( + "owner_uid" => $owner_uid, + "feed" => $feed, + "limit" => $limit, + "view_mode" => $view_mode, + "cat_view" => $is_cat, + "search" => $search, + "override_order" => $date_sort_field, + "include_children" => true, + "ignore_vfeed_group" => true, + "offset" => $offset, + "start_ts" => $start_ts + ); + + $qfh_ret = queryFeedHeadlines($params); + + $result = $qfh_ret[0]; + $feed_title = htmlspecialchars($qfh_ret[1]); + $feed_site_url = $qfh_ret[2]; + /* $last_error = $qfh_ret[3]; */ + + $feed_self_url = get_self_url_prefix() . + "/public.php?op=rss&id=$feed&key=" . + get_feed_access_key($feed, false, $owner_uid); + + if (!$feed_site_url) $feed_site_url = get_self_url_prefix(); + + if ($format == 'atom') { + $tpl = new MiniTemplator; + + $tpl->readTemplateFromFile("templates/generated_feed.txt"); + + $tpl->setVariable('FEED_TITLE', $feed_title, true); + $tpl->setVariable('VERSION', VERSION, true); + $tpl->setVariable('FEED_URL', htmlspecialchars($feed_self_url), true); + + if (PUBSUBHUBBUB_HUB && $feed == -2) { + $tpl->setVariable('HUB_URL', htmlspecialchars(PUBSUBHUBBUB_HUB), true); + $tpl->addBlock('feed_hub'); + } + + $tpl->setVariable('SELF_URL', htmlspecialchars(get_self_url_prefix()), true); + while ($line = $this->dbh->fetch_assoc($result)) { + $line["content_preview"] = truncate_string(strip_tags($line["content"]), 100, '...'); + + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) { + $line = $p->hook_query_headlines($line); + } + + $tpl->setVariable('ARTICLE_ID', + htmlspecialchars($orig_guid ? $line['link'] : + $this->make_article_tag_uri($line['id'], $line['date_entered'])), true); + $tpl->setVariable('ARTICLE_LINK', htmlspecialchars($line['link']), true); + $tpl->setVariable('ARTICLE_TITLE', htmlspecialchars($line['title']), true); + $tpl->setVariable('ARTICLE_EXCERPT', $line["content_preview"], true); + + $content = sanitize($line["content"], false, $owner_uid, + $feed_site_url); + + if ($line['note']) { + $content = "
Article note: " . $line['note'] . "
" . + $content; + $tpl->setVariable('ARTICLE_NOTE', htmlspecialchars($line['note']), true); + } + + $tpl->setVariable('ARTICLE_CONTENT', $content, true); + + $tpl->setVariable('ARTICLE_UPDATED_ATOM', + date('c', strtotime($line["updated"])), true); + $tpl->setVariable('ARTICLE_UPDATED_RFC822', + date(DATE_RFC822, strtotime($line["updated"])), true); + + $tpl->setVariable('ARTICLE_AUTHOR', htmlspecialchars($line['author']), true); + + $tpl->setVariable('ARTICLE_SOURCE_LINK', htmlspecialchars($line['site_url'] ? $line["site_url"] : get_self_url_prefix()), true); + $tpl->setVariable('ARTICLE_SOURCE_TITLE', htmlspecialchars($line['feed_title'] ? $line['feed_title'] : $feed_title), true); + + $tags = get_article_tags($line["id"], $owner_uid); + + foreach ($tags as $tag) { + $tpl->setVariable('ARTICLE_CATEGORY', htmlspecialchars($tag), true); + $tpl->addBlock('category'); + } + + $enclosures = get_article_enclosures($line["id"]); + + foreach ($enclosures as $e) { + $type = htmlspecialchars($e['content_type']); + $url = htmlspecialchars($e['content_url']); + $length = $e['duration'] ? $e['duration'] : 1; + + $tpl->setVariable('ARTICLE_ENCLOSURE_URL', $url, true); + $tpl->setVariable('ARTICLE_ENCLOSURE_TYPE', $type, true); + $tpl->setVariable('ARTICLE_ENCLOSURE_LENGTH', $length, true); + + $tpl->addBlock('enclosure'); + } + + $tpl->addBlock('entry'); + } + + $tmp = ""; + + $tpl->addBlock('feed'); + $tpl->generateOutputToString($tmp); + + if (@!$_REQUEST["noxml"]) { + header("Content-Type: text/xml; charset=utf-8"); + } else { + header("Content-Type: text/plain; charset=utf-8"); + } + + print $tmp; + } else if ($format == 'json') { + + $feed = array(); + + $feed['title'] = $feed_title; + $feed['version'] = VERSION; + $feed['feed_url'] = $feed_self_url; + + if (PUBSUBHUBBUB_HUB && $feed == -2) { + $feed['hub_url'] = PUBSUBHUBBUB_HUB; + } + + $feed['self_url'] = get_self_url_prefix(); + + $feed['articles'] = array(); + + while ($line = $this->dbh->fetch_assoc($result)) { + $line["content_preview"] = truncate_string(strip_tags($line["content_preview"]), 100, '...'); + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) { + $line = $p->hook_query_headlines($line, 100); + } + $article = array(); + + $article['id'] = $line['link']; + $article['link'] = $line['link']; + $article['title'] = $line['title']; + $article['excerpt'] = $line["content_preview"]; + $article['content'] = sanitize($line["content"], false, $owner_uid); + $article['updated'] = date('c', strtotime($line["updated"])); + + if ($line['note']) $article['note'] = $line['note']; + if ($article['author']) $article['author'] = $line['author']; + + $tags = get_article_tags($line["id"], $owner_uid); + + if (count($tags) > 0) { + $article['tags'] = array(); + + foreach ($tags as $tag) { + array_push($article['tags'], $tag); + } + } + + $enclosures = get_article_enclosures($line["id"]); + + if (count($enclosures) > 0) { + $article['enclosures'] = array(); + + foreach ($enclosures as $e) { + $type = $e['content_type']; + $url = $e['content_url']; + $length = $e['duration']; + + array_push($article['enclosures'], array("url" => $url, "type" => $type, "length" => $length)); + } + } + + array_push($feed['articles'], $article); + } + + header("Content-Type: text/json; charset=utf-8"); + print json_encode($feed); + + } else { + header("Content-Type: text/plain; charset=utf-8"); + print json_encode(array("error" => array("message" => "Unknown format"))); + } + } + + function getUnread() { + $login = $this->dbh->escape_string($_REQUEST["login"]); + $fresh = $_REQUEST["fresh"] == "1"; + + $result = $this->dbh->query("SELECT id FROM ttrss_users WHERE login = '$login'"); + + if ($this->dbh->num_rows($result) == 1) { + $uid = $this->dbh->fetch_result($result, 0, "id"); + + print getGlobalUnread($uid); + + if ($fresh) { + print ";"; + print getFeedArticles(-3, false, true, $uid); + } + + } else { + print "-1;User not found"; + } + + } + + function getProfiles() { + $login = $this->dbh->escape_string($_REQUEST["login"]); + + $result = $this->dbh->query("SELECT ttrss_settings_profiles.* FROM ttrss_settings_profiles,ttrss_users + WHERE ttrss_users.id = ttrss_settings_profiles.owner_uid AND login = '$login' ORDER BY title"); + + print ""; + } + + function pubsub() { + $mode = $this->dbh->escape_string($_REQUEST['hub_mode']); + if (!$mode) $mode = $this->dbh->escape_string($_REQUEST['hub.mode']); + + $feed_id = (int) $this->dbh->escape_string($_REQUEST['id']); + $feed_url = $this->dbh->escape_string($_REQUEST['hub_topic']); + + if (!$feed_url) $feed_url = $this->dbh->escape_string($_REQUEST['hub.topic']); + + if (!PUBSUBHUBBUB_ENABLED) { + header('HTTP/1.0 404 Not Found'); + echo "404 Not found (Disabled by server)"; + return; + } + + // TODO: implement hub_verifytoken checking + // TODO: store requested rel=self or whatever for verification + // (may be different from stored feed url) e.g. http://url/ or http://url + + $result = $this->dbh->query("SELECT feed_url FROM ttrss_feeds + WHERE id = '$feed_id'"); + + if ($this->dbh->num_rows($result) != 0) { + + $check_feed_url = $this->dbh->fetch_result($result, 0, "feed_url"); + + // ignore url checking for the time being + if ($check_feed_url && (true || $check_feed_url == $feed_url || !$feed_url)) { + if ($mode == "subscribe") { + + $this->dbh->query("UPDATE ttrss_feeds SET pubsub_state = 2 + WHERE id = '$feed_id'"); + + print $_REQUEST['hub_challenge']; + return; + + } else if ($mode == "unsubscribe") { + + $this->dbh->query("UPDATE ttrss_feeds SET pubsub_state = 0 + WHERE id = '$feed_id'"); + + print $_REQUEST['hub_challenge']; + return; + + } else if (!$mode) { + + // Received update ping, schedule feed update. + //update_rss_feed($feed_id, true, true); + + $this->dbh->query("UPDATE ttrss_feeds SET + last_update_started = '1970-01-01', + last_updated = '1970-01-01' WHERE id = '$feed_id'"); + + } + } else { + header('HTTP/1.0 404 Not Found'); + echo "404 Not found (URL check failed)"; + } + } else { + header('HTTP/1.0 404 Not Found'); + echo "404 Not found (Feed not found)"; + } + + } + + function logout() { + logout_user(); + header("Location: index.php"); + } + + function share() { + $uuid = $this->dbh->escape_string($_REQUEST["key"]); + + $result = $this->dbh->query("SELECT ref_id, owner_uid FROM ttrss_user_entries WHERE + uuid = '$uuid'"); + + if ($this->dbh->num_rows($result) != 0) { + header("Content-Type: text/html"); + + $id = $this->dbh->fetch_result($result, 0, "ref_id"); + $owner_uid = $this->dbh->fetch_result($result, 0, "owner_uid"); + + $article = format_article($id, false, true, $owner_uid); + + print_r($article['content']); + + } else { + print "Article not found."; + } + + } + + function rss() { + $feed = $this->dbh->escape_string($_REQUEST["id"]); + $key = $this->dbh->escape_string($_REQUEST["key"]); + $is_cat = sql_bool_to_bool($_REQUEST["is_cat"]); + $limit = (int)$this->dbh->escape_string($_REQUEST["limit"]); + $offset = (int)$this->dbh->escape_string($_REQUEST["offset"]); + + $search = $this->dbh->escape_string($_REQUEST["q"]); + $view_mode = $this->dbh->escape_string($_REQUEST["view-mode"]); + $order = $this->dbh->escape_string($_REQUEST["order"]); + $start_ts = $this->dbh->escape_string($_REQUEST["ts"]); + + $format = $this->dbh->escape_string($_REQUEST['format']); + $orig_guid = sql_bool_to_bool($_REQUEST["orig_guid"]); + + if (!$format) $format = 'atom'; + + if (SINGLE_USER_MODE) { + authenticate_user("admin", null); + } + + $owner_id = false; + + if ($key) { + $result = $this->dbh->query("SELECT owner_uid FROM + ttrss_access_keys WHERE access_key = '$key' AND feed_id = '$feed'"); + + if ($this->dbh->num_rows($result) == 1) + $owner_id = $this->dbh->fetch_result($result, 0, "owner_uid"); + } + + if ($owner_id) { + $this->generate_syndicated_feed($owner_id, $feed, $is_cat, $limit, + $offset, $search, $view_mode, $format, $order, $orig_guid, $start_ts); + } else { + header('HTTP/1.1 403 Forbidden'); + } + } + + function updateTask() { + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_UPDATE_TASK, "hook_update_task", false); + } + + function housekeepingTask() { + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_HOUSE_KEEPING, "hook_house_keeping", false); + } + + function globalUpdateFeeds() { + RPC::updaterandomfeed_real($this->dbh); + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_UPDATE_TASK, "hook_update_task", false); + } + + function sharepopup() { + if (SINGLE_USER_MODE) { + login_sequence(); + } + + header('Content-Type: text/html; charset=utf-8'); + print "Tiny Tiny RSS + + "; + + echo stylesheet_tag("css/utility.css"); + echo stylesheet_tag("css/dijit.css"); + echo javascript_tag("lib/prototype.js"); + echo javascript_tag("lib/scriptaculous/scriptaculous.js?load=effects,controls"); + print " + "; + + $action = $_REQUEST["action"]; + + if ($_SESSION["uid"]) { + + if ($action == 'share') { + + $title = $this->dbh->escape_string(strip_tags($_REQUEST["title"])); + $url = $this->dbh->escape_string(strip_tags($_REQUEST["url"])); + $content = $this->dbh->escape_string(strip_tags($_REQUEST["content"])); + $labels = $this->dbh->escape_string(strip_tags($_REQUEST["labels"])); + + Article::create_published_article($title, $url, $content, $labels, + $_SESSION["uid"]); + + print ""; + + } else { + $title = htmlspecialchars($_REQUEST["title"]); + $url = htmlspecialchars($_REQUEST["url"]); + + ?> + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+
+
+
+
+ +
+ + +
+ + + +
+ + + + + + + + + + +
+

">
">
+ + + +
+ +
+ dbh->escape_string($_POST["login"]); + $password = $_POST["password"]; + $remember_me = $_POST["remember_me"]; + + if ($remember_me) { + session_set_cookie_params(SESSION_COOKIE_LIFETIME); + } else { + session_set_cookie_params(0); + } + + @session_start(); + + if (authenticate_user($login, $password)) { + $_POST["password"] = ""; + + if (get_schema_version() >= 120) { + $_SESSION["language"] = get_pref("USER_LANGUAGE", $_SESSION["uid"]); + } + + $_SESSION["ref_schema_version"] = get_schema_version(true); + $_SESSION["bw_limit"] = !!$_POST["bw_limit"]; + + if ($_POST["profile"]) { + + $profile = $this->dbh->escape_string($_POST["profile"]); + + $result = $this->dbh->query("SELECT id FROM ttrss_settings_profiles + WHERE id = '$profile' AND owner_uid = " . $_SESSION["uid"]); + + if ($this->dbh->num_rows($result) != 0) { + $_SESSION["profile"] = $profile; + } + } + } else { + $_SESSION["login_error_msg"] = __("Incorrect username or password"); + user_error("Failed login attempt for $login from {$_SERVER['REMOTE_ADDR']}", E_USER_WARNING); + } + + if ($_REQUEST['return']) { + header("Location: " . $_REQUEST['return']); + } else { + header("Location: " . SELF_URL_PATH); + } + } + } + + /* function subtest() { + header("Content-type: text/plain; charset=utf-8"); + + $url = $_REQUEST["url"]; + + print "$url\n\n"; + + + print_r(get_feeds_from_html($url, fetch_file_contents($url))); + + } */ + + function subscribe() { + if (SINGLE_USER_MODE) { + login_sequence(); + } + + if ($_SESSION["uid"]) { + + $feed_url = $this->dbh->escape_string(trim($_REQUEST["feed_url"])); + + header('Content-Type: text/html; charset=utf-8'); + print " + + Tiny Tiny RSS + + + + + + + + \"Tiny +

".__("Subscribe to feed...")."

"; + + $rc = subscribe_to_feed($feed_url); + + switch ($rc['code']) { + case 0: + print_warning(T_sprintf("Already subscribed to %s.", $feed_url)); + break; + case 1: + print_notice(T_sprintf("Subscribed to %s.", $feed_url)); + break; + case 2: + print_error(T_sprintf("Could not subscribe to %s.", $feed_url)); + break; + case 3: + print_error(T_sprintf("No feeds found in %s.", $feed_url)); + break; + case 4: + print_notice(__("Multiple feed URLs found.")); + $feed_urls = $rc["feeds"]; + break; + case 5: + print_error(T_sprintf("Could not subscribe to %s.
Can't download the Feed URL.", $feed_url)); + break; + } + + if ($feed_urls) { + + print "
"; + print ""; + + print ""; + + print "
"; + } + + $tp_uri = get_self_url_prefix() . "/prefs.php"; + $tt_uri = get_self_url_prefix(); + + if ($rc['code'] <= 2){ + $result = $this->dbh->query("SELECT id FROM ttrss_feeds WHERE + feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"]); + + $feed_id = $this->dbh->fetch_result($result, 0, "id"); + } else { + $feed_id = 0; + } + print "

"; + + if ($feed_id) { + print "

+ + + + +
"; + } + + print "
+ +

"; + + print "
"; + + } else { + render_login_form(); + } + } + + function index() { + header("Content-Type: text/plain"); + print error_json(13); + } + + function forgotpass() { + startup_gettext(); + + @$hash = $_REQUEST["hash"]; + + header('Content-Type: text/html; charset=utf-8'); + print "Tiny Tiny RSS + + "; + + echo stylesheet_tag("css/utility.css"); + echo javascript_tag("lib/prototype.js"); + + print " + "; + + print ''; + print "

".__("Password recovery")."

"; + print "
"; + + @$method = $_POST['method']; + + if ($hash) { + $login = $_REQUEST["login"]; + + if ($login) { + $result = $this->dbh->query("SELECT id, resetpass_token FROM ttrss_users + WHERE login = '$login'"); + + if ($this->dbh->num_rows($result) != 0) { + $id = $this->dbh->fetch_result($result, 0, "id"); + $resetpass_token_full = $this->dbh->fetch_result($result, 0, "resetpass_token"); + list($timestamp, $resetpass_token) = explode(":", $resetpass_token_full); + + if ($timestamp && $resetpass_token && + $timestamp >= time() - 15*60*60 && + $resetpass_token == $hash) { + + $result = $this->dbh->query("UPDATE ttrss_users SET resetpass_token = NULL + WHERE id = $id"); + + Pref_Users::resetUserPassword($id, true); + + print "

"."Completed."."

"; + + } else { + print_error("Some of the information provided is missing or incorrect."); + } + } else { + print_error("Some of the information provided is missing or incorrect."); + } + } else { + print_error("Some of the information provided is missing or incorrect."); + } + + print "
+ +
"; + + } else if (!$method) { + print_notice(__("You will need to provide valid account name and email. A password reset link will be sent to your email address.")); + + print "
"; + print ""; + print ""; + + print "
"; + print ""; + print ""; + print "
"; + + print "
"; + print ""; + print ""; + print "
"; + + print "
"; + print ""; + print ""; + print "
"; + + print "

"; + print ""; + + print "

"; + } else if ($method == 'do') { + + $login = $this->dbh->escape_string($_POST["login"]); + $email = $this->dbh->escape_string($_POST["email"]); + $test = $this->dbh->escape_string($_POST["test"]); + + if (($test != 4 && $test != 'four') || !$email || !$login) { + print_error(__('Some of the required form parameters are missing or incorrect.')); + + print "
+ + +
"; + + } else { + + print_notice("Password reset instructions are being sent to your email address."); + + $result = $this->dbh->query("SELECT id FROM ttrss_users + WHERE login = '$login' AND email = '$email'"); + + if ($this->dbh->num_rows($result) != 0) { + $id = $this->dbh->fetch_result($result, 0, "id"); + + if ($id) { + $resetpass_token = sha1(get_random_bytes(128)); + $resetpass_link = get_self_url_prefix() . "/public.php?op=forgotpass&hash=" . $resetpass_token . + "&login=" . urlencode($login); + + require_once 'classes/ttrssmailer.php'; + require_once "lib/MiniTemplator.class.php"; + + $tpl = new MiniTemplator; + + $tpl->readTemplateFromFile("templates/resetpass_link_template.txt"); + + $tpl->setVariable('LOGIN', $login); + $tpl->setVariable('RESETPASS_LINK', $resetpass_link); + + $tpl->addBlock('message'); + + $message = ""; + + $tpl->generateOutputToString($message); + + $mail = new ttrssMailer(); + + $rc = $mail->quickMail($email, $login, + __("[tt-rss] Password reset request"), + $message, false); + + if (!$rc) print_error($mail->ErrorInfo); + + $resetpass_token_full = $this->dbh->escape_string(time() . ":" . $resetpass_token); + + $result = $this->dbh->query("UPDATE ttrss_users + SET resetpass_token = '$resetpass_token_full' + WHERE login = '$login' AND email = '$email'"); + + //Pref_Users::resetUserPassword($id, false); + + print "

"; + + print "

"."Completed."."

"; + } else { + print_error("User ID not found."); + } + + print "
+ +
"; + + } else { + print_error(__("Sorry, login and email combination not found.")); + + print "
+ + +
"; + + } + } + + } + + print "
"; + print ""; + print ""; + + } + + 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(); + exit; + } + + ?> + + Database Updater + + + + + + + + + + + +

+ +
+ + isUpdateRequired()) { + + print "

Performing updates

"; + + print "

Updating to schema version " . SCHEMA_VERSION . "

"; + + print "
    "; + + for ($i = $updater->getSchemaVersion() + 1; $i <= SCHEMA_VERSION; $i++) { + print "
  • Performing update up to version $i..."; + + $result = $updater->performUpdateTo($i); + + if (!$result) { + print "FAILED!
"; + + print_warning("One of the updates failed. Either retry the process or perform updates manually."); + print "

+ +
"; + + break; + } else { + print "OK!"; + } + } + + print ""; + + print_notice("Your Tiny Tiny RSS database is now updated to the latest version."); + + print "

+ +
"; + + } else { + print "

Your database is up to date.

"; + + print "

+ +
"; + } + } else { + if ($updater->isUpdateRequired()) { + + print "

Database update required

"; + + print "

"; + printf("Your Tiny Tiny RSS database needs update to the latest version: %d to %d.", + $updater->getSchemaVersion(), SCHEMA_VERSION); + print "

"; + + print_warning("Please backup your database before proceeding."); + + print "
+ + +
"; + + } else { + + print_notice("Tiny Tiny RSS database is up to date."); + + print "

+ +
"; + + } + } + ?> + +
+ + + diff --git a/classes/iauthmodule.php b/classes/iauthmodule.php new file mode 100644 index 0000000000..d47dbacfb9 --- /dev/null +++ b/classes/iauthmodule.php @@ -0,0 +1,5 @@ + diff --git a/classes/idb.php b/classes/idb.php new file mode 100644 index 0000000000..16f760bf6a --- /dev/null +++ b/classes/idb.php @@ -0,0 +1,13 @@ + diff --git a/classes/ihandler.php b/classes/ihandler.php new file mode 100644 index 0000000000..e3c8a535f6 --- /dev/null +++ b/classes/ihandler.php @@ -0,0 +1,7 @@ + diff --git a/classes/logger.php b/classes/logger.php new file mode 100644 index 0000000000..4a9c1df820 --- /dev/null +++ b/classes/logger.php @@ -0,0 +1,65 @@ + 'E_ERROR', + 2 => 'E_WARNING', + 4 => 'E_PARSE', + 8 => 'E_NOTICE', + 16 => 'E_CORE_ERROR', + 32 => 'E_CORE_WARNING', + 64 => 'E_COMPILE_ERROR', + 128 => 'E_COMPILE_WARNING', + 256 => 'E_USER_ERROR', + 512 => 'E_USER_WARNING', + 1024 => 'E_USER_NOTICE', + 2048 => 'E_STRICT', + 4096 => 'E_RECOVERABLE_ERROR', + 8192 => 'E_DEPRECATED', + 16384 => 'E_USER_DEPRECATED', + 32767 => 'E_ALL'); + + function log_error($errno, $errstr, $file, $line, $context) { + if ($errno == E_NOTICE) return false; + + if ($this->adapter) + return $this->adapter->log_error($errno, $errstr, $file, $line, $context); + else + return false; + } + + function log($string) { + if ($this->adapter) + return $this->adapter->log($string); + else + return false; + } + + private function __clone() { + // + } + + function __construct() { + switch (LOG_DESTINATION) { + case "sql": + $this->adapter = new Logger_SQL(); + break; + case "syslog": + $this->adapter = new Logger_Syslog(); + break; + default: + $this->adapter = false; + } + } + + public static function get() { + if (self::$instance == null) + self::$instance = new self(); + + return self::$instance; + } + +} +?> diff --git a/classes/logger/sql.php b/classes/logger/sql.php new file mode 100644 index 0000000000..c0f8b4598b --- /dev/null +++ b/classes/logger/sql.php @@ -0,0 +1,28 @@ + 117) { + + $errno = Db::get()->escape_string($errno); + $errstr = Db::get()->escape_string($errstr); + $file = Db::get()->escape_string($file); + $line = Db::get()->escape_string($line); + $context = ''; // backtrace is a lot of data which is not really critical to store + //$context = $this->dbh->escape_string(serialize($context)); + + $owner_uid = $_SESSION["uid"] ? $_SESSION["uid"] : "NULL"; + + $result = Db::get()->query( + "INSERT INTO ttrss_error_log + (errno, errstr, filename, lineno, context, owner_uid, created_at) VALUES + ($errno, '$errstr', '$file', '$line', '$context', $owner_uid, NOW())"); + + return Db::get()->affected_rows($result) != 0; + } + + return false; + } + +} +?> diff --git a/classes/logger/syslog.php b/classes/logger/syslog.php new file mode 100644 index 0000000000..b8b5260a04 --- /dev/null +++ b/classes/logger/syslog.php @@ -0,0 +1,31 @@ + diff --git a/classes/opml.php b/classes/opml.php new file mode 100644 index 0000000000..04516dde42 --- /dev/null +++ b/classes/opml.php @@ -0,0 +1,525 @@ +opml_export($output_name, $owner_uid, false, ($show_settings == 1)); + } + + function import() { + $owner_uid = $_SESSION["uid"]; + + header('Content-Type: text/html; charset=utf-8'); + + print " + + + ".__("OPML Utility")." + + + +
+

".__('OPML Utility')."

"; + + add_feed_category("Imported feeds"); + + $this->opml_notice(__("Importing OPML...")); + $this->opml_import($owner_uid); + + print "
+ +
"; + + print "
"; + + + } + + // Export + + private function opml_export_category($owner_uid, $cat_id, $hide_private_feeds=false) { + + if ($cat_id) { + $cat_qpart = "parent_cat = '$cat_id'"; + $feed_cat_qpart = "cat_id = '$cat_id'"; + } else { + $cat_qpart = "parent_cat IS NULL"; + $feed_cat_qpart = "cat_id IS NULL"; + } + + if ($hide_private_feeds) + $hide_qpart = "(private IS false AND auth_login = '' AND auth_pass = '')"; + else + $hide_qpart = "true"; + + $out = ""; + + if ($cat_id) { + $result = $this->dbh->query("SELECT title FROM ttrss_feed_categories WHERE id = '$cat_id' + AND owner_uid = '$owner_uid'"); + $cat_title = htmlspecialchars($this->dbh->fetch_result($result, 0, "title")); + } + + if ($cat_title) $out .= "\n"; + + $result = $this->dbh->query("SELECT id,title + FROM ttrss_feed_categories WHERE + $cat_qpart AND owner_uid = '$owner_uid' ORDER BY order_id, title"); + + while ($line = $this->dbh->fetch_assoc($result)) { + $title = htmlspecialchars($line["title"]); + $out .= $this->opml_export_category($owner_uid, $line["id"], $hide_private_feeds); + } + + $feeds_result = $this->dbh->query("select title, feed_url, site_url + from ttrss_feeds where $feed_cat_qpart AND owner_uid = '$owner_uid' AND $hide_qpart + order by order_id, title"); + + while ($fline = $this->dbh->fetch_assoc($feeds_result)) { + $title = htmlspecialchars($fline["title"]); + $url = htmlspecialchars($fline["feed_url"]); + $site_url = htmlspecialchars($fline["site_url"]); + + if ($site_url) { + $html_url_qpart = "htmlUrl=\"$site_url\""; + } else { + $html_url_qpart = ""; + } + + $out .= "\n"; + } + + if ($cat_title) $out .= "\n"; + + return $out; + } + + function opml_export($name, $owner_uid, $hide_private_feeds=false, $include_settings=true) { + if (!$owner_uid) return; + + if (!isset($_REQUEST["debug"])) { + header("Content-type: application/xml+opml"); + header("Content-Disposition: attachment; filename=" . $name ); + } else { + header("Content-type: text/xml"); + } + + $out = ""; + + $out .= ""; + $out .= " + " . date("r", time()) . " + Tiny Tiny RSS Feed Export + "; + $out .= ""; + + $out .= $this->opml_export_category($owner_uid, false, $hide_private_feeds); + + # export tt-rss settings + + if ($include_settings) { + $out .= ""; + + $result = $this->dbh->query("SELECT pref_name, value FROM ttrss_user_prefs WHERE + profile IS NULL AND owner_uid = " . $_SESSION["uid"] . " ORDER BY pref_name"); + + while ($line = $this->dbh->fetch_assoc($result)) { + $name = $line["pref_name"]; + $value = htmlspecialchars($line["value"]); + + $out .= ""; + } + + $out .= ""; + + $out .= ""; + + $result = $this->dbh->query("SELECT * FROM ttrss_labels2 WHERE + owner_uid = " . $_SESSION['uid']); + + while ($line = $this->dbh->fetch_assoc($result)) { + $name = htmlspecialchars($line['caption']); + $fg_color = htmlspecialchars($line['fg_color']); + $bg_color = htmlspecialchars($line['bg_color']); + + $out .= ""; + + } + + $out .= ""; + + $out .= ""; + + $result = $this->dbh->query("SELECT * FROM ttrss_filters2 + WHERE owner_uid = ".$_SESSION["uid"]." ORDER BY id"); + + while ($line = $this->dbh->fetch_assoc($result)) { + foreach (array('enabled', 'match_any_rule', 'inverse') as $b) { + $line[$b] = sql_bool_to_bool($line[$b]); + } + + $line["rules"] = array(); + $line["actions"] = array(); + + $tmp_result = $this->dbh->query("SELECT * FROM ttrss_filters2_rules + WHERE filter_id = ".$line["id"]); + + while ($tmp_line = $this->dbh->fetch_assoc($tmp_result)) { + unset($tmp_line["id"]); + unset($tmp_line["filter_id"]); + + $cat_filter = sql_bool_to_bool($tmp_line["cat_filter"]); + + if ($cat_filter && $tmp_line["cat_id"] || $tmp_line["feed_id"]) { + $tmp_line["feed"] = getFeedTitle( + $cat_filter ? $tmp_line["cat_id"] : $tmp_line["feed_id"], + $cat_filter); + } else { + $tmp_line["feed"] = ""; + } + + $tmp_line["cat_filter"] = sql_bool_to_bool($tmp_line["cat_filter"]); + $tmp_line["inverse"] = sql_bool_to_bool($tmp_line["inverse"]); + + unset($tmp_line["feed_id"]); + unset($tmp_line["cat_id"]); + + array_push($line["rules"], $tmp_line); + } + + $tmp_result = $this->dbh->query("SELECT * FROM ttrss_filters2_actions + WHERE filter_id = ".$line["id"]); + + while ($tmp_line = $this->dbh->fetch_assoc($tmp_result)) { + unset($tmp_line["id"]); + unset($tmp_line["filter_id"]); + + array_push($line["actions"], $tmp_line); + } + + unset($line["id"]); + unset($line["owner_uid"]); + $filter = json_encode($line); + + $out .= ""; + + } + + + $out .= ""; + } + + $out .= ""; + + // Format output. + $doc = new DOMDocument(); + $doc->formatOutput = true; + $doc->preserveWhiteSpace = false; + $doc->loadXML($out); + + $xpath = new DOMXpath($doc); + $outlines = $xpath->query("//outline[@title]"); + + // cleanup empty categories + foreach ($outlines as $node) { + if ($node->getElementsByTagName('outline')->length == 0) + $node->parentNode->removeChild($node); + } + + $res = $doc->saveXML(); + +/* // saveXML uses a two-space indent. Change to tabs. + $res = preg_replace_callback('/^(?: )+/mu', + create_function( + '$matches', + 'return str_repeat("\t", intval(strlen($matches[0])/2));'), + $res); */ + + print $res; + } + + // Import + + private function opml_import_feed($doc, $node, $cat_id, $owner_uid) { + $attrs = $node->attributes; + + $feed_title = $this->dbh->escape_string(mb_substr($attrs->getNamedItem('text')->nodeValue, 0, 250)); + if (!$feed_title) $feed_title = $this->dbh->escape_string(mb_substr($attrs->getNamedItem('title')->nodeValue, 0, 250)); + + $feed_url = $this->dbh->escape_string($attrs->getNamedItem('xmlUrl')->nodeValue); + if (!$feed_url) $feed_url = $this->dbh->escape_string($attrs->getNamedItem('xmlURL')->nodeValue); + + $site_url = $this->dbh->escape_string(mb_substr($attrs->getNamedItem('htmlUrl')->nodeValue, 0, 250)); + + if ($feed_url && $feed_title) { + $result = $this->dbh->query("SELECT id FROM ttrss_feeds WHERE + feed_url = '$feed_url' AND owner_uid = '$owner_uid'"); + + if ($this->dbh->num_rows($result) == 0) { + #$this->opml_notice("[FEED] [$feed_title/$feed_url] dst_CAT=$cat_id"); + $this->opml_notice(T_sprintf("Adding feed: %s", $feed_title)); + + if (!$cat_id) $cat_id = 'NULL'; + + $query = "INSERT INTO ttrss_feeds + (title, feed_url, owner_uid, cat_id, site_url, order_id) VALUES + ('$feed_title', '$feed_url', '$owner_uid', + $cat_id, '$site_url', 0)"; + $this->dbh->query($query); + + } else { + $this->opml_notice(T_sprintf("Duplicate feed: %s", $feed_title)); + } + } + } + + private function opml_import_label($doc, $node, $owner_uid) { + $attrs = $node->attributes; + $label_name = $this->dbh->escape_string($attrs->getNamedItem('label-name')->nodeValue); + + if ($label_name) { + $fg_color = $this->dbh->escape_string($attrs->getNamedItem('label-fg-color')->nodeValue); + $bg_color = $this->dbh->escape_string($attrs->getNamedItem('label-bg-color')->nodeValue); + + if (!label_find_id($label_name, $_SESSION['uid'])) { + $this->opml_notice(T_sprintf("Adding label %s", htmlspecialchars($label_name))); + label_create($label_name, $fg_color, $bg_color, $owner_uid); + } else { + $this->opml_notice(T_sprintf("Duplicate label: %s", htmlspecialchars($label_name))); + } + } + } + + private function opml_import_preference($doc, $node, $owner_uid) { + $attrs = $node->attributes; + $pref_name = $this->dbh->escape_string($attrs->getNamedItem('pref-name')->nodeValue); + + if ($pref_name) { + $pref_value = $this->dbh->escape_string($attrs->getNamedItem('value')->nodeValue); + + $this->opml_notice(T_sprintf("Setting preference key %s to %s", + $pref_name, $pref_value)); + + set_pref($pref_name, $pref_value); + } + } + + private function opml_import_filter($doc, $node, $owner_uid) { + $attrs = $node->attributes; + + $filter_type = $this->dbh->escape_string($attrs->getNamedItem('filter-type')->nodeValue); + + if ($filter_type == '2') { + $filter = json_decode($node->nodeValue, true); + + if ($filter) { + $match_any_rule = bool_to_sql_bool($filter["match_any_rule"]); + $enabled = bool_to_sql_bool($filter["enabled"]); + $inverse = bool_to_sql_bool($filter["inverse"]); + $title = db_escape_string($filter["title"]); + + $this->dbh->query("BEGIN"); + + $this->dbh->query("INSERT INTO ttrss_filters2 (match_any_rule,enabled,inverse,title,owner_uid) + VALUES ($match_any_rule, $enabled, $inverse, '$title', + ".$_SESSION["uid"].")"); + + $result = $this->dbh->query("SELECT MAX(id) AS id FROM ttrss_filters2 WHERE + owner_uid = ".$_SESSION["uid"]); + $filter_id = $this->dbh->fetch_result($result, 0, "id"); + + if ($filter_id) { + $this->opml_notice(T_sprintf("Adding filter...")); + + foreach ($filter["rules"] as $rule) { + $feed_id = "NULL"; + $cat_id = "NULL"; + + if (!$rule["cat_filter"]) { + $tmp_result = $this->dbh->query("SELECT id FROM ttrss_feeds + WHERE title = '".$this->dbh->escape_string($rule["feed"])."' AND owner_uid = ".$_SESSION["uid"]); + if ($this->dbh->num_rows($tmp_result) > 0) { + $feed_id = $this->dbh->fetch_result($tmp_result, 0, "id"); + } + } else { + $tmp_result = $this->dbh->query("SELECT id FROM ttrss_feed_categories + WHERE title = '".$this->dbh->escape_string($rule["feed"])."' AND owner_uid = ".$_SESSION["uid"]); + + if ($this->dbh->num_rows($tmp_result) > 0) { + $cat_id = $this->dbh->fetch_result($tmp_result, 0, "id"); + } + } + + $cat_filter = bool_to_sql_bool($rule["cat_filter"]); + $reg_exp = $this->dbh->escape_string($rule["reg_exp"]); + $filter_type = (int)$rule["filter_type"]; + $inverse = bool_to_sql_bool($rule["inverse"]); + + $this->dbh->query("INSERT INTO ttrss_filters2_rules (feed_id,cat_id,filter_id,filter_type,reg_exp,cat_filter,inverse) + VALUES ($feed_id, $cat_id, $filter_id, $filter_type, '$reg_exp', $cat_filter,$inverse)"); + } + + foreach ($filter["actions"] as $action) { + + $action_id = (int)$action["action_id"]; + $action_param = $this->dbh->escape_string($action["action_param"]); + + $this->dbh->query("INSERT INTO ttrss_filters2_actions (filter_id,action_id,action_param) + VALUES ($filter_id, $action_id, '$action_param')"); + } + } + + $this->dbh->query("COMMIT"); + } + } + } + + private function opml_import_category($doc, $root_node, $owner_uid, $parent_id) { + $body = $doc->getElementsByTagName('body'); + + $default_cat_id = (int) get_feed_category('Imported feeds', false); + + if ($root_node) { + $cat_title = $this->dbh->escape_string(mb_substr($root_node->attributes->getNamedItem('text')->nodeValue, 0, 250)); + + if (!$cat_title) + $cat_title = $this->dbh->escape_string(mb_substr($root_node->attributes->getNamedItem('title')->nodeValue, 0, 250)); + + if (!in_array($cat_title, array("tt-rss-filters", "tt-rss-labels", "tt-rss-prefs"))) { + $cat_id = get_feed_category($cat_title, $parent_id); + $this->dbh->query("BEGIN"); + if ($cat_id === false) { + add_feed_category($cat_title, $parent_id); + $cat_id = get_feed_category($cat_title, $parent_id); + } + $this->dbh->query("COMMIT"); + } else { + $cat_id = 0; + } + + $outlines = $root_node->childNodes; + + } else { + $xpath = new DOMXpath($doc); + $outlines = $xpath->query("//opml/body/outline"); + + $cat_id = 0; + } + + #$this->opml_notice("[CAT] $cat_title id: $cat_id P_id: $parent_id"); + $this->opml_notice(T_sprintf("Processing category: %s", $cat_title ? $cat_title : __("Uncategorized"))); + + foreach ($outlines as $node) { + if ($node->hasAttributes() && strtolower($node->tagName) == "outline") { + $attrs = $node->attributes; + $node_cat_title = $this->dbh->escape_string($attrs->getNamedItem('text')->nodeValue); + + if (!$node_cat_title) + $node_cat_title = $this->dbh->escape_string($attrs->getNamedItem('title')->nodeValue); + + $node_feed_url = $this->dbh->escape_string($attrs->getNamedItem('xmlUrl')->nodeValue); + + if ($node_cat_title && !$node_feed_url) { + $this->opml_import_category($doc, $node, $owner_uid, $cat_id); + } else { + + if (!$cat_id) { + $dst_cat_id = $default_cat_id; + } else { + $dst_cat_id = $cat_id; + } + + switch ($cat_title) { + case "tt-rss-prefs": + $this->opml_import_preference($doc, $node, $owner_uid); + break; + case "tt-rss-labels": + $this->opml_import_label($doc, $node, $owner_uid); + break; + case "tt-rss-filters": + $this->opml_import_filter($doc, $node, $owner_uid); + break; + default: + $this->opml_import_feed($doc, $node, $dst_cat_id, $owner_uid); + } + } + } + } + } + + function opml_import($owner_uid) { + if (!$owner_uid) return; + + $debug = isset($_REQUEST["debug"]); + $doc = false; + +# if ($debug) $doc = DOMDocument::load("/tmp/test.opml"); + + if ($_FILES['opml_file']['error'] != 0) { + print_error(T_sprintf("Upload failed with error code %d", + $_FILES['opml_file']['error'])); + return; + } + + $tmp_file = false; + + if (is_uploaded_file($_FILES['opml_file']['tmp_name'])) { + $tmp_file = tempnam(CACHE_DIR . '/upload', 'opml'); + + $result = move_uploaded_file($_FILES['opml_file']['tmp_name'], + $tmp_file); + + if (!$result) { + print_error(__("Unable to move uploaded file.")); + return; + } + } else { + print_error(__('Error: please upload OPML file.')); + return; + } + + if (is_file($tmp_file)) { + $doc = new DOMDocument(); + libxml_disable_entity_loader(false); + $doc->load($tmp_file); + libxml_disable_entity_loader(true); + unlink($tmp_file); + } else if (!$doc) { + print_error(__('Error: unable to find moved OPML file.')); + return; + } + + if ($doc) { + $this->opml_import_category($doc, false, $owner_uid, false); + } else { + print_error(__('Error while parsing document.')); + } + } + + private function opml_notice($msg) { + print "$msg
"; + } + + static function opml_publish_url(){ + + $url_path = get_self_url_prefix(); + $url_path .= "/opml.php?op=publish&key=" . + get_feed_access_key('OPML:Publish', false, $_SESSION["uid"]); + + return $url_path; + } + + +} +?> diff --git a/classes/plugin.php b/classes/plugin.php new file mode 100644 index 0000000000..8fbacf363a --- /dev/null +++ b/classes/plugin.php @@ -0,0 +1,30 @@ +dbh = $host->get_dbh(); + $this->host = $host; + } + + function about() { + // version, name, description, author, is_system + return array(1.0, "plugin", "No description", "No author", false); + } + + function get_js() { + return ""; + } + + function get_prefs_js() { + return ""; + } + + function api_version() { + return Plugin::API_VERSION_COMPAT; + } +} +?> diff --git a/classes/pluginhandler.php b/classes/pluginhandler.php new file mode 100644 index 0000000000..5ca5c17d3d --- /dev/null +++ b/classes/pluginhandler.php @@ -0,0 +1,22 @@ +get_plugin($_REQUEST["plugin"]); + + if ($plugin) { + if (method_exists($plugin, $method)) { + $plugin->$method(); + } else { + print error_json(13); + } + } else { + print error_json(14); + } + } +} + +?> diff --git a/classes/pluginhost.php b/classes/pluginhost.php new file mode 100644 index 0000000000..c4ec1871d3 --- /dev/null +++ b/classes/pluginhost.php @@ -0,0 +1,419 @@ +dbh = Db::get(); + + $this->storage = array(); + } + + private function __clone() { + // + } + + public static function getInstance() { + if (self::$instance == null) + self::$instance = new self(); + + return self::$instance; + } + + private function register_plugin($name, $plugin) { + //array_push($this->plugins, $plugin); + $this->plugins[$name] = $plugin; + } + + // needed for compatibility with API 1 + function get_link() { + return false; + } + + function get_dbh() { + return $this->dbh; + } + + function get_plugin_names() { + $names = array(); + + foreach ($this->plugins as $p) { + array_push($names, get_class($p)); + } + + return $names; + } + + function get_plugins() { + return $this->plugins; + } + + function get_plugin($name) { + return $this->plugins[$name]; + } + + function run_hooks($type, $method, $args) { + foreach ($this->get_hooks($type) as $hook) { + $hook->$method($args); + } + } + + function add_hook($type, $sender) { + if (!is_array($this->hooks[$type])) { + $this->hooks[$type] = array(); + } + + array_push($this->hooks[$type], $sender); + } + + function del_hook($type, $sender) { + if (is_array($this->hooks[$type])) { + $key = array_Search($sender, $this->hooks[$type]); + if ($key !== FALSE) { + unset($this->hooks[$type][$key]); + } + } + } + + function get_hooks($type) { + if (isset($this->hooks[$type])) { + return $this->hooks[$type]; + } else { + return array(); + } + } + function load_all($kind, $owner_uid = false) { + + $plugins = array_merge(glob("plugins/*"), glob("plugins.local/*")); + $plugins = array_filter($plugins, "is_dir"); + $plugins = array_map("basename", $plugins); + + asort($plugins); + + $this->load(join(",", $plugins), $kind, $owner_uid); + } + + function load($classlist, $kind, $owner_uid = false) { + $plugins = explode(",", $classlist); + + $this->owner_uid = (int) $owner_uid; + + foreach ($plugins as $class) { + $class = trim($class); + $class_file = strtolower(basename($class)); + + if (!is_dir(__DIR__."/../plugins/$class_file") && + !is_dir(__DIR__."/../plugins.local/$class_file")) continue; + + // try system plugin directory first + $file = __DIR__ . "/../plugins/$class_file/init.php"; + + if (!file_exists($file)) { + $file = __DIR__ . "/../plugins.local/$class_file/init.php"; + } + + if (!isset($this->plugins[$class])) { + if (file_exists($file)) require_once $file; + + if (class_exists($class) && is_subclass_of($class, "Plugin")) { + $plugin = new $class($this); + + $plugin_api = $plugin->api_version(); + + if ($plugin_api < PluginHost::API_VERSION) { + user_error("Plugin $class is not compatible with current API version (need: " . PluginHost::API_VERSION . ", got: $plugin_api)", E_USER_WARNING); + continue; + } + + $this->last_registered = $class; + + switch ($kind) { + case $this::KIND_SYSTEM: + if ($this->is_system($plugin)) { + $plugin->init($this); + $this->register_plugin($class, $plugin); + } + break; + case $this::KIND_USER: + if (!$this->is_system($plugin)) { + $plugin->init($this); + $this->register_plugin($class, $plugin); + } + break; + case $this::KIND_ALL: + $plugin->init($this); + $this->register_plugin($class, $plugin); + break; + } + } + } + } + } + + function is_system($plugin) { + $about = $plugin->about(); + + return @$about[3]; + } + + // only system plugins are allowed to modify routing + function add_handler($handler, $method, $sender) { + $handler = str_replace("-", "_", strtolower($handler)); + $method = strtolower($method); + + if ($this->is_system($sender)) { + if (!is_array($this->handlers[$handler])) { + $this->handlers[$handler] = array(); + } + + $this->handlers[$handler][$method] = $sender; + } + } + + function del_handler($handler, $method, $sender) { + $handler = str_replace("-", "_", strtolower($handler)); + $method = strtolower($method); + + if ($this->is_system($sender)) { + unset($this->handlers[$handler][$method]); + } + } + + function lookup_handler($handler, $method) { + $handler = str_replace("-", "_", strtolower($handler)); + $method = strtolower($method); + + if (is_array($this->handlers[$handler])) { + if (isset($this->handlers[$handler]["*"])) { + return $this->handlers[$handler]["*"]; + } else { + return $this->handlers[$handler][$method]; + } + } + + return false; + } + + function add_command($command, $description, $sender, $suffix = "", $arghelp = "") { + $command = str_replace("-", "_", strtolower($command)); + + $this->commands[$command] = array("description" => $description, + "suffix" => $suffix, + "arghelp" => $arghelp, + "class" => $sender); + } + + function del_command($command) { + $command = "-" . strtolower($command); + + unset($this->commands[$command]); + } + + function lookup_command($command) { + $command = "-" . strtolower($command); + + if (is_array($this->commands[$command])) { + return $this->commands[$command]["class"]; + } else { + return false; + } + + return false; + } + + function get_commands() { + return $this->commands; + } + + function run_commands($args) { + foreach ($this->get_commands() as $command => $data) { + if (isset($args[$command])) { + $command = str_replace("-", "", $command); + $data["class"]->$command($args); + } + } + } + + function load_data($force = false) { + if ($this->owner_uid) { + $result = $this->dbh->query("SELECT name, content FROM ttrss_plugin_storage + WHERE owner_uid = '".$this->owner_uid."'"); + + while ($line = $this->dbh->fetch_assoc($result)) { + $this->storage[$line["name"]] = unserialize($line["content"]); + } + } + } + + private function save_data($plugin) { + if ($this->owner_uid) { + $plugin = $this->dbh->escape_string($plugin); + + $this->dbh->query("BEGIN"); + + $result = $this->dbh->query("SELECT id FROM ttrss_plugin_storage WHERE + owner_uid= '".$this->owner_uid."' AND name = '$plugin'"); + + if (!isset($this->storage[$plugin])) + $this->storage[$plugin] = array(); + + $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' + WHERE owner_uid= '".$this->owner_uid."' AND name = '$plugin'"); + + } else { + $this->dbh->query("INSERT INTO ttrss_plugin_storage + (name,owner_uid,content) VALUES + ('$plugin','".$this->owner_uid."','$content')"); + } + + $this->dbh->query("COMMIT"); + } + } + + function set($sender, $name, $value, $sync = true) { + $idx = get_class($sender); + + if (!isset($this->storage[$idx])) + $this->storage[$idx] = array(); + + $this->storage[$idx][$name] = $value; + + if ($sync) $this->save_data(get_class($sender)); + } + + function get($sender, $name, $default_value = false) { + $idx = get_class($sender); + + if (isset($this->storage[$idx][$name])) { + return $this->storage[$idx][$name]; + } else { + return $default_value; + } + } + + function get_all($sender) { + $idx = get_class($sender); + + return $this->storage[$idx]; + } + + function clear_data($sender) { + if ($this->owner_uid) { + $idx = get_class($sender); + + unset($this->storage[$idx]); + + $this->dbh->query("DELETE FROM ttrss_plugin_storage WHERE name = '$idx' + AND owner_uid = " . $this->owner_uid); + } + } + + function set_debug($debug) { + $this->debug = $debug; + } + + function get_debug() { + return $this->debug; + } + + // Plugin feed functions are *EXPERIMENTAL*! + + // cat_id: only -1 is supported (Special) + function add_feed($cat_id, $title, $icon, $sender) { + if (!$this->feeds[$cat_id]) $this->feeds[$cat_id] = array(); + + $id = count($this->feeds[$cat_id]); + + array_push($this->feeds[$cat_id], + array('id' => $id, 'title' => $title, 'sender' => $sender, 'icon' => $icon)); + + return $id; + } + + function get_feeds($cat_id) { + return $this->feeds[$cat_id]; + } + + // convert feed_id (e.g. -129) to pfeed_id first + function get_feed_handler($pfeed_id) { + foreach ($this->feeds as $cat) { + foreach ($cat as $feed) { + if ($feed['id'] == $pfeed_id) { + return $feed['sender']; + } + } + } + } + + static function pfeed_to_feed_id($label) { + return PLUGIN_FEED_BASE_INDEX - 1 - abs($label); + } + + static function feed_to_pfeed_id($feed) { + return PLUGIN_FEED_BASE_INDEX - 1 + abs($feed); + } + + function add_api_method($name, $sender) { + if ($this->is_system($sender)) { + $this->api_methods[strtolower($name)] = $sender; + } + } + + function get_api_method($name) { + return $this->api_methods[$name]; + } +} +?> diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php new file mode 100644 index 0000000000..d70c1a26ad --- /dev/null +++ b/classes/pref/feeds.php @@ -0,0 +1,1930 @@ +"; + } + + function renamecat() { + $title = $this->dbh->escape_string($_REQUEST['title']); + $id = $this->dbh->escape_string($_REQUEST['id']); + + if ($title) { + $this->dbh->query("UPDATE ttrss_feed_categories SET + title = '$title' WHERE id = '$id' AND owner_uid = " . $_SESSION["uid"]); + } + return; + } + + private function get_category_items($cat_id) { + + if ($_REQUEST['mode'] != 2) + $search = $_SESSION["prefs_feed_search"]; + else + $search = ""; + + if ($search) $search_qpart = " AND LOWER(title) LIKE LOWER('%$search%')"; + + // first one is set by API + $show_empty_cats = $_REQUEST['force_show_empty'] || + ($_REQUEST['mode'] != 2 && !$search); + + $items = array(); + + $result = $this->dbh->query("SELECT id, title FROM ttrss_feed_categories + WHERE owner_uid = " . $_SESSION["uid"] . " AND parent_cat = '$cat_id' ORDER BY order_id, title"); + + while ($line = $this->dbh->fetch_assoc($result)) { + + $cat = array(); + $cat['id'] = 'CAT:' . $line['id']; + $cat['bare_id'] = (int)$line['id']; + $cat['name'] = $line['title']; + $cat['items'] = array(); + $cat['checkbox'] = false; + $cat['type'] = 'category'; + $cat['unread'] = 0; + $cat['child_unread'] = 0; + $cat['auxcounter'] = 0; + $cat['parent_id'] = $cat_id; + + $cat['items'] = $this->get_category_items($line['id']); + + $num_children = $this->calculate_children_count($cat); + $cat['param'] = vsprintf(_ngettext('(%d feed)', '(%d feeds)', $num_children), $num_children); + + if ($num_children > 0 || $show_empty_cats) + array_push($items, $cat); + + } + + $feed_result = $this->dbh->query("SELECT id, title, last_error, + ".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated + FROM ttrss_feeds + WHERE cat_id = '$cat_id' AND owner_uid = ".$_SESSION["uid"]. + "$search_qpart ORDER BY order_id, title"); + + while ($feed_line = $this->dbh->fetch_assoc($feed_result)) { + $feed = array(); + $feed['id'] = 'FEED:' . $feed_line['id']; + $feed['bare_id'] = (int)$feed_line['id']; + $feed['auxcounter'] = 0; + $feed['name'] = $feed_line['title']; + $feed['checkbox'] = false; + $feed['unread'] = 0; + $feed['error'] = $feed_line['last_error']; + $feed['icon'] = getFeedIcon($feed_line['id']); + $feed['param'] = make_local_datetime( + $feed_line['last_updated'], true); + + array_push($items, $feed); + } + + return $items; + } + + function getfeedtree() { + print json_encode($this->makefeedtree()); + } + + function makefeedtree() { + + if ($_REQUEST['mode'] != 2) + $search = $_SESSION["prefs_feed_search"]; + else + $search = ""; + + if ($search) $search_qpart = " AND LOWER(title) LIKE LOWER('%$search%')"; + + $root = array(); + $root['id'] = 'root'; + $root['name'] = __('Feeds'); + $root['items'] = array(); + $root['type'] = 'category'; + + $enable_cats = get_pref('ENABLE_FEED_CATS'); + + if ($_REQUEST['mode'] == 2) { + + if ($enable_cats) { + $cat = $this->feedlist_init_cat(-1); + } else { + $cat['items'] = array(); + } + + foreach (array(-4, -3, -1, -2, 0, -6) as $i) { + array_push($cat['items'], $this->feedlist_init_feed($i)); + } + + /* Plugin feeds for -1 */ + + $feeds = PluginHost::getInstance()->get_feeds(-1); + + if ($feeds) { + foreach ($feeds as $feed) { + $feed_id = PluginHost::pfeed_to_feed_id($feed['id']); + + $item = array(); + $item['id'] = 'FEED:' . $feed_id; + $item['bare_id'] = (int)$feed_id; + $item['auxcounter'] = 0; + $item['name'] = $feed['title']; + $item['checkbox'] = false; + $item['error'] = ''; + $item['icon'] = $feed['icon']; + + $item['param'] = ''; + $item['unread'] = 0; //$feed['sender']->get_unread($feed['id']); + $item['type'] = 'feed'; + + array_push($cat['items'], $item); + } + } + + if ($enable_cats) { + array_push($root['items'], $cat); + } else { + $root['items'] = array_merge($root['items'], $cat['items']); + } + + $result = $this->dbh->query("SELECT * FROM + ttrss_labels2 WHERE owner_uid = ".$_SESSION['uid']." ORDER by caption"); + + if ($this->dbh->num_rows($result) > 0) { + + if (get_pref('ENABLE_FEED_CATS')) { + $cat = $this->feedlist_init_cat(-2); + } else { + $cat['items'] = array(); + } + + while ($line = $this->dbh->fetch_assoc($result)) { + + $label_id = label_to_feed_id($line['id']); + + $feed = $this->feedlist_init_feed($label_id, false, 0); + + $feed['fg_color'] = $line['fg_color']; + $feed['bg_color'] = $line['bg_color']; + + array_push($cat['items'], $feed); + } + + if ($enable_cats) { + array_push($root['items'], $cat); + } else { + $root['items'] = array_merge($root['items'], $cat['items']); + } + } + } + + if ($enable_cats) { + $show_empty_cats = $_REQUEST['force_show_empty'] || + ($_REQUEST['mode'] != 2 && !$search); + + $result = $this->dbh->query("SELECT id, title FROM ttrss_feed_categories + WHERE owner_uid = " . $_SESSION["uid"] . " AND parent_cat IS NULL ORDER BY order_id, title"); + + while ($line = $this->dbh->fetch_assoc($result)) { + $cat = array(); + $cat['id'] = 'CAT:' . $line['id']; + $cat['bare_id'] = (int)$line['id']; + $cat['auxcounter'] = 0; + $cat['name'] = $line['title']; + $cat['items'] = array(); + $cat['checkbox'] = false; + $cat['type'] = 'category'; + $cat['unread'] = 0; + $cat['child_unread'] = 0; + + $cat['items'] = $this->get_category_items($line['id']); + + $num_children = $this->calculate_children_count($cat); + $cat['param'] = vsprintf(_ngettext('(%d feed)', '(%d feeds)', $num_children), $num_children); + + if ($num_children > 0 || $show_empty_cats) + array_push($root['items'], $cat); + + $root['param'] += count($cat['items']); + } + + /* Uncategorized is a special case */ + + $cat = array(); + $cat['id'] = 'CAT:0'; + $cat['bare_id'] = 0; + $cat['auxcounter'] = 0; + $cat['name'] = __("Uncategorized"); + $cat['items'] = array(); + $cat['type'] = 'category'; + $cat['checkbox'] = false; + $cat['unread'] = 0; + $cat['child_unread'] = 0; + + $feed_result = $this->dbh->query("SELECT id, title,last_error, + ".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated + FROM ttrss_feeds + WHERE cat_id IS NULL AND owner_uid = ".$_SESSION["uid"]. + "$search_qpart ORDER BY order_id, title"); + + while ($feed_line = $this->dbh->fetch_assoc($feed_result)) { + $feed = array(); + $feed['id'] = 'FEED:' . $feed_line['id']; + $feed['bare_id'] = (int)$feed_line['id']; + $feed['auxcounter'] = 0; + $feed['name'] = $feed_line['title']; + $feed['checkbox'] = false; + $feed['error'] = $feed_line['last_error']; + $feed['icon'] = getFeedIcon($feed_line['id']); + $feed['param'] = make_local_datetime( + $feed_line['last_updated'], true); + $feed['unread'] = 0; + $feed['type'] = 'feed'; + + array_push($cat['items'], $feed); + } + + $cat['param'] = vsprintf(_ngettext('(%d feed)', '(%d feeds)', count($cat['items'])), count($cat['items'])); + + if (count($cat['items']) > 0 || $show_empty_cats) + array_push($root['items'], $cat); + + $num_children = $this->calculate_children_count($root); + $root['param'] = vsprintf(_ngettext('(%d feed)', '(%d feeds)', $num_children), $num_children); + + } else { + $feed_result = $this->dbh->query("SELECT id, title, last_error, + ".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated + FROM ttrss_feeds + WHERE owner_uid = ".$_SESSION["uid"]. + "$search_qpart ORDER BY order_id, title"); + + while ($feed_line = $this->dbh->fetch_assoc($feed_result)) { + $feed = array(); + $feed['id'] = 'FEED:' . $feed_line['id']; + $feed['bare_id'] = (int)$feed_line['id']; + $feed['auxcounter'] = 0; + $feed['name'] = $feed_line['title']; + $feed['checkbox'] = false; + $feed['error'] = $feed_line['last_error']; + $feed['icon'] = getFeedIcon($feed_line['id']); + $feed['param'] = make_local_datetime( + $feed_line['last_updated'], true); + $feed['unread'] = 0; + $feed['type'] = 'feed'; + + array_push($root['items'], $feed); + } + + $root['param'] = vsprintf(_ngettext('(%d feed)', '(%d feeds)', count($cat['items'])), count($cat['items'])); + } + + $fl = array(); + $fl['identifier'] = 'id'; + $fl['label'] = 'name'; + + if ($_REQUEST['mode'] != 2) { + $fl['items'] = array($root); + } else { + $fl['items'] =& $root['items']; + } + + return $fl; + } + + function catsortreset() { + $this->dbh->query("UPDATE ttrss_feed_categories + SET order_id = 0 WHERE owner_uid = " . $_SESSION["uid"]); + return; + } + + function feedsortreset() { + $this->dbh->query("UPDATE ttrss_feeds + SET order_id = 0 WHERE owner_uid = " . $_SESSION["uid"]); + return; + } + + private function process_category_order(&$data_map, $item_id, $parent_id = false, $nest_level = 0) { + $debug = isset($_REQUEST["debug"]); + + $prefix = ""; + for ($i = 0; $i < $nest_level; $i++) + $prefix .= " "; + + if ($debug) _debug("$prefix C: $item_id P: $parent_id"); + + $bare_item_id = substr($item_id, strpos($item_id, ':')+1); + + if ($item_id != 'root') { + if ($parent_id && $parent_id != 'root') { + $parent_bare_id = substr($parent_id, strpos($parent_id, ':')+1); + $parent_qpart = $this->dbh->escape_string($parent_bare_id); + } else { + $parent_qpart = 'NULL'; + } + + $this->dbh->query("UPDATE ttrss_feed_categories + SET parent_cat = $parent_qpart WHERE id = '$bare_item_id' AND + owner_uid = " . $_SESSION["uid"]); + } + + $order_id = 0; + + $cat = $data_map[$item_id]; + + if ($cat && is_array($cat)) { + foreach ($cat as $item) { + $id = $item['_reference']; + $bare_id = substr($id, strpos($id, ':')+1); + + if ($debug) _debug("$prefix [$order_id] $id/$bare_id"); + + if ($item['_reference']) { + + if (strpos($id, "FEED") === 0) { + + $cat_id = ($item_id != "root") ? + $this->dbh->escape_string($bare_item_id) : "NULL"; + + $cat_qpart = ($cat_id != 0) ? "cat_id = '$cat_id'" : + "cat_id = NULL"; + + $this->dbh->query("UPDATE ttrss_feeds + SET order_id = $order_id, $cat_qpart + WHERE id = '$bare_id' AND + owner_uid = " . $_SESSION["uid"]); + + } else if (strpos($id, "CAT:") === 0) { + $this->process_category_order($data_map, $item['_reference'], $item_id, + $nest_level+1); + + if ($item_id != 'root') { + $parent_qpart = $this->dbh->escape_string($bare_id); + } else { + $parent_qpart = 'NULL'; + } + + $this->dbh->query("UPDATE ttrss_feed_categories + SET order_id = '$order_id' WHERE id = '$bare_id' AND + owner_uid = " . $_SESSION["uid"]); + } + } + + ++$order_id; + } + } + } + + function savefeedorder() { + $data = json_decode($_POST['payload'], true); + + #file_put_contents("/tmp/saveorder.json", $_POST['payload']); + #$data = json_decode(file_get_contents("/tmp/saveorder.json"), true); + + if (!is_array($data['items'])) + $data['items'] = json_decode($data['items'], true); + +# print_r($data['items']); + + if (is_array($data) && is_array($data['items'])) { +# $cat_order_id = 0; + + $data_map = array(); + $root_item = false; + + foreach ($data['items'] as $item) { + +# if ($item['id'] != 'root') { + if (is_array($item['items'])) { + if (isset($item['items']['_reference'])) { + $data_map[$item['id']] = array($item['items']); + } else { + $data_map[$item['id']] =& $item['items']; + } + } + if ($item['id'] == 'root') { + $root_item = $item['id']; + } + } + + $this->process_category_order($data_map, $root_item); + + /* foreach ($data['items'][0]['items'] as $item) { + $id = $item['_reference']; + $bare_id = substr($id, strpos($id, ':')+1); + + ++$cat_order_id; + + if ($bare_id > 0) { + $this->dbh->query("UPDATE ttrss_feed_categories + SET order_id = '$cat_order_id' WHERE id = '$bare_id' AND + owner_uid = " . $_SESSION["uid"]); + } + + $feed_order_id = 0; + + if (is_array($data_map[$id])) { + foreach ($data_map[$id] as $feed) { + $id = $feed['_reference']; + $feed_id = substr($id, strpos($id, ':')+1); + + if ($bare_id != 0) + $cat_query = "cat_id = '$bare_id'"; + else + $cat_query = "cat_id = NULL"; + + $this->dbh->query("UPDATE ttrss_feeds + SET order_id = '$feed_order_id', + $cat_query + WHERE id = '$feed_id' AND + owner_uid = " . $_SESSION["uid"]); + + ++$feed_order_id; + } + } + } */ + } + + return; + } + + function removeicon() { + $feed_id = $this->dbh->escape_string($_REQUEST["feed_id"]); + + $result = $this->dbh->query("SELECT id FROM ttrss_feeds + WHERE id = '$feed_id' AND owner_uid = ". $_SESSION["uid"]); + + if ($this->dbh->num_rows($result) != 0) { + @unlink(ICONS_DIR . "/$feed_id.ico"); + + $this->dbh->query("UPDATE ttrss_feeds SET favicon_avg_color = NULL + where id = '$feed_id'"); + } + + return; + } + + function uploadicon() { + header("Content-type: text/html"); + + $tmp_file = false; + + if (is_uploaded_file($_FILES['icon_file']['tmp_name'])) { + $tmp_file = tempnam(CACHE_DIR . '/upload', 'icon'); + + $result = move_uploaded_file($_FILES['icon_file']['tmp_name'], + $tmp_file); + + if (!$result) { + return; + } + } else { + return; + } + + $icon_file = $tmp_file; + $feed_id = $this->dbh->escape_string($_REQUEST["feed_id"]); + + if (is_file($icon_file) && $feed_id) { + if (filesize($icon_file) < 65535) { + + $result = $this->dbh->query("SELECT id FROM ttrss_feeds + WHERE id = '$feed_id' AND owner_uid = ". $_SESSION["uid"]); + + if ($this->dbh->num_rows($result) != 0) { + @unlink(ICONS_DIR . "/$feed_id.ico"); + if (rename($icon_file, ICONS_DIR . "/$feed_id.ico")) { + $this->dbh->query("UPDATE ttrss_feeds SET + favicon_avg_color = '' + WHERE id = '$feed_id'"); + + $rc = 0; + } + } else { + $rc = 2; + } + } else { + $rc = 1; + } + } else { + $rc = 2; + } + + @unlink($icon_file); + + print ""; + return; + } + + function editfeed() { + global $purge_intervals; + global $update_intervals; + + $feed_id = $this->dbh->escape_string($_REQUEST["id"]); + + $result = $this->dbh->query( + "SELECT * FROM ttrss_feeds WHERE id = '$feed_id' AND + owner_uid = " . $_SESSION["uid"]); + + $auth_pass_encrypted = sql_bool_to_bool($this->dbh->fetch_result($result, 0, + "auth_pass_encrypted")); + + $title = htmlspecialchars($this->dbh->fetch_result($result, + 0, "title")); + + print ""; + print ""; + print ""; + + print "
".__("Feed")."
"; + print "
"; + + /* Title */ + + print ""; + + /* Feed URL */ + + $feed_url = $this->dbh->fetch_result($result, 0, "feed_url"); + $feed_url = htmlspecialchars($this->dbh->fetch_result($result, + 0, "feed_url")); + + print "
"; + + print __('URL:') . " "; + print ""; + + $last_error = $this->dbh->fetch_result($result, 0, "last_error"); + + if ($last_error) { + print " \"(error)\""; + + } + + /* Category */ + + if (get_pref('ENABLE_FEED_CATS')) { + + $cat_id = $this->dbh->fetch_result($result, 0, "cat_id"); + + print "
"; + + print __('Place in category:') . " "; + + print_feed_cat_select("cat_id", $cat_id, + 'dojoType="dijit.form.Select"'); + } + + print "
"; + + print "
".__("Update")."
"; + print "
"; + + /* Update Interval */ + + $update_interval = $this->dbh->fetch_result($result, 0, "update_interval"); + + print_select_hash("update_interval", $update_interval, $update_intervals, + 'dojoType="dijit.form.Select"'); + + /* Purge intl */ + + $purge_interval = $this->dbh->fetch_result($result, 0, "purge_interval"); + + print "
"; + print __('Article purging:') . " "; + + print_select_hash("purge_interval", $purge_interval, $purge_intervals, + 'dojoType="dijit.form.Select" ' . + ((FORCE_ARTICLE_PURGE == 0) ? "" : 'disabled="1"')); + + print "
"; + print "
".__("Authentication")."
"; + print "
"; + + $auth_login = htmlspecialchars($this->dbh->fetch_result($result, 0, "auth_login")); + + print "
"; + + $auth_pass = $this->dbh->fetch_result($result, 0, "auth_pass"); + + if ($auth_pass_encrypted) { + require_once "crypt.php"; + $auth_pass = decrypt_string($auth_pass); + } + + $auth_pass = htmlspecialchars($auth_pass); + + print ""; + + print "
+ ".__('Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds.')." +
"; + + print "
"; + print "
".__("Options")."
"; + print "
"; + + $private = sql_bool_to_bool($this->dbh->fetch_result($result, 0, "private")); + + if ($private) { + $checked = "checked=\"1\""; + } else { + $checked = ""; + } + + print " "; + + $include_in_digest = sql_bool_to_bool($this->dbh->fetch_result($result, 0, "include_in_digest")); + + if ($include_in_digest) { + $checked = "checked=\"1\""; + } else { + $checked = ""; + } + + print "
 "; + + + $always_display_enclosures = sql_bool_to_bool($this->dbh->fetch_result($result, 0, "always_display_enclosures")); + + if ($always_display_enclosures) { + $checked = "checked"; + } else { + $checked = ""; + } + + print "
 "; + + $hide_images = sql_bool_to_bool($this->dbh->fetch_result($result, 0, "hide_images")); + + if ($hide_images) { + $checked = "checked=\"1\""; + } else { + $checked = ""; + } + + print "
 "; + + $cache_images = sql_bool_to_bool($this->dbh->fetch_result($result, 0, "cache_images")); + + if ($cache_images) { + $checked = "checked=\"1\""; + } else { + $checked = ""; + } + + print "
 "; + + $mark_unread_on_update = sql_bool_to_bool($this->dbh->fetch_result($result, 0, "mark_unread_on_update")); + + if ($mark_unread_on_update) { + $checked = "checked"; + } else { + $checked = ""; + } + + print "
 "; + + print "
"; + + /* Icon */ + + print "
".__("Icon")."
"; + print "
"; + + print ""; + + print "
+ + + + + + +
"; + + print "
"; + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_EDIT_FEED, + "hook_prefs_edit_feed", $feed_id); + + $title = htmlspecialchars($title, ENT_QUOTES); + + print "
+
+ "; + + if (PUBSUBHUBBUB_ENABLED) { + $pubsub_state = $this->dbh->fetch_result($result, 0, "pubsub_state"); + $pubsub_btn_disabled = ($pubsub_state == 2) ? "" : "disabled=\"1\""; + + print ""; + } + + print "
"; + + print "
". + __('Resets PubSubHubbub subscription status for push-enabled feeds.')."
"; + + print " + +
"; + + return; + } + + function editfeeds() { + global $purge_intervals; + global $update_intervals; + + $feed_ids = $this->dbh->escape_string($_REQUEST["ids"]); + + print_notice("Enable the options you wish to apply using checkboxes on the right:"); + + print "

"; + + print ""; + print ""; + print ""; + + print "

".__("Feed")."
"; + print "
"; + + /* Category */ + + if (get_pref('ENABLE_FEED_CATS')) { + + print __('Place in category:') . " "; + + print_feed_cat_select("cat_id", false, + 'disabled="1" dojoType="dijit.form.Select"'); + + $this->batch_edit_cbox("cat_id"); + + } + + print "
"; + + print "
".__("Update")."
"; + print "
"; + + /* Update Interval */ + + print_select_hash("update_interval", "", $update_intervals, + 'disabled="1" dojoType="dijit.form.Select"'); + + $this->batch_edit_cbox("update_interval"); + + /* Purge intl */ + + if (FORCE_ARTICLE_PURGE == 0) { + + print "
"; + + print __('Article purging:') . " "; + + print_select_hash("purge_interval", "", $purge_intervals, + 'disabled="1" dojoType="dijit.form.Select"'); + + $this->batch_edit_cbox("purge_interval"); + } + + print "
"; + print "
".__("Authentication")."
"; + print "
"; + + print ""; + + $this->batch_edit_cbox("auth_login"); + + print "
"; + + $this->batch_edit_cbox("auth_pass"); + + print "
"; + print "
".__("Options")."
"; + print "
"; + + print " "; + + print " "; $this->batch_edit_cbox("private", "private_l"); + + print "
 "; + + print " "; $this->batch_edit_cbox("include_in_digest", "include_in_digest_l"); + + print "
 "; + + print " "; $this->batch_edit_cbox("always_display_enclosures", "always_display_enclosures_l"); + + print "
 "; + + print " "; $this->batch_edit_cbox("hide_images", "hide_images_l"); + + print "
 "; + + print " "; $this->batch_edit_cbox("cache_images", "cache_images_l"); + + print "
 "; + + print " "; $this->batch_edit_cbox("mark_unread_on_update", "mark_unread_on_update_l"); + + print "
"; + + print "
+ + +
"; + + return; + } + + function batchEditSave() { + return $this->editsaveops(true); + } + + function editSave() { + return $this->editsaveops(false); + } + + function editsaveops($batch) { + + $feed_title = $this->dbh->escape_string(trim($_POST["title"])); + $feed_link = $this->dbh->escape_string(trim($_POST["feed_url"])); + $upd_intl = (int) $this->dbh->escape_string($_POST["update_interval"]); + $purge_intl = (int) $this->dbh->escape_string($_POST["purge_interval"]); + $feed_id = (int) $this->dbh->escape_string($_POST["id"]); /* editSave */ + $feed_ids = $this->dbh->escape_string($_POST["ids"]); /* batchEditSave */ + $cat_id = (int) $this->dbh->escape_string($_POST["cat_id"]); + $auth_login = $this->dbh->escape_string(trim($_POST["auth_login"])); + $auth_pass = trim($_POST["auth_pass"]); + $private = checkbox_to_sql_bool($this->dbh->escape_string($_POST["private"])); + $include_in_digest = checkbox_to_sql_bool( + $this->dbh->escape_string($_POST["include_in_digest"])); + $cache_images = checkbox_to_sql_bool( + $this->dbh->escape_string($_POST["cache_images"])); + $hide_images = checkbox_to_sql_bool( + $this->dbh->escape_string($_POST["hide_images"])); + $always_display_enclosures = checkbox_to_sql_bool( + $this->dbh->escape_string($_POST["always_display_enclosures"])); + + $mark_unread_on_update = checkbox_to_sql_bool( + $this->dbh->escape_string($_POST["mark_unread_on_update"])); + + if (strlen(FEED_CRYPT_KEY) > 0) { + require_once "crypt.php"; + $auth_pass = substr(encrypt_string($auth_pass), 0, 250); + $auth_pass_encrypted = 'true'; + } else { + $auth_pass_encrypted = 'false'; + } + + $auth_pass = $this->dbh->escape_string($auth_pass); + + if (get_pref('ENABLE_FEED_CATS')) { + if ($cat_id && $cat_id != 0) { + $category_qpart = "cat_id = '$cat_id',"; + $category_qpart_nocomma = "cat_id = '$cat_id'"; + } else { + $category_qpart = 'cat_id = NULL,'; + $category_qpart_nocomma = 'cat_id = NULL'; + } + } else { + $category_qpart = ""; + $category_qpart_nocomma = ""; + } + + if (!$batch) { + + $this->dbh->query("UPDATE ttrss_feeds SET + $category_qpart + title = '$feed_title', feed_url = '$feed_link', + update_interval = '$upd_intl', + purge_interval = '$purge_intl', + auth_login = '$auth_login', + auth_pass = '$auth_pass', + auth_pass_encrypted = $auth_pass_encrypted, + private = $private, + cache_images = $cache_images, + hide_images = $hide_images, + include_in_digest = $include_in_digest, + always_display_enclosures = $always_display_enclosures, + mark_unread_on_update = $mark_unread_on_update + WHERE id = '$feed_id' AND owner_uid = " . $_SESSION["uid"]); + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_SAVE_FEED, + "hook_prefs_save_feed", $feed_id); + + } else { + $feed_data = array(); + + foreach (array_keys($_POST) as $k) { + if ($k != "op" && $k != "method" && $k != "ids") { + $feed_data[$k] = $_POST[$k]; + } + } + + $this->dbh->query("BEGIN"); + + foreach (array_keys($feed_data) as $k) { + + $qpart = ""; + + switch ($k) { + case "title": + $qpart = "title = '$feed_title'"; + break; + + case "feed_url": + $qpart = "feed_url = '$feed_link'"; + break; + + case "update_interval": + $qpart = "update_interval = '$upd_intl'"; + break; + + case "purge_interval": + $qpart = "purge_interval = '$purge_intl'"; + break; + + case "auth_login": + $qpart = "auth_login = '$auth_login'"; + break; + + case "auth_pass": + $qpart = "auth_pass = '$auth_pass' AND + auth_pass_encrypted = $auth_pass_encrypted"; + break; + + case "private": + $qpart = "private = $private"; + break; + + case "include_in_digest": + $qpart = "include_in_digest = $include_in_digest"; + break; + + case "always_display_enclosures": + $qpart = "always_display_enclosures = $always_display_enclosures"; + break; + + case "mark_unread_on_update": + $qpart = "mark_unread_on_update = $mark_unread_on_update"; + break; + + case "cache_images": + $qpart = "cache_images = $cache_images"; + break; + + case "hide_images": + $qpart = "hide_images = $hide_images"; + break; + + case "cat_id": + $qpart = $category_qpart_nocomma; + break; + + } + + if ($qpart) { + $this->dbh->query( + "UPDATE ttrss_feeds SET $qpart WHERE id IN ($feed_ids) + AND owner_uid = " . $_SESSION["uid"]); + print "
"; + } + } + + $this->dbh->query("COMMIT"); + } + return; + } + + function resetPubSub() { + + $ids = $this->dbh->escape_string($_REQUEST["ids"]); + + $this->dbh->query("UPDATE ttrss_feeds SET pubsub_state = 0 WHERE id IN ($ids) + AND owner_uid = " . $_SESSION["uid"]); + + return; + } + + function remove() { + + $ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"])); + + foreach ($ids as $id) { + Pref_Feeds::remove_feed($id, $_SESSION["uid"]); + } + + return; + } + + function clear() { + $id = $this->dbh->escape_string($_REQUEST["id"]); + $this->clear_feed_articles($id); + } + + function rescore() { + require_once "rssfuncs.php"; + + $ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"])); + + foreach ($ids as $id) { + + $filters = load_filters($id, $_SESSION["uid"], 6); + + $result = $this->dbh->query("SELECT + title, content, link, ref_id, author,". + SUBSTRING_FOR_DATE."(updated, 1, 19) AS updated + FROM + ttrss_user_entries, ttrss_entries + WHERE ref_id = id AND feed_id = '$id' AND + owner_uid = " .$_SESSION['uid']." + "); + + $scores = array(); + + while ($line = $this->dbh->fetch_assoc($result)) { + + $tags = get_article_tags($line["ref_id"]); + + $article_filters = get_article_filters($filters, $line['title'], + $line['content'], $line['link'], strtotime($line['updated']), + $line['author'], $tags); + + $new_score = calculate_article_score($article_filters); + + if (!$scores[$new_score]) $scores[$new_score] = array(); + + array_push($scores[$new_score], $line['ref_id']); + } + + foreach (array_keys($scores) as $s) { + if ($s > 1000) { + $this->dbh->query("UPDATE ttrss_user_entries SET score = '$s', + marked = true WHERE + ref_id IN (" . join(',', $scores[$s]) . ")"); + } else if ($s < -500) { + $this->dbh->query("UPDATE ttrss_user_entries SET score = '$s', + unread = false WHERE + ref_id IN (" . join(',', $scores[$s]) . ")"); + } else { + $this->dbh->query("UPDATE ttrss_user_entries SET score = '$s' WHERE + ref_id IN (" . join(',', $scores[$s]) . ")"); + } + } + } + + print __("All done."); + + } + + function rescoreAll() { + + $result = $this->dbh->query( + "SELECT id FROM ttrss_feeds WHERE owner_uid = " . $_SESSION['uid']); + + while ($feed_line = $this->dbh->fetch_assoc($result)) { + + $id = $feed_line["id"]; + + $filters = load_filters($id, $_SESSION["uid"], 6); + + $tmp_result = $this->dbh->query("SELECT + title, content, link, ref_id, author,". + SUBSTRING_FOR_DATE."(updated, 1, 19) AS updated + FROM + ttrss_user_entries, ttrss_entries + WHERE ref_id = id AND feed_id = '$id' AND + owner_uid = " .$_SESSION['uid']." + "); + + $scores = array(); + + while ($line = $this->dbh->fetch_assoc($tmp_result)) { + + $tags = get_article_tags($line["ref_id"]); + + $article_filters = get_article_filters($filters, $line['title'], + $line['content'], $line['link'], strtotime($line['updated']), + $line['author'], $tags); + + $new_score = calculate_article_score($article_filters); + + if (!$scores[$new_score]) $scores[$new_score] = array(); + + array_push($scores[$new_score], $line['ref_id']); + } + + foreach (array_keys($scores) as $s) { + if ($s > 1000) { + $this->dbh->query("UPDATE ttrss_user_entries SET score = '$s', + marked = true WHERE + ref_id IN (" . join(',', $scores[$s]) . ")"); + } else { + $this->dbh->query("UPDATE ttrss_user_entries SET score = '$s' WHERE + ref_id IN (" . join(',', $scores[$s]) . ")"); + } + } + } + + print __("All done."); + + } + + function categorize() { + $ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"])); + + $cat_id = $this->dbh->escape_string($_REQUEST["cat_id"]); + + if ($cat_id == 0) { + $cat_id_qpart = 'NULL'; + } else { + $cat_id_qpart = "'$cat_id'"; + } + + $this->dbh->query("BEGIN"); + + foreach ($ids as $id) { + + $this->dbh->query("UPDATE ttrss_feeds SET cat_id = $cat_id_qpart + WHERE id = '$id' + AND owner_uid = " . $_SESSION["uid"]); + + } + + $this->dbh->query("COMMIT"); + } + + function removeCat() { + $ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"])); + foreach ($ids as $id) { + $this->remove_feed_category($id, $_SESSION["uid"]); + } + } + + function addCat() { + $feed_cat = $this->dbh->escape_string(trim($_REQUEST["cat"])); + + add_feed_category($feed_cat); + } + + function index() { + + print "
"; + print "
"; + + $result = $this->dbh->query("SELECT COUNT(id) AS num_errors + FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ".$_SESSION["uid"]); + + $num_errors = $this->dbh->fetch_result($result, 0, "num_errors"); + + if ($num_errors > 0) { + + $error_button = ""; + } + + if (DB_TYPE == "pgsql") { + $interval_qpart = "NOW() - INTERVAL '3 months'"; + } else { + $interval_qpart = "DATE_SUB(NOW(), INTERVAL 3 MONTH)"; + } + + // could be performance-intensive and prevent feeds pref-panel from showing + if (!defined('_DISABLE_INACTIVE_FEEDS') || !_DISABLE_INACTIVE_FEEDS) { + $result = $this->dbh->query("SELECT COUNT(*) AS num_inactive FROM ttrss_feeds WHERE + (SELECT MAX(updated) FROM ttrss_entries, ttrss_user_entries WHERE + ttrss_entries.id = ref_id AND + ttrss_user_entries.feed_id = ttrss_feeds.id) < $interval_qpart AND + ttrss_feeds.owner_uid = ".$_SESSION["uid"]); + + $num_inactive = $this->dbh->fetch_result($result, 0, "num_inactive"); + } else { + $num_inactive = 0; + } + + if ($num_inactive > 0) { + $inactive_button = ""; + } + + $feed_search = $this->dbh->escape_string($_REQUEST["search"]); + + if (array_key_exists("search", $_REQUEST)) { + $_SESSION["prefs_feed_search"] = $feed_search; + } else { + $feed_search = $_SESSION["prefs_feed_search"]; + } + + print '
'; + + print "
"; #toolbar + + print "
+ + +
"; + + print "
". + "" . __('Select').""; + print "
"; + print "
".__('All')."
"; + print "
".__('None')."
"; + print "
"; + + print "
". + "" . __('Feeds').""; + print "
"; + print "
".__('Subscribe to feed')."
"; + print "
".__('Edit selected feeds')."
"; + print "
".__('Reset sort order')."
"; + print "
".__('Batch subscribe')."
"; + print "
" + .__('Unsubscribe')."
"; + print "
"; + + if (get_pref('ENABLE_FEED_CATS')) { + print "
". + "" . __('Categories').""; + print "
"; + print "
".__('Add category')."
"; + print "
".__('Reset sort order')."
"; + print "
".__('Remove selected')."
"; + print "
"; + + } + + print $error_button; + print $inactive_button; + + if (defined('_ENABLE_FEED_DEBUGGING')) { + + print ""; + + } + + print "
"; # toolbar + + //print '
'; + print '
'; + + print "
+ ". + __("Loading, please wait...")."
"; + + print "
+
+
+
+
+ + +
"; + +# print "
+# ".__('Hint: you can drag feeds and categories around.')." +#
"; + + print '
'; + print '
'; + + print "
"; # feeds pane + + print "
"; + + print_notice(__("Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings.") . __("Only main settings profile can be migrated using OPML.")); + + print ""; + + print "
+   + + + "; + + print "
"; + + print "

" . __('Filename:') . + "  " . + __('Include settings') . ""; + + print "

"; + + print "
"; + + print "

".__('Your OPML can be published publicly and can be subscribed by anyone who knows the URL below.') . " "; + + print __("Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds.") . "

"; + + print " "; + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB_SECTION, + "hook_prefs_tab_section", "prefFeedsOPML"); + + print "
"; # pane + + if (strpos($_SERVER['HTTP_USER_AGENT'], "Firefox") !== false) { + + print "
"; + + print_notice(__('This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below.')); + + print "

"; + + print ""; + + print "

"; + + print "
"; # pane + } + + print "
"; + + print_notice(__('Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below.')); + + $rss_url = '-2::' . htmlspecialchars(get_self_url_prefix() . + "/public.php?op=rss&id=-2&view-mode=all_articles");; + + print "

"; + + print " "; + + print " "; + + print "

"; + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB_SECTION, + "hook_prefs_tab_section", "prefFeedsPublishedGenerated"); + + print "
"; #pane + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB, + "hook_prefs_tab", "prefFeeds"); + + print "
"; #container + } + + private function feedlist_init_cat($cat_id) { + $obj = array(); + $cat_id = (int) $cat_id; + + if ($cat_id > 0) { + $cat_unread = ccache_find($cat_id, $_SESSION["uid"], true); + } else if ($cat_id == 0 || $cat_id == -2) { + $cat_unread = getCategoryUnread($cat_id); + } + + $obj['id'] = 'CAT:' . $cat_id; + $obj['items'] = array(); + $obj['name'] = getCategoryTitle($cat_id); + $obj['type'] = 'category'; + $obj['unread'] = (int) $cat_unread; + $obj['bare_id'] = $cat_id; + + return $obj; + } + + private function feedlist_init_feed($feed_id, $title = false, $unread = false, $error = '', $updated = '') { + $obj = array(); + $feed_id = (int) $feed_id; + + if (!$title) + $title = getFeedTitle($feed_id, false); + + if ($unread === false) + $unread = getFeedUnread($feed_id, false); + + $obj['id'] = 'FEED:' . $feed_id; + $obj['name'] = $title; + $obj['unread'] = (int) $unread; + $obj['type'] = 'feed'; + $obj['error'] = $error; + $obj['updated'] = $updated; + $obj['icon'] = getFeedIcon($feed_id); + $obj['bare_id'] = $feed_id; + $obj['auxcounter'] = 0; + + return $obj; + } + + function inactiveFeeds() { + + if (DB_TYPE == "pgsql") { + $interval_qpart = "NOW() - INTERVAL '3 months'"; + } else { + $interval_qpart = "DATE_SUB(NOW(), INTERVAL 3 MONTH)"; + } + + $result = $this->dbh->query("SELECT ttrss_feeds.title, ttrss_feeds.site_url, + ttrss_feeds.feed_url, ttrss_feeds.id, MAX(updated) AS last_article + FROM ttrss_feeds, ttrss_entries, ttrss_user_entries WHERE + (SELECT MAX(updated) FROM ttrss_entries, ttrss_user_entries WHERE + ttrss_entries.id = ref_id AND + ttrss_user_entries.feed_id = ttrss_feeds.id) < $interval_qpart + AND ttrss_feeds.owner_uid = ".$_SESSION["uid"]." AND + ttrss_user_entries.feed_id = ttrss_feeds.id AND + ttrss_entries.id = ref_id + GROUP BY ttrss_feeds.title, ttrss_feeds.id, ttrss_feeds.site_url, ttrss_feeds.feed_url + ORDER BY last_article"); + + print ""; + + print "
"; + print "
". + "" . __('Select').""; + print "
"; + print "
".__('All')."
"; + print "
".__('None')."
"; + print "
"; + print "
"; #toolbar + + print "
"; + + print ""; + + $lnum = 1; + + while ($line = $this->dbh->fetch_assoc($result)) { + + $feed_id = $line["id"]; + $this_row_id = "id=\"FUPDD-$feed_id\""; + + # class needed for selectTableRows() + print ""; + + # id needed for selectTableRows() + print ""; + print ""; + print ""; + + ++$lnum; + } + + print "
"; + + print "". + htmlspecialchars($line["title"]).""; + + print ""; + print make_local_datetime($line['last_article'], false); + print "
"; + print "
"; + + print "
"; + print "
"; + print " "; + print "
"; + + print ""; + + print "
"; + + } + + function feedsWithErrors() { + $result = $this->dbh->query("SELECT id,title,feed_url,last_error,site_url + FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ".$_SESSION["uid"]); + + print "
"; + print "
". + "" . __('Select').""; + print "
"; + print "
".__('All')."
"; + print "
".__('None')."
"; + print "
"; + print "
"; #toolbar + + print "
"; + + print ""; + + $lnum = 1; + + while ($line = $this->dbh->fetch_assoc($result)) { + + $feed_id = $line["id"]; + $this_row_id = "id=\"FERDD-$feed_id\""; + + # class needed for selectTableRows() + print ""; + + # id needed for selectTableRows() + print ""; + print ""; + print ""; + + ++$lnum; + } + + print "
"; + + print "". + htmlspecialchars($line["title"]).": "; + + print ""; + print htmlspecialchars($line["last_error"]); + print ""; + + print "
"; + print "
"; + + print "
"; + print "
"; + print " "; + print "
"; + + print ""; + + print "
"; + } + + /** + * Purge a feed contents, marked articles excepted. + * + * @param mixed $link The database connection. + * @param integer $id The id of the feed to purge. + * @return void + */ + private function clear_feed_articles($id) { + + if ($id != 0) { + $result = $this->dbh->query("DELETE FROM ttrss_user_entries + WHERE feed_id = '$id' AND marked = false AND owner_uid = " . $_SESSION["uid"]); + } else { + $result = $this->dbh->query("DELETE FROM ttrss_user_entries + WHERE feed_id IS NULL AND marked = false AND owner_uid = " . $_SESSION["uid"]); + } + + $result = $this->dbh->query("DELETE FROM ttrss_entries WHERE + (SELECT COUNT(int_id) FROM ttrss_user_entries WHERE ref_id = id) = 0"); + + ccache_update($id, $_SESSION['uid']); + } // function clear_feed_articles + + private function remove_feed_category($id, $owner_uid) { + + $this->dbh->query("DELETE FROM ttrss_feed_categories + WHERE id = '$id' AND owner_uid = $owner_uid"); + + ccache_remove($id, $owner_uid, true); + } + + static function remove_feed($id, $owner_uid) { + + if ($id > 0) { + + /* save starred articles in Archived feed */ + + db_query("BEGIN"); + + /* prepare feed if necessary */ + + $result = db_query("SELECT feed_url FROM ttrss_feeds WHERE id = $id + AND owner_uid = $owner_uid"); + + $feed_url = db_escape_string(db_fetch_result($result, 0, "feed_url")); + + $result = db_query("SELECT id FROM ttrss_archived_feeds + WHERE feed_url = '$feed_url' AND owner_uid = $owner_uid"); + + if (db_num_rows($result) == 0) { + $result = db_query("SELECT MAX(id) AS id FROM ttrss_archived_feeds"); + $new_feed_id = (int)db_fetch_result($result, 0, "id") + 1; + + db_query("INSERT INTO ttrss_archived_feeds + (id, owner_uid, title, feed_url, site_url) + SELECT $new_feed_id, owner_uid, title, feed_url, site_url from ttrss_feeds + WHERE id = '$id'"); + + $archive_id = $new_feed_id; + } else { + $archive_id = db_fetch_result($result, 0, "id"); + } + + db_query("UPDATE ttrss_user_entries SET feed_id = NULL, + orig_feed_id = '$archive_id' WHERE feed_id = '$id' AND + marked = true AND owner_uid = $owner_uid"); + + /* Remove access key for the feed */ + + db_query("DELETE FROM ttrss_access_keys WHERE + feed_id = '$id' AND owner_uid = $owner_uid"); + + /* remove the feed */ + + db_query("DELETE FROM ttrss_feeds + WHERE id = '$id' AND owner_uid = $owner_uid"); + + db_query("COMMIT"); + + if (file_exists(ICONS_DIR . "/$id.ico")) { + unlink(ICONS_DIR . "/$id.ico"); + } + + ccache_remove($id, $owner_uid); + + } else { + label_remove(feed_to_label_id($id), $owner_uid); + //ccache_remove($id, $owner_uid); don't think labels are cached + } + } + + function batchSubscribe() { + print ""; + print ""; + + print "
+ ".__("Add one valid RSS feed per line (no feed detection is done)")." + "; + if (get_pref('ENABLE_FEED_CATS')) { + print __('Place in category:') . " "; + print_feed_cat_select("cat", false, 'dojoType="dijit.form.Select"'); + } + print "
"; + print ""; + + print "
"; + + print ""; + + print "
"; + + print "
+ +
"; + + print ""; + + print "
"; + + print "
+ + +
"; + } + + function batchAddFeeds() { + $cat_id = $this->dbh->escape_string($_REQUEST['cat']); + $feeds = explode("\n", $_REQUEST['feeds']); + $login = $this->dbh->escape_string($_REQUEST['login']); + $pass = trim($_REQUEST['pass']); + + foreach ($feeds as $feed) { + $feed = $this->dbh->escape_string(trim($feed)); + + if (validate_feed_url($feed)) { + + $this->dbh->query("BEGIN"); + + if ($cat_id == "0" || !$cat_id) { + $cat_qpart = "NULL"; + } else { + $cat_qpart = "'$cat_id'"; + } + + $result = $this->dbh->query( + "SELECT id FROM ttrss_feeds + WHERE feed_url = '$feed' AND owner_uid = ".$_SESSION["uid"]); + + if (strlen(FEED_CRYPT_KEY) > 0) { + require_once "crypt.php"; + $pass = substr(encrypt_string($pass), 0, 250); + $auth_pass_encrypted = 'true'; + } else { + $auth_pass_encrypted = 'false'; + } + + $pass = $this->dbh->escape_string($pass); + + if ($this->dbh->num_rows($result) == 0) { + $result = $this->dbh->query( + "INSERT INTO ttrss_feeds + (owner_uid,feed_url,title,cat_id,auth_login,auth_pass,update_method,auth_pass_encrypted) + VALUES ('".$_SESSION["uid"]."', '$feed', + '[Unknown]', $cat_qpart, '$login', '$pass', 0, $auth_pass_encrypted)"); + } + + $this->dbh->query("COMMIT"); + } + } + } + + function regenOPMLKey() { + $this->update_feed_access_key('OPML:Publish', + false, $_SESSION["uid"]); + + $new_link = Opml::opml_publish_url(); + + print json_encode(array("link" => $new_link)); + } + + function regenFeedKey() { + $feed_id = $this->dbh->escape_string($_REQUEST['id']); + $is_cat = $this->dbh->escape_string($_REQUEST['is_cat']) == "true"; + + $new_key = $this->update_feed_access_key($feed_id, $is_cat); + + print json_encode(array("link" => $new_key)); + } + + + private function update_feed_access_key($feed_id, $is_cat, $owner_uid = false) { + if (!$owner_uid) $owner_uid = $_SESSION["uid"]; + + $sql_is_cat = bool_to_sql_bool($is_cat); + + $result = $this->dbh->query("SELECT access_key FROM ttrss_access_keys + WHERE feed_id = '$feed_id' AND is_cat = $sql_is_cat + AND owner_uid = " . $owner_uid); + + if ($this->dbh->num_rows($result) == 1) { + $key = $this->dbh->escape_string(uniqid(base_convert(rand(), 10, 36))); + + $this->dbh->query("UPDATE ttrss_access_keys SET access_key = '$key' + WHERE feed_id = '$feed_id' AND is_cat = $sql_is_cat + AND owner_uid = " . $owner_uid); + + return $key; + + } else { + return get_feed_access_key($feed_id, $is_cat, $owner_uid); + } + } + + // Silent + function clearKeys() { + $this->dbh->query("DELETE FROM ttrss_access_keys WHERE + owner_uid = " . $_SESSION["uid"]); + } + + private function calculate_children_count($cat) { + $c = 0; + + foreach ($cat['items'] as $child) { + if ($child['type'] == 'category') { + $c += $this->calculate_children_count($child); + } else { + $c += 1; + } + } + + return $c; + } + +} +?> diff --git a/classes/pref/filters.php b/classes/pref/filters.php new file mode 100644 index 0000000000..2c039e5df4 --- /dev/null +++ b/classes/pref/filters.php @@ -0,0 +1,1138 @@ +dbh->query("UPDATE ttrss_filters2 + SET order_id = 0 WHERE owner_uid = " . $_SESSION["uid"]); + return; + } + + function savefilterorder() { + $data = json_decode($_POST['payload'], true); + + #file_put_contents("/tmp/saveorder.json", $_POST['payload']); + #$data = json_decode(file_get_contents("/tmp/saveorder.json"), true); + + if (!is_array($data['items'])) + $data['items'] = json_decode($data['items'], true); + + $index = 0; + + if (is_array($data) && is_array($data['items'])) { + foreach ($data['items'][0]['items'] as $item) { + $filter_id = (int) str_replace("FILTER:", "", $item['_reference']); + + if ($filter_id > 0) { + + $this->dbh->query("UPDATE ttrss_filters2 SET + order_id = $index WHERE id = '$filter_id' AND + owner_uid = " .$_SESSION["uid"]); + + ++$index; + } + } + } + + return; + } + + + function testFilter() { + $filter = array(); + + $filter["enabled"] = true; + $filter["match_any_rule"] = sql_bool_to_bool( + checkbox_to_sql_bool($this->dbh->escape_string($_REQUEST["match_any_rule"]))); + $filter["inverse"] = sql_bool_to_bool( + checkbox_to_sql_bool($this->dbh->escape_string($_REQUEST["inverse"]))); + + $filter["rules"] = array(); + $filter["actions"] = array("dummy-action"); + + $result = $this->dbh->query("SELECT id,name FROM ttrss_filter_types"); + + $filter_types = array(); + while ($line = $this->dbh->fetch_assoc($result)) { + $filter_types[$line["id"]] = $line["name"]; + } + + $scope_qparts = array(); + + $rctr = 0; + foreach ($_REQUEST["rule"] AS $r) { + $rule = json_decode($r, true); + + if ($rule && $rctr < 5) { + $rule["type"] = $filter_types[$rule["filter_type"]]; + unset($rule["filter_type"]); + + if (strpos($rule["feed_id"], "CAT:") === 0) { + $rule["cat_id"] = (int) substr($rule["feed_id"], 4); + unset($rule["feed_id"]); + } + + if (isset($rule["feed_id"]) && $rule['feed_id'] > 0) { + array_push($scope_qparts, "feed_id = " . $rule["feed_id"]); + } + + if (isset($rule["cat_id"])) { + array_push($scope_qparts, "cat_id = " . $rule["cat_id"]); + } + + array_push($filter["rules"], $rule); + + ++$rctr; + } else { + break; + } + } + + $found = 0; + $offset = 0; + $limit = 30; + $started = time(); + + print __("Articles matching this filter:"); + + require_once "include/rssfuncs.php"; + + print "
"; + print ""; + + $glue = $filter['match_any_rule'] ? " AND " : "OR "; + $scope_qpart = join($glue, $scope_qparts); + + if (!$scope_qpart) $scope_qpart = "true"; + + while ($found < $limit && $offset < $limit * 10 && time() - $started < ini_get("max_execution_time") * 0.7) { + + $result = db_query("SELECT ttrss_entries.id, + ttrss_entries.title, + ttrss_feeds.id AS feed_id, + ttrss_feeds.title AS feed_title, + ttrss_feed_categories.id AS cat_id, + content, + link, + author, + tag_cache + FROM + ttrss_entries, ttrss_user_entries + LEFT JOIN ttrss_feeds ON (feed_id = ttrss_feeds.id) + LEFT JOIN ttrss_feed_categories ON (ttrss_feeds.cat_id = ttrss_feed_categories.id) + WHERE + ref_id = ttrss_entries.id AND + ($scope_qpart) AND + ttrss_user_entries.owner_uid = " . $_SESSION["uid"] . " + ORDER BY date_entered DESC LIMIT $limit OFFSET $offset"); + + while ($line = db_fetch_assoc($result)) { + + $rc = get_article_filters(array($filter), $line['title'], $line['content'], $line['link'], + false, $line['author'], explode(",", $line['tag_cache'])); + + if (count($rc) > 0) { + + $line["content_preview"] = truncate_string(strip_tags($line["content"]), 100, '...'); + + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) { + $line = $p->hook_query_headlines($line, 100); + } + + $content_preview = $line["content_preview"]; + + if ($line["feed_title"]) $feed_title = "(" . $line["feed_title"] . ")"; + + print ""; + + print ""; + print ""; + + $found++; + } + } + + $offset += $limit; + } + + if ($found == 0) { + print "
"; + + /*foreach ($filter['rules'] as $rule) { + $reg_exp = $rule['reg_exp']; + $reg_exp = str_replace('/', '\/', $rule["reg_exp"]); + + $line["title"] = preg_replace("/($reg_exp)/i", + "$1", $line["title"]); + + $content_preview = preg_replace("/($reg_exp)/i", + "$1", $content_preview); + }*/ + + print $line["title"]; + print "
" . $feed_title . "
"; + print "
" . $content_preview . "
"; + print " " . mb_substr($line["date_entered"], 0, 16); + + print "
" . + __("No recent articles matching this filter have been found."); + } + + print "
"; + + print "
"; + print ""; + print "
"; + + } + + private function getfilterrules_concise($filter_id) { + $result = $this->dbh->query("SELECT reg_exp, + inverse, + feed_id, + cat_id, + cat_filter, + ttrss_filter_types.description AS field + FROM + ttrss_filters2_rules, ttrss_filter_types + WHERE + filter_id = '$filter_id' AND filter_type = ttrss_filter_types.id"); + + $rv = ""; + + while ($line = $this->dbh->fetch_assoc($result)) { + + $where = sql_bool_to_bool($line["cat_filter"]) ? + getCategoryTitle($line["cat_id"]) : + ($line["feed_id"] ? + getFeedTitle($line["feed_id"]) : __("All feeds")); + +# $where = $line["cat_id"] . "/" . $line["feed_id"]; + + $inverse = sql_bool_to_bool($line["inverse"]) ? "inverse" : ""; + + $rv .= "" . T_sprintf("%s on %s in %s %s", + strip_tags($line["reg_exp"]), + $line["field"], + $where, + sql_bool_to_bool($line["inverse"]) ? __("(inverse)") : "") . ""; + } + + return $rv; + } + + function getfiltertree() { + $root = array(); + $root['id'] = 'root'; + $root['name'] = __('Filters'); + $root['items'] = array(); + + $filter_search = $_SESSION["prefs_filter_search"]; + + $result = $this->dbh->query("SELECT *, + (SELECT action_param FROM ttrss_filters2_actions + WHERE filter_id = ttrss_filters2.id ORDER BY id LIMIT 1) AS action_param, + (SELECT action_id FROM ttrss_filters2_actions + WHERE filter_id = ttrss_filters2.id ORDER BY id LIMIT 1) AS action_id, + (SELECT description FROM ttrss_filter_actions + WHERE id = (SELECT action_id FROM ttrss_filters2_actions + WHERE filter_id = ttrss_filters2.id ORDER BY id LIMIT 1)) AS action_name, + (SELECT reg_exp FROM ttrss_filters2_rules + WHERE filter_id = ttrss_filters2.id ORDER BY id LIMIT 1) AS reg_exp + FROM ttrss_filters2 WHERE + owner_uid = ".$_SESSION["uid"]." ORDER BY order_id, title"); + + + $folder = array(); + $folder['items'] = array(); + + while ($line = $this->dbh->fetch_assoc($result)) { + + $name = $this->getFilterName($line["id"]); + + $match_ok = false; + if ($filter_search) { + $rules_result = $this->dbh->query( + "SELECT reg_exp FROM ttrss_filters2_rules WHERE filter_id = ".$line["id"]); + + while ($rule_line = $this->dbh->fetch_assoc($rules_result)) { + if (mb_strpos($rule_line['reg_exp'], $filter_search) !== false) { + $match_ok = true; + break; + } + } + } + + if ($line['action_id'] == 7) { + $label_result = $this->dbh->query("SELECT fg_color, bg_color + FROM ttrss_labels2 WHERE caption = '".$this->dbh->escape_string($line['action_param'])."' AND + owner_uid = " . $_SESSION["uid"]); + + if ($this->dbh->num_rows($label_result) > 0) { + $fg_color = $this->dbh->fetch_result($label_result, 0, "fg_color"); + $bg_color = $this->dbh->fetch_result($label_result, 0, "bg_color"); + + $name[1] = "α" . $name[1]; + } + } + + $filter = array(); + $filter['id'] = 'FILTER:' . $line['id']; + $filter['bare_id'] = $line['id']; + $filter['name'] = $name[0]; + $filter['param'] = $name[1]; + $filter['checkbox'] = false; + $filter['enabled'] = sql_bool_to_bool($line["enabled"]); + $filter['rules'] = $this->getfilterrules_concise($line['id']); + + if (!$filter_search || $match_ok) { + array_push($folder['items'], $filter); + } + } + + /* if (count($folder['items']) > 0) { + array_push($root['items'], $folder); + } */ + + $root['items'] = $folder['items']; + + $fl = array(); + $fl['identifier'] = 'id'; + $fl['label'] = 'name'; + $fl['items'] = array($root); + + print json_encode($fl); + return; + } + + function edit() { + + $filter_id = $this->dbh->escape_string($_REQUEST["id"]); + + $result = $this->dbh->query( + "SELECT * FROM ttrss_filters2 WHERE id = '$filter_id' AND owner_uid = " . $_SESSION["uid"]); + + $enabled = sql_bool_to_bool($this->dbh->fetch_result($result, 0, "enabled")); + $match_any_rule = sql_bool_to_bool($this->dbh->fetch_result($result, 0, "match_any_rule")); + $inverse = sql_bool_to_bool($this->dbh->fetch_result($result, 0, "inverse")); + $title = htmlspecialchars($this->dbh->fetch_result($result, 0, "title")); + + print "
"; + + print ""; + print ""; + print ""; + print ""; + + print "
".__("Caption")."
"; + + print ""; + + print ""; + + print "
".__("Match")."
"; + + print "
"; + + print "
". + "" . __('Select').""; + print "
"; + print "
".__('All')."
"; + print "
".__('None')."
"; + print "
"; + + print " "; + + print " "; + + print "
"; + + print "
    "; + + $rules_result = $this->dbh->query("SELECT * FROM ttrss_filters2_rules + WHERE filter_id = '$filter_id' ORDER BY reg_exp, id"); + + while ($line = $this->dbh->fetch_assoc($rules_result)) { + if (sql_bool_to_bool($line["cat_filter"])) { + $line["feed_id"] = "CAT:" . (int)$line["cat_id"]; + } + + unset($line["cat_filter"]); + unset($line["cat_id"]); + unset($line["filter_id"]); + unset($line["id"]); + if (!sql_bool_to_bool($line["inverse"])) unset($line["inverse"]); + + $data = htmlspecialchars(json_encode($line)); + + print "
  • ". + "".$this->getRuleName($line)."". + "
  • "; + } + + print "
"; + + print ""; + + print "
".__("Apply actions")."
"; + + print "
"; + + print "
". + "" . __('Select').""; + print "
"; + print "
".__('All')."
"; + print "
".__('None')."
"; + print "
"; + + print " "; + + print " "; + + print "
"; + + print "
    "; + + $actions_result = $this->dbh->query("SELECT * FROM ttrss_filters2_actions + WHERE filter_id = '$filter_id' ORDER BY id"); + + while ($line = $this->dbh->fetch_assoc($actions_result)) { + $line["action_param_label"] = $line["action_param"]; + + unset($line["filter_id"]); + unset($line["id"]); + + $data = htmlspecialchars(json_encode($line)); + + print "
  • ". + "".$this->getActionName($line)."". + "
  • "; + } + + print "
"; + + print ""; + + if ($enabled) { + $checked = "checked=\"1\""; + } else { + $checked = ""; + } + + print " + "; + + if ($match_any_rule) { + $checked = "checked=\"1\""; + } else { + $checked = ""; + } + + print "
+ "; + + if ($inverse) { + $checked = "checked=\"1\""; + } else { + $checked = ""; + } + + print "
+ "; + + print "

"; + + print "

"; + + print "
"; + print ""; + print "
"; + + print " "; + + print " "; + + print ""; + + print "
"; + } + + private function getRuleName($rule) { + if (!$rule) $rule = json_decode($_REQUEST["rule"], true); + + $feed_id = $rule["feed_id"]; + + if (strpos($feed_id, "CAT:") === 0) { + $feed_id = (int) substr($feed_id, 4); + $feed = getCategoryTitle($feed_id); + } else { + $feed_id = (int) $feed_id; + + if ($rule["feed_id"]) + $feed = getFeedTitle((int)$rule["feed_id"]); + else + $feed = __("All feeds"); + } + + $result = $this->dbh->query("SELECT description FROM ttrss_filter_types + WHERE id = ".(int)$rule["filter_type"]); + $filter_type = $this->dbh->fetch_result($result, 0, "description"); + + $inverse = isset($rule["inverse"]) ? "inverse" : ""; + + return "" . + T_sprintf("%s on %s in %s %s", strip_tags($rule["reg_exp"]), + $filter_type, $feed, isset($rule["inverse"]) ? __("(inverse)") : "") . ""; + } + + function printRuleName() { + print $this->getRuleName(json_decode($_REQUEST["rule"], true)); + } + + private function getActionName($action) { + $result = $this->dbh->query("SELECT description FROM + ttrss_filter_actions WHERE id = " .(int)$action["action_id"]); + + $title = __($this->dbh->fetch_result($result, 0, "description")); + + if ($action["action_id"] == 4 || $action["action_id"] == 6 || + $action["action_id"] == 7) + $title .= ": " . $action["action_param"]; + + return $title; + } + + function printActionName() { + print $this->getActionName(json_decode($_REQUEST["action"], true)); + } + + function editSave() { + if ($_REQUEST["savemode"] && $_REQUEST["savemode"] == "test") { + return $this->testFilter(); + } + +# print_r($_REQUEST); + + $filter_id = $this->dbh->escape_string($_REQUEST["id"]); + $enabled = checkbox_to_sql_bool($this->dbh->escape_string($_REQUEST["enabled"])); + $match_any_rule = checkbox_to_sql_bool($this->dbh->escape_string($_REQUEST["match_any_rule"])); + $inverse = checkbox_to_sql_bool($this->dbh->escape_string($_REQUEST["inverse"])); + $title = $this->dbh->escape_string($_REQUEST["title"]); + + $this->dbh->query("UPDATE ttrss_filters2 SET enabled = $enabled, + match_any_rule = $match_any_rule, + inverse = $inverse, + title = '$title' + WHERE id = '$filter_id' + AND owner_uid = ". $_SESSION["uid"]); + + $this->saveRulesAndActions($filter_id); + + } + + function remove() { + + $ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"])); + + foreach ($ids as $id) { + $this->dbh->query("DELETE FROM ttrss_filters2 WHERE id = '$id' AND owner_uid = ". $_SESSION["uid"]); + } + } + + private function saveRulesAndActions($filter_id) { + + $this->dbh->query("DELETE FROM ttrss_filters2_rules WHERE filter_id = '$filter_id'"); + $this->dbh->query("DELETE FROM ttrss_filters2_actions WHERE filter_id = '$filter_id'"); + + if ($filter_id) { + /* create rules */ + + $rules = array(); + $actions = array(); + + foreach ($_REQUEST["rule"] as $rule) { + $rule = json_decode($rule, true); + unset($rule["id"]); + + if (array_search($rule, $rules) === false) { + array_push($rules, $rule); + } + } + + foreach ($_REQUEST["action"] as $action) { + $action = json_decode($action, true); + unset($action["id"]); + + if (array_search($action, $actions) === false) { + array_push($actions, $action); + } + } + + foreach ($rules as $rule) { + if ($rule) { + + $reg_exp = strip_tags($this->dbh->escape_string(trim($rule["reg_exp"]))); + $inverse = isset($rule["inverse"]) ? "true" : "false"; + + $filter_type = (int) $this->dbh->escape_string(trim($rule["filter_type"])); + $feed_id = $this->dbh->escape_string(trim($rule["feed_id"])); + + if (strpos($feed_id, "CAT:") === 0) { + + $cat_filter = bool_to_sql_bool(true); + $cat_id = (int) substr($feed_id, 4); + $feed_id = "NULL"; + + if (!$cat_id) $cat_id = "NULL"; // Uncategorized + } else { + $cat_filter = bool_to_sql_bool(false); + $feed_id = (int) $feed_id; + $cat_id = "NULL"; + + if (!$feed_id) $feed_id = "NULL"; // Uncategorized + } + + $query = "INSERT INTO ttrss_filters2_rules + (filter_id, reg_exp,filter_type,feed_id,cat_id,cat_filter,inverse) VALUES + ('$filter_id', '$reg_exp', '$filter_type', $feed_id, $cat_id, $cat_filter, $inverse)"; + + $this->dbh->query($query); + } + } + + foreach ($actions as $action) { + if ($action) { + + $action_id = (int) $this->dbh->escape_string($action["action_id"]); + $action_param = $this->dbh->escape_string($action["action_param"]); + $action_param_label = $this->dbh->escape_string($action["action_param_label"]); + + if ($action_id == 7) { + $action_param = $action_param_label; + } + + if ($action_id == 6) { + $action_param = (int) str_replace("+", "", $action_param); + } + + $query = "INSERT INTO ttrss_filters2_actions + (filter_id, action_id, action_param) VALUES + ('$filter_id', '$action_id', '$action_param')"; + + $this->dbh->query($query); + } + } + } + + + } + + function add() { + if ($_REQUEST["savemode"] && $_REQUEST["savemode"] == "test") { + return $this->testFilter(); + } + +# print_r($_REQUEST); + + $enabled = checkbox_to_sql_bool($_REQUEST["enabled"]); + $match_any_rule = checkbox_to_sql_bool($_REQUEST["match_any_rule"]); + $title = $this->dbh->escape_string($_REQUEST["title"]); + $inverse = checkbox_to_sql_bool($_REQUEST["inverse"]); + + $this->dbh->query("BEGIN"); + + /* create base filter */ + + $result = $this->dbh->query("INSERT INTO ttrss_filters2 + (owner_uid, match_any_rule, enabled, title, inverse) VALUES + (".$_SESSION["uid"].",$match_any_rule,$enabled, '$title', $inverse)"); + + $result = $this->dbh->query("SELECT MAX(id) AS id FROM ttrss_filters2 + WHERE owner_uid = ".$_SESSION["uid"]); + + $filter_id = $this->dbh->fetch_result($result, 0, "id"); + + $this->saveRulesAndActions($filter_id); + + $this->dbh->query("COMMIT"); + } + + function index() { + + $sort = $this->dbh->escape_string($_REQUEST["sort"]); + + if (!$sort || $sort == "undefined") { + $sort = "reg_exp"; + } + + $filter_search = $this->dbh->escape_string($_REQUEST["search"]); + + if (array_key_exists("search", $_REQUEST)) { + $_SESSION["prefs_filter_search"] = $filter_search; + } else { + $filter_search = $_SESSION["prefs_filter_search"]; + } + + print "
"; + print "
"; + print "
"; + + $filter_search = $this->dbh->escape_string($_REQUEST["search"]); + + if (array_key_exists("search", $_REQUEST)) { + $_SESSION["prefs_filter_search"] = $filter_search; + } else { + $filter_search = $_SESSION["prefs_filter_search"]; + } + + print "
+ + +
"; + + print "
". + "" . __('Select').""; + print "
"; + print "
".__('All')."
"; + print "
".__('None')."
"; + print "
"; + + print " "; + + print " "; + + print " "; + + print " "; + + + print " "; + + if (defined('_ENABLE_FEED_DEBUGGING')) { + print " "; + } + + print "
"; # toolbar + print "
"; # toolbar-frame + print "
"; + + print "
+ ". + __("Loading, please wait...")."
"; + + print "
+
+
+
+
+ + + +
"; + + print "
"; #pane + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB, + "hook_prefs_tab", "prefFilters"); + + print "
"; #container + + } + + function newfilter() { + + print ""; + + print ""; + print ""; + print ""; + + print "
".__("Caption")."
"; + + print ""; + + print "
".__("Match")."
"; + + print "
"; + + print "
". + "" . __('Select').""; + print "
"; + print "
".__('All')."
"; + print "
".__('None')."
"; + print "
"; + + print " "; + + print " "; + + print "
"; + + print "
    "; +# print "
  • No rules
  • "; + print "
"; + + print ""; + + print "
".__("Apply actions")."
"; + + print "
"; + + print "
". + "" . __('Select').""; + print "
"; + print "
".__('All')."
"; + print "
".__('None')."
"; + print "
"; + + print " "; + + print " "; + + print "
"; + + print "
    "; +# print "
  • No actions
  • "; + print "
"; + +/* print "
".__("Options")."
"; + print "
"; */ + + print " + "; + + print "
+ "; + + print "
+ "; + +// print "
"; + + print "
"; + + print " "; + + print " "; + + print ""; + + print "
"; + + } + + function newrule() { + $rule = json_decode($_REQUEST["rule"], true); + + if ($rule) { + $reg_exp = htmlspecialchars($rule["reg_exp"]); + $filter_type = $rule["filter_type"]; + $feed_id = $rule["feed_id"]; + $inverse_checked = isset($rule["inverse"]) ? "checked" : ""; + } else { + $reg_exp = ""; + $filter_type = 1; + $feed_id = 0; + $inverse_checked = ""; + } + + if (strpos($feed_id, "CAT:") === 0) { + $feed_id = substr($feed_id, 4); + $cat_filter = true; + } else { + $cat_filter = false; + } + + + print ""; + + $result = $this->dbh->query("SELECT id,description + FROM ttrss_filter_types WHERE id != 5 ORDER BY description"); + + $filter_types = array(); + + while ($line = $this->dbh->fetch_assoc($result)) { + $filter_types[$line["id"]] = __($line["description"]); + } + + print "
".__("Match")."
"; + + print "
"; + + print ""; + + print "
"; + print ""; + print ""; + + print "
" . __("on field") . " "; + print_select_hash("filter_type", $filter_type, $filter_types, + 'dojoType="dijit.form.Select"'); + + print "
"; + + print __("in") . " "; + + print ""; + print_feed_select("feed_id", + $cat_filter ? "CAT:$feed_id" : $feed_id, + 'dojoType="dijit.form.FilteringSelect"'); + print ""; + + print "
"; + + print "
"; + + print ""; + + + print " "; + + print ""; + + print "
"; + + print "
"; + } + + function newaction() { + $action = json_decode($_REQUEST["action"], true); + + if ($action) { + $action_param = $this->dbh->escape_string($action["action_param"]); + $action_id = (int)$action["action_id"]; + } else { + $action_param = ""; + $action_id = 0; + } + + print "
"; + + print "
".__("Perform Action")."
"; + + print "
"; + + print ""; + + $param_box_hidden = ($action_id == 7 || $action_id == 4 || $action_id == 6) ? + "" : "display : none"; + + $param_hidden = ($action_id == 4 || $action_id == 6) ? + "" : "display : none"; + + $label_param_hidden = ($action_id == 7) ? "" : "display : none"; + + print ""; + print " " . __("with parameters:") . " "; + print ""; + + print_label_select("action_param_label", $action_param, + "id=\"filterDlg_actionParamLabel\" style=\"$label_param_hidden\" + dojoType=\"dijit.form.Select\""); + + print ""; + + print " "; // tiny layout hack + + print "
"; + + print "
"; + + print " "; + + print ""; + + print "
"; + + print "
"; + } + + private function getFilterName($id) { + + $result = $this->dbh->query( + "SELECT title,COUNT(DISTINCT r.id) AS num_rules,COUNT(DISTINCT a.id) AS num_actions + FROM ttrss_filters2 AS f LEFT JOIN ttrss_filters2_rules AS r + ON (r.filter_id = f.id) + LEFT JOIN ttrss_filters2_actions AS a + ON (a.filter_id = f.id) WHERE f.id = '$id' GROUP BY f.title"); + + $title = $this->dbh->fetch_result($result, 0, "title"); + $num_rules = $this->dbh->fetch_result($result, 0, "num_rules"); + $num_actions = $this->dbh->fetch_result($result, 0, "num_actions"); + + if (!$title) $title = __("[No caption]"); + + $title = sprintf(_ngettext("%s (%d rule)", "%s (%d rules)", $num_rules), $title, $num_rules); + + $result = $this->dbh->query( + "SELECT * FROM ttrss_filters2_actions WHERE filter_id = '$id' ORDER BY id LIMIT 1"); + + $actions = ""; + + if ($this->dbh->num_rows($result) > 0) { + $line = $this->dbh->fetch_assoc($result); + $actions = $this->getActionName($line); + + $num_actions -= 1; + } + + if ($num_actions > 0) + $actions = sprintf(_ngettext("%s (+%d action)", "%s (+%d actions)", $num_actions), $actions, $num_actions); + + return array($title, $actions); + } + + function join() { + $ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"])); + + if (count($ids) > 1) { + $base_id = array_shift($ids); + $ids_str = join(",", $ids); + + $this->dbh->query("BEGIN"); + $this->dbh->query("UPDATE ttrss_filters2_rules + SET filter_id = '$base_id' WHERE filter_id IN ($ids_str)"); + $this->dbh->query("UPDATE ttrss_filters2_actions + SET filter_id = '$base_id' WHERE filter_id IN ($ids_str)"); + + $this->dbh->query("DELETE FROM ttrss_filters2 WHERE id IN ($ids_str)"); + $this->dbh->query("UPDATE ttrss_filters2 SET match_any_rule = true WHERE id = '$base_id'"); + + $this->dbh->query("COMMIT"); + + $this->optimizeFilter($base_id); + + } + } + + private function optimizeFilter($id) { + $this->dbh->query("BEGIN"); + $result = $this->dbh->query("SELECT * FROM ttrss_filters2_actions + WHERE filter_id = '$id'"); + + $tmp = array(); + $dupe_ids = array(); + + while ($line = $this->dbh->fetch_assoc($result)) { + $id = $line["id"]; + unset($line["id"]); + + if (array_search($line, $tmp) === false) { + array_push($tmp, $line); + } else { + array_push($dupe_ids, $id); + } + } + + if (count($dupe_ids) > 0) { + $ids_str = join(",", $dupe_ids); + $this->dbh->query("DELETE FROM ttrss_filters2_actions + WHERE id IN ($ids_str)"); + } + + $result = $this->dbh->query("SELECT * FROM ttrss_filters2_rules + WHERE filter_id = '$id'"); + + $tmp = array(); + $dupe_ids = array(); + + while ($line = $this->dbh->fetch_assoc($result)) { + $id = $line["id"]; + unset($line["id"]); + + if (array_search($line, $tmp) === false) { + array_push($tmp, $line); + } else { + array_push($dupe_ids, $id); + } + } + + if (count($dupe_ids) > 0) { + $ids_str = join(",", $dupe_ids); + $this->dbh->query("DELETE FROM ttrss_filters2_rules + WHERE id IN ($ids_str)"); + } + + $this->dbh->query("COMMIT"); + } +} +?> diff --git a/classes/pref/labels.php b/classes/pref/labels.php new file mode 100644 index 0000000000..2ad152c2d4 --- /dev/null +++ b/classes/pref/labels.php @@ -0,0 +1,330 @@ +dbh->escape_string($_REQUEST['id']); + + $result = $this->dbh->query("SELECT * FROM ttrss_labels2 WHERE + id = '$label_id' AND owner_uid = " . $_SESSION["uid"]); + + $line = $this->dbh->fetch_assoc($result); + + print ""; + print ""; + print ""; + + print "
".__("Caption")."
"; + + print "
"; + + $fg_color = $line['fg_color']; + $bg_color = $line['bg_color']; + + print "α"; + + print ""; + + print "
"; + print "
" . __("Colors") . "
"; + print "
"; + + print ""; + + print ""; + + print "
".__("Foreground:")."".__("Background:"). + "
"; + + print ""; + print ""; + + print "
+ +
"; + print ""; + + print "
"; + + print "
+ +
"; + print ""; + + print "
"; + print "
"; + +# print ""; + + print "
"; + print ""; + print ""; + print "
"; + + return; + } + + function getlabeltree() { + $root = array(); + $root['id'] = 'root'; + $root['name'] = __('Labels'); + $root['items'] = array(); + + $result = $this->dbh->query("SELECT * + FROM ttrss_labels2 + WHERE owner_uid = ".$_SESSION["uid"]." + ORDER BY caption"); + + while ($line = $this->dbh->fetch_assoc($result)) { + $label = array(); + $label['id'] = 'LABEL:' . $line['id']; + $label['bare_id'] = $line['id']; + $label['name'] = $line['caption']; + $label['fg_color'] = $line['fg_color']; + $label['bg_color'] = $line['bg_color']; + $label['type'] = 'label'; + $label['checkbox'] = false; + + array_push($root['items'], $label); + } + + $fl = array(); + $fl['identifier'] = 'id'; + $fl['label'] = 'name'; + $fl['items'] = array($root); + + print json_encode($fl); + return; + } + + function colorset() { + $kind = $this->dbh->escape_string($_REQUEST["kind"]); + $ids = explode(',', $this->dbh->escape_string($_REQUEST["ids"])); + $color = $this->dbh->escape_string($_REQUEST["color"]); + $fg = $this->dbh->escape_string($_REQUEST["fg"]); + $bg = $this->dbh->escape_string($_REQUEST["bg"]); + + foreach ($ids as $id) { + + if ($kind == "fg" || $kind == "bg") { + $this->dbh->query("UPDATE ttrss_labels2 SET + ${kind}_color = '$color' WHERE id = '$id' + AND owner_uid = " . $_SESSION["uid"]); + } else { + $this->dbh->query("UPDATE ttrss_labels2 SET + fg_color = '$fg', bg_color = '$bg' WHERE id = '$id' + AND owner_uid = " . $_SESSION["uid"]); + } + + $caption = $this->dbh->escape_string(label_find_caption($id, $_SESSION["uid"])); + + /* Remove cached data */ + + $this->dbh->query("UPDATE ttrss_user_entries SET label_cache = '' + WHERE label_cache LIKE '%$caption%' AND owner_uid = " . $_SESSION["uid"]); + + } + + return; + } + + function colorreset() { + $ids = explode(',', $this->dbh->escape_string($_REQUEST["ids"])); + + foreach ($ids as $id) { + $this->dbh->query("UPDATE ttrss_labels2 SET + fg_color = '', bg_color = '' WHERE id = '$id' + AND owner_uid = " . $_SESSION["uid"]); + + $caption = $this->dbh->escape_string(label_find_caption($id, $_SESSION["uid"])); + + /* Remove cached data */ + + $this->dbh->query("UPDATE ttrss_user_entries SET label_cache = '' + WHERE label_cache LIKE '%$caption%' AND owner_uid = " . $_SESSION["uid"]); + } + + } + + function save() { + + $id = $this->dbh->escape_string($_REQUEST["id"]); + $caption = $this->dbh->escape_string(trim($_REQUEST["caption"])); + + $this->dbh->query("BEGIN"); + + $result = $this->dbh->query("SELECT caption FROM ttrss_labels2 + WHERE id = '$id' AND owner_uid = ". $_SESSION["uid"]); + + if ($this->dbh->num_rows($result) != 0) { + $old_caption = $this->dbh->fetch_result($result, 0, "caption"); + + $result = $this->dbh->query("SELECT id FROM ttrss_labels2 + WHERE caption = '$caption' AND owner_uid = ". $_SESSION["uid"]); + + if ($this->dbh->num_rows($result) == 0) { + if ($caption) { + $result = $this->dbh->query("UPDATE ttrss_labels2 SET + caption = '$caption' WHERE id = '$id' AND + owner_uid = " . $_SESSION["uid"]); + + /* Update filters that reference label being renamed */ + + $old_caption = $this->dbh->escape_string($old_caption); + + $this->dbh->query("UPDATE ttrss_filters2_actions SET + action_param = '$caption' WHERE action_param = '$old_caption' + AND action_id = 7 + AND filter_id IN (SELECT id FROM ttrss_filters2 WHERE owner_uid = ".$_SESSION["uid"].")"); + + print $_REQUEST["value"]; + } else { + print $old_caption; + } + } else { + print $old_caption; + } + } + + $this->dbh->query("COMMIT"); + + return; + } + + function remove() { + + $ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"])); + + foreach ($ids as $id) { + label_remove($id, $_SESSION["uid"]); + } + + } + + function add() { + $caption = $this->dbh->escape_string($_REQUEST["caption"]); + $output = $this->dbh->escape_string($_REQUEST["output"]); + + if ($caption) { + + if (label_create($caption)) { + if (!$output) { + print T_sprintf("Created label %s", htmlspecialchars($caption)); + } + } + + if ($output == "select") { + header("Content-Type: text/xml"); + + print ""; + + print_label_select("select_label", + $caption, ""); + + print ""; + } + } + + return; + } + + function index() { + + $sort = $this->dbh->escape_string($_REQUEST["sort"]); + + if (!$sort || $sort == "undefined") { + $sort = "caption"; + } + + $label_search = $this->dbh->escape_string($_REQUEST["search"]); + + if (array_key_exists("search", $_REQUEST)) { + $_SESSION["prefs_label_search"] = $label_search; + } else { + $label_search = $_SESSION["prefs_label_search"]; + } + + print "
"; + print "
"; + print "
"; + + print "
". + "" . __('Select').""; + print "
"; + print "
".__('All')."
"; + print "
".__('None')."
"; + print "
"; + + print" "; + + print " "; + + print ""; + + + print "
"; #toolbar + print "
"; #pane + print "
"; + + print "
+ ". + __("Loading, please wait...")."
"; + + print "
+
+
+
+
+ + +
"; + + print "
"; #pane + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB, + "hook_prefs_tab", "prefLabels"); + + print "
"; #container + + } +} + +?> diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php new file mode 100644 index 0000000000..d36e31f0b0 --- /dev/null +++ b/classes/pref/prefs.php @@ -0,0 +1,1126 @@ +pref_sections = array( + 1 => __('General'), + 2 => __('Interface'), + 3 => __('Advanced'), + 4 => __('Digest') + ); + + $this->pref_help = array( + "ALLOW_DUPLICATE_POSTS" => array(__("Allow duplicate articles"), ""), + "BLACKLISTED_TAGS" => array(__("Blacklisted tags"), __("When auto-detecting tags in articles these tags will not be applied (comma-separated list).")), + "CDM_AUTO_CATCHUP" => array(__("Automatically mark articles as read"), __("This option enables marking articles as read automatically while you scroll article list.")), + "CDM_EXPANDED" => array(__("Automatically expand articles in combined mode"), ""), + "COMBINED_DISPLAY_MODE" => array(__("Combined feed display"), __("Display expanded list of feed articles, instead of separate displays for headlines and article content")), + "CONFIRM_FEED_CATCHUP" => array(__("Confirm marking feed as read"), ""), + "DEFAULT_ARTICLE_LIMIT" => array(__("Amount of articles to display at once"), ""), + "DEFAULT_UPDATE_INTERVAL" => array(__("Default feed update interval"), __("Shortest interval at which a feed will be checked for updates regardless of update method")), + "DIGEST_CATCHUP" => array(__("Mark articles in e-mail digest as read"), ""), + "DIGEST_ENABLE" => array(__("Enable e-mail digest"), __("This option enables sending daily digest of new (and unread) headlines on your configured e-mail address")), + "DIGEST_PREFERRED_TIME" => array(__("Try to send digests around specified time"), __("Uses UTC timezone")), + "ENABLE_API_ACCESS" => array(__("Enable API access"), __("Allows external clients to access this account through the API")), + "ENABLE_FEED_CATS" => array(__("Enable feed categories"), ""), + "FEEDS_SORT_BY_UNREAD" => array(__("Sort feeds by unread articles count"), ""), + "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"), __("The syntax used is identical to the PHP date() 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"), ""), + "REVERSE_HEADLINES" => array(__("Reverse headline order (oldest first)"), ""), + "SHORT_DATE_FORMAT" => array(__("Short date format"), ""), + "SHOW_CONTENT_PREVIEW" => array(__("Show content preview in headlines list"), ""), + "SORT_HEADLINES_BY_FEED_DATE" => array(__("Sort headlines by feed date"), __("Use feed-specified date to sort headlines instead of local import date.")), + "SSL_CERT_SERIAL" => array(__("Login with an SSL certificate"), __("Click to register your SSL client certificate with tt-rss")), + "STRIP_IMAGES" => array(__("Do not embed images in articles"), ""), + "STRIP_UNSAFE_TAGS" => array(__("Strip unsafe tags from articles"), __("Strip all but most common HTML tags when reading articles.")), + "USER_STYLESHEET" => array(__("Customize stylesheet"), __("Customize CSS stylesheet to your liking")), + "USER_TIMEZONE" => array(__("Time zone"), ""), + "VFEED_GROUP_BY_FEED" => array(__("Group headlines in virtual feeds"), __("Special feeds, labels, and categories are grouped by originating feeds")), + "USER_LANGUAGE" => array(__("Language")), + "USER_CSS_THEME" => array(__("Theme"), __("Select one of the available CSS themes")) + ); + } + + function changepassword() { + + $old_pw = $_POST["old_password"]; + $new_pw = $_POST["new_password"]; + $con_pw = $_POST["confirm_password"]; + + if ($old_pw == "") { + print "ERROR: ".format_error("Old password cannot be blank."); + return; + } + + if ($new_pw == "") { + print "ERROR: ".format_error("New password cannot be blank."); + return; + } + + if ($new_pw != $con_pw) { + print "ERROR: ".format_error("Entered passwords do not match."); + return; + } + + $authenticator = PluginHost::getInstance()->get_plugin($_SESSION["auth_module"]); + + if (method_exists($authenticator, "change_password")) { + print format_notice($authenticator->change_password($_SESSION["uid"], $old_pw, $new_pw)); + } else { + print "ERROR: ".format_error("Function not supported by authentication module."); + } + } + + function saveconfig() { + $boolean_prefs = explode(",", $_POST["boolean_prefs"]); + + foreach ($boolean_prefs as $pref) { + if (!isset($_POST[$pref])) $_POST[$pref] = 'false'; + } + + $need_reload = false; + + foreach (array_keys($_POST) as $pref_name) { + + $pref_name = $this->dbh->escape_string($pref_name); + $value = $this->dbh->escape_string($_POST[$pref_name]); + + if ($pref_name == 'DIGEST_PREFERRED_TIME') { + if (get_pref('DIGEST_PREFERRED_TIME') != $value) { + + $this->dbh->query("UPDATE ttrss_users SET + last_digest_sent = NULL WHERE id = " . $_SESSION['uid']); + + } + } + + if ($pref_name == "USER_LANGUAGE") { + if ($_SESSION["language"] != $value) { + $need_reload = true; + } + } + + set_pref($pref_name, $value); + } + + if ($need_reload) { + print "PREFS_NEED_RELOAD"; + } else { + print __("The configuration was saved."); + } + } + + function changeemail() { + + $email = $this->dbh->escape_string($_POST["email"]); + $full_name = $this->dbh->escape_string($_POST["full_name"]); + + $active_uid = $_SESSION["uid"]; + + $this->dbh->query("UPDATE ttrss_users SET email = '$email', + full_name = '$full_name' WHERE id = '$active_uid'"); + + print __("Your personal data has been saved."); + + return; + } + + function resetconfig() { + + $_SESSION["prefs_op_result"] = "reset-to-defaults"; + + if ($_SESSION["profile"]) { + $profile_qpart = "profile = '" . $_SESSION["profile"] . "'"; + } else { + $profile_qpart = "profile IS NULL"; + } + + $this->dbh->query("DELETE FROM ttrss_user_prefs + WHERE $profile_qpart AND owner_uid = ".$_SESSION["uid"]); + + initialize_user_prefs($_SESSION["uid"], $_SESSION["profile"]); + + echo __("Your preferences are now set to default values."); + } + + function index() { + + global $access_level_names; + + $prefs_blacklist = array("STRIP_UNSAFE_TAGS", "REVERSE_HEADLINES", + "SORT_HEADLINES_BY_FEED_DATE", "DEFAULT_ARTICLE_LIMIT", + "FEEDS_SORT_BY_UNREAD"); + + /* "FEEDS_SORT_BY_UNREAD", "HIDE_READ_FEEDS", "REVERSE_HEADLINES" */ + + $profile_blacklist = array("ALLOW_DUPLICATE_POSTS", "PURGE_OLD_DAYS", + "PURGE_UNREAD_ARTICLES", "DIGEST_ENABLE", "DIGEST_CATCHUP", + "BLACKLISTED_TAGS", "ENABLE_API_ACCESS", "UPDATE_POST_ON_CHECKSUM_CHANGE", + "DEFAULT_UPDATE_INTERVAL", "USER_TIMEZONE", "SORT_HEADLINES_BY_FEED_DATE", + "SSL_CERT_SERIAL", "DIGEST_PREFERRED_TIME"); + + + $_SESSION["prefs_op_result"] = ""; + + print "
"; + print "
"; + + print "
"; + + print ""; + + print ""; + + print "

" . __("Personal data") . "

"; + + $result = $this->dbh->query("SELECT email,full_name,otp_enabled, + access_level FROM ttrss_users + WHERE id = ".$_SESSION["uid"]); + + $email = htmlspecialchars($this->dbh->fetch_result($result, 0, "email")); + $full_name = htmlspecialchars($this->dbh->fetch_result($result, 0, "full_name")); + $otp_enabled = sql_bool_to_bool($this->dbh->fetch_result($result, 0, "otp_enabled")); + + print ""; + print ""; + + print ""; + print ""; + + if (!SINGLE_USER_MODE && !$_SESSION["hide_hello"]) { + + $access_level = $this->dbh->fetch_result($result, 0, "access_level"); + print ""; + print ""; + } + + print "
".__('Full name')."
".__('E-mail')."
".__('Access level')."" . $access_level_names[$access_level] . "
"; + + print ""; + print ""; + + print "

"; + + print "

"; + + if ($_SESSION["auth_module"]) { + $authenticator = PluginHost::getInstance()->get_plugin($_SESSION["auth_module"]); + } else { + $authenticator = false; + } + + if ($authenticator && method_exists($authenticator, "change_password")) { + + print "

" . __("Password") . "

"; + + print ""; + + $result = $this->dbh->query("SELECT id FROM ttrss_users + WHERE id = ".$_SESSION["uid"]." AND pwd_hash + = 'SHA1:5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8'"); + + if ($this->dbh->num_rows($result) != 0) { + print format_warning(__("Your password is at default value, please change it."), "default_pass_warning"); + } + + print "
"; + + print ""; + + if ($otp_enabled) { + print_notice(__("Changing your current password will disable OTP.")); + } + + print ""; + + print ""; + print ""; + + print ""; + + print ""; + + print ""; + + print ""; + + print "
".__("Old password")."
".__("New password")."
".__("Confirm password")."
"; + + print ""; + print ""; + + print "

"; + + print "

"; + + if ($_SESSION["auth_module"] == "auth_internal") { + + print "

" . __("One time passwords / Authenticator") . "

"; + + if ($otp_enabled) { + + print_notice(__("One time passwords are currently enabled. Enter your current password below to disable.")); + + print "
"; + + print ""; + + print ""; + + print ""; + + print ""; + + print "
".__("Enter your password")."
"; + + print ""; + print ""; + + print "

"; + + print "

"; + + } else if (function_exists("imagecreatefromstring")) { + + print_warning(__("You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP.")); + + print "

".__("Scan the following code by the Authenticator application:")."

"; + + $csrf_token = $_SESSION["csrf_token"]; + + print ""; + + print "
"; + + print ""; + print ""; + + print ""; + + print ""; + + print ""; + + print ""; + + print ""; + + print ""; + + print ""; + print "
".__("Enter your password")."
".__("Enter the generated one time password")."
"; + + print "
"; + + print "
"; + + print "

"; + + print "

"; + + } else { + + print_notice(__("PHP GD functions are required for OTP support.")); + + } + + } + } + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB_SECTION, + "hook_prefs_tab_section", "prefPrefsAuth"); + + print "
"; #pane + + print "
"; + + print "
"; + + print ""; + + print '
'; + + print '
'; + + if ($_SESSION["profile"]) { + print_notice(__("Some preferences are only available in default profile.")); + } + + if ($_SESSION["profile"]) { + initialize_user_prefs($_SESSION["uid"], $_SESSION["profile"]); + $profile_qpart = "profile = '" . $_SESSION["profile"] . "'"; + } else { + initialize_user_prefs($_SESSION["uid"]); + $profile_qpart = "profile IS NULL"; + } + + /* if ($_SESSION["prefs_show_advanced"]) + $access_query = "true"; + else + $access_query = "(access_level = 0 AND section_id != 3)"; */ + + $access_query = 'true'; + + $result = $this->dbh->query("SELECT DISTINCT + ttrss_user_prefs.pref_name,value,type_name, + ttrss_prefs_sections.order_id, + def_value,section_id + FROM ttrss_prefs,ttrss_prefs_types,ttrss_prefs_sections,ttrss_user_prefs + WHERE type_id = ttrss_prefs_types.id AND + $profile_qpart AND + section_id = ttrss_prefs_sections.id AND + ttrss_user_prefs.pref_name = ttrss_prefs.pref_name AND + $access_query AND + owner_uid = ".$_SESSION["uid"]." + ORDER BY ttrss_prefs_sections.order_id,pref_name"); + + $lnum = 0; + + $active_section = ""; + + $listed_boolean_prefs = array(); + + while ($line = $this->dbh->fetch_assoc($result)) { + + if (in_array($line["pref_name"], $prefs_blacklist)) { + continue; + } + + $type_name = $line["type_name"]; + $pref_name = $line["pref_name"]; + $section_name = $this->getSectionName($line["section_id"]); + $value = $line["value"]; + + $short_desc = $this->getShortDesc($pref_name); + $help_text = $this->getHelpText($pref_name); + + if (!$short_desc) continue; + + if ($_SESSION["profile"] && in_array($line["pref_name"], + $profile_blacklist)) { + continue; + } + + if ($active_section != $line["section_id"]) { + + if ($active_section != "") { + print ""; + } + + print ""; + + $active_section = $line["section_id"]; + + print ""; + + $lnum = 0; + } + + print ""; + + print ""; + + print ""; + + print ""; + + $lnum++; + } + + print "

".$section_name."

"; + print ""; + + if ($help_text) print "
".__($help_text)."
"; + + print "
"; + + if ($pref_name == "USER_LANGUAGE") { + print_select_hash($pref_name, $value, get_translations(), + "style='width : 220px; margin : 0px' dojoType='dijit.form.Select'"); + + } else if ($pref_name == "USER_TIMEZONE") { + + $timezones = explode("\n", file_get_contents("lib/timezones.txt")); + + print_select($pref_name, $value, $timezones, 'dojoType="dijit.form.FilteringSelect"'); + } else if ($pref_name == "USER_STYLESHEET") { + + print ""; + + } else if ($pref_name == "USER_CSS_THEME") { + + $themes = array_merge(glob("themes/*.css"), glob("themes.local/*.css")); + $themes = array_map("basename", $themes); + $themes = array_filter($themes, "theme_valid"); + asort($themes); + + print_select($pref_name, $value, $themes, + 'dojoType="dijit.form.Select"'); + + + } else if ($pref_name == "DEFAULT_UPDATE_INTERVAL") { + + global $update_intervals_nodefault; + + print_select_hash($pref_name, $value, $update_intervals_nodefault, + 'dojoType="dijit.form.Select"'); + + } else if ($type_name == "bool") { + + array_push($listed_boolean_prefs, $pref_name); + + $checked = ($value == "true") ? "checked=\"checked\"" : ""; + + if ($pref_name == "PURGE_UNREAD_ARTICLES" && FORCE_ARTICLE_PURGE != 0) { + $disabled = "disabled=\"1\""; + $checked = "checked=\"checked\""; + } else { + $disabled = ""; + } + + print ""; + + } else if (array_search($pref_name, array('FRESH_ARTICLE_MAX_AGE', + 'PURGE_OLD_DAYS', 'LONG_DATE_FORMAT', 'SHORT_DATE_FORMAT')) !== false) { + + $regexp = ($type_name == 'integer') ? 'regexp="^\d*$"' : ''; + + if ($pref_name == "PURGE_OLD_DAYS" && FORCE_ARTICLE_PURGE != 0) { + $disabled = "disabled=\"1\""; + $value = FORCE_ARTICLE_PURGE; + } else { + $disabled = ""; + } + + print ""; + + } else if ($pref_name == "SSL_CERT_SERIAL") { + + print ""; + + $cert_serial = htmlspecialchars(get_ssl_certificate_id()); + $has_serial = ($cert_serial) ? "false" : "true"; + + print " "; + + print " "; + + } else if ($pref_name == 'DIGEST_PREFERRED_TIME') { + print "
". + T_sprintf("Current server time: %s (UTC)", date("H:i")) . "
"; + } else { + $regexp = ($type_name == 'integer') ? 'regexp="^\d*$"' : ''; + + print ""; + } + + print "
"; + + $listed_boolean_prefs = htmlspecialchars(join(",", $listed_boolean_prefs)); + + print ""; + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB_SECTION, + "hook_prefs_tab_section", "prefPrefsPrefsInside"); + + print '
'; # inside pane + print '
'; + + print ""; + print ""; + + print "
+ ".__('Save configuration')." +
+
". + __("Save and exit preferences")."
+
+
"; + + print " "; + + print ""; + + print " "; + + /* $checked = $_SESSION["prefs_show_advanced"] ? "checked='1'" : ""; + + print " + "; */ + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB_SECTION, + "hook_prefs_tab_section", "prefPrefsPrefsOutside"); + + print ""; + print '
'; # inner pane + print '
'; # border container + + print "
"; #pane + + print "
"; + + print "

" . __("You will need to reload Tiny Tiny RSS for plugin changes to take effect.") . "

"; + + print_notice(__("Download more plugins at tt-rss.org forums or wiki.")); + + print "
"; + + print ""; + + print ""; + print ""; + + print ""; + + print ""; + + print " + + + + + "; + + $system_enabled = array_map("trim", explode(",", PLUGINS)); + $user_enabled = array_map("trim", explode(",", get_pref("_ENABLED_PLUGINS"))); + + $tmppluginhost = new PluginHost(); + $tmppluginhost->load_all($tmppluginhost::KIND_ALL, $_SESSION["uid"]); + $tmppluginhost->load_data(true); + + foreach ($tmppluginhost->get_plugins() as $name => $plugin) { + $about = $plugin->about(); + + if ($about[3] && strpos($name, "example") === FALSE) { + if (in_array($name, $system_enabled)) { + $checked = "checked='1'"; + } else { + $checked = ""; + } + + print ""; + + print ""; + + $plugin_icon = $checked ? "plugin.png" : "plugin_disabled.png"; + + print ""; + print ""; + print ""; + print ""; + + if (count($tmppluginhost->get_all($plugin)) > 0) { + if (in_array($name, $system_enabled)) { + print ""; + } + } + + print ""; + + } + } + + print ""; + + print " + + + + + "; + + + foreach ($tmppluginhost->get_plugins() as $name => $plugin) { + $about = $plugin->about(); + + if (!$about[3] && strpos($name, "example") === FALSE) { + + if (in_array($name, $system_enabled)) { + $checked = "checked='1'"; + $disabled = "disabled='1'"; + $rowclass = ''; + } else if (in_array($name, $user_enabled)) { + $checked = "checked='1'"; + $disabled = ""; + $rowclass = "Selected"; + } else { + $checked = ""; + $disabled = ""; + $rowclass = ''; + } + + print ""; + + $plugin_icon = $checked ? "plugin.png" : "plugin_disabled.png"; + + print ""; + + print ""; + print ""; + + print ""; + print ""; + + if (count($tmppluginhost->get_all($plugin)) > 0) { + if (in_array($name, $system_enabled) || in_array($name, $user_enabled)) { + print ""; + } + } + + print ""; + + + + } + + } + + print "

".__("System plugins")."

 ".__('Plugin')."".__('Description')."".__('Version')."".__('Author')."
" . htmlspecialchars($about[1]); + if (@$about[4]) { + print " — ".__("more info").""; + } + print "" . htmlspecialchars(sprintf("%.2f", $about[0])) . "" . htmlspecialchars($about[2]) . "".__("Clear data")."

".__("User plugins")."

 ".__('Plugin')."".__('Description')."".__('Version')."".__('Author')."
"; + if (@$about[4]) { + print " — ".__("more info").""; + } + print "" . htmlspecialchars(sprintf("%.2f", $about[0])) . "" . htmlspecialchars($about[2]) . "".__("Clear data")."
"; + + print "

"; + + print "
"; + + print "
"; #pane + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB, + "hook_prefs_tab", "prefPrefs"); + + print "
"; #container + } + + function toggleAdvanced() { + $_SESSION["prefs_show_advanced"] = !$_SESSION["prefs_show_advanced"]; + } + + function otpqrcode() { + require_once "lib/otphp/vendor/base32.php"; + require_once "lib/otphp/lib/otp.php"; + require_once "lib/otphp/lib/totp.php"; + require_once "lib/phpqrcode/phpqrcode.php"; + + $result = $this->dbh->query("SELECT login,salt,otp_enabled + FROM ttrss_users + WHERE id = ".$_SESSION["uid"]); + + $base32 = new Base32(); + + $login = $this->dbh->fetch_result($result, 0, "login"); + $otp_enabled = sql_bool_to_bool($this->dbh->fetch_result($result, 0, "otp_enabled")); + + if (!$otp_enabled) { + $secret = $base32->encode(sha1($this->dbh->fetch_result($result, 0, "salt"))); + print QRcode::png("otpauth://totp/".urlencode($login). + "?secret=$secret&issuer=".urlencode("Tiny Tiny RSS")); + + } + } + + function otpenable() { + require_once "lib/otphp/vendor/base32.php"; + require_once "lib/otphp/lib/otp.php"; + require_once "lib/otphp/lib/totp.php"; + + $password = $_REQUEST["password"]; + $otp = $_REQUEST["otp"]; + + $authenticator = PluginHost::getInstance()->get_plugin($_SESSION["auth_module"]); + + if ($authenticator->check_password($_SESSION["uid"], $password)) { + + $result = $this->dbh->query("SELECT salt + FROM ttrss_users + WHERE id = ".$_SESSION["uid"]); + + $base32 = new Base32(); + + $secret = $base32->encode(sha1($this->dbh->fetch_result($result, 0, "salt"))); + $topt = new \OTPHP\TOTP($secret); + + $otp_check = $topt->now(); + + if ($otp == $otp_check) { + $this->dbh->query("UPDATE ttrss_users SET otp_enabled = true WHERE + id = " . $_SESSION["uid"]); + + print "OK"; + } else { + print "ERROR:".__("Incorrect one time password"); + } + } else { + print "ERROR:".__("Incorrect password"); + } + + } + + function otpdisable() { + $password = $this->dbh->escape_string($_REQUEST["password"]); + + $authenticator = PluginHost::getInstance()->get_plugin($_SESSION["auth_module"]); + + if ($authenticator->check_password($_SESSION["uid"], $password)) { + + $this->dbh->query("UPDATE ttrss_users SET otp_enabled = false WHERE + id = " . $_SESSION["uid"]); + + print "OK"; + } else { + print "ERROR: ".__("Incorrect password"); + } + + } + + function setplugins() { + if (is_array($_REQUEST["plugins"])) + $plugins = join(",", $_REQUEST["plugins"]); + else + $plugins = ""; + + set_pref("_ENABLED_PLUGINS", $plugins); + } + + function clearplugindata() { + $name = $this->dbh->escape_string($_REQUEST["name"]); + + PluginHost::getInstance()->clear_data(PluginHost::getInstance()->get_plugin($name)); + } + + function customizeCSS() { + $value = get_pref("USER_STYLESHEET"); + + $value = str_replace("
", "\n", $value); + + print_notice(T_sprintf("You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline.", "css/tt-rss.css")); + + print ""; + print ""; + print ""; + + print "
"; + print ""; + print "
"; + + print "
"; + print " "; + print ""; + print "
"; + + } + + function editPrefProfiles() { + print "
"; + + print "
". + "" . __('Select').""; + print "
"; + print "
".__('All')."
"; + print "
".__('None')."
"; + print "
"; + + print "
"; + + print " +
"; + + print "
"; + + $result = $this->dbh->query("SELECT title,id FROM ttrss_settings_profiles + WHERE owner_uid = ".$_SESSION["uid"]." ORDER BY title"); + + print "
"; + + print "
"; + + print ""; + + print ""; #odd + + print ""; + + if (!$_SESSION["profile"]) { + $is_active = __("(active)"); + } else { + $is_active = ""; + } + + print ""; + + print ""; + + $lnum = 1; + + while ($line = $this->dbh->fetch_assoc($result)) { + + $profile_id = $line["id"]; + $this_row_id = "id=\"FCATR-$profile_id\""; + + print ""; + + $edit_title = htmlspecialchars($line["title"]); + + print ""; + + if ($_SESSION["profile"] == $line["id"]) { + $is_active = __("(active)"); + } else { + $is_active = ""; + } + + print ""; + + print ""; + + ++$lnum; + } + + print "
" . + __("Default profile") . " $is_active
" . $edit_title . + " + $is_active
"; + print "
"; + print "
"; + + print "
+
+ + +
"; + + print ""; + print "
"; + + } + + private function getShortDesc($pref_name) { + if (isset($this->pref_help[$pref_name])) { + return $this->pref_help[$pref_name][0]; + } + return ""; + } + + private function getHelpText($pref_name) { + if (isset($this->pref_help[$pref_name])) { + return $this->pref_help[$pref_name][1]; + } + return ""; + } + + private function getSectionName($id) { + if (isset($this->pref_sections[$id])) { + return $this->pref_sections[$id]; + } + + return ""; + } +} +?> diff --git a/classes/pref/system.php b/classes/pref/system.php new file mode 100644 index 0000000000..7accb1f912 --- /dev/null +++ b/classes/pref/system.php @@ -0,0 +1,90 @@ +dbh->query("DELETE FROM ttrss_error_log"); + } + + function index() { + + print "
"; + print "
"; + + if (LOG_DESTINATION == "sql") { + + $result = $this->dbh->query("SELECT errno, errstr, filename, lineno, + created_at, login FROM ttrss_error_log + LEFT JOIN ttrss_users ON (owner_uid = ttrss_users.id) + ORDER BY ttrss_error_log.id DESC + LIMIT 100"); + + print " "; + + print "  "; + + print "

"; + + print " + + + + + + "; + + while ($line = $this->dbh->fetch_assoc($result)) { + print ""; + + foreach ($line as $k => $v) { + $line[$k] = htmlspecialchars($v); + } + + print ""; + print ""; + print ""; + print ""; + + print ""; + + print ""; + } + + print "
".__("Error")."".__("Filename")."".__("Message")."".__("User")."".__("Date")."
" . Logger::$errornames[$line["errno"]] . " (" . $line["errno"] . ")" . $line["filename"] . ":" . $line["lineno"] . "" . $line["errstr"] . "" . + make_local_datetime( + $line["created_at"], false) . "
"; + } else { + + print_notice("Please set LOG_DESTINATION to 'sql' in config.php to enable database logging."); + + } + + print "

"; + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB, + "hook_prefs_tab", "prefSystem"); + + print "
"; #container + } + +} +?> diff --git a/classes/pref/users.php b/classes/pref/users.php new file mode 100644 index 0000000000..a5d48ac96e --- /dev/null +++ b/classes/pref/users.php @@ -0,0 +1,457 @@ +dbh->query("SELECT login, + ".SUBSTRING_FOR_DATE."(last_login,1,16) AS last_login, + access_level, + (SELECT COUNT(int_id) FROM ttrss_user_entries + WHERE owner_uid = id) AS stored_articles, + ".SUBSTRING_FOR_DATE."(created,1,16) AS created + FROM ttrss_users + WHERE id = '$uid'"); + + if ($this->dbh->num_rows($result) == 0) { + print "

".__('User not found')."

"; + return; + } + + // print "

User Details

"; + + $login = $this->dbh->fetch_result($result, 0, "login"); + + print ""; + + $last_login = make_local_datetime( + $this->dbh->fetch_result($result, 0, "last_login"), true); + + $created = make_local_datetime( + $this->dbh->fetch_result($result, 0, "created"), true); + + $access_level = $this->dbh->fetch_result($result, 0, "access_level"); + $stored_articles = $this->dbh->fetch_result($result, 0, "stored_articles"); + + print ""; + print ""; + + $result = $this->dbh->query("SELECT COUNT(id) as num_feeds FROM ttrss_feeds + WHERE owner_uid = '$uid'"); + + $num_feeds = $this->dbh->fetch_result($result, 0, "num_feeds"); + + print ""; + + print "
".__('Registered')."$created
".__('Last logged in')."$last_login
".__('Subscribed feeds count')."$num_feeds
"; + + print "

".__('Subscribed feeds')."

"; + + $result = $this->dbh->query("SELECT id,title,site_url FROM ttrss_feeds + WHERE owner_uid = '$uid' ORDER BY title"); + + print "
    "; + + while ($line = $this->dbh->fetch_assoc($result)) { + + $icon_file = ICONS_URL."/".$line["id"].".ico"; + + if (file_exists($icon_file) && filesize($icon_file) > 0) { + $feed_icon = ""; + } else { + $feed_icon = ""; + } + + print "
  • $feed_icon ".$line["title"]."
  • "; + + } + + if ($this->dbh->num_rows($result) < $num_feeds) { + // FIXME - add link to show ALL subscribed feeds here somewhere + print "
  •  ...
  • "; + } + + print "
"; + + print "
+
"; + + return; + } + + function edit() { + global $access_level_names; + + $id = $this->dbh->escape_string($_REQUEST["id"]); + print "
"; + + print ""; + print ""; + print ""; + + $result = $this->dbh->query("SELECT * FROM ttrss_users WHERE id = '$id'"); + + $login = $this->dbh->fetch_result($result, 0, "login"); + $access_level = $this->dbh->fetch_result($result, 0, "access_level"); + $email = $this->dbh->fetch_result($result, 0, "email"); + + $sel_disabled = ($id == $_SESSION["uid"]) ? "disabled" : ""; + + print "
".__("User")."
"; + print "
"; + + if ($sel_disabled) { + print ""; + } + + print ""; + + print "
"; + + print "
".__("Authentication")."
"; + print "
"; + + print __('Access level: ') . " "; + + if (!$sel_disabled) { + print_select_hash("access_level", $access_level, $access_level_names, + "dojoType=\"dijit.form.Select\" $sel_disabled"); + } else { + print_select_hash("", $access_level, $access_level_names, + "dojoType=\"dijit.form.Select\" $sel_disabled"); + print ""; + } + + print "
"; + + print ""; + + print "
"; + + print "
".__("Options")."
"; + print "
"; + + print ""; + + print "
"; + + print ""; + + print "
"; + + print "
+ +
"; + + return; + } + + function editSave() { + $login = $this->dbh->escape_string(trim($_REQUEST["login"])); + $uid = $this->dbh->escape_string($_REQUEST["id"]); + $access_level = (int) $_REQUEST["access_level"]; + $email = $this->dbh->escape_string(trim($_REQUEST["email"])); + $password = $_REQUEST["password"]; + + if ($password) { + $salt = substr(bin2hex(get_random_bytes(125)), 0, 250); + $pwd_hash = encrypt_password($password, $salt, true); + $pass_query_part = "pwd_hash = '$pwd_hash', salt = '$salt',"; + } else { + $pass_query_part = ""; + } + + $this->dbh->query("UPDATE ttrss_users SET $pass_query_part login = '$login', + access_level = '$access_level', email = '$email', otp_enabled = false + WHERE id = '$uid'"); + + } + + function remove() { + $ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"])); + + foreach ($ids as $id) { + if ($id != $_SESSION["uid"] && $id != 1) { + $this->dbh->query("DELETE FROM ttrss_tags WHERE owner_uid = '$id'"); + $this->dbh->query("DELETE FROM ttrss_feeds WHERE owner_uid = '$id'"); + $this->dbh->query("DELETE FROM ttrss_users WHERE id = '$id'"); + } + } + } + + function add() { + + $login = $this->dbh->escape_string(trim($_REQUEST["login"])); + $tmp_user_pwd = make_password(8); + $salt = substr(bin2hex(get_random_bytes(125)), 0, 250); + $pwd_hash = encrypt_password($tmp_user_pwd, $salt, true); + + $result = $this->dbh->query("SELECT id FROM ttrss_users WHERE + login = '$login'"); + + if ($this->dbh->num_rows($result) == 0) { + + $this->dbh->query("INSERT INTO ttrss_users + (login,pwd_hash,access_level,last_login,created, salt) + VALUES ('$login', '$pwd_hash', 0, null, NOW(), '$salt')"); + + + $result = $this->dbh->query("SELECT id FROM ttrss_users WHERE + login = '$login' AND pwd_hash = '$pwd_hash'"); + + if ($this->dbh->num_rows($result) == 1) { + + $new_uid = $this->dbh->fetch_result($result, 0, "id"); + + print format_notice(T_sprintf("Added user %s with password %s", + $login, $tmp_user_pwd)); + + initialize_user($new_uid); + + } else { + + print format_warning(T_sprintf("Could not create user %s", $login)); + + } + } else { + print format_warning(T_sprintf("User %s already exists.", $login)); + } + } + + static function resetUserPassword($uid, $show_password) { + + $result = db_query("SELECT login,email + FROM ttrss_users WHERE id = '$uid'"); + + $login = db_fetch_result($result, 0, "login"); + $email = db_fetch_result($result, 0, "email"); + $salt = db_fetch_result($result, 0, "salt"); + + $new_salt = substr(bin2hex(get_random_bytes(125)), 0, 250); + $tmp_user_pwd = make_password(8); + + $pwd_hash = encrypt_password($tmp_user_pwd, $new_salt, true); + + db_query("UPDATE ttrss_users SET pwd_hash = '$pwd_hash', salt = '$new_salt', otp_enabled = false + WHERE id = '$uid'"); + + if ($show_password) { + print T_sprintf("Changed password of user %s to %s", $login, $tmp_user_pwd); + } else { + print_notice(T_sprintf("Sending new password of user %s to %s", $login, $email)); + } + + require_once 'classes/ttrssmailer.php'; + + if ($email) { + require_once "lib/MiniTemplator.class.php"; + + $tpl = new MiniTemplator; + + $tpl->readTemplateFromFile("templates/resetpass_template.txt"); + + $tpl->setVariable('LOGIN', $login); + $tpl->setVariable('NEWPASS', $tmp_user_pwd); + + $tpl->addBlock('message'); + + $message = ""; + + $tpl->generateOutputToString($message); + + $mail = new ttrssMailer(); + + $rc = $mail->quickMail($email, $login, + __("[tt-rss] Password change notification"), + $message, false); + + if (!$rc) print_error($mail->ErrorInfo); + } + } + + function resetPass() { + $uid = $this->dbh->escape_string($_REQUEST["id"]); + Pref_Users::resetUserPassword($uid, true); + } + + function index() { + + global $access_level_names; + + print "
"; + print "
"; + + print "
"; + + $user_search = $this->dbh->escape_string($_REQUEST["search"]); + + if (array_key_exists("search", $_REQUEST)) { + $_SESSION["prefs_user_search"] = $user_search; + } else { + $user_search = $_SESSION["prefs_user_search"]; + } + + print "
+ + +
"; + + $sort = $this->dbh->escape_string($_REQUEST["sort"]); + + if (!$sort || $sort == "undefined") { + $sort = "login"; + } + + print "
". + "" . __('Select').""; + print "
"; + print "
".__('All')."
"; + print "
".__('None')."
"; + print "
"; + + print ""; + + print " + + + + "; + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB_SECTION, + "hook_prefs_tab_section", "prefUsersToolbar"); + + print "
"; #toolbar + print "
"; #pane + print "
"; + + print "
"; + + if ($user_search) { + + $user_search = explode(" ", $user_search); + $tokens = array(); + + foreach ($user_search as $token) { + $token = trim($token); + array_push($tokens, "(UPPER(login) LIKE UPPER('%$token%'))"); + } + + $user_search_query = "(" . join($tokens, " AND ") . ") AND "; + + } else { + $user_search_query = ""; + } + + $result = $this->dbh->query("SELECT + id,login,access_level,email, + ".SUBSTRING_FOR_DATE."(last_login,1,16) as last_login, + ".SUBSTRING_FOR_DATE."(created,1,16) as created + FROM + ttrss_users + WHERE + $user_search_query + id > 0 + ORDER BY $sort"); + + if ($this->dbh->num_rows($result) > 0) { + + print "

"; + + print " + + + + + "; + + $lnum = 0; + + while ($line = $this->dbh->fetch_assoc($result)) { + + $uid = $line["id"]; + + print ""; + + $line["login"] = htmlspecialchars($line["login"]); + + $line["created"] = make_local_datetime($line["created"], false); + $line["last_login"] = make_local_datetime($line["last_login"], false); + + print ""; + + $onclick = "onclick='editUser($uid, event)' title='".__('Click to edit')."'"; + + print ""; + + if (!$line["email"]) $line["email"] = " "; + + print ""; + print ""; + print ""; + + print ""; + + ++$lnum; + } + + print "
 ".__('Login')."".__('Access Level')."".__('Registered')."".__('Last login')."
" . $line["login"] . "" . $access_level_names[$line["access_level"]] . "" . $line["created"] . "" . $line["last_login"] . "
"; + + } else { + print "

"; + if (!$user_search) { + print_warning(__('No users defined.')); + } else { + print_warning(__('No matching users found.')); + } + print "

"; + + } + + print "
"; #pane + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB, + "hook_prefs_tab", "prefUsers"); + + print "
"; #container + + } + + } +?> diff --git a/classes/rpc.php b/classes/rpc.php new file mode 100644 index 0000000000..a84883bfa3 --- /dev/null +++ b/classes/rpc.php @@ -0,0 +1,656 @@ +dbh->escape_string($_REQUEST["id"]); + + $_SESSION["profile"] = $id; + } + + function remprofiles() { + $ids = explode(",", $this->dbh->escape_string(trim($_REQUEST["ids"]))); + + foreach ($ids as $id) { + if ($_SESSION["profile"] != $id) { + $this->dbh->query("DELETE FROM ttrss_settings_profiles WHERE id = '$id' AND + owner_uid = " . $_SESSION["uid"]); + } + } + } + + // Silent + function addprofile() { + $title = $this->dbh->escape_string(trim($_REQUEST["title"])); + if ($title) { + $this->dbh->query("BEGIN"); + + $result = $this->dbh->query("SELECT id FROM ttrss_settings_profiles + WHERE title = '$title' AND owner_uid = " . $_SESSION["uid"]); + + if ($this->dbh->num_rows($result) == 0) { + + $this->dbh->query("INSERT INTO ttrss_settings_profiles (title, owner_uid) + VALUES ('$title', ".$_SESSION["uid"] .")"); + + $result = $this->dbh->query("SELECT id FROM ttrss_settings_profiles WHERE + title = '$title'"); + + if ($this->dbh->num_rows($result) != 0) { + $profile_id = $this->dbh->fetch_result($result, 0, "id"); + + if ($profile_id) { + initialize_user_prefs($_SESSION["uid"], $profile_id); + } + } + } + + $this->dbh->query("COMMIT"); + } + } + + // Silent + function saveprofile() { + $id = $this->dbh->escape_string($_REQUEST["id"]); + $title = $this->dbh->escape_string(trim($_REQUEST["value"])); + + if ($id == 0) { + print __("Default profile"); + return; + } + + if ($title) { + $this->dbh->query("BEGIN"); + + $result = $this->dbh->query("SELECT id FROM ttrss_settings_profiles + WHERE title = '$title' AND owner_uid =" . $_SESSION["uid"]); + + if ($this->dbh->num_rows($result) == 0) { + $this->dbh->query("UPDATE ttrss_settings_profiles + SET title = '$title' WHERE id = '$id' AND + owner_uid = " . $_SESSION["uid"]); + print $title; + } else { + $result = $this->dbh->query("SELECT title FROM ttrss_settings_profiles + WHERE id = '$id' AND owner_uid =" . $_SESSION["uid"]); + print $this->dbh->fetch_result($result, 0, "title"); + } + + $this->dbh->query("COMMIT"); + } + } + + // Silent + function remarchive() { + $ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"])); + + foreach ($ids as $id) { + $result = $this->dbh->query("DELETE FROM ttrss_archived_feeds WHERE + (SELECT COUNT(*) FROM ttrss_user_entries + WHERE orig_feed_id = '$id') = 0 AND + id = '$id' AND owner_uid = ".$_SESSION["uid"]); + + $this->dbh->affected_rows($result); + } + } + + function addfeed() { + $feed = $this->dbh->escape_string($_REQUEST['feed']); + $cat = $this->dbh->escape_string($_REQUEST['cat']); + $login = $this->dbh->escape_string($_REQUEST['login']); + $pass = trim($_REQUEST['pass']); // escaped later + + $rc = subscribe_to_feed($feed, $cat, $login, $pass); + + print json_encode(array("result" => $rc)); + } + + function togglepref() { + $key = $this->dbh->escape_string($_REQUEST["key"]); + set_pref($key, !get_pref($key)); + $value = get_pref($key); + + print json_encode(array("param" =>$key, "value" => $value)); + } + + function setpref() { + // set_pref escapes input, so no need to double escape it here + $key = $_REQUEST['key']; + $value = str_replace("\n", "
", $_REQUEST['value']); + + set_pref($key, $value, $_SESSION['uid'], $key != 'USER_STYLESHEET'); + + print json_encode(array("param" =>$key, "value" => $value)); + } + + function mark() { + $mark = $_REQUEST["mark"]; + $id = $this->dbh->escape_string($_REQUEST["id"]); + + if ($mark == "1") { + $mark = "true"; + } else { + $mark = "false"; + } + + $this->dbh->query("UPDATE ttrss_user_entries SET marked = $mark, + last_marked = NOW() + WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); + + print json_encode(array("message" => "UPDATE_COUNTERS")); + } + + function delete() { + $ids = $this->dbh->escape_string($_REQUEST["ids"]); + + $this->dbh->query("DELETE FROM ttrss_user_entries + WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]); + + purge_orphans(); + + print json_encode(array("message" => "UPDATE_COUNTERS")); + } + + function unarchive() { + $ids = explode(",", $_REQUEST["ids"]); + + foreach ($ids as $id) { + $id = $this->dbh->escape_string(trim($id)); + $this->dbh->query("BEGIN"); + + $result = $this->dbh->query("SELECT feed_url,site_url,title FROM ttrss_archived_feeds + WHERE id = (SELECT orig_feed_id FROM ttrss_user_entries WHERE ref_id = $id + AND owner_uid = ".$_SESSION["uid"].")"); + + if ($this->dbh->num_rows($result) != 0) { + $feed_url = $this->dbh->escape_string(db_fetch_result($result, 0, "feed_url")); + $site_url = $this->dbh->escape_string(db_fetch_result($result, 0, "site_url")); + $title = $this->dbh->escape_string(db_fetch_result($result, 0, "title")); + + $result = $this->dbh->query("SELECT id FROM ttrss_feeds WHERE feed_url = '$feed_url' + AND owner_uid = " .$_SESSION["uid"]); + + if ($this->dbh->num_rows($result) == 0) { + + if (!$title) $title = '[Unknown]'; + + $result = $this->dbh->query( + "INSERT INTO ttrss_feeds + (owner_uid,feed_url,site_url,title,cat_id,auth_login,auth_pass,update_method) + VALUES (".$_SESSION["uid"].", + '$feed_url', + '$site_url', + '$title', + NULL, '', '', 0)"); + + $result = $this->dbh->query( + "SELECT id FROM ttrss_feeds WHERE feed_url = '$feed_url' + AND owner_uid = ".$_SESSION["uid"]); + + if ($this->dbh->num_rows($result) != 0) { + $feed_id = $this->dbh->fetch_result($result, 0, "id"); + } + + } else { + $feed_id = $this->dbh->fetch_result($result, 0, "id"); + } + + if ($feed_id) { + $result = $this->dbh->query("UPDATE ttrss_user_entries + SET feed_id = '$feed_id', orig_feed_id = NULL + WHERE ref_id = $id AND owner_uid = " . $_SESSION["uid"]); + } + } + + $this->dbh->query("COMMIT"); + } + + print json_encode(array("message" => "UPDATE_COUNTERS")); + } + + function archive() { + $ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"])); + + foreach ($ids as $id) { + $this->archive_article($id, $_SESSION["uid"]); + } + + print json_encode(array("message" => "UPDATE_COUNTERS")); + } + + private function archive_article($id, $owner_uid) { + $this->dbh->query("BEGIN"); + + $result = $this->dbh->query("SELECT feed_id FROM ttrss_user_entries + WHERE ref_id = '$id' AND owner_uid = $owner_uid"); + + if ($this->dbh->num_rows($result) != 0) { + + /* prepare the archived table */ + + $feed_id = (int) $this->dbh->fetch_result($result, 0, "feed_id"); + + if ($feed_id) { + $result = $this->dbh->query("SELECT id FROM ttrss_archived_feeds + WHERE id = '$feed_id'"); + + if ($this->dbh->num_rows($result) == 0) { + $this->dbh->query("INSERT INTO ttrss_archived_feeds + (id, owner_uid, title, feed_url, site_url) + SELECT id, owner_uid, title, feed_url, site_url from ttrss_feeds + WHERE id = '$feed_id'"); + } + + $this->dbh->query("UPDATE ttrss_user_entries + SET orig_feed_id = feed_id, feed_id = NULL + WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); + } + } + + $this->dbh->query("COMMIT"); + } + + function publ() { + $pub = $_REQUEST["pub"]; + $id = $this->dbh->escape_string($_REQUEST["id"]); + + if ($pub == "1") { + $pub = "true"; + } else { + $pub = "false"; + } + + $this->dbh->query("UPDATE ttrss_user_entries SET + published = $pub, last_published = NOW() + WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); + + $pubsub_result = false; + + if (PUBSUBHUBBUB_HUB) { + $rss_link = get_self_url_prefix() . + "/public.php?op=rss&id=-2&key=" . + get_feed_access_key(-2, false); + + $p = new Publisher(PUBSUBHUBBUB_HUB); + + $pubsub_result = $p->publish_update($rss_link); + } + + print json_encode(array("message" => "UPDATE_COUNTERS", + "pubsub_result" => $pubsub_result)); + } + + function getAllCounters() { + $last_article_id = (int) $_REQUEST["last_article_id"]; + + $reply = array(); + + if (!empty($_REQUEST['seq'])) $reply['seq'] = (int) $_REQUEST['seq']; + + if ($last_article_id != getLastArticleId()) { + $reply['counters'] = getAllCounters(); + } + + $reply['runtime-info'] = make_runtime_info(); + + print json_encode($reply); + } + + /* GET["cmode"] = 0 - mark as read, 1 - as unread, 2 - toggle */ + function catchupSelected() { + $ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"])); + $cmode = sprintf("%d", $_REQUEST["cmode"]); + + catchupArticlesById($ids, $cmode); + + print json_encode(array("message" => "UPDATE_COUNTERS", "ids" => $ids)); + } + + function markSelected() { + $ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"])); + $cmode = sprintf("%d", $_REQUEST["cmode"]); + + $this->markArticlesById($ids, $cmode); + + print json_encode(array("message" => "UPDATE_COUNTERS")); + } + + function publishSelected() { + $ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"])); + $cmode = sprintf("%d", $_REQUEST["cmode"]); + + $this->publishArticlesById($ids, $cmode); + + print json_encode(array("message" => "UPDATE_COUNTERS")); + } + + function sanityCheck() { + $_SESSION["hasAudio"] = $_REQUEST["hasAudio"] === "true"; + $_SESSION["hasSandbox"] = $_REQUEST["hasSandbox"] === "true"; + $_SESSION["hasMp3"] = $_REQUEST["hasMp3"] === "true"; + $_SESSION["clientTzOffset"] = $_REQUEST["clientTzOffset"]; + + $reply = array(); + + $reply['error'] = sanity_check(); + + if ($reply['error']['code'] == 0) { + $reply['init-params'] = make_init_params(); + $reply['runtime-info'] = make_runtime_info(); + } + + print json_encode($reply); + } + + function completeLabels() { + $search = $this->dbh->escape_string($_REQUEST["search"]); + + $result = $this->dbh->query("SELECT DISTINCT caption FROM + ttrss_labels2 + WHERE owner_uid = '".$_SESSION["uid"]."' AND + LOWER(caption) LIKE LOWER('$search%') ORDER BY caption + LIMIT 5"); + + print "
    "; + while ($line = $this->dbh->fetch_assoc($result)) { + print "
  • " . $line["caption"] . "
  • "; + } + print "
"; + } + + function purge() { + $ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"])); + $days = sprintf("%d", $_REQUEST["days"]); + + foreach ($ids as $id) { + + $result = $this->dbh->query("SELECT id FROM ttrss_feeds WHERE + id = '$id' AND owner_uid = ".$_SESSION["uid"]); + + if ($this->dbh->num_rows($result) == 1) { + purge_feed($id, $days); + } + } + } + + function updateFeedBrowser() { + if (defined('_DISABLE_FEED_BROWSER') && _DISABLE_FEED_BROWSER) return; + + $search = $this->dbh->escape_string($_REQUEST["search"]); + $limit = $this->dbh->escape_string($_REQUEST["limit"]); + $mode = (int) $this->dbh->escape_string($_REQUEST["mode"]); + + require_once "feedbrowser.php"; + + print json_encode(array("content" => + make_feed_browser($search, $limit, $mode), + "mode" => $mode)); + } + + // Silent + function massSubscribe() { + + $payload = json_decode($_REQUEST["payload"], false); + $mode = $_REQUEST["mode"]; + + if (!$payload || !is_array($payload)) return; + + if ($mode == 1) { + foreach ($payload as $feed) { + + $title = $this->dbh->escape_string($feed[0]); + $feed_url = $this->dbh->escape_string($feed[1]); + + $result = $this->dbh->query("SELECT id FROM ttrss_feeds WHERE + feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"]); + + if ($this->dbh->num_rows($result) == 0) { + $result = $this->dbh->query("INSERT INTO ttrss_feeds + (owner_uid,feed_url,title,cat_id,site_url) + VALUES ('".$_SESSION["uid"]."', + '$feed_url', '$title', NULL, '')"); + } + } + } else if ($mode == 2) { + // feed archive + foreach ($payload as $id) { + $result = $this->dbh->query("SELECT * FROM ttrss_archived_feeds + WHERE id = '$id' AND owner_uid = " . $_SESSION["uid"]); + + if ($this->dbh->num_rows($result) != 0) { + $site_url = $this->dbh->escape_string(db_fetch_result($result, 0, "site_url")); + $feed_url = $this->dbh->escape_string(db_fetch_result($result, 0, "feed_url")); + $title = $this->dbh->escape_string(db_fetch_result($result, 0, "title")); + + $result = $this->dbh->query("SELECT id FROM ttrss_feeds WHERE + feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"]); + + if ($this->dbh->num_rows($result) == 0) { + $result = $this->dbh->query("INSERT INTO ttrss_feeds + (owner_uid,feed_url,title,cat_id,site_url) + VALUES ('$id','".$_SESSION["uid"]."', + '$feed_url', '$title', NULL, '$site_url')"); + } + } + } + } + } + + function catchupFeed() { + $feed_id = $this->dbh->escape_string($_REQUEST['feed_id']); + $is_cat = $this->dbh->escape_string($_REQUEST['is_cat']) == "true"; + $mode = $this->dbh->escape_string($_REQUEST['mode']); + + catchup_feed($feed_id, $is_cat, false, false, $mode); + + print json_encode(array("message" => "UPDATE_COUNTERS")); + } + + function quickAddCat() { + $cat = $this->dbh->escape_string($_REQUEST["cat"]); + + add_feed_category($cat); + + $result = $this->dbh->query("SELECT id FROM ttrss_feed_categories WHERE + title = '$cat' AND owner_uid = " . $_SESSION["uid"]); + + if ($this->dbh->num_rows($result) == 1) { + $id = $this->dbh->fetch_result($result, 0, "id"); + } else { + $id = 0; + } + + print_feed_cat_select("cat_id", $id, ''); + } + + function setpanelmode() { + $wide = (int) $_REQUEST["wide"]; + + setcookie("ttrss_widescreen", $wide, + time() + COOKIE_LIFETIME_LONG); + + print json_encode(array("wide" => $wide)); + } + + static function updaterandomfeed_real($dbh) { + + // Test if the feed need a update (update interval exceded). + if (DB_TYPE == "pgsql") { + $update_limit_qpart = "AND (( + ttrss_feeds.update_interval = 0 + AND ttrss_feeds.last_updated < NOW() - CAST((ttrss_user_prefs.value || ' minutes') AS INTERVAL) + ) OR ( + ttrss_feeds.update_interval > 0 + AND ttrss_feeds.last_updated < NOW() - CAST((ttrss_feeds.update_interval || ' minutes') AS INTERVAL) + ) OR ttrss_feeds.last_updated IS NULL + OR last_updated = '1970-01-01 00:00:00')"; + } else { + $update_limit_qpart = "AND (( + ttrss_feeds.update_interval = 0 + AND ttrss_feeds.last_updated < DATE_SUB(NOW(), INTERVAL CONVERT(ttrss_user_prefs.value, SIGNED INTEGER) MINUTE) + ) OR ( + ttrss_feeds.update_interval > 0 + AND ttrss_feeds.last_updated < DATE_SUB(NOW(), INTERVAL ttrss_feeds.update_interval MINUTE) + ) OR ttrss_feeds.last_updated IS NULL + OR last_updated = '1970-01-01 00:00:00')"; + } + + // Test if feed is currently being updated by another process. + if (DB_TYPE == "pgsql") { + $updstart_thresh_qpart = "AND (ttrss_feeds.last_update_started IS NULL OR ttrss_feeds.last_update_started < NOW() - INTERVAL '5 minutes')"; + } else { + $updstart_thresh_qpart = "AND (ttrss_feeds.last_update_started IS NULL OR ttrss_feeds.last_update_started < DATE_SUB(NOW(), INTERVAL 5 MINUTE))"; + } + + $random_qpart = sql_random_function(); + + // we could be invoked from public.php with no active session + if ($_SESSION["uid"]) { + $owner_check_qpart = "AND ttrss_feeds.owner_uid = '".$_SESSION["uid"]."'"; + } else { + $owner_check_qpart = ""; + } + + // We search for feed needing update. + $result = $dbh->query("SELECT ttrss_feeds.feed_url,ttrss_feeds.id + FROM + ttrss_feeds, ttrss_users, ttrss_user_prefs + WHERE + ttrss_feeds.owner_uid = ttrss_users.id + AND ttrss_users.id = ttrss_user_prefs.owner_uid + AND ttrss_user_prefs.pref_name = 'DEFAULT_UPDATE_INTERVAL' + $owner_check_qpart + $update_limit_qpart + $updstart_thresh_qpart + ORDER BY $random_qpart LIMIT 30"); + + $feed_id = -1; + + require_once "rssfuncs.php"; + + $num_updated = 0; + + $tstart = time(); + + while ($line = $dbh->fetch_assoc($result)) { + $feed_id = $line["id"]; + + if (time() - $tstart < ini_get("max_execution_time") * 0.7) { + update_rss_feed($feed_id, true); + ++$num_updated; + } else { + break; + } + } + + // Purge orphans and cleanup tags + purge_orphans(); + cleanup_tags(14, 50000); + + if ($num_updated > 0) { + print json_encode(array("message" => "UPDATE_COUNTERS", + "num_updated" => $num_updated)); + } else { + print json_encode(array("message" => "NOTHING_TO_UPDATE")); + } + + } + + function updaterandomfeed() { + RPC::updaterandomfeed_real($this->dbh); + } + + private function markArticlesById($ids, $cmode) { + + $tmp_ids = array(); + + foreach ($ids as $id) { + array_push($tmp_ids, "ref_id = '$id'"); + } + + $ids_qpart = join(" OR ", $tmp_ids); + + if ($cmode == 0) { + $this->dbh->query("UPDATE ttrss_user_entries SET + marked = false, last_marked = NOW() + WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); + } else if ($cmode == 1) { + $this->dbh->query("UPDATE ttrss_user_entries SET + marked = true, last_marked = NOW() + WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); + } else { + $this->dbh->query("UPDATE ttrss_user_entries SET + marked = NOT marked,last_marked = NOW() + WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); + } + } + + private function publishArticlesById($ids, $cmode) { + + $tmp_ids = array(); + + foreach ($ids as $id) { + array_push($tmp_ids, "ref_id = '$id'"); + } + + $ids_qpart = join(" OR ", $tmp_ids); + + if ($cmode == 0) { + $this->dbh->query("UPDATE ttrss_user_entries SET + published = false,last_published = NOW() + WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); + } else if ($cmode == 1) { + $this->dbh->query("UPDATE ttrss_user_entries SET + published = true,last_published = NOW() + WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); + } else { + $this->dbh->query("UPDATE ttrss_user_entries SET + published = NOT published,last_published = NOW() + WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); + } + + if (PUBSUBHUBBUB_HUB) { + $rss_link = get_self_url_prefix() . + "/public.php?op=rss&id=-2&key=" . + get_feed_access_key(-2, false); + + $p = new Publisher(PUBSUBHUBBUB_HUB); + + /* $pubsub_result = */ $p->publish_update($rss_link); + } + } + + function getlinktitlebyid() { + $id = $this->dbh->escape_string($_REQUEST['id']); + + $result = $this->dbh->query("SELECT link, title FROM ttrss_entries, ttrss_user_entries + WHERE ref_id = '$id' AND ref_id = id AND owner_uid = ". $_SESSION["uid"]); + + if ($this->dbh->num_rows($result) != 0) { + $link = $this->dbh->fetch_result($result, 0, "link"); + $title = $this->dbh->fetch_result($result, 0, "title"); + + echo json_encode(array("link" => $link, "title" => $title)); + } else { + echo json_encode(array("error" => "ARTICLE_NOT_FOUND")); + } + } + + function log() { + $logmsg = $this->dbh->escape_string($_REQUEST['logmsg']); + + if ($logmsg) { + Logger::get()->log_error(E_USER_WARNING, + $logmsg, '[client-js]', 0, false); + } + + echo json_encode(array("message" => "HOST_ERROR_LOGGED")); + + } +} +?> diff --git a/classes/ttrssmailer.php b/classes/ttrssmailer.php new file mode 100644 index 0000000000..64e8a59a75 --- /dev/null +++ b/classes/ttrssmailer.php @@ -0,0 +1,64 @@ +SetLanguage("en", "lib/phpmailer/language/"); + + if (SMTP_SERVER) { + $pair = explode(":", SMTP_SERVER, 2); + $this->Mailer = "smtp"; + + $this->Host = $pair[0]; + $this->Port = $pair[1]; + + if (!$this->Port) $this->Port = 25; + } else { + $this->Host = ''; + $this->Port = ''; + } + + + //if SMTP_LOGIN is specified, set credentials and enable auth + if(SMTP_LOGIN){ + $this->SMTPAuth = true; + $this->Username = SMTP_LOGIN; + $this->Password = SMTP_PASSWORD; + } + if(SMTP_SECURE) + $this->SMTPSecure = SMTP_SECURE; + } + /* @brief a simple mail function to send email using the defaults + * This will send an HTML email using the configured defaults + * @param $toAddress A string with the recipients email address + * @param $toName A string with the recipients name + * @param $subject A string with the emails subject + * @param $body A string containing the body of the email + */ + public function quickMail ($toAddress, $toName, $subject, $body, $altbody=""){ + $this->addAddress($toAddress, $toName); + $this->Subject = $subject; + $this->Body = $body; + $this->IsHTML($altbody != ''); + $rc=$this->send(); + return $rc; + } +} + +?> diff --git a/compat.php b/compat.php deleted file mode 100644 index b2f6bd3446..0000000000 --- a/compat.php +++ /dev/null @@ -1,103 +0,0 @@ - - function mb_strlen($str, $encoding="utf-8") - { - if($encoding != "utf-8") - { return -1; } - - $n=0; - - for($i=0; isset($str{$i}); $i++) - { - $c = ord($str{$i}); - - if (!($c & 0x80)) // single-byte (0xxxxxx) - $n++; - - elseif (($c & 0xC0) == 0xC0) // multi-byte starting byte (11xxxxxx) - $n++; - } - - return $n; - } -} - -if (!function_exists('mb_substr')) -{ - // from Typo3 - // author Martin Kutschker - function mb_substr($str, $start, $len=null, $encoding="utf-8") - { - if($encoding != "utf-8") - { return -1; } - - $byte_start = utf8_char2byte_pos($str,$start); - - if ($byte_start === false) - return false; // $start outside string length - - $str = substr($str,$byte_start); - - if ($len != null) - { - $byte_end = utf8_char2byte_pos($str,$len); - - if ($byte_end === false) // $len outside actual string length - return $str; - else - return substr($str,0,$byte_end); - } - - else return $str; - } - - function utf8_char2byte_pos($str,$pos) - { - $n = 0; // number of characters found - $p = abs($pos); // number of characters wanted - - if ($pos >= 0) - { - $i = 0; - $d = 1; - } else { - $i = strlen($str)-1; - $d = -1; - } - - for( ; isset($str{$i}) && $n<$p; $i+=$d) - { - $c = (int)ord($str{$i}); - - if (!($c & 0x80)) // single-byte (0xxxxxx) - $n++; - elseif (($c & 0xC0) == 0xC0) // multi-byte starting byte (11xxxxxx) - $n++; - } - - if (!isset($str{$i})) - return false; // offset beyond string length - - if ($pos >= 0) - { - // skip trailing multi-byte data bytes - while ((ord($str{$i}) & 0x80) && !(ord($str{$i}) & 0x40)) - { $i++; } - } else { - // correct offset - $i++; - } - - return $i; - } - - if (!function_exists('mb_strtolower')) { - function mb_strtolower($msg, $encoding) { - return $msg; - } - } -} diff --git a/config.php-dist b/config.php-dist index 58811646d6..311b94df08 100644 --- a/config.php-dist +++ b/config.php-dist @@ -1,204 +1,209 @@ System), syslog - logs to system log. + // Setting this to blank uses PHP logging (usually to http server + // error.log). - define('PHP_EXECUTABLE', '/usr/bin/php'); - // Path to PHP executable - - define('ENABLE_REGISTRATION', false); - // Allow users to register themselves. Please be vary that allowing - // random people to access your tt-rss installation is a security risk - // and potentially might lead to data loss or server exploit. Disabled - // by default. - - define('REG_NOTIFY_ADDRESS', 'user@your.domain.dom'); - // Email address to send new user notifications to. - - define('REG_MAX_USERS', 10); - // Maximum amount of users which will be allowed to register on this - // system. 0 - no limit. - - define('FEEDBACK_URL', ''); - // Displays an URL for users to provide feedback or comments regarding - // this instance of tt-rss. Can lead to a forum, contact email, etc. - - define('FORCE_ARTICLE_PURGE', 0); - // When this option is not 0, users ability to control feed purging - // intervals is disabled and all articles (which are not starred) - // older than this amount of days are purged. - - define('CONFIG_VERSION', 18); + define('CONFIG_VERSION', 26); // Expected config version. Please update this option in config.php // if necessary (after migrating all new options from this file). // vim:ft=php -?> diff --git a/css/cdm.css b/css/cdm.css new file mode 100644 index 0000000000..ed9bedea13 --- /dev/null +++ b/css/cdm.css @@ -0,0 +1,399 @@ +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 4px; +} + +div.cdmHeader input { + margin-left : 4px; + margin-right : 4px; +} + +div.cdmContentInner { + margin : 10px; + line-height : 1.5; + font-size : 15px; +} + +div.cdmContentInner img, +div.cdmContentInner video { + border-width : 0px; + max-width : 98%; + height : auto; +} + +div.cdmContentInner h1 { + font-size : 16px; +} + +div.cdmContentInner h2, +div.cdmContentInner h3, +div.cdmContentInner h4 { + font-size : 15px; +} + +div.cdmFooter { + padding : 5px; + font-weight : normal; + color : #555; + clear : both; +} + +div.cdm { + margin-right : 4px; +} + +div.cdm.expanded { + margin-top : 4px; + margin-bottom : 4px; +} + +div.cdm.expanded div.cdmFooter { + border-style : solid; + border-width : 0px 0px 1px 0px; + border-color : #ddd; +} + +div.cdm.expandable { + background-color : #f0f0f0; + border-width : 0px 0px 1px 0px; + border-color : #ddd; + 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 { + background : white ! important; +} + +div.cdm.expandable div.cdmHeader span.titleWrap { + white-space : nowrap; + text-overflow : ellipsis; + overflow : hidden; + max-width : 500px; +} + +div.cdm.expandable.active div.cdmHeader span.titleWrap { + white-space : normal; +} + +div.cdm.expandable div.cdmHeader a.title { + font-weight : 600; + color : #555; + font-size : 14px; + -webkit-transition : color 0.2s; + transition : color 0.2s; + text-rendering: optimizelegibility; + font-family : "Segoe WP Semibold", "Segoe UI Semibold", + "Segoe UI Web Semibold", "Segoe UI", Ubuntu, "DejaVu Sans", "Helvetica Neue", + Helvetica, Arial, sans-serif; +} + +div.cdm.expandable.Unread div.cdmHeader a.title { + color : black; +} + +div.cdm.expandable.active div.cdmHeader a.title { + color : #4684ff; + font-size : 16px; + font-weight : 600; + text-rendering: optimizelegibility; + font-family : "Segoe WP Semibold", "Segoe UI Semibold", + "Segoe UI Web Semibold", "Segoe UI", Ubuntu, "DejaVu Sans", "Helvetica Neue", + Helvetica, Arial, sans-serif; +} + +div.cdm.expanded div.cdmHeader { + background : transparent ! important; +} + +div.cdm.expanded div.cdmHeader a.title { + font-size : 16px; + color : #999; + font-weight : 600; + -webkit-transition : color 0.2s; + transition : color 0.2s; + text-rendering: optimizelegibility; + font-family : "Segoe WP Semibold", "Segoe UI Semibold", + "Segoe UI Web Semibold", "Segoe UI", Ubuntu, "DejaVu Sans", "Helvetica Neue", + Helvetica, Arial, sans-serif; +} + +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 : #999; + font-weight : normal; + cursor : pointer; +} + +div.cdmContent div.postEnclosures { + margin-top : 1em; + color : #555; +} + +div.cdmFeedTitle { + border-color : #4684ff; + border-width : 0px 0px 1px 0px; + border-style : solid; + padding : 5px 3px 5px 5px; +} + +div.cdmFeedTitle a.title { + color : #555; + 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; + -webkit-hyphens: auto; + -moz-hyphens: auto; + hyphens: auto; +} + +div.cdmContentInner iframe { + min-width : 50%; + max-width : 98%; +} + +div.cdmHeader span.author { + color : #555; + font-size : 11px; + font-weight : normal; +} + + +div#floatingTitle { + position : absolute; + z-index : 5; + top : 0px; + right : 0px; + left : 0px; + border-color : #ddd; + border-width : 0px 0px 1px 0px; + border-style : solid; + background : white; + color : #555; + box-shadow : 0px 1px 1px -1px rgba(0,0,0,0.1); +} + +div#floatingTitle > * { + display : table-cell; + white-space : nowrap; + vertical-align : middle; + padding : 9px 5px; +} + +div#floatingTitle img { + margin-right : 4px; + margin-left : 4px; +} + +div#floatingTitle span.author { + color : #555; + font-size : 11px; + font-weight : normal; +} + +div#floatingTitle a.title { + font-size : 16px; + color : #999; + -webkit-transition : color 0.2s; + transition : color 0.2s; + font-weight : 600; + text-rendering: optimizelegibility; + font-family : "Segoe WP Semibold", "Segoe UI Semibold", + "Segoe UI Web Semibold", "Segoe UI", Ubuntu, "DejaVu Sans", "Helvetica Neue", + Helvetica, Arial, sans-serif; +} + +div#floatingTitle.Unread a.title { + color : black; +} + +div#floatingTitle img.anchor { + margin-left : 0px; +} + +div#floatingTitle div.hlFeed { + padding-right : 10px; + color : #555; + font-weight : normal; + font-style : italic; + font-size : 11px; + white-space : nowrap; +} + +div#floatingTitle div.hlFeed a { + border-radius : 4px; + display : inline-block; + padding : 1px 4px 1px 4px; +} + +div#floatingTitle span.updated { + padding-right : 10px; + white-space : nowrap; + color : #555; + font-size : 11px; +} + +div#floatingTitle div.hlFeed a { + color : #555; +} + +div#floatingTitle span.titleWrap { + width : 100%; + white-space : normal; +} + +div#floatingTitle .dijit, +div#floatingTitle img.hlScorePic { + display : none; +} + +.cdm.high .cdmHeader a.title.high, .cdm.high .cdmHeader .cdmExcerpt, +.cdm.high .cdmHeader span.author { + color : #00aa00; +} + +.cdm.Unread.high .cdmHeader a.title.high, .cdm.Unread.high .cdmHeader .cdmExcerpt, +.cdm.Unread.high .cdmHeader span.author { + color : #00dd00; +} + +.cdm .cdmHeader a.title.low, .cdm.low .cdmHeader .cdmExcerpt, +.cdm.Unread .cdmHeader a.title.low, .cdm.Unread.low .cdmHeader .cdmExcerpt, +.cdm.low .cdmHeader span.author { + color : #909090; + text-decoration : line-through; +} + +div.cdmFeedTitle > * { + display : table-cell; + vertical-align : middle; +} + +div.cdmFeedTitle a.title { + width : 100%; +} + +div.cdmFeedTitle a.catchup { + text-align : right; + color : #555; + padding-right : 10px; + font-size : 11px; + white-space : nowrap; +} + +div.cdmFeedTitle a.catchup:hover { + color : #4684ff; +} + diff --git a/css/dijit.css b/css/dijit.css new file mode 100644 index 0000000000..c49b469e53 --- /dev/null +++ b/css/dijit.css @@ -0,0 +1,413 @@ +/* Tree */ + +.claro .dijitTreeRow .dijitCheckBox { + position : relative; + top : -2px; +} + +.claro .dijitTreeLabel { + outline : 0; +} + +.claro .dijitTree .feedParam { + color : #555; + float : right; + margin-right : 1em; +} + +.claro .dijitTree .filterRules { + display : block; + color : #ccc; + font-size : 10px; + margin-left : 100px; +} + +.claro .dijitTree .filterRules span { + display : block; + color : green; +} + +#filterDlg_Matches span.filterRule { + color : green; +} + +.claro .dijitTree .filterRules span.inverse, +#filterDlg_Matches span.filterRule.inverse { + color : red; +} + + +.claro .dijitTree .labelParam { + float : right; + margin-right : 1em; +} + +.claro .dijitTree .dijitTreeLabel.Disabled, +.claro .dijitTree .labelParam.Disabled { + color : #555; +} + +.claro .dijitTreeRow.Error { + color : red; +} + +.claro .dijitTreeRow.Hidden { + display : none; +} + +.claro .dijitTreeNode .loadingNode { + margin-left : 3px; + height : 9px; +} + +.claro .dijitFolderClosed, +.claro .dijitFolderOpened { + display : none; +} + +.claro .dijitTreeNode .dijitCheckBox { + margin-left : 4px; +} + +.claro .dijitTreeIsRoot > .dijitTreeRow > .dijitTreeExpando { + margin-left : 5px; +} + +.claro .dijitTree .dijitTreeExpando { + margin-top : 0px; + opacity : 0.6; +} + +.claro .dijitTree .dijitTreeNode { + padding : 0px; + border-width : 0px; +} + +.claro .dijitTree .dijitTreeRow { + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; +} + +.claro .dijitTree .dijitTreeRowSelected { + background : white; +} + +.claro #feedTree.dijitTree .dijitTreeRowSelected { + box-shadow : -1px 0px 2px -1px rgba(0,0,0,0.1); +} + +.claro .dijitTree .dijitTreeRowHover { + background : #f0f0f0; + border-color : #ddd; +} + +.claro .dijitTree .dijitTreeRowSelected { + background : white; + border-color : #ddd; +} + +.claro .dijitTreeRowSelected .dijitTreeLabel { + text-shadow : 1px 1px 2px #fff; +} + +.claro .dijitTreeRow .dijitTreeExpando { + background-image: url("../images/treeExpandImages.png"); + position : relative; + top : -1px; +} + +.claro .dijitTreeRow .dijitTreeExpandoLeaf { + background : none; +} + +/* Toolbar */ + +.claro .dijitToolbar { + background : #f5f5f5; + border-color : #ddd; + /* text-rendering: optimizelegibility; + font-family : "Segoe WP Semibold", "Segoe UI Semibold", + "Segoe UI Web Semibold", "Segoe UI", "Helvetica Neue", + Helvetica, Arial, sans-serif; */ +} + +/* .claro .dijitToolbar { + text-shadow : 1px 1px 2px #fff; +} */ + +.claro .dijitDialog .dijitToolbar { + border : 1px solid #ddd; +} + +/* Dialog */ + +.claro .dijitDialog h2 { + margin-top : 0px; + margin-bottom : 4px; + border-width : 0px; +} + +.claro .dijitMenuItemLabel { + font-size : 13px; +} + +/* Checkbox */ + +.claro .dijitCheckBox { + background-image : url("../images/untick.png"); + background-color : transparent; + width : 15px; + height : 15px; + margin : 1px; + opacity : 0.7; + background-position : center center; + transition : opacity 0.25s; + -webkit-transition : opacity 0.25s; + /* border : 1px solid #b5bcc7; */ + padding : 1px; +} + + .claro .dijitCheckBox:hover { + opacity : 1; +} + +.claro .dijitCheckBox.dijitCheckBoxDisabled:hover { + opacity : 0.7; +} + +.claro .dijitCheckBox.dijitCheckBoxChecked { + border-color : #69C671; + background-image : url("../images/tick.png"); + opacity : 1; +} + +/* Various buttons */ + +.claro .dijitButton .dijitButtonNode, +.claro .dijitComboButton .dijitButtonNode, +.claro .dijitToolbar .dijitDropDownButton .dijitButtonNode, +.claro .dijitToolbar .dijitComboButton, +.claro .dijitToolbar .dijitComboButton .dijitButtonNode { + background : none; + border-color : transparent; + box-shadow : none; +} + +button, +input[type="submit"] { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size : 14px; +} + +button, +input[type="submit"], +.claro .dijitButton, +.claro .dijitComboButton { + display: inline-block; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #cccccc; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-bottom-color: #b3b3b3; + -webkit-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +button:hover, +button:focus, +button:active, +input[type="submit"]:hover, +input[type="submit"]:focus, +input[type="submit"]:active, +.claro .dijitButton:hover, +.claro .dijitButton:focus, +.claro .dijitButton:active, +.claro .dijitComboButton:hover, +.claro .dijitComboButton:focus, +.claro .dijitComboButton:active, +.claro .dijitButton.dijitButtonDisabled { + color: #333333; + background-color: #e6e6e6; +} + +button:active, +input[type="submit"]:active, +.claro .dijitButton:active, +.claro .dijitComboButton:active { + background-color: #cccccc \9; +} + +.claro .dijitToolbar .dijitButton, +.claro .dijitToolbar .dijitButton.dijitHover, +.claro .dijitToolbar .dijitComboButton, +.claro .dijitToolbar .dijitComboButton.dijitHover { + background : none; + border-color : transparent; + box-shadow : none; + padding : 0px; + margin : 0px; + line-height : auto; + text-shadow : none; +} + +.claro .dijitToolbar .dijitDropDownButton .dijitButtonText, +.claro .dijitToolbar .dijitComboButton .dijitButtonText { + padding : 0px; +} + +.claro .dijitToolbar .dijitDropDownButton .dijitButtonNode { + border-radius : 4px; +} + +.claro .dijitToolbar .dijitButton.dijitHover, +.claro .dijitToolbar .dijitDropDownButton.dijitHover .dijitButtonNode, +.claro .dijitToolbar .dijitComboButton.dijitHover { + border-color : #ccc; +} + +.claro .dijitToolbar .dijitButton.dijitHover .dijitButtonNode, +.claro .dijitToolbar .dijitButton.dijitButtonActive .dijitButtonNode { + background : none; +} + +.claro .dijitToolbar .dijitButton .dijitButtonContents, +.claro .dijitToolbar .dijitDropDownButton .dijitButtonContents, +.claro .dijitToolbar .dijitComboButton .dijitButtonContents { + font-size : 13px; +} + +button:hover, +button:focus, +input[type="submit"]:hover, +input[type="submit"]:focus, +.claro .dijitButton:hover, +.claro .dijitToolbar .dijitButton:hover .dijitButtonNode, +.claro .dijitToolbar .dijitButton.dijitHover .dijitButtonNode, +.claro .dijitButton:focus, +.claro .dijitComboButton:hover, +.claro .dijitComboButton:focus { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +button:focus, +input[type="submit"]:focus, +.claro .dijitButton:focus, +.claro .dijitComboButton:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +button:active, +input[type="submit"]:active, +.claro .dijitButton:active, +.claro .dijitComboButton:active, +.claro .dijitToolbar .dijitDropDownButton.dijitOpened, +.claro .dijitToolbar .dijitComboButton.dijitOpened, +.claro .dijitToolbar .dijitButton.dijitButtonActive .dijitButtonNode { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +input[type="submit"][disabled], +button[disabled], +.claro .dijitButton[disabled], +.claro .dijitButton.dijitButtonDisabled, +.claro .dijitComboButton.dijitButtonDisabled { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} + +.claro .dijitButton .dijitButtonContents, +.claro .dijitComboButton .dijitButtonContents { + font-size : 14px; + font-weight : normal; + line-height : 20px; +} + +.claro .dijitButton.small .dijitButtonText { + font-size : 11px; +} + +.claro .dijitMenu { + border-color : #ccc; +} + +.claro .dijitMenu .dijitMenuItem.dijitHover, +.claro .dijitMenu .dijitMenuItem.dijitFocused, +.claro .dijitMenuTable .dijitMenuItem.dijitHover .dijitMenuItemLabel, +.claro .dijitMenuTable .dijitMenuItem.dijitFocused .dijitMenuItemLabel { + background : #eee; + border-color : transparent; +} + +.claro .dijitButton .dijitButtonNode, +.claro .dijitComboButton .dijitButtonNode { + padding : 0px; +} + +/* Other stuff */ + +/* .claro .dijitAccordionTitleFocus { + text-shadow : 1px 1px 2px #fff; +} + +.claro .dijitAccordionTitle { + text-rendering: optimizelegibility; + font-family : "Segoe WP Semibold", "Segoe UI Semibold", + "Segoe UI Web Semibold", "Segoe UI", "Helvetica Neue", + Helvetica, Arial, sans-serif; +} */ + +.claro .dijitAccordionInnerContainer.dijitAccordionInnerContainerSelected { + border-color : #ccc; +} + +.claro .dijitAccordionContainer .dijitAccordionChildWrapper { + border-color : #ddd; +} + +/* Tabs */ + +.claro .dijitTabContent { + background : #eee; +} + +.claro .dijitTabContent.dijitTabChecked, +.claro .dijitTabContent.dijitTabHover, +.claro .dijitTabContent.dijitFocused { + background : white; +} + +.claro .dijitTabPaneWrapper, +.claro .dijitTabContainerTop-tabs, +.claro .dijitTab, +.claro .dijitAccordionInnerContainer { + border-color : #ddd; +} + diff --git a/css/layout.css b/css/layout.css new file mode 100644 index 0000000000..3351331c00 --- /dev/null +++ b/css/layout.css @@ -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 index 0000000000..e93f3a2fc2 --- /dev/null +++ b/css/prefs.css @@ -0,0 +1,137 @@ +body#ttrssPrefs { + background-color : #f5f5f5; +} + +body#ttrssPrefs #footer, body#ttrssPrefs #header { + background-color : #f5f5f5; + padding-left : 8px; + padding-right : 8px; +} + + +#header a:hover { + color : black; +} + +#header img { + vertical-align : middle; + cursor : pointer; +} + + +div#pref-tabs .dijitContentPane { + font-size : 13px; +} + +div#pref-tabs { + box-shadow : 0px 1px 1px -1px rgba(0,0,0,0.1); + margin : 0px 5px 0px 5px; +} + +div#pref-tabs .dijitContentPane h3 { + font-size : 14px; +} + +#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 : #ddd; + border-style : solid; + margin : 0px 0px 5px 0px; + background-color : white; +} +div.filterTestHolder, div.prefFeedOPMLHolder { + border-width : 1px; +} + +ul.selfUpdateList, ul.userFeedList { + height : 200px; + overflow : auto; + list-style-type : none; + border : 1px solid #ddd; + background-color : #f5f5f5; + 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 #ddd; + background : #f5f5f5; + padding : 2px; +} + +table.prefPluginsList td label, table.prefUserList td { + cursor : pointer; +} + +table.prefPluginsList label { + white-space : nowrap; +} + +table.prefPluginsList label img { + vertical-align : middle; +} + +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; +} + +body#ttrssPrefs hr { + border-color : #ecf4ff; + max-width : 100%; +} + + diff --git a/css/tt-rss.css b/css/tt-rss.css new file mode 100644 index 0000000000..38c2559500 --- /dev/null +++ b/css/tt-rss.css @@ -0,0 +1,1116 @@ +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#ttrssMain { + overflow : hidden; + max-height : 100%; +} + +div.postReply { + padding : 0px; +} + +div.postReply div.postHeader { + padding : 5px; + margin-right : 4px; + color : #909090; + border-width : 0px 0px 1px 0px; + border-color : #ddd; + border-style : solid; +} + +div.postReply div.postTitle { + overflow : hidden; + text-overflow: ellipsis; + white-space : nowrap; + font-weight : 600; + text-rendering: optimizelegibility; + font-family : "Segoe WP Semibold", "Segoe UI Semibold", + "Segoe UI Web Semibold", "Segoe UI", Ubuntu, "DejaVu Sans", "Helvetica Neue", + Helvetica, Arial, sans-serif; +} + +div.postReply div.postDate { + padding-left : 10px; +} + +div.postReply div.postContent { + padding : 10px; +} + +div.postReply div.postContent img, +div.postReply div.postContent video { + 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; + margin : 5px; + border-style : solid; + border-color : #e7d796; + border-width : 1px; + color : #9a8c59; +} + +div.articleNote div.noteEdit { + float : right; + cursor : pointer; +} + +div.postReply span.author { + font-size : 12px; +} + +h1 { + font-size : 18px; + font-weight : 600; + text-rendering: optimizelegibility; + font-family : "Segoe WP Semibold", "Segoe UI Semibold", + "Segoe UI Web Semibold", "Segoe UI", Ubuntu, "DejaVu Sans", "Helvetica Neue", + Helvetica, Arial, sans-serif; +} + +h2 { + font-size : 16px; + font-weight : 600; + border-width : 0px 0px 1px 0px; + border-style : solid; + border-color : #ecf4ff; + text-rendering: optimizelegibility; + font-family : "Segoe WP Semibold", "Segoe UI Semibold", + "Segoe UI Web Semibold", "Segoe UI", Ubuntu, "DejaVu Sans", "Helvetica Neue", + Helvetica, Arial, sans-serif; +} + +h3 { + font-size : 13px; + border-width : 0px 0px 1px 0px; + border-style : solid; + border-color : #ecf4ff; + font-weight : 600; + text-rendering: optimizelegibility; + font-family : "Segoe WP Semibold", "Segoe UI Semibold", + "Segoe UI Web Semibold", "Segoe UI", Ubuntu, "DejaVu Sans", "Helvetica Neue", + Helvetica, Arial, sans-serif; +} + +h4 { + font-size : 14px; + font-weight : 600; + text-rendering: optimizelegibility; + font-family : "Segoe WP Semibold", "Segoe UI Semibold", + "Segoe UI Web Semibold", "Segoe UI", Ubuntu, "DejaVu Sans", "Helvetica Neue", + Helvetica, Arial, sans-serif; +} + +hr { + border-width : 0px 0px 1px 0px; + border-style : solid; + border-color : #ccc; +} + +a { + color : #4684ff; + text-decoration : none; +} + +a:hover { + color : #88b0f0; +} + +#piggie { + z-index : 999; + position : absolute; +} + +#notify.visible { + transform: translate(0, -35px); + -webkit-transform: translate(0, -35px); + -o-transform: translate(0, -35px); + -moz-transform: translate(0, -35px); +} + +#notify { + bottom : -35px; + right : 0px; + height : 20px; + left : 0px; + border-width : 1px 0px 0px 0px; + border-style : solid; + position : fixed; + font-size : 12px; + z-index : 99; + padding : 5px; + box-shadow : 0px -2px 2px rgba(0,0,0,0.1); + + transition: all 0.5s ease-in-out; + -webkit-transition: all 0.5s ease-in-out; + -moz-transition: all 0.5s ease-in-out; + -o-transition: all 0.5s ease-in-out; +} + +#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.notify_progress { + border-color : #d7c47a; + background-color : #fff7d5; +} + +.notify.notify_info { + border-color : #88b0f0; + background-color : #ecf4ff; +} + +.notify.notify_error { + background-color : #ffcccc; + border-color : #ff0000; +} + +.hl div.hlTitle a { + font-weight : 600; + text-rendering: optimizelegibility; + font-family : "Segoe WP Semibold", "Segoe UI Semibold", + "Segoe UI Web Semibold", "Segoe UI", Ubuntu, "DejaVu Sans", "Helvetica Neue", + Helvetica, Arial, sans-serif; + color : #777; +} + +.hl.Unread div.hlTitle a { + color : black; +} + +.hl.active div.hlTitle a { + color : #4684ff; + /* text-shadow : 1px 1px 2px #fff; */ +} + +.hl.Selected { + background : #f9fbff; +} + +.hl.Grayed { + color : #909090; +} + +.hl { + border-width : 0px 0px 1px 0px; + border-style : solid; + border-color : #ddd; + padding : 1px; +} + +.hl.active { + background : #ecf4ff ! important; +} + +div.filterTestHolder { + height : 300px; + overflow : auto; + border-color : #ddd; + border-style : solid; + margin : 0px 0px 5px 0px; + background-color : #f5f5f5; + border-width : 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 : #ccc; + 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 : #ccc; + border-style : solid; + background : #f5f5f5; + 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-width : 1px; +} + +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 : 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; +} + +.insensitive { + color : #555; +} + +.small { + font-size : 11px; +} + +#main-toolbar > * { + white-space : nowrap; + display : table-cell; + color : #999; +} + +#main-toolbar > *, +#main-toolbar table *, +#main-toolbar .actionChooser * { + text-rendering: optimizelegibility; + font-family : "Segoe WP", "Segoe UI Web", "Segoe UI", Ubuntu, "DejaVu Sans", "Helvetica Neue", + Helvetica, Arial, sans-serif; + font-size : 12px; + +} + +#main-toolbar #headlines-toolbar { + padding-right : 4px; + width : 100%; +} + +#main-toolbar #headlines-toolbar span.holder { + display : table; + width : 100%; +} + +#main-toolbar #headlines-toolbar span.holder > * { + display : table-cell; +} + +#main-toolbar #headlines-toolbar .main { + text-align : right; +} + +#main-toolbar #headlines-toolbar .main, +#main-toolbar #headlines-toolbar .r { + line-height : 24px; +} + +#headlines-toolbar span.r img { + margin-right : 4px; + position : relative; + top : 3px; +} + +#headlines-toolbar span.r .error a { + color : red; +} + +#main-toolbar #selected_prompt { + font-style : italic; + text-align : right; + margin-right : 4px; +} + +span.contentPreview { + color : #999; + font-weight : normal; + font-size : 12px; + padding-left : 4px; +} + +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 : #909090; + float : right; +} + +div.postHeader div { + padding-bottom : 3px; +} + +#feedUpdateErrors { + display : none; +} + +#allEntryTags { + border-width : 0px 0px 1px 0px; + border-style : solid; + border-color : #ddd; + padding-bottom : 5px; + display : none; +} + +img.markedPic, img.pubPic { + cursor : pointer; + vertical-align : middle; + opacity : 0.5; + -webkit-transition : opacity 0.25s; + transition : opacity 0.25s; +} + +img.markedPic:hover, img.pubPic:hover { + opacity : 1; +} + +img[src*='pub_set.png'], img[src*='mark_set.png'] { + opacity : 1; +} + +div.tagCloudContainer { + border : 1px solid #ddd; + background-color : #f5f5f5; + margin : 5px 0px 5px 0px; + padding : 5px; + text-align : center; +} + +div.errorExplained { + border : 1px solid #ddd; + background-color : #f5f5f5; + margin : 5px 0px 5px 0px; + padding : 5px; +} + +ul.feedErrorsList { + max-height : 300px; + overflow : auto; + list-style-type : none; + border : 1px solid #ddd; + background-color : #f5f5f5; + 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 : #ddd; + 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; +} + +div.loadingPrompt { + padding : 1em; + text-align : center; + font-weight : bold; +} + +div.whiteBox { + margin-left : 1px; + text-align : center; + padding : 1em 1em 0px 1em; + font-size : 11px; + border-width : 0px 0px 1px 0px; + border-style : solid; + border-color : #ddd; +} + +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; +} + +.hl .hlTitle { + overflow : hidden; + white-space : nowrap; + max-width : 500px; + text-overflow : ellipsis; + padding-left : 6px; + padding-right : 6px; +} + +div#headlines-frame.wide .hlTitle { + max-width : auto; + overflow : visible; + white-space : normal; +} + +div#headlines-frame.wide .hl .hlFeed { + display : none; +} + +.hl a.title.high, span.hlContent.high .contentPreview { + color : #00aa00; +} +.hl.Unread a.title.high, .hl.Unread span.hlContent.high .contentPreview { + color : #00dd00; +} + +.hl a.title.low, span.hlContent.low .contentPreview, +.hl.Unread a.title.low, .hl.Unread span.hlContent.low .contentPreview { + 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 : 16px; + width : 16px; + border-radius : 4px; + line-height : 14px; + vertical-align : middle; + font-size : 9px; + display : inline-block; + border : 1px solid #ccc; + background-color : #fff7d5; + color : #063064; + text-align : center; +} + +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; +} + +.hl span.hlFeed { + display : table-cell; + vertical-align : middle; + text-align : right; +} + +.hl span.hlFeed a { + border-radius : 4px; + display : inline-block; + padding : 1px 4px 1px 4px; + font-size : 11px; + font-style : italic; + font-weight : normal; + color : #555; + white-space : nowrap; +} + +.hl span.hlFeed a:hover { + color : #4684ff; +} + +.hl span.hlUpdated { + color : #555; + display : table-cell; + vertical-align : middle; + text-align : right; + font-size : 11px; + white-space : nowrap; + padding-left : 10px; +} + +span.hlUpdated div { + display : inline-block; +} + +div.hlLeft { + padding-left : 8px; +} + +div.hlLeft input { + margin-left : 4px; + margin-right : 4px; +} + +div.hlLeft img, div.hlRight img { + margin : 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; + margin : 0px; +} + +#feeds-holder { + padding : 0px; + border-width : 0px 0px 0px 0px; + border-style : solid; + border-color : #ddd; + overflow : hidden; + background : #f5f5f5; + box-shadow : inset -1px 0px 2px -1px rgba(0,0,0,0.1); + -webkit-overflow-scrolling : touch; +} + +#headlines-wrap-inner { + padding : 0px; + margin : 0px; + border-width : 0px; +} + +#headlines-frame { + padding : 0px; + border-width : 0px; + border-color : #ddd; + margin-top : 0px; + -webkit-overflow-scrolling : touch; +} + +#headlines-toolbar_splitter, #toolbar_splitter { + display : none; +} + +#toolbar { + padding : 0px; + margin : 0px; + border-width : 0px; + white-space: nowrap; + font-size : 12px; +} + +#main-toolbar { + background : white; + border-width : 0px 0px 1px 0px; + border-color : #ddd; + border-style : solid; + padding-left : 4px; + height : 26px; + +} + +#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 : #ddd; + border-width : 0px; + line-height: 1.5; + font-size : 15px; + overflow : auto; + -webkit-overflow-scrolling : touch; +} + +#feedTree .dijitTreeRow .dijitTreeLabel.Unread { + font-weight : bold; +} + +#feedTree .dijitTreeRow.Error .dijitTreeLabel { + color : red; +} + +img.feedIcon, img.tinyFeedIcon { + width : 16px; + height : 16px; + line-height : 16px; + vertical-align : middle; + display : inline-block; +} + +.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; + color : #555; + font-size : 11px; + font-style : italic; +} + +#headlines-spacer a, #headlines-spacer span { + color : #555; + padding : 10px; + display : block; +} + +#headlines-spacer a:hover { + color : #88b0f0; +} + +ul#filterDlg_Matches, ul#filterDlg_Actions { + max-height : 100px; + overflow : auto; + list-style-type : none; + border-style : solid; + border-color : #ddd; + border-width : 0px 1px 1px 1px; + background-color : white; + margin : 0px 0px 5px 0px; + padding : 0px; +} + +ul#filterDlg_Matches li, ul#filterDlg_Actions li { + cursor : pointer; + padding : 0px 0px 0px 5px; +} + +ul.helpKbList { + max-height : 300px; + overflow : auto; + list-style-type : none; + border : 1px solid #ddd; + background-color : #f5f5f5; + 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; +} + +span.collapseBtn { + cursor : pointer; +} + +div.postContent h1 { + font-size : 16px; +} + +div.postContent h2, +div.postContent h3, +div.postContent h4 { + font-size : 15px; +} + +div.postContent p { + max-width : 650px; + -webkit-hyphens: auto; + -moz-hyphens: auto; + hyphens: auto; +} + +div.postContent iframe { + min-width : 50%; + max-width : 98%; +} + +div.postHeader span.author { + color : #555; + font-size : 11px; + font-weight : normal; +} + +select.attachments { + display : block; + margin-top : 10px; + max-width : 120px; +} + +#selected_prompt { + margin-right : 25px; +} + +#feedTree img.feedIcon { + position : relative; + top : -2px; +} + +body#ttrssMain #feedTree .dijitTreeRow { + padding : 2px 0px 2px; + height : 22px; + border-width : 1px; + color : #333; +} + +ul#filterDlg_Matches li div.dijitCheckBox, ul#filterDlg_Actions li div.dijitCheckBox { + margin-right : 5px; +} + +body#ttrssMain #feedTree { + height : 100%; + overflow-x : hidden; + text-rendering: optimizelegibility; + font-family : "Segoe UI Web", "Segoe UI", Ubuntu, "DejaVu Sans", "Helvetica Neue", + Helvetica, Arial, sans-serif; +} + +body#ttrssMain #feedTree .counterNode.aux { + background : #f0f0f0; + color : #999; + border-color : #f0f0f0; +} + +body#ttrssMain #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; + position : relative; + line-height : 14px; + margin-right : 8px; + margin-top : 3px; + min-width : 23px; + height : 14px; +} + +#feedTree img[src*='indicator_white.gif'] { + position : relative; + top : -2px; +} + +span.highlight { + background-color : #ffff00; + color : #cc90cc; +} + +div.enclosure_title { + +} + +body#ttrssMain #headlines-frame .dijitCheckBox { + border-width : 0px; + opacity : 0.5; +} + +body#ttrssMain #headlines-frame .dijitCheckBoxHover, +body#ttrssMain #headlines-frame .dijitCheckBoxChecked { + opacity : 1; +} + +body#ttrssMain #feedTree .dijitTreeRow img.dijitTreeExpandoLeaf { + width : 16px; + height : 16px; + vertical-align : middle; + position : relative; +} + +:focus { + outline: none; +} diff --git a/css/utility.css b/css/utility.css new file mode 100644 index 0000000000..77452a9a5b --- /dev/null +++ b/css/utility.css @@ -0,0 +1,266 @@ +body { + background : #f5f5f5; + color : black; + padding : 0px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + margin-left : auto; + margin-right : auto; + max-width : 800px; +} + +body.small_margins { + margin : 1em; + max-width : none; +} + +form { + margin : 10px 0px 0px 0px; + padding : 0px; +} + +div.content { + overflow : hidden; + background : white; + border : 1px solid #ddd; + padding : 10px; + box-shadow : 0px 1px 1px -1px 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 { + display : none; +} + +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-width : 1px; + box-shadow : inset 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 : 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; +} + +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; +} diff --git a/css/zoom.css b/css/zoom.css new file mode 100644 index 0000000000..f2230d7c1b --- /dev/null +++ b/css/zoom.css @@ -0,0 +1,105 @@ +body#ttrssZoom { + margin-left : auto; + margin-right : auto; + padding : 20px; + max-width : 770px; + background : #f5f5f5; +} + +body#ttrssZoom div.postHeader div.postFeedTitle { + float : left; + text-align : right; + padding-left : 0px; + font-size : 11px; +} + +body#ttrssZoom div.postHeader a.postComments { + text-align : right; + padding-left : 0px; + font-size : 11px; +} + +body#ttrssZoom div.postHeader div.postDate { + float : none; + text-align : right; + padding-left : 0px; + color : #777; + font-size : 11px; +} + +body#ttrssZoom div.postHeader div.postTags { + color : #777; + font-size : 11px; +} + +body#ttrssZoom div.postHeader div.postTitle { + white-space : normal; + font-size : 16px; +} + +body#ttrssZoom div.postContent { + font-size : 15px; + line-height : 1.5; +} + +body#ttrssZoom div.postContent p { + max-width : 650px; + -webkit-hyphens: auto; + -moz-hyphens: auto; + hyphens: auto; +} + +body#ttrssZoom div.postHeader { + margin : 10px; + border-width : 0px 0px 1px 0px; + border-style : solid; + border-color : #eee; + background : white; +} + +body#ttrssZoom div.postReply { + border : 1px solid #ddd; + background : white; + box-shadow : 0px 1px 1px -1px rgba(0,0,0,0.1); +} + +body#ttrssZoom div.footer { + margin-top : 1em; + text-align : center; +} + +body#ttrssZoom div.postContent img { + max-width : 730px; + height : auto; +} + +body#ttrssZoom div.postContent blockquote { + margin : 5px 0px 5px 0px; + color : #555; + padding-left : 10px; + border-width : 0px 0px 0px 4px; + border-color : #ccc; + border-style : solid; +} + +body#ttrssZoom div.postContent code { + color : #009900; + font-family : monospace; + font-size : 12px; +} + +body#ttrssZoom div.postContent pre { + margin : 5px 0px 5px 0px; + padding : 10px; + color : #555; + font-family : monospace; + font-size : 12px; + border-width : 0px; + border-color : #ccc; + border-style : solid; + background : #f5f5f5; + display : block; + max-width : 98%; + overflow : auto; +} + diff --git a/db-prefs.php b/db-prefs.php deleted file mode 100644 index bc04785125..0000000000 --- a/db-prefs.php +++ /dev/null @@ -1,132 +0,0 @@ - 0) { - $value = db_fetch_result($result, 0, "value"); - $type_name = db_fetch_result($result, 0, "type_name"); - - if (!defined('DISABLE_SESSIONS') && !SINGLE_USER_MODE) { - if ($user_id = $_SESSION["uid"]) { - $_SESSION["prefs_cache"][$pref_name]["type"] = $type_name; - $_SESSION["prefs_cache"][$pref_name]["value"] = $value; - } - } - - return convert_pref_type($value, $type_name); - - } else { - if ($die_on_error) { - die("Fatal error, unknown preferences key: $pref_name"); - } else { - return null; - } - } - } - - function convert_pref_type($value, $type_name) { - if ($type_name == "bool") { - return $value == "true"; - } else if ($type_name == "integer") { - return sprintf("%d", $value); - } else { - return $value; - } - } - - function set_pref($link, $key, $value, $user_id = false) { - $key = db_escape_string($key); - $value = db_escape_string($value); - - if (!$user_id) { - $user_id = $_SESSION["uid"]; - $profile = $_SESSION["profile"]; - } else { - $user_id = sprintf("%d", $user_id); - $prefs_cache = false; - } - - if ($profile) { - $profile_qpart = "AND profile = '$profile'"; - } else { - $profile_qpart = "AND profile IS NULL"; - } - - if (get_schema_version($link) < 63) $profile_qpart = ""; - - $result = db_query($link, "SELECT type_name - FROM ttrss_prefs,ttrss_prefs_types - WHERE pref_name = '$key' AND type_id = ttrss_prefs_types.id"); - - if (db_num_rows($result) > 0) { - - $type_name = db_fetch_result($result, 0, "type_name"); - - if ($type_name == "bool") { - if ($value == "1" || $value == "true") { - $value = "true"; - } else { - $value = "false"; - } - } else if ($type_name == "integer") { - $value = sprintf("%d", $value); - } - - if ($pref_name == 'DEFAULT_ARTICLE_LIMIT' && $value == 0) { - $value = 30; - } - - db_query($link, "UPDATE ttrss_user_prefs SET - value = '$value' WHERE pref_name = '$key' - $profile_qpart - AND owner_uid = " . $_SESSION["uid"]); - - $_SESSION["prefs_cache"] = array(); - - } - } -?> diff --git a/db.php b/db.php deleted file mode 100644 index c07aa9fa25..0000000000 --- a/db.php +++ /dev/null @@ -1,128 +0,0 @@ -$query failed [$result]: " . pg_last_error($link)); - } - } - return $result; - } else if (DB_TYPE == "mysql") { - $result = mysql_query($query, $link); - if (!$result) { - $query = htmlspecialchars($query); - if ($die_on_error) { - die("Query $query failed: " . mysql_error($link)); - } - } - return $result; - } -} - -function db_fetch_assoc($result) { - if (DB_TYPE == "pgsql") { - return pg_fetch_assoc($result); - } else if (DB_TYPE == "mysql") { - return mysql_fetch_assoc($result); - } -} - - -function db_num_rows($result) { - if (DB_TYPE == "pgsql") { - return pg_num_rows($result); - } else if (DB_TYPE == "mysql") { - return mysql_num_rows($result); - } -} - -function db_fetch_result($result, $row, $param) { - if (DB_TYPE == "pgsql") { - return pg_fetch_result($result, $row, $param); - } else if (DB_TYPE == "mysql") { - // I hate incoherent naming of PHP functions - return mysql_result($result, $row, $param); - } -} - -function db_unescape_string($str) { - $tmp = str_replace("\\\"", "\"", $str); - $tmp = str_replace("\\'", "'", $tmp); - return $tmp; -} - -function db_close($link) { - if (DB_TYPE == "pgsql") { - - return pg_close($link); - - } else if (DB_TYPE == "mysql") { - return mysql_close($link); - } -} - -function db_affected_rows($link, $result) { - if (DB_TYPE == "pgsql") { - return pg_affected_rows($result); - } else if (DB_TYPE == "mysql") { - return mysql_affected_rows($link); - } -} - -function db_last_error($link) { - if (DB_TYPE == "pgsql") { - return pg_last_error($link); - } else if (DB_TYPE == "mysql") { - return mysql_error($link); - } -} - -?> diff --git a/errors.php b/errors.php index bd7b53fe40..d9185307a7 100644 --- a/errors.php +++ b/errors.php @@ -1,6 +1,10 @@ $error) { + + $error = preg_replace("/\n/", "", $error); + $error = preg_replace("/\"/", "\\\"", $error); + + print "ERRORS[$id] = \"$error\";\n"; + } + } ?> diff --git a/feed-icons/.empty b/feed-icons/.empty new file mode 100755 index 0000000000..e69de29bb2 diff --git a/feed-icons/index.html b/feed-icons/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/feedlist.js b/feedlist.js deleted file mode 100644 index b140c6d075..0000000000 --- a/feedlist.js +++ /dev/null @@ -1,640 +0,0 @@ -var _feed_cur_page = 0; -var _infscroll_disable = 0; -var _infscroll_request_sent = 0; -var feed_under_pointer = undefined; - -var mouse_is_down = false; -var mouse_y = 0; -var mouse_x = 0; - -var resize_enabled = false; -var selection_disabled = false; -var counters_last_request = 0; - -function toggle_sortable_feedlist(enabled) { - try { - - if (enabled) { - Sortable.create('feedList', {onChange: feedlist_dragsorted, only: "feedCat"}); - } else { - Sortable.destroy('feedList'); - } - - } catch (e) { - exception_error("toggle_sortable_feedlist", e); - } -} - -function viewCategory(cat) { - viewfeed(cat, '', true); - return false; -} - -function render_feedlist(data) { - try { - - var f = $("feeds-frame"); - f.innerHTML = data; -// cache_invalidate("FEEDLIST"); -// cache_inject("FEEDLIST", data, getInitParam("num_feeds")); - feedlist_init(); - - } catch (e) { - exception_error("render_feedlist", e); - } -} - -function feedlist_callback2(transport) { - try { - debug("feedlist_callback2"); - if (!transport_error_check(transport)) return; - render_feedlist(transport.responseText); - } catch (e) { - exception_error("feedlist_callback2", e); - } -} - -function viewNextFeedPage() { - try { - //if (!getActiveFeedId()) return; - - debug("viewNextFeedPage: calling viewfeed(), p: " + parseInt(_feed_cur_page+1)); - - viewfeed(getActiveFeedId(), undefined, activeFeedIsCat(), undefined, - undefined, parseInt(_feed_cur_page+1)); - - } catch (e) { - exception_error("viewNextFeedPage", e); - } -} - - -function viewfeed(feed, subop, is_cat, subop_param, skip_history, offset) { - try { - - if (offline_mode) return viewfeed_offline(feed, subop, is_cat, subop_param, - skip_history, offset); - -// if (!offset) page_offset = 0; - - last_requested_article = 0; - //counters_last_request = 0; - - if (feed == getActiveFeedId()) { - cache_invalidate("F:" + feed); - } - -/* if (getInitParam("theme") == "" || getInitParam("theme") == "compact") { - if (getInitParam("hide_feedlist") == 1) { - Element.hide("feeds-holder"); - } - } */ - - var force_nocache = false; - - var page_offset = 0; - - if (offset > 0) { - page_offset = offset; - } else { - page_offset = 0; - _feed_cur_page = 0; - _infscroll_disable = 0; - } - - if (getActiveFeedId() != feed) { - _feed_cur_page = 0; - active_post_id = 0; - _infscroll_disable = 0; - } - - if (page_offset != 0 && !subop) { - var date = new Date(); - var timestamp = Math.round(date.getTime() / 1000); - - debug("" + _infscroll_request_sent + " : " + timestamp + ""); - - if (_infscroll_request_sent && _infscroll_request_sent + 30 > timestamp) { - debug("infscroll request in progress, aborting"); - return; - } - - _infscroll_request_sent = timestamp; - } - - enableHotkeys(); - hideAuxDlg(); - closeInfoBox(); - - Form.enable("main_toolbar_form"); - - var toolbar_form = document.forms["main_toolbar_form"]; - var toolbar_query = Form.serialize("main_toolbar_form"); - - if (toolbar_form.query) { - if (toolbar_form.query.value != "") { - force_nocache = true; - } - toolbar_form.query.value = ""; - } - - var query = "?op=viewfeed&feed=" + feed + "&" + - toolbar_query + "&subop=" + param_escape(subop); - - if ($("search_form")) { - var search_query = Form.serialize("search_form"); - query = query + "&" + search_query; - $("search_form").query.value = ""; - closeInfoBox(true); - force_nocache = true; - } - -// debug("IS_CAT_STORED: " + activeFeedIsCat() + ", IS_CAT: " + is_cat); - - if (subop == "MarkAllRead") { - - catchup_local_feed(feed, is_cat); - - var show_next_feed = getInitParam("on_catchup_show_next_feed") == "1"; - - if (show_next_feed) { - - if (!activeFeedIsCat()) { - - var feedlist = $('feedList'); - - var next_unread_feed = getRelativeFeedId(feedlist, - feed, "next", true); - - if (!next_unread_feed) { - next_unread_feed = getRelativeFeedId(feedlist, - -3, "next", true); - } - - if (next_unread_feed) { - query = query + "&nuf=" + param_escape(next_unread_feed); - //setActiveFeedId(next_unread_feed); - feed = next_unread_feed; - } - } else { - - var next_unread_feed = getNextUnreadCat(feed); - - /* we don't need to specify that our next feed is actually - a category, because we're in the is_cat mode by definition - already */ - - if (next_unread_feed && show_next_feed) { - query = query + "&nuf=" + param_escape(next_unread_feed); - feed = next_unread_feed; - } - - } - } - } - - if (is_cat) { - query = query + "&cat=1"; - } - - if (page_offset != 0) { - query = query + "&skip=" + page_offset; - - // to prevent duplicate feed titles when showing grouped vfeeds - if (vgroup_last_feed) { - query = query + "&vgrlf=" + param_escape(vgroup_last_feed); - } - } - - Form.enable("main_toolbar_form"); - - // for piggybacked counters - - if (tagsAreDisplayed()) { - query = query + "&omode=lt"; - } else { - query = query + "&omode=flc"; - } - - if (!async_counters_work) { - query = query + "&csync=true"; - } - - debug(query); - - var container = $("headlinesInnerContainer"); - -/* if (container && page_offset == 0 && !isCdmMode()) { - new Effect.Fade(container, {duration: 1, to: 0.01, - queue: { position:'end', scope: 'FEEDL-' + feed, limit: 1 } } ); - } */ - - var unread_ctr = -1; - - if (!is_cat) unread_ctr = get_feed_unread(feed); - - var cache_check = false; - - if (unread_ctr != -1 && !page_offset && !force_nocache && !subop) { - - var cache_prefix = ""; - - if (is_cat) { - cache_prefix = "C:"; - } else { - cache_prefix = "F:"; - } - - cache_check = cache_check_param(cache_prefix + feed, unread_ctr); - debug("headline cache check: " + cache_check); - } - - if (cache_check) { - var f = $("headlines-frame"); - - clean_feed_selections(); - - setActiveFeedId(feed, is_cat); - - if (!is_cat) { - var feedr = $("FEEDR-" + feed); - if (feedr && !feedr.className.match("Selected")) { - feedr.className = feedr.className + "Selected"; - } - } else { - var feedr = $("FCAT-" + feed_id); - if (feedr && !feedr.className.match("Selected")) { - feedr.className = feedr.className + "Selected"; - } - } - - f.innerHTML = cache_find_param(cache_prefix + feed, unread_ctr); - - request_counters(); - remove_splash(); - - } else { - - if (!page_offset) { - var feedr; - - if (is_cat) { - feedr = $('FCAP-' + feed); - } else { - feedr = $('FEEDR-' + feed); - } - - if (feedr && !$('FLL-' + feed)) { - - var img = $('FIMG-' + feed); - - if (!is_cat && img) { - - if (!img.src.match("indicator_white")) { - img.alt = img.src; - img.src = getInitParam("sign_progress"); - } - - } else { - - if (!$('FLL-' + feed)) { - var ll = document.createElement('img'); - - ll.src = getInitParam("sign_progress_tiny"); - ll.className = 'hlLoading'; - ll.id = 'FLL-' + feed; - - feedr.appendChild(ll); - } - } - } - } - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - headlines_callback2(transport, page_offset); - } }); - } - - } catch (e) { - exception_error("viewfeed", e); - } -} - -function toggleCollapseCat_af(effect) { - //var caption = elem.id.replace("FCATLIST-", ""); - - try { - - var elem = effect.element; - var cat = elem.id.replace("FCATLIST-", ""); - var cap = $("FCAP-" + cat); - - if (Element.visible(elem)) { - cap.innerHTML = cap.innerHTML.replace("…", ""); - } else { - if (cap.innerHTML.lastIndexOf("…") != cap.innerHTML.length-3) { - cap.innerHTML = cap.innerHTML + "…"; - } - } - - } catch (e) { - exception_error("toggleCollapseCat_af", e); - } -} - -function toggleCollapseCat(cat) { - try { - - var cat_elem = $("FCAT-" + cat); - var cat_list = $("FCATLIST-" + cat).parentNode; - var caption = $("FCAP-" + cat); - - Effect.toggle('FCATLIST-' + cat, 'blind', { duration: 0.5, - afterFinish: toggleCollapseCat_af }); - - new Ajax.Request("backend.php", - { parameters: "backend.php?op=feeds&subop=collapse&cid=" + - param_escape(cat) } ); - - local_collapse_cat(cat); - - } catch (e) { - exception_error("toggleCollapseCat", e); - } -} - -function feedlist_dragsorted(ctr) { - try { - var elem = $("feedList"); - - var cats = elem.getElementsByTagName("LI"); - var ordered_cats = new Array(); - - for (var i = 0; i < cats.length; i++) { - if (cats[i].id && cats[i].id.match("FCAT-")) { - ordered_cats.push(cats[i].id.replace("FCAT-", "")); - } - } - - if (ordered_cats.length > 0) { - - var query = "?op=feeds&subop=catsort&corder=" + - param_escape(ordered_cats.toString()); - - debug(query); - - new Ajax.Request("backend.php", { parameters: query }); - } - - } catch (e) { - exception_error("feedlist_dragsorted", e); - } -} - -function feedlist_init() { - try { - loading_set_progress(90); - - debug("in feedlist init"); - - hideOrShowFeeds(getInitParam("hide_read_feeds") == 1); - document.onkeydown = hotkey_handler; - document.onmousemove = mouse_move_handler; - document.onmousedown = mouse_down_handler; - document.onmouseup = mouse_up_handler; - - if (!offline_mode) setTimeout("timeout()", 1); - - setTimeout("hotkey_prefix_timeout()", 5*1000); - - if (typeof correctPNG != 'undefined') { - correctPNG(); - } - - if (getActiveFeedId()) { - //debug("some feed is open on feedlist refresh, reloading"); - //setTimeout("viewCurrentFeed()", 100); - } else { - if (getInitParam("cdm_auto_catchup") != 1 && get_feed_unread(-3) > 0) { - notify_silent_next(); - setTimeout("viewfeed(-3)", 100); - } else { - remove_splash(); - } - } - - if (getInitParam("theme") == "" || - getInitParam("theme_options").match("hide_footer")) { - setTimeout("hide_footer()", 5000); - } - - init_collapsable_feedlist(getInitParam("theme")); - - toggle_sortable_feedlist(isFeedlistSortable()); - - } catch (e) { - exception_error("feedlist/init", e); - } -} - -function hide_footer_af(effect) { - try { - var c = $("content-frame"); - - if (c) { - c.style.bottom = "0px"; - - var ioa = $("inline_orig_article"); - - if (ioa) { - ioa.height = c.offsetHeight; - } - - } else { - var h = $("headlines-frame"); - - if (h) { - h.style.bottom = "0px"; - } - } - - } catch (e) { - exception_error("hide_footer_af", e); - } -} - -function hide_footer() { - try { - if (Element.visible("footer")) { - new Effect.Fade("footer", { afterFinish: hide_footer_af }); - } - } catch (e) { - exception_error("hide_footer", e); - } -} - -function init_collapsable_feedlist() { - try { - debug("init_collapsable_feedlist"); - - var theme = getInitParam("theme"); - var options = getInitParam("theme_options"); - - if (theme != "" && !options.match("collapse_feedlist")) return; - - var fbtn = $("collapse_feeds_btn"); - - if (fbtn) Element.show(fbtn); - - if (getInitParam("collapsed_feedlist") == 1) { - collapse_feedlist(); - } - - } catch (e) { - exception_error("init_hidden_feedlist", e); - } - -} - -function mouse_move_handler(e) { - try { - var client_y; - var client_x; - - if (window.event) { - client_y = window.event.clientY; - client_x = window.event.clientX; - } else if (e) { - client_x = e.screenX; - client_y = e.screenY; - } - - if (mouse_is_down) { - - if (mouse_y == 0) mouse_y = client_y; - if (mouse_x == 0) mouse_x = client_x; - - resize_headlines(mouse_x - client_x, mouse_y - client_y); - - mouse_y = client_y; - mouse_x = client_x; - - return false; - } - - } catch (e) { - exception_error("mouse_move_handler", e); - } -} - -function enable_selection(b) { - selection_disabled = !b; -} - -function enable_resize(b) { - resize_enabled = b; -} - -function mouse_down_handler(e) { - try { - - /* do not prevent right click */ - if (e && e.button && e.button == 2) return; - - if (resize_enabled) { - mouse_is_down = true; - mouse_x = 0; - mouse_y = 0; - document.onselectstart = function() { return false; }; - return false; - } - - if (selection_disabled) { - document.onselectstart = function() { return false; }; - return false; - } - - } catch (e) { - exception_error("mouse_down_handler", e); - } -} - -function mouse_up_handler(e) { - try { - mouse_is_down = false; - - if (!selection_disabled) { - document.onselectstart = null; - var e = $("headlineActionsBody"); - if (e) Element.hide(e); - - var e = $("offlineModeDrop"); - if (e) Element.hide(e); - - } - - } catch (e) { - exception_error("mouse_up_handler", e); - } -} - -function request_counters_real() { - - try { - - if (offline_mode) return; - - debug("requesting counters..."); - - var query = "?op=rpc&subop=getAllCounters"; - - if (tagsAreDisplayed()) { - query = query + "&omode=tl"; - } else { - query = query + "&omode=flc"; - } - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - try { - all_counters_callback2(transport, true); - } catch (e) { - exception_error("viewfeed/getcounters", e); - } - } }); - - } catch (e) { - exception_error("request_counters_real", e); - } -} - - -function request_counters() { - - try { - - if (getInitParam("bw_limit") == "1") return; - - var date = new Date(); - var timestamp = Math.round(date.getTime() / 1000); - -// if (getInitParam("sync_counters") == "1" || -// timestamp - counters_last_request > 10) { - - if (timestamp - counters_last_request > 15) { - debug("scheduling request of counters..."); - window.setTimeout("request_counters_real()", 1000); - counters_last_request = timestamp; - } else { - debug("request_counters: rate limit reached: " + (timestamp - counters_last_request)); - } - - } catch (e) { - exception_error("request_counters", e); - } -} - - diff --git a/functions.js b/functions.js deleted file mode 100644 index ff35961e86..0000000000 --- a/functions.js +++ /dev/null @@ -1,2188 +0,0 @@ -var hotkeys_enabled = true; -var notify_silent = false; -var last_progress_point = 0; -var async_counters_work = false; - -/* add method to remove element from array */ - -Array.prototype.remove = function(s) { - for (var i=0; i < this.length; i++) { - if (s == this[i]) this.splice(i, 1); - } -} - -function is_opera() { - return window.opera; -} - -function exception_error(location, e, ext_info) { - var msg = format_exception_error(location, e); - - if (!ext_info) ext_info = "N/A"; - - disableHotkeys(); - - try { - - var ebc = $("xebContent"); - - if (ebc) { - - Element.show("dialog_overlay"); - Element.show("errorBoxShadow"); - - if (ext_info) { - if (ext_info.responseText) { - ext_info = ext_info.responseText; - } - } - - ebc.innerHTML = - "
Error message:
" + - "
" + msg + "
" + - "
Additional information:
" + - ""; - - } else { - alert(msg); - } - - } catch (e) { - alert(msg); - - } - -} - -function format_exception_error(location, e) { - var msg; - - if (e.fileName) { - var base_fname = e.fileName.substring(e.fileName.lastIndexOf("/") + 1); - - msg = "Exception: " + e.name + ", " + e.message + - "\nFunction: " + location + "()" + - "\nLocation: " + base_fname + ":" + e.lineNumber; - - } else if (e.description) { - msg = "Exception: " + e.description + "\nFunction: " + location + "()"; - } else { - msg = "Exception: " + e + "\nFunction: " + location + "()"; - } - - debug("EXCEPTION: " + msg + ""); - - return msg; -} - - -function disableHotkeys() { - hotkeys_enabled = false; -} - -function enableHotkeys() { - hotkeys_enabled = true; -} - -function param_escape(arg) { - if (typeof encodeURIComponent != 'undefined') - return encodeURIComponent(arg); - else - return escape(arg); -} - -function param_unescape(arg) { - if (typeof decodeURIComponent != 'undefined') - return decodeURIComponent(arg); - else - return unescape(arg); -} - -function delay(gap) { - var then,now; - then=new Date().getTime(); - now=then; - while((now-then) " + msg; - } else if (n_type == 3) { - n.className = "notifyError"; - msg = " " + msg; - } else if (n_type == 4) { - n.className = "notifyInfo"; - msg = " " + msg; - } - -// msg = " " + msg; - - nb.innerHTML = msg; - - if (!no_hide) { - notify_hide_timerid = window.setTimeout("hide_notify()", 3000); - } -} - -function notify(msg, no_hide) { - notify_real(msg, no_hide, 1); -} - -function notify_progress(msg, no_hide) { - notify_real(msg, no_hide, 2); -} - -function notify_error(msg, no_hide) { - notify_real(msg, no_hide, 3); - -} - -function notify_info(msg, no_hide) { - notify_real(msg, no_hide, 4); -} - -function printLockingError() { - notify_info("Please wait until operation finishes."); -} - -function cleanSelected(element) { - var content = $(element); - - for (i = 0; i < content.rows.length; i++) { - content.rows[i].className = content.rows[i].className.replace("Selected", ""); - } -} - -function getVisibleUnreadHeadlines() { - var content = $("headlinesList"); - - var rows = new Array(); - - if (!content) return rows; - - for (i = 0; i < content.rows.length; i++) { - var row_id = content.rows[i].id.replace("RROW-", ""); - if (row_id.length > 0 && content.rows[i].className.match("Unread")) { - rows.push(row_id); - } - } - return rows; -} - -function getVisibleHeadlineIds() { - - var content = $("headlinesList"); - - var rows = new Array(); - - if (!content) return rows; - - for (i = 0; i < content.rows.length; i++) { - var row_id = content.rows[i].id.replace("RROW-", ""); - if (row_id.length > 0) { - rows.push(row_id); - } - } - return rows; -} - -function getFirstVisibleHeadlineId() { - if (isCdmMode()) { - var rows = cdmGetVisibleArticles(); - return rows[0]; - } else { - var rows = getVisibleHeadlineIds(); - return rows[0]; - } -} - -function getLastVisibleHeadlineId() { - if (isCdmMode()) { - var rows = cdmGetVisibleArticles(); - return rows[rows.length-1]; - } else { - var rows = getVisibleHeadlineIds(); - return rows[rows.length-1]; - } -} - -function markHeadline(id) { - var row = $("RROW-" + id); - if (row) { - var is_active = false; - - if (row.className.match("Active")) { - is_active = true; - } - row.className = row.className.replace("Selected", ""); - row.className = row.className.replace("Active", ""); - row.className = row.className.replace("Insensitive", ""); - - if (is_active) { - row.className = row.className = "Active"; - } - - var check = $("RCHK-" + id); - - if (check) { - check.checked = true; - } - - row.className = row.className + "Selected"; - - } -} - -function getFeedIds() { - var content = $("feedsList"); - - var rows = new Array(); - - for (i = 0; i < content.rows.length; i++) { - var id = content.rows[i].id.replace("FEEDR-", ""); - if (id.length > 0) { - rows.push(id); - } - } - - return rows; -} - -function setCookie(name, value, lifetime, path, domain, secure) { - - var d = false; - - if (lifetime) { - d = new Date(); - d.setTime(d.getTime() + (lifetime * 1000)); - } - - debug("setCookie: " + name + " => " + value + ": " + d); - - int_setCookie(name, value, d, path, domain, secure); - -} - -function int_setCookie(name, value, expires, path, domain, secure) { - document.cookie= name + "=" + escape(value) + - ((expires) ? "; expires=" + expires.toGMTString() : "") + - ((path) ? "; path=" + path : "") + - ((domain) ? "; domain=" + domain : "") + - ((secure) ? "; secure" : ""); -} - -function delCookie(name, path, domain) { - if (getCookie(name)) { - document.cookie = name + "=" + - ((path) ? ";path=" + path : "") + - ((domain) ? ";domain=" + domain : "" ) + - ";expires=Thu, 01-Jan-1970 00:00:01 GMT"; - } -} - - -function getCookie(name) { - - var dc = document.cookie; - var prefix = name + "="; - var begin = dc.indexOf("; " + prefix); - if (begin == -1) { - begin = dc.indexOf(prefix); - if (begin != 0) return null; - } - else { - begin += 2; - } - var end = document.cookie.indexOf(";", begin); - if (end == -1) { - end = dc.length; - } - return unescape(dc.substring(begin + prefix.length, end)); -} - -function gotoPreferences() { - document.location.href = "prefs.php"; -} - -function gotoMain() { - document.location.href = "tt-rss.php"; -} - -function gotoExportOpml() { - document.location.href = "opml.php?op=Export"; -} - -function parse_counters(reply, scheduled_call) { - try { - - var feeds_found = 0; - - var elems = reply.getElementsByTagName("counter"); - - for (var l = 0; l < elems.length; l++) { - - var id = elems[l].getAttribute("id"); - var t = elems[l].getAttribute("type"); - var ctr = elems[l].getAttribute("counter"); - var error = elems[l].getAttribute("error"); - var has_img = elems[l].getAttribute("hi"); - var updated = elems[l].getAttribute("updated"); - var title = elems[l].getAttribute("title"); - var xmsg = elems[l].getAttribute("xmsg"); - - if (id == "global-unread") { - - if (ctr > global_unread) { - offlineDownloadStart(1); - } - - global_unread = ctr; - updateTitle(); - continue; - } - - if (id == "subscribed-feeds") { - feeds_found = ctr; - continue; - } - - if (t == "category") { - var catctr = $("FCATCTR-" + id); - if (catctr) { - catctr.innerHTML = "(" + ctr + ")"; - if (ctr > 0) { - catctr.className = "catCtrHasUnread"; - } else { - catctr.className = "catCtrNoUnread"; - } - } - continue; - } - - var feedctr = $("FEEDCTR-" + id); - var feedu = $("FEEDU-" + id); - var feedr = $("FEEDR-" + id); - var feed_img = $("FIMG-" + id); - var feedlink = $("FEEDL-" + id); - var feedupd = $("FLUPD-" + id); - - if (updated && feedlink) { - if (error) { - feedlink.title = "Error: " + error + " (" + updated + ")"; - } else { - feedlink.title = "Updated: " + updated; - } - } - - if (feedupd) { - if (!updated) updated = ""; - - if (error) { - if (xmsg) { - feedupd.innerHTML = updated + " " + xmsg + " (Error)"; - } else { - feedupd.innerHTML = updated + " (Error)"; - } - } else { - if (xmsg) { - feedupd.innerHTML = updated + " " + xmsg; - } else { - feedupd.innerHTML = updated; - } - } - } - - if (has_img && feed_img) { - if (!feed_img.src.match(id + ".ico")) { - feed_img.src = getInitParam("icons_location") + "/" + id + ".ico"; - } - } - - if (feedlink && title) { - feedlink.innerHTML = title; - } - - if (feedctr && feedu && feedr) { - - if (parseInt(ctr) > 0 && - parseInt(feedu.innerHTML) < parseInt(ctr) && - id == getActiveFeedId() && scheduled_call) { - - displayNewContentPrompt(id); - } - - var row_needs_hl = (ctr > 0 && ctr > parseInt(feedu.innerHTML)); - - feedu.innerHTML = ctr; - - if (error) { - feedr.className = feedr.className.replace("feed", "error"); - } else if (id > 0) { - feedr.className = feedr.className.replace("error", "feed"); - } - - if (ctr > 0) { - feedctr.className = "feedCtrHasUnread"; - if (!feedr.className.match("Unread")) { - var is_selected = feedr.className.match("Selected"); - - feedr.className = feedr.className.replace("Selected", ""); - feedr.className = feedr.className.replace("Unread", ""); - - feedr.className = feedr.className + "Unread"; - - if (is_selected) { - feedr.className = feedr.className + "Selected"; - } - - } - - if (row_needs_hl && - !getInitParam("theme_options").match('no_highlights')) { - new Effect.Highlight(feedr, {duration: 1, startcolor: "#fff7d5", - queue: { position:'end', scope: 'EFQ-' + id, limit: 1 } } ); - - cache_invalidate("F:" + id); - } - } else { - feedctr.className = "feedCtrNoUnread"; - feedr.className = feedr.className.replace("Unread", ""); - } - } - } - - hideOrShowFeeds(getInitParam("hide_read_feeds") == 1); - - var feeds_stored = number_of_feeds; - - debug("Feed counters, C: " + feeds_found + ", S:" + feeds_stored); - - if (feeds_stored != feeds_found) { - number_of_feeds = feeds_found; - - if (feeds_stored != 0 && feeds_found != 0) { - debug("Subscribed feed number changed, refreshing feedlist"); - setTimeout('updateFeedList(false, false)', 50); - } - } else { -/* var fl = $("feeds-frame").innerHTML; - if (fl) { - cache_invalidate("FEEDLIST"); - cache_inject("FEEDLIST", fl, getInitParam("num_feeds")); - } */ - } - - } catch (e) { - exception_error("parse_counters", e); - } -} - -function parse_counters_reply(transport, scheduled_call) { - - if (!transport.responseXML) { - notify_error("Backend did not return valid XML", true); - return; - } - - var reply = transport.responseXML.firstChild; - - if (!reply) { - notify_error("Backend did not return expected XML object", true); - updateTitle(""); - return; - } - - if (!transport_error_check(transport)) return; - - var counters = reply.getElementsByTagName("counters")[0]; - - parse_counters(counters, scheduled_call); - - var runtime_info = reply.getElementsByTagName("runtime-info")[0]; - - parse_runtime_info(runtime_info); - - if (feedsSortByUnread()) { - resort_feedlist(); - } - - hideOrShowFeeds(getInitParam("hide_read_feeds") == 1); - -} - -function all_counters_callback2(transport, async_call) { - try { - if (async_call) async_counters_work = true; - - if (offline_mode) return; - - debug("all_counters_callback2 IN: " + transport + ""); - parse_counters_reply(transport); - debug("all_counters_callback2 OUT: " + transport + ""); - - } catch (e) { - exception_error("all_counters_callback2", e, transport); - } -} - -function get_feed_unread(id) { - try { - return parseInt($("FEEDU-" + id).innerHTML); - } catch (e) { - return -1; - } -} - -function get_cat_unread(id) { - try { - var ctr = $("FCATCTR-" + id).innerHTML; - ctr = ctr.replace("(", ""); - ctr = ctr.replace(")", ""); - return parseInt(ctr); - } catch (e) { - return -1; - } -} - -function get_feed_entry_unread(elem) { - - var id = elem.id.replace("FEEDR-", ""); - - if (id <= 0) { - return -1; - } - - try { - return parseInt($("FEEDU-" + id).innerHTML); - } catch (e) { - return -1; - } -} - -function get_feed_entry_name(elem) { - var id = elem.id.replace("FEEDR-", ""); - return getFeedName(id); -} - - -function resort_category(node, cat_mode) { - - try { - - debug("resort_category: " + node + " CM=" + cat_mode); - - var by_unread = feedsSortByUnread(); - - var list = node.getElementsByTagName("LI"); - - for (i = 0; i < list.length; i++) { - - for (j = i+1; j < list.length; j++) { - - var tmp_val = get_feed_entry_unread(list[i]); - var cur_val = get_feed_entry_unread(list[j]); - - var tmp_name = get_feed_entry_name(list[i]); - var cur_name = get_feed_entry_name(list[j]); - - var valid_pair = cat_mode || (list[i].id.match(/FEEDR-[0-9]/) && - list[j].id.match(/FEEDR-[0-9]/)); - - if (valid_pair && ((by_unread && (cur_val > tmp_val)) || (!by_unread && (cur_name < tmp_name)))) { - tempnode_i = list[i].cloneNode(true); - tempnode_j = list[j].cloneNode(true); - node.replaceChild(tempnode_i, list[j]); - node.replaceChild(tempnode_j, list[i]); - } - } - } - - } catch (e) { - exception_error("resort_category", e); - } - -} - -function resort_feedlist() { - debug("resort_feedlist"); - - if ($("FCATLIST--1")) { - - var lists = document.getElementsByTagName("UL"); - - for (var i = 0; i < lists.length; i++) { - if (lists[i].id && lists[i].id.match("FCATLIST-")) { - resort_category(lists[i], true); - } - } - - } else { - resort_category($("feedList"), false); - } -} - -/** * @(#)isNumeric.js * * Copyright (c) 2000 by Sundar Dorai-Raj - * * @author Sundar Dorai-Raj - * * Email: sdoraira@vt.edu - * * This program is free software; you can redistribute it and/or - * * modify it under the terms of the GNU General Public License - * * as published by the Free Software Foundation; either version 2 - * * of the License, or (at your option) any later version, - * * provided that any use properly credits the author. - * * This program is distributed in the hope that it will be useful, - * * but WITHOUT ANY WARRANTY; without even the implied warranty of - * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * * GNU General Public License for more details at http://www.gnu.org * * */ - - var numbers=".0123456789"; - function isNumeric(x) { - // is x a String or a character? - if(x.length>1) { - // remove negative sign - x=Math.abs(x)+""; - for(j=0;j=0) return true; - return false; - } - } - - -function hideOrShowFeeds(hide) { - - try { - - debug("hideOrShowFeeds: " + hide); - - if ($("FCATLIST--1")) { - - var lists = document.getElementsByTagName("UL"); - - for (var i = 0; i < lists.length; i++) { - if (lists[i].id && lists[i].id.match("FCATLIST-")) { - - var id = lists[i].id.replace("FCATLIST-", ""); - hideOrShowFeedsCategory(id, hide); - } - } - - } else { - hideOrShowFeedsCategory(null, hide); - } - - } catch (e) { - exception_error("hideOrShowFeeds", e); - } -} - -function hideOrShowFeedsCategory(id, hide) { - - try { - - var node = null; - var cat_node = null; - - if (id) { - node = $("FCATLIST-" + id); - cat_node = $("FCAT-" + id); - } else { - node = $("feedList"); // no categories - } - - // debug("hideOrShowFeedsCategory: " + node + " (" + hide + ")"); - - var cat_unread = 0; - - if (!node) { - debug("hideOrShowFeeds: passed node is null, aborting"); - return; - } - - // debug("cat: " + node.id); - - if (node.hasChildNodes() && node.firstChild.nextSibling != false) { - for (i = 0; i < node.childNodes.length; i++) { - if (node.childNodes[i].nodeName != "LI") { continue; } - - if (node.childNodes[i].style != undefined) { - - var has_unread = (node.childNodes[i].className != "feed" && - node.childNodes[i].className != "label" && - !(!getInitParam("hide_read_shows_special") && - node.childNodes[i].className == "virt") && - node.childNodes[i].className != "error" && - node.childNodes[i].className != "tag"); - - // debug(node.childNodes[i].id + " --> " + has_unread); - - if (hide && !has_unread) { - //node.childNodes[i].style.display = "none"; - var id = node.childNodes[i].id; - Effect.Fade(node.childNodes[i], {duration : 0.3, - queue: { position: 'end', scope: 'FFADE-' + id, limit: 1 }}); - } - - if (!hide) { - node.childNodes[i].style.display = "list-item"; - //Effect.Appear(node.childNodes[i], {duration : 0.3}); - } - - if (has_unread) { - node.childNodes[i].style.display = "list-item"; - cat_unread++; - //Effect.Appear(node.childNodes[i], {duration : 0.3}); - //Effect.Highlight(node.childNodes[i]); - } - } - } - } - - // debug("end cat: " + node.id + " unread " + cat_unread); - - if (cat_node) { - - if (cat_unread == 0) { - if (cat_node.style == undefined) { - debug("ERROR: supplied cat_node " + cat_node + - " has no styles. WTF?"); - return; - } - if (hide) { - //cat_node.style.display = "none"; - Effect.Fade(cat_node, {duration : 0.3, - queue: { position: 'end', scope: 'CFADE-' + node.id, limit: 1 }}); - } else { - cat_node.style.display = "list-item"; - } - } else { - try { - cat_node.style.display = "list-item"; - } catch (e) { - debug(e); - } - } - } - -// debug("unread for category: " + cat_unread); - - } catch (e) { - exception_error("hideOrShowFeedsCategory", e); - } -} - -function selectTableRow(r, do_select) { - r.className = r.className.replace("Selected", ""); - - if (do_select) { - r.className = r.className + "Selected"; - } -} - -function selectTableRowById(elem_id, check_id, do_select) { - - try { - - var row = $(elem_id); - - if (row) { - selectTableRow(row, do_select); - } - - var check = $(check_id); - - if (check) { - check.checked = do_select; - } - } catch (e) { - exception_error("selectTableRowById", e); - } -} - -function selectTableRowsByIdPrefix(content_id, prefix, check_prefix, do_select, - classcheck, reset_others) { - - var content = $(content_id); - - if (!content) { - alert("[selectTableRows] Element " + content_id + " not found."); - return; - } - - for (i = 0; i < content.rows.length; i++) { - if (Element.visible(content.rows[i])) { - if (!classcheck || content.rows[i].className.match(classcheck)) { - - if (content.rows[i].id.match(prefix)) { - selectTableRow(content.rows[i], do_select); - - var row_id = content.rows[i].id.replace(prefix, ""); - var check = $(check_prefix + row_id); - - if (check) { - check.checked = do_select; - } - } else if (reset_others) { - selectTableRow(content.rows[i], false); - - var row_id = content.rows[i].id.replace(prefix, ""); - var check = $(check_prefix + row_id); - - if (check) { - check.checked = false; - } - - } - } else if (reset_others) { - selectTableRow(content.rows[i], false); - - var row_id = content.rows[i].id.replace(prefix, ""); - var check = $(check_prefix + row_id); - - if (check) { - check.checked = false; - } - - } - } - } -} - -function getSelectedTableRowIds(content_id, prefix) { - - var content = $(content_id); - - if (!content) { - alert("[getSelectedTableRowIds] Element " + content_id + " not found."); - return; - } - - var sel_rows = new Array(); - - for (i = 0; i < content.rows.length; i++) { - if (content.rows[i].id.match(prefix) && - content.rows[i].className.match("Selected")) { - - var row_id = content.rows[i].id.replace(prefix + "-", ""); - sel_rows.push(row_id); - } - } - - return sel_rows; - -} - -function toggleSelectRowById(sender, id) { - var row = $(id); - - if (sender.checked) { - if (!row.className.match("Selected")) { - row.className = row.className + "Selected"; - } - } else { - if (row.className.match("Selected")) { - row.className = row.className.replace("Selected", ""); - } - } -} - -function toggleSelectListRow(sender) { - var parent_row = sender.parentNode; - - if (sender.checked) { - if (!parent_row.className.match("Selected")) { - parent_row.className = parent_row.className + "Selected"; - } - } else { - if (parent_row.className.match("Selected")) { - parent_row.className = parent_row.className.replace("Selected", ""); - } - } -} - -function tSR(sender) { - return toggleSelectRow(sender); -} - -function toggleSelectRow(sender) { - var parent_row = sender.parentNode.parentNode; - - if (sender.checked) { - if (!parent_row.className.match("Selected")) { - parent_row.className = parent_row.className + "Selected"; - } - } else { - if (parent_row.className.match("Selected")) { - parent_row.className = parent_row.className.replace("Selected", ""); - } - } -} - -function getNextUnreadCat(id) { - try { - var rows = $("feedList").getElementsByTagName("LI"); - var feeds = new Array(); - - var unread_only = true; - var is_cat = true; - - for (var i = 0; i < rows.length; i++) { - if (rows[i].id.match("FCAT-")) { - if (rows[i].id == "FCAT-" + id && is_cat || (Element.visible(rows[i]) && Element.visible(rows[i].parentNode))) { - - var cat_id = parseInt(rows[i].id.replace("FCAT-", "")); - - if (cat_id >= 0) { - if (!unread_only || get_cat_unread(cat_id) > 0) { - feeds.push(cat_id); - } - } - } - } - } - - var idx = feeds.indexOf(id); - if (idx != -1 && idx < feeds.length) { - return feeds[idx+1]; - } else { - return feeds.shift(); - } - - } catch (e) { - exception_error("getNextUnreadCat", e); - } -} - -function getRelativeFeedId2(id, is_cat, direction, unread_only) { - try { - -// alert(id + " IC: " + is_cat + " D: " + direction + " U: " + unread_only); - - var rows = $("feedList").getElementsByTagName("LI"); - var feeds = new Array(); - - for (var i = 0; i < rows.length; i++) { - if (rows[i].id.match("FEEDR-")) { - - if (rows[i].id == "FEEDR-" + id && !is_cat || (Element.visible(rows[i]) && Element.visible(rows[i].parentNode))) { - - if (!unread_only || - (rows[i].className.match("Unread") || rows[i].id == "FEEDR-" + id)) { - feeds.push(rows[i].id.replace("FEEDR-", "")); - } - } - } - - if (rows[i].id.match("FCAT-")) { - if (rows[i].id == "FCAT-" + id && is_cat || (Element.visible(rows[i]) && Element.visible(rows[i].parentNode))) { - - var cat_id = parseInt(rows[i].id.replace("FCAT-", "")); - - if (cat_id >= 0) { - if (!unread_only || get_cat_unread(cat_id) > 0) { - feeds.push("CAT:"+cat_id); - } - } - } - } - } - -// alert(feeds.toString()); - - if (!id) { - if (direction == "next") { - return feeds.shift(); - } else { - return feeds.pop(); - } - } else { - if (direction == "next") { - if (is_cat) id = "CAT:" + id; - var idx = feeds.indexOf(id); - if (idx != -1 && idx < feeds.length) { - return feeds[idx+1]; - } else { - return getRelativeFeedId2(false, is_cat, direction, unread_only); - } - } else { - if (is_cat) id = "CAT:" + id; - var idx = feeds.indexOf(id); - if (idx > 0) { - return feeds[idx-1]; - } else { - return getRelativeFeedId2(false, is_cat, direction, unread_only); - } - } - - } - - } catch (e) { - exception_error("getRelativeFeedId2", e); - } -} - -function getRelativeFeedId(list, id, direction, unread_only) { - var rows = list.getElementsByTagName("LI"); - var feeds = new Array(); - - for (var i = 0; i < rows.length; i++) { - if (rows[i].id.match("FEEDR-")) { - - if (rows[i].id == "FEEDR-" + id || (Element.visible(rows[i]) && Element.visible(rows[i].parentNode))) { - - if (!unread_only || - (rows[i].className.match("Unread") || rows[i].id == "FEEDR-" + id)) { - feeds.push(rows[i].id.replace("FEEDR-", "")); - } - } - } - } - - if (!id) { - if (direction == "next") { - return feeds.shift(); - } else { - return feeds.pop(); - } - } else { - if (direction == "next") { - var idx = feeds.indexOf(id); - if (idx != -1 && idx < feeds.length) { - return feeds[idx+1]; - } else { - return getRelativeFeedId(list, false, direction, unread_only); - } - } else { - var idx = feeds.indexOf(id); - if (idx > 0) { - return feeds[idx-1]; - } else { - return getRelativeFeedId(list, false, direction, unread_only); - } - } - - } -} - -function showBlockElement(id, h_id) { - var elem = $(id); - - if (elem) { - elem.style.display = "block"; - - if (h_id) { - elem = $(h_id); - if (elem) { - elem.style.display = "none"; - } - } - } else { - alert("[showBlockElement] can't find element with id " + id); - } -} - -function appearBlockElement_afh(effect) { - -} - -function checkboxToggleElement(elem, id) { - if (elem.checked) { - Effect.Appear(id, {duration : 0.5}); - } else { - Effect.Fade(id, {duration : 0.5}); - } -} - -function appearBlockElement(id, h_id) { - - try { - if (h_id) { - Effect.Fade(h_id); - } - Effect.SlideDown(id, {duration : 1.0, afterFinish: appearBlockElement_afh}); - } catch (e) { - exception_error("appearBlockElement", e); - } - -} - -function hideParentElement(e) { - e.parentNode.style.display = "none"; -} - -function dropboxSelect(e, v) { - for (i = 0; i < e.length; i++) { - if (e[i].value == v) { - e.selectedIndex = i; - break; - } - } -} - -// originally stolen from http://www.11tmr.com/11tmr.nsf/d6plinks/MWHE-695L9Z -// bugfixed just a little bit :-) -function getURLParam(strParamName){ - var strReturn = ""; - var strHref = window.location.href; - - if (strHref.indexOf("#") == strHref.length-1) { - strHref = strHref.substring(0, strHref.length-1); - } - - if ( strHref.indexOf("?") > -1 ){ - var strQueryString = strHref.substr(strHref.indexOf("?")); - var aQueryString = strQueryString.split("&"); - for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){ - if (aQueryString[iParam].indexOf(strParamName + "=") > -1 ){ - var aParam = aQueryString[iParam].split("="); - strReturn = aParam[1]; - break; - } - } - } - return strReturn; -} - -function leading_zero(p) { - var s = String(p); - if (s.length == 1) s = "0" + s; - return s; -} - -function closeErrorBox() { - - if (Element.visible("errorBoxShadow")) { - Element.hide("dialog_overlay"); - Element.hide("errorBoxShadow"); - - enableHotkeys(); - } - - return false; -} - -function closeInfoBox(cleanup) { - - try { - enableHotkeys(); - - if (Element.visible("infoBoxShadow")) { - Element.hide("dialog_overlay"); - Element.hide("infoBoxShadow"); - - if (cleanup) $("infoBox").innerHTML = " "; - } - } catch (e) { - exception_error("closeInfoBox", e); - } - - return false; -} - - -function displayDlg(id, param, callback) { - - notify_progress("Loading, please wait...", true); - - disableHotkeys(); - - var query = "?op=dlg&id=" + - param_escape(id) + "¶m=" + param_escape(param); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function (transport) { - infobox_callback2(transport); - if (callback) callback(transport); - } }); - - return false; -} - -function infobox_submit_callback2(transport) { - closeInfoBox(); - - try { - // called from prefs, reload tab - if (typeof active_tab != 'undefined' && active_tab) { - selectTab(active_tab, false); - } - } catch (e) { } - - if (transport.responseText) { - notify_info(transport.responseText); - } -} - -function infobox_callback2(transport) { - try { - - debug("infobox_callback2"); - - var box = $('infoBox'); - - if (box) { - - if (!getInitParam("infobox_disable_overlay")) { - Element.show("dialog_overlay"); - } - - box.innerHTML=transport.responseText; - Element.show("infoBoxShadow"); - //Effect.SlideDown("infoBoxShadow", {duration : 1.0}); - - - } - - disableHotkeys(); - - notify(""); - } catch (e) { - exception_error("infobox_callback2", e); - } -} - -function createFilter() { - - try { - - var form = document.forms['filter_add_form']; - var reg_exp = form.reg_exp.value; - - if (reg_exp == "") { - alert(__("Can't add filter: nothing to match on.")); - return false; - } - - var query = Form.serialize("filter_add_form"); - - // we can be called from some other tab in Prefs - if (typeof active_tab != 'undefined' && active_tab) { - active_tab = "filterConfig"; - } - - new Ajax.Request("backend.php?" + query, { - onComplete: function (transport) { - infobox_submit_callback2(transport); - } }); - - return true; - - } catch (e) { - exception_error("createFilter", e); - } -} - -function isValidURL(s) { - return s.match("http://") != null || s.match("https://") != null || s.match("feed://") != null; -} - -function subscribeToFeed() { - - try { - - var form = document.forms['feed_add_form']; - var feed_url = form.feed_url.value; - - if (feed_url == "") { - alert(__("Can't subscribe: no feed URL given.")); - return false; - } - - notify_progress(__("Subscribing to feed..."), true); - - var query = Form.serialize("feed_add_form"); - - debug("subscribe q: " + query); - - Form.disable("feed_add_form"); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - //dlg_frefresh_callback(transport); - - notify(''); - - var result = transport.responseXML.getElementsByTagName('result')[0]; - var rc = parseInt(result.getAttribute('code')); - - Form.enable("feed_add_form"); - - switch (rc) { - case 1: - closeInfoBox(); - notify_info(__("Subscribed to %s").replace("%s", feed_url)); - - if (inPreferences()) { - updateFeedList(); - } else { - setTimeout('updateFeedList(false, false)', 50); - } - break; - case 2: - alert(__("Can't subscribe to the specified URL.")); - break; - case 0: - alert(__("You are already subscribed to this feed.")); - break; - } - - } }); - - } catch (e) { - exception_error("subscribeToFeed", e); - } - - return false; -} - -function filterCR(e, f) -{ - var key; - - if(window.event) - key = window.event.keyCode; //IE - else - key = e.which; //firefox - - if (key == 13) { - if (typeof f != 'undefined') { - f(); - return false; - } else { - return false; - } - } else { - return true; - } -} - -var debug_last_class = "even"; - -function debug(msg) { - - if (debug_last_class == "even") { - debug_last_class = "odd"; - } else { - debug_last_class = "even"; - } - - var c = $('debug_output'); - if (c && Element.visible(c)) { - while (c.lastChild != 'undefined' && c.childNodes.length > 100) { - c.removeChild(c.lastChild); - } - - var d = new Date(); - var ts = leading_zero(d.getHours()) + ":" + leading_zero(d.getMinutes()) + - ":" + leading_zero(d.getSeconds()); - c.innerHTML = "
  • [" + ts + "] " + - msg + "
  • " + c.innerHTML; - } -} - -function getInitParam(key) { - return init_params[key]; -} - -function setInitParam(key, value) { - init_params[key] = value; -} - -function fatalError(code, msg, ext_info) { - try { - - if (!ext_info) ext_info = "N/A"; - - if (code == 6) { - window.location.href = "tt-rss.php"; - } else if (code == 5) { - window.location.href = "update.php"; - } else { - - if (msg == "") msg = "Unknown error"; - - var ebc = $("xebContent"); - - if (ebc) { - - Element.show("dialog_overlay"); - Element.show("errorBoxShadow"); - Element.hide("xebBtn"); - - if (ext_info) { - if (ext_info.responseText) { - ext_info = ext_info.responseText; - } - } - - ebc.innerHTML = - "
    Error message:
    " + - "
    " + msg + "
    " + - "
    Additional information:
    " + - ""; - } - } - - } catch (e) { - exception_error("fatalError", e); - } -} - -function getFeedName(id, is_cat) { - var e; - - if (is_cat) { - e = $("FCATN-" + id); - } else { - e = $("FEEDN-" + id); - } - if (e) { - return e.innerHTML.stripTags(); - } else { - return null; - } -} - -function filterDlgCheckType(sender) { - - try { - - var ftype = sender[sender.selectedIndex].value; - - var form = document.forms["filter_add_form"]; - - if (!form) { - form = document.forms["filter_edit_form"]; - } - - if (!form) { - debug("filterDlgCheckType: can't find form!"); - return; - } - - // if selected filter type is 5 (Date) enable the modifier dropbox - if (ftype == 5) { - Element.show("filter_dlg_date_mod_box"); - Element.show("filter_dlg_date_chk_box"); - } else { - Element.hide("filter_dlg_date_mod_box"); - Element.hide("filter_dlg_date_chk_box"); - - } - - } catch (e) { - exception_error("filterDlgCheckType", e); - } - -} - -function filterDlgCheckAction(sender) { - - try { - - var action = sender[sender.selectedIndex].value; - - var form = document.forms["filter_add_form"]; - - if (!form) { - form = document.forms["filter_edit_form"]; - } - - if (!form) { - debug("filterDlgCheckAction: can't find form!"); - return; - } - - var action_param = $("filter_dlg_param_box"); - - if (!action_param) { - debug("filterDlgCheckAction: can't find action param box!"); - return; - } - - // if selected action supports parameters, enable params field - if (action == 4 || action == 6 || action == 7) { - Element.show(action_param); - if (action != 7) { - Element.show(form.action_param); - Element.hide(form.action_param_label); - } else { - Element.show(form.action_param_label); - Element.hide(form.action_param); - } - } else { - Element.hide(action_param); - } - - } catch (e) { - exception_error("filterDlgCheckAction", e); - } - -} - -function filterDlgCheckDate() { - try { - var form = document.forms["filter_add_form"]; - - if (!form) { - form = document.forms["filter_edit_form"]; - } - - if (!form) { - debug("filterDlgCheckAction: can't find form!"); - return; - } - - var reg_exp = form.reg_exp.value; - - var query = "?op=rpc&subop=checkDate&date=" + reg_exp; - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - - var form = document.forms["filter_add_form"]; - - if (!form) { - form = document.forms["filter_edit_form"]; - } - - if (transport.responseXML) { - var result = transport.responseXML.getElementsByTagName("result")[0]; - - if (result && result.firstChild) { - if (result.firstChild.nodeValue == "1") { - - new Effect.Highlight(form.reg_exp, {startcolor : '#00ff00'}); - - return; - } - } - } - - new Effect.Highlight(form.reg_exp, {startcolor : '#ff0000'}); - - } }); - - - } catch (e) { - exception_error("filterDlgCheckDate", e); - } -} - -function explainError(code) { - return displayDlg("explainError", code); -} - -// this only searches loaded headlines list, not in CDM -function getRelativePostIds(id, limit) { - - if (!limit) limit = 3; - - debug("getRelativePostIds: " + id + " limit=" + limit); - - var ids = new Array(); - var container = $("headlinesList"); - - if (container) { - var rows = container.rows; - - for (var i = 0; i < rows.length; i++) { - var r_id = rows[i].id.replace("RROW-", ""); - - if (r_id == id) { - for (var k = 1; k <= limit; k++) { - var nid = false; - - if (i > k-1) var nid = rows[i-k].id.replace("RROW-", ""); - if (nid) ids.push(nid); - - if (i < rows.length-k) nid = rows[i+k].id.replace("RROW-", ""); - if (nid) ids.push(nid); - } - - return ids; - } - } - } - - return false; -} - -function openArticleInNewWindow(id) { - try { - debug("openArticleInNewWindow: " + id); - - var query = "?op=rpc&subop=getArticleLink&id=" + id; - var wname = "ttrss_article_" + id; - - debug(query + " " + wname); - - var w = window.open("", wname); - - if (!w) notify_error("Failed to open window for the article"); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - - var link = transport.responseXML.getElementsByTagName("link")[0]; - var id = transport.responseXML.getElementsByTagName("id")[0]; - - debug("open_article received link: " + link); - - if (link && id) { - - var wname = "ttrss_article_" + id.firstChild.nodeValue; - - debug("link url: " + link.firstChild.nodeValue + ", wname " + wname); - - var w = window.open(link.firstChild.nodeValue, wname); - - if (!w) { notify_error("Failed to load article in new window"); } - - if (id) { - id = id.firstChild.nodeValue; - if (!$("headlinesList")) { - window.setTimeout("toggleUnread(" + id + ", 0)", 100); - } - } - } else { - notify_error("Can't open article: received invalid article link"); - } - } }); - - } catch (e) { - exception_error("openArticleInNewWindow", e); - } -} - -/* http://textsnippets.com/posts/show/835 */ - -Position.GetWindowSize = function(w) { - w = w ? w : window; - var width = w.innerWidth || (w.document.documentElement.clientWidth || w.document.body.clientWidth); - var height = w.innerHeight || (w.document.documentElement.clientHeight || w.document.body.clientHeight); - return [width, height] -} - -/* http://textsnippets.com/posts/show/836 */ - -Position.Center = function(element, parent) { - var w, h, pw, ph; - var d = Element.getDimensions(element); - w = d.width; - h = d.height; - Position.prepare(); - if (!parent) { - var ws = Position.GetWindowSize(); - pw = ws[0]; - ph = ws[1]; - } else { - pw = parent.offsetWidth; - ph = parent.offsetHeight; - } - element.style.top = (ph/2) - (h/2) - Position.deltaY + "px"; - element.style.left = (pw/2) - (w/2) - Position.deltaX + "px"; -} - - -function isCdmMode() { - return !$("headlinesList"); -} - -function getSelectedArticleIds2() { - var rows = new Array(); - var cdm_mode = isCdmMode(); - - if (cdm_mode) { - rows = cdmGetSelectedArticles(); - } else { - rows = getSelectedTableRowIds("headlinesList", "RROW", "RCHK"); - } - - var ids = new Array(); - - for (var i = 0; i < rows.length; i++) { - var chk = $("RCHK-" + rows[i]); - if (chk && chk.checked) { - ids.push(rows[i]); - } - } - - return ids; -} - -function displayHelpInfobox(topic_id) { - - var url = "backend.php?op=help&tid=" + param_escape(topic_id); - - var w = window.open(url, "ttrss_help", - "status=0,toolbar=0,location=0,width=450,height=500,scrollbars=1,menubar=0"); - -} - -function focus_element(id) { - try { - var e = $(id); - if (e) e.focus(); - } catch (e) { - exception_error("focus_element", e); - } - return false; -} - -function loading_set_progress(p) { - try { - if (p < last_progress_point || !Element.visible("overlay")) return; - - debug("loading_set_progress : " + p + " (" + last_progress_point + ")"); - - var o = $("l_progress_i"); - -// o.style.width = (p * 2) + "px"; - - new Effect.Scale(o, p, { - scaleY : false, - scaleFrom : last_progress_point, - scaleMode: { originalWidth : 200 }, - queue: { position: 'end', scope: 'LSP-Q', limit: 3 } }); - - last_progress_point = p; - - } catch (e) { - exception_error("loading_set_progress", e); - } -} - -function remove_splash() { - if (Element.visible("overlay")) { - debug("about to remove splash, OMG!"); - Element.hide("overlay"); - debug("removed splash!"); - } -} - -function getSelectedFeedsFromBrowser() { - - var list = $("browseFeedList"); - - var selected = new Array(); - - for (i = 0; i < list.childNodes.length; i++) { - var child = list.childNodes[i]; - if (child.id && child.id.match("FBROW-")) { - var id = child.id.replace("FBROW-", ""); - - var cb = $("FBCHK-" + id); - - if (cb.checked) { - selected.push(id); - } - } - } - - return selected; -} - -function updateFeedBrowser() { - try { - - var query = Form.serialize("feed_browser"); - - Element.show('feed_browser_spinner'); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - notify(''); - - Element.hide('feed_browser_spinner'); - - var c = $("browseFeedList"); - var r = transport.responseXML.getElementsByTagName("content")[0]; - var nr = transport.responseXML.getElementsByTagName("num-results")[0]; - var mode = transport.responseXML.getElementsByTagName("mode")[0]; - - if (c && r) { - c.innerHTML = r.firstChild.nodeValue; - } - - if (parseInt(mode.getAttribute("value")) == 2) { - Element.show('feed_archive_remove'); - } else { - Element.hide('feed_archive_remove'); - } - - } }); - - } catch (e) { - exception_error("updateFeedBrowser", e); - } - -} - -function transport_error_check(transport) { - try { - if (transport.responseXML) { - var error = transport.responseXML.getElementsByTagName("error")[0]; - - if (error) { - var code = error.getAttribute("error-code"); - var msg = error.getAttribute("error-msg"); - if (code != 0) { - fatalError(code, msg); - return false; - } - } - } - } catch (e) { - exception_error("check_for_error_xml", e); - } - return true; -} - -function strip_tags(s) { - return s.replace(/<\/?[^>]+(>|$)/g, ""); -} - -function truncate_string(s, length) { - if (!length) length = 30; - var tmp = s.substring(0, length); - if (s.length > length) tmp += "…"; - return tmp; -} - -function hotkey_prefix_timeout() { - try { - - var date = new Date(); - var ts = Math.round(date.getTime() / 1000); - - if (hotkey_prefix_pressed && ts - hotkey_prefix_pressed >= 5) { - debug("hotkey_prefix seems to be stuck, aborting"); - hotkey_prefix_pressed = false; - hotkey_prefix = false; - Element.hide('cmdline'); - } - - setTimeout("hotkey_prefix_timeout()", 1000); - - } catch (e) { - exception_error("hotkey_prefix_timeout", e); - } -} - -function hideAuxDlg() { - try { - Element.hide('auxDlg'); - } catch (e) { - exception_error("hideAuxDlg", e); - } -} - -function displayNewContentPrompt(id) { - try { - - var msg = "" + - __("New articles available in this feed (click to show)") + ""; - - msg = msg.replace("%s", getFeedName(id)); - - $('auxDlg').innerHTML = msg; - - Element.show('auxDlg'); - - } catch (e) { - exception_error("displayNewContentPrompt", e); - } -} - -function feedBrowserSubscribe() { - try { - - var selected = getSelectedFeedsFromBrowser(); - - var mode = document.forms['feed_browser'].mode; - - mode = mode[mode.selectedIndex].value; - - if (selected.length > 0) { - closeInfoBox(); - - notify_progress("Loading, please wait...", true); - - var query = "?op=rpc&subop=massSubscribe&ids="+ - param_escape(selected.toString()) + "&mode=" + param_escape(mode); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - - var nf = transport.responseXML.getElementsByTagName('num-feeds')[0]; - var nf_value = nf.getAttribute("value"); - - notify_info(__("Subscribed to %d feed(s).").replace("%d", nf_value)); - - if (inPreferences()) { - updateFeedList(); - } else { - setTimeout('updateFeedList(false, false)', 50); - } - } }); - - } else { - alert(__("No feeds are selected.")); - } - - } catch (e) { - exception_error("feedBrowserSubscribe", e); - } -} - -function feedArchiveRemove() { - try { - - var selected = getSelectedFeedsFromBrowser(); - - if (selected.length > 0) { - - var pr = __("Remove selected feeds from the archive? Feeds with stored articles will not be removed."); - - if (confirm(pr)) { - Element.show('feed_browser_spinner'); - - var query = "?op=rpc&subop=remarchived&ids=" + - param_escape(selected.toString());; - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - updateFeedBrowser(); - } }); - } - - } else { - alert(__("No feeds are selected.")); - } - - } catch (e) { - exception_error("feedArchiveRemove", e); - } -} - -function uploadIconHandler(rc) { - try { - switch (rc) { - case 0: - notify_info("Upload complete."); - if (inPreferences()) { - updateFeedList(); - } else { - setTimeout('updateFeedList(false, false)', 50); - } - break; - case 1: - notify_error("Upload failed: icon is too big."); - break; - case 2: - notify_error("Upload failed."); - break; - } - - } catch (e) { - exception_error("uploadIconHandler", e); - } -} - -function removeFeedIcon(id) { - - try { - - if (confirm(__("Remove stored feed icon?"))) { - var query = "backend.php?op=pref-feeds&subop=removeicon&feed_id=" + param_escape(id); - - debug(query); - - notify_progress("Removing feed icon...", true); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - notify_info("Feed icon removed."); - if (inPreferences()) { - updateFeedList(); - } else { - setTimeout('updateFeedList(false, false)', 50); - } - } }); - } - - return false; - } catch (e) { - exception_error("uploadFeedIcon", e); - } -} - -function uploadFeedIcon() { - - try { - - var file = $("icon_file"); - - if (file.value.length == 0) { - alert(__("Please select an image file to upload.")); - } else { - if (confirm(__("Upload new icon for this feed?"))) { - notify_progress("Uploading, please wait...", true); - return true; - } - } - - return false; - - } catch (e) { - exception_error("uploadFeedIcon", e); - } -} - -function addLabel() { - - try { - - var caption = prompt(__("Please enter label caption:"), ""); - - if (caption != undefined) { - - if (caption == "") { - alert(__("Can't create label: missing caption.")); - return false; - } - - var query = "?op=pref-labels&subop=add&caption=" + - param_escape(caption); - - notify_progress("Loading, please wait...", true); - - if (inPreferences()) active_tab = "labelConfig"; - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - if (inPreferences()) { - infobox_submit_callback2(transport); - } else { - updateFeedList(); - } - } }); - - } - - } catch (e) { - exception_error("addLabel", e); - } -} - -function quickAddFeed() { - displayDlg('quickAddFeed', '', - function () {$('feed_url').focus();}); -} - -function quickAddFilter() { - displayDlg('quickAddFilter', '', - function () {document.forms['filter_add_form'].reg_exp.focus();}); -} - -function unsubscribeFeed(feed_id, title) { - - var msg = __("Unsubscribe from %s?").replace("%s", title); - - if (title == undefined || confirm(msg)) { - notify_progress("Removing feed..."); - - var query = "?op=pref-feeds&quiet=1&subop=remove&ids=" + feed_id; - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - - closeInfoBox(); - - if (inPreferences()) { - updateFeedList(); - } else { - dlg_frefresh_callback(transport, feed_id); - } - - } }); - } - - return false; -} - - - diff --git a/functions.php b/functions.php deleted file mode 100644 index 78adfdbcbd..0000000000 --- a/functions.php +++ /dev/null @@ -1,6657 +0,0 @@ - "Detect automatically", - "ca_CA" => "Català", - "en_US" => "English", - "es_ES" => "Español", - "de_DE" => "Deutsch", - "fr_FR" => "Français", - "hu_HU" => "Magyar (Hungarian)", - "it_IT" => "Italiano", - "ja_JP" => "日本語 (Japanese)", - "nb_NO" => "Norwegian bokmÃ¥l", - "ru_RU" => "РуÑÑкий", - "pt_BR" => "Portuguese/Brazil", - "zh_CN" => "Simplified Chinese"); - - return $tr; - } - - if (ENABLE_TRANSLATIONS == true) { // If translations are enabled. - require_once "lib/accept-to-gettext.php"; - require_once "lib/gettext/gettext.inc"; - - function startup_gettext() { - - # Get locale from Accept-Language header - $lang = al2gt(array_keys(get_translations()), "text/html"); - - if (defined('_TRANSLATION_OVERRIDE_DEFAULT')) { - $lang = _TRANSLATION_OVERRIDE_DEFAULT; - } - - if ($_COOKIE["ttrss_lang"] && $_COOKIE["ttrss_lang"] != "auto") { - $lang = $_COOKIE["ttrss_lang"]; - } - - /* In login action of mobile version */ - if ($_POST["language"] && defined('MOBILE_VERSION')) { - $lang = $_POST["language"]; - $_COOKIE["ttrss_lang"] = $lang; - } - - if ($lang) { - if (defined('LC_MESSAGES')) { - _setlocale(LC_MESSAGES, $lang); - } else if (defined('LC_ALL')) { - _setlocale(LC_ALL, $lang); - } else { - die("can't setlocale(): please set ENABLE_TRANSLATIONS to false in config.php"); - } - - if (defined('MOBILE_VERSION')) { - _bindtextdomain("messages", "../locale"); - } else { - _bindtextdomain("messages", "locale"); - } - - _textdomain("messages"); - _bind_textdomain_codeset("messages", "UTF-8"); - } - } - - startup_gettext(); - - } else { // If translations are enabled. - function __($msg) { - return $msg; - } - function startup_gettext() { - // no-op - return true; - } - } // If translations are enabled. - - if (defined('MEMCACHE_SERVER')) { - $memcache = new Memcache; - $memcache->connect(MEMCACHE_SERVER, 11211); - } - - require_once 'db-prefs.php'; - require_once 'compat.php'; - require_once 'errors.php'; - require_once 'version.php'; - - require_once 'lib/phpmailer/class.phpmailer.php'; - - define('MAGPIE_USER_AGENT_EXT', ' (Tiny Tiny RSS/' . VERSION . ')'); - define('MAGPIE_OUTPUT_ENCODING', 'UTF-8'); - define('MAGPIE_CACHE_AGE', 60*15); // 15 minutes - - require_once "lib/simplepie/simplepie.inc"; - require_once "lib/magpierss/rss_fetch.inc"; - require_once 'lib/magpierss/rss_utils.inc'; - require_once 'lib/htmlpurifier/library/HTMLPurifier.auto.php'; - - /** - * Print a timestamped debug message. - * - * @param string $msg The debug message. - * @return void - */ - function _debug($msg) { - $ts = strftime("%H:%M:%S", time()); - if (function_exists('posix_getpid')) { - $ts = "$ts/" . posix_getpid(); - } - print "[$ts] $msg\n"; - } // function _debug - - /** - * Purge a feed old posts. - * - * @param mixed $link A database connection. - * @param mixed $feed_id The id of the purged feed. - * @param mixed $purge_interval Olderness of purged posts. - * @param boolean $debug Set to True to enable the debug. False by default. - * @access public - * @return void - */ - function purge_feed($link, $feed_id, $purge_interval, $debug = false) { - - if (!$purge_interval) $purge_interval = feed_purge_interval($link, $feed_id); - - $rows = -1; - - $result = db_query($link, - "SELECT owner_uid FROM ttrss_feeds WHERE id = '$feed_id'"); - - $owner_uid = false; - - if (db_num_rows($result) == 1) { - $owner_uid = db_fetch_result($result, 0, "owner_uid"); - } - - if ($purge_interval == -1 || !$purge_interval) { - if ($owner_uid) { - ccache_update($link, $feed_id, $owner_uid); - } - return; - } - - if (!$owner_uid) return; - - if (FORCE_ARTICLE_PURGE == 0) { - $purge_unread = get_pref($link, "PURGE_UNREAD_ARTICLES", - $owner_uid, false); - } else { - $purge_unread = true; - $purge_interval = FORCE_ARTICLE_PURGE; - } - - if (!$purge_unread) $query_limit = " unread = false AND "; - - if (DB_TYPE == "pgsql") { -/* $result = db_query($link, "DELETE FROM ttrss_user_entries WHERE - marked = false AND feed_id = '$feed_id' AND - (SELECT date_entered FROM ttrss_entries WHERE - id = ref_id) < NOW() - INTERVAL '$purge_interval days'"); */ - - $pg_version = get_pgsql_version($link); - - if (preg_match("/^7\./", $pg_version) || preg_match("/^8\.0/", $pg_version)) { - - $result = db_query($link, "DELETE FROM ttrss_user_entries WHERE - ttrss_entries.id = ref_id AND - marked = false AND - feed_id = '$feed_id' AND - $query_limit - ttrss_entries.date_entered < NOW() - INTERVAL '$purge_interval days'"); - - } else { - - $result = db_query($link, "DELETE FROM ttrss_user_entries - USING ttrss_entries - WHERE ttrss_entries.id = ref_id AND - marked = false AND - feed_id = '$feed_id' AND - $query_limit - ttrss_entries.date_entered < NOW() - INTERVAL '$purge_interval days'"); - } - - $rows = pg_affected_rows($result); - - } else { - -/* $result = db_query($link, "DELETE FROM ttrss_user_entries WHERE - marked = false AND feed_id = '$feed_id' AND - (SELECT date_entered FROM ttrss_entries WHERE - id = ref_id) < DATE_SUB(NOW(), INTERVAL $purge_interval DAY)"); */ - - $result = db_query($link, "DELETE FROM ttrss_user_entries - USING ttrss_user_entries, ttrss_entries - WHERE ttrss_entries.id = ref_id AND - marked = false AND - feed_id = '$feed_id' AND - $query_limit - ttrss_entries.date_entered < DATE_SUB(NOW(), INTERVAL $purge_interval DAY)"); - - $rows = mysql_affected_rows($link); - - } - - ccache_update($link, $feed_id, $owner_uid); - - if ($debug) { - _debug("Purged feed $feed_id ($purge_interval): deleted $rows articles"); - } - } // function purge_feed - - /** - * Purge old posts from old feeds. - * - * @param mixed $link A database connection - * @param boolean $do_output Set to true to enable printed output, false by default. - * @param integer $limit The maximal number of removed posts. - * @access public - * @return void - */ - function global_purge_old_posts($link, $do_output = false, $limit = false) { - - $random_qpart = sql_random_function(); - - if ($limit) { - $limit_qpart = "LIMIT $limit"; - } else { - $limit_qpart = ""; - } - - $result = db_query($link, - "SELECT id,purge_interval,owner_uid FROM ttrss_feeds - ORDER BY $random_qpart $limit_qpart"); - - while ($line = db_fetch_assoc($result)) { - - $feed_id = $line["id"]; - $purge_interval = $line["purge_interval"]; - $owner_uid = $line["owner_uid"]; - - if ($purge_interval == 0) { - - $tmp_result = db_query($link, - "SELECT value FROM ttrss_user_prefs WHERE - pref_name = 'PURGE_OLD_DAYS' AND owner_uid = '$owner_uid'"); - - if (db_num_rows($tmp_result) != 0) { - $purge_interval = db_fetch_result($tmp_result, 0, "value"); - } - } - - if ($do_output) { -// print "Feed $feed_id: purge interval = $purge_interval\n"; - } - - if ($purge_interval > 0 || FORCE_ARTICLE_PURGE) { - purge_feed($link, $feed_id, $purge_interval, $do_output); - } - } - - // purge orphaned posts in main content table - $result = db_query($link, "DELETE FROM ttrss_entries WHERE - (SELECT COUNT(int_id) FROM ttrss_user_entries WHERE ref_id = id) = 0"); - - if ($do_output) { - $rows = db_affected_rows($link, $result); - _debug("Purged $rows orphaned posts."); - } - - } // function global_purge_old_posts - - function feed_purge_interval($link, $feed_id) { - - $result = db_query($link, "SELECT purge_interval, owner_uid FROM ttrss_feeds - WHERE id = '$feed_id'"); - - if (db_num_rows($result) == 1) { - $purge_interval = db_fetch_result($result, 0, "purge_interval"); - $owner_uid = db_fetch_result($result, 0, "owner_uid"); - - if ($purge_interval == 0) $purge_interval = get_pref($link, - 'PURGE_OLD_DAYS', $owner_uid); - - return $purge_interval; - - } else { - return -1; - } - } - - function purge_old_posts($link) { - - $user_id = $_SESSION["uid"]; - - $result = db_query($link, "SELECT id,purge_interval FROM ttrss_feeds - WHERE owner_uid = '$user_id'"); - - while ($line = db_fetch_assoc($result)) { - - $feed_id = $line["id"]; - $purge_interval = $line["purge_interval"]; - - if ($purge_interval == 0) $purge_interval = get_pref($link, 'PURGE_OLD_DAYS'); - - if ($purge_interval > 0) { - purge_feed($link, $feed_id, $purge_interval); - } - } - - purge_orphans($link); - } - - function purge_orphans($link) { - // purge orphaned posts in main content table - db_query($link, "DELETE FROM ttrss_entries WHERE - (SELECT COUNT(int_id) FROM ttrss_user_entries WHERE ref_id = id) = 0"); - } - - function get_feed_update_interval($link, $feed_id) { - $result = db_query($link, "SELECT owner_uid, update_interval FROM - ttrss_feeds WHERE id = '$feed_id'"); - - if (db_num_rows($result) == 1) { - $update_interval = db_fetch_result($result, 0, "update_interval"); - $owner_uid = db_fetch_result($result, 0, "owner_uid"); - - if ($update_interval != 0) { - return $update_interval; - } else { - return get_pref($link, 'DEFAULT_UPDATE_INTERVAL', $owner_uid, false); - } - - } else { - return -1; - } - } - - function fetch_file_contents($url) { - if (USE_CURL_FOR_ICONS) { - $tmpfile = tempnam(TMP_DIRECTORY, "ttrss-tmp"); - - $ch = curl_init($url); - $fp = fopen($tmpfile, "w"); - - if ($fp) { - curl_setopt($ch, CURLOPT_FILE, $fp); - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); - curl_setopt($ch, CURLOPT_TIMEOUT, 45); - curl_exec($ch); - - if (strpos(curl_getinfo($ch, CURLINFO_CONTENT_TYPE), "image/") !== false) { - curl_close($ch); - fclose($fp); - $contents = file_get_contents($tmpfile); - } else { - curl_close($ch); - fclose($fp); - } - } - - unlink($tmpfile); - - return $contents; - - } else { - return file_get_contents($url); - } - - } - - /** - * Try to determine the favicon URL for a feed. - * adapted from wordpress favicon plugin by Jeff Minard (http://thecodepro.com/) - * http://dev.wp-plugins.org/file/favatars/trunk/favatars.php - * - * @param string $url A feed or page URL - * @access public - * @return mixed The favicon URL, or false if none was found. - */ - function get_favicon_url($url) { - - if ($html = @fetch_file_contents($url)) { - - if ( preg_match('/]+rel="(?:shortcut )?icon"[^>]+?href="([^"]+?)"/si', $html, $matches)) { - // Attempt to grab a favicon link from their webpage url - $linkUrl = html_entity_decode($matches[1]); - - if (substr($linkUrl, 0, 1) == '/') { - $urlParts = parse_url($url); - $faviconURL = $urlParts['scheme'].'://'.$urlParts['host'].$linkUrl; - } else if (substr($linkUrl, 0, 7) == 'http://') { - $faviconURL = $linkUrl; - } else { - $pos = strrpos($url, "/"); - // no "/" in url or "/" is part of "://" - if ($pos === false || $pos == (strpos($url, "://")+2)) { - $faviconURL = $url.'/'.$linkUrl; - } else { - $faviconURL = substr($url, 0, $pos+1).$linkUrl; - } - } - - } else { - // If unsuccessful, attempt to "guess" the favicon location - $urlParts = parse_url($url); - $faviconURL = $urlParts['scheme'].'://'.$urlParts['host'].'/favicon.ico'; - } - } - - // Run a test to see if what we have attempted to get actually exists. - if(USE_CURL_FOR_ICONS || url_validate($faviconURL)) { - return $faviconURL; - } else { - return false; - } - } // function get_favicon_url - - /** - * Check if a link is a valid and working URL. - * - * @param mixed $link A URL to check - * @access public - * @return boolean True if the URL is valid, false otherwise. - */ - function url_validate($link) { - - $url_parts = @parse_url($link); - - if ( empty( $url_parts["host"] ) ) - return false; - - if ( !empty( $url_parts["path"] ) ) { - $documentpath = $url_parts["path"]; - } else { - $documentpath = "/"; - } - - if ( !empty( $url_parts["query"] ) ) - $documentpath .= "?" . $url_parts["query"]; - - $host = $url_parts["host"]; - $port = $url_parts["port"]; - - if ( empty($port) ) - $port = "80"; - - $socket = @fsockopen( $host, $port, $errno, $errstr, 30 ); - - if ( !$socket ) - return false; - - fwrite ($socket, "HEAD ".$documentpath." HTTP/1.0\r\nHost: $host\r\n\r\n"); - - $http_response = fgets( $socket, 22 ); - - $responses = "/(200 OK)|(30[123])/"; - if ( preg_match($responses, $http_response) ) { - fclose($socket); - return true; - } else { - return false; - } - - } // function url_validate - - function check_feed_favicon($site_url, $feed, $link) { - $favicon_url = get_favicon_url($site_url); - -# print "FAVICON [$site_url]: $favicon_url\n"; - - error_reporting(0); - - $icon_file = ICONS_DIR . "/$feed.ico"; - - if ($favicon_url && !file_exists($icon_file)) { - $contents = fetch_file_contents($favicon_url); - - $fp = fopen($icon_file, "w"); - - if ($fp) { - fwrite($fp, $contents); - fclose($fp); - chmod($icon_file, 0644); - } - } - - error_reporting(DEFAULT_ERROR_LEVEL); - - } - - function update_rss_feed($link, $feed, $ignore_daemon = false) { - - global $memcache; - - /* Update all feeds with the same URL to utilize memcache */ - - if ($memcache) { - $result = db_query($link, "SELECT f1.id - FROM ttrss_feeds AS f1, ttrss_feeds AS f2 - WHERE f2.feed_url = f1.feed_url AND f2.id = '$feed'"); - - while ($line = db_fetch_assoc($result)) { - update_rss_feed_real($link, $line["id"], $ignore_daemon); - } - } else { - update_rss_feed_real($link, $feed, $ignore_daemon); - } - } - - function update_rss_feed_real($link, $feed, $ignore_daemon = false) { - - global $memcache; - - if (!$_REQUEST["daemon"] && !$ignore_daemon) { - return false; - } - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: start"); - } - - if (!$ignore_daemon) { - - if (DB_TYPE == "pgsql") { - $updstart_thresh_qpart = "(ttrss_feeds.last_update_started IS NULL OR ttrss_feeds.last_update_started < NOW() - INTERVAL '120 seconds')"; - } else { - $updstart_thresh_qpart = "(ttrss_feeds.last_update_started IS NULL OR ttrss_feeds.last_update_started < DATE_SUB(NOW(), INTERVAL 120 SECOND))"; - } - - $result = db_query($link, "SELECT id,update_interval,auth_login, - auth_pass,cache_images,update_method - FROM ttrss_feeds WHERE id = '$feed' AND $updstart_thresh_qpart"); - - } else { - - $result = db_query($link, "SELECT id,update_interval,auth_login, - feed_url,auth_pass,cache_images,update_method,last_updated - FROM ttrss_feeds WHERE id = '$feed'"); - - } - - if (db_num_rows($result) == 0) { - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: feed $feed NOT FOUND/SKIPPED"); - } - return false; - } - - $update_method = db_fetch_result($result, 0, "update_method"); - $last_updated = db_fetch_result($result, 0, "last_updated"); - - db_query($link, "UPDATE ttrss_feeds SET last_update_started = NOW() - WHERE id = '$feed'"); - - $auth_login = db_fetch_result($result, 0, "auth_login"); - $auth_pass = db_fetch_result($result, 0, "auth_pass"); - - if (ALLOW_SELECT_UPDATE_METHOD) { - if (ENABLE_SIMPLEPIE) { - $use_simplepie = $update_method != 1; - } else { - $use_simplepie = $update_method == 2; - } - } else { - $use_simplepie = ENABLE_SIMPLEPIE; - } - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("use simplepie: $use_simplepie (feed setting: $update_method)\n"); - } - - if (!$use_simplepie) { - $auth_login = urlencode($auth_login); - $auth_pass = urlencode($auth_pass); - } - - $update_interval = db_fetch_result($result, 0, "update_interval"); - $cache_images = sql_bool_to_bool(db_fetch_result($result, 0, "cache_images")); - $fetch_url = db_fetch_result($result, 0, "feed_url"); - - if ($update_interval < 0) { return; } - - $feed = db_escape_string($feed); - - if ($auth_login && $auth_pass) { - $url_parts = array(); - preg_match("/(^[^:]*):\/\/(.*)/", $fetch_url, $url_parts); - - if ($url_parts[1] && $url_parts[2]) { - $fetch_url = $url_parts[1] . "://$auth_login:$auth_pass@" . $url_parts[2]; - } - - } - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: fetching [$fetch_url]..."); - } - - if (!defined('DAEMON_EXTENDED_DEBUG') && !$_REQUEST['xdebug']) { - error_reporting(0); - } - - $obj_id = md5("FDATA:$use_simplepie:$fetch_url"); - - if ($memcache && $obj = $memcache->get($obj_id)) { - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: data found in memcache."); - } - - $rss = $obj; - - } else { - - if (!$use_simplepie) { - $rss = fetch_rss($fetch_url); - } else { - if (!is_dir(SIMPLEPIE_CACHE_DIR)) { - mkdir(SIMPLEPIE_CACHE_DIR); - } - - $rss = new SimplePie(); - $rss->set_useragent(SIMPLEPIE_USERAGENT . MAGPIE_USER_AGENT_EXT); - # $rss->set_timeout(10); - $rss->set_feed_url($fetch_url); - $rss->set_output_encoding('UTF-8'); - - if (SIMPLEPIE_CACHE_IMAGES && $cache_images) { - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("enabling image cache"); - } - - $rss->set_image_handler('./image.php', 'i'); - } - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("feed update interval (sec): " . - get_feed_update_interval($link, $feed)*60); - } - - if (is_dir(SIMPLEPIE_CACHE_DIR)) { - $rss->set_cache_location(SIMPLEPIE_CACHE_DIR); - $rss->set_cache_duration(get_feed_update_interval($link, $feed) * 60); - } - - $rss->init(); - } - - if ($memcache && $rss) $memcache->add($obj_id, $rss, 0, 300); - } - -// print_r($rss); - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: fetch done, parsing..."); - } else { - error_reporting (DEFAULT_ERROR_LEVEL); - } - - $feed = db_escape_string($feed); - - if ($use_simplepie) { - $fetch_ok = !$rss->error(); - } else { - $fetch_ok = !!$rss; - } - - if ($fetch_ok) { - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: processing feed data..."); - } - -// db_query($link, "BEGIN"); - - $result = db_query($link, "SELECT title,icon_url,site_url,owner_uid - FROM ttrss_feeds WHERE id = '$feed'"); - - $registered_title = db_fetch_result($result, 0, "title"); - $orig_icon_url = db_fetch_result($result, 0, "icon_url"); - $orig_site_url = db_fetch_result($result, 0, "site_url"); - - $owner_uid = db_fetch_result($result, 0, "owner_uid"); - - if ($use_simplepie) { - $site_url = $rss->get_link(); - } else { - $site_url = $rss->channel["link"]; - } - - if (get_pref($link, 'ENABLE_FEED_ICONS', $owner_uid, false)) { - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: checking favicon..."); - } - - check_feed_favicon($site_url, $feed, $link); - } - - if (!$registered_title || $registered_title == "[Unknown]") { - - if ($use_simplepie) { - $feed_title = db_escape_string($rss->get_title()); - } else { - $feed_title = db_escape_string($rss->channel["title"]); - } - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: registering title: $feed_title"); - } - - db_query($link, "UPDATE ttrss_feeds SET - title = '$feed_title' WHERE id = '$feed'"); - } - - // weird, weird Magpie - if (!$use_simplepie) { - if (!$site_url) $site_url = db_escape_string($rss->channel["link_"]); - } - - if ($site_url && $orig_site_url != db_escape_string($site_url)) { - db_query($link, "UPDATE ttrss_feeds SET - site_url = '$site_url' WHERE id = '$feed'"); - } - -// print "I: " . $rss->channel["image"]["url"]; - - if (!$use_simplepie) { - $icon_url = $rss->image["url"]; - } else { - $icon_url = $rss->get_image_url(); - } - - if ($icon_url && !$orig_icon_url != db_escape_string($icon_url)) { - $icon_url = db_escape_string($icon_url); - db_query($link, "UPDATE ttrss_feeds SET icon_url = '$icon_url' WHERE id = '$feed'"); - } - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: loading filters..."); - } - - $filters = load_filters($link, $feed, $owner_uid); - - if ($use_simplepie) { - $iterator = $rss->get_items(); - } else { - $iterator = $rss->items; - if (!$iterator || !is_array($iterator)) $iterator = $rss->entries; - if (!$iterator || !is_array($iterator)) $iterator = $rss; - } - - if (!is_array($iterator)) { - /* db_query($link, "UPDATE ttrss_feeds - SET last_error = 'Parse error: can\'t find any articles.' - WHERE id = '$feed'"); */ - - // clear any errors and mark feed as updated if fetched okay - // even if it's blank - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: entry iterator is not an array, no articles?"); - } - - db_query($link, "UPDATE ttrss_feeds - SET last_updated = NOW(), last_error = '' WHERE id = '$feed'"); - - return; // no articles - } - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: processing articles..."); - } - - foreach ($iterator as $item) { - - if ($_REQUEST['xdebug'] == 2) { - print_r($item); - } - - if ($use_simplepie) { - $entry_guid = $item->get_id(); - if (!$entry_guid) $entry_guid = $item->get_link(); - if (!$entry_guid) $entry_guid = make_guid_from_title($item->get_title()); - - } else { - - $entry_guid = $item["id"]; - - if (!$entry_guid) $entry_guid = $item["guid"]; - if (!$entry_guid) $entry_guid = $item["link"]; - if (!$entry_guid) $entry_guid = make_guid_from_title($item["title"]); - } - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: guid $entry_guid"); - } - - if (!$entry_guid) continue; - - $entry_timestamp = ""; - - if ($use_simplepie) { - $entry_timestamp = strtotime($item->get_date()); - } else { - $rss_2_date = $item['pubdate']; - $rss_1_date = $item['dc']['date']; - $atom_date = $item['issued']; - if (!$atom_date) $atom_date = $item['updated']; - - if ($atom_date != "") $entry_timestamp = parse_w3cdtf($atom_date); - if ($rss_1_date != "") $entry_timestamp = parse_w3cdtf($rss_1_date); - if ($rss_2_date != "") $entry_timestamp = strtotime($rss_2_date); - } - - if ($entry_timestamp == "" || $entry_timestamp == -1 || !$entry_timestamp) { - $entry_timestamp = time(); - $no_orig_date = 'true'; - } else { - $no_orig_date = 'false'; - } - - $entry_timestamp_fmt = strftime("%Y/%m/%d %H:%M:%S", $entry_timestamp); - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: date $entry_timestamp [$entry_timestamp_fmt]"); - } - - if ($use_simplepie) { - $entry_title = $item->get_title(); - } else { - $entry_title = trim(strip_tags($item["title"])); - } - - if ($use_simplepie) { - $entry_link = $item->get_link(); - } else { - // strange Magpie workaround - $entry_link = $item["link_"]; - if (!$entry_link) $entry_link = $item["link"]; - } - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: title $entry_title"); - } - - if (!$entry_title) $entry_title = date("Y-m-d H:i:s", $entry_timestamp);; - - $entry_link = strip_tags($entry_link); - - if ($use_simplepie) { - $entry_content = $item->get_content(); - if (!$entry_content) $entry_content = $item->get_description(); - } else { - $entry_content = $item["content:escaped"]; - - if (!$entry_content) $entry_content = $item["content:encoded"]; - if (!$entry_content) $entry_content = $item["content"]["encoded"]; - if (!$entry_content) $entry_content = $item["content"]; - - // Magpie bugs are getting ridiculous - if (trim($entry_content) == "Array") $entry_content = false; - - if (!$entry_content) $entry_content = $item["atom_content"]; - if (!$entry_content) $entry_content = $item["summary"]; - - if (!$entry_content || - strlen($entry_content) < strlen($item["description"])) { - $entry_content = $item["description"]; - }; - - // WTF - if (is_array($entry_content)) { - $entry_content = $entry_content["encoded"]; - if (!$entry_content) $entry_content = $entry_content["escaped"]; - } - } - - if ($_REQUEST["xdebug"] == 2) { - print "update_rss_feed: content: "; - print_r(htmlspecialchars($entry_content)); - } - - $entry_content_unescaped = $entry_content; - - if ($use_simplepie) { - $entry_comments = strip_tags($item->data["comments"]); - if ($item->get_author()) { - $entry_author_item = $item->get_author(); - $entry_author = $entry_author_item->get_name(); - if (!$entry_author) $entry_author = $entry_author_item->get_email(); - - $entry_author = db_escape_string($entry_author); - } - } else { - $entry_comments = strip_tags($item["comments"]); - - $entry_author = db_escape_string(strip_tags($item['dc']['creator'])); - - if ($item['author']) { - - if (is_array($item['author'])) { - - if (!$entry_author) { - $entry_author = db_escape_string(strip_tags($item['author']['name'])); - } - - if (!$entry_author) { - $entry_author = db_escape_string(strip_tags($item['author']['email'])); - } - } - - if (!$entry_author) { - $entry_author = db_escape_string(strip_tags($item['author'])); - } - } - } - - if (preg_match('/^[\t\n\r ]*$/', $entry_author)) $entry_author = ''; - - $entry_guid = db_escape_string(strip_tags($entry_guid)); - $entry_guid = mb_substr($entry_guid, 0, 250); - - $result = db_query($link, "SELECT id FROM ttrss_entries - WHERE guid = '$entry_guid'"); - - $entry_content = db_escape_string($entry_content); - - $content_hash = "SHA1:" . sha1(strip_tags($entry_content)); - - $entry_title = db_escape_string($entry_title); - $entry_link = db_escape_string($entry_link); - $entry_comments = mb_substr(db_escape_string($entry_comments), 0, 250); - $entry_author = mb_substr($entry_author, 0, 250); - - if ($use_simplepie) { - $num_comments = 0; #FIXME# - } else { - $num_comments = db_escape_string($item["slash"]["comments"]); - } - - if (!$num_comments) $num_comments = 0; - - // parse entries into tags - - if ($use_simplepie) { - - $additional_tags = array(); - $additional_tags_src = $item->get_categories(); - - if (is_array($additional_tags_src)) { - foreach ($additional_tags_src as $tobj) { - array_push($additional_tags, $tobj->get_term()); - } - } - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: category tags:"); - print_r($additional_tags); - } - - } else { - - $t_ctr = $item['category#']; - - $additional_tags = false; - - if ($t_ctr == 0) { - $additional_tags = false; - } else if ($t_ctr > 0) { - $additional_tags = array($item['category']); - - if ($item['category@term']) { - array_push($additional_tags, $item['category@term']); - } - - for ($i = 0; $i <= $t_ctr; $i++ ) { - if ($item["category#$i"]) { - array_push($additional_tags, $item["category#$i"]); - } - - if ($item["category#$i@term"]) { - array_push($additional_tags, $item["category#$i@term"]); - } - } - } - - // parse elements - - $t_ctr = $item['dc']['subject#']; - - if ($t_ctr > 0) { - $additional_tags = array($item['dc']['subject']); - - for ($i = 0; $i <= $t_ctr; $i++ ) { - if ($item['dc']["subject#$i"]) { - array_push($additional_tags, $item['dc']["subject#$i"]); - } - } - } - } - - // enclosures - - $enclosures = array(); - - if ($use_simplepie) { - $encs = $item->get_enclosures(); - - if (is_array($encs)) { - foreach ($encs as $e) { - $e_item = array( - $e->link, $e->type, $e->length); - - array_push($enclosures, $e_item); - } - } - - } else { - // - - $e_ctr = $item['enclosure#']; - - if ($e_ctr > 0) { - $e_item = array($item['enclosure@url'], - $item['enclosure@type'], - $item['enclosure@length']); - - array_push($enclosures, $e_item); - - for ($i = 0; $i <= $e_ctr; $i++ ) { - - if ($item["enclosure#$i@url"]) { - $e_item = array($item["enclosure#$i@url"], - $item["enclosure#$i@type"], - $item["enclosure#$i@length"]); - array_push($enclosures, $e_item); - } - } - } - - // - // can there be many of those? yes -fox - - $m_ctr = $item['media']['content#']; - - if ($m_ctr > 0) { - $e_item = array($item['media']['content@url'], - $item['media']['content@medium'], - $item['media']['content@length']); - - array_push($enclosures, $e_item); - - for ($i = 0; $i <= $m_ctr; $i++ ) { - - if ($item["media"]["content#$i@url"]) { - $e_item = array($item["media"]["content#$i@url"], - $item["media"]["content#$i@medium"], - $item["media"]["content#$i@length"]); - array_push($enclosures, $e_item); - } - } - - } - } - - # sanitize content - - $entry_content = sanitize_article_content($entry_content); - $entry_title = sanitize_article_content($entry_title); - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: done collecting data [TITLE:$entry_title]"); - } - - db_query($link, "BEGIN"); - - if (db_num_rows($result) == 0) { - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: base guid not found"); - } - - // base post entry does not exist, create it - - $result = db_query($link, - "INSERT INTO ttrss_entries - (title, - guid, - link, - updated, - content, - content_hash, - no_orig_date, - date_entered, - comments, - num_comments, - author) - VALUES - ('$entry_title', - '$entry_guid', - '$entry_link', - '$entry_timestamp_fmt', - '$entry_content', - '$content_hash', - $no_orig_date, - NOW(), - '$entry_comments', - '$num_comments', - '$entry_author')"); - } else { - // we keep encountering the entry in feeds, so we need to - // update date_entered column so that we don't get horrible - // dupes when the entry gets purged and reinserted again e.g. - // in the case of SLOW SLOW OMG SLOW updating feeds - - $base_entry_id = db_fetch_result($result, 0, "id"); - - db_query($link, "UPDATE ttrss_entries SET date_entered = NOW() - WHERE id = '$base_entry_id'"); - } - - // now it should exist, if not - bad luck then - - $result = db_query($link, "SELECT - id,content_hash,no_orig_date,title, - ".SUBSTRING_FOR_DATE."(date_entered,1,19) as date_entered, - ".SUBSTRING_FOR_DATE."(updated,1,19) as updated, - num_comments - FROM - ttrss_entries - WHERE guid = '$entry_guid'"); - - $entry_ref_id = 0; - $entry_int_id = 0; - - if (db_num_rows($result) == 1) { - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: base guid found, checking for user record"); - } - - // this will be used below in update handler - $orig_content_hash = db_fetch_result($result, 0, "content_hash"); - $orig_title = db_fetch_result($result, 0, "title"); - $orig_num_comments = db_fetch_result($result, 0, "num_comments"); - $orig_date_entered = strtotime(db_fetch_result($result, - 0, "date_entered")); - - $ref_id = db_fetch_result($result, 0, "id"); - $entry_ref_id = $ref_id; - - // check for user post link to main table - - // do we allow duplicate posts with same GUID in different feeds? - if (get_pref($link, "ALLOW_DUPLICATE_POSTS", $owner_uid, false)) { - $dupcheck_qpart = "AND (feed_id = '$feed' OR feed_id IS NULL)"; - } else { - $dupcheck_qpart = ""; - } - -// error_reporting(0); - - $article_filters = get_article_filters($filters, $entry_title, - $entry_content, $entry_link, $entry_timestamp, $entry_author); - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: article filters: "); - if (count($article_filters) != 0) { - print_r($article_filters); - } - } - - if (find_article_filter($article_filters, "filter")) { - db_query($link, "COMMIT"); // close transaction in progress - continue; - } - -// error_reporting (DEFAULT_ERROR_LEVEL); - - $score = calculate_article_score($article_filters); - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: initial score: $score"); - } - - $query = "SELECT ref_id, int_id FROM ttrss_user_entries WHERE - ref_id = '$ref_id' AND owner_uid = '$owner_uid' - $dupcheck_qpart"; - -// if ($_REQUEST["xdebug"]) print "$query\n"; - - $result = db_query($link, $query); - - // okay it doesn't exist - create user entry - if (db_num_rows($result) == 0) { - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: user record not found, creating..."); - } - - if ($score >= -500 && !find_article_filter($article_filters, 'catchup')) { - $unread = 'true'; - $last_read_qpart = 'NULL'; - } else { - $unread = 'false'; - $last_read_qpart = 'NOW()'; - } - - if (find_article_filter($article_filters, 'mark') || $score > 1000) { - $marked = 'true'; - } else { - $marked = 'false'; - } - - if (find_article_filter($article_filters, 'publish')) { - $published = 'true'; - } else { - $published = 'false'; - } - - $result = db_query($link, - "INSERT INTO ttrss_user_entries - (ref_id, owner_uid, feed_id, unread, last_read, marked, - published, score) - VALUES ('$ref_id', '$owner_uid', '$feed', $unread, - $last_read_qpart, $marked, $published, '$score')"); - - $result = db_query($link, - "SELECT int_id FROM ttrss_user_entries WHERE - ref_id = '$ref_id' AND owner_uid = '$owner_uid' AND - feed_id = '$feed' LIMIT 1"); - - if (db_num_rows($result) == 1) { - $entry_int_id = db_fetch_result($result, 0, "int_id"); - } - } else { - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: user record FOUND"); - } - - $entry_ref_id = db_fetch_result($result, 0, "ref_id"); - $entry_int_id = db_fetch_result($result, 0, "int_id"); - } - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: RID: $entry_ref_id, IID: $entry_int_id"); - } - - $post_needs_update = false; - - if (get_pref($link, "UPDATE_POST_ON_CHECKSUM_CHANGE", $owner_uid, false) && - ($content_hash != $orig_content_hash)) { -// print ""; - $post_needs_update = true; - } - - if (db_escape_string($orig_title) != $entry_title) { - $post_needs_update = true; - } - - if ($orig_num_comments != $num_comments) { - $post_needs_update = true; - } - -// this doesn't seem to be very reliable -// -// if ($orig_timestamp != $entry_timestamp && !$orig_no_orig_date) { -// $post_needs_update = true; -// } - - // if post needs update, update it and mark all user entries - // linking to this post as updated - if ($post_needs_update) { - - if (defined('DAEMON_EXTENDED_DEBUG')) { - _debug("update_rss_feed: post $entry_guid needs update..."); - } - -// print ""; - - db_query($link, "UPDATE ttrss_entries - SET title = '$entry_title', content = '$entry_content', - content_hash = '$content_hash', - num_comments = '$num_comments' - WHERE id = '$ref_id'"); - - if (get_pref($link, "MARK_UNREAD_ON_UPDATE", $owner_uid, false)) { - db_query($link, "UPDATE ttrss_user_entries - SET last_read = null, unread = true WHERE ref_id = '$ref_id'"); - } else { - db_query($link, "UPDATE ttrss_user_entries - SET last_read = null WHERE ref_id = '$ref_id' AND unread = false"); - } - - } - } - - db_query($link, "COMMIT"); - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: assigning labels..."); - } - - assign_article_to_labels($link, $entry_ref_id, $article_filters, - $owner_uid); - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: looking for enclosures..."); - } - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - print_r($enclosures); - } - - db_query($link, "BEGIN"); - - foreach ($enclosures as $enc) { - $enc_url = db_escape_string($enc[0]); - $enc_type = db_escape_string($enc[1]); - $enc_dur = db_escape_string($enc[2]); - - $result = db_query($link, "SELECT id FROM ttrss_enclosures - WHERE content_url = '$enc_url' AND post_id = '$entry_ref_id'"); - - if (db_num_rows($result) == 0) { - db_query($link, "INSERT INTO ttrss_enclosures - (content_url, content_type, title, duration, post_id) VALUES - ('$enc_url', '$enc_type', '', '$enc_dur', '$entry_ref_id')"); - } - } - - db_query($link, "COMMIT"); - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: looking for tags..."); - } - - /* taaaags */ - // , // - - $entry_tags = null; - - preg_match_all("/([^<]+)<\/a>/i", - $entry_content_unescaped, $entry_tags); - -/* print "


    $entry_title : $entry_content_unescaped
    "; - print_r($entry_tags); - print "

    "; */ - - $entry_tags = $entry_tags[1]; - - # check for manual tags - - foreach ($article_filters as $f) { - if ($f[0] == "tag") { - - $manual_tags = trim_array(split(",", $f[1])); - - foreach ($manual_tags as $tag) { - if (tag_is_valid($tag)) { - array_push($entry_tags, $tag); - } - } - } - } - - $boring_tags = trim_array(split(",", mb_strtolower(get_pref($link, - 'BLACKLISTED_TAGS', $owner_uid, ''), 'utf-8'))); - - if ($additional_tags && is_array($additional_tags)) { - foreach ($additional_tags as $tag) { - if (tag_is_valid($tag) && - array_search($tag, $boring_tags) === FALSE) { - array_push($entry_tags, $tag); - } - } - } - -// print "

    TAGS: "; print_r($entry_tags); print "

    "; - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - print_r($entry_tags); - } - - if (count($entry_tags) > 0) { - - db_query($link, "BEGIN"); - - foreach ($entry_tags as $tag) { - - $tag = sanitize_tag($tag); - $tag = db_escape_string($tag); - - if (!tag_is_valid($tag)) continue; - - $result = db_query($link, "SELECT id FROM ttrss_tags - WHERE tag_name = '$tag' AND post_int_id = '$entry_int_id' AND - owner_uid = '$owner_uid' LIMIT 1"); - - // print db_fetch_result($result, 0, "id"); - - if ($result && db_num_rows($result) == 0) { - - db_query($link, "INSERT INTO ttrss_tags - (owner_uid,tag_name,post_int_id) - VALUES ('$owner_uid','$tag', '$entry_int_id')"); - } - } - - db_query($link, "COMMIT"); - } - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: article processed"); - } - } - - if (!$last_updated) { - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: new feed, catching it up..."); - } - catchup_feed($link, $feed, false, $owner_uid); - } - - purge_feed($link, $feed, 0); - - db_query($link, "UPDATE ttrss_feeds - SET last_updated = NOW(), last_error = '' WHERE id = '$feed'"); - -// db_query($link, "COMMIT"); - - } else { - - if ($use_simplepie) { - $error_msg = mb_substr($rss->error(), 0, 250); - } else { - $error_msg = mb_substr(magpie_error(), 0, 250); - } - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: error fetching feed: $error_msg"); - } - - $error_msg = db_escape_string($error_msg); - - db_query($link, - "UPDATE ttrss_feeds SET last_error = '$error_msg', - last_updated = NOW() WHERE id = '$feed'"); - } - - if ($use_simplepie) { - unset($rss); - } - - if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { - _debug("update_rss_feed: done"); - } - - } - - function print_select($id, $default, $values, $attributes = "") { - print ""; - } - - function print_select_hash($id, $default, $values, $attributes = "") { - print ""; - } - - function get_article_filters($filters, $title, $content, $link, $timestamp, $author) { - $matches = array(); - - if ($filters["title"]) { - foreach ($filters["title"] as $filter) { - $reg_exp = $filter["reg_exp"]; - $inverse = $filter["inverse"]; - if ((!$inverse && preg_match("/$reg_exp/i", $title)) || - ($inverse && !preg_match("/$reg_exp/i", $title))) { - - array_push($matches, array($filter["action"], $filter["action_param"])); - } - } - } - - if ($filters["content"]) { - foreach ($filters["content"] as $filter) { - $reg_exp = $filter["reg_exp"]; - $inverse = $filter["inverse"]; - - if ((!$inverse && preg_match("/$reg_exp/i", $content)) || - ($inverse && !preg_match("/$reg_exp/i", $content))) { - - array_push($matches, array($filter["action"], $filter["action_param"])); - } - } - } - - if ($filters["both"]) { - foreach ($filters["both"] as $filter) { - $reg_exp = $filter["reg_exp"]; - $inverse = $filter["inverse"]; - - if ($inverse) { - if (!preg_match("/$reg_exp/i", $title) && !preg_match("/$reg_exp/i", $content)) { - array_push($matches, array($filter["action"], $filter["action_param"])); - } - } else { - if (preg_match("/$reg_exp/i", $title) || preg_match("/$reg_exp/i", $content)) { - array_push($matches, array($filter["action"], $filter["action_param"])); - } - } - } - } - - if ($filters["link"]) { - $reg_exp = $filter["reg_exp"]; - foreach ($filters["link"] as $filter) { - $reg_exp = $filter["reg_exp"]; - $inverse = $filter["inverse"]; - - if ((!$inverse && preg_match("/$reg_exp/i", $link)) || - ($inverse && !preg_match("/$reg_exp/i", $link))) { - - array_push($matches, array($filter["action"], $filter["action_param"])); - } - } - } - - if ($filters["date"]) { - $reg_exp = $filter["reg_exp"]; - foreach ($filters["date"] as $filter) { - $date_modifier = $filter["filter_param"]; - $inverse = $filter["inverse"]; - $check_timestamp = strtotime($filter["reg_exp"]); - - # no-op when timestamp doesn't parse to prevent misfires - - if ($check_timestamp) { - $match_ok = false; - - if ($date_modifier == "before" && $timestamp < $check_timestamp || - $date_modifier == "after" && $timestamp > $check_timestamp) { - $match_ok = true; - } - - if ($inverse) $match_ok = !$match_ok; - - if ($match_ok) { - array_push($matches, array($filter["action"], $filter["action_param"])); - } - } - } - } - - if ($filters["author"]) { - foreach ($filters["author"] as $filter) { - $reg_exp = $filter["reg_exp"]; - $inverse = $filter["inverse"]; - if ((!$inverse && preg_match("/$reg_exp/i", $author)) || - ($inverse && !preg_match("/$reg_exp/i", $author))) { - - array_push($matches, array($filter["action"], $filter["action_param"])); - } - } - } - - return $matches; - } - - function find_article_filter($filters, $filter_name) { - foreach ($filters as $f) { - if ($f[0] == $filter_name) { - return $f; - }; - } - return false; - } - - function calculate_article_score($filters) { - $score = 0; - - foreach ($filters as $f) { - if ($f[0] == "score") { - $score += $f[1]; - }; - } - return $score; - } - - function assign_article_to_labels($link, $id, $filters, $owner_uid) { - foreach ($filters as $f) { - if ($f[0] == "label") { - label_add_article($link, $id, $f[1], $owner_uid); - }; - } - } - - function printFeedEntry($feed_id, $class, $feed_title, $unread, $icon_file, $link, - $rtl_content = false, $last_updated = false, $last_error = false, - $fg_content = false, $bg_content = false) { - - if (!$feed_title) $feed_title = getFeedTitle($link, $feed_id, false); - if (!$unread) $unread = getFeedUnread($link, $feed_id); - - if ($unread > 0) $class .= "Unread"; - - if (!$icon_file) $icon_file = getFeedIcon($feed_id); - - if (strpos($icon_file, "images") !== false) { - $icon_file = theme_image($link, $icon_file); - } - - if (file_exists($icon_file) && filesize($icon_file) > 0) { - $feed_icon = ""; - } else { - $feed_icon = ""; - } - - if ($rtl_content) { - $rtl_tag = "dir=\"rtl\""; - } else { - $rtl_tag = "dir=\"ltr\""; - } - - $error_notify_msg = ""; - - if ($last_error) { - $link_title = "Error: $last_error ($last_updated)"; - $error_notify_msg = "(Error)"; - } else if ($last_updated) { - $link_title = "Updated: $last_updated"; - } - - $feed = "$feed_title"; - -/* if ($feed_id < -10) { - $bg_color = "#00ccff"; - $fg_color = "white"; - } - - if ($fg_color || $bg_color) { - $color_str = "
    l
    "; - } - - print $color_str; */ - - print "
  • "; - if (get_pref($link, 'ENABLE_FEED_ICONS')) { - print "$feed_icon"; - } - - print "$feed"; - - if ($unread != 0) { - $fctr_class = "class=\"feedCtrHasUnread\""; - } else { - $fctr_class = "class=\"feedCtrNoUnread\""; - } - - print " - ($unread)"; - - if (get_pref($link, "EXTENDED_FEEDLIST")) { - $total = getFeedArticles($link, $feed_id); - print "
    - $last_updated ($total total) $error_notify_msg
    "; - } - - print "
  • "; - - } - - function getmicrotime() { - list($usec, $sec) = explode(" ",microtime()); - return ((float)$usec + (float)$sec); - } - - function print_radio($id, $default, $true_is, $values, $attributes = "") { - foreach ($values as $v) { - - if ($v == $default) - $sel = "checked"; - else - $sel = ""; - - if ($v == $true_is) { - $sel .= " value=\"1\""; - } else { - $sel .= " value=\"0\""; - } - - print " $v "; - - } - } - - function initialize_user_prefs($link, $uid, $profile = false) { - - $uid = db_escape_string($uid); - - if (!$profile) { - $profile = "NULL"; - $profile_qpart = "AND profile IS NULL"; - } else { - $profile_qpart = "AND profile = '$profile'"; - } - - if (get_schema_version($link) < 63) $profile_qpart = ""; - - db_query($link, "BEGIN"); - - $result = db_query($link, "SELECT pref_name,def_value FROM ttrss_prefs"); - - $u_result = db_query($link, "SELECT pref_name - FROM ttrss_user_prefs WHERE owner_uid = '$uid' $profile_qpart"); - - $active_prefs = array(); - - while ($line = db_fetch_assoc($u_result)) { - array_push($active_prefs, $line["pref_name"]); - } - - while ($line = db_fetch_assoc($result)) { - if (array_search($line["pref_name"], $active_prefs) === FALSE) { -// print "adding " . $line["pref_name"] . "
    "; - - if (get_schema_version($link) < 63) { - db_query($link, "INSERT INTO ttrss_user_prefs - (owner_uid,pref_name,value) VALUES - ('$uid', '".$line["pref_name"]."','".$line["def_value"]."')"); - - } else { - db_query($link, "INSERT INTO ttrss_user_prefs - (owner_uid,pref_name,value, profile) VALUES - ('$uid', '".$line["pref_name"]."','".$line["def_value"]."', $profile)"); - } - - } - } - - db_query($link, "COMMIT"); - - } - - function lookup_user_id($link, $user) { - - $result = db_query($link, "SELECT id FROM ttrss_users WHERE - login = '$login'"); - - if (db_num_rows($result) == 1) { - return db_fetch_result($result, 0, "id"); - } else { - return false; - } - } - - function http_authenticate_user($link) { - -// error_log("http_authenticate_user: ".$_SERVER["PHP_AUTH_USER"]."\n", 3, '/tmp/tt-rss.log'); - - if (!$_SERVER["PHP_AUTH_USER"]) { - - header('WWW-Authenticate: Basic realm="Tiny Tiny RSS RSSGen"'); - header('HTTP/1.0 401 Unauthorized'); - exit; - - } else { - $auth_result = authenticate_user($link, - $_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"]); - - if (!$auth_result) { - header('WWW-Authenticate: Basic realm="Tiny Tiny RSS RSSGen"'); - header('HTTP/1.0 401 Unauthorized'); - exit; - } - } - - return true; - } - - function authenticate_user($link, $login, $password, $force_auth = false) { - - if (!SINGLE_USER_MODE) { - - $pwd_hash1 = encrypt_password($password); - $pwd_hash2 = encrypt_password($password, $login); - $login = db_escape_string($login); - - if (defined('ALLOW_REMOTE_USER_AUTH') && ALLOW_REMOTE_USER_AUTH - && $_SERVER["REMOTE_USER"] && $login != "admin") { - - $login = db_escape_string($_SERVER["REMOTE_USER"]); - - $query = "SELECT id,login,access_level,pwd_hash - FROM ttrss_users WHERE - login = '$login'"; - - } else { - $query = "SELECT id,login,access_level,pwd_hash - FROM ttrss_users WHERE - login = '$login' AND (pwd_hash = '$pwd_hash1' OR - pwd_hash = '$pwd_hash2')"; - } - - $result = db_query($link, $query); - - if (db_num_rows($result) == 1) { - $_SESSION["uid"] = db_fetch_result($result, 0, "id"); - $_SESSION["name"] = db_fetch_result($result, 0, "login"); - $_SESSION["access_level"] = db_fetch_result($result, 0, "access_level"); - - db_query($link, "UPDATE ttrss_users SET last_login = NOW() WHERE id = " . - $_SESSION["uid"]); - - $_SESSION["ip_address"] = $_SERVER["REMOTE_ADDR"]; - $_SESSION["pwd_hash"] = db_fetch_result($result, 0, "pwd_hash"); - - initialize_user_prefs($link, $_SESSION["uid"]); - - return true; - } - - return false; - - } else { - - $_SESSION["uid"] = 1; - $_SESSION["name"] = "admin"; - - $_SESSION["ip_address"] = $_SERVER["REMOTE_ADDR"]; - - initialize_user_prefs($link, $_SESSION["uid"]); - - return true; - } - } - - function make_password($length = 8) { - - $password = ""; - $possible = "0123456789abcdfghjkmnpqrstvwxyzABCDFGHJKMNPQRSTVWXYZ"; - - $i = 0; - - while ($i < $length) { - $char = substr($possible, mt_rand(0, strlen($possible)-1), 1); - - if (!strstr($password, $char)) { - $password .= $char; - $i++; - } - } - return $password; - } - - // this is called after user is created to initialize default feeds, labels - // or whatever else - - // user preferences are checked on every login, not here - - function initialize_user($link, $uid) { - -/* db_query($link, "INSERT INTO ttrss_labels2 (owner_uid, caption) - VALUES ('$uid', 'All Articles')"); - - db_query($link, "INSERT INTO ttrss_filters - (owner_uid, feed_id, filter_type, reg_exp, enabled, - action_id, action_param, filter_param) - VALUES ('$uid', NULL, 1, '.', true, 7, 'All Articles', 'before')"); */ - - db_query($link, "insert into ttrss_feeds (owner_uid,title,feed_url) - values ('$uid', 'Tiny Tiny RSS: New Releases', - 'http://tt-rss.org/releases.rss')"); - - db_query($link, "insert into ttrss_feeds (owner_uid,title,feed_url) - values ('$uid', 'Tiny Tiny RSS: Forum', - 'http://tt-rss.org/forum/rss.php')"); - } - - function logout_user() { - session_destroy(); - if (isset($_COOKIE[session_name()])) { - setcookie(session_name(), '', time()-42000, '/'); - } - } - - function get_script_urlpath() { - return preg_replace('/\/[^\/]*$/', "", $_SERVER["REQUEST_URI"]); - } - - function validate_session($link) { - if (SINGLE_USER_MODE) { - return true; - } - - if (SESSION_CHECK_ADDRESS && $_SESSION["uid"]) { - if ($_SESSION["ip_address"]) { - if ($_SESSION["ip_address"] != $_SERVER["REMOTE_ADDR"]) { - $_SESSION["login_error_msg"] = __("Session failed to validate (incorrect IP)"); - return false; - } - } - } - - if ($_SESSION["ref_schema_version"] != get_schema_version($link, true)) { - return false; - } - - if ($_SESSION["uid"]) { - - $result = db_query($link, - "SELECT pwd_hash FROM ttrss_users WHERE id = '".$_SESSION["uid"]."'"); - - $pwd_hash = db_fetch_result($result, 0, "pwd_hash"); - - if ($pwd_hash != $_SESSION["pwd_hash"]) { - return false; - } - } - -/* if ($_SESSION["cookie_lifetime"] && $_SESSION["uid"]) { - - //print_r($_SESSION); - - if (time() > $_SESSION["cookie_lifetime"]) { - return false; - } - } */ - - return true; - } - - function login_sequence($link, $mobile = false) { - if (!SINGLE_USER_MODE) { - - $login_action = $_POST["login_action"]; - - # try to authenticate user if called from login form - if ($login_action == "do_login") { - $login = $_POST["login"]; - $password = $_POST["password"]; - $remember_me = $_POST["remember_me"]; - - if (authenticate_user($link, $login, $password)) { - $_POST["password"] = ""; - - $_SESSION["language"] = $_POST["language"]; - $_SESSION["ref_schema_version"] = get_schema_version($link, true); - $_SESSION["bw_limit"] = !!$_POST["bw_limit"]; - - if ($_POST["profile"]) { - - $profile = db_escape_string($_POST["profile"]); - - $result = db_query($link, "SELECT id FROM ttrss_settings_profiles - WHERE id = '$profile' AND owner_uid = " . $_SESSION["uid"]); - - if (db_num_rows($result) != 0) { - $_SESSION["profile"] = $profile; - $_SESSION["prefs_cache"] = array(); - } - } - - header("Location: " . $_SERVER["REQUEST_URI"]); - exit; - - return; - } else { - $_SESSION["login_error_msg"] = __("Incorrect username or password"); - } - } - - if (!$_SESSION["uid"] || !validate_session($link)) { - render_login_form($link, $mobile); - //header("Location: login.php"); - exit; - } else { - /* bump login timestamp */ - db_query($link, "UPDATE ttrss_users SET last_login = NOW() WHERE id = " . - $_SESSION["uid"]); - - if ($_SESSION["language"] && SESSION_COOKIE_LIFETIME > 0) { - setcookie("ttrss_lang", $_SESSION["language"], - time() + SESSION_COOKIE_LIFETIME); - } - - /* bump counters stamp since we're getting reloaded anyway */ - - $_SESSION["get_all_counters_stamp"] = time(); - } - - } else { - return authenticate_user($link, "admin", null); - } - } - - function truncate_string($str, $max_len) { - if (mb_strlen($str, "utf-8") > $max_len - 3) { - return mb_substr($str, 0, $max_len, "utf-8") . "…"; - } else { - return $str; - } - } - - function theme_image($link, $filename) { - if ($link) { - $theme_path = get_user_theme_path($link); - - if ($theme_path && is_file($theme_path.$filename)) { - return $theme_path.$filename; - } else { - return $filename; - } - } else { - return $filename; - } - } - - function get_user_theme($link) { - - if (get_schema_version($link) >= 63 && $_SESSION["uid"]) { - $theme_name = get_pref($link, "_THEME_ID"); - if (is_dir("themes/$theme_name")) { - return $theme_name; - } else { - return ''; - } - } else { - return ''; - } - - } - - function get_user_theme_path($link) { - - if (get_schema_version($link) >= 63 && $_SESSION["uid"]) { - $theme_name = get_pref($link, "_THEME_ID"); - - if ($theme_name && is_dir("themes/$theme_name")) { - $theme_path = "themes/$theme_name/"; - } else { - $theme_name = ''; - } - } else { - $theme_path = ''; - } - - return $theme_path; - } - - function get_user_theme_options($link) { - $t = get_user_theme_path($link); - - if ($t) { - if (is_file("$t/theme.ini")) { - $ini = parse_ini_file("$t/theme.ini", true); - if ($ini['theme']['version']) { - return $ini['theme']['options']; - } - } - } - return false; - } - - - function get_all_themes() { - $themes = glob("themes/*"); - - asort($themes); - - $rv = array(); - - foreach ($themes as $t) { - if (is_file("$t/theme.ini")) { - $ini = parse_ini_file("$t/theme.ini", true); - if ($ini['theme']['version'] && !$ini['theme']['disabled']) { - $entry = array(); - $entry["path"] = $t; - $entry["base"] = basename($t); - $entry["name"] = $ini['theme']['name']; - $entry["version"] = $ini['theme']['version']; - $entry["author"] = $ini['theme']['author']; - $entry["options"] = $ini['theme']['options']; - array_push($rv, $entry); - } - } - } - - return $rv; - } - - function smart_date_time($timestamp) { - if (date("Y.m.d", $timestamp) == date("Y.m.d")) { - return date("G:i", $timestamp); - } else if (date("Y", $timestamp) == date("Y")) { - return date("M d, G:i", $timestamp); - } else { - return date("Y/m/d, G:i", $timestamp); - } - } - - function smart_date($timestamp) { - if (date("Y.m.d", $timestamp) == date("Y.m.d")) { - return "Today"; - } else if (date("Y", $timestamp) == date("Y")) { - return date("D m", $timestamp); - } else { - return date("Y/m/d", $timestamp); - } - } - - function sql_bool_to_string($s) { - if ($s == "t" || $s == "1") { - return "true"; - } else { - return "false"; - } - } - - function sql_bool_to_bool($s) { - if ($s == "t" || $s == "1") { - return true; - } else { - return false; - } - } - - function bool_to_sql_bool($s) { - if ($s) { - return "true"; - } else { - return "false"; - } - } - - function toggleEvenOdd($a) { - if ($a == "even") - return "odd"; - else - return "even"; - } - - function get_schema_version($link, $nocache = false) { - if (!$_SESSION["schema_version"] || $nocache) { - $result = db_query($link, "SELECT schema_version FROM ttrss_version"); - $version = db_fetch_result($result, 0, "schema_version"); - $_SESSION["schema_version"] = $version; - return $version; - } else { - return $_SESSION["schema_version"]; - } - } - - function sanity_check($link) { - - error_reporting(0); - - $error_code = 0; - $schema_version = get_schema_version($link); - - if ($schema_version != SCHEMA_VERSION) { - $error_code = 5; - } - - if (DB_TYPE == "mysql") { - $result = db_query($link, "SELECT true", false); - if (db_num_rows($result) != 1) { - $error_code = 10; - } - } - - if (db_escape_string("testTEST") != "testTEST") { - $error_code = 12; - } - - error_reporting (DEFAULT_ERROR_LEVEL); - - if ($error_code != 0) { - print_error_xml($error_code); - return false; - } else { - return true; - } - } - - function file_is_locked($filename) { - if (function_exists('flock')) { - error_reporting(0); - $fp = fopen(LOCK_DIRECTORY . "/$filename", "r"); - error_reporting(DEFAULT_ERROR_LEVEL); - if ($fp) { - if (flock($fp, LOCK_EX | LOCK_NB)) { - flock($fp, LOCK_UN); - fclose($fp); - return false; - } - fclose($fp); - return true; - } else { - return false; - } - } - return true; // consider the file always locked and skip the test - } - - function make_lockfile($filename) { - $fp = fopen(LOCK_DIRECTORY . "/$filename", "w"); - - if (flock($fp, LOCK_EX | LOCK_NB)) { - if (function_exists('posix_getpid')) { - fwrite($fp, posix_getpid() . "\n"); - } - return $fp; - } else { - return false; - } - } - - function make_stampfile($filename) { - $fp = fopen(LOCK_DIRECTORY . "/$filename", "w"); - - if (flock($fp, LOCK_EX | LOCK_NB)) { - fwrite($fp, time() . "\n"); - flock($fp, LOCK_UN); - fclose($fp); - return true; - } else { - return false; - } - } - - function read_stampfile($filename) { - - error_reporting(0); - $fp = fopen(LOCK_DIRECTORY . "/$filename", "r"); - error_reporting (DEFAULT_ERROR_LEVEL); - - if ($fp) { - if (flock($fp, LOCK_EX)) { - $stamp = fgets($fp); - flock($fp, LOCK_UN); - fclose($fp); - return $stamp; - } else { - return false; - } - } else { - return false; - } - } - - function sql_random_function() { - if (DB_TYPE == "mysql") { - return "RAND()"; - } else { - return "RANDOM()"; - } - } - - function catchup_feed($link, $feed, $cat_view, $owner_uid) { - - if (!$owner_uid) $owner_uid = $_SESSION['uid']; - - if (preg_match("/^-?[0-9][0-9]*$/", $feed) != false) { - - if ($cat_view) { - - if ($feed >= 0) { - - if ($feed > 0) { - $cat_qpart = "cat_id = '$feed'"; - } else { - $cat_qpart = "cat_id IS NULL"; - } - - $tmp_result = db_query($link, "SELECT id - FROM ttrss_feeds WHERE $cat_qpart AND owner_uid = $owner_uid"); - - while ($tmp_line = db_fetch_assoc($tmp_result)) { - - $tmp_feed = $tmp_line["id"]; - - db_query($link, "UPDATE ttrss_user_entries - SET unread = false,last_read = NOW() - WHERE feed_id = '$tmp_feed' AND owner_uid = $owner_uid"); - } - } else if ($feed == -2) { - - - db_query($link, "UPDATE ttrss_user_entries - SET unread = false,last_read = NOW() WHERE (SELECT COUNT(*) - FROM ttrss_user_labels2 WHERE article_id = ref_id) > 0 - AND unread = true AND owner_uid = $owner_uid"); - } - - } else if ($feed > 0) { - - $tmp_result = db_query($link, "SELECT id - FROM ttrss_feeds WHERE parent_feed = '$feed' - ORDER BY cat_id,title"); - - $parent_ids = array(); - - if (db_num_rows($tmp_result) > 0) { - while ($p = db_fetch_assoc($tmp_result)) { - array_push($parent_ids, "feed_id = " . $p["id"]); - } - - $children_qpart = implode(" OR ", $parent_ids); - - db_query($link, "UPDATE ttrss_user_entries - SET unread = false,last_read = NOW() - WHERE (feed_id = '$feed' OR $children_qpart) - AND owner_uid = $owner_uid"); - - } else { - db_query($link, "UPDATE ttrss_user_entries - SET unread = false,last_read = NOW() - WHERE feed_id = '$feed' AND owner_uid = $owner_uid"); - } - - } else if ($feed < 0 && $feed > -10) { // special, like starred - - if ($feed == -1) { - db_query($link, "UPDATE ttrss_user_entries - SET unread = false,last_read = NOW() - WHERE marked = true AND owner_uid = $owner_uid"); - } - - if ($feed == -2) { - db_query($link, "UPDATE ttrss_user_entries - SET unread = false,last_read = NOW() - WHERE published = true AND owner_uid = $owner_uid"); - } - - if ($feed == -3) { - - $intl = get_pref($link, "FRESH_ARTICLE_MAX_AGE"); - - if (DB_TYPE == "pgsql") { - $match_part = "updated > NOW() - INTERVAL '$intl hour' "; - } else { - $match_part = "updated > DATE_SUB(NOW(), - INTERVAL $intl HOUR) "; - } - - $result = db_query($link, "SELECT id FROM ttrss_entries, - ttrss_user_entries WHERE $match_part AND - unread = true AND - ttrss_user_entries.ref_id = ttrss_entries.id AND - owner_uid = $owner_uid"); - - $affected_ids = array(); - - while ($line = db_fetch_assoc($result)) { - array_push($affected_ids, $line["id"]); - } - - catchupArticlesById($link, $affected_ids, 0); - } - - if ($feed == -4) { - db_query($link, "UPDATE ttrss_user_entries - SET unread = false,last_read = NOW() - WHERE owner_uid = $owner_uid"); - } - - } else if ($feed < -10) { // label - - $label_id = -$feed - 11; - - db_query($link, "UPDATE ttrss_user_entries, ttrss_user_labels2 - SET unread = false, last_read = NOW() - WHERE label_id = '$label_id' AND unread = true - AND owner_uid = '$owner_uid' AND ref_id = article_id"); - - } - - ccache_update($link, $feed, $owner_uid, $cat_view); - - } else { // tag - db_query($link, "BEGIN"); - - $tag_name = db_escape_string($feed); - - $result = db_query($link, "SELECT post_int_id FROM ttrss_tags - WHERE tag_name = '$tag_name' AND owner_uid = $owner_uid"); - - while ($line = db_fetch_assoc($result)) { - db_query($link, "UPDATE ttrss_user_entries SET - unread = false, last_read = NOW() - WHERE int_id = " . $line["post_int_id"]); - } - db_query($link, "COMMIT"); - } - } - - function update_generic_feed($link, $feed, $cat_view, $force_update = false) { - if ($cat_view) { - - if ($feed > 0) { - $cat_qpart = "cat_id = '$feed'"; - } else { - $cat_qpart = "cat_id IS NULL"; - } - - $tmp_result = db_query($link, "SELECT id FROM ttrss_feeds - WHERE $cat_qpart AND owner_uid = " . $_SESSION["uid"]); - - while ($tmp_line = db_fetch_assoc($tmp_result)) { - $feed_id = $tmp_line["id"]; - update_rss_feed($link, $feed_id, $force_update); - } - - } else { - update_rss_feed($link, $feed, $force_update); - } - } - - function getAllCounters($link, $omode = "flc", $active_feed = false) { - - if (!$omode) $omode = "flc"; - - getGlobalCounters($link); - getVirtCounters($link); - - if (strchr($omode, "l")) getLabelCounters($link); - if (strchr($omode, "f")) getFeedCounters($link, $active_feed); - if (strchr($omode, "t")) getTagCounters($link); - if (strchr($omode, "c")) { - if (get_pref($link, 'ENABLE_FEED_CATS')) { - getCategoryCounters($link); - } - } - } - - function getCategoryCounters($link) { - # two special categories are -1 and -2 (all virtuals; all labels) - -/* $ctr = getCategoryUnread($link, -1); - - print ""; */ - - $ctr = getCategoryUnread($link, -2); - - print ""; - - $age_qpart = getMaxAgeSubquery(); - - $result = db_query($link, "SELECT id AS cat_id, value AS unread - FROM ttrss_feed_categories, ttrss_cat_counters_cache - WHERE ttrss_cat_counters_cache.feed_id = id AND - ttrss_feed_categories.owner_uid = " . $_SESSION["uid"]); - - while ($line = db_fetch_assoc($result)) { - $line["cat_id"] = (int) $line["cat_id"]; - - print ""; - } - - /* Special case: NULL category doesn't actually exist in the DB */ - - print ""; - - } - - function getCategoryUnread($link, $cat, $owner_uid = false) { - - if (!$owner_uid) $owner_uid = $_SESSION["uid"]; - - if ($cat >= 0) { - - if ($cat != 0) { - $cat_query = "cat_id = '$cat'"; - } else { - $cat_query = "cat_id IS NULL"; - } - - $age_qpart = getMaxAgeSubquery(); - - $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE $cat_query - AND owner_uid = " . $owner_uid); - - $cat_feeds = array(); - while ($line = db_fetch_assoc($result)) { - array_push($cat_feeds, "feed_id = " . $line["id"]); - } - - if (count($cat_feeds) == 0) return 0; - - $match_part = implode(" OR ", $cat_feeds); - - $result = db_query($link, "SELECT COUNT(int_id) AS unread - FROM ttrss_user_entries,ttrss_entries - WHERE unread = true AND ($match_part) AND id = ref_id - AND $age_qpart AND owner_uid = " . $owner_uid); - - $unread = 0; - - # this needs to be rewritten - while ($line = db_fetch_assoc($result)) { - $unread += $line["unread"]; - } - - return $unread; - } else if ($cat == -1) { - return getFeedUnread($link, -1) + getFeedUnread($link, -2) + getFeedUnread($link, -3) + getFeedUnread($link, 0); - } else if ($cat == -2) { - - $result = db_query($link, " - SELECT COUNT(unread) AS unread FROM - ttrss_user_entries, ttrss_labels2, ttrss_user_labels2, ttrss_feeds - WHERE label_id = ttrss_labels2.id AND article_id = ref_id AND - ttrss_labels2.owner_uid = '$owner_uid' - AND unread = true AND feed_id = ttrss_feeds.id - AND ttrss_user_entries.owner_uid = '$owner_uid'"); - - $unread = db_fetch_result($result, 0, "unread"); - - return $unread; - - } - } - - function getMaxAgeSubquery($days = COUNTERS_MAX_AGE) { - if (DB_TYPE == "pgsql") { - return "ttrss_entries.date_entered > - NOW() - INTERVAL '$days days'"; - } else { - return "ttrss_entries.date_entered > - DATE_SUB(NOW(), INTERVAL $days DAY)"; - } - } - - function getFeedUnread($link, $feed, $is_cat = false) { - return getFeedArticles($link, $feed, $is_cat, true, $_SESSION["uid"]); - } - - function getLabelUnread($link, $label_id, $owner_uid = false) { - if (!$owner_uid) $owner_uid = $_SESSION["uid"]; - - $result = db_query($link, " - SELECT COUNT(unread) AS unread FROM - ttrss_user_entries, ttrss_labels2, ttrss_user_labels2, ttrss_feeds - WHERE label_id = ttrss_labels2.id AND article_id = ref_id AND - ttrss_labels2.owner_uid = '$owner_uid' AND ttrss_labels2.id = '$label_id' - AND unread = true AND feed_id = ttrss_feeds.id - AND ttrss_user_entries.owner_uid = '$owner_uid'"); - - if (db_num_rows($result) != 0) { - return db_fetch_result($result, 0, "unread"); - } else { - return 0; - } - } - - function getFeedArticles($link, $feed, $is_cat = false, $unread_only = false, - $owner_uid = false) { - - $n_feed = (int) $feed; - - if (!$owner_uid) $owner_uid = $_SESSION["uid"]; - - if ($unread_only) { - $unread_qpart = "unread = true"; - } else { - $unread_qpart = "true"; - } - - $age_qpart = getMaxAgeSubquery(); - - if ($is_cat) { - return getCategoryUnread($link, $n_feed, $owner_uid); - } if ($feed != "0" && $n_feed == 0) { - - $result = db_query($link, "SELECT SUM((SELECT COUNT(int_id) - FROM ttrss_user_entries,ttrss_entries WHERE int_id = post_int_id - AND ref_id = id AND $age_qpart - AND $unread_qpart)) AS count FROM ttrss_tags - WHERE owner_uid = $owner_uid AND tag_name = '$feed'"); - return db_fetch_result($result, 0, "count"); - - } else if ($n_feed == -1) { - $match_part = "marked = true"; - } else if ($n_feed == -2) { - $match_part = "published = true"; - } else if ($n_feed == -3) { - $match_part = "unread = true"; - - $intl = get_pref($link, "FRESH_ARTICLE_MAX_AGE", $owner_uid); - - if (DB_TYPE == "pgsql") { - $match_part .= " AND updated > NOW() - INTERVAL '$intl hour' "; - } else { - $match_part .= " AND updated > DATE_SUB(NOW(), INTERVAL $intl HOUR) "; - } - } else if ($n_feed == -4) { - $match_part = "true"; - } else if ($n_feed >= 0) { - - $result = db_query($link, "SELECT id FROM ttrss_feeds - WHERE parent_feed = '$n_feed' - AND owner_uid = " . $owner_uid); - - if (db_num_rows($result) > 0) { - - $linked_feeds = array(); - while ($line = db_fetch_assoc($result)) { - array_push($linked_feeds, "feed_id = " . $line["id"]); - } - - array_push($linked_feeds, "feed_id = $n_feed"); - - $match_part = implode(" OR ", $linked_feeds); - - $tmp_result = db_query($link, "SELECT COUNT(int_id) AS unread - FROM ttrss_user_entries,ttrss_entries - WHERE $unread_qpart AND - ttrss_user_entries.ref_id = ttrss_entries.id AND - $age_qpart AND - ($match_part) AND - owner_uid = " . $owner_uid); - - $unread = 0; - - # this needs to be rewritten - while ($line = db_fetch_assoc($tmp_result)) { - $unread += $line["unread"]; - } - - return $unread; - - } else { - if ($n_feed != 0) { - $match_part = "feed_id = '$n_feed'"; - } else { - $match_part = "feed_id IS NULL"; - } - } - } else if ($feed < -10) { - - $label_id = -$feed - 11; - - return getLabelUnread($link, $label_id, $owner_uid); - - } - - if ($match_part) { - - if ($n_feed != 0) { - $from_qpart = "ttrss_user_entries,ttrss_feeds,ttrss_entries"; - $feeds_qpart = "ttrss_user_entries.feed_id = ttrss_feeds.id AND"; - } else { - $from_qpart = "ttrss_user_entries,ttrss_entries"; - } - - $query = "SELECT count(int_id) AS unread - FROM $from_qpart WHERE - ttrss_user_entries.ref_id = ttrss_entries.id AND - $age_qpart AND - $feeds_qpart - $unread_qpart AND ($match_part) AND ttrss_user_entries.owner_uid = $owner_uid"; - - $result = db_query($link, $query); - - } else { - - $result = db_query($link, "SELECT COUNT(post_int_id) AS unread - FROM ttrss_tags,ttrss_user_entries,ttrss_entries - WHERE tag_name = '$feed' AND post_int_id = int_id AND ref_id = ttrss_entries.id - AND $unread_qpart AND $age_qpart AND - ttrss_tags.owner_uid = " . $owner_uid); - } - - $unread = db_fetch_result($result, 0, "unread"); - - return $unread; - } - - function getGlobalUnread($link, $user_id = false) { - - if (!$user_id) { - $user_id = $_SESSION["uid"]; - } - - $result = db_query($link, "SELECT SUM(value) AS c_id FROM ttrss_counters_cache - WHERE owner_uid = '$user_id' AND feed_id > 0"); - - $c_id = db_fetch_result($result, 0, "c_id"); - - return $c_id; - } - - function getGlobalCounters($link, $global_unread = -1) { - if ($global_unread == -1) { - $global_unread = getGlobalUnread($link); - } - print ""; - - $result = db_query($link, "SELECT COUNT(id) AS fn FROM - ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"]); - - $subscribed_feeds = db_fetch_result($result, 0, "fn"); - - print ""; - - } - - function getSubscribedFeeds($link) { - $result = db_query($link, "SELECT COUNT(id) AS fn FROM - ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"]); - - return db_fetch_result($result, 0, "fn"); - } - - function getTagCounters($link) { - - $age_qpart = getMaxAgeSubquery(); - - $result = db_query($link, "SELECT tag_name,SUM((SELECT COUNT(int_id) - FROM ttrss_user_entries,ttrss_entries WHERE int_id = post_int_id - AND ref_id = id AND $age_qpart - AND unread = true)) AS count FROM ttrss_tags - WHERE owner_uid = ".$_SESSION['uid']." GROUP BY tag_name - ORDER BY count DESC LIMIT 55"); - - $tags = array(); - - while ($line = db_fetch_assoc($result)) { - $tags[$line["tag_name"]] += $line["count"]; - } - - foreach (array_keys($tags) as $tag) { - $unread = $tags[$tag]; - $tag = htmlspecialchars($tag); - print ""; - } - } - - function getVirtCounters($link, $ret_mode = false) { - - $ret_arr = array(); - - for ($i = 0; $i >= -4; $i--) { - - $count = getFeedUnread($link, $i); - - if (!$ret_mode) { - - if (get_pref($link, 'EXTENDED_FEEDLIST')) { - $xmsg_part = "xmsg=\"(" . getFeedArticles($link, $i) . " total)\""; - } else { - $xmsg_part = ""; - } - - print ""; - } else { - $ret_arr[$i]["counter"] = $count; - $ret_arr[$i]["description"] = getFeedTitle($link, $i); - } - } - - return $ret_arr; - } - - function getLabelCounters($link, $ret_mode = false) { - - $age_qpart = getMaxAgeSubquery(); - - $owner_uid = $_SESSION["uid"]; - - $result = db_query($link, "SELECT id, caption FROM ttrss_labels2 - WHERE owner_uid = '$owner_uid'"); - - while ($line = db_fetch_assoc($result)) { - - $id = -$line["id"] - 11; - - $label_name = $line["caption"]; - $count = getFeedUnread($link, $id); - - if (!$ret_mode) { - - if (get_pref($link, 'EXTENDED_FEEDLIST')) { - $xmsg_part = "xmsg=\"(" . getFeedArticles($link, $id) . " total)\""; - } else { - $xmsg_part = ""; - } - - print ""; - - } else { - $ret_arr[$id]["counter"] = $count; - $ret_arr[$id]["description"] = $label_name; - } - } - - return $ret_arr; - } - - function getFeedCounters($link, $active_feed = false) { - - $age_qpart = getMaxAgeSubquery(); - - $query = "SELECT ttrss_feeds.id, - ttrss_feeds.title, - ".SUBSTRING_FOR_DATE."(ttrss_feeds.last_updated,1,19) AS last_updated, - last_error, value AS count - FROM ttrss_feeds, ttrss_counters_cache - WHERE ttrss_feeds.owner_uid = ".$_SESSION["uid"]." - AND parent_feed IS NULL - AND ttrss_counters_cache.feed_id = id"; - - $result = db_query($link, $query); - $fctrs_modified = false; - - $short_date = get_pref($link, 'SHORT_DATE_FORMAT'); - - while ($line = db_fetch_assoc($result)) { - - $id = $line["id"]; - $count = $line["count"]; - $last_error = htmlspecialchars($line["last_error"]); - - if (get_pref($link, 'HEADLINES_SMART_DATE')) { - $last_updated = smart_date_time(strtotime($line["last_updated"])); - } else { - $last_updated = date($short_date, strtotime($line["last_updated"])); - } - - $last_updated = htmlspecialchars($last_updated); - - $has_img = feed_has_icon($id); - - $tmp_result = db_query($link, - "SELECT SUM(value) AS unread FROM ttrss_feeds, ttrss_counters_cache - WHERE parent_feed = '$id' AND feed_id = id"); - - $count += db_fetch_result($tmp_result, 0, "unread"); - - if ($last_error) { - $error_part = "error=\"$last_error\""; - } else { - $error_part = ""; - } - - if ($has_img) { - $has_img_part = "hi=\"$has_img\""; - } else { - $has_img_part = ""; - } - - if ($active_feed && $id == $active_feed) { - $has_title_part = "title=\"" . htmlspecialchars($line["title"]) . "\""; - } else { - $has_title_part = ""; - } - - if (get_pref($link, 'EXTENDED_FEEDLIST')) { - $xmsg_part = "xmsg=\"(" . getFeedArticles($link, $id) . " total)\""; - } - - print ""; - } - } - - function get_script_dt_add() { -/* if (strpos(VERSION, ".99") === false) { - return VERSION; - } else { - return time(); - } */ - return time(); - } - - function get_pgsql_version($link) { - $result = db_query($link, "SELECT version() AS version"); - $version = split(" ", db_fetch_result($result, 0, "version")); - return $version[1]; - } - - function print_error_xml($code, $add_msg = "") { - global $ERRORS; - - $error_msg = $ERRORS[$code]; - - if ($add_msg) { - $error_msg = "$error_msg; $add_msg"; - } - - print ""; - print ""; - print ""; - } - - function subscribe_to_feed($link, $url, $cat_id = 0, - $auth_login = '', $auth_pass = '') { - - $parts = parse_url($url); - - if (!validate_feed_url($url)) return 2; - - if ($parts['scheme'] == 'feed') $parts['scheme'] = 'http'; - - $url = make_url_from_parts($parts); - - if ($cat_id == "0" || !$cat_id) { - $cat_qpart = "NULL"; - } else { - $cat_qpart = "'$cat_id'"; - } - - $result = db_query($link, - "SELECT id FROM ttrss_feeds - WHERE feed_url = '$url' AND owner_uid = ".$_SESSION["uid"]); - - if (db_num_rows($result) == 0) { - - $result = db_query($link, - "INSERT INTO ttrss_feeds - (owner_uid,feed_url,title,cat_id, auth_login,auth_pass) - VALUES ('".$_SESSION["uid"]."', '$url', - '[Unknown]', $cat_qpart, '$auth_login', '$auth_pass')"); - - $result = db_query($link, - "SELECT id FROM ttrss_feeds WHERE feed_url = '$url' - AND owner_uid = " . $_SESSION["uid"]); - - $feed_id = db_fetch_result($result, 0, "id"); - - if ($feed_id) { - update_rss_feed($link, $feed_id, true); - } - - return 1; - } else { - return 0; - } - } - - function print_feed_select($link, $id, $default_id = "", - $attributes = "", $include_all_feeds = true) { - - print ""; - } - - function print_feed_cat_select($link, $id, $default_id = "", - $attributes = "", $include_all_cats = true) { - - print ""; - } - - function checkbox_to_sql_bool($val) { - return ($val == "on") ? "true" : "false"; - } - - function getFeedCatTitle($link, $id) { - if ($id == -1) { - return __("Special"); - } else if ($id < -10) { - return __("Labels"); - } else if ($id > 0) { - $result = db_query($link, "SELECT ttrss_feed_categories.title - FROM ttrss_feeds, ttrss_feed_categories WHERE ttrss_feeds.id = '$id' AND - cat_id = ttrss_feed_categories.id"); - if (db_num_rows($result) == 1) { - return db_fetch_result($result, 0, "title"); - } else { - return __("Uncategorized"); - } - } else { - return "getFeedCatTitle($id) failed"; - } - - } - - function getFeedIcon($id) { - switch ($id) { - case 0: - return "images/archive.png"; - break; - case -1: - return "images/mark_set.png"; - break; - case -2: - return "images/pub_set.png"; - break; - case -3: - return "images/fresh.png"; - break; - case -4: - return "images/tag.png"; - break; - default: - if ($id < -10) { - return "images/label.png"; - } else { - return ICONS_URL . "/$id.ico"; - } - break; - } - } - - function getFeedTitle($link, $id) { - if ($id == -1) { - return __("Starred articles"); - } else if ($id == -2) { - return __("Published articles"); - } else if ($id == -3) { - return __("Fresh articles"); - } else if ($id == -4) { - return __("All articles"); - } else if ($id === 0 || $id === "0") { - return __("Archived articles"); - } else if ($id < -10) { - $label_id = -$id - 11; - $result = db_query($link, "SELECT caption FROM ttrss_labels2 WHERE id = '$label_id'"); - if (db_num_rows($result) == 1) { - return db_fetch_result($result, 0, "caption"); - } else { - return "Unknown label ($label_id)"; - } - - } else if ($id > 0) { - $result = db_query($link, "SELECT title FROM ttrss_feeds WHERE id = '$id'"); - if (db_num_rows($result) == 1) { - return db_fetch_result($result, 0, "title"); - } else { - return "Unknown feed ($id)"; - } - } else { - return $id; - } - } - - function get_session_cookie_name() { - return ((!defined('TTRSS_SESSION_NAME')) ? "ttrss_sid" : TTRSS_SESSION_NAME); - } - - function print_init_params($link) { - print ""; - if ($_SESSION["stored-params"]) { - foreach (array_keys($_SESSION["stored-params"]) as $key) { - if ($key) { - $value = htmlspecialchars($_SESSION["stored-params"][$key]); - print ""; - } - } - } - - print ""; - print ""; - print ""; - print ""; - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - -// print ""; - - print ""; - - print ""; - - $result = db_query($link, "SELECT COUNT(*) AS cf FROM - ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"]); - - $num_feeds = db_fetch_result($result, 0, "cf"); - - print ""; - - print ""; - - print ""; - } - - function print_runtime_info($link) { - print ""; - - $result = db_query($link, "SELECT COUNT(*) AS cf FROM - ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"]); - - $num_feeds = db_fetch_result($result, 0, "cf"); - - print ""; - - if (ENABLE_UPDATE_DAEMON) { - print ""; - - if (time() - $_SESSION["daemon_stamp_check"] > 30) { - - $stamp = (int)read_stampfile("update_daemon.stamp"); - -// print ""; - - if ($stamp) { - $stamp_delta = time() - $stamp; - - if ($stamp_delta > 1800) { - $stamp_check = 0; - } else { - $stamp_check = 1; - $_SESSION["daemon_stamp_check"] = time(); - } - - print ""; - - $stamp_fmt = date("Y.m.d, G:i", $stamp); - - print ""; - } - } - } - - if (CHECK_FOR_NEW_VERSION && $_SESSION["access_level"] >= 10) { - - if ($_SESSION["last_version_check"] + 86400 + rand(-1000, 1000) < time()) { - $new_version_details = check_for_update($link); - - print ""; - - $_SESSION["last_version_check"] = time(); - } - } - -// print ""; - - print ""; - } - - function getSearchSql($search, $match_on) { - - $search_query_part = ""; - - $keywords = split(" ", $search); - $query_keywords = array(); - - if ($match_on == "both") { - - foreach ($keywords as $k) { - if (strpos($k, "-") === 0) { - $k = substr($k, 1); - $not = "NOT"; - } else { - $not = ""; - } - - array_push($query_keywords, "(UPPER(ttrss_entries.title) $not LIKE UPPER('%$k%') - OR UPPER(ttrss_entries.content) $not LIKE UPPER('%$k%'))"); - } - - $search_query_part = implode("AND", $query_keywords) . " AND "; - - } else if ($match_on == "title") { - - foreach ($keywords as $k) { - if (strpos($k, "-") === 0) { - $k = substr($k, 1); - $not = "NOT"; - } else { - $not = ""; - } - - array_push($query_keywords, "(UPPER(ttrss_entries.title) $not LIKE UPPER('%$k%'))"); - } - - $search_query_part = implode("AND", $query_keywords) . " AND "; - - } else if ($match_on == "content") { - - foreach ($keywords as $k) { - if (strpos($k, "-") === 0) { - $k = substr($k, 1); - $not = "NOT"; - } else { - $not = ""; - } - - array_push($query_keywords, "(UPPER(ttrss_entries.content) $not LIKE UPPER('%$k%'))"); - } - } - - $search_query_part = implode("AND", $query_keywords); - - return $search_query_part; - } - - function queryFeedHeadlines($link, $feed, $limit, $view_mode, $cat_view, $search, $search_mode, $match_on, $override_order = false, $offset = 0, $owner_uid = 0) { - - if (!$owner_uid) $owner_uid = $_SESSION["uid"]; - - if ($search) { - - $search_query_part = getSearchSql($search, $match_on); - $search_query_part .= " AND "; - - } else { - $search_query_part = ""; - } - - $view_query_part = ""; - - if ($view_mode == "adaptive" || $view_query_part == "noscores") { - if ($search) { - $view_query_part = " "; - } else if ($feed != -1) { - $unread = getFeedUnread($link, $feed, $cat_view); - if ($unread > 0) { - $view_query_part = " unread = true AND "; - } - } - } - - if ($view_mode == "marked") { - $view_query_part = " marked = true AND "; - } - - if ($view_mode == "unread") { - $view_query_part = " unread = true AND "; - } - - if ($view_mode == "updated") { - $view_query_part = " (last_read is null and unread = false) AND "; - } - - if ($limit > 0) { - $limit_query_part = "LIMIT " . $limit; - } - - $vfeed_query_part = ""; - - // override query strategy and enable feed display when searching globally - if ($search && $search_mode == "all_feeds") { - $query_strategy_part = "ttrss_entries.id > 0"; - $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; - /* tags */ - } else if (preg_match("/^-?[0-9][0-9]*$/", $feed) == false) { - $query_strategy_part = "ttrss_entries.id > 0"; - $vfeed_query_part = "(SELECT title FROM ttrss_feeds WHERE - id = feed_id) as feed_title,"; - } else if ($feed > 0 && $search && $search_mode == "this_cat") { - - $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; - - $tmp_result = false; - - if ($cat_view) { - $tmp_result = db_query($link, "SELECT id - FROM ttrss_feeds WHERE cat_id = '$feed'"); - } else { - $tmp_result = db_query($link, "SELECT id - FROM ttrss_feeds WHERE cat_id = (SELECT cat_id FROM ttrss_feeds - WHERE id = '$feed') AND id != '$feed'"); - } - - $cat_siblings = array(); - - if (db_num_rows($tmp_result) > 0) { - while ($p = db_fetch_assoc($tmp_result)) { - array_push($cat_siblings, "feed_id = " . $p["id"]); - } - - $query_strategy_part = sprintf("(feed_id = %d OR %s)", - $feed, implode(" OR ", $cat_siblings)); - - } else { - $query_strategy_part = "ttrss_entries.id > 0"; - } - - } else if ($feed > 0) { - - if ($cat_view) { - - if ($feed > 0) { - $query_strategy_part = "cat_id = '$feed'"; - } else { - $query_strategy_part = "cat_id IS NULL"; - } - - $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; - - } else { - $tmp_result = db_query($link, "SELECT id - FROM ttrss_feeds WHERE parent_feed = '$feed' - ORDER BY cat_id,title"); - - $parent_ids = array(); - - if (db_num_rows($tmp_result) > 0) { - while ($p = db_fetch_assoc($tmp_result)) { - array_push($parent_ids, "feed_id = " . $p["id"]); - } - - $query_strategy_part = sprintf("(feed_id = %d OR %s)", - $feed, implode(" OR ", $parent_ids)); - - $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; - } else { - $query_strategy_part = "feed_id = '$feed'"; - } - } - } else if ($feed == 0) { // starred virtual feed - $query_strategy_part = "feed_id IS NULL"; - } else if ($feed == -1) { // starred virtual feed - $query_strategy_part = "marked = true"; - $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; - } else if ($feed == -2) { // published virtual feed OR labels category - - if (!$cat_view) { - $query_strategy_part = "published = true"; - $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; - } else { - $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; - - $ext_tables_part = ",ttrss_labels2,ttrss_user_labels2"; - - $query_strategy_part = "ttrss_labels2.id = ttrss_user_labels2.label_id AND - ttrss_user_labels2.article_id = ref_id"; - - } - - } else if ($feed == -3) { // fresh virtual feed - $query_strategy_part = "unread = true"; - - $intl = get_pref($link, "FRESH_ARTICLE_MAX_AGE", $owner_uid); - - if (DB_TYPE == "pgsql") { - $query_strategy_part .= " AND updated > NOW() - INTERVAL '$intl hour' "; - } else { - $query_strategy_part .= " AND updated > DATE_SUB(NOW(), INTERVAL $intl HOUR) "; - } - - $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; - } else if ($feed == -4) { // all articles virtual feed - $query_strategy_part = "true"; - $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; - } else if ($feed <= -10) { // labels - $label_id = -$feed - 11; - - $query_strategy_part = "label_id = '$label_id' AND - ttrss_labels2.id = ttrss_user_labels2.label_id AND - ttrss_user_labels2.article_id = ref_id"; - - $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; - $ext_tables_part = ",ttrss_labels2,ttrss_user_labels2"; - - } else { - $query_strategy_part = "id > 0"; // dumb - } - - if (get_pref($link, 'REVERSE_HEADLINES', $owner_uid)) { - $order_by = "updated"; - } else { - $order_by = "updated DESC"; - } - - if ($view_mode != "noscores") { - $order_by = "score DESC, $order_by"; - } - - if ($override_order) { - $order_by = $override_order; - } - - $feed_title = ""; - - if ($search) { - $feed_title = "Search results"; - } else { - if ($cat_view) { - $feed_title = getCategoryTitle($link, $feed); - } else { - if ((int)$feed == $feed && $feed > 0) { - $result = db_query($link, "SELECT title,site_url,last_error - FROM ttrss_feeds WHERE id = '$feed' AND owner_uid = $owner_uid"); - - $feed_title = db_fetch_result($result, 0, "title"); - $feed_site_url = db_fetch_result($result, 0, "site_url"); - $last_error = db_fetch_result($result, 0, "last_error"); - } else { - $feed_title = getFeedTitle($link, $feed); - } - } - } - - $content_query_part = "content as content_preview,"; - - if (preg_match("/^-?[0-9][0-9]*$/", $feed) != false) { - - if ($feed >= 0) { - $feed_kind = "Feeds"; - } else { - $feed_kind = "Labels"; - } - - if ($limit_query_part) { - $offset_query_part = "OFFSET $offset"; - } - - if ($vfeed_query_part && get_pref($link, 'VFEED_GROUP_BY_FEED', $owner_uid)) { - if (!$override_order) { - $order_by = "ttrss_feeds.title, $order_by"; - } - } - - if ($feed != "0") { - $from_qpart = "ttrss_entries,ttrss_user_entries,ttrss_feeds$ext_tables_part"; - $feed_check_qpart = "ttrss_user_entries.feed_id = ttrss_feeds.id AND"; - - } else { - $from_qpart = "ttrss_entries,ttrss_user_entries$ext_tables_part - LEFT JOIN ttrss_feeds ON (feed_id = ttrss_feeds.id)"; - } - - $query = "SELECT DISTINCT - guid, - ttrss_entries.id,ttrss_entries.title, - updated, - note, - unread,feed_id,marked,published,link,last_read,orig_feed_id, - ".SUBSTRING_FOR_DATE."(last_read,1,19) as last_read_noms, - $vfeed_query_part - $content_query_part - ".SUBSTRING_FOR_DATE."(updated,1,19) as updated_noms, - author,score - FROM - $from_qpart - WHERE - $group_limit_part - $feed_check_qpart - ttrss_user_entries.ref_id = ttrss_entries.id AND - ttrss_user_entries.owner_uid = '$owner_uid' AND - $search_query_part - $view_query_part - $query_strategy_part ORDER BY $order_by - $limit_query_part $offset_query_part"; - - if ($_REQUEST["debug"]) print $query; - - $result = db_query($link, $query); - - } else { - // browsing by tag - - $feed_kind = "Tags"; - - $result = db_query($link, "SELECT - guid, - note, - ttrss_entries.id as id,title, - updated, - unread,feed_id,orig_feed_id, - marked,link,last_read, - ".SUBSTRING_FOR_DATE."(last_read,1,19) as last_read_noms, - $vfeed_query_part - $content_query_part - ".SUBSTRING_FOR_DATE."(updated,1,19) as updated_noms, - score - FROM - ttrss_entries,ttrss_user_entries,ttrss_tags - WHERE - ref_id = ttrss_entries.id AND - ttrss_user_entries.owner_uid = '$owner_uid' AND - post_int_id = int_id AND tag_name = '$feed' AND - $view_query_part - $search_query_part - $query_strategy_part ORDER BY $order_by - $limit_query_part"); - } - - return array($result, $feed_title, $feed_site_url, $last_error); - - } - - function generate_syndicated_feed($link, $owner_uid, $feed, $is_cat, - $limit, $search, $search_mode, $match_on) { - - $note_style = "float : right; background-color : #fff7d5; border-width : 1px; ". - "padding : 5px; border-style : dashed; border-color : #e7d796;". - "margin-bottom : 1em; color : #9a8c59;"; - - if (!$limit) $limit = 30; - - $qfh_ret = queryFeedHeadlines($link, $feed, - $limit, false, $is_cat, $search, $search_mode, $match_on, "updated DESC", 0, - $owner_uid); - - $result = $qfh_ret[0]; - $feed_title = htmlspecialchars($qfh_ret[1]); - $feed_site_url = $qfh_ret[2]; - $last_error = $qfh_ret[3]; - -// if (!$feed_site_url) $feed_site_url = "http://localhost/"; - - print " - - - - $feed_title - $feed_site_url - Feed generated by Tiny Tiny RSS"; - - while ($line = db_fetch_assoc($result)) { - print ""; - print "" . htmlspecialchars($line["guid"]) . ""; - print "" . htmlspecialchars($line["link"]) . ""; - - $tags = get_article_tags($link, $line["id"], $owner_uid); - - foreach ($tags as $tag) { - print "" . htmlspecialchars($tag) . ""; - } - - $rfc822_date = date('r', strtotime($line["updated"])); - - print "$rfc822_date"; - - print "" . - htmlspecialchars($line["title"]) . ""; - - print ""; - print $line["note"]; - print ""; - } - - print sanitize_rss($link, $line["content_preview"], false, $owner_uid); - print "]]>"; - - print ""; - } - - print ""; - - } - - function getCategoryTitle($link, $cat_id) { - - if ($cat_id == -1) { - return __("Special"); - } else if ($cat_id == -2) { - return __("Labels"); - } else { - - $result = db_query($link, "SELECT title FROM ttrss_feed_categories WHERE - id = '$cat_id'"); - - if (db_num_rows($result) == 1) { - return db_fetch_result($result, 0, "title"); - } else { - return "Uncategorized"; - } - } - } - - function strip_tags_long($string, $allowed) { - - $config = HTMLPurifier_Config::createDefault(); - - $config->set('HTML', 'Allowed', $allowed); - $purifier = new HTMLPurifier($config); - - return $purifier->purify($string); - - } - - // http://ru2.php.net/strip-tags - -/* function strip_tags_long($textstring, $allowed){ - while($textstring != strip_tags($textstring, $allowed)) - { - while (strlen($textstring) != 0) - { - if (strlen($textstring) > 1024) { - $otherlen = 1024; - } else { - $otherlen = strlen($textstring); - } - $temptext = strip_tags(substr($textstring,0,$otherlen), $allowed); - $safetext .= $temptext; - $textstring = substr_replace($textstring,'',0,$otherlen); - } - $textstring = $safetext; - } - return $textstring; -} */ - - - function sanitize_rss($link, $str, $force_strip_tags = false, $owner = false) { - $res = $str; - - if (!$owner) $owner = $_SESSION["uid"]; - - if (get_pref($link, "STRIP_UNSAFE_TAGS", $owner) || $force_strip_tags) { - -// $res = strip_tags_long($res, -// "


    Note: not all actions may be available, depending on Tiny Tiny RSS configuration and your access level.") ?>

    - -

    diff --git a/image.php b/image.php deleted file mode 100644 index 45e1358aac..0000000000 --- a/image.php +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/images/alert.png b/images/alert.png new file mode 100644 index 0000000000..c37bd062e6 Binary files /dev/null and b/images/alert.png differ diff --git a/images/archive.png b/images/archive.png old mode 100755 new mode 100644 index 6edd2da334..8443c23eb9 Binary files a/images/archive.png and b/images/archive.png differ diff --git a/images/art-pub-note.png b/images/art-pub-note.png deleted file mode 100755 index e048326762..0000000000 Binary files a/images/art-pub-note.png and /dev/null differ diff --git a/images/art-set-unread.png b/images/art-set-unread.png deleted file mode 100755 index 611dd95485..0000000000 Binary files a/images/art-set-unread.png and /dev/null differ diff --git a/images/art-zoom.png b/images/art-zoom.png deleted file mode 100755 index 6311b3130e..0000000000 Binary files a/images/art-zoom.png and /dev/null differ diff --git a/images/button.png b/images/button.png deleted file mode 100644 index db2278279c..0000000000 Binary files a/images/button.png and /dev/null differ diff --git a/images/button_pressed.png b/images/button_pressed.png deleted file mode 100644 index be0fb4a779..0000000000 Binary files a/images/button_pressed.png and /dev/null differ diff --git a/images/c1.png b/images/c1.png deleted file mode 100644 index fbe27bde04..0000000000 Binary files a/images/c1.png and /dev/null differ diff --git a/images/c2.png b/images/c2.png deleted file mode 100644 index 6bf3db1ed1..0000000000 Binary files a/images/c2.png and /dev/null differ diff --git a/images/c3.png b/images/c3.png deleted file mode 100644 index 4a052d9468..0000000000 Binary files a/images/c3.png and /dev/null differ diff --git a/images/c4.png b/images/c4.png deleted file mode 100644 index 1d9c619ba7..0000000000 Binary files a/images/c4.png and /dev/null differ diff --git a/images/cat-collapse.png b/images/cat-collapse.png deleted file mode 100644 index dc6edaf3b4..0000000000 Binary files a/images/cat-collapse.png and /dev/null differ diff --git a/images/collapse.png b/images/collapse.png new file mode 100644 index 0000000000..79b3446452 Binary files /dev/null and b/images/collapse.png differ diff --git a/images/cross.png b/images/cross.png new file mode 100644 index 0000000000..1514d51a3c Binary files /dev/null and b/images/cross.png differ diff --git a/images/down_arrow.png b/images/down_arrow.png deleted file mode 100644 index ded833282f..0000000000 Binary files a/images/down_arrow.png and /dev/null differ diff --git a/images/error.png b/images/error.png new file mode 100644 index 0000000000..628cf2dae3 Binary files /dev/null and b/images/error.png differ diff --git a/images/favicon-72px.png b/images/favicon-72px.png new file mode 100644 index 0000000000..421e109969 Binary files /dev/null and b/images/favicon-72px.png differ diff --git a/images/favicon.png b/images/favicon.png index 2a24fcba64..97437d2246 100644 Binary files a/images/favicon.png and b/images/favicon.png differ diff --git a/images/feed-icon-12x12.png b/images/feed-icon-12x12.png deleted file mode 100644 index 291000eab2..0000000000 Binary files a/images/feed-icon-12x12.png and /dev/null differ diff --git a/images/feed-icon-64x64.png b/images/feed-icon-64x64.png deleted file mode 100644 index 240e45e3cb..0000000000 Binary files a/images/feed-icon-64x64.png and /dev/null differ diff --git a/images/feed.png b/images/feed.png new file mode 100644 index 0000000000..315c4f4fa6 Binary files /dev/null and b/images/feed.png differ diff --git a/images/filter.png b/images/filter.png new file mode 100644 index 0000000000..9757fc6ed6 Binary files /dev/null and b/images/filter.png differ diff --git a/images/folder.png b/images/folder.png new file mode 100644 index 0000000000..784e8fa482 Binary files /dev/null and b/images/folder.png differ diff --git a/images/footer.png b/images/footer.png deleted file mode 100644 index 1fde4ff4d3..0000000000 Binary files a/images/footer.png and /dev/null differ diff --git a/images/fresh.png b/images/fresh.png old mode 100755 new mode 100644 index b6040aa9cd..b7bfcd15fb Binary files a/images/fresh.png and b/images/fresh.png differ diff --git a/images/fresh_sign.png b/images/fresh_sign.png deleted file mode 100755 index 6ec38eeb6c..0000000000 Binary files a/images/fresh_sign.png and /dev/null differ diff --git a/images/information.png b/images/information.png new file mode 100644 index 0000000000..12cd1aef90 Binary files /dev/null and b/images/information.png differ diff --git a/images/label.png b/images/label.png index e27d0c537d..83d12924ff 100644 Binary files a/images/label.png and b/images/label.png differ diff --git a/images/logo_small.png b/images/logo_small.png new file mode 100644 index 0000000000..f7f28a687d Binary files /dev/null and b/images/logo_small.png differ diff --git a/images/logo_wide.png b/images/logo_wide.png new file mode 100644 index 0000000000..46e469c201 Binary files /dev/null and b/images/logo_wide.png differ diff --git a/images/mark_set.gif b/images/mark_set.gif deleted file mode 100644 index aae4809e30..0000000000 Binary files a/images/mark_set.gif and /dev/null differ diff --git a/images/mark_set.png b/images/mark_set.png index b35655c85e..b88c857895 100644 Binary files a/images/mark_set.png and b/images/mark_set.png differ diff --git a/images/mark_set.svg b/images/mark_set.svg deleted file mode 100644 index 1942d14c2b..0000000000 --- a/images/mark_set.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - image/svg+xml - - - - - - - - diff --git a/images/mark_unset.gif b/images/mark_unset.gif deleted file mode 100644 index bfa07c9011..0000000000 Binary files a/images/mark_unset.gif and /dev/null differ diff --git a/images/mark_unset.png b/images/mark_unset.png index bf9059a321..15894b6ca0 100644 Binary files a/images/mark_unset.png and b/images/mark_unset.png differ diff --git a/images/mark_unset.svg b/images/mark_unset.svg deleted file mode 100644 index 15e582d3bb..0000000000 --- a/images/mark_unset.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - image/svg+xml - - - - - - - - diff --git a/images/new_version.png b/images/new_version.png index 3956089b51..1ebb193243 100644 Binary files a/images/new_version.png and b/images/new_version.png differ diff --git a/images/offline-sync.gif b/images/offline-sync.gif deleted file mode 100755 index 71932f968b..0000000000 Binary files a/images/offline-sync.gif and /dev/null differ diff --git a/images/offline.png b/images/offline.png deleted file mode 100755 index 5cd9b3112f..0000000000 Binary files a/images/offline.png and /dev/null differ diff --git a/images/online.png b/images/online.png deleted file mode 100755 index 749a416d27..0000000000 Binary files a/images/online.png and /dev/null differ diff --git a/images/overlay.png b/images/overlay.png deleted file mode 100644 index e3a0a77028..0000000000 Binary files a/images/overlay.png and /dev/null differ diff --git a/images/page_white_go.png b/images/page_white_go.png new file mode 100644 index 0000000000..7e62a924bc Binary files /dev/null and b/images/page_white_go.png differ diff --git a/images/piggie.png b/images/piggie.png deleted file mode 100644 index f3682dbfd7..0000000000 Binary files a/images/piggie.png and /dev/null differ diff --git a/images/piggie_icon.png b/images/piggie_icon.png deleted file mode 100644 index 38733c501c..0000000000 Binary files a/images/piggie_icon.png and /dev/null differ diff --git a/images/plugin.png b/images/plugin.png new file mode 100644 index 0000000000..6187b15aec Binary files /dev/null and b/images/plugin.png differ diff --git a/images/plugin_disabled.png b/images/plugin_disabled.png new file mode 100644 index 0000000000..f4f6be59cb Binary files /dev/null and b/images/plugin_disabled.png differ diff --git a/images/prefs-content.png b/images/prefs-content.png deleted file mode 100644 index c975a459f2..0000000000 Binary files a/images/prefs-content.png and /dev/null differ diff --git a/images/pub_set.gif b/images/pub_set.gif deleted file mode 100644 index e57bc9463d..0000000000 Binary files a/images/pub_set.gif and /dev/null differ diff --git a/images/pub_set.png b/images/pub_set.png index 1aff094fd3..315c4f4fa6 100644 Binary files a/images/pub_set.png and b/images/pub_set.png differ diff --git a/images/pub_unset.gif b/images/pub_unset.gif deleted file mode 100644 index e470e8e0ef..0000000000 Binary files a/images/pub_unset.gif and /dev/null differ diff --git a/images/pub_unset.png b/images/pub_unset.png index 14609dff7a..56d0b78486 100644 Binary files a/images/pub_unset.png and b/images/pub_unset.png differ diff --git a/images/resize_handle_horiz.png b/images/resize_handle_horiz.png deleted file mode 100644 index b0ef93f1bd..0000000000 Binary files a/images/resize_handle_horiz.png and /dev/null differ diff --git a/images/resize_horiz.png b/images/resize_horiz.png deleted file mode 100644 index ce947c9b2d..0000000000 Binary files a/images/resize_horiz.png and /dev/null differ diff --git a/images/resizer.png b/images/resizer.png deleted file mode 100644 index ca3b02f816..0000000000 Binary files a/images/resizer.png and /dev/null differ diff --git a/images/score_half_high.png b/images/score_half_high.png index 0bac7b8641..b7c82dfe6b 100644 Binary files a/images/score_half_high.png and b/images/score_half_high.png differ diff --git a/images/score_half_low.png b/images/score_half_low.png index c88198d449..5d4b436797 100644 Binary files a/images/score_half_low.png and b/images/score_half_low.png differ diff --git a/images/score_high.png b/images/score_high.png index fa19791c0d..058ad261f5 100644 Binary files a/images/score_high.png and b/images/score_high.png differ diff --git a/images/score_low.png b/images/score_low.png index 147b98c917..57619706d1 100644 Binary files a/images/score_low.png and b/images/score_low.png differ diff --git a/images/score_neutral.png b/images/score_neutral.png index 40e2127363..a9af8d44bf 100644 Binary files a/images/score_neutral.png and b/images/score_neutral.png differ diff --git a/images/shadow-grid.gif b/images/shadow-grid.gif deleted file mode 100644 index ff58a611c4..0000000000 Binary files a/images/shadow-grid.gif and /dev/null differ diff --git a/images/shadow.png b/images/shadow.png deleted file mode 100644 index 64e7dc67a8..0000000000 Binary files a/images/shadow.png and /dev/null differ diff --git a/images/shadow_dark.png b/images/shadow_dark.png deleted file mode 100644 index 3a26b2a5c4..0000000000 Binary files a/images/shadow_dark.png and /dev/null differ diff --git a/images/shadow_white.png b/images/shadow_white.png deleted file mode 100644 index 4c39ef97e4..0000000000 Binary files a/images/shadow_white.png and /dev/null differ diff --git a/images/sign_excl.png b/images/sign_excl.png deleted file mode 100644 index 383f53dd23..0000000000 Binary files a/images/sign_excl.png and /dev/null differ diff --git a/images/sign_info.png b/images/sign_info.png deleted file mode 100644 index 0d7e7abdea..0000000000 Binary files a/images/sign_info.png and /dev/null differ diff --git a/images/sign_quest.png b/images/sign_quest.png deleted file mode 100644 index a19f84f3be..0000000000 Binary files a/images/sign_quest.png and /dev/null differ diff --git a/images/small_question.png b/images/small_question.png deleted file mode 100644 index 8fa08d9c9e..0000000000 Binary files a/images/small_question.png and /dev/null differ diff --git a/images/star.png b/images/star.png new file mode 100644 index 0000000000..b88c857895 Binary files /dev/null and b/images/star.png differ diff --git a/images/tag.png b/images/tag.png index 5415949ee9..80547e9279 100644 Binary files a/images/tag.png and b/images/tag.png differ diff --git a/images/tick.png b/images/tick.png new file mode 100644 index 0000000000..a9925a06ab Binary files /dev/null and b/images/tick.png differ diff --git a/images/time.png b/images/time.png new file mode 100644 index 0000000000..911da3f1d3 Binary files /dev/null and b/images/time.png differ diff --git a/images/toolbar.png b/images/toolbar.png index 8b5f960113..57f8a58d7c 100644 Binary files a/images/toolbar.png and b/images/toolbar.png differ diff --git a/images/treeExpandImages.png b/images/treeExpandImages.png new file mode 100644 index 0000000000..c92171ba5b Binary files /dev/null and b/images/treeExpandImages.png differ diff --git a/images/ttrss_logo.png b/images/ttrss_logo.png deleted file mode 100644 index 243e8948b9..0000000000 Binary files a/images/ttrss_logo.png and /dev/null differ diff --git a/images/ttrss_logo.svg b/images/ttrss_logo.svg deleted file mode 100644 index c5174ec184..0000000000 --- a/images/ttrss_logo.svg +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - tiny tiny - rss - - diff --git a/images/ttrss_logo_big.png b/images/ttrss_logo_big.png deleted file mode 100644 index b2c59d176b..0000000000 Binary files a/images/ttrss_logo_big.png and /dev/null differ diff --git a/images/ttrss_logo_blackred.svg b/images/ttrss_logo_blackred.svg deleted file mode 100644 index 6205a40f46..0000000000 --- a/images/ttrss_logo_blackred.svg +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - tiny tiny - rss - - diff --git a/images/untick.png b/images/untick.png new file mode 100644 index 0000000000..be3afe401c Binary files /dev/null and b/images/untick.png differ diff --git a/images/updated.png b/images/updated.png deleted file mode 100644 index f5abd6b0cf..0000000000 Binary files a/images/updated.png and /dev/null differ diff --git a/images/user.png b/images/user.png new file mode 100644 index 0000000000..79f35ccbda Binary files /dev/null and b/images/user.png differ diff --git a/images/www.png b/images/www.png deleted file mode 100644 index baa06c023b..0000000000 Binary files a/images/www.png and /dev/null differ diff --git a/include/autoload.php b/include/autoload.php new file mode 100644 index 0000000000..505b444772 --- /dev/null +++ b/include/autoload.php @@ -0,0 +1,14 @@ + diff --git a/include/ccache.php b/include/ccache.php new file mode 100644 index 0000000000..b938b86643 --- /dev/null +++ b/include/ccache.php @@ -0,0 +1,225 @@ + 0 AND owner_uid = '$owner_uid'"); + + while ($line = db_fetch_assoc($result)) { + ccache_update($line["feed_id"], $owner_uid, true); + } + + /* We have to manually include category 0 */ + + ccache_update(0, $owner_uid, true); + + } else { + $result = db_query("SELECT feed_id FROM ttrss_counters_cache + WHERE feed_id > 0 AND owner_uid = '$owner_uid'"); + + while ($line = db_fetch_assoc($result)) { + print ccache_update($line["feed_id"], $owner_uid); + + } + + } + } + + function ccache_find($feed_id, $owner_uid, $is_cat = false, + $no_update = false) { + + if (!is_numeric($feed_id)) return; + + if (!$is_cat) { + $table = "ttrss_counters_cache"; + /* if ($feed_id > 0) { + $tmp_result = db_query("SELECT owner_uid FROM ttrss_feeds + WHERE id = '$feed_id'"); + $owner_uid = db_fetch_result($tmp_result, 0, "owner_uid"); + } */ + } else { + $table = "ttrss_cat_counters_cache"; + } + + if (DB_TYPE == "pgsql") { + $date_qpart = "updated > NOW() - INTERVAL '15 minutes'"; + } else if (DB_TYPE == "mysql") { + $date_qpart = "updated > DATE_SUB(NOW(), INTERVAL 15 MINUTE)"; + } + + $result = db_query("SELECT value FROM $table + WHERE owner_uid = '$owner_uid' AND feed_id = '$feed_id' + LIMIT 1"); + + if (db_num_rows($result) == 1) { + return db_fetch_result($result, 0, "value"); + } else { + if ($no_update) { + return -1; + } else { + return ccache_update($feed_id, $owner_uid, $is_cat); + } + } + + } + + function ccache_update($feed_id, $owner_uid, $is_cat = false, + $update_pcat = true, $pcat_fast = false) { + + if (!is_numeric($feed_id)) return; + + /* if (!$is_cat && $feed_id > 0) { + $tmp_result = db_query("SELECT owner_uid FROM ttrss_feeds + WHERE id = '$feed_id'"); + $owner_uid = db_fetch_result($tmp_result, 0, "owner_uid"); + } */ + + $prev_unread = ccache_find($feed_id, $owner_uid, $is_cat, true); + + /* When updating a label, all we need to do is recalculate feed counters + * because labels are not cached */ + + if ($feed_id < 0) { + ccache_update_all($owner_uid); + return; + } + + if (!$is_cat) { + $table = "ttrss_counters_cache"; + } else { + $table = "ttrss_cat_counters_cache"; + } + + if ($is_cat && $feed_id >= 0) { + if ($feed_id != 0) { + $cat_qpart = "cat_id = '$feed_id'"; + } else { + $cat_qpart = "cat_id IS NULL"; + } + + /* Recalculate counters for child feeds */ + + if (!$pcat_fast) { + $result = db_query("SELECT id FROM ttrss_feeds + WHERE owner_uid = '$owner_uid' AND $cat_qpart"); + + while ($line = db_fetch_assoc($result)) { + ccache_update($line["id"], $owner_uid, false, false); + } + } + + $result = db_query("SELECT SUM(value) AS sv + FROM ttrss_counters_cache, ttrss_feeds + WHERE id = feed_id AND $cat_qpart AND + ttrss_counters_cache.owner_uid = $owner_uid AND + ttrss_feeds.owner_uid = '$owner_uid'"); + + $unread = (int) db_fetch_result($result, 0, "sv"); + + } else { + $unread = (int) getFeedArticles($feed_id, $is_cat, true, $owner_uid); + } + + db_query("BEGIN"); + + $result = db_query("SELECT feed_id FROM $table + WHERE owner_uid = '$owner_uid' AND feed_id = '$feed_id' LIMIT 1"); + + if (db_num_rows($result) == 1) { + db_query("UPDATE $table SET + value = '$unread', updated = NOW() WHERE + feed_id = '$feed_id' AND owner_uid = '$owner_uid'"); + + } else { + db_query("INSERT INTO $table + (feed_id, value, owner_uid, updated) + VALUES + ($feed_id, $unread, $owner_uid, NOW())"); + } + + db_query("COMMIT"); + + if ($feed_id > 0 && $prev_unread != $unread) { + + if (!$is_cat) { + + /* Update parent category */ + + if ($update_pcat) { + + $result = db_query("SELECT cat_id FROM ttrss_feeds + WHERE owner_uid = '$owner_uid' AND id = '$feed_id'"); + + $cat_id = (int) db_fetch_result($result, 0, "cat_id"); + + ccache_update($cat_id, $owner_uid, true, true, true); + + } + } + } else if ($feed_id < 0) { + ccache_update_all($owner_uid); + } + + return $unread; + } + + /* function ccache_cleanup($owner_uid) { + + if (DB_TYPE == "pgsql") { + db_query("DELETE FROM ttrss_counters_cache AS c1 WHERE + (SELECT count(*) FROM ttrss_counters_cache AS c2 + WHERE c1.feed_id = c2.feed_id AND c2.owner_uid = c1.owner_uid) > 1 + AND owner_uid = '$owner_uid'"); + + db_query("DELETE FROM ttrss_cat_counters_cache AS c1 WHERE + (SELECT count(*) FROM ttrss_cat_counters_cache AS c2 + WHERE c1.feed_id = c2.feed_id AND c2.owner_uid = c1.owner_uid) > 1 + AND owner_uid = '$owner_uid'"); + } else { + db_query("DELETE c1 FROM + ttrss_counters_cache AS c1, + ttrss_counters_cache AS c2 + WHERE + c1.owner_uid = '$owner_uid' AND + c1.owner_uid = c2.owner_uid AND + c1.feed_id = c2.feed_id"); + + db_query("DELETE c1 FROM + ttrss_cat_counters_cache AS c1, + ttrss_cat_counters_cache AS c2 + WHERE + c1.owner_uid = '$owner_uid' AND + c1.owner_uid = c2.owner_uid AND + c1.feed_id = c2.feed_id"); + + } + } */ +?> diff --git a/include/colors.php b/include/colors.php new file mode 100644 index 0000000000..491d38c155 --- /dev/null +++ b/include/colors.php @@ -0,0 +1,351 @@ + "#f0f8ff", + "antiquewhite" => "#faebd7", + "aqua" => "#00ffff", + "aquamarine" => "#7fffd4", + "azure" => "#f0ffff", + "beige" => "#f5f5dc", + "bisque" => "#ffe4c4", + "black" => "#000000", + "blanchedalmond" => "#ffebcd", + "blue" => "#0000ff", + "blueviolet" => "#8a2be2", + "brown" => "#a52a2a", + "burlywood" => "#deb887", + "cadetblue" => "#5f9ea0", + "chartreuse" => "#7fff00", + "chocolate" => "#d2691e", + "coral" => "#ff7f50", + "cornflowerblue" => "#6495ed", + "cornsilk" => "#fff8dc", + "crimson" => "#dc143c", + "cyan" => "#00ffff", + "darkblue" => "#00008b", + "darkcyan" => "#008b8b", + "darkgoldenrod" => "#b8860b", + "darkgray" => "#a9a9a9", + "darkgrey" => "#a9a9a9", + "darkgreen" => "#006400", + "darkkhaki" => "#bdb76b", + "darkmagenta" => "#8b008b", + "darkolivegreen" => "#556b2f", + "darkorange" => "#ff8c00", + "darkorchid" => "#9932cc", + "darkred" => "#8b0000", + "darksalmon" => "#e9967a", + "darkseagreen" => "#8fbc8f", + "darkslateblue" => "#483d8b", + "darkslategray" => "#2f4f4f", + "darkslategrey" => "#2f4f4f", + "darkturquoise" => "#00ced1", + "darkviolet" => "#9400d3", + "deeppink" => "#ff1493", + "deepskyblue" => "#00bfff", + "dimgray" => "#696969", + "dimgrey" => "#696969", + "dodgerblue" => "#1e90ff", + "firebrick" => "#b22222", + "floralwhite" => "#fffaf0", + "forestgreen" => "#228b22", + "fuchsia" => "#ff00ff", + "gainsboro" => "#dcdcdc", + "ghostwhite" => "#f8f8ff", + "gold" => "#ffd700", + "goldenrod" => "#daa520", + "gray" => "#808080", + "grey" => "#808080", + "green" => "#008000", + "greenyellow" => "#adff2f", + "honeydew" => "#f0fff0", + "hotpink" => "#ff69b4", + "indianred " => "#cd5c5c", + "indigo " => "#4b0082", + "ivory" => "#fffff0", + "khaki" => "#f0e68c", + "lavender" => "#e6e6fa", + "lavenderblush" => "#fff0f5", + "lawngreen" => "#7cfc00", + "lemonchiffon" => "#fffacd", + "lightblue" => "#add8e6", + "lightcoral" => "#f08080", + "lightcyan" => "#e0ffff", + "lightgoldenrodyellow" => "#fafad2", + "lightgray" => "#d3d3d3", + "lightgrey" => "#d3d3d3", + "lightgreen" => "#90ee90", + "lightpink" => "#ffb6c1", + "lightsalmon" => "#ffa07a", + "lightseagreen" => "#20b2aa", + "lightskyblue" => "#87cefa", + "lightslategray" => "#778899", + "lightslategrey" => "#778899", + "lightsteelblue" => "#b0c4de", + "lightyellow" => "#ffffe0", + "lime" => "#00ff00", + "limegreen" => "#32cd32", + "linen" => "#faf0e6", + "magenta" => "#ff00ff", + "maroon" => "#800000", + "mediumaquamarine" => "#66cdaa", + "mediumblue" => "#0000cd", + "mediumorchid" => "#ba55d3", + "mediumpurple" => "#9370db", + "mediumseagreen" => "#3cb371", + "mediumslateblue" => "#7b68ee", + "mediumspringgreen" => "#00fa9a", + "mediumturquoise" => "#48d1cc", + "mediumvioletred" => "#c71585", + "midnightblue" => "#191970", + "mintcream" => "#f5fffa", + "mistyrose" => "#ffe4e1", + "moccasin" => "#ffe4b5", + "navajowhite" => "#ffdead", + "navy" => "#000080", + "oldlace" => "#fdf5e6", + "olive" => "#808000", + "olivedrab" => "#6b8e23", + "orange" => "#ffa500", + "orangered" => "#ff4500", + "orchid" => "#da70d6", + "palegoldenrod" => "#eee8aa", + "palegreen" => "#98fb98", + "paleturquoise" => "#afeeee", + "palevioletred" => "#db7093", + "papayawhip" => "#ffefd5", + "peachpuff" => "#ffdab9", + "peru" => "#cd853f", + "pink" => "#ffc0cb", + "plum" => "#dda0dd", + "powderblue" => "#b0e0e6", + "purple" => "#800080", + "red" => "#ff0000", + "rosybrown" => "#bc8f8f", + "royalblue" => "#4169e1", + "saddlebrown" => "#8b4513", + "salmon" => "#fa8072", + "sandybrown" => "#f4a460", + "seagreen" => "#2e8b57", + "seashell" => "#fff5ee", + "sienna" => "#a0522d", + "silver" => "#c0c0c0", + "skyblue" => "#87ceeb", + "slateblue" => "#6a5acd", + "slategray" => "#708090", + "slategrey" => "#708090", + "snow" => "#fffafa", + "springgreen" => "#00ff7f", + "steelblue" => "#4682b4", + "tan" => "#d2b48c", + "teal" => "#008080", + "thistle" => "#d8bfd8", + "tomato" => "#ff6347", + "turquoise" => "#40e0d0", + "violet" => "#ee82ee", + "wheat" => "#f5deb3", + "white" => "#ffffff", + "whitesmoke" => "#f5f5f5", + "yellow" => "#ffff00", + "yellowgreen" => "#9acd32"); + + $color = strtolower($color); + + if (isset($htmlcolors[$color])) + return $htmlcolors[$color]; + else + return $color; +} + +### RGB >> HSL +function _color_rgb2hsl($rgb) { + $r = $rgb[0]; $g = $rgb[1]; $b = $rgb[2]; + $min = min($r, min($g, $b)); $max = max($r, max($g, $b)); + $delta = $max - $min; $l = ($min + $max) / 2; $s = 0; + if ($l > 0 && $l < 1) { + $s = $delta / ($l < 0.5 ? (2 * $l) : (2 - 2 * $l)); + } + $h = 0; + if ($delta > 0) { + if ($max == $r && $max != $g) $h += ($g - $b) / $delta; + if ($max == $g && $max != $b) $h += (2 + ($b - $r) / $delta); + if ($max == $b && $max != $r) $h += (4 + ($r - $g) / $delta); + $h /= 6; + } return array($h, $s, $l); +} + +### HSL >> RGB +function _color_hsl2rgb($hsl) { + $h = $hsl[0]; $s = $hsl[1]; $l = $hsl[2]; + $m2 = ($l <= 0.5) ? $l * ($s + 1) : $l + $s - $l*$s; + $m1 = $l * 2 - $m2; + return array(_color_hue2rgb($m1, $m2, $h + 0.33333), + _color_hue2rgb($m1, $m2, $h), + _color_hue2rgb($m1, $m2, $h - 0.33333)); +} + +### Helper function for _color_hsl2rgb(). +function _color_hue2rgb($m1, $m2, $h) { + $h = ($h < 0) ? $h + 1 : (($h > 1) ? $h - 1 : $h); + if ($h * 6 < 1) return $m1 + ($m2 - $m1) * $h * 6; + if ($h * 2 < 1) return $m2; + if ($h * 3 < 2) return $m1 + ($m2 - $m1) * (0.66666 - $h) * 6; + return $m1; +} + +### Convert a hex color into an RGB triplet. +function _color_unpack($hex, $normalize = false) { + + if (strpos($hex, '#') !== 0) + $hex = _resolve_htmlcolor($hex); + + if (strlen($hex) == 4) { + $hex = $hex[1] . $hex[1] . $hex[2] . $hex[2] . $hex[3] . $hex[3]; + } $c = hexdec($hex); + for ($i = 16; $i >= 0; $i -= 8) { + $out[] = (($c >> $i) & 0xFF) / ($normalize ? 255 : 1); + } return $out; +} + +### Convert an RGB triplet to a hex color. +function _color_pack($rgb, $normalize = false) { + foreach ($rgb as $k => $v) { + $out |= (($v * ($normalize ? 255 : 1)) << (16 - $k * 8)); + }return '#'. str_pad(dechex($out), 6, 0, STR_PAD_LEFT); +} + +function rgb2hsl($arr) { + $r = $arr[0]; + $g = $arr[1]; + $b = $arr[2]; + + $var_R = ($r / 255); + $var_G = ($g / 255); + $var_B = ($b / 255); + + $var_Min = min($var_R, $var_G, $var_B); + $var_Max = max($var_R, $var_G, $var_B); + $del_Max = $var_Max - $var_Min; + + $v = $var_Max; + + if ($del_Max == 0) { + $h = 0; + $s = 0; + } else { + $s = $del_Max / $var_Max; + + $del_R = ((($var_Max - $var_R ) / 6 ) + ($del_Max / 2 ) ) / $del_Max; + $del_G = ((($var_Max - $var_G ) / 6 ) + ($del_Max / 2 ) ) / $del_Max; + $del_B = ((($var_Max - $var_B ) / 6 ) + ($del_Max / 2 ) ) / $del_Max; + + if ($var_R == $var_Max) $h = $del_B - $del_G; + else if ($var_G == $var_Max) $h = (1 / 3 ) + $del_R - $del_B; + else if ($var_B == $var_Max) $h = (2 / 3 ) + $del_G - $del_R; + + if ($h < 0) $h++; + if ($h > 1) $h--; + } + + return array($h, $s, $v); +} + +function hsl2rgb($arr) { + $h = $arr[0]; + $s = $arr[1]; + $v = $arr[2]; + + if($s == 0) { + $r = $g = $B = $v * 255; + } else { + $var_H = $h * 6; + $var_i = floor($var_H ); + $var_1 = $v * (1 - $s ); + $var_2 = $v * (1 - $s * ($var_H - $var_i ) ); + $var_3 = $v * (1 - $s * (1 - ($var_H - $var_i ) ) ); + + if ($var_i == 0) { $var_R = $v ; $var_G = $var_3 ; $var_B = $var_1 ; } + else if ($var_i == 1) { $var_R = $var_2 ; $var_G = $v ; $var_B = $var_1 ; } + else if ($var_i == 2) { $var_R = $var_1 ; $var_G = $v ; $var_B = $var_3 ; } + else if ($var_i == 3) { $var_R = $var_1 ; $var_G = $var_2 ; $var_B = $v ; } + else if ($var_i == 4) { $var_R = $var_3 ; $var_G = $var_1 ; $var_B = $v ; } + else { $var_R = $v ; $var_G = $var_1 ; $var_B = $var_2 ; } + + $r = $var_R * 255; + $g = $var_G * 255; + $B = $var_B * 255; + } + return array($r, $g, $B); +} + + function colorPalette($imageFile, $numColors, $granularity = 5) { + $granularity = max(1, abs((int)$granularity)); + $colors = array(); + + $size = @getimagesize($imageFile); + + // to enable .ico support place floIcon.php into lib/ + if (strtolower($size['mime']) == 'image/vnd.microsoft.icon') { + + if (class_exists("floIcon")) { + + $ico = new floIcon(); + @$ico->readICO($imageFile); + + if(count($ico->images)==0) + return false; + else + $img = @$ico->images[count($ico->images)-1]->getImageResource(); + + } else { + return false; + } + + } else if ($size[0] > 0 && $size[1] > 0) { + $img = @imagecreatefromstring(file_get_contents($imageFile)); + } + + if (!$img) return false; + + for($x = 0; $x < $size[0]; $x += $granularity) { + for($y = 0; $y < $size[1]; $y += $granularity) { + $thisColor = imagecolorat($img, $x, $y); + $rgb = imagecolorsforindex($img, $thisColor); + $red = round(round(($rgb['red'] / 0x33)) * 0x33); + $green = round(round(($rgb['green'] / 0x33)) * 0x33); + $blue = round(round(($rgb['blue'] / 0x33)) * 0x33); + $thisRGB = sprintf('%02X%02X%02X', $red, $green, $blue); + if(array_key_exists($thisRGB, $colors)) { + $colors[$thisRGB]++; + } else{ + $colors[$thisRGB] = 1; + } + } + } + + arsort($colors); + return array_slice(array_keys($colors), 0, $numColors); + } + + function calculate_avg_color($iconFile) { + $palette = colorPalette($iconFile, 4, 4); + + if (is_array($palette)) { + foreach ($palette as $p) { + $hsl = rgb2hsl(_color_unpack("#$p")); + + if ($hsl[1] > 0.25 && $hsl[2] > 0.25 && + !($hsl[0] >= 0 && $hsl[0] < 0.01 && $hsl[1] < 0.01) && + !($hsl[0] >= 0 && $hsl[0] < 0.01 && $hsl[2] > 0.99)) { + + return _color_pack(hsl2rgb($hsl)); + } + } + } + return ''; + } +?> diff --git a/include/crypt.php b/include/crypt.php new file mode 100644 index 0000000000..f06483ef11 --- /dev/null +++ b/include/crypt.php @@ -0,0 +1,36 @@ + diff --git a/include/db-prefs.php b/include/db-prefs.php new file mode 100644 index 0000000000..d122f3baf9 --- /dev/null +++ b/include/db-prefs.php @@ -0,0 +1,11 @@ +read($pref_name, $user_id, $die_on_error); + } + + function set_pref($pref_name, $value, $user_id = false, $strip_tags = true) { + return Db_Prefs::get()->write($pref_name, $value, $user_id, $strip_tags); + } +?> diff --git a/include/db.php b/include/db.php new file mode 100644 index 0000000000..55d1d654eb --- /dev/null +++ b/include/db.php @@ -0,0 +1,36 @@ +escape_string($s, $strip_tags); +} + +function db_query($query, $die_on_error = true) { + return Db::get()->query($query, $die_on_error); +} + +function db_fetch_assoc($result) { + return Db::get()->fetch_assoc($result); +} + + +function db_num_rows($result) { + return Db::get()->num_rows($result); +} + +function db_fetch_result($result, $row, $param) { + return Db::get()->fetch_result($result, $row, $param); +} + +function db_affected_rows($result) { + return Db::get()->affected_rows($result); +} + +function db_last_error() { + return Db::get()->last_error(); +} + +function db_quote($str){ + return Db::get()->quote($str); +} + +?> diff --git a/include/digest.php b/include/digest.php new file mode 100644 index 0000000000..71ee6d2036 --- /dev/null +++ b/include/digest.php @@ -0,0 +1,192 @@ += $preferred_ts && + time() - $preferred_ts <= 7200) { + + if ($debug) _debug("Sending digest for UID:" . $line['id'] . " - " . $line["email"]); + + $do_catchup = get_pref('DIGEST_CATCHUP', $line['id'], false); + + global $tz_offset; + + // reset tz_offset global to prevent tz cache clash between users + $tz_offset = -1; + + $tuple = prepare_headlines_digest($line["id"], 1, $limit); + $digest = $tuple[0]; + $headlines_count = $tuple[1]; + $affected_ids = $tuple[2]; + $digest_text = $tuple[3]; + + if ($headlines_count > 0) { + + $mail = new ttrssMailer(); + + $rc = $mail->quickMail($line["email"], $line["login"] , DIGEST_SUBJECT, $digest, $digest_text); + + if (!$rc && $debug) _debug("ERROR: " . $mail->ErrorInfo); + + if ($debug) _debug("RC=$rc"); + + if ($rc && $do_catchup) { + if ($debug) _debug("Marking affected articles as read..."); + catchupArticlesById($affected_ids, 0, $line["id"]); + } + } else { + if ($debug) _debug("No headlines"); + } + + db_query("UPDATE ttrss_users SET last_digest_sent = NOW() + WHERE id = " . $line["id"]); + + } + } + } + + if ($debug) _debug("All done."); + + } + + function prepare_headlines_digest($user_id, $days = 1, $limit = 1000) { + + require_once "lib/MiniTemplator.class.php"; + + $tpl = new MiniTemplator; + $tpl_t = new MiniTemplator; + + $tpl->readTemplateFromFile("templates/digest_template_html.txt"); + $tpl_t->readTemplateFromFile("templates/digest_template.txt"); + + $user_tz_string = get_pref('USER_TIMEZONE', $user_id); + $local_ts = convert_timestamp(time(), 'UTC', $user_tz_string); + + $tpl->setVariable('CUR_DATE', date('Y/m/d', $local_ts)); + $tpl->setVariable('CUR_TIME', date('G:i', $local_ts)); + + $tpl_t->setVariable('CUR_DATE', date('Y/m/d', $local_ts)); + $tpl_t->setVariable('CUR_TIME', date('G:i', $local_ts)); + + $affected_ids = array(); + + if (DB_TYPE == "pgsql") { + $interval_query = "ttrss_entries.date_updated > NOW() - INTERVAL '$days days'"; + } else if (DB_TYPE == "mysql") { + $interval_query = "ttrss_entries.date_updated > DATE_SUB(NOW(), INTERVAL $days DAY)"; + } + + $result = db_query("SELECT ttrss_entries.title, + ttrss_feeds.title AS feed_title, + COALESCE(ttrss_feed_categories.title, '".__('Uncategorized')."') AS cat_title, + date_updated, + ttrss_user_entries.ref_id, + link, + score, + content, + ".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated + FROM + ttrss_user_entries,ttrss_entries,ttrss_feeds + LEFT JOIN + ttrss_feed_categories ON (cat_id = ttrss_feed_categories.id) + WHERE + ref_id = ttrss_entries.id AND feed_id = ttrss_feeds.id + AND include_in_digest = true + AND $interval_query + AND ttrss_user_entries.owner_uid = $user_id + AND unread = true + AND score >= 0 + ORDER BY ttrss_feed_categories.title, ttrss_feeds.title, score DESC, date_updated DESC + LIMIT $limit"); + + $headlines_count = db_num_rows($result); + + $headlines = array(); + + while ($line = db_fetch_assoc($result)) { + array_push($headlines, $line); + } + + for ($i = 0; $i < sizeof($headlines); $i++) { + + $line = $headlines[$i]; + + array_push($affected_ids, $line["ref_id"]); + + $updated = make_local_datetime($line['last_updated'], false, + $user_id); + +/* if ($line["score"] != 0) { + if ($line["score"] > 0) $line["score"] = '+' . $line["score"]; + + $line["title"] .= " (".$line['score'].")"; + } */ + + if (get_pref('ENABLE_FEED_CATS', $user_id)) { + $line['feed_title'] = $line['cat_title'] . " / " . $line['feed_title']; + } + + $tpl->setVariable('FEED_TITLE', $line["feed_title"]); + $tpl->setVariable('ARTICLE_TITLE', $line["title"]); + $tpl->setVariable('ARTICLE_LINK', $line["link"]); + $tpl->setVariable('ARTICLE_UPDATED', $updated); + $tpl->setVariable('ARTICLE_EXCERPT', + truncate_string(strip_tags($line["content"]), 300)); +// $tpl->setVariable('ARTICLE_CONTENT', +// strip_tags($article_content)); + + $tpl->addBlock('article'); + + $tpl_t->setVariable('FEED_TITLE', $line["feed_title"]); + $tpl_t->setVariable('ARTICLE_TITLE', $line["title"]); + $tpl_t->setVariable('ARTICLE_LINK', $line["link"]); + $tpl_t->setVariable('ARTICLE_UPDATED', $updated); +// $tpl_t->setVariable('ARTICLE_EXCERPT', +// truncate_string(strip_tags($line["excerpt"]), 100)); + + $tpl_t->addBlock('article'); + + if ($headlines[$i]['feed_title'] != $headlines[$i+1]['feed_title']) { + $tpl->addBlock('feed'); + $tpl_t->addBlock('feed'); + } + + } + + $tpl->addBlock('digest'); + $tpl->generateOutputToString($tmp); + + $tpl_t->addBlock('digest'); + $tpl_t->generateOutputToString($tmp_t); + + return array($tmp, $headlines_count, $affected_ids, $tmp_t); + } +?> diff --git a/include/errorhandler.php b/include/errorhandler.php new file mode 100644 index 0000000000..52431c2de4 --- /dev/null +++ b/include/errorhandler.php @@ -0,0 +1,39 @@ +log_error($errno, $errstr, $file, $line, $context); +} + +function ttrss_fatal_handler() { + global $logger; + + $error = error_get_last(); + + if ($error !== NULL) { + $errno = $error["type"]; + $file = $error["file"]; + $line = $error["line"]; + $errstr = $error["message"]; + + if (!$errno) return false; + + $context = debug_backtrace(); + + $file = substr(str_replace(dirname(dirname(__FILE__)), "", $file), 1); + + if (class_exists("Logger")) + return Logger::get()->log_error($errno, $errstr, $file, $line, $context); + } + + return false; +} + +register_shutdown_function('ttrss_fatal_handler'); +set_error_handler('ttrss_error_handler'); +?> diff --git a/include/feedbrowser.php b/include/feedbrowser.php new file mode 100644 index 0000000000..800bcd970c --- /dev/null +++ b/include/feedbrowser.php @@ -0,0 +1,113 @@ +"; + + $class = ($feedctr % 2) ? "even" : "odd"; + + $site_url = " + ". + htmlspecialchars($line["title"]).""; + + $feed_url = ""; + + $rv .= "
  • $check_box $feed_url $site_url". + " ($subscribers)
  • "; + + } else if ($mode == 2) { + $feed_url = htmlspecialchars($line["feed_url"]); + $site_url = htmlspecialchars($line["site_url"]); + + $check_box = ""; + + $class = ($feedctr % 2) ? "even" : "odd"; + + if ($line['articles_archived'] > 0) { + $archived = sprintf(_ngettext("%d archived article", "%d archived articles", $line['articles_archived']), $line['articles_archived']); + $archived = " ($archived)"; + } else { + $archived = ''; + } + + $site_url = " + ". + htmlspecialchars($line["title"]).""; + + $feed_url = ""; + + + $rv .= "
  • ". + "$check_box $feed_url $site_url $archived
  • "; + } + + ++$feedctr; + } + + if ($feedctr == 0) { + $rv .= "
  • ".__('No feeds found.')."

  • "; + } + + return $rv; + } +?> diff --git a/include/functions.php b/include/functions.php new file mode 100644 index 0000000000..c27455220b --- /dev/null +++ b/include/functions.php @@ -0,0 +1,2002 @@ + "Detect automatically", + "ar_SA" => "العربيّة (Arabic)", + "bg_BG" => "Bulgarian", + "da_DA" => "Dansk", + "ca_CA" => "Català", + "cs_CZ" => "ÄŒesky", + "en_US" => "English", + "el_GR" => "Ελληνικά", + "es_ES" => "Español (España)", + "es_LA" => "Español", + "de_DE" => "Deutsch", + "fr_FR" => "Français", + "hu_HU" => "Magyar (Hungarian)", + "it_IT" => "Italiano", + "ja_JP" => "日本語 (Japanese)", + "lv_LV" => "LatvieÅ¡u", + "nb_NO" => "Norwegian bokmÃ¥l", + "nl_NL" => "Dutch", + "pl_PL" => "Polski", + "ru_RU" => "РуÑÑкий", + "pt_BR" => "Portuguese/Brazil", + "pt_PT" => "Portuguese/Portugal", + "zh_CN" => "Simplified Chinese", + "zh_TW" => "Traditional Chinese", + "sv_SE" => "Svenska", + "fi_FI" => "Suomi", + "tr_TR" => "Türkçe"); + + return $tr; + } + + require_once "lib/accept-to-gettext.php"; + require_once "lib/gettext/gettext.inc"; + + function startup_gettext() { + + # Get locale from Accept-Language header + $lang = al2gt(array_keys(get_translations()), "text/html"); + + if (defined('_TRANSLATION_OVERRIDE_DEFAULT')) { + $lang = _TRANSLATION_OVERRIDE_DEFAULT; + } + + if ($_SESSION["uid"] && get_schema_version() >= 120) { + $pref_lang = get_pref("USER_LANGUAGE", $_SESSION["uid"]); + + if ($pref_lang && $pref_lang != 'auto') { + $lang = $pref_lang; + } + } + + if ($lang) { + if (defined('LC_MESSAGES')) { + _setlocale(LC_MESSAGES, $lang); + } else if (defined('LC_ALL')) { + _setlocale(LC_ALL, $lang); + } + + _bindtextdomain("messages", "locale"); + + _textdomain("messages"); + _bind_textdomain_codeset("messages", "UTF-8"); + } + } + + require_once 'db-prefs.php'; + require_once 'version.php'; + require_once 'ccache.php'; + require_once 'labels.php'; + + define('SELF_USER_AGENT', 'Tiny Tiny RSS/' . VERSION . ' (http://tt-rss.org/)'); + ini_set('user_agent', SELF_USER_AGENT); + + require_once 'lib/pubsubhubbub/publisher.php'; + + $schema_version = false; + + function _debug_suppress($suppress) { + global $suppress_debugging; + + $suppress_debugging = $suppress; + } + + /** + * Print a timestamped debug message. + * + * @param string $msg The debug message. + * @return void + */ + function _debug($msg, $show = true) { + global $suppress_debugging; + + //echo "[$suppress_debugging] $msg $show\n"; + + if ($suppress_debugging) return false; + + $ts = strftime("%H:%M:%S", time()); + if (function_exists('posix_getpid')) { + $ts = "$ts/" . posix_getpid(); + } + + if ($show && !(defined('QUIET') && QUIET)) { + print "[$ts] $msg\n"; + } + + if (defined('LOGFILE')) { + $fp = fopen(LOGFILE, 'a+'); + + if ($fp) { + $locked = false; + + if (function_exists("flock")) { + $tries = 0; + + // try to lock logfile for writing + while ($tries < 5 && !$locked = flock($fp, LOCK_EX | LOCK_NB)) { + sleep(1); + ++$tries; + } + + if (!$locked) { + fclose($fp); + return; + } + } + + fputs($fp, "[$ts] $msg\n"); + + if (function_exists("flock")) { + flock($fp, LOCK_UN); + } + + fclose($fp); + } + } + + } // function _debug + + /** + * Purge a feed old posts. + * + * @param mixed $link A database connection. + * @param mixed $feed_id The id of the purged feed. + * @param mixed $purge_interval Olderness of purged posts. + * @param boolean $debug Set to True to enable the debug. False by default. + * @access public + * @return void + */ + function purge_feed($feed_id, $purge_interval, $debug = false) { + + if (!$purge_interval) $purge_interval = feed_purge_interval($feed_id); + + $rows = -1; + + $result = db_query( + "SELECT owner_uid FROM ttrss_feeds WHERE id = '$feed_id'"); + + $owner_uid = false; + + if (db_num_rows($result) == 1) { + $owner_uid = db_fetch_result($result, 0, "owner_uid"); + } + + if ($purge_interval == -1 || !$purge_interval) { + if ($owner_uid) { + ccache_update($feed_id, $owner_uid); + } + return; + } + + if (!$owner_uid) return; + + if (FORCE_ARTICLE_PURGE == 0) { + $purge_unread = get_pref("PURGE_UNREAD_ARTICLES", + $owner_uid, false); + } else { + $purge_unread = true; + $purge_interval = FORCE_ARTICLE_PURGE; + } + + if (!$purge_unread) $query_limit = " unread = false AND "; + + if (DB_TYPE == "pgsql") { + $pg_version = get_pgsql_version(); + + if (preg_match("/^7\./", $pg_version) || preg_match("/^8\.0/", $pg_version)) { + + $result = db_query("DELETE FROM ttrss_user_entries WHERE + ttrss_entries.id = ref_id AND + marked = false AND + feed_id = '$feed_id' AND + $query_limit + ttrss_entries.date_updated < NOW() - INTERVAL '$purge_interval days'"); + + } else { + + $result = db_query("DELETE FROM ttrss_user_entries + USING ttrss_entries + WHERE ttrss_entries.id = ref_id AND + marked = false AND + feed_id = '$feed_id' AND + $query_limit + ttrss_entries.date_updated < NOW() - INTERVAL '$purge_interval days'"); + } + + } else { + +/* $result = db_query("DELETE FROM ttrss_user_entries WHERE + marked = false AND feed_id = '$feed_id' AND + (SELECT date_updated FROM ttrss_entries WHERE + id = ref_id) < DATE_SUB(NOW(), INTERVAL $purge_interval DAY)"); */ + + $result = db_query("DELETE FROM ttrss_user_entries + USING ttrss_user_entries, ttrss_entries + WHERE ttrss_entries.id = ref_id AND + marked = false AND + feed_id = '$feed_id' AND + $query_limit + ttrss_entries.date_updated < DATE_SUB(NOW(), INTERVAL $purge_interval DAY)"); + } + + $rows = db_affected_rows($result); + + ccache_update($feed_id, $owner_uid); + + if ($debug) { + _debug("Purged feed $feed_id ($purge_interval): deleted $rows articles"); + } + + return $rows; + } // function purge_feed + + function feed_purge_interval($feed_id) { + + $result = db_query("SELECT purge_interval, owner_uid FROM ttrss_feeds + WHERE id = '$feed_id'"); + + if (db_num_rows($result) == 1) { + $purge_interval = db_fetch_result($result, 0, "purge_interval"); + $owner_uid = db_fetch_result($result, 0, "owner_uid"); + + if ($purge_interval == 0) $purge_interval = get_pref( + 'PURGE_OLD_DAYS', $owner_uid); + + return $purge_interval; + + } else { + return -1; + } + } + + function purge_orphans($do_output = false) { + + // purge orphaned posts in main content table + $result = db_query("DELETE FROM ttrss_entries WHERE + NOT EXISTS (SELECT ref_id FROM ttrss_user_entries WHERE ref_id = id)"); + + if ($do_output) { + $rows = db_affected_rows($result); + _debug("Purged $rows orphaned posts."); + } + } + + function get_feed_update_interval($feed_id) { + $result = db_query("SELECT owner_uid, update_interval FROM + ttrss_feeds WHERE id = '$feed_id'"); + + if (db_num_rows($result) == 1) { + $update_interval = db_fetch_result($result, 0, "update_interval"); + $owner_uid = db_fetch_result($result, 0, "owner_uid"); + + if ($update_interval != 0) { + return $update_interval; + } else { + return get_pref('DEFAULT_UPDATE_INTERVAL', $owner_uid, false); + } + + } else { + return -1; + } + } + + function fetch_file_contents($url, $type = false, $login = false, $pass = false, $post_query = false, $timeout = false, $timestamp = 0, $useragent = false) { + + global $fetch_last_error; + global $fetch_last_error_code; + global $fetch_last_error_content; + global $fetch_last_content_type; + global $fetch_curl_used; + + $url = ltrim($url, ' '); + $url = str_replace(' ', '%20', $url); + + if (strpos($url, "//") === 0) + $url = 'http:' . $url; + + if (!defined('NO_CURL') && function_exists('curl_init')) { + + $fetch_curl_used = true; + + if (ini_get("safe_mode") || ini_get("open_basedir") || defined("FORCE_GETURL")) { + $new_url = geturl($url); + if (!$new_url) { + // geturl has already populated $fetch_last_error + return false; + } + $ch = curl_init($new_url); + } else { + $ch = curl_init($url); + } + + if ($timestamp && !$post_query) { + curl_setopt($ch, CURLOPT_HTTPHEADER, + array("If-Modified-Since: ".gmdate('D, d M Y H:i:s \G\M\T', $timestamp))); + } + + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout ? $timeout : FILE_FETCH_CONNECT_TIMEOUT); + curl_setopt($ch, CURLOPT_TIMEOUT, $timeout ? $timeout : FILE_FETCH_TIMEOUT); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, !ini_get("safe_mode") && !ini_get("open_basedir")); + curl_setopt($ch, CURLOPT_MAXREDIRS, 20); + curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_setopt($ch, CURLOPT_USERAGENT, $useragent ? $useragent : + SELF_USER_AGENT); + curl_setopt($ch, CURLOPT_ENCODING, ""); + //curl_setopt($ch, CURLOPT_REFERER, $url); + + if (!ini_get("safe_mode") && !ini_get("open_basedir")) { + curl_setopt($ch, CURLOPT_COOKIEJAR, "/dev/null"); + } + + if (defined('_CURL_HTTP_PROXY')) { + curl_setopt($ch, CURLOPT_PROXY, _CURL_HTTP_PROXY); + } + + if ($post_query) { + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, $post_query); + } + + if ($login && $pass) + curl_setopt($ch, CURLOPT_USERPWD, "$login:$pass"); + + $contents = @curl_exec($ch); + + if (curl_errno($ch) === 23 || curl_errno($ch) === 61) { + curl_setopt($ch, CURLOPT_ENCODING, 'none'); + $contents = @curl_exec($ch); + } + + if ($contents === false) { + $fetch_last_error = curl_errno($ch) . " " . curl_error($ch); + curl_close($ch); + return false; + } + + $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + $fetch_last_content_type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE); + + $fetch_last_error_code = $http_code; + + if ($http_code != 200 || $type && strpos($fetch_last_content_type, "$type") === false) { + if (curl_errno($ch) != 0) { + $fetch_last_error = curl_errno($ch) . " " . curl_error($ch); + } else { + $fetch_last_error = "HTTP Code: $http_code"; + } + $fetch_last_error_content = $contents; + curl_close($ch); + return false; + } + + curl_close($ch); + + return $contents; + } else { + + $fetch_curl_used = false; + + if ($login && $pass){ + $url_parts = array(); + + preg_match("/(^[^:]*):\/\/(.*)/", $url, $url_parts); + + $pass = urlencode($pass); + + if ($url_parts[1] && $url_parts[2]) { + $url = $url_parts[1] . "://$login:$pass@" . $url_parts[2]; + } + } + + if (!$post_query && $timestamp) { + $context = stream_context_create(array( + 'http' => array( + 'method' => 'GET', + 'header' => "If-Modified-Since: ".gmdate("D, d M Y H:i:s \\G\\M\\T\r\n", $timestamp) + ))); + } else { + $context = NULL; + } + + $old_error = error_get_last(); + + $data = @file_get_contents($url, false, $context); + + $fetch_last_content_type = false; // reset if no type was sent from server + if (isset($http_response_header) && is_array($http_response_header)) { + foreach ($http_response_header as $h) { + if (substr(strtolower($h), 0, 13) == 'content-type:') { + $fetch_last_content_type = substr($h, 14); + // don't abort here b/c there might be more than one + // e.g. if we were being redirected -- last one is the right one + } + + if (substr(strtolower($h), 0, 7) == 'http/1.') { + $fetch_last_error_code = (int) substr($h, 9, 3); + } + } + } + + if (!$data) { + $error = error_get_last(); + + if ($error['message'] != $old_error['message']) { + $fetch_last_error = $error["message"]; + } else { + $fetch_last_error = "HTTP Code: $fetch_last_error_code"; + } + } + return $data; + } + + } + + /** + * Try to determine the favicon URL for a feed. + * adapted from wordpress favicon plugin by Jeff Minard (http://thecodepro.com/) + * http://dev.wp-plugins.org/file/favatars/trunk/favatars.php + * + * @param string $url A feed or page URL + * @access public + * @return mixed The favicon URL, or false if none was found. + */ + function get_favicon_url($url) { + + $favicon_url = false; + + if ($html = @fetch_file_contents($url)) { + + libxml_use_internal_errors(true); + + $doc = new DOMDocument(); + $doc->loadHTML($html); + $xpath = new DOMXPath($doc); + + $base = $xpath->query('/html/head/base'); + foreach ($base as $b) { + $url = $b->getAttribute("href"); + break; + } + + $entries = $xpath->query('/html/head/link[@rel="shortcut icon" or @rel="icon"]'); + if (count($entries) > 0) { + foreach ($entries as $entry) { + $favicon_url = rewrite_relative_url($url, $entry->getAttribute("href")); + break; + } + } + } + + if (!$favicon_url) + $favicon_url = rewrite_relative_url($url, "/favicon.ico"); + + return $favicon_url; + } // function get_favicon_url + + function check_feed_favicon($site_url, $feed) { +# print "FAVICON [$site_url]: $favicon_url\n"; + + $icon_file = ICONS_DIR . "/$feed.ico"; + + if (!file_exists($icon_file)) { + $favicon_url = get_favicon_url($site_url); + + if ($favicon_url) { + // Limiting to "image" type misses those served with text/plain + $contents = fetch_file_contents($favicon_url); // , "image"); + + if ($contents) { + // Crude image type matching. + // Patterns gleaned from the file(1) source code. + if (preg_match('/^\x00\x00\x01\x00/', $contents)) { + // 0 string \000\000\001\000 MS Windows icon resource + //error_log("check_feed_favicon: favicon_url=$favicon_url isa MS Windows icon resource"); + } + elseif (preg_match('/^GIF8/', $contents)) { + // 0 string GIF8 GIF image data + //error_log("check_feed_favicon: favicon_url=$favicon_url isa GIF image"); + } + elseif (preg_match('/^\x89PNG\x0d\x0a\x1a\x0a/', $contents)) { + // 0 string \x89PNG\x0d\x0a\x1a\x0a PNG image data + //error_log("check_feed_favicon: favicon_url=$favicon_url isa PNG image"); + } + elseif (preg_match('/^\xff\xd8/', $contents)) { + // 0 beshort 0xffd8 JPEG image data + //error_log("check_feed_favicon: favicon_url=$favicon_url isa JPG image"); + } + else { + //error_log("check_feed_favicon: favicon_url=$favicon_url isa UNKNOWN type"); + $contents = ""; + } + } + + if ($contents) { + $fp = @fopen($icon_file, "w"); + + if ($fp) { + fwrite($fp, $contents); + fclose($fp); + chmod($icon_file, 0644); + } + } + } + return $icon_file; + } + } + + function print_select($id, $default, $values, $attributes = "") { + print ""; + } + + function print_select_hash($id, $default, $values, $attributes = "") { + print ""; + } + + function print_radio($id, $default, $true_is, $values, $attributes = "") { + foreach ($values as $v) { + + if ($v == $default) + $sel = "checked"; + else + $sel = ""; + + if ($v == $true_is) { + $sel .= " value=\"1\""; + } else { + $sel .= " value=\"0\""; + } + + print " $v "; + + } + } + + function initialize_user_prefs($uid, $profile = false) { + + $uid = db_escape_string($uid); + + if (!$profile) { + $profile = "NULL"; + $profile_qpart = "AND profile IS NULL"; + } else { + $profile_qpart = "AND profile = '$profile'"; + } + + if (get_schema_version() < 63) $profile_qpart = ""; + + db_query("BEGIN"); + + $result = db_query("SELECT pref_name,def_value FROM ttrss_prefs"); + + $u_result = db_query("SELECT pref_name + FROM ttrss_user_prefs WHERE owner_uid = '$uid' $profile_qpart"); + + $active_prefs = array(); + + while ($line = db_fetch_assoc($u_result)) { + array_push($active_prefs, $line["pref_name"]); + } + + while ($line = db_fetch_assoc($result)) { + if (array_search($line["pref_name"], $active_prefs) === FALSE) { +// print "adding " . $line["pref_name"] . "
    "; + + $line["def_value"] = db_escape_string($line["def_value"]); + $line["pref_name"] = db_escape_string($line["pref_name"]); + + if (get_schema_version() < 63) { + db_query("INSERT INTO ttrss_user_prefs + (owner_uid,pref_name,value) VALUES + ('$uid', '".$line["pref_name"]."','".$line["def_value"]."')"); + + } else { + db_query("INSERT INTO ttrss_user_prefs + (owner_uid,pref_name,value, profile) VALUES + ('$uid', '".$line["pref_name"]."','".$line["def_value"]."', $profile)"); + } + + } + } + + db_query("COMMIT"); + + } + + function get_ssl_certificate_id() { + if ($_SERVER["REDIRECT_SSL_CLIENT_M_SERIAL"]) { + return sha1($_SERVER["REDIRECT_SSL_CLIENT_M_SERIAL"] . + $_SERVER["REDIRECT_SSL_CLIENT_V_START"] . + $_SERVER["REDIRECT_SSL_CLIENT_V_END"] . + $_SERVER["REDIRECT_SSL_CLIENT_S_DN"]); + } + if ($_SERVER["SSL_CLIENT_M_SERIAL"]) { + return sha1($_SERVER["SSL_CLIENT_M_SERIAL"] . + $_SERVER["SSL_CLIENT_V_START"] . + $_SERVER["SSL_CLIENT_V_END"] . + $_SERVER["SSL_CLIENT_S_DN"]); + } + return ""; + } + + function authenticate_user($login, $password, $check_only = false) { + + if (!SINGLE_USER_MODE) { + $user_id = false; + + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_AUTH_USER) as $plugin) { + + $user_id = (int) $plugin->authenticate($login, $password); + + if ($user_id) { + $_SESSION["auth_module"] = strtolower(get_class($plugin)); + break; + } + } + + if ($user_id && !$check_only) { + @session_start(); + + $_SESSION["uid"] = $user_id; + $_SESSION["version"] = VERSION_STATIC; + + $result = db_query("SELECT login,access_level,pwd_hash FROM ttrss_users + WHERE id = '$user_id'"); + + $_SESSION["name"] = db_fetch_result($result, 0, "login"); + $_SESSION["access_level"] = db_fetch_result($result, 0, "access_level"); + $_SESSION["csrf_token"] = uniqid(rand(), true); + + db_query("UPDATE ttrss_users SET last_login = NOW() WHERE id = " . + $_SESSION["uid"]); + + $_SESSION["ip_address"] = $_SERVER["REMOTE_ADDR"]; + $_SESSION["user_agent"] = sha1($_SERVER['HTTP_USER_AGENT']); + $_SESSION["pwd_hash"] = db_fetch_result($result, 0, "pwd_hash"); + + $_SESSION["last_version_check"] = time(); + + initialize_user_prefs($_SESSION["uid"]); + + return true; + } + + return false; + + } else { + + $_SESSION["uid"] = 1; + $_SESSION["name"] = "admin"; + $_SESSION["access_level"] = 10; + + $_SESSION["hide_hello"] = true; + $_SESSION["hide_logout"] = true; + + $_SESSION["auth_module"] = false; + + if (!$_SESSION["csrf_token"]) { + $_SESSION["csrf_token"] = uniqid(rand(), true); + } + + $_SESSION["ip_address"] = $_SERVER["REMOTE_ADDR"]; + + initialize_user_prefs($_SESSION["uid"]); + + return true; + } + } + + function make_password($length = 8) { + + $password = ""; + $possible = "0123456789abcdfghjkmnpqrstvwxyzABCDFGHJKMNPQRSTVWXYZ"; + + $i = 0; + + while ($i < $length) { + $char = substr($possible, mt_rand(0, strlen($possible)-1), 1); + + if (!strstr($password, $char)) { + $password .= $char; + $i++; + } + } + return $password; + } + + // this is called after user is created to initialize default feeds, labels + // or whatever else + + // user preferences are checked on every login, not here + + function initialize_user($uid) { + + db_query("insert into ttrss_feeds (owner_uid,title,feed_url) + values ('$uid', 'Tiny Tiny RSS: Forum', + 'http://tt-rss.org/forum/rss.php')"); + } + + function logout_user() { + session_destroy(); + if (isset($_COOKIE[session_name()])) { + setcookie(session_name(), '', time()-42000, '/'); + } + } + + function validate_csrf($csrf_token) { + return $csrf_token == $_SESSION['csrf_token']; + } + + function load_user_plugins($owner_uid) { + if ($owner_uid && SCHEMA_VERSION >= 100) { + $plugins = get_pref("_ENABLED_PLUGINS", $owner_uid); + + PluginHost::getInstance()->load($plugins, PluginHost::KIND_USER, $owner_uid); + + if (get_schema_version() > 100) { + PluginHost::getInstance()->load_data(); + } + } + } + + function login_sequence() { + if (SINGLE_USER_MODE) { + @session_start(); + authenticate_user("admin", null); + startup_gettext(); + load_user_plugins($_SESSION["uid"]); + } else { + if (!validate_session()) $_SESSION["uid"] = false; + + if (!$_SESSION["uid"]) { + + if (AUTH_AUTO_LOGIN && authenticate_user(null, null)) { + $_SESSION["ref_schema_version"] = get_schema_version(true); + } else { + authenticate_user(null, null, true); + } + + if (!$_SESSION["uid"]) { + @session_destroy(); + setcookie(session_name(), '', time()-42000, '/'); + + render_login_form(); + exit; + } + + } else { + /* bump login timestamp */ + db_query("UPDATE ttrss_users SET last_login = NOW() WHERE id = " . + $_SESSION["uid"]); + $_SESSION["last_login_update"] = time(); + } + + if ($_SESSION["uid"]) { + startup_gettext(); + load_user_plugins($_SESSION["uid"]); + + /* cleanup ccache */ + + db_query("DELETE FROM ttrss_counters_cache WHERE owner_uid = ". + $_SESSION["uid"] . " AND + (SELECT COUNT(id) FROM ttrss_feeds WHERE + ttrss_feeds.id = feed_id) = 0"); + + db_query("DELETE FROM ttrss_cat_counters_cache WHERE owner_uid = ". + $_SESSION["uid"] . " AND + (SELECT COUNT(id) FROM ttrss_feed_categories WHERE + ttrss_feed_categories.id = feed_id) = 0"); + + } + + } + } + + function truncate_string($str, $max_len, $suffix = '…') { + if (mb_strlen($str, "utf-8") > $max_len) { + return mb_substr($str, 0, $max_len, "utf-8") . $suffix; + } else { + return $str; + } + } + + function convert_timestamp($timestamp, $source_tz, $dest_tz) { + + try { + $source_tz = new DateTimeZone($source_tz); + } catch (Exception $e) { + $source_tz = new DateTimeZone('UTC'); + } + + try { + $dest_tz = new DateTimeZone($dest_tz); + } catch (Exception $e) { + $dest_tz = new DateTimeZone('UTC'); + } + + $dt = new DateTime(date('Y-m-d H:i:s', $timestamp), $source_tz); + return $dt->format('U') + $dest_tz->getOffset($dt); + } + + function make_local_datetime($timestamp, $long, $owner_uid = false, + $no_smart_dt = false, $eta_min = false) { + + if (!$owner_uid) $owner_uid = $_SESSION['uid']; + if (!$timestamp) $timestamp = '1970-01-01 0:00'; + + global $utc_tz; + global $user_tz; + + if (!$utc_tz) $utc_tz = new DateTimeZone('UTC'); + + $timestamp = substr($timestamp, 0, 19); + + # We store date in UTC internally + $dt = new DateTime($timestamp, $utc_tz); + + $user_tz_string = get_pref('USER_TIMEZONE', $owner_uid); + + if ($user_tz_string != 'Automatic') { + + try { + if (!$user_tz) $user_tz = new DateTimeZone($user_tz_string); + } catch (Exception $e) { + $user_tz = $utc_tz; + } + + $tz_offset = $user_tz->getOffset($dt); + } else { + $tz_offset = (int) -$_SESSION["clientTzOffset"]; + } + + $user_timestamp = $dt->format('U') + $tz_offset; + + if (!$no_smart_dt) { + return smart_date_time($user_timestamp, + $tz_offset, $owner_uid, $eta_min); + } else { + if ($long) + $format = get_pref('LONG_DATE_FORMAT', $owner_uid); + else + $format = get_pref('SHORT_DATE_FORMAT', $owner_uid); + + return date($format, $user_timestamp); + } + } + + function smart_date_time($timestamp, $tz_offset = 0, $owner_uid = false, $eta_min = false) { + if (!$owner_uid) $owner_uid = $_SESSION['uid']; + + if ($eta_min && time() + $tz_offset - $timestamp < 3600) { + return T_sprintf("%d min", date("i", time() + $tz_offset - $timestamp)); + } else if (date("Y.m.d", $timestamp) == date("Y.m.d", time() + $tz_offset)) { + return date("G:i", $timestamp); + } else if (date("Y", $timestamp) == date("Y", time() + $tz_offset)) { + $format = get_pref('SHORT_DATE_FORMAT', $owner_uid); + return date($format, $timestamp); + } else { + $format = get_pref('LONG_DATE_FORMAT', $owner_uid); + return date($format, $timestamp); + } + } + + function sql_bool_to_bool($s) { + if ($s == "t" || $s == "1" || strtolower($s) == "true") { + return true; + } else { + return false; + } + } + + function bool_to_sql_bool($s) { + if ($s) { + return "true"; + } else { + return "false"; + } + } + + // Session caching removed due to causing wrong redirects to upgrade + // script when get_schema_version() is called on an obsolete session + // created on a previous schema version. + function get_schema_version($nocache = false) { + global $schema_version; + + if (!$schema_version && !$nocache) { + $result = db_query("SELECT schema_version FROM ttrss_version"); + $version = db_fetch_result($result, 0, "schema_version"); + $schema_version = $version; + return $version; + } else { + return $schema_version; + } + } + + function sanity_check() { + require_once 'errors.php'; + global $ERRORS; + + $error_code = 0; + $schema_version = get_schema_version(true); + + if ($schema_version != SCHEMA_VERSION) { + $error_code = 5; + } + + if (DB_TYPE == "mysql") { + $result = db_query("SELECT true", false); + if (db_num_rows($result) != 1) { + $error_code = 10; + } + } + + if (db_escape_string("testTEST") != "testTEST") { + $error_code = 12; + } + + return array("code" => $error_code, "message" => $ERRORS[$error_code]); + } + + function file_is_locked($filename) { + 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; + } + } + return true; // consider the file always locked and skip the test + } else { + return false; + } + } + + + function make_lockfile($filename) { + $fp = fopen(LOCK_DIRECTORY . "/$filename", "w"); + + if ($fp && flock($fp, LOCK_EX | LOCK_NB)) { + $stat_h = fstat($fp); + $stat_f = stat(LOCK_DIRECTORY . "/$filename"); + + if (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') { + if ($stat_h["ino"] != $stat_f["ino"] || + $stat_h["dev"] != $stat_f["dev"]) { + + return false; + } + } + + if (function_exists('posix_getpid')) { + fwrite($fp, posix_getpid() . "\n"); + } + return $fp; + } else { + return false; + } + } + + function make_stampfile($filename) { + $fp = fopen(LOCK_DIRECTORY . "/$filename", "w"); + + if (flock($fp, LOCK_EX | LOCK_NB)) { + fwrite($fp, time() . "\n"); + flock($fp, LOCK_UN); + fclose($fp); + return true; + } else { + return false; + } + } + + function sql_random_function() { + if (DB_TYPE == "mysql") { + return "RAND()"; + } else { + return "RANDOM()"; + } + } + + function catchup_feed($feed, $cat_view, $owner_uid = false, $max_id = false, $mode = 'all') { + + if (!$owner_uid) $owner_uid = $_SESSION['uid']; + + //if (preg_match("/^-?[0-9][0-9]*$/", $feed) != false) { + + // Todo: all this interval stuff needs some generic generator function + + $date_qpart = "false"; + + switch ($mode) { + case "1day": + if (DB_TYPE == "pgsql") { + $date_qpart = "date_entered < NOW() - INTERVAL '1 day' "; + } else { + $date_qpart = "date_entered < DATE_SUB(NOW(), INTERVAL 1 DAY) "; + } + break; + case "1week": + if (DB_TYPE == "pgsql") { + $date_qpart = "date_entered < NOW() - INTERVAL '1 week' "; + } else { + $date_qpart = "date_entered < DATE_SUB(NOW(), INTERVAL 1 WEEK) "; + } + break; + case "2week": + if (DB_TYPE == "pgsql") { + $date_qpart = "date_entered < NOW() - INTERVAL '2 week' "; + } else { + $date_qpart = "date_entered < DATE_SUB(NOW(), INTERVAL 2 WEEK) "; + } + break; + default: + $date_qpart = "true"; + } + + if (is_numeric($feed)) { + if ($cat_view) { + + if ($feed >= 0) { + + if ($feed > 0) { + $children = getChildCategories($feed, $owner_uid); + array_push($children, $feed); + + $children = join(",", $children); + + $cat_qpart = "cat_id IN ($children)"; + } else { + $cat_qpart = "cat_id IS NULL"; + } + + db_query("UPDATE ttrss_user_entries + SET unread = false, last_read = NOW() WHERE ref_id IN + (SELECT id FROM + (SELECT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id + AND owner_uid = $owner_uid AND unread = true AND feed_id IN + (SELECT id FROM ttrss_feeds WHERE $cat_qpart) AND $date_qpart) as tmp)"); + + } else if ($feed == -2) { + + db_query("UPDATE ttrss_user_entries + SET unread = false,last_read = NOW() WHERE (SELECT COUNT(*) + FROM ttrss_user_labels2, ttrss_entries WHERE article_id = ref_id AND id = ref_id AND $date_qpart) > 0 + AND unread = true AND owner_uid = $owner_uid"); + } + + } else if ($feed > 0) { + + db_query("UPDATE ttrss_user_entries + SET unread = false, last_read = NOW() WHERE ref_id IN + (SELECT id FROM + (SELECT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id + AND owner_uid = $owner_uid AND unread = true AND feed_id = $feed AND $date_qpart) as tmp)"); + + } else if ($feed < 0 && $feed > LABEL_BASE_INDEX) { // special, like starred + + if ($feed == -1) { + db_query("UPDATE ttrss_user_entries + SET unread = false, last_read = NOW() WHERE ref_id IN + (SELECT id FROM + (SELECT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id + AND owner_uid = $owner_uid AND unread = true AND marked = true AND $date_qpart) as tmp)"); + } + + if ($feed == -2) { + db_query("UPDATE ttrss_user_entries + SET unread = false, last_read = NOW() WHERE ref_id IN + (SELECT id FROM + (SELECT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id + AND owner_uid = $owner_uid AND unread = true AND published = true AND $date_qpart) as tmp)"); + } + + if ($feed == -3) { + + $intl = get_pref("FRESH_ARTICLE_MAX_AGE"); + + if (DB_TYPE == "pgsql") { + $match_part = "date_entered > NOW() - INTERVAL '$intl hour' "; + } else { + $match_part = "date_entered > DATE_SUB(NOW(), + INTERVAL $intl HOUR) "; + } + + db_query("UPDATE ttrss_user_entries + SET unread = false, last_read = NOW() WHERE ref_id IN + (SELECT id FROM + (SELECT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id + AND owner_uid = $owner_uid AND score >= 0 AND unread = true AND $date_qpart AND $match_part) as tmp)"); + } + + if ($feed == -4) { + db_query("UPDATE ttrss_user_entries + SET unread = false, last_read = NOW() WHERE ref_id IN + (SELECT id FROM + (SELECT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id + AND owner_uid = $owner_uid AND unread = true AND $date_qpart) as tmp)"); + } + + } else if ($feed < LABEL_BASE_INDEX) { // label + + $label_id = feed_to_label_id($feed); + + db_query("UPDATE ttrss_user_entries + SET unread = false, last_read = NOW() WHERE ref_id IN + (SELECT id FROM + (SELECT ttrss_entries.id FROM ttrss_entries, ttrss_user_entries, ttrss_user_labels2 WHERE ref_id = id + AND label_id = '$label_id' AND ref_id = article_id + AND owner_uid = $owner_uid AND unread = true AND $date_qpart) as tmp)"); + + } + + ccache_update($feed, $owner_uid, $cat_view); + + } else { // tag + db_query("UPDATE ttrss_user_entries + SET unread = false, last_read = NOW() WHERE ref_id IN + (SELECT id FROM + (SELECT ttrss_entries.id FROM ttrss_entries, ttrss_user_entries, ttrss_tags WHERE ref_id = ttrss_entries.id + AND post_int_id = int_id AND tag_name = '$feed' + AND ttrss_user_entries.owner_uid = $owner_uid AND unread = true AND $date_qpart) as tmp)"); + + } + } + + function getAllCounters() { + $data = getGlobalCounters(); + + $data = array_merge($data, getVirtCounters()); + $data = array_merge($data, getLabelCounters()); + $data = array_merge($data, getFeedCounters()); + $data = array_merge($data, getCategoryCounters()); + + return $data; + } + + function getCategoryTitle($cat_id) { + + if ($cat_id == -1) { + return __("Special"); + } else if ($cat_id == -2) { + return __("Labels"); + } else { + + $result = db_query("SELECT title FROM ttrss_feed_categories WHERE + id = '$cat_id'"); + + if (db_num_rows($result) == 1) { + return db_fetch_result($result, 0, "title"); + } else { + return __("Uncategorized"); + } + } + } + + + function getCategoryCounters() { + $ret_arr = array(); + + /* Labels category */ + + $cv = array("id" => -2, "kind" => "cat", + "counter" => getCategoryUnread(-2)); + + array_push($ret_arr, $cv); + + $result = db_query("SELECT id AS cat_id, value AS unread, + (SELECT COUNT(id) FROM ttrss_feed_categories AS c2 + WHERE c2.parent_cat = ttrss_feed_categories.id) AS num_children + FROM ttrss_feed_categories, ttrss_cat_counters_cache + WHERE ttrss_cat_counters_cache.feed_id = id AND + ttrss_cat_counters_cache.owner_uid = ttrss_feed_categories.owner_uid AND + ttrss_feed_categories.owner_uid = " . $_SESSION["uid"]); + + while ($line = db_fetch_assoc($result)) { + $line["cat_id"] = (int) $line["cat_id"]; + + if ($line["num_children"] > 0) { + $child_counter = getCategoryChildrenUnread($line["cat_id"], $_SESSION["uid"]); + } else { + $child_counter = 0; + } + + $cv = array("id" => $line["cat_id"], "kind" => "cat", + "counter" => $line["unread"] + $child_counter); + + array_push($ret_arr, $cv); + } + + /* Special case: NULL category doesn't actually exist in the DB */ + + $cv = array("id" => 0, "kind" => "cat", + "counter" => (int) ccache_find(0, $_SESSION["uid"], true)); + + array_push($ret_arr, $cv); + + return $ret_arr; + } + + // only accepts real cats (>= 0) + function getCategoryChildrenUnread($cat, $owner_uid = false) { + if (!$owner_uid) $owner_uid = $_SESSION["uid"]; + + $result = db_query("SELECT id FROM ttrss_feed_categories WHERE parent_cat = '$cat' + AND owner_uid = $owner_uid"); + + $unread = 0; + + while ($line = db_fetch_assoc($result)) { + $unread += getCategoryUnread($line["id"], $owner_uid); + $unread += getCategoryChildrenUnread($line["id"], $owner_uid); + } + + return $unread; + } + + function getCategoryUnread($cat, $owner_uid = false) { + + if (!$owner_uid) $owner_uid = $_SESSION["uid"]; + + if ($cat >= 0) { + + if ($cat != 0) { + $cat_query = "cat_id = '$cat'"; + } else { + $cat_query = "cat_id IS NULL"; + } + + $result = db_query("SELECT id FROM ttrss_feeds WHERE $cat_query + AND owner_uid = " . $owner_uid); + + $cat_feeds = array(); + while ($line = db_fetch_assoc($result)) { + array_push($cat_feeds, "feed_id = " . $line["id"]); + } + + if (count($cat_feeds) == 0) return 0; + + $match_part = implode(" OR ", $cat_feeds); + + $result = db_query("SELECT COUNT(int_id) AS unread + FROM ttrss_user_entries + WHERE unread = true AND ($match_part) + AND owner_uid = " . $owner_uid); + + $unread = 0; + + # this needs to be rewritten + while ($line = db_fetch_assoc($result)) { + $unread += $line["unread"]; + } + + return $unread; + } else if ($cat == -1) { + return getFeedUnread(-1) + getFeedUnread(-2) + getFeedUnread(-3) + getFeedUnread(0); + } else if ($cat == -2) { + + $result = db_query(" + SELECT COUNT(unread) AS unread FROM + ttrss_user_entries, ttrss_user_labels2 + WHERE article_id = ref_id AND unread = true + AND ttrss_user_entries.owner_uid = '$owner_uid'"); + + $unread = db_fetch_result($result, 0, "unread"); + + return $unread; + + } + } + + function getFeedUnread($feed, $is_cat = false) { + return getFeedArticles($feed, $is_cat, true, $_SESSION["uid"]); + } + + function getLabelUnread($label_id, $owner_uid = false) { + if (!$owner_uid) $owner_uid = $_SESSION["uid"]; + + $result = db_query("SELECT COUNT(ref_id) AS unread FROM ttrss_user_entries, ttrss_user_labels2 + WHERE owner_uid = '$owner_uid' AND unread = true AND label_id = '$label_id' AND article_id = ref_id"); + + if (db_num_rows($result) != 0) { + return db_fetch_result($result, 0, "unread"); + } else { + return 0; + } + } + + function getFeedArticles($feed, $is_cat = false, $unread_only = false, + $owner_uid = false) { + + $n_feed = (int) $feed; + $need_entries = false; + + if (!$owner_uid) $owner_uid = $_SESSION["uid"]; + + if ($unread_only) { + $unread_qpart = "unread = true"; + } else { + $unread_qpart = "true"; + } + + if ($is_cat) { + return getCategoryUnread($n_feed, $owner_uid); + } else if ($n_feed == -6) { + return 0; + } else if ($feed != "0" && $n_feed == 0) { + + $feed = db_escape_string($feed); + + $result = db_query("SELECT SUM((SELECT COUNT(int_id) + FROM ttrss_user_entries,ttrss_entries WHERE int_id = post_int_id + AND ref_id = id AND $unread_qpart)) AS count FROM ttrss_tags + WHERE owner_uid = $owner_uid AND tag_name = '$feed'"); + return db_fetch_result($result, 0, "count"); + + } else if ($n_feed == -1) { + $match_part = "marked = true"; + } else if ($n_feed == -2) { + $match_part = "published = true"; + } else if ($n_feed == -3) { + $match_part = "unread = true AND score >= 0"; + + $intl = get_pref("FRESH_ARTICLE_MAX_AGE", $owner_uid); + + if (DB_TYPE == "pgsql") { + $match_part .= " AND date_entered > NOW() - INTERVAL '$intl hour' "; + } else { + $match_part .= " AND date_entered > DATE_SUB(NOW(), INTERVAL $intl HOUR) "; + } + + $need_entries = true; + + } else if ($n_feed == -4) { + $match_part = "true"; + } else if ($n_feed >= 0) { + + if ($n_feed != 0) { + $match_part = "feed_id = '$n_feed'"; + } else { + $match_part = "feed_id IS NULL"; + } + + } else if ($feed < LABEL_BASE_INDEX) { + + $label_id = feed_to_label_id($feed); + + return getLabelUnread($label_id, $owner_uid); + + } + + if ($match_part) { + + if ($need_entries) { + $from_qpart = "ttrss_user_entries,ttrss_entries"; + $from_where = "ttrss_entries.id = ttrss_user_entries.ref_id AND"; + } else { + $from_qpart = "ttrss_user_entries"; + $from_where = ""; + } + + $query = "SELECT count(int_id) AS unread + FROM $from_qpart WHERE + $unread_qpart AND $from_where ($match_part) AND ttrss_user_entries.owner_uid = $owner_uid"; + + //echo "[$feed/$query]\n"; + + $result = db_query($query); + + } else { + + $result = db_query("SELECT COUNT(post_int_id) AS unread + FROM ttrss_tags,ttrss_user_entries,ttrss_entries + WHERE tag_name = '$feed' AND post_int_id = int_id AND ref_id = ttrss_entries.id + AND $unread_qpart AND ttrss_tags.owner_uid = " . $owner_uid); + } + + $unread = db_fetch_result($result, 0, "unread"); + + return $unread; + } + + function getGlobalUnread($user_id = false) { + + if (!$user_id) { + $user_id = $_SESSION["uid"]; + } + + $result = db_query("SELECT SUM(value) AS c_id FROM ttrss_counters_cache + WHERE owner_uid = '$user_id' AND feed_id > 0"); + + $c_id = db_fetch_result($result, 0, "c_id"); + + return $c_id; + } + + function getGlobalCounters($global_unread = -1) { + $ret_arr = array(); + + if ($global_unread == -1) { + $global_unread = getGlobalUnread(); + } + + $cv = array("id" => "global-unread", + "counter" => (int) $global_unread); + + array_push($ret_arr, $cv); + + $result = db_query("SELECT COUNT(id) AS fn FROM + ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"]); + + $subscribed_feeds = db_fetch_result($result, 0, "fn"); + + $cv = array("id" => "subscribed-feeds", + "counter" => (int) $subscribed_feeds); + + array_push($ret_arr, $cv); + + return $ret_arr; + } + + function getVirtCounters() { + + $ret_arr = array(); + + for ($i = 0; $i >= -4; $i--) { + + $count = getFeedUnread($i); + + if ($i == 0 || $i == -1 || $i == -2) + $auxctr = getFeedArticles($i, false); + else + $auxctr = 0; + + $cv = array("id" => $i, + "counter" => (int) $count, + "auxcounter" => $auxctr); + +// if (get_pref('EXTENDED_FEEDLIST')) +// $cv["xmsg"] = getFeedArticles($i)." ".__("total"); + + array_push($ret_arr, $cv); + } + + $feeds = PluginHost::getInstance()->get_feeds(-1); + + if (is_array($feeds)) { + foreach ($feeds as $feed) { + $cv = array("id" => PluginHost::pfeed_to_feed_id($feed['id']), + "counter" => $feed['sender']->get_unread($feed['id'])); + + if (method_exists($feed['sender'], 'get_total')) + $cv["auxcounter"] = $feed['sender']->get_total($feed['id']); + + array_push($ret_arr, $cv); + } + } + + return $ret_arr; + } + + function getLabelCounters($descriptions = false) { + + $ret_arr = array(); + + $owner_uid = $_SESSION["uid"]; + + $result = db_query("SELECT id,caption,SUM(CASE WHEN u1.unread = true THEN 1 ELSE 0 END) AS unread, COUNT(u1.unread) AS total + FROM ttrss_labels2 LEFT JOIN ttrss_user_labels2 ON + (ttrss_labels2.id = label_id) + LEFT JOIN ttrss_user_entries AS u1 ON u1.ref_id = article_id + WHERE ttrss_labels2.owner_uid = $owner_uid GROUP BY ttrss_labels2.id, + ttrss_labels2.caption"); + + while ($line = db_fetch_assoc($result)) { + + $id = label_to_feed_id($line["id"]); + + $cv = array("id" => $id, + "counter" => (int) $line["unread"], + "auxcounter" => (int) $line["total"]); + + if ($descriptions) + $cv["description"] = $line["caption"]; + + array_push($ret_arr, $cv); + } + + return $ret_arr; + } + + function getFeedCounters($active_feed = false) { + + $ret_arr = array(); + + $query = "SELECT ttrss_feeds.id, + ttrss_feeds.title, + ".SUBSTRING_FOR_DATE."(ttrss_feeds.last_updated,1,19) AS last_updated, + last_error, value AS count + FROM ttrss_feeds, ttrss_counters_cache + WHERE ttrss_feeds.owner_uid = ".$_SESSION["uid"]." + AND ttrss_counters_cache.owner_uid = ttrss_feeds.owner_uid + AND ttrss_counters_cache.feed_id = id"; + + $result = db_query($query); + + while ($line = db_fetch_assoc($result)) { + + $id = $line["id"]; + $count = $line["count"]; + $last_error = htmlspecialchars($line["last_error"]); + + $last_updated = make_local_datetime($line['last_updated'], false); + + $has_img = feed_has_icon($id); + + if (date('Y') - date('Y', strtotime($line['last_updated'])) > 2) + $last_updated = ''; + + $cv = array("id" => $id, + "updated" => $last_updated, + "counter" => (int) $count, + "has_img" => (int) $has_img); + + if ($last_error) + $cv["error"] = $last_error; + +// if (get_pref('EXTENDED_FEEDLIST')) +// $cv["xmsg"] = getFeedArticles($id)." ".__("total"); + + if ($active_feed && $id == $active_feed) + $cv["title"] = truncate_string($line["title"], 30); + + array_push($ret_arr, $cv); + + } + + return $ret_arr; + } + + function get_pgsql_version() { + $result = db_query("SELECT version() AS version"); + $version = explode(" ", db_fetch_result($result, 0, "version")); + return $version[1]; + } + + /** + * @return array (code => Status code, message => error message if available) + * + * 0 - OK, Feed already exists + * 1 - OK, Feed added + * 2 - Invalid URL + * 3 - URL content is HTML, no feeds available + * 4 - URL content is HTML which contains multiple feeds. + * Here you should call extractfeedurls in rpc-backend + * to get all possible feeds. + * 5 - Couldn't download the URL content. + * 6 - Content is an invalid XML. + */ + function subscribe_to_feed($url, $cat_id = 0, + $auth_login = '', $auth_pass = '') { + + global $fetch_last_error; + + require_once "include/rssfuncs.php"; + + $url = fix_url($url); + + if (!$url || !validate_feed_url($url)) return array("code" => 2); + + $contents = @fetch_file_contents($url, false, $auth_login, $auth_pass); + + if (!$contents) { + return array("code" => 5, "message" => $fetch_last_error); + } + + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_SUBSCRIBE_FEED) as $plugin) { + $contents = $plugin->hook_subscribe_feed($contents, $url, $auth_login, $auth_pass); + } + + if (is_html($contents)) { + $feedUrls = get_feeds_from_html($url, $contents); + + if (count($feedUrls) == 0) { + return array("code" => 3); + } else if (count($feedUrls) > 1) { + return array("code" => 4, "feeds" => $feedUrls); + } + //use feed url as new URL + $url = key($feedUrls); + } + + if ($cat_id == "0" || !$cat_id) { + $cat_qpart = "NULL"; + } else { + $cat_qpart = "'$cat_id'"; + } + + $result = db_query( + "SELECT id FROM ttrss_feeds + WHERE feed_url = '$url' AND owner_uid = ".$_SESSION["uid"]); + + if (strlen(FEED_CRYPT_KEY) > 0) { + require_once "crypt.php"; + $auth_pass = substr(encrypt_string($auth_pass), 0, 250); + $auth_pass_encrypted = 'true'; + } else { + $auth_pass_encrypted = 'false'; + } + + $auth_pass = db_escape_string($auth_pass); + + if (db_num_rows($result) == 0) { + $result = db_query( + "INSERT INTO ttrss_feeds + (owner_uid,feed_url,title,cat_id, auth_login,auth_pass,update_method,auth_pass_encrypted) + VALUES ('".$_SESSION["uid"]."', '$url', + '[Unknown]', $cat_qpart, '$auth_login', '$auth_pass', 0, $auth_pass_encrypted)"); + + $result = db_query( + "SELECT id FROM ttrss_feeds WHERE feed_url = '$url' + AND owner_uid = " . $_SESSION["uid"]); + + $feed_id = db_fetch_result($result, 0, "id"); + + if ($feed_id) { + set_basic_feed_info($feed_id); + } + + return array("code" => 1); + } else { + return array("code" => 0); + } + } + + function print_feed_select($id, $default_id = "", + $attributes = "", $include_all_feeds = true, + $root_id = false, $nest_level = 0) { + + if (!$root_id) { + print ""; + } + } + + function print_feed_cat_select($id, $default_id, + $attributes, $include_all_cats = true, $root_id = false, $nest_level = 0) { + + if (!$root_id) { + print ""; + } + } + + function checkbox_to_sql_bool($val) { + return ($val == "on") ? "true" : "false"; + } + + function getFeedCatTitle($id) { + if ($id == -1) { + return __("Special"); + } else if ($id < LABEL_BASE_INDEX) { + return __("Labels"); + } else if ($id > 0) { + $result = db_query("SELECT ttrss_feed_categories.title + FROM ttrss_feeds, ttrss_feed_categories WHERE ttrss_feeds.id = '$id' AND + cat_id = ttrss_feed_categories.id"); + if (db_num_rows($result) == 1) { + return db_fetch_result($result, 0, "title"); + } else { + return __("Uncategorized"); + } + } else { + return "getFeedCatTitle($id) failed"; + } + + } + + function getFeedIcon($id) { + switch ($id) { + case 0: + return "images/archive.png"; + break; + case -1: + return "images/star.png"; + break; + case -2: + return "images/feed.png"; + break; + case -3: + return "images/fresh.png"; + break; + case -4: + return "images/folder.png"; + break; + case -6: + return "images/time.png"; + break; + default: + if ($id < LABEL_BASE_INDEX) { + return "images/label.png"; + } else { + if (file_exists(ICONS_DIR . "/$id.ico")) + return ICONS_URL . "/$id.ico"; + } + break; + } + + return false; + } + + function getFeedTitle($id, $cat = false) { + if ($cat) { + return getCategoryTitle($id); + } else if ($id == -1) { + return __("Starred articles"); + } else if ($id == -2) { + return __("Published articles"); + } else if ($id == -3) { + return __("Fresh articles"); + } else if ($id == -4) { + return __("All articles"); + } else if ($id === 0 || $id === "0") { + return __("Archived articles"); + } else if ($id == -6) { + return __("Recently read"); + } else if ($id < LABEL_BASE_INDEX) { + $label_id = feed_to_label_id($id); + $result = db_query("SELECT caption FROM ttrss_labels2 WHERE id = '$label_id'"); + if (db_num_rows($result) == 1) { + return db_fetch_result($result, 0, "caption"); + } else { + return "Unknown label ($label_id)"; + } + + } else if (is_numeric($id) && $id > 0) { + $result = db_query("SELECT title FROM ttrss_feeds WHERE id = '$id'"); + if (db_num_rows($result) == 1) { + return db_fetch_result($result, 0, "title"); + } else { + return "Unknown feed ($id)"; + } + } else { + return $id; + } + } + + // TODO: less dumb splitting + require_once "functions2.php"; + +?> diff --git a/include/functions2.php b/include/functions2.php new file mode 100644 index 0000000000..32c97aee41 --- /dev/null +++ b/include/functions2.php @@ -0,0 +1,2459 @@ +get_plugin_names()); + + $params["php_platform"] = PHP_OS; + $params["php_version"] = PHP_VERSION; + + $params["sanity_checksum"] = sha1(file_get_contents("include/sanity_check.php")); + + $result = db_query("SELECT MAX(id) AS mid, COUNT(*) AS nf FROM + ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"]); + + $max_feed_id = db_fetch_result($result, 0, "mid"); + $num_feeds = db_fetch_result($result, 0, "nf"); + + $params["max_feed_id"] = (int) $max_feed_id; + $params["num_feeds"] = (int) $num_feeds; + + $params["hotkeys"] = get_hotkeys_map(); + + $params["csrf_token"] = $_SESSION["csrf_token"]; + $params["widescreen"] = (int) $_COOKIE["ttrss_widescreen"]; + + $params['simple_update'] = defined('SIMPLE_UPDATE_MODE') && SIMPLE_UPDATE_MODE; + + return $params; + } + + function get_hotkeys_info() { + $hotkeys = array( + __("Navigation") => array( + "next_feed" => __("Open next feed"), + "prev_feed" => __("Open previous feed"), + "next_article" => __("Open next article"), + "prev_article" => __("Open previous article"), + "next_article_noscroll" => __("Open next article (don't scroll long articles)"), + "prev_article_noscroll" => __("Open previous article (don't scroll long articles)"), + "next_article_noexpand" => __("Move to next article (don't expand or mark read)"), + "prev_article_noexpand" => __("Move to previous article (don't expand or mark read)"), + "search_dialog" => __("Show search dialog")), + __("Article") => array( + "toggle_mark" => __("Toggle starred"), + "toggle_publ" => __("Toggle published"), + "toggle_unread" => __("Toggle unread"), + "edit_tags" => __("Edit tags"), + "dismiss_selected" => __("Dismiss selected"), + "dismiss_read" => __("Dismiss read"), + "open_in_new_window" => __("Open in new window"), + "catchup_below" => __("Mark below as read"), + "catchup_above" => __("Mark above as read"), + "article_scroll_down" => __("Scroll down"), + "article_scroll_up" => __("Scroll up"), + "select_article_cursor" => __("Select article under cursor"), + "email_article" => __("Email article"), + "close_article" => __("Close/collapse article"), + "toggle_expand" => __("Toggle article expansion (combined mode)"), + "toggle_widescreen" => __("Toggle widescreen mode"), + "toggle_embed_original" => __("Toggle embed original")), + __("Article selection") => array( + "select_all" => __("Select all articles"), + "select_unread" => __("Select unread"), + "select_marked" => __("Select starred"), + "select_published" => __("Select published"), + "select_invert" => __("Invert selection"), + "select_none" => __("Deselect everything")), + __("Feed") => array( + "feed_refresh" => __("Refresh current feed"), + "feed_unhide_read" => __("Un/hide read feeds"), + "feed_subscribe" => __("Subscribe to feed"), + "feed_edit" => __("Edit feed"), + "feed_catchup" => __("Mark as read"), + "feed_reverse" => __("Reverse headlines"), + "feed_debug_update" => __("Debug feed update"), + "catchup_all" => __("Mark all feeds as read"), + "cat_toggle_collapse" => __("Un/collapse current category"), + "toggle_combined_mode" => __("Toggle combined mode"), + "toggle_cdm_expanded" => __("Toggle auto expand in combined mode")), + __("Go to") => array( + "goto_all" => __("All articles"), + "goto_fresh" => __("Fresh"), + "goto_marked" => __("Starred"), + "goto_published" => __("Published"), + "goto_tagcloud" => __("Tag cloud"), + "goto_prefs" => __("Preferences")), + __("Other") => array( + "create_label" => __("Create label"), + "create_filter" => __("Create filter"), + "collapse_sidebar" => __("Un/collapse sidebar"), + "help_dialog" => __("Show help dialog")) + ); + + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_HOTKEY_INFO) as $plugin) { + $hotkeys = $plugin->hook_hotkey_info($hotkeys); + } + + return $hotkeys; + } + + function get_hotkeys_map() { + $hotkeys = array( +// "navigation" => array( + "k" => "next_feed", + "j" => "prev_feed", + "n" => "next_article", + "p" => "prev_article", + "(38)|up" => "prev_article", + "(40)|down" => "next_article", +// "^(38)|Ctrl-up" => "prev_article_noscroll", +// "^(40)|Ctrl-down" => "next_article_noscroll", + "(191)|/" => "search_dialog", +// "article" => array( + "s" => "toggle_mark", + "*s" => "toggle_publ", + "u" => "toggle_unread", + "*t" => "edit_tags", + "*d" => "dismiss_selected", + "*x" => "dismiss_read", + "o" => "open_in_new_window", + "c p" => "catchup_below", + "c n" => "catchup_above", + "*n" => "article_scroll_down", + "*p" => "article_scroll_up", + "*(38)|Shift+up" => "article_scroll_up", + "*(40)|Shift+down" => "article_scroll_down", + "a *w" => "toggle_widescreen", + "a e" => "toggle_embed_original", + "e" => "email_article", + "a q" => "close_article", +// "article_selection" => array( + "a a" => "select_all", + "a u" => "select_unread", + "a *u" => "select_marked", + "a p" => "select_published", + "a i" => "select_invert", + "a n" => "select_none", +// "feed" => array( + "f r" => "feed_refresh", + "f a" => "feed_unhide_read", + "f s" => "feed_subscribe", + "f e" => "feed_edit", + "f q" => "feed_catchup", + "f x" => "feed_reverse", + "f *d" => "feed_debug_update", + "f *c" => "toggle_combined_mode", + "f c" => "toggle_cdm_expanded", + "*q" => "catchup_all", + "x" => "cat_toggle_collapse", +// "goto" => array( + "g a" => "goto_all", + "g f" => "goto_fresh", + "g s" => "goto_marked", + "g p" => "goto_published", + "g t" => "goto_tagcloud", + "g *p" => "goto_prefs", +// "other" => array( + "(9)|Tab" => "select_article_cursor", // tab + "c l" => "create_label", + "c f" => "create_filter", + "c s" => "collapse_sidebar", + "^(191)|Ctrl+/" => "help_dialog", + ); + + if (get_pref('COMBINED_DISPLAY_MODE')) { + $hotkeys["^(38)|Ctrl-up"] = "prev_article_noscroll"; + $hotkeys["^(40)|Ctrl-down"] = "next_article_noscroll"; + } + + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_HOTKEY_MAP) as $plugin) { + $hotkeys = $plugin->hook_hotkey_map($hotkeys); + } + + $prefixes = array(); + + foreach (array_keys($hotkeys) as $hotkey) { + $pair = explode(" ", $hotkey, 2); + + if (count($pair) > 1 && !in_array($pair[0], $prefixes)) { + array_push($prefixes, $pair[0]); + } + } + + return array($prefixes, $hotkeys); + } + + function check_for_update() { + if (defined("GIT_VERSION_TIMESTAMP")) { + $content = @fetch_file_contents("http://tt-rss.org/version.json"); + + if ($content) { + $content = json_decode($content, true); + + if ($content && isset($content["changeset"])) { + if ((int)GIT_VERSION_TIMESTAMP < (int)$content["changeset"]["timestamp"] && + GIT_VERSION_HEAD != $content["changeset"]["id"]) { + + return $content["changeset"]["id"]; + } + } + } + } + + return ""; + } + + function make_runtime_info() { + $data = array(); + + $result = db_query("SELECT MAX(id) AS mid, COUNT(*) AS nf FROM + ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"]); + + $max_feed_id = db_fetch_result($result, 0, "mid"); + $num_feeds = db_fetch_result($result, 0, "nf"); + + $data["max_feed_id"] = (int) $max_feed_id; + $data["num_feeds"] = (int) $num_feeds; + + $data['last_article_id'] = getLastArticleId(); + $data['cdm_expanded'] = get_pref('CDM_EXPANDED'); + + $data['dep_ts'] = calculate_dep_timestamp(); + $data['reload_on_ts_change'] = !defined('_NO_RELOAD_ON_TS_CHANGE'); + + + if (CHECK_FOR_UPDATES && $_SESSION["last_version_check"] + 86400 + rand(-1000, 1000) < time()) { + $update_result = @check_for_update(); + + $data["update_result"] = $update_result; + + $_SESSION["last_version_check"] = time(); + } + + if (file_exists(LOCK_DIRECTORY . "/update_daemon.lock")) { + + $data['daemon_is_running'] = (int) file_is_locked("update_daemon.lock"); + + if (time() - $_SESSION["daemon_stamp_check"] > 30) { + + $stamp = (int) @file_get_contents(LOCK_DIRECTORY . "/update_daemon.stamp"); + + if ($stamp) { + $stamp_delta = time() - $stamp; + + if ($stamp_delta > 1800) { + $stamp_check = 0; + } else { + $stamp_check = 1; + $_SESSION["daemon_stamp_check"] = time(); + } + + $data['daemon_stamp_ok'] = $stamp_check; + + $stamp_fmt = date("Y.m.d, G:i", $stamp); + + $data['daemon_stamp'] = $stamp_fmt; + } + } + } + + return $data; + } + + function search_to_sql($search) { + + $search_query_part = ""; + + $keywords = str_getcsv($search, " "); + $query_keywords = array(); + $search_words = array(); + + foreach ($keywords as $k) { + if (strpos($k, "-") === 0) { + $k = substr($k, 1); + $not = "NOT"; + } else { + $not = ""; + } + + $commandpair = explode(":", mb_strtolower($k), 2); + + switch ($commandpair[0]) { + case "title": + if ($commandpair[1]) { + array_push($query_keywords, "($not (LOWER(ttrss_entries.title) LIKE '%". + db_escape_string(mb_strtolower($commandpair[1]))."%'))"); + } else { + array_push($query_keywords, "(UPPER(ttrss_entries.title) $not LIKE UPPER('%$k%') + OR UPPER(ttrss_entries.content) $not LIKE UPPER('%$k%'))"); + array_push($search_words, $k); + } + break; + case "author": + if ($commandpair[1]) { + array_push($query_keywords, "($not (LOWER(author) LIKE '%". + db_escape_string(mb_strtolower($commandpair[1]))."%'))"); + } else { + array_push($query_keywords, "(UPPER(ttrss_entries.title) $not LIKE UPPER('%$k%') + OR UPPER(ttrss_entries.content) $not LIKE UPPER('%$k%'))"); + array_push($search_words, $k); + } + break; + case "note": + if ($commandpair[1]) { + if ($commandpair[1] == "true") + array_push($query_keywords, "($not (note IS NOT NULL AND note != ''))"); + else if ($commandpair[1] == "false") + array_push($query_keywords, "($not (note IS NULL OR note = ''))"); + else + array_push($query_keywords, "($not (LOWER(note) LIKE '%". + db_escape_string(mb_strtolower($commandpair[1]))."%'))"); + } else { + array_push($query_keywords, "(UPPER(ttrss_entries.title) $not LIKE UPPER('%$k%') + OR UPPER(ttrss_entries.content) $not LIKE UPPER('%$k%'))"); + if (!$not) array_push($search_words, $k); + } + break; + case "star": + + if ($commandpair[1]) { + if ($commandpair[1] == "true") + array_push($query_keywords, "($not (marked = true))"); + else + array_push($query_keywords, "($not (marked = false))"); + } else { + array_push($query_keywords, "(UPPER(ttrss_entries.title) $not LIKE UPPER('%$k%') + OR UPPER(ttrss_entries.content) $not LIKE UPPER('%$k%'))"); + if (!$not) array_push($search_words, $k); + } + break; + case "pub": + if ($commandpair[1]) { + if ($commandpair[1] == "true") + array_push($query_keywords, "($not (published = true))"); + else + array_push($query_keywords, "($not (published = false))"); + + } else { + array_push($query_keywords, "(UPPER(ttrss_entries.title) $not LIKE UPPER('%$k%') + OR UPPER(ttrss_entries.content) $not LIKE UPPER('%$k%'))"); + if (!$not) array_push($search_words, $k); + } + break; + case "unread": + if ($commandpair[1]) { + if ($commandpair[1] == "true") + array_push($query_keywords, "($not (unread = true))"); + else + array_push($query_keywords, "($not (unread = false))"); + + } else { + array_push($query_keywords, "(UPPER(ttrss_entries.title) $not LIKE UPPER('%$k%') + OR UPPER(ttrss_entries.content) $not LIKE UPPER('%$k%'))"); + if (!$not) array_push($search_words, $k); + } + break; + default: + if (strpos($k, "@") === 0) { + + $user_tz_string = get_pref('USER_TIMEZONE', $_SESSION['uid']); + $orig_ts = strtotime(substr($k, 1)); + $k = date("Y-m-d", convert_timestamp($orig_ts, $user_tz_string, 'UTC')); + + //$k = date("Y-m-d", strtotime(substr($k, 1))); + + array_push($query_keywords, "(".SUBSTRING_FOR_DATE."(updated,1,LENGTH('$k')) $not = '$k')"); + } else { + array_push($query_keywords, "(UPPER(ttrss_entries.title) $not LIKE UPPER('%$k%') + OR UPPER(ttrss_entries.content) $not LIKE UPPER('%$k%'))"); + + if (!$not) array_push($search_words, $k); + } + } + } + + $search_query_part = implode("AND", $query_keywords); + + return array($search_query_part, $search_words); + } + + function getParentCategories($cat, $owner_uid) { + $rv = array(); + + $result = db_query("SELECT parent_cat FROM ttrss_feed_categories + WHERE id = '$cat' AND parent_cat IS NOT NULL AND owner_uid = $owner_uid"); + + while ($line = db_fetch_assoc($result)) { + array_push($rv, $line["parent_cat"]); + $rv = array_merge($rv, getParentCategories($line["parent_cat"], $owner_uid)); + } + + return $rv; + } + + function getChildCategories($cat, $owner_uid) { + $rv = array(); + + $result = db_query("SELECT id FROM ttrss_feed_categories + WHERE parent_cat = '$cat' AND owner_uid = $owner_uid"); + + while ($line = db_fetch_assoc($result)) { + array_push($rv, $line["id"]); + $rv = array_merge($rv, getChildCategories($line["id"], $owner_uid)); + } + + return $rv; + } + + function queryFeedHeadlines($params) { + + $feed = $params["feed"]; + $limit = isset($params["limit"]) ? $params["limit"] : 30; + $view_mode = $params["view_mode"]; + $cat_view = isset($params["cat_view"]) ? $params["cat_view"] : false; + $search = isset($params["search"]) ? $params["search"] : false; + $override_order = isset($params["override_order"]) ? $params["override_order"] : false; + $offset = isset($params["offset"]) ? $params["offset"] : 0; + $owner_uid = isset($params["owner_uid"]) ? $params["owner_uid"] : $_SESSION["uid"]; + $since_id = isset($params["since_id"]) ? $params["since_id"] : 0; + $include_children = isset($params["include_children"]) ? $params["include_children"] : false; + $ignore_vfeed_group = isset($params["ignore_vfeed_group"]) ? $params["ignore_vfeed_group"] : false; + $override_strategy = isset($params["override_strategy"]) ? $params["override_strategy"] : false; + $override_vfeed = isset($params["override_vfeed"]) ? $params["override_vfeed"] : false; + $start_ts = isset($params["start_ts"]) ? $params["start_ts"] : false; + $check_first_id = isset($params["check_first_id"]) ? $params["check_first_id"] : false; + + $ext_tables_part = ""; + $query_strategy_part = ""; + + $search_words = array(); + + if ($search) { + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_SEARCH) as $plugin) { + list($search_query_part, $search_words) = $plugin->hook_search($search); + break; + } + + // fall back in case of no plugins + if (!$search_query_part) { + list($search_query_part, $search_words) = search_to_sql($search); + } + $search_query_part .= " AND "; + } else { + $search_query_part = ""; + } + + if ($since_id) { + $since_id_part = "ttrss_entries.id > $since_id AND "; + } else { + $since_id_part = ""; + } + + $view_query_part = ""; + + if ($view_mode == "adaptive") { + if ($search) { + $view_query_part = " "; + } else if ($feed != -1) { + + $unread = getFeedUnread($feed, $cat_view); + + if ($cat_view && $feed > 0 && $include_children) + $unread += getCategoryChildrenUnread($feed); + + if ($unread > 0) + $view_query_part = " unread = true AND "; + + } + } + + if ($view_mode == "marked") { + $view_query_part = " marked = true AND "; + } + + if ($view_mode == "has_note") { + $view_query_part = " (note IS NOT NULL AND note != '') AND "; + } + + if ($view_mode == "published") { + $view_query_part = " published = true AND "; + } + + if ($view_mode == "unread" && $feed != -6) { + $view_query_part = " unread = true AND "; + } + + if ($limit > 0) { + $limit_query_part = "LIMIT " . $limit; + } + + $allow_archived = false; + + $vfeed_query_part = ""; + + /* tags */ + if (!is_numeric($feed)) { + $query_strategy_part = "true"; + $vfeed_query_part = "(SELECT title FROM ttrss_feeds WHERE + id = feed_id) as feed_title,"; + } else if ($feed > 0) { + + if ($cat_view) { + + if ($feed > 0) { + if ($include_children) { + # sub-cats + $subcats = getChildCategories($feed, $owner_uid); + + array_push($subcats, $feed); + $query_strategy_part = "cat_id IN (". + implode(",", $subcats).")"; + + } else { + $query_strategy_part = "cat_id = '$feed'"; + } + + } else { + $query_strategy_part = "cat_id IS NULL"; + } + + $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; + + } else { + $query_strategy_part = "feed_id = '$feed'"; + } + } else if ($feed == 0 && !$cat_view) { // archive virtual feed + $query_strategy_part = "feed_id IS NULL"; + $allow_archived = true; + } else if ($feed == 0 && $cat_view) { // uncategorized + $query_strategy_part = "cat_id IS NULL AND feed_id IS NOT NULL"; + $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; + } else if ($feed == -1) { // starred virtual feed + $query_strategy_part = "marked = true"; + $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; + $allow_archived = true; + + if (!$override_order) { + $override_order = "last_marked DESC, date_entered DESC, updated DESC"; + } + + } else if ($feed == -2) { // published virtual feed OR labels category + + if (!$cat_view) { + $query_strategy_part = "published = true"; + $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; + $allow_archived = true; + + if (!$override_order) { + $override_order = "last_published DESC, date_entered DESC, updated DESC"; + } + + } else { + $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; + + $ext_tables_part = ",ttrss_labels2,ttrss_user_labels2"; + + $query_strategy_part = "ttrss_labels2.id = ttrss_user_labels2.label_id AND + ttrss_user_labels2.article_id = ref_id"; + + } + } else if ($feed == -6) { // recently read + $query_strategy_part = "unread = false AND last_read IS NOT NULL"; + $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; + $allow_archived = true; + $ignore_vfeed_group = true; + + if (!$override_order) $override_order = "last_read DESC"; + + } else if ($feed == -3) { // fresh virtual feed + $query_strategy_part = "unread = true AND score >= 0"; + + $intl = get_pref("FRESH_ARTICLE_MAX_AGE", $owner_uid); + + if (DB_TYPE == "pgsql") { + $query_strategy_part .= " AND date_entered > NOW() - INTERVAL '$intl hour' "; + } else { + $query_strategy_part .= " AND date_entered > DATE_SUB(NOW(), INTERVAL $intl HOUR) "; + } + + $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; + } else if ($feed == -4) { // all articles virtual feed + $allow_archived = true; + $query_strategy_part = "true"; + $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; + } else if ($feed <= LABEL_BASE_INDEX) { // labels + $label_id = feed_to_label_id($feed); + + $query_strategy_part = "label_id = '$label_id' AND + ttrss_labels2.id = ttrss_user_labels2.label_id AND + ttrss_user_labels2.article_id = ref_id"; + + $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; + $ext_tables_part = ",ttrss_labels2,ttrss_user_labels2"; + $allow_archived = true; + + } else { + $query_strategy_part = "true"; + } + + $order_by = "score DESC, date_entered DESC, updated DESC"; + + if ($override_order) { + $order_by = $override_order; + } + + if ($override_strategy) { + $query_strategy_part = $override_strategy; + } + + if ($override_vfeed) { + $vfeed_query_part = $override_vfeed; + } + + $feed_title = ""; + + if ($search) { + $feed_title = T_sprintf("Search results: %s", $search); + } else { + if ($cat_view) { + $feed_title = getCategoryTitle($feed); + } else { + if (is_numeric($feed) && $feed > 0) { + $result = db_query("SELECT title,site_url,last_error,last_updated + FROM ttrss_feeds WHERE id = '$feed' AND owner_uid = $owner_uid"); + + $feed_title = db_fetch_result($result, 0, "title"); + $feed_site_url = db_fetch_result($result, 0, "site_url"); + $last_error = db_fetch_result($result, 0, "last_error"); + $last_updated = db_fetch_result($result, 0, "last_updated"); + } else { + $feed_title = getFeedTitle($feed); + } + } + } + + + $content_query_part = "content, "; + + if ($limit_query_part) { + $offset_query_part = "OFFSET $offset"; + } else { + $offset_query_part = ""; + } + + if (is_numeric($feed)) { + // proper override_order applied above + if ($vfeed_query_part && !$ignore_vfeed_group && get_pref('VFEED_GROUP_BY_FEED', $owner_uid)) { + if (!$override_order) { + $order_by = "ttrss_feeds.title, $order_by"; + } else { + $order_by = "ttrss_feeds.title, $override_order"; + } + } + + if (!$allow_archived) { + $from_qpart = "ttrss_entries,ttrss_user_entries,ttrss_feeds$ext_tables_part"; + $feed_check_qpart = "ttrss_user_entries.feed_id = ttrss_feeds.id AND"; + + } else { + $from_qpart = "ttrss_entries$ext_tables_part,ttrss_user_entries + LEFT JOIN ttrss_feeds ON (feed_id = ttrss_feeds.id)"; + } + + if ($vfeed_query_part) $vfeed_query_part .= "favicon_avg_color,"; + + if ($start_ts) { + $start_ts_formatted = date("Y/m/d H:i:s", strtotime($start_ts)); + $start_ts_query_part = "date_entered >= '$start_ts_formatted' AND"; + } else { + $start_ts_query_part = ""; + } + + $first_id = 0; + $first_id_query_strategy_part = $query_strategy_part; + + if ($feed == -3) + $first_id_query_strategy_part = "true"; + + // if previous topmost article id changed that means our current pagination is no longer valid + $query = "SELECT DISTINCT + ttrss_feeds.title, + date_entered, + guid, + ttrss_entries.id, + ttrss_entries.title, + updated, + score, + marked, + published, + last_marked, + last_published + FROM + $from_qpart + WHERE + $feed_check_qpart + ttrss_user_entries.ref_id = ttrss_entries.id AND + ttrss_user_entries.owner_uid = '$owner_uid' AND + $search_query_part + $start_ts_query_part + $since_id_part + $first_id_query_strategy_part ORDER BY $order_by LIMIT 1"; + + if ($_REQUEST["debug"]) { + print $query; + } + + $result = db_query($query); + if ($result && db_num_rows($result) > 0) { + $first_id = (int) db_fetch_result($result, 0, "id"); + + if ($offset > 0 && $first_id && $check_first_id && $first_id != $check_first_id) { + return array(-1, $feed_title, $feed_site_url, $last_error, $last_updated, $search_words, $first_id); + } + } + + $query = "SELECT DISTINCT + date_entered, + guid, + ttrss_entries.id,ttrss_entries.title, + updated, + label_cache, + tag_cache, + always_display_enclosures, + site_url, + note, + num_comments, + comments, + int_id, + uuid, + lang, + hide_images, + unread,feed_id,marked,published,link,last_read,orig_feed_id, + last_marked, last_published, + $vfeed_query_part + $content_query_part + author,score + FROM + $from_qpart + WHERE + $feed_check_qpart + ttrss_user_entries.ref_id = ttrss_entries.id AND + ttrss_user_entries.owner_uid = '$owner_uid' AND + $search_query_part + $start_ts_query_part + $view_query_part + $since_id_part + $query_strategy_part ORDER BY $order_by + $limit_query_part $offset_query_part"; + + if ($_REQUEST["debug"]) print $query; + + $result = db_query($query); + + } else { + // browsing by tag + + $query = "SELECT DISTINCT + date_entered, + guid, + note, + ttrss_entries.id as id, + title, + updated, + unread, + feed_id, + orig_feed_id, + marked, + num_comments, + comments, + tag_cache, + label_cache, + link, + lang, + uuid, + last_read, + (SELECT hide_images FROM ttrss_feeds WHERE id = feed_id) AS hide_images, + last_marked, last_published, + $since_id_part + $vfeed_query_part + $content_query_part + author, score + FROM ttrss_entries, ttrss_user_entries, ttrss_tags + WHERE + ref_id = ttrss_entries.id AND + ttrss_user_entries.owner_uid = $owner_uid AND + post_int_id = int_id AND + tag_name = '$feed' AND + $view_query_part + $search_query_part + $query_strategy_part ORDER BY $order_by + $limit_query_part $offset_query_part"; + + if ($_REQUEST["debug"]) print $query; + + $result = db_query($query); + } + + return array($result, $feed_title, $feed_site_url, $last_error, $last_updated, $search_words, $first_id); + + } + + function iframe_whitelisted($entry) { + $whitelist = array("youtube.com", "youtu.be", "vimeo.com"); + + @$src = parse_url($entry->getAttribute("src"), PHP_URL_HOST); + + if ($src) { + foreach ($whitelist as $w) { + if ($src == $w || $src == "www.$w") + return true; + } + } + + return false; + } + + function sanitize($str, $force_remove_images = false, $owner = false, $site_url = false, $highlight_words = false, $article_id = false) { + if (!$owner) $owner = $_SESSION["uid"]; + + $res = trim($str); if (!$res) return ''; + + $charset_hack = ' + + '; + + $res = trim($res); if (!$res) return ''; + + libxml_use_internal_errors(true); + + $doc = new DOMDocument(); + $doc->loadHTML($charset_hack . $res); + $xpath = new DOMXPath($doc); + + $entries = $xpath->query('(//a[@href]|//img[@src])'); + + foreach ($entries as $entry) { + + if ($site_url) { + + if ($entry->hasAttribute('href')) { + $entry->setAttribute('href', + rewrite_relative_url($site_url, $entry->getAttribute('href'))); + + $entry->setAttribute('rel', 'noreferrer'); + } + + if ($entry->hasAttribute('src')) { + $src = rewrite_relative_url($site_url, $entry->getAttribute('src')); + + $cached_filename = CACHE_DIR . '/images/' . sha1($src) . '.png'; + + if (file_exists($cached_filename)) { + $src = SELF_URL_PATH . '/public.php?op=cached_image&hash=' . sha1($src); + } + + $entry->setAttribute('src', $src); + } + + if ($entry->nodeName == 'img') { + if (($owner && get_pref("STRIP_IMAGES", $owner)) || + $force_remove_images || $_SESSION["bw_limit"]) { + + $p = $doc->createElement('p'); + + $a = $doc->createElement('a'); + $a->setAttribute('href', $entry->getAttribute('src')); + + $a->appendChild(new DOMText($entry->getAttribute('src'))); + $a->setAttribute('target', '_blank'); + + $p->appendChild($a); + + $entry->parentNode->replaceChild($p, $entry); + } + } + } + + if (strtolower($entry->nodeName) == "a") { + $entry->setAttribute("target", "_blank"); + } + } + + $entries = $xpath->query('//iframe'); + foreach ($entries as $entry) { + if (!iframe_whitelisted($entry)) { + $entry->setAttribute('sandbox', 'allow-scripts'); + } else { + if ($_SERVER['HTTPS'] == "on") { + $entry->setAttribute("src", + str_replace("http://", "https://", + $entry->getAttribute("src"))); + } + } + } + + $allowed_elements = array('a', 'address', 'audio', 'article', 'aside', + 'b', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', + 'caption', 'cite', 'center', 'code', 'col', 'colgroup', + 'data', 'dd', 'del', 'details', 'div', 'dl', 'font', + 'dt', 'em', 'footer', 'figure', 'figcaption', + 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'html', 'i', + 'img', 'ins', 'kbd', 'li', 'main', 'mark', 'nav', 'noscript', + 'ol', 'p', 'pre', 'q', 'ruby', 'rp', 'rt', 's', 'samp', 'section', + 'small', 'source', 'span', 'strike', 'strong', 'sub', 'summary', + 'sup', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'time', + 'tr', 'track', 'tt', 'u', 'ul', 'var', 'wbr', 'video' ); + + if ($_SESSION['hasSandbox']) $allowed_elements[] = 'iframe'; + + $disallowed_attributes = array('id', 'style', 'class'); + + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_SANITIZE) as $plugin) { + $retval = $plugin->hook_sanitize($doc, $site_url, $allowed_elements, $disallowed_attributes, $article_id); + if (is_array($retval)) { + $doc = $retval[0]; + $allowed_elements = $retval[1]; + $disallowed_attributes = $retval[2]; + } else { + $doc = $retval; + } + } + + $doc->removeChild($doc->firstChild); //remove doctype + $doc = strip_harmful_tags($doc, $allowed_elements, $disallowed_attributes); + + if ($highlight_words) { + foreach ($highlight_words as $word) { + + // http://stackoverflow.com/questions/4081372/highlight-keywords-in-a-paragraph + + $elements = $xpath->query("//*/text()"); + + foreach ($elements as $child) { + + $fragment = $doc->createDocumentFragment(); + $text = $child->textContent; + + while (($pos = mb_stripos($text, $word)) !== false) { + $fragment->appendChild(new DomText(mb_substr($text, 0, $pos))); + $word = mb_substr($text, $pos, mb_strlen($word)); + $highlight = $doc->createElement('span'); + $highlight->appendChild(new DomText($word)); + $highlight->setAttribute('class', 'highlight'); + $fragment->appendChild($highlight); + $text = mb_substr($text, $pos + mb_strlen($word)); + } + + if (!empty($text)) $fragment->appendChild(new DomText($text)); + + $child->parentNode->replaceChild($fragment, $child); + } + } + } + + $res = $doc->saveHTML(); + + return $res; + } + + function strip_harmful_tags($doc, $allowed_elements, $disallowed_attributes) { + $xpath = new DOMXPath($doc); + $entries = $xpath->query('//*'); + + foreach ($entries as $entry) { + if (!in_array($entry->nodeName, $allowed_elements)) { + $entry->parentNode->removeChild($entry); + } + + if ($entry->hasAttributes()) { + $attrs_to_remove = array(); + + foreach ($entry->attributes as $attr) { + + if (strpos($attr->nodeName, 'on') === 0) { + array_push($attrs_to_remove, $attr); + } + + if (in_array($attr->nodeName, $disallowed_attributes)) { + array_push($attrs_to_remove, $attr); + } + } + + foreach ($attrs_to_remove as $attr) { + $entry->removeAttributeNode($attr); + } + } + } + + return $doc; + } + + function catchupArticlesById($ids, $cmode, $owner_uid = false) { + + if (!$owner_uid) $owner_uid = $_SESSION["uid"]; + if (count($ids) == 0) return; + + $tmp_ids = array(); + + foreach ($ids as $id) { + array_push($tmp_ids, "ref_id = '$id'"); + } + + $ids_qpart = join(" OR ", $tmp_ids); + + if ($cmode == 0) { + db_query("UPDATE ttrss_user_entries SET + unread = false,last_read = NOW() + WHERE ($ids_qpart) AND owner_uid = $owner_uid"); + } else if ($cmode == 1) { + db_query("UPDATE ttrss_user_entries SET + unread = true + WHERE ($ids_qpart) AND owner_uid = $owner_uid"); + } else { + db_query("UPDATE ttrss_user_entries SET + unread = NOT unread,last_read = NOW() + WHERE ($ids_qpart) AND owner_uid = $owner_uid"); + } + + /* update ccache */ + + $result = db_query("SELECT DISTINCT feed_id FROM ttrss_user_entries + WHERE ($ids_qpart) AND owner_uid = $owner_uid"); + + while ($line = db_fetch_assoc($result)) { + ccache_update($line["feed_id"], $owner_uid); + } + } + + function get_article_tags($id, $owner_uid = 0, $tag_cache = false) { + + $a_id = db_escape_string($id); + + if (!$owner_uid) $owner_uid = $_SESSION["uid"]; + + $query = "SELECT DISTINCT tag_name, + owner_uid as owner FROM + ttrss_tags WHERE post_int_id = (SELECT int_id FROM ttrss_user_entries WHERE + ref_id = '$a_id' AND owner_uid = '$owner_uid' LIMIT 1) ORDER BY tag_name"; + + $tags = array(); + + /* check cache first */ + + if ($tag_cache === false) { + $result = db_query("SELECT tag_cache FROM ttrss_user_entries + WHERE ref_id = '$id' AND owner_uid = $owner_uid"); + + $tag_cache = db_fetch_result($result, 0, "tag_cache"); + } + + if ($tag_cache) { + $tags = explode(",", $tag_cache); + } else { + + /* do it the hard way */ + + $tmp_result = db_query($query); + + while ($tmp_line = db_fetch_assoc($tmp_result)) { + array_push($tags, $tmp_line["tag_name"]); + } + + /* update the cache */ + + $tags_str = db_escape_string(join(",", $tags)); + + db_query("UPDATE ttrss_user_entries + SET tag_cache = '$tags_str' WHERE ref_id = '$id' + AND owner_uid = $owner_uid"); + } + + return $tags; + } + + function trim_array($array) { + $tmp = $array; + array_walk($tmp, 'trim'); + return $tmp; + } + + function tag_is_valid($tag) { + if ($tag == '') return false; + if (preg_match("/^[0-9]*$/", $tag)) return false; + if (mb_strlen($tag) > 250) return false; + + if (!$tag) return false; + + return true; + } + + function render_login_form() { + header('Cache-Control: public'); + + require_once "login_form.php"; + exit; + } + + function format_warning($msg, $id = "") { + return "
    + $msg
    "; + } + + function format_notice($msg, $id = "") { + return "
    + $msg
    "; + } + + function format_error($msg, $id = "") { + return "
    + $msg
    "; + } + + function print_notice($msg) { + return print format_notice($msg); + } + + function print_warning($msg) { + return print format_warning($msg); + } + + function print_error($msg) { + return print format_error($msg); + } + + + function T_sprintf() { + $args = func_get_args(); + return vsprintf(__(array_shift($args)), $args); + } + + function format_inline_player($url, $ctype) { + + $entry = ""; + + $url = htmlspecialchars($url); + + if (strpos($ctype, "audio/") === 0) { + + if ($_SESSION["hasAudio"] && (strpos($ctype, "ogg") !== false || + $_SESSION["hasMp3"])) { + + $entry .= ""; + + } else { + + $entry .= " + + "; + } + + if ($entry) $entry .= "  " . basename($url) . ""; + + return $entry; + + } + + return ""; + +/* $filename = substr($url, strrpos($url, "/")+1); + + $entry .= " " . + $filename . " (" . $ctype . ")" . ""; */ + + } + + function format_article($id, $mark_as_read = true, $zoom_mode = false, $owner_uid = false) { + if (!$owner_uid) $owner_uid = $_SESSION["uid"]; + + $rv = array(); + + $rv['id'] = $id; + + /* we can figure out feed_id from article id anyway, why do we + * pass feed_id here? let's ignore the argument :(*/ + + $result = db_query("SELECT feed_id FROM ttrss_user_entries + WHERE ref_id = '$id'"); + + $feed_id = (int) db_fetch_result($result, 0, "feed_id"); + + $rv['feed_id'] = $feed_id; + + //if (!$zoom_mode) { print "
    get_hooks(PluginHost::HOOK_RENDER_ARTICLE) as $p) { + $line = $p->hook_render_article($line); + } + + $num_comments = $line["num_comments"]; + $entry_comments = ""; + + if ($num_comments > 0) { + if ($line["comments"]) { + $comments_url = htmlspecialchars($line["comments"]); + } else { + $comments_url = htmlspecialchars($line["link"]); + } + $entry_comments = "$num_comments ". + _ngettext("comment", "comments", $num_comments).""; + + } else { + if ($line["comments"] && $line["link"] != $line["comments"]) { + $entry_comments = "".__("comments").""; + } + } + + if ($zoom_mode) { + header("Content-Type: text/html"); + $rv['content'] .= " + + Tiny Tiny RSS - ".$line["title"]."". + stylesheet_tag("css/tt-rss.css"). + stylesheet_tag("css/zoom.css"). + stylesheet_tag("css/dijit.css")." + + + + + + "; + } + + $rv['content'] .= "
    "; + + $rv['content'] .= "
    "; + + $entry_author = $line["author"]; + + if ($entry_author) { + $entry_author = __(" - ") . $entry_author; + } + + $parsed_updated = make_local_datetime($line["updated"], true, + $owner_uid, true); + + if (!$zoom_mode) + $rv['content'] .= "
    $parsed_updated
    "; + + if ($line["link"]) { + $rv['content'] .= "
    " . + $line["title"] . "" . + "$entry_author
    "; + } else { + $rv['content'] .= "
    " . $line["title"] . "$entry_author
    "; + } + + if ($zoom_mode) { + $feed_title = "". + htmlspecialchars($line["feed_title"]).""; + + $rv['content'] .= "
    $feed_title
    "; + + $rv['content'] .= "
    $parsed_updated
    "; + } + + $tags_str = format_tags_string($line["tags"], $id); + $tags_str_full = join(", ", $line["tags"]); + + if (!$tags_str_full) $tags_str_full = __("no tags"); + + if (!$entry_comments) $entry_comments = " "; # placeholder + + $rv['content'] .= ""; + $rv['content'] .= "
    "; + + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_ARTICLE_LEFT_BUTTON) as $p) { + $rv['content'] .= $p->hook_article_left_button($line); + } + + $rv['content'] .= "$entry_comments
    "; + + if ($line["orig_feed_id"]) { + + $tmp_result = db_query("SELECT * FROM ttrss_archived_feeds + WHERE id = ".$line["orig_feed_id"]); + + if (db_num_rows($tmp_result) != 0) { + + $rv['content'] .= "
    "; + $rv['content'] .= __("Originally from:"); + + $rv['content'] .= " "; + + $tmp_line = db_fetch_assoc($tmp_result); + + $rv['content'] .= "" . + $tmp_line['title'] . ""; + + $rv['content'] .= " "; + + $rv['content'] .= ""; + $rv['content'] .= ""; + + $rv['content'] .= "
    "; + } + } + + $rv['content'] .= "
    "; + + $rv['content'] .= "
    "; + if ($line['note']) { + $rv['content'] .= format_article_note($id, $line['note'], !$zoom_mode); + } + $rv['content'] .= "
    "; + + if (!$line['lang']) $line['lang'] = 'en'; + + $rv['content'] .= "
    "; + + $rv['content'] .= $line["content"]; + $rv['content'] .= format_article_enclosures($id, + sql_bool_to_bool($line["always_display_enclosures"]), + $line["content"], + sql_bool_to_bool($line["hide_images"])); + + $rv['content'] .= "
    "; + + $rv['content'] .= "
    "; + + } + + if ($zoom_mode) { + $rv['content'] .= " + "; + $rv['content'] .= ""; + } + + return $rv; + + } + + function print_checkpoint($n, $s) { + $ts = microtime(true); + echo sprintf("\n", $ts - $s); + return $ts; + } + + function sanitize_tag($tag) { + $tag = trim($tag); + + $tag = mb_strtolower($tag, 'utf-8'); + + $tag = preg_replace('/[,\'\"\+\>\<]/', "", $tag); + + if (DB_TYPE == "mysql") { + $tag = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $tag); + } + + return $tag; + } + + function get_self_url_prefix() { + if (strrpos(SELF_URL_PATH, "/") === strlen(SELF_URL_PATH)-1) { + return substr(SELF_URL_PATH, 0, strlen(SELF_URL_PATH)-1); + } else { + return SELF_URL_PATH; + } + } + + /** + * Compute the Mozilla Firefox feed adding URL from server HOST and REQUEST_URI. + * + * @return string The Mozilla Firefox feed adding URL. + */ + function add_feed_url() { + //$url_path = ($_SERVER['HTTPS'] != "on" ? 'http://' : 'https://') . $_SERVER["HTTP_HOST"] . parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH); + + $url_path = get_self_url_prefix() . + "/public.php?op=subscribe&feed_url=%s"; + return $url_path; + } // function add_feed_url + + function encrypt_password($pass, $salt = '', $mode2 = false) { + if ($salt && $mode2) { + return "MODE2:" . hash('sha256', $salt . $pass); + } else if ($salt) { + return "SHA1X:" . sha1("$salt:$pass"); + } else { + return "SHA1:" . sha1($pass); + } + } // function encrypt_password + + function load_filters($feed_id, $owner_uid, $action_id = false) { + $filters = array(); + + $cat_id = (int)getFeedCategory($feed_id); + + if ($cat_id == 0) + $null_cat_qpart = "cat_id IS NULL OR"; + else + $null_cat_qpart = ""; + + $result = db_query("SELECT * FROM ttrss_filters2 WHERE + owner_uid = $owner_uid AND enabled = true ORDER BY order_id, title"); + + $check_cats = join(",", array_merge( + getParentCategories($cat_id, $owner_uid), + array($cat_id))); + + while ($line = db_fetch_assoc($result)) { + $filter_id = $line["id"]; + + $result2 = db_query("SELECT + r.reg_exp, r.inverse, r.feed_id, r.cat_id, r.cat_filter, t.name AS type_name + FROM ttrss_filters2_rules AS r, + ttrss_filter_types AS t + WHERE + ($null_cat_qpart (cat_id IS NULL AND cat_filter = false) OR cat_id IN ($check_cats)) AND + (feed_id IS NULL OR feed_id = '$feed_id') AND + filter_type = t.id AND filter_id = '$filter_id'"); + + $rules = array(); + $actions = array(); + + while ($rule_line = db_fetch_assoc($result2)) { +# print_r($rule_line); + + $rule = array(); + $rule["reg_exp"] = $rule_line["reg_exp"]; + $rule["type"] = $rule_line["type_name"]; + $rule["inverse"] = sql_bool_to_bool($rule_line["inverse"]); + + array_push($rules, $rule); + } + + $result2 = db_query("SELECT a.action_param,t.name AS type_name + FROM ttrss_filters2_actions AS a, + ttrss_filter_actions AS t + WHERE + action_id = t.id AND filter_id = '$filter_id'"); + + while ($action_line = db_fetch_assoc($result2)) { +# print_r($action_line); + + $action = array(); + $action["type"] = $action_line["type_name"]; + $action["param"] = $action_line["action_param"]; + + array_push($actions, $action); + } + + + $filter = array(); + $filter["match_any_rule"] = sql_bool_to_bool($line["match_any_rule"]); + $filter["inverse"] = sql_bool_to_bool($line["inverse"]); + $filter["rules"] = $rules; + $filter["actions"] = $actions; + + if (count($rules) > 0 && count($actions) > 0) { + array_push($filters, $filter); + } + } + + return $filters; + } + + function get_score_pic($score) { + if ($score > 100) { + return "score_high.png"; + } else if ($score > 0) { + return "score_half_high.png"; + } else if ($score < -100) { + return "score_low.png"; + } else if ($score < 0) { + return "score_half_low.png"; + } else { + return "score_neutral.png"; + } + } + + function feed_has_icon($id) { + return is_file(ICONS_DIR . "/$id.ico") && filesize(ICONS_DIR . "/$id.ico") > 0; + } + + function init_plugins() { + PluginHost::getInstance()->load(PLUGINS, PluginHost::KIND_ALL); + + return true; + } + + function format_tags_string($tags, $id) { + if (!is_array($tags) || count($tags) == 0) { + return __("no tags"); + } else { + $maxtags = min(5, count($tags)); + $tags_str = ""; + + for ($i = 0; $i < $maxtags; $i++) { + $tags_str .= "" . $tags[$i] . ", "; + } + + $tags_str = mb_substr($tags_str, 0, mb_strlen($tags_str)-2); + + if (count($tags) > $maxtags) + $tags_str .= ", …"; + + return $tags_str; + } + } + + function format_article_labels($labels, $id) { + + if (!is_array($labels)) return ''; + + $labels_str = ""; + + foreach ($labels as $l) { + $labels_str .= sprintf("%s", + $l[2], $l[3], $l[1]); + } + + return $labels_str; + + } + + function format_article_note($id, $note, $allow_edit = true) { + + $str = "
    +
    ". + ($allow_edit ? __('(edit note)') : "")."
    $note
    "; + + return $str; + } + + + function get_feed_category($feed_cat, $parent_cat_id = false) { + if ($parent_cat_id) { + $parent_qpart = "parent_cat = '$parent_cat_id'"; + $parent_insert = "'$parent_cat_id'"; + } else { + $parent_qpart = "parent_cat IS NULL"; + $parent_insert = "NULL"; + } + + $result = db_query( + "SELECT id FROM ttrss_feed_categories + WHERE $parent_qpart AND title = '$feed_cat' AND owner_uid = ".$_SESSION["uid"]); + + if (db_num_rows($result) == 0) { + return false; + } else { + return db_fetch_result($result, 0, "id"); + } + } + + function add_feed_category($feed_cat, $parent_cat_id = false) { + + if (!$feed_cat) return false; + + db_query("BEGIN"); + + if ($parent_cat_id) { + $parent_qpart = "parent_cat = '$parent_cat_id'"; + $parent_insert = "'$parent_cat_id'"; + } else { + $parent_qpart = "parent_cat IS NULL"; + $parent_insert = "NULL"; + } + + $feed_cat = mb_substr($feed_cat, 0, 250); + + $result = db_query( + "SELECT id FROM ttrss_feed_categories + WHERE $parent_qpart AND title = '$feed_cat' AND owner_uid = ".$_SESSION["uid"]); + + if (db_num_rows($result) == 0) { + + $result = db_query( + "INSERT INTO ttrss_feed_categories (owner_uid,title,parent_cat) + VALUES ('".$_SESSION["uid"]."', '$feed_cat', $parent_insert)"); + + db_query("COMMIT"); + + return true; + } + + return false; + } + + function getArticleFeed($id) { + $result = db_query("SELECT feed_id FROM ttrss_user_entries + WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); + + if (db_num_rows($result) != 0) { + return db_fetch_result($result, 0, "feed_id"); + } else { + return 0; + } + } + + /** + * Fixes incomplete URLs by prepending "http://". + * Also replaces feed:// with http://, and + * prepends a trailing slash if the url is a domain name only. + * + * @param string $url Possibly incomplete URL + * + * @return string Fixed URL. + */ + function fix_url($url) { + + // support schema-less urls + if (strpos($url, '//') === 0) { + $url = 'https:' . $url; + } + + if (strpos($url, '://') === false) { + $url = 'http://' . $url; + } else if (substr($url, 0, 5) == 'feed:') { + $url = 'http:' . substr($url, 5); + } + + //prepend slash if the URL has no slash in it + // "http://www.example" -> "http://www.example/" + if (strpos($url, '/', strpos($url, ':') + 3) === false) { + $url .= '/'; + } + + if ($url != "http:///") + return $url; + else + return ''; + } + + function validate_feed_url($url) { + $parts = parse_url($url); + + return ($parts['scheme'] == 'http' || $parts['scheme'] == 'feed' || $parts['scheme'] == 'https'); + + } + + function get_article_enclosures($id) { + + $query = "SELECT * FROM ttrss_enclosures + WHERE post_id = '$id' AND content_url != ''"; + + $rv = array(); + + $result = db_query($query); + + if (db_num_rows($result) > 0) { + while ($line = db_fetch_assoc($result)) { + array_push($rv, $line); + } + } + + return $rv; + } + + /* function save_email_address($email) { + // FIXME: implement persistent storage of emails + + if (!$_SESSION['stored_emails']) + $_SESSION['stored_emails'] = array(); + + if (!in_array($email, $_SESSION['stored_emails'])) + array_push($_SESSION['stored_emails'], $email); + } */ + + + function get_feed_access_key($feed_id, $is_cat, $owner_uid = false) { + + if (!$owner_uid) $owner_uid = $_SESSION["uid"]; + + $sql_is_cat = bool_to_sql_bool($is_cat); + + $result = db_query("SELECT access_key FROM ttrss_access_keys + WHERE feed_id = '$feed_id' AND is_cat = $sql_is_cat + AND owner_uid = " . $owner_uid); + + if (db_num_rows($result) == 1) { + return db_fetch_result($result, 0, "access_key"); + } else { + $key = db_escape_string(uniqid(base_convert(rand(), 10, 36))); + + $result = db_query("INSERT INTO ttrss_access_keys + (access_key, feed_id, is_cat, owner_uid) + VALUES ('$key', '$feed_id', $sql_is_cat, '$owner_uid')"); + + return $key; + } + return false; + } + + function get_feeds_from_html($url, $content) + { + $url = fix_url($url); + $baseUrl = substr($url, 0, strrpos($url, '/') + 1); + + libxml_use_internal_errors(true); + + $doc = new DOMDocument(); + $doc->loadHTML($content); + $xpath = new DOMXPath($doc); + $entries = $xpath->query('/html/head/link[@rel="alternate" and '. + '(contains(@type,"rss") or contains(@type,"atom"))]|/html/head/link[@rel="feed"]'); + $feedUrls = array(); + foreach ($entries as $entry) { + if ($entry->hasAttribute('href')) { + $title = $entry->getAttribute('title'); + if ($title == '') { + $title = $entry->getAttribute('type'); + } + $feedUrl = rewrite_relative_url( + $baseUrl, $entry->getAttribute('href') + ); + $feedUrls[$feedUrl] = $title; + } + } + return $feedUrls; + } + + function is_html($content) { + return preg_match("/"; + + while ($line = db_fetch_assoc($result)) { + + $issel = ($line["caption"] == $value) ? "selected=\"1\"" : ""; + + print ""; + + } + +# print ""; + + print ""; + + + } + + function format_article_enclosures($id, $always_display_enclosures, + $article_content, $hide_images = false) { + + $result = get_article_enclosures($id); + $rv = ''; + + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_FORMAT_ENCLOSURES) as $plugin) { + $retval = $plugin->hook_format_enclosures($rv, $result, $id, $always_display_enclosures, $article_content, $hide_images); + if (is_array($retval)) { + $rv = $retval[0]; + $result = $retval[1]; + } else { + $rv = $retval; + } + } + + if ($rv === '' && !empty($result)) { + $entries_html = array(); + $entries = array(); + $entries_inline = array(); + + foreach ($result as $line) { + + $url = $line["content_url"]; + $ctype = $line["content_type"]; + $title = $line["title"]; + $width = $line["width"]; + $height = $line["height"]; + + if (!$ctype) $ctype = __("unknown type"); + + $filename = substr($url, strrpos($url, "/")+1); + + $player = format_inline_player($url, $ctype); + + if ($player) array_push($entries_inline, $player); + +# $entry .= " " . +# $filename . " (" . $ctype . ")" . ""; + + $entry = "
    $filename ($ctype)
    "; + + array_push($entries_html, $entry); + + $entry = array(); + + $entry["type"] = $ctype; + $entry["filename"] = $filename; + $entry["url"] = $url; + $entry["title"] = $title; + $entry["width"] = $width; + $entry["height"] = $height; + + array_push($entries, $entry); + } + + if ($_SESSION['uid'] && !get_pref("STRIP_IMAGES") && !$_SESSION["bw_limit"]) { + if ($always_display_enclosures || + !preg_match("/get_hooks(PluginHost::HOOK_RENDER_ENCLOSURE) as $plugin) + $retval = $plugin->hook_render_enclosure($entry, $hide_images); + + + if ($retval) { + $rv .= $retval; + } else { + + if (preg_match("/image/", $entry["type"]) || + preg_match("/\.(jpg|png|gif|bmp)/i", $entry["filename"])) { + + if (!$hide_images) { + $encsize = ''; + if ($entry['height'] > 0) + $encsize .= ' height="' . intval($entry['width']) . '"'; + if ($entry['width'] > 0) + $encsize .= ' width="' . intval($entry['height']) . '"'; + $rv .= "

    \"".htmlspecialchars($entry["filename"])."\"

    "; + } else { + $rv .= "

    " .htmlspecialchars($entry["url"]) . "

    "; + } + + if ($entry['title']) { + $rv.= "
    ${entry['title']}
    "; + } + } + } + } + } + } + + if (count($entries_inline) > 0) { + $rv .= "
    "; + foreach ($entries_inline as $entry) { $rv .= $entry; }; + $rv .= "
    "; + } + + $rv .= ""; + } + + return $rv; + } + + function getLastArticleId() { + $result = db_query("SELECT ref_id AS id FROM ttrss_user_entries + WHERE owner_uid = " . $_SESSION["uid"] . " ORDER BY ref_id DESC LIMIT 1"); + + if (db_num_rows($result) == 1) { + return db_fetch_result($result, 0, "id"); + } else { + return -1; + } + } + + function build_url($parts) { + return $parts['scheme'] . "://" . $parts['host'] . $parts['path']; + } + + /** + * Converts a (possibly) relative URL to a absolute one. + * + * @param string $url Base URL (i.e. from where the document is) + * @param string $rel_url Possibly relative URL in the document + * + * @return string Absolute URL + */ + function rewrite_relative_url($url, $rel_url) { + if (strpos($rel_url, ":") !== false) { + return $rel_url; + } else if (strpos($rel_url, "://") !== false) { + return $rel_url; + } else if (strpos($rel_url, "//") === 0) { + # protocol-relative URL (rare but they exist) + return $rel_url; + } else if (strpos($rel_url, "/") === 0) + { + $parts = parse_url($url); + $parts['path'] = $rel_url; + + return build_url($parts); + + } else { + $parts = parse_url($url); + if (!isset($parts['path'])) { + $parts['path'] = '/'; + } + $dir = $parts['path']; + if (substr($dir, -1) !== '/') { + $dir = dirname($parts['path']); + $dir !== '/' && $dir .= '/'; + } + $parts['path'] = $dir . $rel_url; + + return build_url($parts); + } + } + + function cleanup_tags($days = 14, $limit = 1000) { + + if (DB_TYPE == "pgsql") { + $interval_query = "date_updated < NOW() - INTERVAL '$days days'"; + } else if (DB_TYPE == "mysql") { + $interval_query = "date_updated < DATE_SUB(NOW(), INTERVAL $days DAY)"; + } + + $tags_deleted = 0; + + while ($limit > 0) { + $limit_part = 500; + + $query = "SELECT ttrss_tags.id AS id + FROM ttrss_tags, ttrss_user_entries, ttrss_entries + WHERE post_int_id = int_id AND $interval_query AND + ref_id = ttrss_entries.id AND tag_cache != '' LIMIT $limit_part"; + + $result = db_query($query); + + $ids = array(); + + while ($line = db_fetch_assoc($result)) { + array_push($ids, $line['id']); + } + + if (count($ids) > 0) { + $ids = join(",", $ids); + + $tmp_result = db_query("DELETE FROM ttrss_tags WHERE id IN ($ids)"); + $tags_deleted += db_affected_rows($tmp_result); + } else { + break; + } + + $limit -= $limit_part; + } + + return $tags_deleted; + } + + function print_user_stylesheet() { + $value = get_pref('USER_STYLESHEET'); + + if ($value) { + print ""; + } + + } + + function filter_to_sql($filter, $owner_uid) { + $query = array(); + + if (DB_TYPE == "pgsql") + $reg_qpart = "~"; + else + $reg_qpart = "REGEXP"; + + foreach ($filter["rules"] AS $rule) { + $rule['reg_exp'] = str_replace('/', '\/', $rule["reg_exp"]); + $regexp_valid = preg_match('/' . $rule['reg_exp'] . '/', + $rule['reg_exp']) !== FALSE; + + if ($regexp_valid) { + + $rule['reg_exp'] = db_escape_string($rule['reg_exp']); + + switch ($rule["type"]) { + case "title": + $qpart = "LOWER(ttrss_entries.title) $reg_qpart LOWER('". + $rule['reg_exp'] . "')"; + break; + case "content": + $qpart = "LOWER(ttrss_entries.content) $reg_qpart LOWER('". + $rule['reg_exp'] . "')"; + break; + case "both": + $qpart = "LOWER(ttrss_entries.title) $reg_qpart LOWER('". + $rule['reg_exp'] . "') OR LOWER(" . + "ttrss_entries.content) $reg_qpart LOWER('" . $rule['reg_exp'] . "')"; + break; + case "tag": + $qpart = "LOWER(ttrss_user_entries.tag_cache) $reg_qpart LOWER('". + $rule['reg_exp'] . "')"; + break; + case "link": + $qpart = "LOWER(ttrss_entries.link) $reg_qpart LOWER('". + $rule['reg_exp'] . "')"; + break; + case "author": + $qpart = "LOWER(ttrss_entries.author) $reg_qpart LOWER('". + $rule['reg_exp'] . "')"; + break; + } + + if (isset($rule['inverse'])) $qpart = "NOT ($qpart)"; + + if (isset($rule["feed_id"]) && $rule["feed_id"] > 0) { + $qpart .= " AND feed_id = " . db_escape_string($rule["feed_id"]); + } + + if (isset($rule["cat_id"])) { + + if ($rule["cat_id"] > 0) { + $children = getChildCategories($rule["cat_id"], $owner_uid); + array_push($children, $rule["cat_id"]); + + $children = join(",", $children); + + $cat_qpart = "cat_id IN ($children)"; + } else { + $cat_qpart = "cat_id IS NULL"; + } + + $qpart .= " AND $cat_qpart"; + } + + $qpart .= " AND feed_id IS NOT NULL"; + + array_push($query, "($qpart)"); + + } + } + + if (count($query) > 0) { + $fullquery = "(" . join($filter["match_any_rule"] ? "OR" : "AND", $query) . ")"; + } else { + $fullquery = "(false)"; + } + + if ($filter['inverse']) $fullquery = "(NOT $fullquery)"; + + return $fullquery; + } + + if (!function_exists('gzdecode')) { + function gzdecode($string) { // no support for 2nd argument + return file_get_contents('compress.zlib://data:who/cares;base64,'. + base64_encode($string)); + } + } + + function get_random_bytes($length) { + if (function_exists('openssl_random_pseudo_bytes')) { + return openssl_random_pseudo_bytes($length); + } else { + $output = ""; + + for ($i = 0; $i < $length; $i++) + $output .= chr(mt_rand(0, 255)); + + return $output; + } + } + + function read_stdin() { + $fp = fopen("php://stdin", "r"); + + if ($fp) { + $line = trim(fgets($fp)); + fclose($fp); + return $line; + } + + return null; + } + + function tmpdirname($path, $prefix) { + // Use PHP's tmpfile function to create a temporary + // directory name. Delete the file and keep the name. + $tempname = tempnam($path,$prefix); + if (!$tempname) + return false; + + if (!unlink($tempname)) + return false; + + return $tempname; + } + + function getFeedCategory($feed) { + $result = db_query("SELECT cat_id FROM ttrss_feeds + WHERE id = '$feed'"); + + if (db_num_rows($result) > 0) { + return db_fetch_result($result, 0, "cat_id"); + } else { + return false; + } + + } + + function implements_interface($class, $interface) { + return in_array($interface, class_implements($class)); + } + + function geturl($url, $depth = 0, $nobody = true){ + + if ($depth == 20) return $url; + + if (!function_exists('curl_init')) + return user_error('CURL Must be installed for geturl function to work. Ask your host to enable it or uncomment extension=php_curl.dll in php.ini', E_USER_ERROR); + + $curl = curl_init(); + $header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,"; + $header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"; + $header[] = "Cache-Control: max-age=0"; + $header[] = "Connection: keep-alive"; + $header[] = "Keep-Alive: 300"; + $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"; + $header[] = "Accept-Language: en-us,en;q=0.5"; + $header[] = "Pragma: "; + + curl_setopt($curl, CURLOPT_URL, $url); + curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0 Firefox/5.0'); + curl_setopt($curl, CURLOPT_HTTPHEADER, $header); + curl_setopt($curl, CURLOPT_HEADER, true); + curl_setopt($curl, CURLOPT_NOBODY, $nobody); + curl_setopt($curl, CURLOPT_REFERER, $url); + curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate'); + curl_setopt($curl, CURLOPT_AUTOREFERER, true); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + //curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); //CURLOPT_FOLLOWLOCATION Disabled... + curl_setopt($curl, CURLOPT_TIMEOUT, 60); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); + + if (defined('_CURL_HTTP_PROXY')) { + curl_setopt($curl, CURLOPT_PROXY, _CURL_HTTP_PROXY); + } + + $html = curl_exec($curl); + + $status = curl_getinfo($curl); + + if($status['http_code']!=200){ + + // idiot site not allowing http head + if($status['http_code'] == 405) { + curl_close($curl); + return geturl($url, $depth +1, false); + } + + if($status['http_code'] == 301 || $status['http_code'] == 302) { + curl_close($curl); + list($header) = explode("\r\n\r\n", $html, 2); + $matches = array(); + preg_match("/(Location:|URI:)[^(\n)]*/", $header, $matches); + $url = trim(str_replace($matches[1],"",$matches[0])); + $url_parsed = parse_url($url); + return (isset($url_parsed))? geturl($url, $depth + 1):''; + } + + global $fetch_last_error; + + $fetch_last_error = curl_errno($curl) . " " . curl_error($curl); + curl_close($curl); + +# $oline=''; +# foreach($status as $key=>$eline){$oline.='['.$key.']'.$eline.' ';} +# $line =$oline." \r\n ".$url."\r\n-----------------\r\n"; +# $handle = @fopen('./curl.error.log', 'a'); +# fwrite($handle, $line); + return FALSE; + } + curl_close($curl); + return $url; + } + + function get_minified_js($files) { + require_once 'lib/jshrink/Minifier.php'; + + $rv = ''; + + foreach ($files as $js) { + if (!isset($_GET['debug'])) { + $cached_file = CACHE_DIR . "/js/".basename($js).".js"; + + if (file_exists($cached_file) && is_readable($cached_file) && filemtime($cached_file) >= filemtime("js/$js.js")) { + + list($header, $contents) = explode("\n", file_get_contents($cached_file), 2); + + if ($header && $contents) { + list($htag, $hversion) = explode(":", $header); + + if ($htag == "tt-rss" && $hversion == VERSION) { + $rv .= $contents; + continue; + } + } + } + + $minified = JShrink\Minifier::minify(file_get_contents("js/$js.js")); + file_put_contents($cached_file, "tt-rss:" . VERSION . "\n" . $minified); + $rv .= $minified; + + } else { + $rv .= file_get_contents("js/$js.js"); // no cache in debug mode + } + } + + return $rv; + } + + function stylesheet_tag($filename) { + $timestamp = filemtime($filename); + + return "\n"; + } + + function javascript_tag($filename) { + $query = ""; + + if (!(strpos($filename, "?") === FALSE)) { + $query = substr($filename, strpos($filename, "?")+1); + $filename = substr($filename, 0, strpos($filename, "?")); + } + + $timestamp = filemtime($filename); + + if ($query) $timestamp .= "&$query"; + + return "\n"; + } + + function calculate_dep_timestamp() { + $files = array_merge(glob("js/*.js"), glob("css/*.css")); + + $max_ts = -1; + + foreach ($files as $file) { + if (filemtime($file) > $max_ts) $max_ts = filemtime($file); + } + + return $max_ts; + } + + function T_js_decl($s1, $s2) { + if ($s1 && $s2) { + $s1 = preg_replace("/\n/", "", $s1); + $s2 = preg_replace("/\n/", "", $s2); + + $s1 = preg_replace("/\"/", "\\\"", $s1); + $s2 = preg_replace("/\"/", "\\\"", $s2); + + return "T_messages[\"$s1\"] = \"$s2\";\n"; + } + } + + function init_js_translations() { + + print 'var T_messages = new Object(); + + function __(msg) { + if (T_messages[msg]) { + return T_messages[msg]; + } else { + return msg; + } + } + + function ngettext(msg1, msg2, n) { + return __((parseInt(n) > 1) ? msg2 : msg1); + }'; + + $l10n = _get_reader(); + + for ($i = 0; $i < $l10n->total; $i++) { + $orig = $l10n->get_original_string($i); + if(strpos($orig, "\000") !== FALSE) { // Plural forms + $key = explode(chr(0), $orig); + print T_js_decl($key[0], _ngettext($key[0], $key[1], 1)); // Singular + print T_js_decl($key[1], _ngettext($key[0], $key[1], 2)); // Plural + } else { + $translation = __($orig); + print T_js_decl($orig, $translation); + } + } + } + + function label_to_feed_id($label) { + return LABEL_BASE_INDEX - 1 - abs($label); + } + + function feed_to_label_id($feed) { + return LABEL_BASE_INDEX - 1 + abs($feed); + } + + function get_theme_path($theme) { + $check = "themes/$theme"; + if (file_exists($check)) return $check; + + $check = "themes.local/$theme"; + if (file_exists($check)) return $check; + } + + function theme_valid($theme) { + if ($theme == "default.css" || $theme == "night.css") return true; // needed for array_filter + $file = "themes/" . basename($theme); + + if (!file_exists($file)) $file = "themes.local/" . basename($theme); + + if (file_exists($file) && is_readable($file)) { + $fh = fopen($file, "r"); + + if ($fh) { + $header = fgets($fh); + fclose($fh); + + return strpos($header, "supports-version:" . VERSION_STATIC) !== FALSE; + } + } + + return false; + } + + function error_json($code) { + require_once "errors.php"; + + @$message = $ERRORS[$code]; + + return json_encode(array("error" => + array("code" => $code, "message" => $message))); + + } + + function abs_to_rel_path($dir) { + $tmp = str_replace(dirname(__DIR__), "", $dir); + + if (strlen($tmp) > 0 && substr($tmp, 0, 1) == "/") $tmp = substr($tmp, 1); + + return $tmp; + } +?> diff --git a/include/labels.php b/include/labels.php new file mode 100644 index 0000000000..4149864b3b --- /dev/null +++ b/include/labels.php @@ -0,0 +1,201 @@ + 0) { + $label_cache = db_fetch_result($result, 0, "label_cache"); + + if ($label_cache) { + $label_cache = json_decode($label_cache, true); + + if ($label_cache["no-labels"] == 1) + return $rv; + else + return $label_cache; + } + } + + $result = db_query( + "SELECT DISTINCT label_id,caption,fg_color,bg_color + FROM ttrss_labels2, ttrss_user_labels2 + WHERE id = label_id + AND article_id = '$id' + AND owner_uid = ". $owner_uid . " + ORDER BY caption"); + + while ($line = db_fetch_assoc($result)) { + $rk = array(label_to_feed_id($line["label_id"]), + $line["caption"], $line["fg_color"], + $line["bg_color"]); + array_push($rv, $rk); + } + + if (count($rv) > 0) + label_update_cache($owner_uid, $id, $rv); + else + label_update_cache($owner_uid, $id, array("no-labels" => 1)); + + return $rv; + } + + + function label_find_caption($label, $owner_uid) { + $result = db_query( + "SELECT caption FROM ttrss_labels2 WHERE id = '$label' + AND owner_uid = '$owner_uid' LIMIT 1"); + + if (db_num_rows($result) == 1) { + return db_fetch_result($result, 0, "caption"); + } else { + return ""; + } + } + + function get_all_labels($owner_uid) { + $rv = array(); + + $result = db_query("SELECT fg_color, bg_color, caption FROM ttrss_labels2 WHERE owner_uid = " . $owner_uid); + + while ($line = db_fetch_assoc($result)) { + array_push($rv, $line); + } + + return $rv; + } + + function label_update_cache($owner_uid, $id, $labels = false, $force = false) { + + if ($force) + label_clear_cache($id); + + if (!$labels) + $labels = get_article_labels($id); + + $labels = db_escape_string(json_encode($labels)); + + db_query("UPDATE ttrss_user_entries SET + label_cache = '$labels' WHERE ref_id = '$id' AND owner_uid = '$owner_uid'"); + + } + + function label_clear_cache($id) { + + db_query("UPDATE ttrss_user_entries SET + label_cache = '' WHERE ref_id = '$id'"); + + } + + function label_remove_article($id, $label, $owner_uid) { + + $label_id = label_find_id($label, $owner_uid); + + if (!$label_id) return; + + db_query( + "DELETE FROM ttrss_user_labels2 + WHERE + label_id = '$label_id' AND + article_id = '$id'"); + + label_clear_cache($id); + } + + function label_add_article($id, $label, $owner_uid) { + + $label_id = label_find_id($label, $owner_uid); + + if (!$label_id) return; + + $result = db_query( + "SELECT + article_id FROM ttrss_labels2, ttrss_user_labels2 + WHERE + label_id = id AND + label_id = '$label_id' AND + article_id = '$id' AND owner_uid = '$owner_uid' + LIMIT 1"); + + if (db_num_rows($result) == 0) { + db_query("INSERT INTO ttrss_user_labels2 + (label_id, article_id) VALUES ('$label_id', '$id')"); + } + + label_clear_cache($id); + + } + + function label_remove($id, $owner_uid) { + if (!$owner_uid) $owner_uid = $_SESSION["uid"]; + + db_query("BEGIN"); + + $result = db_query("SELECT caption FROM ttrss_labels2 + WHERE id = '$id'"); + + $caption = db_fetch_result($result, 0, "caption"); + + $result = db_query("DELETE FROM ttrss_labels2 WHERE id = '$id' + AND owner_uid = " . $owner_uid); + + if (db_affected_rows($result) != 0 && $caption) { + + /* Remove access key for the label */ + + $ext_id = LABEL_BASE_INDEX - 1 - $id; + + db_query("DELETE FROM ttrss_access_keys WHERE + feed_id = '$ext_id' AND owner_uid = $owner_uid"); + + /* Remove cached data */ + + db_query("UPDATE ttrss_user_entries SET label_cache = '' + WHERE label_cache LIKE '%$caption%' AND owner_uid = " . $owner_uid); + + } + + db_query("COMMIT"); + } + + function label_create($caption, $fg_color = '', $bg_color = '', $owner_uid = false) { + + if (!$owner_uid) $owner_uid = $_SESSION['uid']; + + db_query("BEGIN"); + + $result = false; + + $result = db_query("SELECT id FROM ttrss_labels2 + WHERE caption = '$caption' AND owner_uid = $owner_uid"); + + if (db_num_rows($result) == 0) { + $result = db_query( + "INSERT INTO ttrss_labels2 (caption,owner_uid,fg_color,bg_color) + VALUES ('$caption', '$owner_uid', '$fg_color', '$bg_color')"); + + $result = db_affected_rows($result) != 0; + } + + db_query("COMMIT"); + + return $result; + } + +?> diff --git a/include/login_form.php b/include/login_form.php new file mode 100644 index 0000000000..0000bc2f64 --- /dev/null +++ b/include/login_form.php @@ -0,0 +1,261 @@ + + + + Tiny Tiny RSS : Login + + + + + + + + + + + + + + + + + +
    + + + +
    + +
    + +
    + +
    + +
    + +
    + + +
    + + " /> +
    + + +
    + + "/> + + + + +
    + + +
    + + + + +
    + +
    + + + +
    + +
    + +
    + + 0) { ?> + +
    + + + +
    + + + +
    + + + + +
    + +
    + + +
    + + + +
    + + diff --git a/include/rssfuncs.php b/include/rssfuncs.php new file mode 100644 index 0000000000..6eb4e6d980 --- /dev/null +++ b/include/rssfuncs.php @@ -0,0 +1,1471 @@ + $v) { + if ($k != "feed" && isset($v)) { + $tmp .= sha1("$k:" . (is_array($v) ? implode(",", $v) : $v)); + } + } + + return sha1(implode(",", $pluginhost->get_plugin_names()) . $tmp); + } + + function update_feedbrowser_cache() { + + $result = db_query("SELECT feed_url, site_url, title, COUNT(id) AS subscribers + FROM ttrss_feeds WHERE (SELECT COUNT(id) = 0 FROM ttrss_feeds AS tf + WHERE tf.feed_url = ttrss_feeds.feed_url + AND (private IS true OR auth_login != '' OR auth_pass != '' OR feed_url LIKE '%:%@%/%')) + GROUP BY feed_url, site_url, title ORDER BY subscribers DESC LIMIT 1000"); + + db_query("BEGIN"); + + db_query("DELETE FROM ttrss_feedbrowser_cache"); + + $count = 0; + + while ($line = db_fetch_assoc($result)) { + $subscribers = db_escape_string($line["subscribers"]); + $feed_url = db_escape_string($line["feed_url"]); + $title = db_escape_string($line["title"]); + $site_url = db_escape_string($line["site_url"]); + + $tmp_result = db_query("SELECT subscribers FROM + ttrss_feedbrowser_cache WHERE feed_url = '$feed_url'"); + + if (db_num_rows($tmp_result) == 0) { + + db_query("INSERT INTO ttrss_feedbrowser_cache + (feed_url, site_url, title, subscribers) VALUES ('$feed_url', + '$site_url', '$title', '$subscribers')"); + + ++$count; + + } + + } + + db_query("COMMIT"); + + return $count; + + } + + + /** + * Update a feed batch. + * Used by daemons to update n feeds by run. + * Only update feed needing a update, and not being processed + * by another process. + * + * @param mixed $link Database link + * @param integer $limit Maximum number of feeds in update batch. Default to DAEMON_FEED_LIMIT. + * @param boolean $from_http Set to true if you call this function from http to disable cli specific code. + * @param boolean $debug Set to false to disable debug output. Default to true. + * @return void + */ + function update_daemon_common($limit = DAEMON_FEED_LIMIT, $from_http = false, $debug = true) { + // Process all other feeds using last_updated and interval parameters + + $schema_version = get_schema_version(); + + if ($schema_version != SCHEMA_VERSION) { + die("Schema version is wrong, please upgrade the database.\n"); + } + + define('PREFS_NO_CACHE', true); + + // Test if the user has loggued in recently. If not, it does not update its feeds. + if (!SINGLE_USER_MODE && DAEMON_UPDATE_LOGIN_LIMIT > 0) { + if (DB_TYPE == "pgsql") { + $login_thresh_qpart = "AND ttrss_users.last_login >= NOW() - INTERVAL '".DAEMON_UPDATE_LOGIN_LIMIT." days'"; + } else { + $login_thresh_qpart = "AND ttrss_users.last_login >= DATE_SUB(NOW(), INTERVAL ".DAEMON_UPDATE_LOGIN_LIMIT." DAY)"; + } + } else { + $login_thresh_qpart = ""; + } + + // Test if the feed need a update (update interval exceeded). + if (DB_TYPE == "pgsql") { + $update_limit_qpart = "AND (( + ttrss_feeds.update_interval = 0 + AND ttrss_user_prefs.value != '-1' + AND ttrss_feeds.last_updated < NOW() - CAST((ttrss_user_prefs.value || ' minutes') AS INTERVAL) + ) OR ( + ttrss_feeds.update_interval > 0 + AND ttrss_feeds.last_updated < NOW() - CAST((ttrss_feeds.update_interval || ' minutes') AS INTERVAL) + ) OR (ttrss_feeds.last_updated IS NULL + AND ttrss_user_prefs.value != '-1') + OR (last_updated = '1970-01-01 00:00:00' + AND ttrss_user_prefs.value != '-1'))"; + } else { + $update_limit_qpart = "AND (( + ttrss_feeds.update_interval = 0 + AND ttrss_user_prefs.value != '-1' + AND ttrss_feeds.last_updated < DATE_SUB(NOW(), INTERVAL CONVERT(ttrss_user_prefs.value, SIGNED INTEGER) MINUTE) + ) OR ( + ttrss_feeds.update_interval > 0 + AND ttrss_feeds.last_updated < DATE_SUB(NOW(), INTERVAL ttrss_feeds.update_interval MINUTE) + ) OR (ttrss_feeds.last_updated IS NULL + AND ttrss_user_prefs.value != '-1') + OR (last_updated = '1970-01-01 00:00:00' + AND ttrss_user_prefs.value != '-1'))"; + } + + // Test if feed is currently being updated by another process. + if (DB_TYPE == "pgsql") { + $updstart_thresh_qpart = "AND (ttrss_feeds.last_update_started IS NULL OR ttrss_feeds.last_update_started < NOW() - INTERVAL '10 minutes')"; + } else { + $updstart_thresh_qpart = "AND (ttrss_feeds.last_update_started IS NULL OR ttrss_feeds.last_update_started < DATE_SUB(NOW(), INTERVAL 10 MINUTE))"; + } + + // Test if there is a limit to number of updated feeds + $query_limit = ""; + if($limit) $query_limit = sprintf("LIMIT %d", $limit); + + $query = "SELECT DISTINCT ttrss_feeds.feed_url, ttrss_feeds.last_updated + FROM + ttrss_feeds, ttrss_users, ttrss_user_prefs + WHERE + ttrss_feeds.owner_uid = ttrss_users.id + AND ttrss_user_prefs.profile IS NULL + AND ttrss_users.id = ttrss_user_prefs.owner_uid + AND ttrss_user_prefs.pref_name = 'DEFAULT_UPDATE_INTERVAL' + $login_thresh_qpart $update_limit_qpart + $updstart_thresh_qpart + ORDER BY last_updated $query_limit"; + + // We search for feed needing update. + $result = db_query($query); + + if($debug) _debug(sprintf("Scheduled %d feeds to update...", db_num_rows($result))); + + // Here is a little cache magic in order to minimize risk of double feed updates. + $feeds_to_update = array(); + while ($line = db_fetch_assoc($result)) { + array_push($feeds_to_update, db_escape_string($line['feed_url'])); + } + + // We update the feed last update started date before anything else. + // There is no lag due to feed contents downloads + // It prevent an other process to update the same feed. + + if(count($feeds_to_update) > 0) { + $feeds_quoted = array(); + + foreach ($feeds_to_update as $feed) { + array_push($feeds_quoted, "'" . db_escape_string($feed) . "'"); + } + + db_query(sprintf("UPDATE ttrss_feeds SET last_update_started = NOW() + WHERE feed_url IN (%s)", implode(',', $feeds_quoted))); + } + + $nf = 0; + $bstarted = microtime(true); + + // For each feed, we call the feed update function. + foreach ($feeds_to_update as $feed) { + if($debug) _debug("Base feed: $feed"); + + //update_rss_feed($line["id"], true); + + // since we have the data cached, we can deal with other feeds with the same url + + $tmp_result = db_query("SELECT DISTINCT ttrss_feeds.id,last_updated,ttrss_feeds.owner_uid + FROM ttrss_feeds, ttrss_users, ttrss_user_prefs WHERE + ttrss_user_prefs.owner_uid = ttrss_feeds.owner_uid AND + ttrss_users.id = ttrss_user_prefs.owner_uid AND + ttrss_user_prefs.pref_name = 'DEFAULT_UPDATE_INTERVAL' AND + ttrss_user_prefs.profile IS NULL AND + feed_url = '".db_escape_string($feed)."' AND + (ttrss_feeds.update_interval > 0 OR + ttrss_user_prefs.value != '-1') + $login_thresh_qpart + ORDER BY ttrss_feeds.id $query_limit"); + + if (db_num_rows($tmp_result) > 0) { + $rss = false; + + while ($tline = db_fetch_assoc($tmp_result)) { + if($debug) _debug(" => " . $tline["last_updated"] . ", " . $tline["id"] . " " . $tline["owner_uid"]); + + $fstarted = microtime(true); + $rss = update_rss_feed($tline["id"], true, false); + _debug_suppress(false); + + _debug(sprintf(" %.4f (sec)", microtime(true) - $fstarted)); + + ++$nf; + } + } + } + + if ($nf > 0) { + _debug(sprintf("Processed %d feeds in %.4f (sec), %.4f (sec/feed avg)", $nf, + microtime(true) - $bstarted, (microtime(true) - $bstarted) / $nf)); + } + + require_once "digest.php"; + + // Send feed digests by email if needed. + send_headlines_digests($debug); + + return $nf; + + } // function update_daemon_common + + // this is used when subscribing + function set_basic_feed_info($feed) { + + $feed = db_escape_string($feed); + + $result = db_query("SELECT feed_url,auth_pass,auth_pass_encrypted + FROM ttrss_feeds WHERE id = '$feed'"); + + $auth_pass_encrypted = sql_bool_to_bool(db_fetch_result($result, + 0, "auth_pass_encrypted")); + + $auth_login = db_fetch_result($result, 0, "auth_login"); + $auth_pass = db_fetch_result($result, 0, "auth_pass"); + + if ($auth_pass_encrypted) { + require_once "crypt.php"; + $auth_pass = decrypt_string($auth_pass); + } + + $fetch_url = db_fetch_result($result, 0, "feed_url"); + + $feed_data = fetch_file_contents($fetch_url, false, + $auth_login, $auth_pass, false, + FEED_FETCH_TIMEOUT_TIMEOUT, + 0); + + global $fetch_curl_used; + + if (!$fetch_curl_used) { + $tmp = @gzdecode($feed_data); + + if ($tmp) $feed_data = $tmp; + } + + $feed_data = trim($feed_data); + + $rss = new FeedParser($feed_data); + $rss->init(); + + if (!$rss->error()) { + + $result = db_query("SELECT title, site_url FROM ttrss_feeds WHERE id = '$feed'"); + + $registered_title = db_fetch_result($result, 0, "title"); + $orig_site_url = db_fetch_result($result, 0, "site_url"); + + $site_url = db_escape_string(mb_substr(rewrite_relative_url($fetch_url, $rss->get_link()), 0, 245)); + $feed_title = db_escape_string(mb_substr($rss->get_title(), 0, 199)); + + if ($feed_title && (!$registered_title || $registered_title == "[Unknown]")) { + db_query("UPDATE ttrss_feeds SET + title = '$feed_title' WHERE id = '$feed'"); + } + + if ($site_url && $orig_site_url != $site_url) { + db_query("UPDATE ttrss_feeds SET + site_url = '$site_url' WHERE id = '$feed'"); + } + } + } + + // ignore_daemon is not used + function update_rss_feed($feed, $ignore_daemon = false, $no_cache = false, $rss = false) { + + $debug_enabled = defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']; + + _debug_suppress(!$debug_enabled); + _debug("start", $debug_enabled); + + $result = db_query("SELECT title FROM ttrss_feeds + WHERE id = '$feed'"); + $title = db_fetch_result($result, 0, "title"); + + // feed was batch-subscribed or something, we need to get basic info + // this is not optimal currently as it fetches stuff separately TODO: optimize + if ($title == "[Unknown]") { + _debug("setting basic feed info for $feed..."); + set_basic_feed_info($feed); + } + + $result = db_query("SELECT id,update_interval,auth_login, + feed_url,auth_pass,cache_images, + mark_unread_on_update, owner_uid, + pubsub_state, auth_pass_encrypted, + (SELECT max(date_entered) FROM + ttrss_entries, ttrss_user_entries where ref_id = id AND feed_id = '$feed') AS last_article_timestamp + FROM ttrss_feeds WHERE id = '$feed'"); + + if (db_num_rows($result) == 0) { + _debug("feed $feed NOT FOUND/SKIPPED", $debug_enabled); + return false; + } + + $last_article_timestamp = @strtotime(db_fetch_result($result, 0, "last_article_timestamp")); + + if (defined('_DISABLE_HTTP_304')) + $last_article_timestamp = 0; + + $owner_uid = db_fetch_result($result, 0, "owner_uid"); + $mark_unread_on_update = sql_bool_to_bool(db_fetch_result($result, + 0, "mark_unread_on_update")); + $pubsub_state = db_fetch_result($result, 0, "pubsub_state"); + $auth_pass_encrypted = sql_bool_to_bool(db_fetch_result($result, + 0, "auth_pass_encrypted")); + + db_query("UPDATE ttrss_feeds SET last_update_started = NOW() + WHERE id = '$feed'"); + + $auth_login = db_fetch_result($result, 0, "auth_login"); + $auth_pass = db_fetch_result($result, 0, "auth_pass"); + + if ($auth_pass_encrypted) { + require_once "crypt.php"; + $auth_pass = decrypt_string($auth_pass); + } + + $cache_images = sql_bool_to_bool(db_fetch_result($result, 0, "cache_images")); + $fetch_url = db_fetch_result($result, 0, "feed_url"); + + $feed = db_escape_string($feed); + + $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(); + + if ($rss && is_object($rss) && get_class($rss) == "FeedParser") { + _debug("using previously initialized parser object"); + } else { + $rss_hash = false; + + $force_refetch = isset($_REQUEST["force_refetch"]); + + foreach ($pluginhost->get_hooks(PluginHost::HOOK_FETCH_FEED) as $plugin) { + $feed_data = $plugin->hook_fetch_feed($feed_data, $fetch_url, $owner_uid, $feed, $last_article_timestamp, $auth_login, $auth_pass); + } + + // try cache + if (!$feed_data && + file_exists($cache_filename) && + is_readable($cache_filename) && + !$auth_login && !$auth_pass && + filemtime($cache_filename) > time() - 30) { + + _debug("using local cache [$cache_filename].", $debug_enabled); + + @$feed_data = file_get_contents($cache_filename); + + if ($feed_data) { + $rss_hash = sha1($feed_data); + } + + } else { + _debug("local cache will not be used for this feed", $debug_enabled); + } + + // fetch feed from source + 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); + + $feed_data = fetch_file_contents($fetch_url, false, + $auth_login, $auth_pass, false, + $no_cache ? FEED_FETCH_NO_CACHE_TIMEOUT : FEED_FETCH_TIMEOUT, + $force_refetch ? 0 : $last_article_timestamp); + + global $fetch_curl_used; + + if (!$fetch_curl_used) { + $tmp = @gzdecode($feed_data); + + if ($tmp) $feed_data = $tmp; + } + + $feed_data = trim($feed_data); + + _debug("fetch done.", $debug_enabled); + + // cache vanilla feed data for re-use + if ($feed_data && !$auth_pass && !$auth_login && is_writable(CACHE_DIR . "/simplepie")) { + $new_rss_hash = sha1($feed_data); + + if ($new_rss_hash != $rss_hash) { + _debug("saving $cache_filename", $debug_enabled); + @file_put_contents($cache_filename, $feed_data); + } + } + } + + if (!$feed_data) { + global $fetch_last_error; + global $fetch_last_error_code; + + _debug("unable to fetch: $fetch_last_error [$fetch_last_error_code]", $debug_enabled); + + $error_escaped = ''; + + // If-Modified-Since + if ($fetch_last_error_code != 304) { + $error_escaped = db_escape_string($fetch_last_error); + } else { + _debug("source claims data not modified, nothing to do.", $debug_enabled); + } + + db_query( + "UPDATE ttrss_feeds SET last_error = '$error_escaped', + last_updated = NOW() WHERE id = '$feed'"); + + return; + } + } + + foreach ($pluginhost->get_hooks(PluginHost::HOOK_FEED_FETCHED) as $plugin) { + $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 + // continuously failing on the same feed + //db_query("UPDATE ttrss_feeds SET last_updated = NOW() WHERE id = '$feed'"); + + if (!$rss) { + $rss = new FeedParser($feed_data); + $rss->init(); + } + +// print_r($rss); + + $feed = db_escape_string($feed); + + if (!$rss->error()) { + + // We use local pluginhost here because we need to load different per-user feed plugins + $pluginhost->run_hooks(PluginHost::HOOK_FEED_PARSED, "hook_feed_parsed", $rss); + + _debug("processing feed data...", $debug_enabled); + +// db_query("BEGIN"); + + if (DB_TYPE == "pgsql") { + $favicon_interval_qpart = "favicon_last_checked < NOW() - INTERVAL '12 hour'"; + } else { + $favicon_interval_qpart = "favicon_last_checked < DATE_SUB(NOW(), INTERVAL 12 HOUR)"; + } + + $result = db_query("SELECT owner_uid,favicon_avg_color, + (favicon_last_checked IS NULL OR $favicon_interval_qpart) AS + favicon_needs_check + FROM ttrss_feeds WHERE id = '$feed'"); + + $favicon_needs_check = sql_bool_to_bool(db_fetch_result($result, 0, + "favicon_needs_check")); + $favicon_avg_color = db_fetch_result($result, 0, "favicon_avg_color"); + + $owner_uid = db_fetch_result($result, 0, "owner_uid"); + + $site_url = db_escape_string(mb_substr(rewrite_relative_url($fetch_url, $rss->get_link()), 0, 245)); + + _debug("site_url: $site_url", $debug_enabled); + _debug("feed_title: " . $rss->get_title(), $debug_enabled); + + if ($favicon_needs_check || $force_refetch) { + + /* terrible hack: if we crash on floicon shit here, we won't check + * the icon avgcolor again (unless the icon got updated) */ + + $favicon_file = ICONS_DIR . "/$feed.ico"; + $favicon_modified = @filemtime($favicon_file); + + _debug("checking favicon...", $debug_enabled); + + check_feed_favicon($site_url, $feed); + $favicon_modified_new = @filemtime($favicon_file); + + if ($favicon_modified_new > $favicon_modified) + $favicon_avg_color = ''; + + if (file_exists($favicon_file) && function_exists("imagecreatefromstring") && $favicon_avg_color == '') { + require_once "colors.php"; + + db_query("UPDATE ttrss_feeds SET favicon_avg_color = 'fail' WHERE + id = '$feed'"); + + $favicon_color = db_escape_string( + calculate_avg_color($favicon_file)); + + $favicon_colorstring = ",favicon_avg_color = '".$favicon_color."'"; + } else if ($favicon_avg_color == 'fail') { + _debug("floicon failed on this file, not trying to recalculate avg color", $debug_enabled); + } + + db_query("UPDATE ttrss_feeds SET favicon_last_checked = NOW() + $favicon_colorstring + WHERE id = '$feed'"); + } + + _debug("loading filters & labels...", $debug_enabled); + + $filters = load_filters($feed, $owner_uid); + + _debug("" . count($filters) . " filters loaded.", $debug_enabled); + + $items = $rss->get_items(); + + if (!is_array($items)) { + _debug("no articles found.", $debug_enabled); + + db_query("UPDATE ttrss_feeds + SET last_updated = NOW(), last_error = '' WHERE id = '$feed'"); + + return; // no articles + } + + if ($pubsub_state != 2 && PUBSUBHUBBUB_ENABLED) { + + _debug("checking for PUSH hub...", $debug_enabled); + + $feed_hub_url = false; + + $links = $rss->get_links('hub'); + + if ($links && is_array($links)) { + foreach ($links as $l) { + $feed_hub_url = $l; + break; + } + } + + _debug("feed hub url: $feed_hub_url", $debug_enabled); + + $feed_self_url = $fetch_url; + + $links = $rss->get_links('self'); + + if ($links && is_array($links)) { + foreach ($links as $l) { + $feed_self_url = $l; + break; + } + } + + _debug("feed self url = $feed_self_url"); + + if ($feed_hub_url && $feed_self_url && function_exists('curl_init') && + !ini_get("open_basedir")) { + + require_once 'lib/pubsubhubbub/subscriber.php'; + + $callback_url = get_self_url_prefix() . + "/public.php?op=pubsub&id=$feed"; + + $s = new Subscriber($feed_hub_url, $callback_url); + + $rc = $s->subscribe($feed_self_url); + + _debug("feed hub url found, subscribe request sent. [rc=$rc]", $debug_enabled); + + db_query("UPDATE ttrss_feeds SET pubsub_state = 1 + WHERE id = '$feed'"); + } + } + + _debug("processing articles...", $debug_enabled); + + $tstart = time(); + + foreach ($items as $item) { + if ($_REQUEST['xdebug'] == 3) { + print_r($item); + } + + if (ini_get("max_execution_time") > 0 && time() - $tstart >= ini_get("max_execution_time") * 0.7) { + _debug("looks like there's too many articles to process at once, breaking out", $debug_enabled); + break; + } + + $entry_guid = $item->get_id(); + if (!$entry_guid) $entry_guid = $item->get_link(); + if (!$entry_guid) $entry_guid = make_guid_from_title($item->get_title()); + if (!$entry_guid) continue; + + $entry_guid = "$owner_uid,$entry_guid"; + + $entry_guid_hashed = db_escape_string('SHA1:' . sha1($entry_guid)); + + _debug("guid $entry_guid / $entry_guid_hashed", $debug_enabled); + + $entry_timestamp = ""; + + $entry_timestamp = $item->get_date(); + + _debug("orig date: " . $item->get_date(), $debug_enabled); + + if ($entry_timestamp == -1 || !$entry_timestamp || $entry_timestamp > time()) { + $entry_timestamp = time(); + } + + $entry_timestamp_fmt = strftime("%Y/%m/%d %H:%M:%S", $entry_timestamp); + + _debug("date $entry_timestamp [$entry_timestamp_fmt]", $debug_enabled); + +// $entry_title = html_entity_decode($item->get_title(), ENT_COMPAT, 'UTF-8'); +// $entry_title = decode_numeric_entities($entry_title); + $entry_title = $item->get_title(); + + $entry_link = rewrite_relative_url($site_url, $item->get_link()); + + _debug("title $entry_title", $debug_enabled); + _debug("link $entry_link", $debug_enabled); + + if (!$entry_title) $entry_title = date("Y-m-d H:i:s", $entry_timestamp);; + + $entry_content = $item->get_content(); + if (!$entry_content) $entry_content = $item->get_description(); + + if ($_REQUEST["xdebug"] == 2) { + print "content: "; + print $entry_content; + print "\n"; + } + + $entry_comments = $item->get_comments_url(); + $entry_author = $item->get_author(); + + $entry_guid = db_escape_string(mb_substr($entry_guid, 0, 245)); + + $entry_comments = db_escape_string(mb_substr(trim($entry_comments), 0, 245)); + $entry_author = db_escape_string(mb_substr(trim($entry_author), 0, 245)); + + $num_comments = (int) $item->get_comments_count(); + + _debug("author $entry_author", $debug_enabled); + _debug("num_comments: $num_comments", $debug_enabled); + _debug("looking for tags...", $debug_enabled); + + // parse entries into tags + + $additional_tags = array(); + + $additional_tags_src = $item->get_categories(); + + if (is_array($additional_tags_src)) { + foreach ($additional_tags_src as $tobj) { + array_push($additional_tags, $tobj); + } + } + + $entry_tags = array_unique($additional_tags); + + for ($i = 0; $i < count($entry_tags); $i++) + $entry_tags[$i] = mb_strtolower($entry_tags[$i], 'utf-8'); + + _debug("tags found: " . join(",", $entry_tags), $debug_enabled); + + _debug("done collecting data.", $debug_enabled); + + $result = db_query("SELECT id, content_hash, lang FROM ttrss_entries + WHERE guid = '".db_escape_string($entry_guid)."' OR guid = '$entry_guid_hashed'"); + + if (db_num_rows($result) != 0) { + $base_entry_id = db_fetch_result($result, 0, "id"); + $entry_stored_hash = db_fetch_result($result, 0, "content_hash"); + $article_labels = get_article_labels($base_entry_id, $owner_uid); + $entry_language = db_fetch_result($result, 0, "lang"); + } else { + $base_entry_id = false; + $entry_stored_hash = ""; + $article_labels = array(); + $entry_language = ""; + } + + $article = array("owner_uid" => $owner_uid, // read only + "guid" => $entry_guid, // read only + "guid_hashed" => $entry_guid_hashed, // read only + "title" => $entry_title, + "content" => $entry_content, + "link" => $entry_link, + "labels" => $article_labels, // current limitation: can add labels to article, can't remove them + "tags" => $entry_tags, + "author" => $entry_author, + "force_catchup" => false, // ugly hack for the time being + "score_modifier" => 0, // no previous value, plugin should recalculate score modifier based on content if needed + "language" => $entry_language, + "feed" => array("id" => $feed, + "fetch_url" => $fetch_url, + "site_url" => $site_url) + ); + + $entry_plugin_data = ""; + $entry_current_hash = calculate_article_hash($article, $pluginhost); + + _debug("article hash: $entry_current_hash [stored=$entry_stored_hash]", $debug_enabled); + + if ($entry_current_hash == $entry_stored_hash && !isset($_REQUEST["force_rehash"])) { + _debug("stored article seems up to date [IID: $base_entry_id], updating timestamp only", $debug_enabled); + + // we keep encountering the entry in feeds, so we need to + // update date_updated column so that we don't get horrible + // dupes when the entry gets purged and reinserted again e.g. + // in the case of SLOW SLOW OMG SLOW updating feeds + + $base_entry_id = db_fetch_result($result, 0, "id"); + + db_query("UPDATE ttrss_entries SET date_updated = NOW() + WHERE id = '$base_entry_id'"); + + // if we allow duplicate posts, we have to continue to + // create the user entries for this feed + if (!get_pref("ALLOW_DUPLICATE_POSTS", $owner_uid, false)) { + continue; + } + } + + _debug("hash differs, applying plugin filters:", $debug_enabled); + + foreach ($pluginhost->get_hooks(PluginHost::HOOK_ARTICLE_FILTER) as $plugin) { + _debug("... " . get_class($plugin), $debug_enabled); + + $start = microtime(true); + $article = $plugin->hook_article_filter($article); + + _debug("=== " . sprintf("%.4f (sec)", microtime(true) - $start), $debug_enabled); + + $entry_plugin_data .= mb_strtolower(get_class($plugin)) . ","; + } + + $entry_plugin_data = db_escape_string($entry_plugin_data); + + _debug("plugin data: $entry_plugin_data", $debug_enabled); + + // Workaround: 4-byte unicode requires utf8mb4 in MySQL. See https://tt-rss.org/forum/viewtopic.php?f=1&t=3377&p=20077#p20077 + if (DB_TYPE == "mysql") { + foreach ($article as $k => $v) { + + // i guess we'll have to take the risk of 4byte unicode labels & tags here + if (!is_array($article[$k])) { + $article[$k] = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $v); + } + } + } + + $entry_tags = $article["tags"]; + $entry_guid = db_escape_string($entry_guid); + $entry_title = db_escape_string($article["title"]); + $entry_author = db_escape_string($article["author"]); + $entry_link = db_escape_string($article["link"]); + $entry_content = $article["content"]; // escaped below + $entry_force_catchup = $article["force_catchup"]; + $article_labels = $article["labels"]; + $entry_score_modifier = (int) $article["score_modifier"]; + $entry_language = db_escape_string($article["language"]); + + if ($debug_enabled) { + _debug("article labels:", $debug_enabled); + print_r($article_labels); + } + + _debug("force catchup: $entry_force_catchup"); + + if ($cache_images && is_writable(CACHE_DIR . '/images')) + cache_images($entry_content, $site_url, $debug_enabled); + + $entry_content = db_escape_string($entry_content, false); + + db_query("BEGIN"); + + $result = db_query("SELECT id FROM ttrss_entries + WHERE (guid = '$entry_guid' OR guid = '$entry_guid_hashed')"); + + if (db_num_rows($result) == 0) { + + _debug("base guid [$entry_guid] not found", $debug_enabled); + + // base post entry does not exist, create it + + $result = db_query( + "INSERT INTO ttrss_entries + (title, + guid, + link, + updated, + content, + content_hash, + no_orig_date, + date_updated, + date_entered, + comments, + num_comments, + plugin_data, + lang, + author) + VALUES + ('$entry_title', + '$entry_guid_hashed', + '$entry_link', + '$entry_timestamp_fmt', + '$entry_content', + '$entry_current_hash', + false, + NOW(), + '$date_feed_processed', + '$entry_comments', + '$num_comments', + '$entry_plugin_data', + '$entry_language', + '$entry_author')"); + + } else { + $base_entry_id = db_fetch_result($result, 0, "id"); + } + + // now it should exist, if not - bad luck then + + $result = db_query("SELECT id FROM ttrss_entries + WHERE guid = '$entry_guid' OR guid = '$entry_guid_hashed'"); + + $entry_ref_id = 0; + $entry_int_id = 0; + + if (db_num_rows($result) == 1) { + + _debug("base guid found, checking for user record", $debug_enabled); + + $ref_id = db_fetch_result($result, 0, "id"); + $entry_ref_id = $ref_id; + + /* $stored_guid = db_fetch_result($result, 0, "guid"); + if ($stored_guid != $entry_guid_hashed) { + if ($debug_enabled) _debug("upgrading compat guid to hashed one", $debug_enabled); + + db_query("UPDATE ttrss_entries SET guid = '$entry_guid_hashed' WHERE + id = '$ref_id'"); + } */ + + // check for user post link to main table + + // do we allow duplicate posts with same GUID in different feeds? + if (get_pref("ALLOW_DUPLICATE_POSTS", $owner_uid, false)) { + $dupcheck_qpart = "AND (feed_id = '$feed' OR feed_id IS NULL)"; + } else { + $dupcheck_qpart = ""; + } + + /* Collect article tags here so we could filter by them: */ + + $article_filters = get_article_filters($filters, $entry_title, + $entry_content, $entry_link, $entry_timestamp, $entry_author, + $entry_tags); + + if ($debug_enabled) { + _debug("article filters: ", $debug_enabled); + if (count($article_filters) != 0) { + print_r($article_filters); + } + } + + if (find_article_filter($article_filters, "filter")) { + db_query("COMMIT"); // close transaction in progress + continue; + } + + $score = calculate_article_score($article_filters) + $entry_score_modifier; + + _debug("initial score: $score [including plugin modifier: $entry_score_modifier]", $debug_enabled); + + $query = "SELECT ref_id, int_id FROM ttrss_user_entries WHERE + ref_id = '$ref_id' AND owner_uid = '$owner_uid' + $dupcheck_qpart"; + +// if ($_REQUEST["xdebug"]) print "$query\n"; + + $result = db_query($query); + + // okay it doesn't exist - create user entry + if (db_num_rows($result) == 0) { + + _debug("user record not found, creating...", $debug_enabled); + + if ($score >= -500 && !find_article_filter($article_filters, 'catchup') && !$entry_force_catchup) { + $unread = 'true'; + $last_read_qpart = 'NULL'; + } else { + $unread = 'false'; + $last_read_qpart = 'NOW()'; + } + + if (find_article_filter($article_filters, 'mark') || $score > 1000) { + $marked = 'true'; + } else { + $marked = 'false'; + } + + if (find_article_filter($article_filters, 'publish')) { + $published = 'true'; + } else { + $published = 'false'; + } + + // N-grams + + /* if (DB_TYPE == "pgsql" and defined('_NGRAM_TITLE_DUPLICATE_THRESHOLD')) { + + $result = db_query("SELECT COUNT(*) AS similar FROM + ttrss_entries,ttrss_user_entries + WHERE ref_id = id AND updated >= NOW() - INTERVAL '7 day' + AND similarity(title, '$entry_title') >= "._NGRAM_TITLE_DUPLICATE_THRESHOLD." + AND owner_uid = $owner_uid"); + + $ngram_similar = db_fetch_result($result, 0, "similar"); + + _debug("N-gram similar results: $ngram_similar", $debug_enabled); + + if ($ngram_similar > 0) { + $unread = 'false'; + } + } */ + + $last_marked = ($marked == 'true') ? 'NOW()' : 'NULL'; + $last_published = ($published == 'true') ? 'NOW()' : 'NULL'; + + $result = db_query( + "INSERT INTO ttrss_user_entries + (ref_id, owner_uid, feed_id, unread, last_read, marked, + published, score, tag_cache, label_cache, uuid, + last_marked, last_published) + VALUES ('$ref_id', '$owner_uid', '$feed', $unread, + $last_read_qpart, $marked, $published, '$score', '', '', + '', $last_marked, $last_published)"); + + if (PUBSUBHUBBUB_HUB && $published == 'true') { + $rss_link = get_self_url_prefix() . + "/public.php?op=rss&id=-2&key=" . + get_feed_access_key(-2, false, $owner_uid); + + $p = new Publisher(PUBSUBHUBBUB_HUB); + + /* $pubsub_result = */ $p->publish_update($rss_link); + } + + $result = db_query( + "SELECT int_id FROM ttrss_user_entries WHERE + ref_id = '$ref_id' AND owner_uid = '$owner_uid' AND + feed_id = '$feed' LIMIT 1"); + + if (db_num_rows($result) == 1) { + $entry_int_id = db_fetch_result($result, 0, "int_id"); + } + } else { + _debug("user record FOUND", $debug_enabled); + + $entry_ref_id = db_fetch_result($result, 0, "ref_id"); + $entry_int_id = db_fetch_result($result, 0, "int_id"); + } + + _debug("RID: $entry_ref_id, IID: $entry_int_id", $debug_enabled); + + db_query("UPDATE ttrss_entries + SET title = '$entry_title', + content = '$entry_content', + content_hash = '$entry_current_hash', + updated = '$entry_timestamp_fmt', + num_comments = '$num_comments', + plugin_data = '$entry_plugin_data', + author = '$entry_author', + lang = '$entry_language' + WHERE id = '$ref_id'"); + + // update aux data + db_query("UPDATE ttrss_user_entries + SET score = '$score' WHERE ref_id = '$ref_id'"); + + if ($mark_unread_on_update) { + db_query("UPDATE ttrss_user_entries + SET last_read = null, unread = true WHERE ref_id = '$ref_id'"); + } + } + + db_query("COMMIT"); + + _debug("assigning labels [other]...", $debug_enabled); + + foreach ($article_labels as $label) { + label_add_article($entry_ref_id, $label[1], $owner_uid); + } + + _debug("assigning labels [filters]...", $debug_enabled); + + assign_article_to_label_filters($entry_ref_id, $article_filters, + $owner_uid, $article_labels); + + _debug("looking for enclosures...", $debug_enabled); + + // enclosures + + $enclosures = array(); + + $encs = $item->get_enclosures(); + + if (is_array($encs)) { + foreach ($encs as $e) { + $e_item = array( + $e->link, $e->type, $e->length, $e->title, $e->width, $e->height); + array_push($enclosures, $e_item); + } + } + + if ($debug_enabled) { + _debug("article enclosures:", $debug_enabled); + print_r($enclosures); + } + + db_query("BEGIN"); + +// debugging +// db_query("DELETE FROM ttrss_enclosures WHERE post_id = '$entry_ref_id'"); + + foreach ($enclosures as $enc) { + $enc_url = db_escape_string($enc[0]); + $enc_type = db_escape_string($enc[1]); + $enc_dur = db_escape_string($enc[2]); + $enc_title = db_escape_string($enc[3]); + $enc_width = intval($enc[4]); + $enc_height = intval($enc[5]); + + $result = db_query("SELECT id FROM ttrss_enclosures + WHERE content_url = '$enc_url' AND post_id = '$entry_ref_id'"); + + if (db_num_rows($result) == 0) { + db_query("INSERT INTO ttrss_enclosures + (content_url, content_type, title, duration, post_id, width, height) VALUES + ('$enc_url', '$enc_type', '$enc_title', '$enc_dur', '$entry_ref_id', $enc_width, $enc_height)"); + } + } + + db_query("COMMIT"); + + // check for manual tags (we have to do it here since they're loaded from filters) + + foreach ($article_filters as $f) { + if ($f["type"] == "tag") { + + $manual_tags = trim_array(explode(",", $f["param"])); + + foreach ($manual_tags as $tag) { + if (tag_is_valid($tag)) { + array_push($entry_tags, $tag); + } + } + } + } + + // Skip boring tags + + $boring_tags = trim_array(explode(",", mb_strtolower(get_pref( + 'BLACKLISTED_TAGS', $owner_uid, ''), 'utf-8'))); + + $filtered_tags = array(); + $tags_to_cache = array(); + + if ($entry_tags && is_array($entry_tags)) { + foreach ($entry_tags as $tag) { + if (array_search($tag, $boring_tags) === false) { + array_push($filtered_tags, $tag); + } + } + } + + $filtered_tags = array_unique($filtered_tags); + + if ($debug_enabled) { + _debug("filtered article tags:", $debug_enabled); + print_r($filtered_tags); + } + + // Save article tags in the database + + if (count($filtered_tags) > 0) { + + db_query("BEGIN"); + + foreach ($filtered_tags as $tag) { + + $tag = sanitize_tag($tag); + $tag = db_escape_string($tag); + + if (!tag_is_valid($tag)) continue; + + $result = db_query("SELECT id FROM ttrss_tags + WHERE tag_name = '$tag' AND post_int_id = '$entry_int_id' AND + owner_uid = '$owner_uid' LIMIT 1"); + + if ($result && db_num_rows($result) == 0) { + + db_query("INSERT INTO ttrss_tags + (owner_uid,tag_name,post_int_id) + VALUES ('$owner_uid','$tag', '$entry_int_id')"); + } + + array_push($tags_to_cache, $tag); + } + + /* update the cache */ + + $tags_to_cache = array_unique($tags_to_cache); + + $tags_str = db_escape_string(join(",", $tags_to_cache)); + + db_query("UPDATE ttrss_user_entries + SET tag_cache = '$tags_str' WHERE ref_id = '$entry_ref_id' + AND owner_uid = $owner_uid"); + + db_query("COMMIT"); + } + + _debug("article processed", $debug_enabled); + } + + _debug("purging feed...", $debug_enabled); + + purge_feed($feed, 0, $debug_enabled); + + db_query("UPDATE ttrss_feeds + SET last_updated = NOW(), last_error = '' WHERE id = '$feed'"); + +// db_query("COMMIT"); + + } else { + + $error_msg = db_escape_string(mb_substr($rss->error(), 0, 245)); + + _debug("fetch error: $error_msg", $debug_enabled); + + if (count($rss->errors()) > 1) { + foreach ($rss->errors() as $error) { + _debug("+ $error"); + } + } + + db_query( + "UPDATE ttrss_feeds SET last_error = '$error_msg', + last_updated = NOW() WHERE id = '$feed'"); + + unset($rss); + } + + _debug("done", $debug_enabled); + + return $rss; + } + + function cache_images($html, $site_url, $debug) { + libxml_use_internal_errors(true); + + $charset_hack = ' + + '; + + $doc = new DOMDocument(); + $doc->loadHTML($charset_hack . $html); + $xpath = new DOMXPath($doc); + + $entries = $xpath->query('(//img[@src])'); + + foreach ($entries as $entry) { + if ($entry->hasAttribute('src')) { + $src = rewrite_relative_url($site_url, $entry->getAttribute('src')); + + $local_filename = CACHE_DIR . "/images/" . sha1($src) . ".png"; + + if ($debug) _debug("cache_images: downloading: $src to $local_filename"); + + if (!file_exists($local_filename)) { + $file_content = fetch_file_contents($src); + + if ($file_content && strlen($file_content) > _MIN_CACHE_IMAGE_SIZE) { + file_put_contents($local_filename, $file_content); + } + } + } + } + } + + function expire_error_log($debug) { + if ($debug) _debug("Removing old error log entries..."); + + if (DB_TYPE == "pgsql") { + db_query("DELETE FROM ttrss_error_log + WHERE created_at < NOW() - INTERVAL '7 days'"); + } else { + db_query("DELETE FROM ttrss_error_log + WHERE created_at < DATE_SUB(NOW(), INTERVAL 7 DAY)"); + } + + } + + function expire_lock_files($debug) { + //if ($debug) _debug("Removing old lock files..."); + + $num_deleted = 0; + + if (is_writable(LOCK_DIRECTORY)) { + $files = glob(LOCK_DIRECTORY . "/*.lock"); + + if ($files) { + foreach ($files as $file) { + if (!file_is_locked(basename($file)) && time() - filemtime($file) > 86400*2) { + unlink($file); + ++$num_deleted; + } + } + } + } + + if ($debug) _debug("Removed $num_deleted old lock files."); + } + + function expire_cached_files($debug) { + foreach (array("simplepie", "images", "export", "upload") as $dir) { + $cache_dir = CACHE_DIR . "/$dir"; + +// if ($debug) _debug("Expiring $cache_dir"); + + $num_deleted = 0; + + if (is_writable($cache_dir)) { + $files = glob("$cache_dir/*"); + + if ($files) { + foreach ($files as $file) { + if (time() - filemtime($file) > 86400*7) { + unlink($file); + + ++$num_deleted; + } + } + } + } + + if ($debug) _debug("$cache_dir: removed $num_deleted files."); + } + } + + /** + * Source: http://www.php.net/manual/en/function.parse-url.php#104527 + * Returns the url query as associative array + * + * @param string query + * @return array params + */ + function convertUrlQuery($query) { + $queryParts = explode('&', $query); + + $params = array(); + + foreach ($queryParts as $param) { + $item = explode('=', $param); + $params[$item[0]] = $item[1]; + } + + return $params; + } + + function get_article_filters($filters, $title, $content, $link, $timestamp, $author, $tags) { + $matches = array(); + + foreach ($filters as $filter) { + $match_any_rule = $filter["match_any_rule"]; + $inverse = $filter["inverse"]; + $filter_match = false; + + foreach ($filter["rules"] as $rule) { + $match = false; + $reg_exp = str_replace('/', '\/', $rule["reg_exp"]); + $rule_inverse = $rule["inverse"]; + + if (!$reg_exp) + continue; + + switch ($rule["type"]) { + case "title": + $match = @preg_match("/$reg_exp/i", $title); + break; + case "content": + // we don't need to deal with multiline regexps + $content = preg_replace("/[\r\n\t]/", "", $content); + + $match = @preg_match("/$reg_exp/i", $content); + break; + case "both": + // we don't need to deal with multiline regexps + $content = preg_replace("/[\r\n\t]/", "", $content); + + $match = (@preg_match("/$reg_exp/i", $title) || @preg_match("/$reg_exp/i", $content)); + break; + case "link": + $match = @preg_match("/$reg_exp/i", $link); + break; + case "author": + $match = @preg_match("/$reg_exp/i", $author); + break; + case "tag": + foreach ($tags as $tag) { + if (@preg_match("/$reg_exp/i", $tag)) { + $match = true; + break; + } + } + break; + } + + if ($rule_inverse) $match = !$match; + + if ($match_any_rule) { + if ($match) { + $filter_match = true; + break; + } + } else { + $filter_match = $match; + if (!$match) { + break; + } + } + } + + if ($inverse) $filter_match = !$filter_match; + + if ($filter_match) { + foreach ($filter["actions"] AS $action) { + array_push($matches, $action); + + // if Stop action encountered, perform no further processing + if ($action["type"] == "stop") return $matches; + } + } + } + + return $matches; + } + + function find_article_filter($filters, $filter_name) { + foreach ($filters as $f) { + if ($f["type"] == $filter_name) { + return $f; + }; + } + return false; + } + + function find_article_filters($filters, $filter_name) { + $results = array(); + + foreach ($filters as $f) { + if ($f["type"] == $filter_name) { + array_push($results, $f); + }; + } + return $results; + } + + function calculate_article_score($filters) { + $score = 0; + + foreach ($filters as $f) { + if ($f["type"] == "score") { + $score += $f["param"]; + }; + } + return $score; + } + + function labels_contains_caption($labels, $caption) { + foreach ($labels as $label) { + if ($label[1] == $caption) { + return true; + } + } + + return false; + } + + function assign_article_to_label_filters($id, $filters, $owner_uid, $article_labels) { + foreach ($filters as $f) { + if ($f["type"] == "label") { + if (!labels_contains_caption($article_labels, $f["param"])) { + label_add_article($id, $f["param"], $owner_uid); + } + } + } + } + + function make_guid_from_title($title) { + return preg_replace("/[ \"\',.:;]/", "-", + mb_strtolower(strip_tags($title), 'utf-8')); + } + + /* 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 cleanup_counters_cache($debug) { + $result = db_query("DELETE FROM ttrss_counters_cache + WHERE feed_id > 0 AND + (SELECT COUNT(id) FROM ttrss_feeds WHERE + id = feed_id AND + ttrss_counters_cache.owner_uid = ttrss_feeds.owner_uid) = 0"); + $frows = db_affected_rows($result); + + $result = db_query("DELETE FROM ttrss_cat_counters_cache + WHERE feed_id > 0 AND + (SELECT COUNT(id) FROM ttrss_feed_categories WHERE + id = feed_id AND + ttrss_cat_counters_cache.owner_uid = ttrss_feed_categories.owner_uid) = 0"); + $crows = db_affected_rows($result); + + _debug("Removed $frows (feeds) $crows (cats) orphaned counter cache entries."); + } + + function housekeeping_common($debug) { + expire_cached_files($debug); + expire_lock_files($debug); + expire_error_log($debug); + + $count = update_feedbrowser_cache(); + _debug("Feedbrowser updated, $count feeds processed."); + + purge_orphans( true); + cleanup_counters_cache($debug); + $rc = cleanup_tags( 14, 50000); + + _debug("Cleaned $rc cached tags."); + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_HOUSE_KEEPING, "hook_house_keeping", ""); + + } +?> diff --git a/include/sanity_check.php b/include/sanity_check.php new file mode 100644 index 0000000000..6bec430516 --- /dev/null +++ b/include/sanity_check.php @@ -0,0 +1,199 @@ + 0 && strlen(FEED_CRYPT_KEY) != 24) { + array_push($errors, "FEED_CRYPT_KEY should be exactly 24 characters in length."); + } + + if (strlen(FEED_CRYPT_KEY) > 0 && !function_exists("mcrypt_decrypt")) { + array_push($errors, "FEED_CRYPT_KEY requires mcrypt functions which are not found."); + } + + if (GENERATED_CONFIG_CHECK != EXPECTED_CONFIG_VERSION) { + array_push($errors, + "Configuration option checker sanity_config.php is outdated, please recreate it using ./utils/regen_config_checks.sh"); + } + + foreach ($requred_defines as $d) { + if (!defined($d)) { + array_push($errors, + "Required configuration file parameter $d is not defined in config.php. You might need to copy it from config.php-dist."); + } + } + + if (SINGLE_USER_MODE) { + $result = db_query("SELECT id FROM ttrss_users WHERE id = 1"); + + if (db_num_rows($result) != 1) { + array_push($errors, "SINGLE_USER_MODE is enabled in config.php but default admin account is not found."); + } + } + + if (SELF_URL_PATH == "http://example.org/tt-rss/") { + $urlpath = preg_replace("/\w+\.php$/", "", make_self_url_path()); + + array_push($errors, + "Please set SELF_URL_PATH to the correct value for your server (possible value: $urlpath)"); + } + + if (!is_writable(ICONS_DIR)) { + array_push($errors, "ICONS_DIR defined in config.php is not writable (chmod -R 777 ".ICONS_DIR.").\n"); + } + + if (!is_writable(LOCK_DIRECTORY)) { + array_push($errors, "LOCK_DIRECTORY defined in config.php is not writable (chmod -R 777 ".LOCK_DIRECTORY.").\n"); + } + + if (!function_exists("curl_init") && !ini_get("allow_url_fopen")) { + array_push($errors, "PHP configuration option allow_url_fopen is disabled, and CURL functions are not present. Either enable allow_url_fopen or install PHP extension for CURL."); + } + + if (!function_exists("json_encode")) { + array_push($errors, "PHP support for JSON is required, but was not found."); + } + + if (DB_TYPE == "mysql" && !function_exists("mysql_connect") && !function_exists("mysqli_connect")) { + array_push($errors, "PHP support for MySQL is required for configured DB_TYPE in config.php."); + } + + if (DB_TYPE == "pgsql" && !function_exists("pg_connect")) { + array_push($errors, "PHP support for PostgreSQL is required for configured DB_TYPE in config.php"); + } + + if (!function_exists("mb_strlen")) { + array_push($errors, "PHP support for mbstring functions is required but was not found."); + } + + if (!function_exists("hash")) { + array_push($errors, "PHP support for hash() function is required but was not found."); + } + + if (!function_exists("ctype_lower")) { + array_push($errors, "PHP support for ctype functions are required by HTMLPurifier."); + } + + /* if (ini_get("safe_mode")) { + array_push($errors, "PHP safe mode setting is not supported."); + } */ + + if ((PUBSUBHUBBUB_HUB || PUBSUBHUBBUB_ENABLED) && !function_exists("curl_init")) { + array_push($errors, "PHP support for CURL is required for PubSubHubbub."); + } + + if (!class_exists("DOMDocument")) { + array_push($errors, "PHP support for DOMDocument is required, but was not found."); + } + } + + if (count($errors) > 0 && $_SERVER['REQUEST_URI']) { ?> + + + Startup failed + + + + + +
    + +

    Startup failed

    + +

    Tiny Tiny RSS was unable to start properly. This usually means a misconfiguration or an incomplete upgrade. Please fix + errors indicated by the following messages:

    + + + +

    You might want to check tt-rss wiki or the + forums for more information. Please search the forums before creating new topic + for your question.

    + +
    + + + + 0) { + echo "Tiny Tiny RSS was unable to start properly. This usually means a misconfiguration or an incomplete upgrade.\n"; + echo "Please fix errors indicated by the following messages:\n\n"; + + foreach ($errors as $error) { + echo " * $error\n"; + } + + echo "\nYou might want to check tt-rss wiki or the forums for more information.\n"; + echo "Please search the forums before creating new topic for your question.\n"; + + exit(-1); + } + } + + initial_sanity_check(); + +?> diff --git a/include/sanity_config.php b/include/sanity_config.php new file mode 100644 index 0000000000..eaa1668b7e --- /dev/null +++ b/include/sanity_config.php @@ -0,0 +1,3 @@ + diff --git a/include/sessions.php b/include/sessions.php new file mode 100644 index 0000000000..30d502641d --- /dev/null +++ b/include/sessions.php @@ -0,0 +1,165 @@ +query("SELECT schema_version FROM ttrss_version"); + $version = Db::get()->fetch_result($result, 0, "schema_version"); + $schema_version = $version; + return $version; + } else { + return $schema_version; + } + } + + function validate_session() { + if (SINGLE_USER_MODE) return true; + + //if (VERSION_STATIC != $_SESSION["version"]) return false; + + $check_ip = $_SESSION['ip_address']; + + switch (SESSION_CHECK_ADDRESS) { + case 0: + $check_ip = ''; + break; + case 1: + $check_ip = substr($check_ip, 0, strrpos($check_ip, '.')+1); + break; + case 2: + $check_ip = substr($check_ip, 0, strrpos($check_ip, '.')); + $check_ip = substr($check_ip, 0, strrpos($check_ip, '.')+1); + break; + }; + + if ($check_ip && strpos($_SERVER['REMOTE_ADDR'], $check_ip) !== 0) { + $_SESSION["login_error_msg"] = + __("Session failed to validate (incorrect IP)"); + return false; + } + + if (isset($_SESSION["ref_schema_version"]) && $_SESSION["ref_schema_version"] != session_get_schema_version(true)) { + $_SESSION["login_error_msg"] = + __("Session failed to validate (schema version changed)"); + return false; + } + + /* if (sha1($_SERVER['HTTP_USER_AGENT']) != $_SESSION["user_agent"]) { + $_SESSION["login_error_msg"] = + __("Session failed to validate (user agent changed)"); + return false; + } */ + + if ($_SESSION["uid"]) { + $result = Db::get()->query( + "SELECT pwd_hash FROM ttrss_users WHERE id = '".$_SESSION["uid"]."'"); + + // user not found + if (Db::get()->num_rows($result) == 0) { + + $_SESSION["login_error_msg"] = + __("Session failed to validate (user not found)"); + + return false; + } else { + $pwd_hash = Db::get()->fetch_result($result, 0, "pwd_hash"); + + if ($pwd_hash != $_SESSION["pwd_hash"]) { + + $_SESSION["login_error_msg"] = + __("Session failed to validate (password changed)"); + + return false; + } + } + } + + return true; + } + + + function ttrss_open ($s, $n) { + return true; + } + + function ttrss_read ($id){ + global $session_expire; + + $res = Db::get()->query("SELECT data FROM ttrss_sessions WHERE id='$id'"); + + if (Db::get()->num_rows($res) != 1) { + + $expire = time() + $session_expire; + + Db::get()->query("INSERT INTO ttrss_sessions (id, data, expire) + VALUES ('$id', '', '$expire')"); + + return ""; + } else { + return base64_decode(Db::get()->fetch_result($res, 0, "data")); + } + + } + + function ttrss_write ($id, $data) { + global $session_expire; + + $data = base64_encode($data); + $expire = time() + $session_expire; + + Db::get()->query("UPDATE ttrss_sessions SET data='$data', expire='$expire' WHERE id='$id'"); + + return true; + } + + function ttrss_close () { + return true; + } + + function ttrss_destroy($id) { + Db::get()->query("DELETE FROM ttrss_sessions WHERE id = '$id'"); + + return true; + } + + function ttrss_gc ($expire) { + Db::get()->query("DELETE FROM ttrss_sessions WHERE expire < " . time()); + } + + if (!SINGLE_USER_MODE /* && DB_TYPE == "pgsql" */) { + session_set_save_handler("ttrss_open", + "ttrss_close", "ttrss_read", "ttrss_write", + "ttrss_destroy", "ttrss_gc"); + register_shutdown_function('session_write_close'); + } + + if (!defined('NO_SESSION_AUTOSTART')) { + if (isset($_COOKIE[session_name()])) { + @session_start(); + } + } +?> diff --git a/include/version.php b/include/version.php new file mode 100644 index 0000000000..686da3517e --- /dev/null +++ b/include/version.php @@ -0,0 +1,23 @@ + diff --git a/index.php b/index.php index e73671ed45..10c7548035 100644 --- a/index.php +++ b/index.php @@ -1 +1,280 @@ - +Fatal Error: You forgot to copy + config.php-dist to config.php and edit it.\n"; + exit; + } + + // we need a separate check here because functions.php might get parsed + // incorrectly before 5.3 because of :: syntax. + if (version_compare(PHP_VERSION, '5.3.0', '<')) { + print "Fatal Error: PHP version 5.3.0 or newer required.\n"; + exit; + } + + set_include_path(dirname(__FILE__) ."/include" . PATH_SEPARATOR . + get_include_path()); + + require_once "autoload.php"; + require_once "sessions.php"; + require_once "functions.php"; + require_once "sanity_check.php"; + require_once "version.php"; + require_once "config.php"; + require_once "db-prefs.php"; + require_once "lib/Mobile_Detect.php"; + + $mobile = new Mobile_Detect(); + + if (!init_plugins()) return; + + if (!$_REQUEST['mobile']) { + if ($mobile->isTablet() && PluginHost::getInstance()->get_plugin("digest")) { + header('Location: backend.php?op=digest'); + exit; + } else if ($mobile->isMobile() && PluginHost::getInstance()->get_plugin("mobile")) { + header('Location: backend.php?op=mobile'); + exit; + } else if ($mobile->isMobile() && PluginHost::getInstance()->get_plugin("digest")) { + header('Location: backend.php?op=digest'); + exit; + } + } + + login_sequence(); + + header('Content-Type: text/html; charset=utf-8'); + +?> + + + + Tiny Tiny RSS + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    + +
    +
    + +
    + + +
    + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + +
    + +
    + +
    + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + +
    + +
    + + get_hooks(PluginHost::HOOK_TOOLBAR_BUTTON) as $p) { + echo $p->hook_toolbar_button(); + } + ?> + + + +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + get_hooks(PluginHost::HOOK_ACTION_ITEM) as $p) { + echo $p->hook_action_item(); + } + ?> + + +
    + +
    +
    + + +
    +
    +
    + +
    + + + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    + + + diff --git a/install/index.php b/install/index.php new file mode 100644 index 0000000000..a3f21cbb31 --- /dev/null +++ b/install/index.php @@ -0,0 +1,505 @@ + + + Tiny Tiny RSS - Installer + + + + + + + + + $msg"; + } + + function print_notice($msg) { + print "
    + $msg
    "; + } + + function db_connect($host, $user, $pass, $db, $type, $port = false) { + if ($type == "pgsql") { + + $string = "dbname=$db user=$user"; + + if ($pass) { + $string .= " password=$pass"; + } + + if ($host) { + $string .= " host=$host"; + } + + if ($port) { + $string = "$string port=" . $port; + } + + $link = pg_connect($string); + + return $link; + + } else if ($type == "mysql") { + if (function_exists("mysqli_connect")) { + if ($port) + return mysqli_connect($host, $user, $pass, $db, $port); + else + return mysqli_connect($host, $user, $pass, $db); + + } else { + $link = mysql_connect($host, $user, $pass); + if ($link) { + $result = mysql_select_db($db, $link); + if ($result) return $link; + } + } + } + } + + function make_config($DB_TYPE, $DB_HOST, $DB_USER, $DB_NAME, $DB_PASS, + $DB_PORT, $SELF_URL_PATH) { + + $data = explode("\n", file_get_contents("../config.php-dist")); + + $rv = ""; + + $finished = false; + + if (function_exists("mcrypt_decrypt")) { + $crypt_key = make_password(24); + } else { + $crypt_key = ""; + } + + foreach ($data as $line) { + if (preg_match("/define\('DB_TYPE'/", $line)) { + $rv .= "\tdefine('DB_TYPE', '$DB_TYPE');\n"; + } else if (preg_match("/define\('DB_HOST'/", $line)) { + $rv .= "\tdefine('DB_HOST', '$DB_HOST');\n"; + } else if (preg_match("/define\('DB_USER'/", $line)) { + $rv .= "\tdefine('DB_USER', '$DB_USER');\n"; + } else if (preg_match("/define\('DB_NAME'/", $line)) { + $rv .= "\tdefine('DB_NAME', '$DB_NAME');\n"; + } else if (preg_match("/define\('DB_PASS'/", $line)) { + $rv .= "\tdefine('DB_PASS', '$DB_PASS');\n"; + } else if (preg_match("/define\('DB_PORT'/", $line)) { + $rv .= "\tdefine('DB_PORT', '$DB_PORT');\n"; + } else if (preg_match("/define\('SELF_URL_PATH'/", $line)) { + $rv .= "\tdefine('SELF_URL_PATH', '$SELF_URL_PATH');\n"; + } else if (preg_match("/define\('FEED_CRYPT_KEY'/", $line)) { + $rv .= "\tdefine('FEED_CRYPT_KEY', '$crypt_key');\n"; + } else if (!$finished) { + $rv .= "$line\n"; + } + + if (preg_match("/\?\>/", $line)) { + $finished = true; + } + } + + return $rv; + } + + function db_query($link, $query, $type, $die_on_error = true) { + if ($type == "pgsql") { + $result = pg_query($link, $query); + if (!$result) { + $query = htmlspecialchars($query); // just in case + if ($die_on_error) { + die("Query $query failed [$result]: " . ($link ? pg_last_error($link) : "No connection")); + } + } + return $result; + } else if ($type == "mysql") { + + if (function_exists("mysqli_connect")) { + $result = mysqli_query($link, $query); + } else { + $result = mysql_query($query, $link); + } + if (!$result) { + $query = htmlspecialchars($query); + if ($die_on_error) { + die("Query $query failed: " . ($link ? function_exists("mysqli_connect") ? mysqli_error($link) : mysql_error($link) : "No connection")); + } + } + return $result; + } + } + + function make_self_url_path() { + $url_path = ((!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on") ? 'http://' : 'https://') . $_SERVER["HTTP_HOST"] . parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH); + + return $url_path; + } + +?> + + + +

    Tiny Tiny RSS Installer

    + +
    + + + +
    + + +

    Database settings

    + + + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + + If needed +
    + +
    + + + Usually 3306 for MySQL or 5432 for PostgreSQL +
    + +

    Other settings

    + +

    This should be set to the location your Tiny Tiny RSS will be available on.

    + +
    + + +
    + + +

    + +
    + + + +

    Checking configuration

    + + 0) { + print "

    Some configuration tests failed. Please correct them before continuing.

    "; + + print "
      "; + + foreach ($errors as $error) { + print "
    • $error
    • "; + } + + print "
    "; + + exit; + } + + $notices = array(); + + if (!function_exists("curl_init")) { + array_push($notices, "It is highly recommended to enable support for CURL in PHP."); + } + + if (count($notices) > 0) { + print_notice("Configuration check succeeded with minor problems:"); + + print "
      "; + + foreach ($notices as $notice) { + print "
    • $notice
    • "; + } + + print "
    "; + } else { + print_notice("Configuration check succeeded."); + } + + ?> + +

    Checking database

    + + + +

    Initialize database

    + +

    Before you can start using tt-rss, database needs to be initialized. Click on the button below to do that now.

    + + + +
    +
    + + + + + + + + + + + +

    + +

    + +
    + +
    +
    + + + + + + + + + +

    +
    + +
    + + Initializing database..."; + + $lines = explode(";", preg_replace("/[\r\n]/", "", file_get_contents("../schema/ttrss_schema_".basename($DB_TYPE).".sql"))); + + foreach ($lines as $line) { + if (strpos($line, "--") !== 0 && $line) { + db_query($link, $line, $DB_TYPE); + } + } + + print_notice("Database initialization completed."); + + } else { + print_notice("Database initialization skipped."); + } + + print "

    Generated configuration file

    "; + + print "

    Copy following text and save as config.php in tt-rss main directory. It is suggested to read through the file to the end in case you need any options changed fom default values.

    "; + + print "

    After copying the file, you will be able to login with default username and password combination: admin and password. Don't forget to change the password immediately!

    "; ?> + +
    + + + + + + + + + "; + echo make_config($DB_TYPE, $DB_HOST, $DB_USER, $DB_NAME, $DB_PASS, + $DB_PORT, $SELF_URL_PATH); + print ""; ?> + + +

    We can also try saving the file automatically now.

    + +

    +
    + Saving configuration file to parent directory..."; + + if (!file_exists("../config.php")) { + + $fp = fopen("../config.php", "w"); + + if ($fp) { + $written = fwrite($fp, make_config($DB_TYPE, $DB_HOST, + $DB_USER, $DB_NAME, $DB_PASS, + $DB_PORT, $SELF_URL_PATH)); + + if ($written > 0) { + print_notice("Successfully saved config.php. You can try loading tt-rss now."); + + } else { + print_notice("Unable to write into config.php in tt-rss directory."); + } + + fclose($fp); + } else { + print_error("Unable to open config.php in tt-rss directory for writing."); + } + } else { + print_error("config.php already present in tt-rss directory, refusing to overwrite."); + } + } + ?> + +
    + + + diff --git a/js/FeedTree.js b/js/FeedTree.js new file mode 100644 index 0000000000..a9a69187e2 --- /dev/null +++ b/js/FeedTree.js @@ -0,0 +1,588 @@ +dojo.provide("fox.FeedTree"); +dojo.provide("fox.FeedStoreModel"); + +dojo.require("dijit.Tree"); +dojo.require("dijit.Menu"); + +dojo.declare("fox.FeedStoreModel", dijit.tree.ForestStoreModel, { + getItemsInCategory: function (id) { + if (!this.store._itemsByIdentity) return undefined; + + cat = this.store._itemsByIdentity['CAT:' + id]; + + if (cat && cat.items) + return cat.items; + else + return undefined; + + }, + getItemById: function(id) { + return this.store._itemsByIdentity[id]; + }, + getFeedValue: function(feed, is_cat, key) { + if (!this.store._itemsByIdentity) return undefined; + + if (is_cat) + treeItem = this.store._itemsByIdentity['CAT:' + feed]; + else + treeItem = this.store._itemsByIdentity['FEED:' + feed]; + + if (treeItem) + return this.store.getValue(treeItem, key); + }, + getFeedName: function(feed, is_cat) { + return this.getFeedValue(feed, is_cat, 'name'); + }, + getFeedUnread: function(feed, is_cat) { + var unread = parseInt(this.getFeedValue(feed, is_cat, 'unread')); + return (isNaN(unread)) ? 0 : unread; + }, + setFeedUnread: function(feed, is_cat, unread) { + return this.setFeedValue(feed, is_cat, 'unread', parseInt(unread)); + }, + setFeedValue: function(feed, is_cat, key, value) { + if (!value) value = ''; + if (!this.store._itemsByIdentity) return undefined; + + if (is_cat) + treeItem = this.store._itemsByIdentity['CAT:' + feed]; + else + treeItem = this.store._itemsByIdentity['FEED:' + feed]; + + if (treeItem) + return this.store.setValue(treeItem, key, value); + }, + getNextUnreadFeed: function (feed, is_cat) { + if (!this.store._itemsByIdentity) + return null; + + if (is_cat) { + treeItem = this.store._itemsByIdentity['CAT:' + feed]; + } else { + treeItem = this.store._itemsByIdentity['FEED:' + feed]; + } + + items = this.store._arrayOfAllItems; + + for (var i = 0; i < items.length; i++) { + if (items[i] == treeItem) { + + for (var j = i+1; j < items.length; j++) { + var unread = this.store.getValue(items[j], 'unread'); + var id = this.store.getValue(items[j], 'id'); + + if (unread > 0 && ((is_cat && id.match("CAT:")) || (!is_cat && id.match("FEED:")))) { + if( !is_cat || ! (this.store.hasAttribute(items[j], 'parent_id') && this.store.getValue(items[j], 'parent_id') == feed) ) return items[j]; + } + } + + for (var j = 0; j < i; j++) { + var unread = this.store.getValue(items[j], 'unread'); + var id = this.store.getValue(items[j], 'id'); + + if (unread > 0 && ((is_cat && id.match("CAT:")) || (!is_cat && id.match("FEED:")))) { + if( !is_cat || ! (this.store.hasAttribute(items[j], 'parent_id') && this.store.getValue(items[j], 'parent_id') == feed) ) return items[j]; + } + } + } + } + + return null; + }, + hasCats: function() { + if (this.store && this.store._itemsByIdentity) + return this.store._itemsByIdentity['CAT:-1'] != undefined; + else + return false; + }, +}); + +dojo.declare("fox.FeedTree", dijit.Tree, { + _onKeyPress: function(/* Event */ e) { + return; // Stop dijit.Tree from interpreting keystrokes + }, + _createTreeNode: function(args) { + var tnode = new dijit._TreeNode(args); + + if (args.item.icon && args.item.icon[0]) + tnode.iconNode.src = args.item.icon[0]; + + var id = args.item.id[0]; + var bare_id = parseInt(id.substr(id.indexOf(':')+1)); + + if (bare_id < _label_base_index) { + var span = dojo.doc.createElement('span'); + var fg_color = args.item.fg_color[0]; + var bg_color = args.item.bg_color[0]; + + span.innerHTML = "α"; + span.className = 'labelColorIndicator'; + span.setStyle({ + color: fg_color, + backgroundColor: bg_color}); + + dojo.place(span, tnode.iconNode, 'replace'); + } + + if (id.match("FEED:")) { + var menu = new dijit.Menu(); + menu.row_id = bare_id; + + menu.addChild(new dijit.MenuItem({ + label: __("Mark as read"), + onClick: function() { + catchupFeed(this.getParent().row_id); + }})); + + if (bare_id > 0) { + menu.addChild(new dijit.MenuItem({ + label: __("Edit feed"), + onClick: function() { + editFeed(this.getParent().row_id, false); + }})); + + /* menu.addChild(new dijit.MenuItem({ + label: __("Update feed"), + onClick: function() { + heduleFeedUpdate(this.getParent().row_id, false); + }})); */ + } + + menu.bindDomNode(tnode.domNode); + tnode._menu = menu; + } + + if (id.match("CAT:") && bare_id >= 0) { + var menu = new dijit.Menu(); + menu.row_id = bare_id; + + menu.addChild(new dijit.MenuItem({ + label: __("Mark as read"), + onClick: function() { + catchupFeed(this.getParent().row_id, true); + }})); + + menu.bindDomNode(tnode.domNode); + tnode._menu = menu; + } + + if (id.match("CAT:")) { + loading = dojo.doc.createElement('img'); + loading.className = 'loadingNode'; + loading.src = 'images/blank_icon.gif'; + dojo.place(loading, tnode.labelNode, 'after'); + tnode.loadingNode = loading; + } + + if (id.match("CAT:") && bare_id == -1) { + var menu = new dijit.Menu(); + menu.row_id = bare_id; + + menu.addChild(new dijit.MenuItem({ + label: __("Mark all feeds as read"), + onClick: function() { + catchupAllFeeds(); + }})); + + menu.bindDomNode(tnode.domNode); + tnode._menu = menu; + } + + ctr = dojo.doc.createElement('span'); + ctr.className = 'counterNode'; + ctr.innerHTML = args.item.unread > 0 ? args.item.unread : args.item.auxcounter; + + //args.item.unread > 0 ? ctr.addClassName("unread") : ctr.removeClassName("unread"); + + args.item.unread > 0 || args.item.auxcounter > 0 ? Element.show(ctr) : Element.hide(ctr); + + args.item.unread == 0 && args.item.auxcounter > 0 ? ctr.addClassName("aux") : ctr.removeClassName("aux"); + + dojo.place(ctr, tnode.rowNode, 'first'); + tnode.counterNode = ctr; + + //tnode.labelNode.innerHTML = args.label; + return tnode; + }, + postCreate: function() { + this.connect(this.model, "onChange", "updateCounter"); + this.connect(this, "_expandNode", function() { + this.hideRead(getInitParam("hide_read_feeds"), getInitParam("hide_read_shows_special")); + }); + + this.inherited(arguments); + }, + updateCounter: function (item) { + var tree = this; + + //console.log("updateCounter: " + item.id[0] + " " + item.unread + " " + tree); + + var node = tree._itemNodesMap[item.id]; + + if (node) { + node = node[0]; + + if (node.counterNode) { + ctr = node.counterNode; + ctr.innerHTML = item.unread > 0 ? item.unread : item.auxcounter; + item.unread > 0 || item.auxcounter > 0 ? + Effect.Appear(ctr, {duration : 0.3, + queue: { position: 'end', scope: 'CAPPEAR-' + item.id, limit: 1 }}) : + Element.hide(ctr); + + item.unread == 0 && item.auxcounter > 0 ? ctr.addClassName("aux") : ctr.removeClassName("aux"); + + } + } + + }, + getTooltip: function (item) { + if (item.updated) + return item.updated; + else + return ""; + }, + getIconClass: function (item, opened) { + return (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "feedIcon"; + }, + getLabelClass: function (item, opened) { + return (item.unread == 0) ? "dijitTreeLabel" : "dijitTreeLabel Unread"; + }, + getRowClass: function (item, opened) { + var rc = (!item.error || item.error == '') ? "dijitTreeRow" : + "dijitTreeRow Error"; + + if (item.unread > 0) rc += " Unread"; + + return rc; + }, + getLabel: function(item) { + var name = String(item.name); + + /* Horrible */ + name = name.replace(/"/g, "\""); + name = name.replace(/&/g, "&"); + name = name.replace(/—/g, "-"); + name = name.replace(/</g, "<"); + name = name.replace(/>/g, ">"); + + /* var label; + + if (item.unread > 0) { + label = name + " (" + item.unread + ")"; + } else { + label = name; + } */ + + return name; + }, + expandParentNodes: function(feed, is_cat, list) { + try { + for (var i = 0; i < list.length; i++) { + var id = String(list[i].id); + var item = this._itemNodesMap[id]; + + if (item) { + item = item[0]; + this._expandNode(item); + } + } + } catch (e) { + exception_error("expandParentNodes", e); + } + }, + findNodeParentsAndExpandThem: function(feed, is_cat, root, parents) { + // expands all parents of specified feed to properly mark it as active + // my fav thing about frameworks is doing everything myself + try { + var test_id = is_cat ? 'CAT:' + feed : 'FEED:' + feed; + + if (!root) { + if (!this.model || !this.model.store) return false; + + var items = this.model.store._arrayOfTopLevelItems; + + for (var i = 0; i < items.length; i++) { + if (String(items[i].id) == test_id) { + this.expandParentNodes(feed, is_cat, parents); + } else { + this.findNodeParentsAndExpandThem(feed, is_cat, items[i], []); + } + } + } else { + if (root.items) { + parents.push(root); + + for (var i = 0; i < root.items.length; i++) { + if (String(root.items[i].id) == test_id) { + this.expandParentNodes(feed, is_cat, parents); + } else { + this.findNodeParentsAndExpandThem(feed, is_cat, root.items[i], parents.slice(0)); + } + } + } else { + if (String(root.id) == test_id) { + this.expandParentNodes(feed, is_cat, parents.slice(0)); + } + } + } + } catch (e) { + exception_error("findNodeParentsAndExpandThem", e); + } + }, + selectFeed: function(feed, is_cat) { + this.findNodeParentsAndExpandThem(feed, is_cat, false, false); + + if (is_cat) + treeNode = this._itemNodesMap['CAT:' + feed]; + else + treeNode = this._itemNodesMap['FEED:' + feed]; + + if (treeNode) { + treeNode = treeNode[0]; + if (!is_cat) this._expandNode(treeNode); + this.set("selectedNodes", [treeNode]); + } + }, + setFeedIcon: function(feed, is_cat, src) { + if (is_cat) + treeNode = this._itemNodesMap['CAT:' + feed]; + else + treeNode = this._itemNodesMap['FEED:' + feed]; + + if (treeNode) { + treeNode = treeNode[0]; + treeNode.iconNode.src = src; + return true; + } + return false; + }, + setFeedExpandoIcon: function(feed, is_cat, src) { + if (is_cat) + treeNode = this._itemNodesMap['CAT:' + feed]; + else + treeNode = this._itemNodesMap['FEED:' + feed]; + + if (treeNode) { + treeNode = treeNode[0]; + if (treeNode.loadingNode) { + treeNode.loadingNode.src = src; + return true; + } else { + treeNode.expandoNode.src = src; + return true; + } + } + + return false; + }, + hasCats: function() { + return this.model.hasCats(); + }, + hideReadCat: function (cat, hide, show_special) { + if (this.hasCats()) { + var tree = this; + + if (cat && cat.items) { + var cat_unread = tree.hideReadFeeds(cat.items, hide, show_special); + + var id = String(cat.id); + var node = tree._itemNodesMap[id]; + var bare_id = parseInt(id.substr(id.indexOf(":")+1)); + + if (node) { + var check_unread = tree.model.getFeedUnread(bare_id, true); + + if (hide && cat_unread == 0 && check_unread == 0 && (id != "CAT:-1" || !show_special)) { + Effect.Fade(node[0].rowNode, {duration : 0.3, + queue: { position: 'end', scope: 'FFADE-' + id, limit: 1 }}); + } else { + Element.show(node[0].rowNode); + ++cat_unread; + } + } + } + } + }, + hideRead: function (hide, show_special) { + if (this.hasCats()) { + + var tree = this; + var cats = this.model.store._arrayOfTopLevelItems; + + cats.each(function(cat) { + tree.hideReadCat(cat, hide, show_special); + }); + + } else { + this.hideReadFeeds(this.model.store._arrayOfTopLevelItems, hide, + show_special); + } + }, + hideReadFeeds: function (items, hide, show_special) { + var tree = this; + var cat_unread = 0; + + items.each(function(feed) { + var id = String(feed.id); + + // it's a subcategory + if (feed.items) { + tree.hideReadCat(feed, hide, show_special); + } else { // it's a feed + var bare_id = parseInt(feed.bare_id);; + + var unread = feed.unread[0]; + var node = tree._itemNodesMap[id]; + + if (node) { + if (hide && unread == 0 && (bare_id > 0 || bare_id < _label_base_index || !show_special)) { + Effect.Fade(node[0].rowNode, {duration : 0.3, + queue: { position: 'end', scope: 'FFADE-' + id, limit: 1 }}); + } else { + Element.show(node[0].rowNode); + ++cat_unread; + } + } + } + }); + + return cat_unread; + }, + collapseCat: function(id) { + if (!this.model.hasCats()) return; + + var tree = this; + + var node = tree._itemNodesMap['CAT:' + id][0]; + var item = tree.model.store._itemsByIdentity['CAT:' + id]; + + if (node && item) { + if (!node.isExpanded) + tree._expandNode(node); + else + tree._collapseNode(node); + + } + }, + getVisibleUnreadFeeds: function() { + var items = this.model.store._arrayOfAllItems; + var rv = []; + + for (var i = 0; i < items.length; i++) { + var id = String(items[i].id); + var box = this._itemNodesMap[id]; + + if (box) { + var row = box[0].rowNode; + var cat = false; + + try { + cat = box[0].rowNode.parentNode.parentNode; + } catch (e) { } + + if (row) { + if (Element.visible(row) && (!cat || Element.visible(cat))) { + var feed_id = String(items[i].bare_id); + var is_cat = !id.match('FEED:'); + var unread = this.model.getFeedUnread(feed_id, is_cat); + + if (unread > 0) + rv.push([feed_id, is_cat]); + + } + } + } + } + + return rv; + }, + getNextFeed: function (feed, is_cat) { + if (is_cat) { + treeItem = this.model.store._itemsByIdentity['CAT:' + feed]; + } else { + treeItem = this.model.store._itemsByIdentity['FEED:' + feed]; + } + + items = this.model.store._arrayOfAllItems; + var item = items[0]; + + for (var i = 0; i < items.length; i++) { + if (items[i] == treeItem) { + + for (var j = i+1; j < items.length; j++) { + var id = String(items[j].id); + var box = this._itemNodesMap[id]; + + if (box) { + var row = box[0].rowNode; + var cat = box[0].rowNode.parentNode.parentNode; + + if (Element.visible(cat) && Element.visible(row)) { + item = items[j]; + break; + } + } + } + break; + } + } + + if (item) { + return [this.model.store.getValue(item, 'bare_id'), + !this.model.store.getValue(item, 'id').match('FEED:')]; + } else { + return false; + } + }, + getPreviousFeed: function (feed, is_cat) { + if (is_cat) { + treeItem = this.model.store._itemsByIdentity['CAT:' + feed]; + } else { + treeItem = this.model.store._itemsByIdentity['FEED:' + feed]; + } + + items = this.model.store._arrayOfAllItems; + var item = items[0] == treeItem ? items[items.length-1] : items[0]; + + for (var i = 0; i < items.length; i++) { + if (items[i] == treeItem) { + + for (var j = i-1; j > 0; j--) { + var id = String(items[j].id); + var box = this._itemNodesMap[id]; + + if (box) { + var row = box[0].rowNode; + var cat = box[0].rowNode.parentNode.parentNode; + + if (Element.visible(cat) && Element.visible(row)) { + item = items[j]; + break; + } + } + + } + break; + } + } + + if (item) { + return [this.model.store.getValue(item, 'bare_id'), + !this.model.store.getValue(item, 'id').match('FEED:')]; + } else { + return false; + } + + }, + getFeedCategory: function(feed) { + try { + return this.getNodesByItem(this.model.store. + _itemsByIdentity["FEED:" + feed])[0]. + getParent().item.bare_id[0]; + + } catch (e) { + return false; + } + }, +}); diff --git a/js/PluginHost.js b/js/PluginHost.js new file mode 100644 index 0000000000..ae89ba4813 --- /dev/null +++ b/js/PluginHost.js @@ -0,0 +1,35 @@ +// based on http://www.velvetcache.org/2010/08/19/a-simple-javascript-hooks-system + +var PluginHost = { + HOOK_ARTICLE_RENDERED: 1, + HOOK_ARTICLE_RENDERED_CDM: 2, + HOOK_ARTICLE_SET_ACTIVE: 3, + HOOK_FEED_SET_ACTIVE: 4, + HOOK_FEED_LOADED: 5, + HOOK_ARTICLE_EXPANDED: 6, + HOOK_ARTICLE_COLLAPSED: 7, + HOOK_PARAMS_LOADED: 8, + HOOK_RUNTIME_INFO_LOADED: 9, + HOOK_FLOATING_TITLE: 10, + hooks: [], + register: function (name, callback) { + if (typeof(this.hooks[name]) == 'undefined') + this.hooks[name] = []; + + this.hooks[name].push(callback); + }, + run: function (name, args) { + console.warn('PluginHost::run ' + name); + + if (typeof(this.hooks[name]) != 'undefined') + for (i = 0; i < this.hooks[name].length; i++) + if (!this.hooks[name][i](args)) break; + } +}; + +/* PluginHost.register(PluginHost.HOOK_ARTICLE_RENDERED, + function (args) { console.log('ARTICLE_RENDERED: ' + args); return true; }); + +PluginHost.register(PluginHost.HOOK_ARTICLE_RENDERED_CDM, + function (args) { console.log('ARTICLE_RENDERED_CDM: ' + args); return true; }); */ + diff --git a/js/PrefFeedTree.js b/js/PrefFeedTree.js new file mode 100644 index 0000000000..bf21baa904 --- /dev/null +++ b/js/PrefFeedTree.js @@ -0,0 +1,125 @@ +dojo.provide("fox.PrefFeedTree"); +dojo.provide("fox.PrefFeedStore"); + +dojo.require("lib.CheckBoxTree"); +dojo.require("dojo.data.ItemFileWriteStore"); + +dojo.declare("fox.PrefFeedStore", dojo.data.ItemFileWriteStore, { + + _saveEverything: function(saveCompleteCallback, saveFailedCallback, + newFileContentString) { + + dojo.xhrPost({ + url: "backend.php", + content: {op: "pref-feeds", method: "savefeedorder", + payload: newFileContentString}, + error: saveFailedCallback, + load: saveCompleteCallback}); + }, + +}); + +dojo.declare("fox.PrefFeedTree", lib.CheckBoxTree, { + _createTreeNode: function(args) { + var tnode = this.inherited(arguments); + + if (args.item.icon) + tnode.iconNode.src = args.item.icon[0]; + + var param = this.model.store.getValue(args.item, 'param'); + + if (param) { + param = dojo.doc.createElement('span'); + param.className = 'feedParam'; + param.innerHTML = args.item.param[0]; + //dojo.place(param, tnode.labelNode, 'after'); + dojo.place(param, tnode.rowNode, 'first'); + } + + var id = args.item.id[0]; + var bare_id = parseInt(id.substr(id.indexOf(':')+1)); + + if (id.match("CAT:") && bare_id > 0) { + var menu = new dijit.Menu(); + menu.row_id = bare_id; + menu.item = args.item; + + menu.addChild(new dijit.MenuItem({ + label: __("Edit category"), + onClick: function() { + editCat(this.getParent().row_id, this.getParent().item, null); + }})); + + + menu.addChild(new dijit.MenuItem({ + label: __("Remove category"), + onClick: function() { + removeCategory(this.getParent().row_id, this.getParent().item); + }})); + + menu.bindDomNode(tnode.domNode); + tnode._menu = menu; + } else if (id.match("FEED:")) { + var menu = new dijit.Menu(); + menu.row_id = bare_id; + menu.item = args.item; + + menu.addChild(new dijit.MenuItem({ + label: __("Edit feed"), + onClick: function() { + editFeed(this.getParent().row_id); + }})); + + menu.addChild(new dijit.MenuItem({ + label: __("Unsubscribe"), + onClick: function() { + unsubscribeFeed(this.getParent().row_id, this.getParent().item.name); + }})); + + menu.bindDomNode(tnode.domNode); + tnode._menu = menu; + + } + + return tnode; + }, + onDndDrop: function() { + this.inherited(arguments); + this.tree.model.store.save(); + }, + getRowClass: function (item, opened) { + return (!item.error || item.error == '') ? "dijitTreeRow" : + "dijitTreeRow Error"; + }, + getIconClass: function (item, opened) { + return (!item || this.model.store.getValue(item, 'type') == 'category') ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "feedIcon"; + }, + checkItemAcceptance: function(target, source, position) { + var item = dijit.getEnclosingWidget(target).item; + + // disable copying items + source.copyState = function() { return false; }; + + var source_item = false; + + source.forInSelectedItems(function(node) { + source_item = node.data.item; + }); + + if (!source_item || !item) return false; + + var id = this.tree.model.store.getValue(item, 'id'); + var source_id = source.tree.model.store.getValue(source_item, 'id'); + + //console.log(id + " " + position + " " + source_id); + + if (source_id.match("FEED:")) { + return ((id.match("CAT:") && position == "over") || + (id.match("FEED:") && position != "over")); + } else if (source_id.match("CAT:")) { + return ((id.match("CAT:") && !id.match("CAT:0")) || + (id.match("root") && position == "over")); + } + }, +}); + diff --git a/js/PrefFilterTree.js b/js/PrefFilterTree.js new file mode 100644 index 0000000000..7a561c55ba --- /dev/null +++ b/js/PrefFilterTree.js @@ -0,0 +1,96 @@ +dojo.provide("fox.PrefFilterTree"); + +dojo.require("lib.CheckBoxTree"); +dojo.require("dojo.data.ItemFileWriteStore"); + +dojo.declare("fox.PrefFilterStore", dojo.data.ItemFileWriteStore, { + + _saveEverything: function(saveCompleteCallback, saveFailedCallback, + newFileContentString) { + + dojo.xhrPost({ + url: "backend.php", + content: {op: "pref-filters", method: "savefilterorder", + payload: newFileContentString}, + error: saveFailedCallback, + load: saveCompleteCallback}); + }, + +}); + +dojo.declare("fox.PrefFilterTree", lib.CheckBoxTree, { + _createTreeNode: function(args) { + var tnode = this.inherited(arguments); + + var enabled = this.model.store.getValue(args.item, 'enabled'); + var param = this.model.store.getValue(args.item, 'param'); + var rules = this.model.store.getValue(args.item, 'rules'); + + if (param) { + param = dojo.doc.createElement('span'); + param.className = (enabled != false) ? 'labelParam' : 'labelParam Disabled'; + param.innerHTML = args.item.param[0]; + dojo.place(param, tnode.rowNode, 'first'); + } + + if (rules) { + param = dojo.doc.createElement('span'); + param.className = 'filterRules'; + param.innerHTML = rules; + dojo.place(param, tnode.rowNode, 'next'); + } + + if (this.model.store.getValue(args.item, 'id') != 'root') { + var img = dojo.doc.createElement('img'); + img.src ='images/filter.png'; + img.className = 'markedPic'; + tnode._filterIconNode = img; + dojo.place(tnode._filterIconNode, tnode.labelNode, 'before'); + } + + return tnode; + }, + + getLabel: function(item) { + var label = item.name; + + var feed = this.model.store.getValue(item, 'feed'); + var inverse = this.model.store.getValue(item, 'inverse'); + + if (feed) + label += " (" + __("in") + " " + feed + ")"; + + if (inverse) + label += " (" + __("Inverse") + ")"; + +/* if (item.param) + label = "" + label + + "" + item.param[0]; */ + + return label; + }, + getIconClass: function (item, opened) { + return (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "invisible"; + }, + getLabelClass: function (item, opened) { + var enabled = this.model.store.getValue(item, 'enabled'); + return (enabled != false) ? "dijitTreeLabel labelFixedLength" : "dijitTreeLabel labelFixedLength Disabled"; + }, + getRowClass: function (item, opened) { + return (!item.error || item.error == '') ? "dijitTreeRow" : + "dijitTreeRow Error"; + }, + checkItemAcceptance: function(target, source, position) { + var item = dijit.getEnclosingWidget(target).item; + + // disable copying items + source.copyState = function() { return false; }; + + return position != 'over'; + }, + onDndDrop: function() { + this.inherited(arguments); + this.tree.model.store.save(); + }, +}); + diff --git a/js/PrefLabelTree.js b/js/PrefLabelTree.js new file mode 100644 index 0000000000..2f7dc0f534 --- /dev/null +++ b/js/PrefLabelTree.js @@ -0,0 +1,43 @@ +dojo.provide("fox.PrefLabelTree"); + +dojo.require("lib.CheckBoxTree"); +dojo.require("dijit.form.DropDownButton"); + +dojo.declare("fox.PrefLabelTree", lib.CheckBoxTree, { + setNameById: function (id, name) { + var item = this.model.store._itemsByIdentity['LABEL:' + id]; + + if (item) + this.model.store.setValue(item, 'name', name); + + }, + _createTreeNode: function(args) { + var tnode = this.inherited(arguments); + + var fg_color = this.model.store.getValue(args.item, 'fg_color'); + var bg_color = this.model.store.getValue(args.item, 'bg_color'); + var type = this.model.store.getValue(args.item, 'type'); + var bare_id = this.model.store.getValue(args.item, 'bare_id'); + + if (type == 'label') { + var span = dojo.doc.createElement('span'); + span.innerHTML = 'α'; + span.className = 'labelColorIndicator'; + span.id = 'LICID-' + bare_id; + + span.setStyle({ + color: fg_color, + backgroundColor: bg_color}); + + tnode._labelIconNode = span; + + dojo.place(tnode._labelIconNode, tnode.labelNode, 'before'); + } + + return tnode; + }, + getIconClass: function (item, opened) { + return (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "invisible"; + }, +}); + diff --git a/js/deprecated.js b/js/deprecated.js new file mode 100644 index 0000000000..1d04a1adc4 --- /dev/null +++ b/js/deprecated.js @@ -0,0 +1,29 @@ +function selectTableRow(r, do_select) { + + if (do_select) { + r.addClassName("Selected"); + } else { + r.removeClassName("Selected"); + } +} + +function selectTableRowById(elem_id, check_id, do_select) { + + try { + + var row = $(elem_id); + + if (row) { + selectTableRow(row, do_select); + } + + var check = $(check_id); + + if (check) { + check.checked = do_select; + } + } catch (e) { + exception_error("selectTableRowById", e); + } +} + diff --git a/js/feedlist.js b/js/feedlist.js new file mode 100644 index 0000000000..6284534dba --- /dev/null +++ b/js/feedlist.js @@ -0,0 +1,516 @@ +var _infscroll_disable = 0; +var _infscroll_request_sent = 0; +var _infscroll_tmp_disable = 0; + +var _search_query = false; +var _viewfeed_last = 0; +var _viewfeed_timeout = false; + +var counters_last_request = 0; + +function viewCategory(cat) { + viewfeed(cat, '', true); + return false; +} + +function loadMoreHeadlines() { + try { + console.log("loadMoreHeadlines: " + _infscroll_tmp_disable); + + if (_infscroll_tmp_disable) return; + + var offset = 0; + + var view_mode = document.forms["main_toolbar_form"].view_mode.value; + var unread_in_buffer = $$("#headlines-frame > div[id*=RROW][class*=Unread]").length; + var num_all = $$("#headlines-frame > div[id*=RROW]").length; + var num_unread = getFeedUnread(getActiveFeedId(), activeFeedIsCat()); + + // TODO implement marked & published + + if (view_mode == "marked") { + console.warn("loadMoreHeadlines: marked is not implemented, falling back."); + offset = num_all; + } else if (view_mode == "published") { + console.warn("loadMoreHeadlines: published is not implemented, falling back."); + offset = num_all; + } else if (view_mode == "unread") { + offset = unread_in_buffer; + } else if (_search_query) { + offset = num_all; + } else if (view_mode == "adaptive") { + offset = num_unread > 0 ? unread_in_buffer : num_all; + } else { + offset = num_all; + } + + console.log("offset: " + offset); + + viewfeed(getActiveFeedId(), '', activeFeedIsCat(), offset, false, true); + + } catch (e) { + exception_error("viewNextFeedPage", e); + } +} + + +function viewfeed(feed, method, is_cat, offset, background, infscroll_req, can_wait) { + try { + if (is_cat == undefined) + is_cat = false; + else + is_cat = !!is_cat; + + if (method == undefined) method = ''; + if (offset == undefined) offset = 0; + if (background == undefined) background = false; + if (infscroll_req == undefined) infscroll_req = false; + + last_requested_article = 0; + + if (feed != getActiveFeedId() || activeFeedIsCat() != is_cat) { + if (!background && _search_query) _search_query = false; + } + + if (!background) { + _viewfeed_last = get_timestamp(); + + if (getActiveFeedId() != feed || offset == 0) { + setActiveArticleId(0); + _infscroll_disable = 0; + } + + if (offset != 0 && !method) { + var timestamp = get_timestamp(); + + if (_infscroll_request_sent && _infscroll_request_sent + 30 > timestamp) { + //console.log("infscroll request in progress, aborting"); + return; + } + + _infscroll_request_sent = timestamp; + } + } + + Form.enable("main_toolbar_form"); + + var toolbar_query = Form.serialize("main_toolbar_form"); + + var query = "?op=feeds&method=view&feed=" + param_escape(feed) + "&" + + toolbar_query; + + if (method) { + query = query + "&m=" + param_escape(method); + } + + if (offset > 0) { + if (current_first_id) { + query = query + "&fid=" + param_escape(current_first_id); + } + } + + if (!background) { + if (_search_query) { + force_nocache = true; + query = query + "&" + _search_query; + //_search_query = false; + } + + if (offset != 0) { + query = query + "&skip=" + offset; + + // to prevent duplicate feed titles when showing grouped vfeeds + if (vgroup_last_feed) { + query = query + "&vgrlf=" + param_escape(vgroup_last_feed); + } + } else { + if (!method && !is_cat && feed == getActiveFeedId()) { + query = query + "&m=ForceUpdate"; + } + } + + Form.enable("main_toolbar_form"); + + if (!setFeedExpandoIcon(feed, is_cat, + (is_cat) ? 'images/indicator_tiny.gif' : 'images/indicator_white.gif')) + notify_progress("Loading, please wait...", true); + } + + query += "&cat=" + is_cat; + + console.log(query); + + if (can_wait && _viewfeed_timeout) { + setFeedExpandoIcon(getActiveFeedId(), activeFeedIsCat(), 'images/blank_icon.gif'); + clearTimeout(_viewfeed_timeout); + } + + setActiveFeedId(feed, is_cat); + + timeout_ms = can_wait ? 250 : 0; + _viewfeed_timeout = setTimeout(function() { + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + setFeedExpandoIcon(feed, is_cat, 'images/blank_icon.gif'); + headlines_callback2(transport, offset, background, infscroll_req); + PluginHost.run(PluginHost.HOOK_FEED_LOADED, [feed, is_cat]); + } }); + }, timeout_ms); // Wait 250ms + + } catch (e) { + exception_error("viewfeed", e); + } +} + +function feedlist_init() { + try { + console.log("in feedlist init"); + + loading_set_progress(50); + + document.onkeydown = hotkey_handler; + setTimeout("hotkey_prefix_timeout()", 5*1000); + + if (!getActiveFeedId()) { + viewfeed(-3); + } else { + viewfeed(getActiveFeedId(), '', activeFeedIsCat()); + } + + hideOrShowFeeds(getInitParam("hide_read_feeds") == 1); + + request_counters(true); + timeout(); + + } catch (e) { + exception_error("feedlist/init", e); + } +} + + +function request_counters(force) { + try { + var date = new Date(); + var timestamp = Math.round(date.getTime() / 1000); + + if (force || timestamp - counters_last_request > 5) { + console.log("scheduling request of counters..."); + + counters_last_request = timestamp; + + var query = "?op=rpc&method=getAllCounters&seq=" + next_seq(); + + if (!force) + query = query + "&last_article_id=" + getInitParam("last_article_id"); + + console.log(query); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + try { + handle_rpc_json(transport); + } catch (e) { + exception_error("request_counters", e); + } + } }); + + } else { + console.log("request_counters: rate limit reached: " + (timestamp - counters_last_request)); + } + + } catch (e) { + exception_error("request_counters", e); + } +} + +function parse_counters(elems, scheduled_call) { + try { + for (var l = 0; l < elems.length; l++) { + + var id = elems[l].id; + var kind = elems[l].kind; + var ctr = parseInt(elems[l].counter); + var error = elems[l].error; + var has_img = elems[l].has_img; + var updated = elems[l].updated; + var auxctr = parseInt(elems[l].auxcounter); + + if (id == "global-unread") { + global_unread = ctr; + updateTitle(); + continue; + } + + if (id == "subscribed-feeds") { + feeds_found = ctr; + continue; + } + + if (getFeedUnread(id, (kind == "cat")) != ctr || + (kind == "cat")) { + } + + setFeedUnread(id, (kind == "cat"), ctr); + setFeedValue(id, (kind == "cat"), 'auxcounter', auxctr); + + if (kind != "cat") { + setFeedValue(id, false, 'error', error); + setFeedValue(id, false, 'updated', updated); + + if (id > 0) { + if (has_img) { + setFeedIcon(id, false, + getInitParam("icons_url") + "/" + id + ".ico"); + } else { + setFeedIcon(id, false, 'images/blank_icon.gif'); + } + } + } + } + + hideOrShowFeeds(getInitParam("hide_read_feeds") == 1); + + } catch (e) { + exception_error("parse_counters", e); + } +} + +function getFeedUnread(feed, is_cat) { + try { + var tree = dijit.byId("feedTree"); + + if (tree && tree.model) + return tree.model.getFeedUnread(feed, is_cat); + + } catch (e) { + // + } + + return -1; +} + +function getFeedCategory(feed) { + try { + var tree = dijit.byId("feedTree"); + + if (tree && tree.model) + return tree.getFeedCategory(feed); + + } catch (e) { + // + } + + return false; +} + +function hideOrShowFeeds(hide) { + var tree = dijit.byId("feedTree"); + + if (tree) + return tree.hideRead(hide, getInitParam("hide_read_shows_special")); +} + +function getFeedName(feed, is_cat) { + var tree = dijit.byId("feedTree"); + + if (tree && tree.model) + return tree.model.getFeedValue(feed, is_cat, 'name'); +} + +function getFeedValue(feed, is_cat, key) { + try { + var tree = dijit.byId("feedTree"); + + if (tree && tree.model) + return tree.model.getFeedValue(feed, is_cat, key); + + } catch (e) { + // + } + return ''; +} + +function setFeedUnread(feed, is_cat, unread) { + try { + var tree = dijit.byId("feedTree"); + + if (tree && tree.model) + return tree.model.setFeedUnread(feed, is_cat, unread); + + } catch (e) { + exception_error("setFeedUnread", e); + } +} + +function setFeedValue(feed, is_cat, key, value) { + try { + var tree = dijit.byId("feedTree"); + + if (tree && tree.model) + return tree.model.setFeedValue(feed, is_cat, key, value); + + } catch (e) { + // + } +} + +function selectFeed(feed, is_cat) { + try { + var tree = dijit.byId("feedTree"); + + if (tree) return tree.selectFeed(feed, is_cat); + + } catch (e) { + exception_error("selectFeed", e); + } +} + +function setFeedIcon(feed, is_cat, src) { + try { + var tree = dijit.byId("feedTree"); + + if (tree) return tree.setFeedIcon(feed, is_cat, src); + + } catch (e) { + exception_error("setFeedIcon", e); + } +} + +function setFeedExpandoIcon(feed, is_cat, src) { + try { + var tree = dijit.byId("feedTree"); + + if (tree) return tree.setFeedExpandoIcon(feed, is_cat, src); + + } catch (e) { + exception_error("setFeedIcon", e); + } + return false; +} + +function getNextUnreadFeed(feed, is_cat) { + try { + var tree = dijit.byId("feedTree"); + var nuf = tree.model.getNextUnreadFeed(feed, is_cat); + + if (nuf) + return tree.model.store.getValue(nuf, 'bare_id'); + + } catch (e) { + exception_error("getNextUnreadFeed", e); + } +} + +function catchupCurrentFeed(mode) { + catchupFeed(getActiveFeedId(), activeFeedIsCat(), mode); +} + +function catchupFeedInGroup(id) { + try { + + var title = getFeedName(id); + + var str = __("Mark all articles in %s as read?").replace("%s", title); + + if (getInitParam("confirm_feed_catchup") != 1 || confirm(str)) { + return viewCurrentFeed('MarkAllReadGR:' + id); + } + + } catch (e) { + exception_error("catchupFeedInGroup", e); + } +} + +function catchupFeed(feed, is_cat, mode) { + try { + if (is_cat == undefined) is_cat = false; + + var str = false; + + switch (mode) { + case "1day": + str = __("Mark all articles in %s older than 1 day as read?"); + break; + case "1week": + str = __("Mark all articles in %s older than 1 week as read?"); + break; + case "2week": + str = __("Mark all articles in %s older than 2 weeks as read?"); + break; + default: + str = __("Mark all articles in %s as read?"); + } + + var fn = getFeedName(feed, is_cat); + + str = str.replace("%s", fn); + + if (getInitParam("confirm_feed_catchup") == 1 && !confirm(str)) { + return; + } + + var catchup_query = "?op=rpc&method=catchupFeed&feed_id=" + + feed + "&is_cat=" + is_cat + "&mode=" + mode; + + console.log(catchup_query); + + notify_progress("Loading, please wait...", true); + + new Ajax.Request("backend.php", { + parameters: catchup_query, + onComplete: function(transport) { + handle_rpc_json(transport); + + var show_next_feed = getInitParam("on_catchup_show_next_feed") == "1"; + + if (show_next_feed) { + var nuf = getNextUnreadFeed(feed, is_cat); + + if (nuf) { + viewfeed(nuf, '', is_cat); + } + } else { + if (feed == getActiveFeedId() && is_cat == activeFeedIsCat()) { + viewCurrentFeed(); + } + } + + notify(""); + } }); + + } catch (e) { + exception_error("catchupFeed", e); + } +} + +function decrementFeedCounter(feed, is_cat) { + try { + var ctr = getFeedUnread(feed, is_cat); + + if (ctr > 0) { + setFeedUnread(feed, is_cat, ctr - 1); + global_unread = global_unread - 1; + updateTitle(); + + if (!is_cat) { + var cat = parseInt(getFeedCategory(feed)); + + if (!isNaN(cat)) { + ctr = getFeedUnread(cat, true); + + if (ctr > 0) { + setFeedUnread(cat, true, ctr - 1); + } + } + } + } + + } catch (e) { + exception_error("decrement_feed_counter", e); + } +} + + diff --git a/js/functions.js b/js/functions.js new file mode 100644 index 0000000000..98a5318516 --- /dev/null +++ b/js/functions.js @@ -0,0 +1,1983 @@ +var loading_progress = 0; +var sanity_check_done = false; +var init_params = {}; +var _label_base_index = -1024; +var notify_hide_timerid = false; + +Ajax.Base.prototype.initialize = Ajax.Base.prototype.initialize.wrap( + function (callOriginal, options) { + + if (getInitParam("csrf_token") != undefined) { + Object.extend(options, options || { }); + + if (Object.isString(options.parameters)) + options.parameters = options.parameters.toQueryParams(); + else if (Object.isHash(options.parameters)) + options.parameters = options.parameters.toObject(); + + options.parameters["csrf_token"] = getInitParam("csrf_token"); + } + + return callOriginal(options); + } +); + +/* add method to remove element from array */ + +Array.prototype.remove = function(s) { + for (var i=0; i < this.length; i++) { + if (s == this[i]) this.splice(i, 1); + } +}; + +/* create console.log if it doesn't exist */ + +if (!window.console) console = {}; +console.log = console.log || function(msg) { }; +console.warn = console.warn || function(msg) { }; +console.error = console.error || function(msg) { }; + +function exception_error(location, e, ext_info) { + var msg = format_exception_error(location, e); + + if (!ext_info) ext_info = false; + + try { + + if (ext_info) + ext_info = JSON.stringify(ext_info); + + try { + new Ajax.Request("backend.php", { + parameters: {op: "rpc", method: "log", logmsg: msg}, + onComplete: function (transport) { + console.log(transport.responseText); + } }); + + } catch (eii) { + console.log("Exception while trying to log the error."); + console.log(eii); + } + + msg += "

    "+ __("The error will be reported to the configured log destination.") + + "

    "; + + var content = "
    " + + "
    " + msg + "
    "; + + content += "
    "; + + content += ""; + content += ""; + + if (ext_info) { + content += "
    Additional information:
    " + + ""; + } + + content += "
    Stack trace:
    " + + ""; + + content += "
    "; + + content += "
    "; + + content += "
    "; + + content += " "; + content += ""; + content += "
    "; + + if (dijit.byId("exceptionDlg")) + dijit.byId("exceptionDlg").destroyRecursive(); + + var dialog = new dijit.Dialog({ + id: "exceptionDlg", + title: "Unhandled exception", + style: "width: 600px", + report: function() { + if (confirm(__("Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database."))) { + + document.forms['exceptionForm'].params.value = $H({ + browserName: navigator.appName, + browserVersion: navigator.appVersion, + browserPlatform: navigator.platform, + browserCookies: navigator.cookieEnabled, + ttrssVersion: __ttrss_version, + initParams: JSON.stringify(init_params), + }).toQueryString(); + + document.forms['exceptionForm'].submit(); + + } + }, + content: content}); + + dialog.show(); + + } catch (ei) { + console.log("Exception while trying to report an exception. Oh boy."); + console.log(ei); + console.log("Original exception:"); + console.log(e); + + msg += "\n\nAdditional exception caught while trying to show the error dialog.\n\n" + format_exception_error('exception_error', ei); + + try { + new Ajax.Request("backend.php", { + parameters: {op: "rpc", method: "log", logmsg: msg}, + onComplete: function (transport) { + console.log(transport.responseText); + } }); + + } catch (eii) { + console.log("Third exception while trying to log the error! Seriously?"); + console.log(eii); + } + + msg += "\n\nThe error will be reported to the configured log destination."; + + alert(msg); + } + +} + +function format_exception_error(location, e) { + var msg; + + if (e.fileName) { + var base_fname = e.fileName.substring(e.fileName.lastIndexOf("/") + 1); + + msg = "Exception: " + e.name + ", " + e.message + + "\nFunction: " + location + "()" + + "\nLocation: " + base_fname + ":" + e.lineNumber; + + } else if (e.description) { + msg = "Exception: " + e.description + "\nFunction: " + location + "()"; + } else { + msg = "Exception: " + e + "\nFunction: " + location + "()"; + } + + console.error("EXCEPTION: " + msg); + + return msg; +} + +function param_escape(arg) { + if (typeof encodeURIComponent != 'undefined') + return encodeURIComponent(arg); + else + return escape(arg); +} + +function param_unescape(arg) { + if (typeof decodeURIComponent != 'undefined') + return decodeURIComponent(arg); + else + return unescape(arg); +} + +function notify_real(msg, no_hide, n_type) { + + var n = $("notify"); + + if (!n) return; + + if (notify_hide_timerid) { + window.clearTimeout(notify_hide_timerid); + } + + if (msg == "") { + if (n.hasClassName("visible")) { + notify_hide_timerid = window.setTimeout(function() { + n.removeClassName("visible") }, 0); + } + return; + } + + /* types: + + 1 - generic + 2 - progress + 3 - error + 4 - info + + */ + + msg = " " + __(msg) + ""; + + if (n_type == 2) { + msg = "" + msg; + no_hide = true; + } else if (n_type == 3) { + msg = "" + msg; + } else if (n_type == 4) { + msg = "" + msg; + } + + msg += " "; + + n.innerHTML = msg; + + window.setTimeout(function() { + // goddamnit firefox + if (n_type == 2) { + n.className = "notify notify_progress visible"; + } else if (n_type == 3) { + n.className = "notify notify_error visible"; + msg = "" + msg; + } else if (n_type == 4) { + n.className = "notify notify_info visible"; + } else { + n.className = "notify visible"; + } + + if (!no_hide) { + notify_hide_timerid = window.setTimeout(function() { + n.removeClassName("visible") }, 5*1000); + } + + }, 10); + +} + +function notify(msg, no_hide) { + notify_real(msg, no_hide, 1); +} + +function notify_progress(msg, no_hide) { + notify_real(msg, no_hide, 2); +} + +function notify_error(msg, no_hide) { + notify_real(msg, no_hide, 3); + +} + +function notify_info(msg, no_hide) { + notify_real(msg, no_hide, 4); +} + +function setCookie(name, value, lifetime, path, domain, secure) { + + var d = false; + + if (lifetime) { + d = new Date(); + d.setTime(d.getTime() + (lifetime * 1000)); + } + + console.log("setCookie: " + name + " => " + value + ": " + d); + + int_setCookie(name, value, d, path, domain, secure); + +} + +function int_setCookie(name, value, expires, path, domain, secure) { + document.cookie= name + "=" + escape(value) + + ((expires) ? "; expires=" + expires.toGMTString() : "") + + ((path) ? "; path=" + path : "") + + ((domain) ? "; domain=" + domain : "") + + ((secure) ? "; secure" : ""); +} + +function delCookie(name, path, domain) { + if (getCookie(name)) { + document.cookie = name + "=" + + ((path) ? ";path=" + path : "") + + ((domain) ? ";domain=" + domain : "" ) + + ";expires=Thu, 01-Jan-1970 00:00:01 GMT"; + } +} + + +function getCookie(name) { + + var dc = document.cookie; + var prefix = name + "="; + var begin = dc.indexOf("; " + prefix); + if (begin == -1) { + begin = dc.indexOf(prefix); + if (begin != 0) return null; + } + else { + begin += 2; + } + var end = document.cookie.indexOf(";", begin); + if (end == -1) { + end = dc.length; + } + return unescape(dc.substring(begin + prefix.length, end)); +} + +function gotoPreferences() { + document.location.href = "prefs.php"; +} + +function gotoLogout() { + document.location.href = "backend.php?op=logout"; +} + +function gotoMain() { + document.location.href = "index.php"; +} + +/** * @(#)isNumeric.js * * Copyright (c) 2000 by Sundar Dorai-Raj + * * @author Sundar Dorai-Raj + * * Email: sdoraira@vt.edu + * * This program is free software; you can redistribute it and/or + * * modify it under the terms of the GNU General Public License + * * as published by the Free Software Foundation; either version 2 + * * of the License, or (at your option) any later version, + * * provided that any use properly credits the author. + * * This program is distributed in the hope that it will be useful, + * * but WITHOUT ANY WARRANTY; without even the implied warranty of + * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * * GNU General Public License for more details at http://www.gnu.org * * */ + + var numbers=".0123456789"; + function isNumeric(x) { + // is x a String or a character? + if(x.length>1) { + // remove negative sign + x=Math.abs(x)+""; + for(var j=0;j=0) return true; + return false; + } + } + + +function toggleSelectRowById(sender, id) { + var row = $(id); + return toggleSelectRow(sender, row); +} + +function toggleSelectListRow(sender) { + var row = sender.parentNode; + return toggleSelectRow(sender, row); +} + +/* this is for dijit Checkbox */ +function toggleSelectListRow2(sender) { + var row = sender.domNode.parentNode; + return toggleSelectRow(sender, row); +} + +/* this is for dijit Checkbox */ +function toggleSelectRow2(sender, row, is_cdm) { + + if (!row) + if (!is_cdm) + row = sender.domNode.parentNode.parentNode; + else + row = sender.domNode.parentNode.parentNode.parentNode; // oh ffs + + if (sender.checked && !row.hasClassName('Selected')) + row.addClassName('Selected'); + else + row.removeClassName('Selected'); + + if (typeof updateSelectedPrompt != undefined) + updateSelectedPrompt(); +} + + +function toggleSelectRow(sender, row) { + + if (!row) row = sender.parentNode.parentNode; + + if (sender.checked && !row.hasClassName('Selected')) + row.addClassName('Selected'); + else + row.removeClassName('Selected'); + + if (typeof updateSelectedPrompt != undefined) + updateSelectedPrompt(); +} + +function checkboxToggleElement(elem, id) { + if (elem.checked) { + Effect.Appear(id, {duration : 0.5}); + } else { + Effect.Fade(id, {duration : 0.5}); + } +} + +function dropboxSelect(e, v) { + for (var i = 0; i < e.length; i++) { + if (e[i].value == v) { + e.selectedIndex = i; + break; + } + } +} + +function getURLParam(param){ + return String(window.location.href).parseQuery()[param]; +} + +function closeInfoBox(cleanup) { + try { + dialog = dijit.byId("infoBox"); + + if (dialog) dialog.hide(); + + } catch (e) { + //exception_error("closeInfoBox", e); + } + return false; +} + + +function displayDlg(title, id, param, callback) { + + notify_progress("Loading, please wait...", true); + + var query = "?op=dlg&method=" + + param_escape(id) + "¶m=" + param_escape(param); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function (transport) { + infobox_callback2(transport, title); + if (callback) callback(transport); + } }); + + return false; +} + +function infobox_callback2(transport, title) { + try { + var dialog = false; + + if (dijit.byId("infoBox")) { + dialog = dijit.byId("infoBox"); + } + + //console.log("infobox_callback2"); + notify(''); + + var content = transport.responseText; + + if (!dialog) { + dialog = new dijit.Dialog({ + title: title, + id: 'infoBox', + style: "width: 600px", + onCancel: function() { + return true; + }, + onExecute: function() { + return true; + }, + onClose: function() { + return true; + }, + content: content}); + } else { + dialog.attr('title', title); + dialog.attr('content', content); + } + + dialog.show(); + + notify(""); + } catch (e) { + exception_error("infobox_callback2", e); + } +} + +function filterCR(e, f) +{ + var key; + + if(window.event) + key = window.event.keyCode; //IE + else + key = e.which; //firefox + + if (key == 13) { + if (typeof f != 'undefined') { + f(); + return false; + } else { + return false; + } + } else { + return true; + } +} + +function getInitParam(key) { + return init_params[key]; +} + +function setInitParam(key, value) { + init_params[key] = value; +} + +function fatalError(code, msg, ext_info) { + try { + + if (code == 6) { + window.location.href = "index.php"; + } else if (code == 5) { + window.location.href = "public.php?op=dbupdate"; + } else { + + if (msg == "") msg = "Unknown error"; + + if (ext_info) { + if (ext_info.responseText) { + ext_info = ext_info.responseText; + } + } + + if (ERRORS && ERRORS[code] && !msg) { + msg = ERRORS[code]; + } + + var content = "
    Error code: " + code + "
    " + + "

    " + msg + "

    "; + + if (ext_info) { + content = content + "
    Additional information:
    " + + ""; + } + + var dialog = new dijit.Dialog({ + title: "Fatal error", + style: "width: 600px", + content: content}); + + dialog.show(); + + } + + return false; + + } catch (e) { + exception_error("fatalError", e); + } +} + +function filterDlgCheckAction(sender) { + + try { + + var action = sender.value; + + var action_param = $("filterDlg_paramBox"); + + if (!action_param) { + console.log("filterDlgCheckAction: can't find action param box!"); + return; + } + + // if selected action supports parameters, enable params field + if (action == 4 || action == 6 || action == 7) { + new Effect.Appear(action_param, {duration : 0.5}); + if (action != 7) { + Element.show(dijit.byId("filterDlg_actionParam").domNode); + Element.hide(dijit.byId("filterDlg_actionParamLabel").domNode); + } else { + Element.show(dijit.byId("filterDlg_actionParamLabel").domNode); + Element.hide(dijit.byId("filterDlg_actionParam").domNode); + } + } else { + Element.hide(action_param); + } + + } catch (e) { + exception_error("filterDlgCheckAction", e); + } + +} + + +function explainError(code) { + return displayDlg(__("Error explained"), "explainError", code); +} + +function loading_set_progress(p) { + try { + loading_progress += p; + + if (dijit.byId("loading_bar")) + dijit.byId("loading_bar").update({progress: loading_progress}); + + if (loading_progress >= 90) + remove_splash(); + + } catch (e) { + exception_error("loading_set_progress", e); + } +} + +function remove_splash() { + + if (Element.visible("overlay")) { + console.log("about to remove splash, OMG!"); + Element.hide("overlay"); + console.log("removed splash!"); + } +} + +function transport_error_check(transport) { + try { + if (transport.responseXML) { + var error = transport.responseXML.getElementsByTagName("error")[0]; + + if (error) { + var code = error.getAttribute("error-code"); + var msg = error.getAttribute("error-msg"); + if (code != 0) { + fatalError(code, msg); + return false; + } + } + } + } catch (e) { + exception_error("check_for_error_xml", e); + } + return true; +} + +function strip_tags(s) { + return s.replace(/<\/?[^>]+(>|$)/g, ""); +} + +function truncate_string(s, length) { + if (!length) length = 30; + var tmp = s.substring(0, length); + if (s.length > length) tmp += "…"; + return tmp; +} + +function hotkey_prefix_timeout() { + try { + + var date = new Date(); + var ts = Math.round(date.getTime() / 1000); + + if (hotkey_prefix_pressed && ts - hotkey_prefix_pressed >= 5) { + console.log("hotkey_prefix seems to be stuck, aborting"); + hotkey_prefix_pressed = false; + hotkey_prefix = false; + Element.hide('cmdline'); + } + + setTimeout("hotkey_prefix_timeout()", 1000); + + } catch (e) { + exception_error("hotkey_prefix_timeout", e); + } +} + +function uploadIconHandler(rc) { + try { + switch (rc) { + case 0: + notify_info("Upload complete."); + if (inPreferences()) { + updateFeedList(); + } else { + setTimeout('updateFeedList(false, false)', 50); + } + break; + case 1: + notify_error("Upload failed: icon is too big."); + break; + case 2: + notify_error("Upload failed."); + break; + } + + } catch (e) { + exception_error("uploadIconHandler", e); + } +} + +function removeFeedIcon(id) { + + try { + + if (confirm(__("Remove stored feed icon?"))) { + var query = "backend.php?op=pref-feeds&method=removeicon&feed_id=" + param_escape(id); + + console.log(query); + + notify_progress("Removing feed icon...", true); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify_info("Feed icon removed."); + if (inPreferences()) { + updateFeedList(); + } else { + setTimeout('updateFeedList(false, false)', 50); + } + } }); + } + + return false; + } catch (e) { + exception_error("removeFeedIcon", e); + } +} + +function uploadFeedIcon() { + + try { + + var file = $("icon_file"); + + if (file.value.length == 0) { + alert(__("Please select an image file to upload.")); + } else { + if (confirm(__("Upload new icon for this feed?"))) { + notify_progress("Uploading, please wait...", true); + return true; + } + } + + return false; + + } catch (e) { + exception_error("uploadFeedIcon", e); + } +} + +function addLabel(select, callback) { + + try { + + var caption = prompt(__("Please enter label caption:"), ""); + + if (caption != undefined) { + + if (caption == "") { + alert(__("Can't create label: missing caption.")); + return false; + } + + var query = "?op=pref-labels&method=add&caption=" + + param_escape(caption); + + if (select) + query += "&output=select"; + + notify_progress("Loading, please wait...", true); + + if (inPreferences() && !select) active_tab = "labelConfig"; + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + if (callback) { + callback(transport); + } else if (inPreferences()) { + updateLabelList(); + } else { + updateFeedList(); + } + } }); + + } + + } catch (e) { + exception_error("addLabel", e); + } +} + +function quickAddFeed() { + try { + var query = "backend.php?op=feeds&method=quickAddFeed"; + + // overlapping widgets + if (dijit.byId("batchSubDlg")) dijit.byId("batchSubDlg").destroyRecursive(); + if (dijit.byId("feedAddDlg")) dijit.byId("feedAddDlg").destroyRecursive(); + + var dialog = new dijit.Dialog({ + id: "feedAddDlg", + title: __("Subscribe to Feed"), + style: "width: 600px", + execute: function() { + if (this.validate()) { + console.log(dojo.objectToQuery(this.attr('value'))); + + var feed_url = this.attr('value').feed; + + Element.show("feed_add_spinner"); + + new Ajax.Request("backend.php", { + parameters: dojo.objectToQuery(this.attr('value')), + onComplete: function(transport) { + try { + + try { + var reply = JSON.parse(transport.responseText); + } catch (e) { + Element.hide("feed_add_spinner"); + alert(__("Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console.")); + console.log('quickAddFeed, backend returned:' + transport.responseText); + return; + } + + var rc = reply['result']; + + notify(''); + Element.hide("feed_add_spinner"); + + console.log(rc); + + switch (parseInt(rc['code'])) { + case 1: + dialog.hide(); + notify_info(__("Subscribed to %s").replace("%s", feed_url)); + + updateFeedList(); + break; + case 2: + alert(__("Specified URL seems to be invalid.")); + break; + case 3: + alert(__("Specified URL doesn't seem to contain any feeds.")); + break; + case 4: + feeds = rc['feeds']; + + Element.show("fadd_multiple_notify"); + + var select = dijit.byId("feedDlg_feedContainerSelect"); + + while (select.getOptions().length > 0) + select.removeOption(0); + + select.addOption({value: '', label: __("Expand to select feed")}); + + var count = 0; + for (var feedUrl in feeds) { + select.addOption({value: feedUrl, label: feeds[feedUrl]}); + count++; + } + + Effect.Appear('feedDlg_feedsContainer', {duration : 0.5}); + + break; + case 5: + alert(__("Couldn't download the specified URL: %s"). + replace("%s", rc['message'])); + break; + case 6: + alert(__("XML validation failed: %s"). + replace("%s", rc['message'])); + break; + break; + case 0: + alert(__("You are already subscribed to this feed.")); + break; + } + + } catch (e) { + exception_error("subscribeToFeed", e, transport); + } + + } }); + + } + }, + href: query}); + + dialog.show(); + } catch (e) { + exception_error("quickAddFeed", e); + } +} + +function createNewRuleElement(parentNode, replaceNode) { + try { + var form = document.forms["filter_new_rule_form"]; + + form.reg_exp.value = form.reg_exp.value.replace(/(<([^>]+)>)/ig,""); + + var query = "backend.php?op=pref-filters&method=printrulename&rule="+ + param_escape(dojo.formToJson(form)); + + console.log(query); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function (transport) { + try { + var li = dojo.create("li"); + + var cb = dojo.create("input", { type: "checkbox" }, li); + + new dijit.form.CheckBox({ + onChange: function() { + toggleSelectListRow2(this) }, + }, cb); + + dojo.create("input", { type: "hidden", + name: "rule[]", + value: dojo.formToJson(form) }, li); + + dojo.create("span", { + onclick: function() { + dijit.byId('filterEditDlg').editRule(this); + }, + innerHTML: transport.responseText }, li); + + if (replaceNode) { + parentNode.replaceChild(li, replaceNode); + } else { + parentNode.appendChild(li); + } + } catch (e) { + exception_error("createNewRuleElement", e); + } + } }); + } catch (e) { + exception_error("createNewRuleElement", e); + } +} + +function createNewActionElement(parentNode, replaceNode) { + try { + var form = document.forms["filter_new_action_form"]; + + if (form.action_id.value == 7) { + form.action_param.value = form.action_param_label.value; + } + + var query = "backend.php?op=pref-filters&method=printactionname&action="+ + param_escape(dojo.formToJson(form)); + + console.log(query); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function (transport) { + try { + var li = dojo.create("li"); + + var cb = dojo.create("input", { type: "checkbox" }, li); + + new dijit.form.CheckBox({ + onChange: function() { + toggleSelectListRow2(this) }, + }, cb); + + dojo.create("input", { type: "hidden", + name: "action[]", + value: dojo.formToJson(form) }, li); + + dojo.create("span", { + onclick: function() { + dijit.byId('filterEditDlg').editAction(this); + }, + innerHTML: transport.responseText }, li); + + if (replaceNode) { + parentNode.replaceChild(li, replaceNode); + } else { + parentNode.appendChild(li); + } + + } catch (e) { + exception_error("createNewActionElement", e); + } + } }); + } catch (e) { + exception_error("createNewActionElement", e); + } +} + + +function addFilterRule(replaceNode, ruleStr) { + try { + if (dijit.byId("filterNewRuleDlg")) + dijit.byId("filterNewRuleDlg").destroyRecursive(); + + var query = "backend.php?op=pref-filters&method=newrule&rule=" + + param_escape(ruleStr); + + var rule_dlg = new dijit.Dialog({ + id: "filterNewRuleDlg", + title: ruleStr ? __("Edit rule") : __("Add rule"), + style: "width: 600px", + execute: function() { + if (this.validate()) { + createNewRuleElement($("filterDlg_Matches"), replaceNode); + this.hide(); + } + }, + href: query}); + + rule_dlg.show(); + } catch (e) { + exception_error("addFilterRule", e); + } +} + +function addFilterAction(replaceNode, actionStr) { + try { + if (dijit.byId("filterNewActionDlg")) + dijit.byId("filterNewActionDlg").destroyRecursive(); + + var query = "backend.php?op=pref-filters&method=newaction&action=" + + param_escape(actionStr); + + var rule_dlg = new dijit.Dialog({ + id: "filterNewActionDlg", + title: actionStr ? __("Edit action") : __("Add action"), + style: "width: 600px", + execute: function() { + if (this.validate()) { + createNewActionElement($("filterDlg_Actions"), replaceNode); + this.hide(); + } + }, + href: query}); + + rule_dlg.show(); + } catch (e) { + exception_error("addFilterAction", e); + } +} + +function quickAddFilter() { + try { + var query = ""; + if (!inPreferences()) { + query = "backend.php?op=pref-filters&method=newfilter&feed=" + + param_escape(getActiveFeedId()) + "&is_cat=" + + param_escape(activeFeedIsCat()); + } else { + query = "backend.php?op=pref-filters&method=newfilter"; + } + + console.log(query); + + if (dijit.byId("feedEditDlg")) + dijit.byId("feedEditDlg").destroyRecursive(); + + if (dijit.byId("filterEditDlg")) + dijit.byId("filterEditDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "filterEditDlg", + title: __("Create Filter"), + style: "width: 600px", + test: function() { + var query = "backend.php?" + dojo.formToQuery("filter_new_form") + "&savemode=test"; + + if (dijit.byId("filterTestDlg")) + dijit.byId("filterTestDlg").destroyRecursive(); + + var test_dlg = new dijit.Dialog({ + id: "filterTestDlg", + title: "Test Filter", + style: "width: 600px", + href: query}); + + test_dlg.show(); + }, + selectRules: function(select) { + $$("#filterDlg_Matches input[type=checkbox]").each(function(e) { + e.checked = select; + if (select) + e.parentNode.addClassName("Selected"); + else + e.parentNode.removeClassName("Selected"); + }); + }, + selectActions: function(select) { + $$("#filterDlg_Actions input[type=checkbox]").each(function(e) { + e.checked = select; + + if (select) + e.parentNode.addClassName("Selected"); + else + e.parentNode.removeClassName("Selected"); + + }); + }, + editRule: function(e) { + var li = e.parentNode; + var rule = li.getElementsByTagName("INPUT")[1].value; + addFilterRule(li, rule); + }, + editAction: function(e) { + var li = e.parentNode; + var action = li.getElementsByTagName("INPUT")[1].value; + addFilterAction(li, action); + }, + addAction: function() { addFilterAction(); }, + addRule: function() { addFilterRule(); }, + deleteAction: function() { + $$("#filterDlg_Actions li.[class*=Selected]").each(function(e) { e.parentNode.removeChild(e) }); + }, + deleteRule: function() { + $$("#filterDlg_Matches li.[class*=Selected]").each(function(e) { e.parentNode.removeChild(e) }); + }, + execute: function() { + if (this.validate()) { + + var query = dojo.formToQuery("filter_new_form"); + + console.log(query); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function (transport) { + if (inPreferences()) { + updateFilterList(); + } + + dialog.hide(); + } }); + } + }, + href: query}); + + if (!inPreferences()) { + var selectedText = getSelectionText(); + + var lh = dojo.connect(dialog, "onLoad", function(){ + dojo.disconnect(lh); + + if (selectedText != "") { + + var feed_id = activeFeedIsCat() ? 'CAT:' + parseInt(getActiveFeedId()) : + getActiveFeedId(); + + var rule = { reg_exp: selectedText, feed_id: feed_id, filter_type: 1 }; + + addFilterRule(null, dojo.toJson(rule)); + + } else { + + var query = "op=rpc&method=getlinktitlebyid&id=" + getActiveArticleId(); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + var reply = JSON.parse(transport.responseText); + + var title = false; + + if (reply && reply) title = reply.title; + + if (title || getActiveFeedId() || activeFeedIsCat()) { + + console.log(title + " " + getActiveFeedId()); + + var feed_id = activeFeedIsCat() ? 'CAT:' + parseInt(getActiveFeedId()) : + getActiveFeedId(); + + var rule = { reg_exp: title, feed_id: feed_id, filter_type: 1 }; + + addFilterRule(null, dojo.toJson(rule)); + } + + } }); + + } + + }); + } + + dialog.show(); + + } catch (e) { + exception_error("quickAddFilter", e); + } +} + +function resetPubSub(feed_id, title) { + + var msg = __("Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update.").replace("%s", title); + + if (title == undefined || confirm(msg)) { + notify_progress("Loading, please wait..."); + + var query = "?op=pref-feeds&quiet=1&method=resetPubSub&ids=" + feed_id; + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + dijit.byId("pubsubReset_Btn").attr('disabled', true); + notify_info("Subscription reset."); + } }); + } + + return false; +} + + +function unsubscribeFeed(feed_id, title) { + + var msg = __("Unsubscribe from %s?").replace("%s", title); + + if (title == undefined || confirm(msg)) { + notify_progress("Removing feed..."); + + var query = "?op=pref-feeds&quiet=1&method=remove&ids=" + feed_id; + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + + if (dijit.byId("feedEditDlg")) dijit.byId("feedEditDlg").hide(); + + if (inPreferences()) { + updateFeedList(); + } else { + if (feed_id == getActiveFeedId()) + setTimeout("viewfeed(-5)", 100); + + if (feed_id < 0) updateFeedList(); + } + + } }); + } + + return false; +} + + +function backend_sanity_check_callback(transport) { + + try { + + if (sanity_check_done) { + fatalError(11, "Sanity check request received twice. This can indicate "+ + "presence of Firebug or some other disrupting extension. "+ + "Please disable it and try again."); + return; + } + + var reply = JSON.parse(transport.responseText); + + if (!reply) { + fatalError(3, "Sanity check: invalid RPC reply", transport.responseText); + return; + } + + var error_code = reply['error']['code']; + + if (error_code && error_code != 0) { + return fatalError(error_code, reply['error']['message']); + } + + console.log("sanity check ok"); + + var params = reply['init-params']; + + if (params) { + console.log('reading init-params...'); + + for (k in params) { + console.log("IP: " + k + " => " + JSON.stringify(params[k])); + if (k == "label_base_index") _label_base_index = parseInt(params[k]); + } + + init_params = params; + + // PluginHost might not be available on non-index pages + window.PluginHost && PluginHost.run(PluginHost.HOOK_PARAMS_LOADED, init_params); + } + + sanity_check_done = true; + + init_second_stage(); + + } catch (e) { + exception_error("backend_sanity_check_callback", e, transport); + } +} + +/*function has_local_storage() { + try { + return 'sessionStorage' in window && window['sessionStorage'] != null; + } catch (e) { + return false; + } +} */ + +function catSelectOnChange(elem) { + try { +/* var value = elem[elem.selectedIndex].value; + var def = elem.getAttribute('default'); + + if (value == "ADD_CAT") { + + if (def) + dropboxSelect(elem, def); + else + elem.selectedIndex = 0; + + quickAddCat(elem); + } */ + + } catch (e) { + exception_error("catSelectOnChange", e); + } +} + +function quickAddCat(elem) { + try { + var cat = prompt(__("Please enter category title:")); + + if (cat) { + + var query = "?op=rpc&method=quickAddCat&cat=" + param_escape(cat); + + notify_progress("Loading, please wait...", true); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function (transport) { + var response = transport.responseXML; + var select = response.getElementsByTagName("select")[0]; + var options = select.getElementsByTagName("option"); + + dropbox_replace_options(elem, options); + + notify(''); + + } }); + + } + + } catch (e) { + exception_error("quickAddCat", e); + } +} + +function genUrlChangeKey(feed, is_cat) { + + try { + var ok = confirm(__("Generate new syndication address for this feed?")); + + if (ok) { + + notify_progress("Trying to change address...", true); + + var query = "?op=pref-feeds&method=regenFeedKey&id=" + param_escape(feed) + + "&is_cat=" + param_escape(is_cat); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + var reply = JSON.parse(transport.responseText); + var new_link = reply.link; + + var e = $('gen_feed_url'); + + if (new_link) { + + e.innerHTML = e.innerHTML.replace(/\&key=.*$/, + "&key=" + new_link); + + e.href = e.href.replace(/\&key=.*$/, + "&key=" + new_link); + + new Effect.Highlight(e); + + notify(''); + + } else { + notify_error("Could not change feed URL."); + } + } }); + } + } catch (e) { + exception_error("genUrlChangeKey", e); + } + return false; +} + +function labelSelectOnChange(elem) { + try { +/* var value = elem[elem.selectedIndex].value; + var def = elem.getAttribute('default'); + + if (value == "ADD_LABEL") { + + if (def) + dropboxSelect(elem, def); + else + elem.selectedIndex = 0; + + addLabel(elem, function(transport) { + + try { + + var response = transport.responseXML; + var select = response.getElementsByTagName("select")[0]; + var options = select.getElementsByTagName("option"); + + dropbox_replace_options(elem, options); + + notify(''); + } catch (e) { + exception_error("addLabel", e); + } + }); + } */ + + } catch (e) { + exception_error("labelSelectOnChange", e); + } +} + +function dropbox_replace_options(elem, options) { + + try { + while (elem.hasChildNodes()) + elem.removeChild(elem.firstChild); + + var sel_idx = -1; + + for (var i = 0; i < options.length; i++) { + var text = options[i].firstChild.nodeValue; + var value = options[i].getAttribute("value"); + + if (value == undefined) value = text; + + var issel = options[i].getAttribute("selected") == "1"; + + var option = new Option(text, value, issel); + + if (options[i].getAttribute("disabled")) + option.setAttribute("disabled", true); + + elem.insert(option); + + if (issel) sel_idx = i; + } + + // Chrome doesn't seem to just select stuff when you pass new Option(x, y, true) + if (sel_idx >= 0) elem.selectedIndex = sel_idx; + + } catch (e) { + exception_error("dropbox_replace_options", e); + } +} + +// mode = all, none, invert +function selectTableRows(id, mode) { + try { + var rows = $(id).rows; + + for (var i = 0; i < rows.length; i++) { + var row = rows[i]; + var cb = false; + var dcb = false; + + if (row.id && row.className) { + var bare_id = row.id.replace(/^[A-Z]*?-/, ""); + var inputs = rows[i].getElementsByTagName("input"); + + for (var j = 0; j < inputs.length; j++) { + var input = inputs[j]; + + if (input.getAttribute("type") == "checkbox" && + input.id.match(bare_id)) { + + cb = input; + dcb = dijit.getEnclosingWidget(cb); + break; + } + } + + if (cb || dcb) { + var issel = row.hasClassName("Selected"); + + if (mode == "all" && !issel) { + row.addClassName("Selected"); + cb.checked = true; + if (dcb) dcb.set("checked", true); + } else if (mode == "none" && issel) { + row.removeClassName("Selected"); + cb.checked = false; + if (dcb) dcb.set("checked", false); + + } else if (mode == "invert") { + + if (issel) { + row.removeClassName("Selected"); + cb.checked = false; + if (dcb) dcb.set("checked", false); + } else { + row.addClassName("Selected"); + cb.checked = true; + if (dcb) dcb.set("checked", true); + } + } + } + } + } + + } catch (e) { + exception_error("selectTableRows", e); + + } +} + +function getSelectedTableRowIds(id) { + var rows = []; + + try { + var elem_rows = $(id).rows; + + for (var i = 0; i < elem_rows.length; i++) { + if (elem_rows[i].hasClassName("Selected")) { + var bare_id = elem_rows[i].id.replace(/^[A-Z]*?-/, ""); + rows.push(bare_id); + } + } + + } catch (e) { + exception_error("getSelectedTableRowIds", e); + } + + return rows; +} + +function editFeed(feed, event) { + try { + if (feed <= 0) + return alert(__("You can't edit this kind of feed.")); + + var query = "backend.php?op=pref-feeds&method=editfeed&id=" + + param_escape(feed); + + console.log(query); + + if (dijit.byId("filterEditDlg")) + dijit.byId("filterEditDlg").destroyRecursive(); + + if (dijit.byId("feedEditDlg")) + dijit.byId("feedEditDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "feedEditDlg", + title: __("Edit Feed"), + style: "width: 600px", + execute: function() { + if (this.validate()) { +// console.log(dojo.objectToQuery(this.attr('value'))); + + notify_progress("Saving data...", true); + + new Ajax.Request("backend.php", { + parameters: dojo.objectToQuery(dialog.attr('value')), + onComplete: function(transport) { + dialog.hide(); + notify(''); + updateFeedList(); + }}); + } + }, + href: query}); + + dialog.show(); + + } catch (e) { + exception_error("editFeed", e); + } +} + +function feedBrowser() { + try { + var query = "backend.php?op=feeds&method=feedBrowser"; + + if (dijit.byId("feedAddDlg")) + dijit.byId("feedAddDlg").hide(); + + if (dijit.byId("feedBrowserDlg")) + dijit.byId("feedBrowserDlg").destroyRecursive(); + + var dialog = new dijit.Dialog({ + id: "feedBrowserDlg", + title: __("More Feeds"), + style: "width: 600px", + getSelectedFeedIds: function() { + var list = $$("#browseFeedList li[id*=FBROW]"); + var selected = new Array(); + + list.each(function(child) { + var id = child.id.replace("FBROW-", ""); + + if (child.hasClassName('Selected')) { + selected.push(id); + } + }); + + return selected; + }, + getSelectedFeeds: function() { + var list = $$("#browseFeedList li.Selected"); + var selected = new Array(); + + list.each(function(child) { + var title = child.getElementsBySelector("span.fb_feedTitle")[0].innerHTML; + var url = child.getElementsBySelector("a.fb_feedUrl")[0].href; + + selected.push([title,url]); + + }); + + return selected; + }, + + subscribe: function() { + var mode = this.attr('value').mode; + var selected = []; + + if (mode == "1") + selected = this.getSelectedFeeds(); + else + selected = this.getSelectedFeedIds(); + + if (selected.length > 0) { + dijit.byId("feedBrowserDlg").hide(); + + notify_progress("Loading, please wait...", true); + + // we use dojo.toJson instead of JSON.stringify because + // it somehow escapes everything TWICE, at least in Chrome 9 + + var query = "?op=rpc&method=massSubscribe&payload="+ + param_escape(dojo.toJson(selected)) + "&mode=" + param_escape(mode); + + console.log(query); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify(''); + updateFeedList(); + } }); + + } else { + alert(__("No feeds are selected.")); + } + + }, + update: function() { + var query = dojo.objectToQuery(dialog.attr('value')); + + Element.show('feed_browser_spinner'); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify(''); + + Element.hide('feed_browser_spinner'); + + var c = $("browseFeedList"); + + var reply = JSON.parse(transport.responseText); + + var r = reply['content']; + var mode = reply['mode']; + + if (c && r) { + c.innerHTML = r; + } + + dojo.parser.parse("browseFeedList"); + + if (mode == 2) { + Element.show(dijit.byId('feed_archive_remove').domNode); + } else { + Element.hide(dijit.byId('feed_archive_remove').domNode); + } + + } }); + }, + removeFromArchive: function() { + var selected = this.getSelectedFeedIds(); + + if (selected.length > 0) { + + var pr = __("Remove selected feeds from the archive? Feeds with stored articles will not be removed."); + + if (confirm(pr)) { + Element.show('feed_browser_spinner'); + + var query = "?op=rpc&method=remarchive&ids=" + + param_escape(selected.toString());; + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + dialog.update(); + } }); + } + } + }, + execute: function() { + if (this.validate()) { + this.subscribe(); + } + }, + href: query}); + + dialog.show(); + + } catch (e) { + exception_error("editFeed", e); + } +} + +function showFeedsWithErrors() { + try { + var query = "backend.php?op=pref-feeds&method=feedsWithErrors"; + + if (dijit.byId("errorFeedsDlg")) + dijit.byId("errorFeedsDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "errorFeedsDlg", + title: __("Feeds with update errors"), + style: "width: 600px", + getSelectedFeeds: function() { + return getSelectedTableRowIds("prefErrorFeedList"); + }, + removeSelected: function() { + var sel_rows = this.getSelectedFeeds(); + + console.log(sel_rows); + + if (sel_rows.length > 0) { + var ok = confirm(__("Remove selected feeds?")); + + if (ok) { + notify_progress("Removing selected feeds...", true); + + var query = "?op=pref-feeds&method=remove&ids="+ + param_escape(sel_rows.toString()); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify(''); + dialog.hide(); + updateFeedList(); + } }); + } + + } else { + alert(__("No feeds are selected.")); + } + }, + execute: function() { + if (this.validate()) { + } + }, + href: query}); + + dialog.show(); + + } catch (e) { + exception_error("showFeedsWithErrors", e); + } + +} + +/* new support functions for SelectByTag */ + +function get_all_tags(selObj){ + try { + if( !selObj ) return ""; + + var result = ""; + var len = selObj.options.length; + + for (var i=0; i < len; i++){ + if (selObj.options[i].selected) { + result += selObj[i].value + "%2C"; // is really a comma + } + } + + if (result.length > 0){ + result = result.substr(0, result.length-3); // remove trailing %2C + } + + return(result); + + } catch (e) { + exception_error("get_all_tags", e); + } +} + +function get_radio_checked(radioObj) { + try { + if (!radioObj) return ""; + + var len = radioObj.length; + + if (len == undefined){ + if(radioObj.checked){ + return(radioObj.value); + } else { + return(""); + } + } + + for( var i=0; i < len; i++ ){ + if( radioObj[i].checked ){ + return( radioObj[i].value); + } + } + + } catch (e) { + exception_error("get_radio_checked", e); + } + return(""); +} + +function get_timestamp() { + var date = new Date(); + return Math.round(date.getTime() / 1000); +} + +function helpDialog(topic) { + try { + var query = "backend.php?op=backend&method=help&topic=" + param_escape(topic); + + if (dijit.byId("helpDlg")) + dijit.byId("helpDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "helpDlg", + title: __("Help"), + style: "width: 600px", + href: query, + }); + + dialog.show(); + + } catch (e) { + exception_error("helpDialog", e); + } +} + +function htmlspecialchars_decode (string, quote_style) { + // http://kevin.vanzonneveld.net + // + original by: Mirek Slugen + // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // + bugfixed by: Mateusz "loonquawl" Zalega + // + input by: ReverseSyntax + // + input by: Slawomir Kaniecki + // + input by: Scott Cariss + // + input by: Francois + // + bugfixed by: Onno Marsman + // + revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // + bugfixed by: Brett Zamir (http://brett-zamir.me) + // + input by: Ratheous + // + input by: Mailfaker (http://www.weedem.fr/) + // + reimplemented by: Brett Zamir (http://brett-zamir.me) + // + bugfixed by: Brett Zamir (http://brett-zamir.me) + // * example 1: htmlspecialchars_decode("

    this -> "

    ", 'ENT_NOQUOTES'); + // * returns 1: '

    this -> "

    ' + // * example 2: htmlspecialchars_decode("&quot;"); + // * returns 2: '"' + var optTemp = 0, + i = 0, + noquotes = false; + if (typeof quote_style === 'undefined') { + quote_style = 2; + } + string = string.toString().replace(/</g, '<').replace(/>/g, '>'); + var OPTS = { + 'ENT_NOQUOTES': 0, + 'ENT_HTML_QUOTE_SINGLE': 1, + 'ENT_HTML_QUOTE_DOUBLE': 2, + 'ENT_COMPAT': 2, + 'ENT_QUOTES': 3, + 'ENT_IGNORE': 4 + }; + if (quote_style === 0) { + noquotes = true; + } + if (typeof quote_style !== 'number') { // Allow for a single string or an array of string flags + quote_style = [].concat(quote_style); + for (i = 0; i < quote_style.length; i++) { + // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4 + if (OPTS[quote_style[i]] === 0) { + noquotes = true; + } else if (OPTS[quote_style[i]]) { + optTemp = optTemp | OPTS[quote_style[i]]; + } + } + quote_style = optTemp; + } + if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) { + string = string.replace(/�*39;/g, "'"); // PHP doesn't currently escape if more than one 0, but it should + // string = string.replace(/'|�*27;/g, "'"); // This would also be useful here, but not a part of PHP + } + if (!noquotes) { + string = string.replace(/"/g, '"'); + } + // Put this in last place to avoid escape being double-decoded + string = string.replace(/&/g, '&'); + + return string; +} + + +function label_to_feed_id(label) { + return _label_base_index - 1 - Math.abs(label); +} + +function feed_to_label_id(feed) { + return _label_base_index - 1 + Math.abs(feed); +} + +// http://stackoverflow.com/questions/6251937/how-to-get-selecteduser-highlighted-text-in-contenteditable-element-and-replac + +function getSelectionText() { + var text = ""; + + if (typeof window.getSelection != "undefined") { + var sel = window.getSelection(); + if (sel.rangeCount) { + var container = document.createElement("div"); + for (var i = 0, len = sel.rangeCount; i < len; ++i) { + container.appendChild(sel.getRangeAt(i).cloneContents()); + } + text = container.innerHTML; + } + } else if (typeof document.selection != "undefined") { + if (document.selection.type == "Text") { + text = document.selection.createRange().textText; + } + } + + return text.stripTags(); +} diff --git a/js/index.html b/js/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/prefs.js b/js/prefs.js new file mode 100644 index 0000000000..67a4a378c5 --- /dev/null +++ b/js/prefs.js @@ -0,0 +1,1806 @@ +var init_params = new Array(); + +var hotkey_prefix = false; +var hotkey_prefix_pressed = false; + +var seq = ""; + +function notify_callback2(transport, sticky) { + notify_info(transport.responseText, sticky); +} + +function updateFeedList(sort_key) { + + var user_search = $("feed_search"); + var search = ""; + if (user_search) { search = user_search.value; } + + new Ajax.Request("backend.php", { + parameters: "?op=pref-feeds&search=" + param_escape(search), + onComplete: function(transport) { + dijit.byId('feedConfigTab').attr('content', transport.responseText); + selectTab("feedConfig", true); + notify(""); + } }); +} + + +function updateUsersList(sort_key) { + try { + var user_search = $("user_search"); + var search = ""; + if (user_search) { search = user_search.value; } + + var query = "?op=pref-users&sort=" + + param_escape(sort_key) + + "&search=" + param_escape(search); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + dijit.byId('userConfigTab').attr('content', transport.responseText); + selectTab("userConfig", true) + notify(""); + } }); + + } catch (e) { + exception_error("updateUsersList", e); + } +} + +function addUser() { + + try { + + var login = prompt(__("Please enter login:"), ""); + + if (login == null) { + return false; + } + + if (login == "") { + alert(__("Can't create user: no login specified.")); + return false; + } + + notify_progress("Adding user..."); + + var query = "?op=pref-users&method=add&login=" + + param_escape(login); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify_callback2(transport); + updateUsersList(); + } }); + + } catch (e) { + exception_error("addUser", e); + } +} + +function editUser(id, event) { + + try { + var query = "backend.php?op=pref-users&method=edit&id=" + + param_escape(id); + + if (dijit.byId("userEditDlg")) + dijit.byId("userEditDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "userEditDlg", + title: __("User Editor"), + style: "width: 600px", + execute: function() { + if (this.validate()) { + + notify_progress("Saving data...", true); + + var query = dojo.formToQuery("user_edit_form"); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + dialog.hide(); + updateUsersList(); + }}); + } + }, + href: query}); + + dialog.show(); + + } catch (e) { + exception_error("editUser", e); + } + +} + +function editFilter(id) { + try { + + var query = "backend.php?op=pref-filters&method=edit&id=" + param_escape(id); + + if (dijit.byId("feedEditDlg")) + dijit.byId("feedEditDlg").destroyRecursive(); + + if (dijit.byId("filterEditDlg")) + dijit.byId("filterEditDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "filterEditDlg", + title: __("Edit Filter"), + style: "width: 600px", + test: function() { + var query = "backend.php?" + dojo.formToQuery("filter_edit_form") + "&savemode=test"; + + if (dijit.byId("filterTestDlg")) + dijit.byId("filterTestDlg").destroyRecursive(); + + var test_dlg = new dijit.Dialog({ + id: "filterTestDlg", + title: "Test Filter", + style: "width: 600px", + href: query}); + + test_dlg.show(); + }, + selectRules: function(select) { + $$("#filterDlg_Matches input[type=checkbox]").each(function(e) { + e.checked = select; + if (select) + e.parentNode.addClassName("Selected"); + else + e.parentNode.removeClassName("Selected"); + }); + }, + selectActions: function(select) { + $$("#filterDlg_Actions input[type=checkbox]").each(function(e) { + e.checked = select; + + if (select) + e.parentNode.addClassName("Selected"); + else + e.parentNode.removeClassName("Selected"); + + }); + }, + editRule: function(e) { + var li = e.parentNode; + var rule = li.getElementsByTagName("INPUT")[1].value; + addFilterRule(li, rule); + }, + editAction: function(e) { + var li = e.parentNode; + var action = li.getElementsByTagName("INPUT")[1].value; + addFilterAction(li, action); + }, + removeFilter: function() { + var msg = __("Remove filter?"); + + if (confirm(msg)) { + this.hide(); + + notify_progress("Removing filter..."); + + var id = this.attr('value').id; + + var query = "?op=pref-filters&method=remove&ids="+ + param_escape(id); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + updateFilterList(); + } }); + } + }, + addAction: function() { addFilterAction(); }, + addRule: function() { addFilterRule(); }, + deleteAction: function() { + $$("#filterDlg_Actions li.[class*=Selected]").each(function(e) { e.parentNode.removeChild(e) }); + }, + deleteRule: function() { + $$("#filterDlg_Matches li.[class*=Selected]").each(function(e) { e.parentNode.removeChild(e) }); + }, + execute: function() { + if (this.validate()) { + + notify_progress("Saving data...", true); + + var query = dojo.formToQuery("filter_edit_form"); + + console.log(query); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + dialog.hide(); + updateFilterList(); + }}); + } + }, + href: query}); + + dialog.show(); + + + } catch (e) { + exception_error("editFilter", e); + } +} + +function getSelectedLabels() { + var tree = dijit.byId("labelTree"); + var items = tree.model.getCheckedItems(); + var rv = []; + + items.each(function(item) { + rv.push(tree.model.store.getValue(item, 'bare_id')); + }); + + return rv; +} + +function getSelectedUsers() { + return getSelectedTableRowIds("prefUserList"); +} + +function getSelectedFeeds() { + var tree = dijit.byId("feedTree"); + var items = tree.model.getCheckedItems(); + var rv = []; + + items.each(function(item) { + if (item.id[0].match("FEED:")) + rv.push(tree.model.store.getValue(item, 'bare_id')); + }); + + return rv; +} + +function getSelectedCategories() { + var tree = dijit.byId("feedTree"); + var items = tree.model.getCheckedItems(); + var rv = []; + + items.each(function(item) { + if (item.id[0].match("CAT:")) + rv.push(tree.model.store.getValue(item, 'bare_id')); + }); + + return rv; +} + +function getSelectedFilters() { + var tree = dijit.byId("filterTree"); + var items = tree.model.getCheckedItems(); + var rv = []; + + items.each(function(item) { + rv.push(tree.model.store.getValue(item, 'bare_id')); + }); + + return rv; + +} + +function removeSelectedLabels() { + + var sel_rows = getSelectedLabels(); + + if (sel_rows.length > 0) { + + var ok = confirm(__("Remove selected labels?")); + + if (ok) { + notify_progress("Removing selected labels..."); + + var query = "?op=pref-labels&method=remove&ids="+ + param_escape(sel_rows.toString()); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + updateLabelList(); + } }); + + } + } else { + alert(__("No labels are selected.")); + } + + return false; +} + +function removeSelectedUsers() { + + try { + + var sel_rows = getSelectedUsers(); + + if (sel_rows.length > 0) { + + var ok = confirm(__("Remove selected users? Neither default admin nor your account will be removed.")); + + if (ok) { + notify_progress("Removing selected users..."); + + var query = "?op=pref-users&method=remove&ids="+ + param_escape(sel_rows.toString()); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + updateUsersList(); + } }); + + } + + } else { + alert(__("No users are selected.")); + } + + } catch (e) { + exception_error("removeSelectedUsers", e); + } + + return false; +} + +function removeSelectedFilters() { + + try { + + var sel_rows = getSelectedFilters(); + + if (sel_rows.length > 0) { + + var ok = confirm(__("Remove selected filters?")); + + if (ok) { + notify_progress("Removing selected filters..."); + + var query = "?op=pref-filters&method=remove&ids="+ + param_escape(sel_rows.toString()); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + updateFilterList(); + } }); + } + } else { + alert(__("No filters are selected.")); + } + + } catch (e) { + exception_error("removeSelectedFilters", e); + } + + return false; +} + + +function removeSelectedFeeds() { + + try { + + var sel_rows = getSelectedFeeds(); + + if (sel_rows.length > 0) { + + var ok = confirm(__("Unsubscribe from selected feeds?")); + + if (ok) { + + notify_progress("Unsubscribing from selected feeds...", true); + + var query = "?op=pref-feeds&method=remove&ids="+ + param_escape(sel_rows.toString()); + + console.log(query); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + updateFeedList(); + } }); + } + + } else { + alert(__("No feeds are selected.")); + } + + } catch (e) { + exception_error("removeSelectedFeeds", e); + } + + return false; +} + +function clearSelectedFeeds() { + + var sel_rows = getSelectedFeeds(); + + if (sel_rows.length > 1) { + alert(__("Please select only one feed.")); + return; + } + + if (sel_rows.length > 0) { + + var ok = confirm(__("Erase all non-starred articles in selected feed?")); + + if (ok) { + notify_progress("Clearing selected feed..."); + clearFeedArticles(sel_rows[0]); + } + + } else { + + alert(__("No feeds are selected.")); + + } + + return false; +} + +function purgeSelectedFeeds() { + + var sel_rows = getSelectedFeeds(); + + if (sel_rows.length > 0) { + + var pr = prompt(__("How many days of articles to keep (0 - use default)?"), "0"); + + if (pr != undefined) { + notify_progress("Purging selected feed..."); + + var query = "?op=rpc&method=purge&ids="+ + param_escape(sel_rows.toString()) + "&days=" + pr; + + console.log(query); + + new Ajax.Request("prefs.php", { + parameters: query, + onComplete: function(transport) { + notify(''); + } }); + } + + } else { + + alert(__("No feeds are selected.")); + + } + + return false; +} + +function editSelectedUser() { + var rows = getSelectedUsers(); + + if (rows.length == 0) { + alert(__("No users are selected.")); + return; + } + + if (rows.length > 1) { + alert(__("Please select only one user.")); + return; + } + + notify(""); + + editUser(rows[0]); +} + +function resetSelectedUserPass() { + + try { + + var rows = getSelectedUsers(); + + if (rows.length == 0) { + alert(__("No users are selected.")); + return; + } + + if (rows.length > 1) { + alert(__("Please select only one user.")); + return; + } + + var ok = confirm(__("Reset password of selected user?")); + + if (ok) { + notify_progress("Resetting password for selected user..."); + + var id = rows[0]; + + var query = "?op=pref-users&method=resetPass&id=" + + param_escape(id); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify_info(transport.responseText, true); + } }); + + } + + } catch (e) { + exception_error("resetSelectedUserPass", e); + } +} + +function selectedUserDetails() { + + try { + + var rows = getSelectedUsers(); + + if (rows.length == 0) { + alert(__("No users are selected.")); + return; + } + + if (rows.length > 1) { + alert(__("Please select only one user.")); + return; + } + + var id = rows[0]; + + var query = "backend.php?op=pref-users&method=userdetails&id=" + id; + + if (dijit.byId("userDetailsDlg")) + dijit.byId("userDetailsDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "userDetailsDlg", + title: __("User details"), + style: "width: 600px", + execute: function() { + dialog.hide(); + }, + href: query}); + + dialog.show(); + + } catch (e) { + exception_error("selectedUserDetails", e); + } +} + + +function editSelectedFilter() { + var rows = getSelectedFilters(); + + if (rows.length == 0) { + alert(__("No filters are selected.")); + return; + } + + if (rows.length > 1) { + alert(__("Please select only one filter.")); + return; + } + + notify(""); + + editFilter(rows[0]); + +} + +function joinSelectedFilters() { + var rows = getSelectedFilters(); + + if (rows.length == 0) { + alert(__("No filters are selected.")); + return; + } + + var ok = confirm(__("Combine selected filters?")); + + if (ok) { + notify_progress("Joining filters..."); + + var query = "?op=pref-filters&method=join&ids="+ + param_escape(rows.toString()); + + console.log(query); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + updateFilterList(); + } }); + } +} + +function editSelectedFeed() { + var rows = getSelectedFeeds(); + + if (rows.length == 0) { + alert(__("No feeds are selected.")); + return; + } + + if (rows.length > 1) { + return editSelectedFeeds(); + } + + notify(""); + + editFeed(rows[0], {}); + +} + +function editSelectedFeeds() { + + try { + var rows = getSelectedFeeds(); + + if (rows.length == 0) { + alert(__("No feeds are selected.")); + return; + } + + notify_progress("Loading, please wait..."); + + var query = "backend.php?op=pref-feeds&method=editfeeds&ids=" + + param_escape(rows.toString()); + + console.log(query); + + if (dijit.byId("feedEditDlg")) + dijit.byId("feedEditDlg").destroyRecursive(); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + + notify(""); + + var dialog = new dijit.Dialog({ + id: "feedEditDlg", + title: __("Edit Multiple Feeds"), + style: "width: 600px", + getChildByName: function (name) { + var rv = null; + this.getChildren().each( + function(child) { + if (child.name == name) { + rv = child; + return; + } + }); + return rv; + }, + toggleField: function (checkbox, elem, label) { + this.getChildByName(elem).attr('disabled', !checkbox.checked); + + if ($(label)) + if (checkbox.checked) + $(label).removeClassName('insensitive'); + else + $(label).addClassName('insensitive'); + + }, + execute: function() { + if (this.validate() && confirm(__("Save changes to selected feeds?"))) { + var query = dojo.objectToQuery(this.attr('value')); + + /* Form.serialize ignores unchecked checkboxes */ + + if (!query.match("&private=") && + this.getChildByName('private').attr('disabled') == false) { + query = query + "&private=false"; + } + + try { + if (!query.match("&cache_images=") && + this.getChildByName('cache_images').attr('disabled') == false) { + query = query + "&cache_images=false"; + } + } catch (e) { } + + try { + if (!query.match("&hide_images=") && + this.getChildByName('hide_images').attr('disabled') == false) { + query = query + "&hide_images=false"; + } + } catch (e) { } + + if (!query.match("&include_in_digest=") && + this.getChildByName('include_in_digest').attr('disabled') == false) { + query = query + "&include_in_digest=false"; + } + + if (!query.match("&always_display_enclosures=") && + this.getChildByName('always_display_enclosures').attr('disabled') == false) { + query = query + "&always_display_enclosures=false"; + } + + if (!query.match("&mark_unread_on_update=") && + this.getChildByName('mark_unread_on_update').attr('disabled') == false) { + query = query + "&mark_unread_on_update=false"; + } + + console.log(query); + + notify_progress("Saving data...", true); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + dialog.hide(); + updateFeedList(); + }}); + } + }, + content: transport.responseText}); + + dialog.show(); + + } }); + + } catch (e) { + exception_error("editSelectedFeeds", e); + } +} + +function opmlImportComplete(iframe) { + try { + if (!iframe.contentDocument.body.innerHTML) return false; + + Element.show(iframe); + + notify(''); + + if (dijit.byId('opmlImportDlg')) + dijit.byId('opmlImportDlg').destroyRecursive(); + + var content = iframe.contentDocument.body.innerHTML; + + dialog = new dijit.Dialog({ + id: "opmlImportDlg", + title: __("OPML Import"), + style: "width: 600px", + onCancel: function() { + updateFeedList(); + updateFilterList(); + updateLabelList(); + }, + execute: function() { + updateFeedList(); + updateFilterList(); + updateLabelList(); + this.hide(); + }, + content: content}); + + dialog.show(); + + } catch (e) { + exception_error("opmlImportComplete", e); + } +} + +function opmlImport() { + + var opml_file = $("opml_file"); + + if (opml_file.value.length == 0) { + alert(__("Please choose an OPML file first.")); + return false; + } else { + notify_progress("Importing, please wait...", true); + + Element.show("upload_iframe"); + + return true; + } +} + + +function updateFilterList() { + var user_search = $("filter_search"); + var search = ""; + if (user_search) { search = user_search.value; } + + new Ajax.Request("backend.php", { + parameters: "?op=pref-filters&search=" + param_escape(search), + onComplete: function(transport) { + dijit.byId('filterConfigTab').attr('content', transport.responseText); + notify(""); + } }); +} + +function updateLabelList() { + new Ajax.Request("backend.php", { + parameters: "?op=pref-labels", + onComplete: function(transport) { + dijit.byId('labelConfigTab').attr('content', transport.responseText); + notify(""); + } }); +} + +function updatePrefsList() { + new Ajax.Request("backend.php", { + parameters: "?op=pref-prefs", + onComplete: function(transport) { + dijit.byId('genConfigTab').attr('content', transport.responseText); + notify(""); + } }); +} + +function updateSystemList() { + new Ajax.Request("backend.php", { + parameters: "?op=pref-system", + onComplete: function(transport) { + dijit.byId('systemConfigTab').attr('content', transport.responseText); + notify(""); + } }); +} + +function selectTab(id, noupdate, method) { + try { + if (!noupdate) { + notify_progress("Loading, please wait..."); + + if (id == "feedConfig") { + updateFeedList(); + } else if (id == "filterConfig") { + updateFilterList(); + } else if (id == "labelConfig") { + updateLabelList(); + } else if (id == "genConfig") { + updatePrefsList(); + } else if (id == "userConfig") { + updateUsersList(); + } else if (id == "systemConfig") { + updateSystemList(); + } + + var tab = dijit.byId(id + "Tab"); + dijit.byId("pref-tabs").selectChild(tab); + + } + + } catch (e) { + exception_error("selectTab", e); + } +} + +function init_second_stage() { + try { + + document.onkeydown = pref_hotkey_handler; + loading_set_progress(50); + notify(""); + + dojo.addOnLoad(function() { + var tab = getURLParam('tab'); + + if (tab) { + tab = dijit.byId(tab + "Tab"); + if (tab) dijit.byId("pref-tabs").selectChild(tab); + } + + var method = getURLParam('method'); + + if (method == 'editFeed') { + var param = getURLParam('methodparam'); + + window.setTimeout('editFeed(' + param + ')', 100); + } + }); + + setTimeout("hotkey_prefix_timeout()", 5*1000); + + } catch (e) { + exception_error("init_second_stage", e); + } +} + +function init() { + + try { + dojo.registerModulePath("lib", ".."); + dojo.registerModulePath("fox", "../../js/"); + + dojo.require("dijit.ColorPalette"); + dojo.require("dijit.Dialog"); + dojo.require("dijit.form.Button"); + dojo.require("dijit.form.CheckBox"); + dojo.require("dijit.form.DropDownButton"); + dojo.require("dijit.form.FilteringSelect"); + dojo.require("dijit.form.Form"); + dojo.require("dijit.form.RadioButton"); + dojo.require("dijit.form.Select"); + dojo.require("dijit.form.SimpleTextarea"); + dojo.require("dijit.form.TextBox"); + dojo.require("dijit.form.ValidationTextBox"); + dojo.require("dijit.InlineEditBox"); + dojo.require("dijit.layout.AccordionContainer"); + dojo.require("dijit.layout.BorderContainer"); + dojo.require("dijit.layout.ContentPane"); + dojo.require("dijit.layout.TabContainer"); + dojo.require("dijit.Menu"); + dojo.require("dijit.ProgressBar"); + dojo.require("dijit.ProgressBar"); + dojo.require("dijit.Toolbar"); + dojo.require("dijit.Tree"); + dojo.require("dijit.tree.dndSource"); + dojo.require("dojo.data.ItemFileWriteStore"); + + dojo.require("lib.CheckBoxTree"); + dojo.require("fox.PrefFeedTree"); + dojo.require("fox.PrefFilterTree"); + dojo.require("fox.PrefLabelTree"); + + dojo.parser.parse(); + + dojo.addOnLoad(function() { + loading_set_progress(50); + + var clientTzOffset = new Date().getTimezoneOffset() * 60; + + new Ajax.Request("backend.php", { + parameters: {op: "rpc", method: "sanityCheck", + clientTzOffset: clientTzOffset }, + onComplete: function(transport) { + backend_sanity_check_callback(transport); + } }); + }); + + } catch (e) { + exception_error("init", e); + } +} + +function validatePrefsReset() { + try { + var ok = confirm(__("Reset to defaults?")); + + if (ok) { + + query = "?op=pref-prefs&method=resetconfig"; + console.log(query); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + updatePrefsList(); + notify_info(transport.responseText); + } }); + + } + + } catch (e) { + exception_error("validatePrefsReset", e); + } + + return false; + +} + +function pref_hotkey_handler(e) { + try { + + if (e.target.nodeName == "INPUT" || e.target.nodeName == "TEXTAREA") return; + + var keycode = false; + var shift_key = false; + + var cmdline = $('cmdline'); + + try { + shift_key = e.shiftKey; + } catch (e) { + + } + + if (window.event) { + keycode = window.event.keyCode; + } else if (e) { + keycode = e.which; + } + + var keychar = String.fromCharCode(keycode); + + if (keycode == 27) { // escape + hotkey_prefix = false; + } + + if (keycode == 16) return; // ignore lone shift + if (keycode == 17) return; // ignore lone ctrl + + if (!shift_key) keychar = keychar.toLowerCase(); + + var hotkeys = getInitParam("hotkeys"); + + if (!hotkey_prefix && hotkeys[0].indexOf(keychar) != -1) { + + var date = new Date(); + var ts = Math.round(date.getTime() / 1000); + + hotkey_prefix = keychar; + hotkey_prefix_pressed = ts; + + cmdline.innerHTML = keychar; + Element.show(cmdline); + + return true; + } + + Element.hide(cmdline); + + var hotkey = keychar.search(/[a-zA-Z0-9]/) != -1 ? keychar : "(" + keycode + ")"; + hotkey = hotkey_prefix ? hotkey_prefix + " " + hotkey : hotkey; + hotkey_prefix = false; + + var hotkey_action = false; + var hotkeys = getInitParam("hotkeys"); + + for (sequence in hotkeys[1]) { + if (sequence == hotkey) { + hotkey_action = hotkeys[1][sequence]; + break; + } + } + + switch (hotkey_action) { + case "feed_subscribe": + quickAddFeed(); + return false; + case "create_label": + addLabel(); + return false; + case "create_filter": + quickAddFilter(); + return false; + case "help_dialog": + //helpDialog("prefs"); + return false; + default: + console.log("unhandled action: " + hotkey_action + "; hotkey: " + hotkey); + } + + } catch (e) { + exception_error("hotkey_handler", e); + } +} + +function removeCategory(id, item) { + try { + + var ok = confirm(__("Remove category %s? Any nested feeds would be placed into Uncategorized.").replace("%s", item.name)); + + if (ok) { + var query = "?op=pref-feeds&method=removeCat&ids="+ + param_escape(id); + + notify_progress("Removing category..."); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify(''); + updateFeedList(); + } }); + } + + } catch (e) { + exception_error("removeCategory", e); + } +} + +function removeSelectedCategories() { + + var sel_rows = getSelectedCategories(); + + if (sel_rows.length > 0) { + + var ok = confirm(__("Remove selected categories?")); + + if (ok) { + notify_progress("Removing selected categories..."); + + var query = "?op=pref-feeds&method=removeCat&ids="+ + param_escape(sel_rows.toString()); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + updateFeedList(); + } }); + + } + } else { + alert(__("No categories are selected.")); + } + + return false; +} + +function createCategory() { + try { + var title = prompt(__("Category title:")); + + if (title) { + + notify_progress("Creating category..."); + + var query = "?op=pref-feeds&method=addCat&cat=" + + param_escape(title); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify(''); + updateFeedList(); + } }); + } + + } catch (e) { + exception_error("createCategory", e); + } +} + +function showInactiveFeeds() { + try { + var query = "backend.php?op=pref-feeds&method=inactiveFeeds"; + + if (dijit.byId("inactiveFeedsDlg")) + dijit.byId("inactiveFeedsDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "inactiveFeedsDlg", + title: __("Feeds without recent updates"), + style: "width: 600px", + getSelectedFeeds: function() { + return getSelectedTableRowIds("prefInactiveFeedList"); + }, + removeSelected: function() { + var sel_rows = this.getSelectedFeeds(); + + console.log(sel_rows); + + if (sel_rows.length > 0) { + var ok = confirm(__("Remove selected feeds?")); + + if (ok) { + notify_progress("Removing selected feeds...", true); + + var query = "?op=pref-feeds&method=remove&ids="+ + param_escape(sel_rows.toString()); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify(''); + dialog.hide(); + updateFeedList(); + } }); + } + + } else { + alert(__("No feeds are selected.")); + } + }, + execute: function() { + if (this.validate()) { + } + }, + href: query}); + + dialog.show(); + + } catch (e) { + exception_error("showInactiveFeeds", e); + } + +} + +function opmlRegenKey() { + + try { + var ok = confirm(__("Replace current OPML publishing address with a new one?")); + + if (ok) { + + notify_progress("Trying to change address...", true); + + var query = "?op=pref-feeds&method=regenOPMLKey"; + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + var reply = JSON.parse(transport.responseText); + + var new_link = reply.link; + + var e = $('pub_opml_url'); + + if (new_link) { + e.href = new_link; + e.innerHTML = new_link; + + new Effect.Highlight(e); + + notify(''); + + } else { + notify_error("Could not change feed URL."); + } + } }); + } + } catch (e) { + exception_error("opmlRegenKey", e); + } + return false; +} + +function feedActionChange() { + try { + var chooser = $("feedActionChooser"); + var opid = chooser[chooser.selectedIndex].value; + + chooser.selectedIndex = 0; + feedActionGo(opid); + } catch (e) { + exception_error("feedActionChange", e); + } +} + +function feedActionGo(op) { + try { + if (op == "facEdit") { + + var rows = getSelectedFeeds(); + + if (rows.length > 1) { + editSelectedFeeds(); + } else { + editSelectedFeed(); + } + } + + if (op == "facClear") { + clearSelectedFeeds(); + } + + if (op == "facPurge") { + purgeSelectedFeeds(); + } + + if (op == "facEditCats") { + editFeedCats(); + } + + if (op == "facRescore") { + rescoreSelectedFeeds(); + } + + if (op == "facUnsubscribe") { + removeSelectedFeeds(); + } + + } catch (e) { + exception_error("feedActionGo", e); + + } +} + +function clearFeedArticles(feed_id) { + + notify_progress("Clearing feed..."); + + var query = "?op=pref-feeds&quiet=1&method=clear&id=" + feed_id; + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify(''); + } }); + + return false; +} + +function rescoreSelectedFeeds() { + + var sel_rows = getSelectedFeeds(); + + if (sel_rows.length > 0) { + + //var ok = confirm(__("Rescore last 100 articles in selected feeds?")); + var ok = confirm(__("Rescore articles in selected feeds?")); + + if (ok) { + notify_progress("Rescoring selected feeds...", true); + + var query = "?op=pref-feeds&method=rescore&quiet=1&ids="+ + param_escape(sel_rows.toString()); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify_callback2(transport); + } }); + + } + } else { + alert(__("No feeds are selected.")); + } + + return false; +} + +function rescore_all_feeds() { + var ok = confirm(__("Rescore all articles? This operation may take a lot of time.")); + + if (ok) { + notify_progress("Rescoring feeds...", true); + + var query = "?op=pref-feeds&method=rescoreAll&quiet=1"; + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify_callback2(transport); + } }); + } +} + +function labelColorReset() { + try { + var labels = getSelectedLabels(); + + if (labels.length > 0) { + var ok = confirm(__("Reset selected labels to default colors?")); + + if (ok) { + var query = "?op=pref-labels&method=colorreset&ids="+ + param_escape(labels.toString()); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + updateLabelList(); + } }); + } + + } else { + alert(__("No labels are selected.")); + } + + } catch (e) { + exception_error("labelColorReset", e); + } +} + + +function inPreferences() { + return true; +} + +function editProfiles() { + try { + + if (dijit.byId("profileEditDlg")) + dijit.byId("profileEditDlg").destroyRecursive(); + + var query = "backend.php?op=pref-prefs&method=editPrefProfiles"; + + dialog = new dijit.Dialog({ + id: "profileEditDlg", + title: __("Settings Profiles"), + style: "width: 600px", + getSelectedProfiles: function() { + return getSelectedTableRowIds("prefFeedProfileList"); + }, + removeSelected: function() { + var sel_rows = this.getSelectedProfiles(); + + if (sel_rows.length > 0) { + var ok = confirm(__("Remove selected profiles? Active and default profiles will not be removed.")); + + if (ok) { + notify_progress("Removing selected profiles...", true); + + var query = "?op=rpc&method=remprofiles&ids="+ + param_escape(sel_rows.toString()); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify(''); + editProfiles(); + } }); + + } + + } else { + alert(__("No profiles are selected.")); + } + }, + activateProfile: function() { + var sel_rows = this.getSelectedProfiles(); + + if (sel_rows.length == 1) { + + var ok = confirm(__("Activate selected profile?")); + + if (ok) { + notify_progress("Loading, please wait..."); + + var query = "?op=rpc&method=setprofile&id="+ + param_escape(sel_rows.toString()); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + window.location.reload(); + } }); + } + + } else { + alert(__("Please choose a profile to activate.")); + } + }, + addProfile: function() { + if (this.validate()) { + notify_progress("Creating profile...", true); + + var query = "?op=rpc&method=addprofile&title=" + + param_escape(dialog.attr('value').newprofile); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify(''); + editProfiles(); + } }); + + } + }, + execute: function() { + if (this.validate()) { + } + }, + href: query}); + + dialog.show(); + } catch (e) { + exception_error("editProfiles", e); + } +} + +function activatePrefProfile() { + + var sel_rows = getSelectedFeedCats(); + + if (sel_rows.length == 1) { + + var ok = confirm(__("Activate selected profile?")); + + if (ok) { + notify_progress("Loading, please wait..."); + + var query = "?op=rpc&method=setprofile&id="+ + param_escape(sel_rows.toString()); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + window.location.reload(); + } }); + } + + } else { + alert(__("Please choose a profile to activate.")); + } + + return false; +} + +function clearFeedAccessKeys() { + + var ok = confirm(__("This will invalidate all previously generated feed URLs. Continue?")); + + if (ok) { + notify_progress("Clearing URLs..."); + + var query = "?op=pref-feeds&method=clearKeys"; + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify_info("Generated URLs cleared."); + } }); + } + + return false; +} + +function resetFilterOrder() { + try { + notify_progress("Loading, please wait..."); + + new Ajax.Request("backend.php", { + parameters: "?op=pref-filters&method=filtersortreset", + onComplete: function(transport) { + updateFilterList(); + } }); + + + } catch (e) { + exception_error("resetFilterOrder"); + } +} + + +function resetFeedOrder() { + try { + notify_progress("Loading, please wait..."); + + new Ajax.Request("backend.php", { + parameters: "?op=pref-feeds&method=feedsortreset", + onComplete: function(transport) { + updateFeedList(); + } }); + + + } catch (e) { + exception_error("resetFeedOrder"); + } +} + +function resetCatOrder() { + try { + notify_progress("Loading, please wait..."); + + new Ajax.Request("backend.php", { + parameters: "?op=pref-feeds&method=catsortreset", + onComplete: function(transport) { + updateFeedList(); + } }); + + + } catch (e) { + exception_error("resetCatOrder"); + } +} + +function editCat(id, item, event) { + try { + var new_name = prompt(__('Rename category to:'), item.name); + + if (new_name && new_name != item.name) { + + notify_progress("Loading, please wait..."); + + new Ajax.Request("backend.php", { + parameters: { + op: 'pref-feeds', + method: 'renamecat', + id: id, + title: new_name, + }, + onComplete: function(transport) { + updateFeedList(); + } }); + } + + } catch (e) { + exception_error("editCat", e); + } +} + +function editLabel(id, event) { + try { + var query = "backend.php?op=pref-labels&method=edit&id=" + + param_escape(id); + + if (dijit.byId("labelEditDlg")) + dijit.byId("labelEditDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "labelEditDlg", + title: __("Label Editor"), + style: "width: 600px", + setLabelColor: function(id, fg, bg) { + + var kind = ''; + var color = ''; + + if (fg && bg) { + kind = 'both'; + } else if (fg) { + kind = 'fg'; + color = fg; + } else if (bg) { + kind = 'bg'; + color = bg; + } + + var query = "?op=pref-labels&method=colorset&kind="+kind+ + "&ids=" + param_escape(id) + "&fg=" + param_escape(fg) + + "&bg=" + param_escape(bg) + "&color=" + param_escape(color); + + // console.log(query); + + var e = $("LICID-" + id); + + if (e) { + if (fg) e.style.color = fg; + if (bg) e.style.backgroundColor = bg; + } + + new Ajax.Request("backend.php", { parameters: query }); + + updateFilterList(); + }, + execute: function() { + if (this.validate()) { + var caption = this.attr('value').caption; + var fg_color = this.attr('value').fg_color; + var bg_color = this.attr('value').bg_color; + var query = dojo.objectToQuery(this.attr('value')); + + dijit.byId('labelTree').setNameById(id, caption); + this.setLabelColor(id, fg_color, bg_color); + this.hide(); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + updateFilterList(); + } }); + } + }, + href: query}); + + dialog.show(); + + } catch (e) { + exception_error("editLabel", e); + } +} + + +function customizeCSS() { + try { + var query = "backend.php?op=pref-prefs&method=customizeCSS"; + + if (dijit.byId("cssEditDlg")) + dijit.byId("cssEditDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "cssEditDlg", + title: __("Customize stylesheet"), + style: "width: 600px", + execute: function() { + notify_progress('Saving data...', true); + new Ajax.Request("backend.php", { + parameters: dojo.objectToQuery(this.attr('value')), + onComplete: function(transport) { + notify(''); + window.location.reload(); + } }); + + }, + href: query}); + + dialog.show(); + + } catch (e) { + exception_error("customizeCSS", e); + } +} + +function insertSSLserial(value) { + try { + dijit.byId("SSL_CERT_SERIAL").attr('value', value); + } catch (e) { + exception_error("insertSSLcerial", e); + } +} + +function gotoExportOpml(filename, settings) { + tmp = settings ? 1 : 0; + document.location.href = "backend.php?op=opml&method=export&filename=" + filename + "&settings=" + tmp; +} + + +function batchSubscribe() { + try { + var query = "backend.php?op=pref-feeds&method=batchSubscribe"; + + // overlapping widgets + if (dijit.byId("batchSubDlg")) dijit.byId("batchSubDlg").destroyRecursive(); + if (dijit.byId("feedAddDlg")) dijit.byId("feedAddDlg").destroyRecursive(); + + var dialog = new dijit.Dialog({ + id: "batchSubDlg", + title: __("Batch subscribe"), + style: "width: 600px", + execute: function() { + if (this.validate()) { + console.log(dojo.objectToQuery(this.attr('value'))); + + notify_progress(__("Subscribing to feeds..."), true); + + new Ajax.Request("backend.php", { + parameters: dojo.objectToQuery(this.attr('value')), + onComplete: function(transport) { + notify(""); + updateFeedList(); + dialog.hide(); + } }); + } + }, + href: query}); + + dialog.show(); + } catch (e) { + exception_error("batchSubscribe", e); + } +} + + +function toggleAdvancedPrefs() { + try { + notify_progress("Loading, please wait..."); + + new Ajax.Request("backend.php", { + parameters: "?op=pref-prefs&method=toggleadvanced", + onComplete: function(transport) { + updatePrefsList(); + } }); + + } catch (e) { + exception_error("toggleAdvancedPrefs", e); + } +} + +function clearPluginData(name) { + try { + if (confirm(__("Clear stored data for this plugin?"))) { + notify_progress("Loading, please wait..."); + + new Ajax.Request("backend.php", { + parameters: "?op=pref-prefs&method=clearplugindata&name=" + param_escape(name), + onComplete: function(transport) { + notify(''); + updatePrefsList(); + } }); + } + } catch (e) { + exception_error("clearPluginData", e); + } +} + +function clearSqlLog() { + + if (confirm(__("Clear all messages in the error log?"))) { + + notify_progress("Loading, please wait..."); + var query = "?op=pref-system&method=clearLog"; + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + updateSystemList(); + } }); + + } +} + + diff --git a/js/tt-rss.js b/js/tt-rss.js new file mode 100644 index 0000000000..f2a65b5399 --- /dev/null +++ b/js/tt-rss.js @@ -0,0 +1,1141 @@ +var global_unread = -1; +var hotkey_prefix = false; +var hotkey_prefix_pressed = false; +var hotkey_actions = {}; +var _widescreen_mode = false; +var _rpc_seq = 0; +var _active_feed_id = 0; +var _active_feed_is_cat = false; + +function next_seq() { + _rpc_seq += 1; + return _rpc_seq; +} + +function get_seq() { + return _rpc_seq; +} + +function activeFeedIsCat() { + return _active_feed_is_cat; +} + +function getActiveFeedId() { + try { + return _active_feed_id; + } catch (e) { + exception_error("getActiveFeedId", e); + } +} + +function setActiveFeedId(id, is_cat) { + try { + hash_set('f', id); + hash_set('c', is_cat ? 1 : 0); + + _active_feed_id = id; + _active_feed_is_cat = is_cat; + + $("headlines-frame").setAttribute("feed-id", id); + $("headlines-frame").setAttribute("is-cat", is_cat ? 1 : 0); + + selectFeed(id, is_cat); + + PluginHost.run(PluginHost.HOOK_FEED_SET_ACTIVE, _active_article_id); + } catch (e) { + exception_error("setActiveFeedId", e); + } +} + + +function updateFeedList() { + try { + +// $("feeds-holder").innerHTML = "
    " + +// __("Loading, please wait...") + "
    "; + + Element.show("feedlistLoading"); + + if (dijit.byId("feedTree")) { + dijit.byId("feedTree").destroyRecursive(); + } + + var store = new dojo.data.ItemFileWriteStore({ + url: "backend.php?op=pref_feeds&method=getfeedtree&mode=2"}); + + var treeModel = new fox.FeedStoreModel({ + store: store, + query: { + "type": getInitParam('enable_feed_cats') == 1 ? "category" : "feed" + }, + rootId: "root", + rootLabel: "Feeds", + childrenAttrs: ["items"] + }); + + var tree = new fox.FeedTree({ + model: treeModel, + onClick: function (item, node) { + var id = String(item.id); + var is_cat = id.match("^CAT:"); + var feed = id.substr(id.indexOf(":")+1); + viewfeed(feed, '', is_cat); + return false; + }, + openOnClick: false, + showRoot: false, + id: "feedTree", + }, "feedTree"); + +/* var menu = new dijit.Menu({id: 'feedMenu'}); + + menu.addChild(new dijit.MenuItem({ + label: "Simple menu item" + })); + +// menu.bindDomNode(tree.domNode); */ + + var tmph = dojo.connect(dijit.byId('feedMenu'), '_openMyself', function (event) { + console.log(dijit.getEnclosingWidget(event.target)); + dojo.disconnect(tmph); + }); + + $("feeds-holder").appendChild(tree.domNode); + + var tmph = dojo.connect(tree, 'onLoad', function() { + dojo.disconnect(tmph); + Element.hide("feedlistLoading"); + + feedlist_init(); + +// var node = dijit.byId("feedTree")._itemNodesMap['FEED:-2'][0].domNode +// menu.bindDomNode(node); + + loading_set_progress(25); + }); + + tree.startup(); + + + } catch (e) { + exception_error("updateFeedList", e); + } +} + +function catchupAllFeeds() { + + var str = __("Mark all articles as read?"); + + if (getInitParam("confirm_feed_catchup") != 1 || confirm(str)) { + + var query_str = "backend.php?op=feeds&method=catchupAll"; + + notify_progress("Marking all feeds as read..."); + + //console.log("catchupAllFeeds Q=" + query_str); + + new Ajax.Request("backend.php", { + parameters: query_str, + onComplete: function(transport) { + request_counters(true); + viewCurrentFeed(); + } }); + + global_unread = 0; + updateTitle(""); + } +} + +function viewCurrentFeed(method) { + console.log("viewCurrentFeed"); + + if (getActiveFeedId() != undefined) { + viewfeed(getActiveFeedId(), method, activeFeedIsCat()); + } + return false; // block unneeded form submits +} + +function timeout() { + if (getInitParam("bw_limit") != "1") { + request_counters(); + setTimeout("timeout()", 60*1000); + } +} + +function search() { + var query = "backend.php?op=feeds&method=search¶m=" + + param_escape(getActiveFeedId() + ":" + activeFeedIsCat()); + + if (dijit.byId("searchDlg")) + dijit.byId("searchDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "searchDlg", + title: __("Search"), + style: "width: 600px", + execute: function() { + if (this.validate()) { + _search_query = dojo.objectToQuery(this.attr('value')); + this.hide(); + viewCurrentFeed(); + } + }, + href: query}); + + dialog.show(); +} + +function updateTitle() { + var tmp = "Tiny Tiny RSS"; + + if (global_unread > 0) { + tmp = "(" + global_unread + ") " + tmp; + } + + if (window.fluid) { + if (global_unread > 0) { + window.fluid.dockBadge = global_unread; + } else { + window.fluid.dockBadge = ""; + } + } + + document.title = tmp; +} + +function genericSanityCheck() { + setCookie("ttrss_test", "TEST"); + + if (getCookie("ttrss_test") != "TEST") { + return fatalError(2); + } + + return true; +} + + +function init() { + try { + //dojo.registerModulePath("fox", "../../js/"); + + dojo.require("fox.FeedTree"); + + dojo.require("dijit.ColorPalette"); + dojo.require("dijit.Dialog"); + dojo.require("dijit.form.Button"); + dojo.require("dijit.form.CheckBox"); + dojo.require("dijit.form.DropDownButton"); + dojo.require("dijit.form.FilteringSelect"); + dojo.require("dijit.form.Form"); + dojo.require("dijit.form.RadioButton"); + dojo.require("dijit.form.Select"); + dojo.require("dijit.form.SimpleTextarea"); + dojo.require("dijit.form.TextBox"); + dojo.require("dijit.form.ComboBox"); + dojo.require("dijit.form.ValidationTextBox"); + dojo.require("dijit.InlineEditBox"); + dojo.require("dijit.layout.AccordionContainer"); + dojo.require("dijit.layout.BorderContainer"); + dojo.require("dijit.layout.ContentPane"); + dojo.require("dijit.layout.TabContainer"); + dojo.require("dijit.Menu"); + dojo.require("dijit.ProgressBar"); + dojo.require("dijit.ProgressBar"); + dojo.require("dijit.Toolbar"); + dojo.require("dijit.Tree"); + dojo.require("dijit.tree.dndSource"); + dojo.require("dojo.data.ItemFileWriteStore"); + + dojo.parser.parse(); + + if (!genericSanityCheck()) + return false; + + loading_set_progress(30); + + var a = document.createElement('audio'); + + var hasAudio = !!a.canPlayType; + var hasSandbox = "sandbox" in document.createElement("iframe"); + var hasMp3 = !!(a.canPlayType && a.canPlayType('audio/mpeg;').replace(/no/, '')); + var clientTzOffset = new Date().getTimezoneOffset() * 60; + + new Ajax.Request("backend.php", { + parameters: {op: "rpc", method: "sanityCheck", hasAudio: hasAudio, + hasMp3: hasMp3, + clientTzOffset: clientTzOffset, + hasSandbox: hasSandbox}, + onComplete: function(transport) { + backend_sanity_check_callback(transport); + } }); + + hotkey_actions["next_feed"] = function() { + var rv = dijit.byId("feedTree").getNextFeed( + getActiveFeedId(), activeFeedIsCat()); + + if (rv) viewfeed(rv[0], '', rv[1], null, null, null, true); + }; + hotkey_actions["prev_feed"] = function() { + var rv = dijit.byId("feedTree").getPreviousFeed( + getActiveFeedId(), activeFeedIsCat()); + + if (rv) viewfeed(rv[0], '', rv[1], null, null, null, true); + }; + hotkey_actions["next_article"] = function() { + moveToPost('next'); + }; + hotkey_actions["prev_article"] = function() { + moveToPost('prev'); + }; + hotkey_actions["next_article_noscroll"] = function() { + moveToPost('next', true); + }; + hotkey_actions["prev_article_noscroll"] = function() { + moveToPost('prev', true); + }; + hotkey_actions["next_article_noexpand"] = function() { + moveToPost('next', true, true); + }; + hotkey_actions["prev_article_noexpand"] = function() { + moveToPost('prev', true, true); + }; + hotkey_actions["collapse_article"] = function() { + var id = getActiveArticleId(); + var elem = $("CICD-"+id); + + if (elem) { + if (elem.visible()) { + cdmCollapseArticle(null, id); + } + else { + cdmExpandArticle(id); + } + } + }; + hotkey_actions["toggle_expand"] = function() { + var id = getActiveArticleId(); + var elem = $("CICD-"+id); + + if (elem) { + if (elem.visible()) { + cdmCollapseArticle(null, id, false); + } + else { + cdmExpandArticle(id); + } + } + }; + hotkey_actions["search_dialog"] = function() { + search(); + }; + hotkey_actions["toggle_mark"] = function() { + selectionToggleMarked(undefined, false, true); + }; + hotkey_actions["toggle_publ"] = function() { + selectionTogglePublished(undefined, false, true); + }; + hotkey_actions["toggle_unread"] = function() { + selectionToggleUnread(undefined, false, true); + }; + hotkey_actions["edit_tags"] = function() { + var id = getActiveArticleId(); + if (id) { + editArticleTags(id); + }; + } + hotkey_actions["dismiss_selected"] = function() { + dismissSelectedArticles(); + }; + hotkey_actions["dismiss_read"] = function() { + dismissReadArticles(); + }; + hotkey_actions["open_in_new_window"] = function() { + if (getActiveArticleId()) { + openArticleInNewWindow(getActiveArticleId()); + return; + } + }; + hotkey_actions["catchup_below"] = function() { + catchupRelativeToArticle(1); + }; + hotkey_actions["catchup_above"] = function() { + catchupRelativeToArticle(0); + }; + hotkey_actions["article_scroll_down"] = function() { + var ctr = $("content_insert") ? $("content_insert") : $("headlines-frame"); + + scrollArticle(40); + }; + hotkey_actions["article_scroll_up"] = function() { + var ctr = $("content_insert") ? $("content_insert") : $("headlines-frame"); + + scrollArticle(-40); + }; + hotkey_actions["close_article"] = function() { + if (isCdmMode()) { + if (!getInitParam("cdm_expanded")) { + cdmCollapseArticle(false, getActiveArticleId()); + } else { + dismissArticle(getActiveArticleId()); + } + } else { + closeArticlePanel(); + } + }; + hotkey_actions["email_article"] = function() { + if (typeof emailArticle != "undefined") { + emailArticle(); + } else if (typeof mailtoArticle != "undefined") { + mailtoArticle(); + } else { + alert(__("Please enable mail plugin first.")); + } + }; + hotkey_actions["select_all"] = function() { + selectArticles('all'); + }; + hotkey_actions["select_unread"] = function() { + selectArticles('unread'); + }; + hotkey_actions["select_marked"] = function() { + selectArticles('marked'); + }; + hotkey_actions["select_published"] = function() { + selectArticles('published'); + }; + hotkey_actions["select_invert"] = function() { + selectArticles('invert'); + }; + hotkey_actions["select_none"] = function() { + selectArticles('none'); + }; + hotkey_actions["feed_refresh"] = function() { + if (getActiveFeedId() != undefined) { + viewfeed(getActiveFeedId(), '', activeFeedIsCat()); + return; + } + }; + hotkey_actions["feed_unhide_read"] = function() { + toggleDispRead(); + }; + hotkey_actions["feed_subscribe"] = function() { + quickAddFeed(); + }; + hotkey_actions["feed_debug_update"] = function() { + if (!activeFeedIsCat() && parseInt(getActiveFeedId()) > 0) { + window.open("backend.php?op=feeds&method=update_debugger&feed_id=" + getActiveFeedId() + + "&csrf_token=" + getInitParam("csrf_token")); + } else { + alert("You can't debug this kind of feed."); + } + }; + hotkey_actions["feed_edit"] = function() { + if (activeFeedIsCat()) + alert(__("You can't edit this kind of feed.")); + else + editFeed(getActiveFeedId()); + }; + hotkey_actions["feed_catchup"] = function() { + if (getActiveFeedId() != undefined) { + catchupCurrentFeed(); + return; + } + }; + hotkey_actions["feed_reverse"] = function() { + reverseHeadlineOrder(); + }; + hotkey_actions["catchup_all"] = function() { + catchupAllFeeds(); + }; + hotkey_actions["cat_toggle_collapse"] = function() { + if (activeFeedIsCat()) { + dijit.byId("feedTree").collapseCat(getActiveFeedId()); + return; + } + }; + hotkey_actions["goto_all"] = function() { + viewfeed(-4); + }; + hotkey_actions["goto_fresh"] = function() { + viewfeed(-3); + }; + hotkey_actions["goto_marked"] = function() { + viewfeed(-1); + }; + hotkey_actions["goto_published"] = function() { + viewfeed(-2); + }; + hotkey_actions["goto_tagcloud"] = function() { + displayDlg(__("Tag cloud"), "printTagCloud"); + }; + hotkey_actions["goto_prefs"] = function() { + gotoPreferences(); + }; + hotkey_actions["select_article_cursor"] = function() { + var id = getArticleUnderPointer(); + if (id) { + var row = $("RROW-" + id); + + if (row) { + var cb = dijit.getEnclosingWidget( + row.getElementsByClassName("rchk")[0]); + + if (cb) { + cb.attr("checked", !cb.attr("checked")); + toggleSelectRowById(cb, "RROW-" + id); + return false; + } + } + } + }; + hotkey_actions["create_label"] = function() { + addLabel(); + }; + hotkey_actions["create_filter"] = function() { + quickAddFilter(); + }; + hotkey_actions["collapse_sidebar"] = function() { + collapse_feedlist(); + }; + hotkey_actions["toggle_embed_original"] = function() { + if (typeof embedOriginalArticle != "undefined") { + if (getActiveArticleId()) + embedOriginalArticle(getActiveArticleId()); + } else { + alert(__("Please enable embed_original plugin first.")); + } + }; + hotkey_actions["toggle_widescreen"] = function() { + if (!isCdmMode()) { + _widescreen_mode = !_widescreen_mode; + + // reset stored sizes because geometry changed + setCookie("ttrss_ci_width", 0); + setCookie("ttrss_ci_height", 0); + + switchPanelMode(_widescreen_mode); + } else { + alert(__("Widescreen is not available in combined mode.")); + } + }; + hotkey_actions["help_dialog"] = function() { + helpDialog("main"); + }; + hotkey_actions["toggle_combined_mode"] = function() { + notify_progress("Loading, please wait..."); + + var value = isCdmMode() ? "false" : "true"; + var query = "?op=rpc&method=setpref&key=COMBINED_DISPLAY_MODE&value=" + value; + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + setInitParam("combined_display_mode", + !getInitParam("combined_display_mode")); + + closeArticlePanel(); + viewCurrentFeed(); + + } }); + }; + hotkey_actions["toggle_cdm_expanded"] = function() { + notify_progress("Loading, please wait..."); + + var value = getInitParam("cdm_expanded") ? "false" : "true"; + var query = "?op=rpc&method=setpref&key=CDM_EXPANDED&value=" + value; + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + setInitParam("cdm_expanded", !getInitParam("cdm_expanded")); + viewCurrentFeed(); + } }); + }; + + + } catch (e) { + exception_error("init", e); + } +} + +function init_second_stage() { + + try { + dojo.addOnLoad(function() { + updateFeedList(); + closeArticlePanel(); + + if (parseInt(getCookie("ttrss_fh_width")) > 0) { + dijit.byId("feeds-holder").domNode.setStyle( + {width: getCookie("ttrss_fh_width") + "px" }); + } + + dijit.byId("main").resize(); + + var tmph = dojo.connect(dijit.byId('feeds-holder'), 'resize', + function (args) { + if (args && args.w >= 0) { + setCookie("ttrss_fh_width", args.w, getInitParam("cookie_lifetime")); + } + }); + + var tmph = dojo.connect(dijit.byId('content-insert'), 'resize', + function (args) { + if (args && args.w >= 0 && args.h >= 0) { + setCookie("ttrss_ci_width", args.w, getInitParam("cookie_lifetime")); + setCookie("ttrss_ci_height", args.h, getInitParam("cookie_lifetime")); + } + }); + + }); + + delCookie("ttrss_test"); + + var toolbar = document.forms["main_toolbar_form"]; + + dijit.getEnclosingWidget(toolbar.view_mode).attr('value', + getInitParam("default_view_mode")); + + dijit.getEnclosingWidget(toolbar.order_by).attr('value', + getInitParam("default_view_order_by")); + + feeds_sort_by_unread = getInitParam("feeds_sort_by_unread") == 1; + + var hash_feed_id = hash_get('f'); + var hash_feed_is_cat = hash_get('c') == "1"; + + if (hash_feed_id != undefined) { + setActiveFeedId(hash_feed_id, hash_feed_is_cat); + } + + loading_set_progress(50); + + // can't use cache_clear() here because viewfeed might not have initialized yet + if ('sessionStorage' in window && window['sessionStorage'] !== null) + sessionStorage.clear(); + + var hotkeys = getInitParam("hotkeys"); + var tmp = []; + + for (sequence in hotkeys[1]) { + filtered = sequence.replace(/\|.*$/, ""); + tmp[filtered] = hotkeys[1][sequence]; + } + + hotkeys[1] = tmp; + setInitParam("hotkeys", hotkeys); + + _widescreen_mode = getInitParam("widescreen"); + switchPanelMode(_widescreen_mode); + + console.log("second stage ok"); + + if (getInitParam("simple_update")) { + console.log("scheduling simple feed updater..."); + window.setTimeout("update_random_feed()", 30*1000); + } + + } catch (e) { + exception_error("init_second_stage", e); + } +} + +function quickMenuGo(opid) { + try { + switch (opid) { + case "qmcPrefs": + gotoPreferences(); + break; + case "qmcLogout": + gotoLogout(); + break; + case "qmcTagCloud": + displayDlg(__("Tag cloud"), "printTagCloud"); + break; + case "qmcSearch": + search(); + break; + case "qmcAddFeed": + quickAddFeed(); + break; + case "qmcDigest": + window.location.href = "backend.php?op=digest"; + break; + case "qmcEditFeed": + if (activeFeedIsCat()) + alert(__("You can't edit this kind of feed.")); + else + editFeed(getActiveFeedId()); + break; + case "qmcRemoveFeed": + var actid = getActiveFeedId(); + + if (activeFeedIsCat()) { + alert(__("You can't unsubscribe from the category.")); + return; + } + + if (!actid) { + alert(__("Please select some feed first.")); + return; + } + + var fn = getFeedName(actid); + + var pr = __("Unsubscribe from %s?").replace("%s", fn); + + if (confirm(pr)) { + unsubscribeFeed(actid); + } + break; + case "qmcCatchupAll": + catchupAllFeeds(); + break; + case "qmcShowOnlyUnread": + toggleDispRead(); + break; + case "qmcAddFilter": + quickAddFilter(); + break; + case "qmcAddLabel": + addLabel(); + break; + case "qmcRescoreFeed": + rescoreCurrentFeed(); + break; + case "qmcToggleWidescreen": + if (!isCdmMode()) { + _widescreen_mode = !_widescreen_mode; + + // reset stored sizes because geometry changed + setCookie("ttrss_ci_width", 0); + setCookie("ttrss_ci_height", 0); + + switchPanelMode(_widescreen_mode); + } else { + alert(__("Widescreen is not available in combined mode.")); + } + break; + case "qmcHKhelp": + helpDialog("main"); + break; + default: + console.log("quickMenuGo: unknown action: " + opid); + } + + } catch (e) { + exception_error("quickMenuGo", e); + } +} + +function toggleDispRead() { + try { + + var hide = !(getInitParam("hide_read_feeds") == "1"); + + hideOrShowFeeds(hide); + + var query = "?op=rpc&method=setpref&key=HIDE_READ_FEEDS&value=" + + param_escape(hide); + + setInitParam("hide_read_feeds", hide); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + } }); + + } catch (e) { + exception_error("toggleDispRead", e); + } +} + +function parse_runtime_info(data) { + + //console.log("parsing runtime info..."); + + for (k in data) { + var v = data[k]; + +// console.log("RI: " + k + " => " + v); + + if (k == "dep_ts" && parseInt(getInitParam("dep_ts")) > 0) { + if (parseInt(getInitParam("dep_ts")) < parseInt(v) && getInitParam("reload_on_ts_change")) { + window.location.reload(); + } + } + + if (k == "daemon_is_running" && v != 1) { + notify_error("Update daemon is not running.", true); + return; + } + + if (k == "update_result") { + var updatesIcon = dijit.byId("updatesIcon").domNode; + + if (v) { + Element.show(updatesIcon); + } else { + Element.hide(updatesIcon); + } + } + + if (k == "daemon_stamp_ok" && v != 1) { + notify_error("Update daemon is not updating feeds.", true); + return; + } + + if (k == "max_feed_id" || k == "num_feeds") { + if (init_params[k] != v) { + console.log("feed count changed, need to reload feedlist."); + updateFeedList(); + } + } + + init_params[k] = v; + notify(''); + } + + PluginHost.run(PluginHost.HOOK_RUNTIME_INFO_LOADED, data); +} + +function collapse_feedlist() { + try { + + if (!Element.visible('feeds-holder')) { + Element.show('feeds-holder'); + $("collapse_feeds_btn").innerHTML = "<<"; + } else { + Element.hide('feeds-holder'); + $("collapse_feeds_btn").innerHTML = ">>"; + } + + dijit.byId("main").resize(); + + } catch (e) { + exception_error("collapse_feedlist", e); + } +} + +function viewModeChanged() { + cache_clear(); + return viewCurrentFeed(''); +} + +function rescoreCurrentFeed() { + + var actid = getActiveFeedId(); + + if (activeFeedIsCat() || actid < 0) { + alert(__("You can't rescore this kind of feed.")); + return; + } + + if (!actid) { + alert(__("Please select some feed first.")); + return; + } + + var fn = getFeedName(actid); + var pr = __("Rescore articles in %s?").replace("%s", fn); + + if (confirm(pr)) { + notify_progress("Rescoring articles..."); + + var query = "?op=pref-feeds&method=rescore&quiet=1&ids=" + actid; + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + viewCurrentFeed(); + } }); + } +} + +function hotkey_handler(e) { + try { + + if (e.target.nodeName == "INPUT" || e.target.nodeName == "TEXTAREA") return; + + var keycode = false; + var shift_key = false; + var ctrl_key = false; + var alt_key = false; + var meta_key = false; + + var cmdline = $('cmdline'); + + shift_key = e.shiftKey; + ctrl_key = e.ctrlKey; + alt_key = e.altKey; + meta_key = e.metaKey; + + if (window.event) { + keycode = window.event.keyCode; + } else if (e) { + keycode = e.which; + } + + var keychar = String.fromCharCode(keycode); + + if (keycode == 27) { // escape + hotkey_prefix = false; + } + + if (keycode == 16) return; // ignore lone shift + if (keycode == 17) return; // ignore lone ctrl + + keychar = keychar.toLowerCase(); + + var hotkeys = getInitParam("hotkeys"); + + if (!hotkey_prefix && hotkeys[0].indexOf(keychar) != -1) { + + var date = new Date(); + var ts = Math.round(date.getTime() / 1000); + + hotkey_prefix = keychar; + hotkey_prefix_pressed = ts; + + cmdline.innerHTML = keychar; + Element.show(cmdline); + + return true; + } + + Element.hide(cmdline); + + var hotkey = keychar.search(/[a-zA-Z0-9]/) != -1 ? keychar : "(" + keycode + ")"; + + // ensure ^*char notation + if (shift_key) hotkey = "*" + hotkey; + if (ctrl_key) hotkey = "^" + hotkey; + if (alt_key) hotkey = "+" + hotkey; + if (meta_key) hotkey = "%" + hotkey; + + hotkey = hotkey_prefix ? hotkey_prefix + " " + hotkey : hotkey; + hotkey_prefix = false; + + var hotkey_action = false; + var hotkeys = getInitParam("hotkeys"); + + for (sequence in hotkeys[1]) { + if (sequence == hotkey) { + hotkey_action = hotkeys[1][sequence]; + break; + } + } + + var action = hotkey_actions[hotkey_action]; + + if (action != null) { + action(); + return false; + } + + } catch (e) { + exception_error("hotkey_handler", e); + } +} + +function inPreferences() { + return false; +} + +function reverseHeadlineOrder() { + try { + + /* var query_str = "?op=rpc&method=togglepref&key=REVERSE_HEADLINES"; + + new Ajax.Request("backend.php", { + parameters: query_str, + onComplete: function(transport) { + viewCurrentFeed(); + } }); */ + + var toolbar = document.forms["main_toolbar_form"]; + var order_by = dijit.getEnclosingWidget(toolbar.order_by); + + var value = order_by.attr('value'); + + if (value == "date_reverse") + value = "default"; + else + value = "date_reverse"; + + order_by.attr('value', value); + + viewCurrentFeed(); + + } catch (e) { + exception_error("reverseHeadlineOrder", e); + } +} + +function handle_rpc_json(transport, scheduled_call) { + try { + var reply = JSON.parse(transport.responseText); + + var netalert_dijit = dijit.byId("net-alert"); + var netalert = false; + + if (netalert_dijit) + netalert = netalert_dijit.domNode; + + if (reply) { + + var error = reply['error']; + + if (error) { + var code = error['code']; + var msg = error['msg']; + + console.warn("[handle_rpc_json] received fatal error " + code + "/" + msg); + + if (code != 0) { + fatalError(code, msg); + return false; + } + } + + var seq = reply['seq']; + + if (seq) { + if (get_seq() != seq) { + console.log("[handle_rpc_json] sequence mismatch: " + seq + + " (want: " + get_seq() + ")"); + return true; + } + } + + var message = reply['message']; + + if (message) { + if (message == "UPDATE_COUNTERS") { + console.log("need to refresh counters..."); + setInitParam("last_article_id", -1); + request_counters(true); + } + } + + var counters = reply['counters']; + + if (counters) + parse_counters(counters, scheduled_call); + + var runtime_info = reply['runtime-info']; + + if (runtime_info) + parse_runtime_info(runtime_info); + + if (netalert) Element.hide(netalert); + + } else { + if (netalert) + Element.show(netalert); + else + notify_error("Communication problem with server."); + } + + } catch (e) { + if (netalert) + Element.show(netalert); + else + notify_error("Communication problem with server."); + + console.log(e); + //exception_error("handle_rpc_json", e, transport); + } + + return true; +} + +function switchPanelMode(wide) { + try { + if (isCdmMode()) return; + + article_id = getActiveArticleId(); + + if (wide) { + dijit.byId("headlines-wrap-inner").attr("design", 'sidebar'); + dijit.byId("content-insert").attr("region", "trailing"); + + dijit.byId("content-insert").domNode.setStyle({width: '50%', + height: 'auto', + borderTopWidth: '0px' }); + + if (parseInt(getCookie("ttrss_ci_width")) > 0) { + dijit.byId("content-insert").domNode.setStyle( + {width: getCookie("ttrss_ci_width") + "px" }); + } + + $("headlines-frame").setStyle({ borderBottomWidth: '0px' }); + $("headlines-frame").addClassName("wide"); + + } else { + + dijit.byId("content-insert").attr("region", "bottom"); + + dijit.byId("content-insert").domNode.setStyle({width: 'auto', + height: '50%', + borderTopWidth: '0px'}); + + if (parseInt(getCookie("ttrss_ci_height")) > 0) { + dijit.byId("content-insert").domNode.setStyle( + {height: getCookie("ttrss_ci_height") + "px" }); + } + + $("headlines-frame").setStyle({ borderBottomWidth: '1px' }); + $("headlines-frame").removeClassName("wide"); + + } + + closeArticlePanel(); + + if (article_id) view(article_id); + + new Ajax.Request("backend.php", { + parameters: "op=rpc&method=setpanelmode&wide=" + (wide ? 1 : 0), + onComplete: function(transport) { + console.log(transport.responseText); + } }); + + + } catch (e) { + exception_error("switchPanelMode", e); + } +} + +function update_random_feed() { + try { + console.log("in update_random_feed"); + + new Ajax.Request("backend.php", { + parameters: "op=rpc&method=updateRandomFeed", + onComplete: function(transport) { + handle_rpc_json(transport, true); + window.setTimeout("update_random_feed()", 30*1000); + } }); + + } catch (e) { + exception_error("update_random_feed", e); + } +} + +function hash_get(key) { + try { + kv = window.location.hash.substring(1).toQueryParams(); + return kv[key]; + } catch (e) { + exception_error("hash_get", e); + } +} +function hash_set(key, value) { + try { + kv = window.location.hash.substring(1).toQueryParams(); + kv[key] = value; + window.location.hash = $H(kv).toQueryString(); + } catch (e) { + exception_error("hash_set", e); + } +} diff --git a/js/viewfeed.js b/js/viewfeed.js new file mode 100644 index 0000000000..e1425a3820 --- /dev/null +++ b/js/viewfeed.js @@ -0,0 +1,2430 @@ +var article_cache = new Array(); + +var _active_article_id = 0; + +var vgroup_last_feed = false; +var post_under_pointer = false; + +var last_requested_article = false; + +var catchup_id_batch = []; +var catchup_timeout_id = false; + +var cids_requested = []; +var loaded_article_ids = []; +var _last_headlines_update = 0; +var current_first_id = 0; + +var has_storage = 'sessionStorage' in window && window['sessionStorage'] !== null; + +function headlines_callback2(transport, offset, background, infscroll_req) { + try { + handle_rpc_json(transport); + + console.log("headlines_callback2 [offset=" + offset + "] B:" + background + " I:" + infscroll_req); + + var is_cat = false; + var feed_id = false; + + var reply = false; + + try { + reply = JSON.parse(transport.responseText); + } catch (e) { + console.error(e); + } + + if (reply) { + + is_cat = reply['headlines']['is_cat']; + feed_id = reply['headlines']['id']; + + if (background) { + var content = reply['headlines']['content']; + + content = content + "
    "; + return; + } + + if (feed_id != -7 && (feed_id != getActiveFeedId() || is_cat != activeFeedIsCat())) + return; + + /* dijit.getEnclosingWidget( + document.forms["main_toolbar_form"].update).attr('disabled', + is_cat || feed_id <= 0); */ + + try { + if (infscroll_req == false) { + $("headlines-frame").scrollTop = 0; + + $("floatingTitle").style.visibility = "hidden"; + $("floatingTitle").setAttribute("rowid", 0); + $("floatingTitle").innerHTML = ""; + } + } catch (e) { }; + + $("headlines-frame").removeClassName("cdm"); + $("headlines-frame").removeClassName("normal"); + + $("headlines-frame").addClassName(isCdmMode() ? "cdm" : "normal"); + + var headlines_count = reply['headlines-info']['count']; + + vgroup_last_feed = reply['headlines-info']['vgroup_last_feed']; + + if (parseInt(headlines_count) < 30) { + _infscroll_disable = 1; + } else { + _infscroll_disable = 0; + } + + current_first_id = reply['headlines']['first_id']; + var counters = reply['counters']; + var articles = reply['articles']; + //var runtime_info = reply['runtime-info']; + + if (infscroll_req == false) { + loaded_article_ids = []; + + dojo.html.set($("headlines-toolbar"), + reply['headlines']['toolbar'], + {parseContent: true}); + + dojo.html.set($("headlines-frame"), + reply['headlines']['content'], + {parseContent: true}); + + $$("#headlines-frame div[id*='RROW']").each(function(row) { + loaded_article_ids.push(row.id); + }); + + var hsp = $("headlines-spacer"); + if (!hsp) hsp = new Element("DIV", {"id": "headlines-spacer"}); + dijit.byId('headlines-frame').domNode.appendChild(hsp); + + initHeadlinesMenu(); + + if (_infscroll_disable) + hsp.innerHTML = "" + + __("Click to open next unread feed.") + ""; + + if (_search_query) { + $("feed_title").innerHTML += "" + + " (" + __("Cancel search") + ")" + + ""; + } + + } else { + + if (headlines_count > 0 && feed_id == getActiveFeedId() && is_cat == activeFeedIsCat()) { + console.log("adding some more headlines: " + headlines_count); + + var c = dijit.byId("headlines-frame"); + var ids = getSelectedArticleIds2(); + + var hsp = $("headlines-spacer"); + + if (hsp) + c.domNode.removeChild(hsp); + + var tmp = new Element("div"); + tmp.innerHTML = reply['headlines']['content']; + dojo.parser.parse(tmp); + + while (tmp.hasChildNodes()) { + var row = tmp.removeChild(tmp.firstChild); + + if (loaded_article_ids.indexOf(row.id) == -1 || row.hasClassName("cdmFeedTitle")) { + dijit.byId("headlines-frame").domNode.appendChild(row); + Element.hide(row); + new Effect.Appear(row, {duration:0.5}); + loaded_article_ids.push(row.id); + } + } + + if (!hsp) hsp = new Element("DIV", {"id": "headlines-spacer"}); + c.domNode.appendChild(hsp); + + if (headlines_count < 30) _infscroll_disable = true; + + console.log("restore selected ids: " + ids); + + for (var i = 0; i < ids.length; i++) { + markHeadline(ids[i]); + } + + initHeadlinesMenu(); + + if (_infscroll_disable) { + hsp.innerHTML = "" + + __("Click to open next unread feed.") + ""; + } + + } else { + console.log("no new headlines received"); + + var first_id_changed = reply['headlines']['first_id_changed']; + console.log("first id changed:" + first_id_changed); + + var hsp = $("headlines-spacer"); + + if (hsp) { + if (first_id_changed) { + hsp.innerHTML = "" + + __("New articles found, reload feed to continue.") + ""; + } else { + hsp.innerHTML = "" + + __("Click to open next unread feed.") + ""; + } + + } + + } + } + + if (articles) { + for (var i = 0; i < articles.length; i++) { + var a_id = articles[i]['id']; + cache_set("article:" + a_id, articles[i]['content']); + } + } else { + console.log("no cached articles received"); + } + + if (counters) + parse_counters(counters); + else + request_counters(true); + + } else { + console.error("Invalid object received: " + transport.responseText); + dijit.byId("headlines-frame").attr('content', "
    " + + __('Could not update headlines (invalid object received - see error console for details)') + + "
    "); + } + + _infscroll_request_sent = 0; + _last_headlines_update = new Date().getTime(); + + unpackVisibleHeadlines(); + + // if we have some more space in the buffer, why not try to fill it + + if (!_infscroll_disable && $("headlines-spacer") && + $("headlines-spacer").offsetTop < $("headlines-frame").offsetHeight) { + + window.setTimeout(function() { + loadMoreHeadlines(); + }, 250); + } + + notify(""); + + } catch (e) { + exception_error("headlines_callback2", e, transport); + } +} + +function render_article(article) { + try { + dijit.byId("headlines-wrap-inner").addChild( + dijit.byId("content-insert")); + + var c = dijit.byId("content-insert"); + + try { + c.domNode.scrollTop = 0; + } catch (e) { }; + + PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED, article); + + c.attr('content', article); + + correctHeadlinesOffset(getActiveArticleId()); + + try { + c.focus(); + } catch (e) { }; + + } catch (e) { + exception_error("render_article", e); + } +} + +function showArticleInHeadlines(id, noexpand) { + + try { + selectArticles("none"); + + var crow = $("RROW-" + id); + + if (!crow) return; + + var article_is_unread = crow.hasClassName("Unread"); + + if (!noexpand) + crow.removeClassName("Unread"); + crow.addClassName("active"); + + selectArticles('none'); + + var view_mode = false; + + try { + view_mode = document.forms['main_toolbar_form'].view_mode; + view_mode = view_mode[view_mode.selectedIndex].value; + } catch (e) { + // + } + + markHeadline(id); + + if (article_is_unread && !noexpand) + _force_scheduled_update = true; + + } catch (e) { + exception_error("showArticleInHeadlines", e); + } +} + +function article_callback2(transport, id) { + try { + console.log("article_callback2 " + id); + + handle_rpc_json(transport); + + var reply = false; + + try { + reply = JSON.parse(transport.responseText); + } catch (e) { + console.error(e); + } + + if (reply) { + + reply.each(function(article) { + if (getActiveArticleId() == article['id']) { + render_article(article['content']); + } + cids_requested.remove(article['id']); + + cache_set("article:" + article['id'], article['content']); + }); + +// if (id != last_requested_article) { +// console.log("requested article id is out of sequence, aborting"); +// return; +// } + + } else { + console.error("Invalid object received: " + transport.responseText); + + render_article("
    " + + __('Could not display article (invalid object received - see error console for details)') + "
    "); + } + + var unread_in_buffer = $$("#headlines-frame > div[id*=RROW][class*=Unread]").length + request_counters(unread_in_buffer == 0); + + notify(""); + } catch (e) { + exception_error("article_callback2", e, transport); + } +} + +function view(id, activefeed, noexpand) { + try { + var oldrow = $("RROW-" + getActiveArticleId()); + if (oldrow) oldrow.removeClassName("active"); + + var crow = $("RROW-" + id); + + if (!crow) return; + if (noexpand) { + setActiveArticleId(id); + showArticleInHeadlines(id, noexpand); + return; + } + + console.log("loading article: " + id); + + var cached_article = cache_get("article:" + id); + + console.log("cache check result: " + (cached_article != false)); + + var query = "?op=article&method=view&id=" + param_escape(id); + + var neighbor_ids = getRelativePostIds(id); + + /* only request uncached articles */ + + var cids_to_request = []; + + for (var i = 0; i < neighbor_ids.length; i++) { + if (cids_requested.indexOf(neighbor_ids[i]) == -1) + if (!cache_get("article:" + neighbor_ids[i])) { + cids_to_request.push(neighbor_ids[i]); + cids_requested.push(neighbor_ids[i]); + } + } + + console.log("additional ids: " + cids_to_request.toString()); + + query = query + "&cids=" + cids_to_request.toString(); + + var article_is_unread = crow.hasClassName("Unread"); + + setActiveArticleId(id); + showArticleInHeadlines(id); + + if (cached_article && article_is_unread) { + + query = query + "&mode=prefetch"; + + render_article(cached_article); + + } else if (cached_article) { + + query = query + "&mode=prefetch_old"; + render_article(cached_article); + + // if we don't need to request any relative ids, we might as well skip + // the server roundtrip altogether + if (cids_to_request.length == 0) { + return; + } + } + + last_requested_article = id; + + console.log(query); + + if (article_is_unread) { + decrementFeedCounter(getActiveFeedId(), activeFeedIsCat()); + } + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + article_callback2(transport, id); + } }); + + return false; + + } catch (e) { + exception_error("view", e); + } +} + +function toggleMark(id, client_only) { + try { + var query = "?op=rpc&id=" + id + "&method=mark"; + + var row = $("RROW-" + id); + if (!row) return; + + var imgs = []; + + var row_imgs = row.getElementsByClassName("markedPic"); + + for (var i = 0; i < row_imgs.length; i++) + imgs.push(row_imgs[i]); + + var ft = $("floatingTitle"); + + if (ft && ft.getAttribute("rowid") == "RROW-" + id) { + var fte = ft.getElementsByClassName("markedPic"); + + for (var i = 0; i < fte.length; i++) + imgs.push(fte[i]); + } + + for (i = 0; i < imgs.length; i++) { + var img = imgs[i]; + + if (!row.hasClassName("marked")) { + img.src = img.src.replace("mark_unset", "mark_set"); + img.alt = __("Unstar article"); + query = query + "&mark=1"; + } else { + img.src = img.src.replace("mark_set", "mark_unset"); + img.alt = __("Star article"); + query = query + "&mark=0"; + } + } + + row.toggleClassName("marked"); + + if (!client_only) { + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + handle_rpc_json(transport); + } }); + } + + } catch (e) { + exception_error("toggleMark", e); + } +} + +function togglePub(id, client_only, no_effects, note) { + try { + var query = "?op=rpc&id=" + id + "&method=publ"; + + if (note != undefined) { + query = query + "¬e=" + param_escape(note); + } else { + query = query + "¬e=undefined"; + } + + var row = $("RROW-" + id); + if (!row) return; + + var imgs = []; + + var row_imgs = row.getElementsByClassName("pubPic"); + + for (var i = 0; i < row_imgs.length; i++) + imgs.push(row_imgs[i]); + + var ft = $("floatingTitle"); + + if (ft && ft.getAttribute("rowid") == "RROW-" + id) { + var fte = ft.getElementsByClassName("pubPic"); + + for (var i = 0; i < fte.length; i++) + imgs.push(fte[i]); + } + + for (i = 0; i < imgs.length; i++) { + var img = imgs[i]; + + if (!row.hasClassName("published") || note != undefined) { + img.src = img.src.replace("pub_unset", "pub_set"); + img.alt = __("Unpublish article"); + query = query + "&pub=1"; + } else { + img.src = img.src.replace("pub_set", "pub_unset"); + img.alt = __("Publish article"); + query = query + "&pub=0"; + } + } + + if (note != undefined) + row.addClassName("published"); + else + row.toggleClassName("published"); + + if (!client_only) { + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + handle_rpc_json(transport); + } }); + } + + } catch (e) { + exception_error("togglePub", e); + } +} + +function moveToPost(mode, noscroll, noexpand) { + + try { + + var rows = getVisibleArticleIds(); + + var prev_id = false; + var next_id = false; + + if (!$('RROW-' + getActiveArticleId())) { + setActiveArticleId(0); + } + + if (!getActiveArticleId()) { + next_id = rows[0]; + prev_id = rows[rows.length-1] + } else { + for (var i = 0; i < rows.length; i++) { + if (rows[i] == getActiveArticleId()) { + + // Account for adjacent identical article ids. + if (i > 0) prev_id = rows[i-1]; + + for (var j = i+1; j < rows.length; j++) { + if (rows[j] != getActiveArticleId()) { + next_id = rows[j]; + break; + } + } + break; + } + } + } + + if (mode == "next") { + if (next_id || getActiveArticleId()) { + if (isCdmMode()) { + + var article = $("RROW-" + getActiveArticleId()); + var ctr = $("headlines-frame"); + + if (!noscroll && article && article.offsetTop + article.offsetHeight > + ctr.scrollTop + ctr.offsetHeight) { + + scrollArticle(ctr.offsetHeight/4); + + } else if (next_id) { + cdmExpandArticle(next_id, noexpand); + cdmScrollToArticleId(next_id, true); + } + + } else if (next_id) { + correctHeadlinesOffset(next_id); + view(next_id, getActiveFeedId(), noexpand); + } + } + } + + if (mode == "prev") { + if (prev_id || getActiveArticleId()) { + if (isCdmMode()) { + + var article = $("RROW-" + getActiveArticleId()); + var prev_article = $("RROW-" + prev_id); + var ctr = $("headlines-frame"); + + if (!getInitParam("cdm_expanded")) { + + if (!noscroll && article && article.offsetTop < ctr.scrollTop) { + scrollArticle(-ctr.offsetHeight/4); + } else { + cdmExpandArticle(prev_id, noexpand); + cdmScrollToArticleId(prev_id, true); + } + } else { + + if (!noscroll && article && article.offsetTop < ctr.scrollTop) { + scrollArticle(-ctr.offsetHeight/3); + } else if (!noscroll && prev_article && + prev_article.offsetTop < ctr.scrollTop) { + cdmExpandArticle(prev_id, noexpand); + scrollArticle(-ctr.offsetHeight/4); + } else if (prev_id) { + cdmExpandArticle(prev_id, noexpand); + cdmScrollToArticleId(prev_id, noscroll); + } + } + + } else if (prev_id) { + correctHeadlinesOffset(prev_id); + view(prev_id, getActiveFeedId(), noexpand); + } + } + } + + } catch (e) { + exception_error("moveToPost", e); + } +} + +function toggleSelected(id, force_on) { + try { + var row = $("RROW-" + id); + + if (row) { + var cb = dijit.getEnclosingWidget( + row.getElementsByClassName("rchk")[0]); + + if (row.hasClassName('Selected') && !force_on) { + row.removeClassName('Selected'); + if (cb) cb.attr("checked", false); + } else { + row.addClassName('Selected'); + if (cb) cb.attr("checked", true); + } + } + + updateSelectedPrompt(); + } catch (e) { + exception_error("toggleSelected", e); + } +} + +function updateSelectedPrompt() { + try { + var count = getSelectedArticleIds2().size(); + var elem = $("selected_prompt"); + + if (elem) { + elem.innerHTML = ngettext("%d article selected", + "%d articles selected", count).replace("%d", count); + + if (count > 0) + Element.show(elem); + else + Element.hide(elem); + } + + } catch (e) { + exception_error("updateSelectedPrompt", e); + } +} + +function toggleUnread_afh(effect) { + try { + + var elem = effect.element; + elem.style.backgroundColor = ""; + + } catch (e) { + exception_error("toggleUnread_afh", e); + } +} + +function toggleUnread(id, cmode, effect) { + try { + + var row = $("RROW-" + id); + if (row) { + if (cmode == undefined || cmode == 2) { + if (row.hasClassName("Unread")) { + row.removeClassName("Unread"); + + } else { + row.addClassName("Unread"); + } + + } else if (cmode == 0) { + + row.removeClassName("Unread"); + + } else if (cmode == 1) { + row.addClassName("Unread"); + } + + if (cmode == undefined) cmode = 2; + + var query = "?op=rpc&method=catchupSelected" + + "&cmode=" + param_escape(cmode) + "&ids=" + param_escape(id); + +// notify_progress("Loading, please wait..."); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + handle_rpc_json(transport); + } }); + + } + + } catch (e) { + exception_error("toggleUnread", e); + } +} + +function selectionRemoveLabel(id, ids) { + try { + + if (!ids) ids = getSelectedArticleIds2(); + + if (ids.length == 0) { + alert(__("No articles are selected.")); + return; + } + + var query = "?op=article&method=removeFromLabel&ids=" + + param_escape(ids.toString()) + "&lid=" + param_escape(id); + + console.log(query); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + handle_rpc_json(transport); + show_labels_in_headlines(transport); + } }); + + } catch (e) { + exception_error("selectionAssignLabel", e); + + } +} + +function selectionAssignLabel(id, ids) { + try { + + if (!ids) ids = getSelectedArticleIds2(); + + if (ids.length == 0) { + alert(__("No articles are selected.")); + return; + } + + var query = "?op=article&method=assignToLabel&ids=" + + param_escape(ids.toString()) + "&lid=" + param_escape(id); + + console.log(query); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + handle_rpc_json(transport); + show_labels_in_headlines(transport); + } }); + + } catch (e) { + exception_error("selectionAssignLabel", e); + + } +} + +function selectionToggleUnread(set_state, callback, no_error, ids) { + try { + var rows = ids ? ids : getSelectedArticleIds2(); + + if (rows.length == 0 && !no_error) { + alert(__("No articles are selected.")); + return; + } + + for (var i = 0; i < rows.length; i++) { + var row = $("RROW-" + rows[i]); + if (row) { + if (set_state == undefined) { + if (row.hasClassName("Unread")) { + row.removeClassName("Unread"); + } else { + row.addClassName("Unread"); + } + } + + if (set_state == false) { + row.removeClassName("Unread"); + } + + if (set_state == true) { + row.addClassName("Unread"); + } + } + } + + updateFloatingTitle(true); + + if (rows.length > 0) { + + var cmode = ""; + + if (set_state == undefined) { + cmode = "2"; + } else if (set_state == true) { + cmode = "1"; + } else if (set_state == false) { + cmode = "0"; + } + + var query = "?op=rpc&method=catchupSelected" + + "&cmode=" + cmode + "&ids=" + param_escape(rows.toString()); + + notify_progress("Loading, please wait..."); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + handle_rpc_json(transport); + if (callback) callback(transport); + } }); + + } + + } catch (e) { + exception_error("selectionToggleUnread", e); + } +} + +// sel_state ignored +function selectionToggleMarked(sel_state, callback, no_error, ids) { + try { + + var rows = ids ? ids : getSelectedArticleIds2(); + + if (rows.length == 0 && !no_error) { + alert(__("No articles are selected.")); + return; + } + + for (var i = 0; i < rows.length; i++) { + toggleMark(rows[i], true, true); + } + + if (rows.length > 0) { + + var query = "?op=rpc&method=markSelected&ids=" + + param_escape(rows.toString()) + "&cmode=2"; + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + handle_rpc_json(transport); + if (callback) callback(transport); + } }); + + } + + } catch (e) { + exception_error("selectionToggleMarked", e); + } +} + +// sel_state ignored +function selectionTogglePublished(sel_state, callback, no_error, ids) { + try { + + var rows = ids ? ids : getSelectedArticleIds2(); + + if (rows.length == 0 && !no_error) { + alert(__("No articles are selected.")); + return; + } + + for (var i = 0; i < rows.length; i++) { + togglePub(rows[i], true, true); + } + + if (rows.length > 0) { + + var query = "?op=rpc&method=publishSelected&ids=" + + param_escape(rows.toString()) + "&cmode=2"; + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + handle_rpc_json(transport); + } }); + + } + + } catch (e) { + exception_error("selectionToggleMarked", e); + } +} + +function getSelectedArticleIds2() { + + var rv = []; + + $$("#headlines-frame > div[id*=RROW][class*=Selected]").each( + function(child) { + rv.push(child.id.replace("RROW-", "")); + }); + + return rv; +} + +function getLoadedArticleIds() { + var rv = []; + + var children = $$("#headlines-frame > div[id*=RROW-]"); + + children.each(function(child) { + rv.push(child.id.replace("RROW-", "")); + }); + + return rv; + +} + +// mode = all,none,unread,invert,marked,published +function selectArticles(mode, query) { + try { + + if (!query) query = "#headlines-frame > div[id*=RROW]"; + + var children = $$(query); + + children.each(function(child) { + var id = child.id.replace("RROW-", ""); + + var cb = dijit.getEnclosingWidget( + child.getElementsByClassName("rchk")[0]); + + if (mode == "all") { + child.addClassName("Selected"); + if (cb) cb.attr("checked", true); + } else if (mode == "unread") { + if (child.hasClassName("Unread")) { + child.addClassName("Selected"); + if (cb) cb.attr("checked", true); + } else { + child.removeClassName("Selected"); + if (cb) cb.attr("checked", false); + } + } else if (mode == "marked") { + if (child.hasClassName("marked")) { + child.addClassName("Selected"); + if (cb) cb.attr("checked", true); + } else { + child.removeClassName("Selected"); + if (cb) cb.attr("checked", false); + } + } else if (mode == "published") { + if (child.hasClassName("published")) { + child.addClassName("Selected"); + if (cb) cb.attr("checked", true); + } else { + child.removeClassName("Selected"); + if (cb) cb.attr("checked", false); + } + + } else if (mode == "invert") { + if (child.hasClassName("Selected")) { + child.removeClassName("Selected"); + if (cb) cb.attr("checked", false); + } else { + child.addClassName("Selected"); + if (cb) cb.attr("checked", true); + } + + } else { + child.removeClassName("Selected"); + if (cb) cb.attr("checked", false); + } + }); + + updateSelectedPrompt(); + + } catch (e) { + exception_error("selectArticles", e); + } +} + +function deleteSelection() { + + try { + + var rows = getSelectedArticleIds2(); + + if (rows.length == 0) { + alert(__("No articles are selected.")); + return; + } + + var fn = getFeedName(getActiveFeedId(), activeFeedIsCat()); + var str; + + if (getActiveFeedId() != 0) { + str = ngettext("Delete %d selected article in %s?", "Delete %d selected articles in %s?" , rows.length); + } else { + str = ngettext("Delete %d selected article?", "Delete %d selected articles?", rows.length); + } + + str = str.replace("%d", rows.length); + str = str.replace("%s", fn); + + if (getInitParam("confirm_feed_catchup") == 1 && !confirm(str)) { + return; + } + + query = "?op=rpc&method=delete&ids=" + param_escape(rows); + + console.log(query); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + handle_rpc_json(transport); + viewCurrentFeed(); + } }); + + } catch (e) { + exception_error("deleteSelection", e); + } +} + +function archiveSelection() { + + try { + + var rows = getSelectedArticleIds2(); + + if (rows.length == 0) { + alert(__("No articles are selected.")); + return; + } + + var fn = getFeedName(getActiveFeedId(), activeFeedIsCat()); + var str; + var op; + + if (getActiveFeedId() != 0) { + str = ngettext("Archive %d selected article in %s?", "Archive %d selected articles in %s?", rows.length); + op = "archive"; + } else { + str = ngettext("Move %d archived article back?", "Move %d archived articles back?", rows.length); + + str += " " + __("Please note that unstarred articles might get purged on next feed update."); + + op = "unarchive"; + } + + str = str.replace("%d", rows.length); + str = str.replace("%s", fn); + + if (getInitParam("confirm_feed_catchup") == 1 && !confirm(str)) { + return; + } + + query = "?op=rpc&method="+op+"&ids=" + param_escape(rows); + + console.log(query); + + for (var i = 0; i < rows.length; i++) { + cache_delete("article:" + rows[i]); + } + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + handle_rpc_json(transport); + viewCurrentFeed(); + } }); + + } catch (e) { + exception_error("archiveSelection", e); + } +} + +function catchupSelection() { + + try { + + var rows = getSelectedArticleIds2(); + + if (rows.length == 0) { + alert(__("No articles are selected.")); + return; + } + + var fn = getFeedName(getActiveFeedId(), activeFeedIsCat()); + + var str = ngettext("Mark %d selected article in %s as read?", "Mark %d selected articles in %s as read?", rows.length); + + str = str.replace("%d", rows.length); + str = str.replace("%s", fn); + + if (getInitParam("confirm_feed_catchup") == 1 && !confirm(str)) { + return; + } + + selectionToggleUnread(false, 'viewCurrentFeed()', true); + + } catch (e) { + exception_error("catchupSelection", e); + } +} + +function editArticleTags(id) { + var query = "backend.php?op=article&method=editArticleTags¶m=" + param_escape(id); + + if (dijit.byId("editTagsDlg")) + dijit.byId("editTagsDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "editTagsDlg", + title: __("Edit article Tags"), + style: "width: 600px", + execute: function() { + if (this.validate()) { + var query = dojo.objectToQuery(this.attr('value')); + + notify_progress("Saving article tags...", true); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + try { + notify(''); + dialog.hide(); + + var data = JSON.parse(transport.responseText); + + if (data) { + var id = data.id; + + console.log(id); + + var tags = $("ATSTR-" + id); + var tooltip = dijit.byId("ATSTRTIP-" + id); + + if (tags) tags.innerHTML = data.content; + if (tooltip) tooltip.attr('label', data.content_full); + } + } catch (e) { + exception_error("editArticleTags/inner", e); + } + + }}); + } + }, + href: query + }); + + var tmph = dojo.connect(dialog, 'onLoad', function() { + dojo.disconnect(tmph); + + new Ajax.Autocompleter('tags_str', 'tags_choices', + "backend.php?op=article&method=completeTags", + { tokens: ',', paramName: "search" }); + }); + + dialog.show(); + +} + +function cdmScrollToArticleId(id, force) { + try { + var ctr = $("headlines-frame"); + var e = $("RROW-" + id); + + if (!e || !ctr) return; + + if (force || e.offsetTop+e.offsetHeight > (ctr.scrollTop+ctr.offsetHeight) || + e.offsetTop < ctr.scrollTop) { + + // expanded cdm has a 4px margin now + ctr.scrollTop = parseInt(e.offsetTop) - 4; + } + + } catch (e) { + exception_error("cdmScrollToArticleId", e); + } +} + +function setActiveArticleId(id) { + _active_article_id = id; + PluginHost.run(PluginHost.HOOK_ARTICLE_SET_ACTIVE, _active_article_id); +} + +function getActiveArticleId() { + return _active_article_id; +} + +function postMouseIn(e, id) { + post_under_pointer = id; +} + +function postMouseOut(id) { + post_under_pointer = false; +} + +function unpackVisibleHeadlines() { + try { + if (!isCdmMode() || !getInitParam("cdm_expanded")) return; + + $$("#headlines-frame > div[id*=RROW]").each( + function(child) { + if (child.offsetTop <= $("headlines-frame").scrollTop + + $("headlines-frame").offsetHeight) { + + var cencw = $("CENCW-" + child.id.replace("RROW-", "")); + + if (cencw) { + PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED_CDM, child); + + cencw.innerHTML = htmlspecialchars_decode(cencw.innerHTML); + cencw.setAttribute('id', ''); + Element.show(cencw); + } + } + } + ); + + } catch (e) { + exception_error("unpackVisibleHeadlines", e); + } +} + +function headlines_scroll_handler(e) { + try { + var hsp = $("headlines-spacer"); + + unpackVisibleHeadlines(); + + // set topmost child in the buffer as active + if (isCdmMode() && getInitParam("cdm_auto_catchup") == 1 && + getSelectedArticleIds2().length <= 1 && + getInitParam("cdm_expanded")) { + 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 && + child.id.replace("RROW-", "") != _active_article_id) { + + 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 && + ((e.scrollTop + e.offsetHeight) / e.scrollHeight >= 0.7))) { + + if (hsp) + hsp.innerHTML = " " + + __("Loading, please wait...") + ""; + + loadMoreHeadlines(); + return; + + } + /*} else { + if (hsp) { + if (_infscroll_disable) + hsp.innerHTML = "" + + __("Click to open next unread feed.") + ""; + else + hsp.innerHTML = ""; + }*/ + } + + if (isCdmMode()) { + updateFloatingTitle(); + } + + if (getInitParam("cdm_auto_catchup") == 1) { + + // let's get DOM some time to settle down + var ts = new Date().getTime(); + if (ts - _last_headlines_update < 100) return; + + $$("#headlines-frame > div[id*=RROW][class*=Unread]").each( + function(child) { + if (child.hasClassName("Unread") && $("headlines-frame").scrollTop > + (child.offsetTop + child.offsetHeight/2)) { + + var id = child.id.replace("RROW-", ""); + + if (catchup_id_batch.indexOf(id) == -1) + catchup_id_batch.push(id); + + //console.log("auto_catchup_batch: " + catchup_id_batch.toString()); + } + + }); + + if (catchup_id_batch.length > 0) { + window.clearTimeout(catchup_timeout_id); + + if (!_infscroll_request_sent) { + catchup_timeout_id = window.setTimeout('catchupBatchedArticles()', + 500); + } + } + + if (_infscroll_disable) { + var child = $$("#headlines-frame div[id*=RROW]").last(); + + if (child && $("headlines-frame").scrollTop > + (child.offsetTop + child.offsetHeight - 50)) { + + console.log("we seem to be at an end"); + + if (getInitParam("on_catchup_show_next_feed") == "1") { + openNextUnreadFeed(); + } + } + } + } + + } catch (e) { + console.warn("headlines_scroll_handler: " + e); + } +} + +function openNextUnreadFeed() { + try { + var is_cat = activeFeedIsCat(); + var nuf = getNextUnreadFeed(getActiveFeedId(), is_cat); + if (nuf) viewfeed(nuf, '', is_cat); + } catch (e) { + exception_error("openNextUnreadFeed", e); + } +} + +function catchupBatchedArticles() { + try { + if (catchup_id_batch.length > 0 && !_infscroll_request_sent) { + + // make a copy of the array + var batch = catchup_id_batch.slice(); + var query = "?op=rpc&method=catchupSelected" + + "&cmode=0&ids=" + param_escape(batch.toString()); + + console.log(query); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + handle_rpc_json(transport); + + reply = JSON.parse(transport.responseText); + var batch = reply.ids; + + _infscroll_tmp_disable = 1; + + batch.each(function(id) { + console.log(id); + var elem = $("RROW-" + id); + if (elem) elem.removeClassName("Unread"); + catchup_id_batch.remove(id); + }); + + _infscroll_tmp_disable = 0; + + updateFloatingTitle(true); + + } }); + } + + } catch (e) { + exception_error("catchupBatchedArticles", e); + } +} + +function catchupRelativeToArticle(below, id) { + + try { + + if (!id) id = getActiveArticleId(); + + if (!id) { + alert(__("No article is selected.")); + return; + } + + var visible_ids = getVisibleArticleIds(); + + var ids_to_mark = new Array(); + + if (!below) { + for (var i = 0; i < visible_ids.length; i++) { + if (visible_ids[i] != id) { + var e = $("RROW-" + visible_ids[i]); + + if (e && e.hasClassName("Unread")) { + ids_to_mark.push(visible_ids[i]); + } + } else { + break; + } + } + } else { + for (var i = visible_ids.length-1; i >= 0; i--) { + if (visible_ids[i] != id) { + var e = $("RROW-" + visible_ids[i]); + + if (e && e.hasClassName("Unread")) { + ids_to_mark.push(visible_ids[i]); + } + } else { + break; + } + } + } + + if (ids_to_mark.length == 0) { + alert(__("No articles found to mark")); + } else { + var msg = ngettext("Mark %d article as read?", "Mark %d articles as read?", ids_to_mark.length).replace("%d", ids_to_mark.length); + + if (getInitParam("confirm_feed_catchup") != 1 || confirm(msg)) { + + for (var i = 0; i < ids_to_mark.length; i++) { + var e = $("RROW-" + ids_to_mark[i]); + e.removeClassName("Unread"); + } + + var query = "?op=rpc&method=catchupSelected" + + "&cmode=0" + "&ids=" + param_escape(ids_to_mark.toString()); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + handle_rpc_json(transport); + } }); + + } + } + + } catch (e) { + exception_error("catchupRelativeToArticle", e); + } +} + +function cdmCollapseArticle(event, id, unmark) { + try { + if (unmark == undefined) unmark = true; + + var row = $("RROW-" + id); + var elem = $("CICD-" + id); + + if (elem && row) { + var collapse = $$("div#RROW-" + id + + " span[class='collapseBtn']")[0]; + + Element.hide(elem); + Element.show("CEXC-" + id); + Element.hide(collapse); + + if (unmark) { + row.removeClassName("active"); + + markHeadline(id, false); + + if (id == getActiveArticleId()) { + setActiveArticleId(0); + } + + updateSelectedPrompt(); + } + + if (event) Event.stop(event); + + PluginHost.run(PluginHost.HOOK_ARTICLE_COLLAPSED, id); + + if (row.offsetTop < $("headlines-frame").scrollTop) + scrollToRowId(row.id); + + $("floatingTitle").style.visibility = "hidden"; + $("floatingTitle").setAttribute("rowid", false); + } + + } catch (e) { + exception_error("cdmCollapseArticle", e); + } +} + +function cdmExpandArticle(id, noexpand) { + try { + console.log("cdmExpandArticle " + id); + + if (!$("RROW-" + id)) return false; + + var oldrow = $("RROW-" + getActiveArticleId()); + + var elem = $("CICD-" + getActiveArticleId()); + + if (id == getActiveArticleId() && Element.visible(elem)) + return true; + + selectArticles("none"); + + var old_offset = $("RROW-" + id).offsetTop; + + if (getActiveArticleId() && elem && !getInitParam("cdm_expanded")) { + var collapse = $$("div#RROW-" + getActiveArticleId() + + " span[class='collapseBtn']")[0]; + + Element.hide(elem); + Element.show("CEXC-" + getActiveArticleId()); + Element.hide(collapse); + } + + if (oldrow) oldrow.removeClassName("active"); + + setActiveArticleId(id); + + elem = $("CICD-" + id); + + var collapse = $$("div#RROW-" + id + + " span[class='collapseBtn']")[0]; + + var cencw = $("CENCW-" + id); + + if (!Element.visible(elem) && !noexpand) { + if (cencw) { + cencw.innerHTML = htmlspecialchars_decode(cencw.innerHTML); + cencw.setAttribute('id', ''); + Element.show(cencw); + } + + Element.show(elem); + Element.hide("CEXC-" + id); + Element.show(collapse); + } + + var new_offset = $("RROW-" + id).offsetTop; + + if (old_offset > new_offset) + $("headlines-frame").scrollTop -= (old_offset-new_offset); + + if (!noexpand) + toggleUnread(id, 0, true); + toggleSelected(id); + $("RROW-" + id).addClassName("active"); + + PluginHost.run(PluginHost.HOOK_ARTICLE_EXPANDED, id); + + } catch (e) { + exception_error("cdmExpandArticle", e); + } + + return false; +} + +function getArticleUnderPointer() { + return post_under_pointer; +} + +function scrollArticle(offset) { + try { + if (!isCdmMode()) { + var ci = $("content-insert"); + if (ci) { + ci.scrollTop += offset; + } + } else { + var hi = $("headlines-frame"); + if (hi) { + hi.scrollTop += offset; + } + + } + } catch (e) { + exception_error("scrollArticle", e); + } +} + +function show_labels_in_headlines(transport) { + try { + var data = JSON.parse(transport.responseText); + + if (data) { + data['info-for-headlines'].each(function(elem) { + $$(".HLLCTR-" + elem.id).each(function(ctr) { + ctr.innerHTML = elem.labels; + }); + }); + } + } catch (e) { + exception_error("show_labels_in_headlines", e); + } +} + +function dismissArticle(id) { + try { + var elem = $("RROW-" + id); + + if (!elem) return; + + toggleUnread(id, 0, true); + + new Effect.Fade(elem, {duration : 0.5}); + + // Remove the content, too + var elem_content = $("CICD-" + id); + if (elem_content) { + Element.remove(elem_content); + } + + if (id == getActiveArticleId()) { + setActiveArticleId(0); + } + + } catch (e) { + exception_error("dismissArticle", e); + } +} + +function dismissSelectedArticles() { + try { + + var ids = getVisibleArticleIds(); + var tmp = []; + var sel = []; + + for (var i = 0; i < ids.length; i++) { + var elem = $("RROW-" + ids[i]); + + if (elem.className && elem.hasClassName("Selected") && + ids[i] != getActiveArticleId()) { + new Effect.Fade(elem, {duration : 0.5}); + sel.push(ids[i]); + + // Remove the content, too + var elem_content = $("CICD-" + ids[i]); + if (elem_content) { + Element.remove(elem_content); + } + } else { + tmp.push(ids[i]); + } + } + + if (sel.length > 0) + selectionToggleUnread(false); + + + } catch (e) { + exception_error("dismissSelectedArticles", e); + } +} + +function dismissReadArticles() { + try { + + var ids = getVisibleArticleIds(); + var tmp = []; + + for (var i = 0; i < ids.length; i++) { + var elem = $("RROW-" + ids[i]); + + if (elem.className && !elem.hasClassName("Unread") && + !elem.hasClassName("Selected")) { + + new Effect.Fade(elem, {duration : 0.5}); + + // Remove the content, too + var elem_content = $("CICD-" + ids[i]); + if (elem_content) { + Element.remove(elem_content); + } + } else { + tmp.push(ids[i]); + } + } + + } catch (e) { + exception_error("dismissReadArticles", e); + } +} + +function getVisibleArticleIds() { + var ids = []; + + try { + + getLoadedArticleIds().each(function(id) { + var elem = $("RROW-" + id); + if (elem && Element.visible(elem)) + ids.push(id); + }); + + } catch (e) { + exception_error("getVisibleArticleIds", e); + } + + return ids; +} + +function cdmClicked(event, id) { + try { + //var shift_key = event.shiftKey; + + if (!event.ctrlKey) { + + if (!getInitParam("cdm_expanded")) { + return cdmExpandArticle(id); + } else { + + var elem = $("RROW-" + getActiveArticleId()); + + if (elem) elem.removeClassName("active"); + + selectArticles("none"); + toggleSelected(id); + + var elem = $("RROW-" + id); + var article_is_unread = elem.hasClassName("Unread"); + + elem.removeClassName("Unread"); + elem.addClassName("active"); + + setActiveArticleId(id); + + if (article_is_unread) { + decrementFeedCounter(getActiveFeedId(), activeFeedIsCat()); + updateFloatingTitle(true); + } + + var query = "?op=rpc&method=catchupSelected" + + "&cmode=0&ids=" + param_escape(id); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + handle_rpc_json(transport); + } }); + + return !event.shiftKey; + } + + } else if (event.target.parents(".cdmHeader").length > 0) { + + toggleSelected(id, true); + + var elem = $("RROW-" + id); + var article_is_unread = elem.hasClassName("Unread"); + + if (article_is_unread) { + decrementFeedCounter(getActiveFeedId(), activeFeedIsCat()); + } + + toggleUnread(id, 0, false); + + openArticleInNewWindow(id); + } + + var unread_in_buffer = $$("#headlines-frame > div[id*=RROW][class*=Unread]").length + request_counters(unread_in_buffer == 0); + + } catch (e) { + exception_error("cdmClicked"); + } + + return false; +} + +function hlClicked(event, id) { + try { + if (event.which == 2) { + view(id); + return true; + } else if (event.ctrlKey) { + toggleSelected(id, true); + toggleUnread(id, 0, false); + openArticleInNewWindow(id); + return false; + } else { + view(id); + return false; + } + + } catch (e) { + exception_error("hlClicked"); + } +} + +function getFirstVisibleHeadlineId() { + var rows = getVisibleArticleIds(); + return rows[0]; + +} + +function getLastVisibleHeadlineId() { + var rows = getVisibleArticleIds(); + return rows[rows.length-1]; +} + +function openArticleInNewWindow(id) { + toggleUnread(id, 0, false); + window.open("backend.php?op=article&method=redirect&id=" + id); +} + +function isCdmMode() { + return getInitParam("combined_display_mode"); +} + +function markHeadline(id, marked) { + if (marked == undefined) marked = true; + + var row = $("RROW-" + id); + if (row) { + var check = dijit.getEnclosingWidget( + row.getElementsByClassName("rchk")[0]); + + if (check) { + check.attr("checked", marked); + } + + if (marked) + row.addClassName("Selected"); + else + row.removeClassName("Selected"); + } +} + +function getRelativePostIds(id, limit) { + + var tmp = []; + + try { + + if (!limit) limit = 6; //3 + + var ids = getVisibleArticleIds(); + + for (var i = 0; i < ids.length; i++) { + if (ids[i] == id) { + for (var k = 1; k <= limit; k++) { + //if (i > k-1) tmp.push(ids[i-k]); + if (i < ids.length-k) tmp.push(ids[i+k]); + } + break; + } + } + + } catch (e) { + exception_error("getRelativePostIds", e); + } + + return tmp; +} + +function correctHeadlinesOffset(id) { + + try { + + var container = $("headlines-frame"); + var row = $("RROW-" + id); + + if (!container || !row) return; + + var viewport = container.offsetHeight; + + var rel_offset_top = row.offsetTop - container.scrollTop; + var rel_offset_bottom = row.offsetTop + row.offsetHeight - container.scrollTop; + + //console.log("Rtop: " + rel_offset_top + " Rbtm: " + rel_offset_bottom); + //console.log("Vport: " + viewport); + + if (rel_offset_top <= 0 || rel_offset_top > viewport) { + container.scrollTop = row.offsetTop; + } else if (rel_offset_bottom > viewport) { + + /* doesn't properly work with Opera in some cases because + Opera fucks up element scrolling */ + + container.scrollTop = row.offsetTop + row.offsetHeight - viewport; + } + + } catch (e) { + exception_error("correctHeadlinesOffset", e); + } + +} + +function headlineActionsChange(elem) { + try { + eval(elem.value); + elem.attr('value', 'false'); + } catch (e) { + exception_error("headlineActionsChange", e); + } +} + +function closeArticlePanel() { + + if (dijit.byId("content-insert")) + dijit.byId("headlines-wrap-inner").removeChild( + dijit.byId("content-insert")); +} + +function initFloatingMenu() { + try { + if (dijit.byId("floatingMenu")) + dijit.byId("floatingMenu").destroyRecursive(); + + var menu = new dijit.Menu({ + id: "floatingMenu", + targetNodeIds: ["floatingTitle"] + }); + + var id = $("floatingTitle").getAttribute("rowid").replace("RROW-", ""); + + headlinesMenuCommon(menu, id); + + menu.startup(); + } catch (e) { + exception_error("initFloatingMenu", e); + } +} + +function headlinesMenuCommon(menu, base_id) { + try { + + menu.addChild(new dijit.MenuItem({ + label: __("Open original article"), + onClick: function(event) { + openArticleInNewWindow(base_id ? base_id : this.getParent().callerRowId); + }})); + + menu.addChild(new dijit.MenuItem({ + label: __("Display article URL"), + onClick: function(event) { + displayArticleUrl(base_id ? base_id : this.getParent().callerRowId); + }})); + + menu.addChild(new dijit.MenuSeparator()); + + menu.addChild(new dijit.MenuItem({ + label: __("Toggle unread"), + onClick: function(event) { + var ids = getSelectedArticleIds2(); + // cast to string + var id = (base_id ? base_id : this.getParent().callerRowId) + ""; + ids = ids.size() != 0 && ids.indexOf(id) != -1 ? ids : [id]; + + selectionToggleUnread(undefined, false, true, ids); + }})); + + menu.addChild(new dijit.MenuItem({ + label: __("Toggle starred"), + onClick: function(event) { + var ids = getSelectedArticleIds2(); + // cast to string + var id = (base_id ? base_id : this.getParent().callerRowId) + ""; + ids = ids.size() != 0 && ids.indexOf(id) != -1 ? ids : [id]; + + selectionToggleMarked(undefined, false, true, ids); + }})); + + menu.addChild(new dijit.MenuItem({ + label: __("Toggle published"), + onClick: function(event) { + var ids = getSelectedArticleIds2(); + // cast to string + var id = (base_id ? base_id : this.getParent().callerRowId) + ""; + ids = ids.size() != 0 && ids.indexOf(id) != -1 ? ids : [id]; + + selectionTogglePublished(undefined, false, true, ids); + }})); + + menu.addChild(new dijit.MenuSeparator()); + + menu.addChild(new dijit.MenuItem({ + label: __("Mark above as read"), + onClick: function(event) { + catchupRelativeToArticle(0, base_id ? base_id : this.getParent().callerRowId); + }})); + + menu.addChild(new dijit.MenuItem({ + label: __("Mark below as read"), + onClick: function(event) { + catchupRelativeToArticle(1, base_id ? base_id : this.getParent().callerRowId); + }})); + + + var labels = dijit.byId("feedTree").model.getItemsInCategory(-2); + + if (labels) { + + menu.addChild(new dijit.MenuSeparator()); + + var labelAddMenu = new dijit.Menu({ownerMenu: menu}); + var labelDelMenu = new dijit.Menu({ownerMenu: menu}); + + labels.each(function(label) { + var id = label.id[0]; + var bare_id = id.substr(id.indexOf(":")+1); + var name = label.name[0]; + + bare_id = feed_to_label_id(bare_id); + + labelAddMenu.addChild(new dijit.MenuItem({ + label: name, + labelId: bare_id, + onClick: function(event) { + var ids = getSelectedArticleIds2(); + // cast to string + var id = (base_id ? base_id : this.getParent().ownerMenu.callerRowId) + ""; + + ids = ids.size() != 0 && ids.indexOf(id) != -1 ? ids : [id]; + + selectionAssignLabel(this.labelId, ids); + }})); + + labelDelMenu.addChild(new dijit.MenuItem({ + label: name, + labelId: bare_id, + onClick: function(event) { + var ids = getSelectedArticleIds2(); + // cast to string + var id = (base_id ? base_id : this.getParent().ownerMenu.callerRowId) + ""; + + ids = ids.size() != 0 && ids.indexOf(id) != -1 ? ids : [id]; + + selectionRemoveLabel(this.labelId, ids); + }})); + + }); + + menu.addChild(new dijit.PopupMenuItem({ + label: __("Assign label"), + popup: labelAddMenu + })); + + menu.addChild(new dijit.PopupMenuItem({ + label: __("Remove label"), + popup: labelDelMenu + })); + + } + + + } catch (e) { + exception_error("headlinesMenuCommon", e); + } +} + +function initHeadlinesMenu() { + try { + if (dijit.byId("headlinesMenu")) + dijit.byId("headlinesMenu").destroyRecursive(); + + var ids = []; + + if (!isCdmMode()) { + nodes = $$("#headlines-frame > div[id*=RROW]"); + } else { + nodes = $$("#headlines-frame span[id*=RTITLE]"); + } + + nodes.each(function(node) { + ids.push(node.id); + }); + + var menu = new dijit.Menu({ + id: "headlinesMenu", + targetNodeIds: ids + }); + + var tmph = dojo.connect(menu, '_openMyself', function (event) { + var callerNode = event.target, match = null, tries = 0; + + while (match == null && callerNode && tries <= 3) { + match = callerNode.id.match("^[A-Z]+[-]([0-9]+)$"); + callerNode = callerNode.parentNode; + ++tries; + } + + if (match) this.callerRowId = parseInt(match[1]); + + }); + + headlinesMenuCommon(menu, false); + + menu.startup(); + + /* vgroup feed title menu */ + + var nodes = $$("#headlines-frame > div[class='cdmFeedTitle']"); + var ids = []; + + nodes.each(function(node) { + ids.push(node.id); + }); + + if (ids.length > 0) { + if (dijit.byId("headlinesFeedTitleMenu")) + dijit.byId("headlinesFeedTitleMenu").destroyRecursive(); + + var menu = new dijit.Menu({ + id: "headlinesFeedTitleMenu", + targetNodeIds: ids + }); + + var tmph = dojo.connect(menu, '_openMyself', function (event) { + var callerNode = event.target, match = null, tries = 0; + + while (match == null && callerNode && tries <= 3) { + console.log(callerNode.id); + + match = callerNode.id.match("^[A-Z]+[-]([0-9]+)$"); + callerNode = callerNode.parentNode; + ++tries; + + console.log(match[1]); + } + + if (match) this.callerRowId = parseInt(match[1]); + + }); + + menu.addChild(new dijit.MenuItem({ + label: __("Select articles in group"), + onClick: function(event) { + selectArticles("all", + "#headlines-frame > div[id*=RROW]"+ + "[orig-feed-id='"+menu.callerRowId+"']"); + + }})); + + menu.addChild(new dijit.MenuItem({ + label: __("Mark group as read"), + onClick: function(event) { + selectArticles("none"); + selectArticles("all", + "#headlines-frame > div[id*=RROW]"+ + "[orig-feed-id='"+menu.callerRowId+"']"); + + catchupSelection(); + }})); + + + menu.addChild(new dijit.MenuItem({ + label: __("Mark feed as read"), + onClick: function(event) { + catchupFeedInGroup(menu.callerRowId); + }})); + + menu.startup(); + + } + + } catch (e) { + exception_error("initHeadlinesMenu", e); + } +} + +function cache_set(id, obj) { + //console.log("cache_set: " + id); + if (has_storage) + try { + sessionStorage[id] = obj; + } catch (e) { + sessionStorage.clear(); + } +} + +function cache_get(id) { + if (has_storage) + return sessionStorage[id]; +} + +function cache_clear() { + if (has_storage) + sessionStorage.clear(); +} + +function cache_delete(id) { + if (has_storage) + sessionStorage.removeItem(id); +} + +function cancelSearch() { + try { + _search_query = ""; + viewCurrentFeed(); + } catch (e) { + exception_error("cancelSearch", e); + } +} + +function setSelectionScore() { + try { + var ids = getSelectedArticleIds2(); + + if (ids.length > 0) { + console.log(ids); + + var score = prompt(__("Please enter new score for selected articles:"), score); + + if (score != undefined) { + var query = "op=article&method=setScore&id=" + param_escape(ids.toString()) + + "&score=" + param_escape(score); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + var reply = JSON.parse(transport.responseText); + if (reply) { + console.log(ids); + + ids.each(function(id) { + var row = $("RROW-" + id); + + if (row) { + var pic = row.getElementsByClassName("hlScorePic")[0]; + + if (pic) { + pic.src = pic.src.replace(/score_.*?\.png/, + reply["score_pic"]); + pic.setAttribute("score", score); + } + } + }); + } + } }); + } + + } else { + alert(__("No articles are selected.")); + } + } catch (e) { + exception_error("setSelectionScore", e); + } +} + +function updateScore(id) { + try { + var pic = $$("#RROW-" + id + " .hlScorePic")[0]; + + if (pic) { + + var query = "op=article&method=getScore&id=" + param_escape(id); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + console.log(transport.responseText); + + var reply = JSON.parse(transport.responseText); + + if (reply) { + pic.src = pic.src.replace(/score_.*?\.png/, reply["score_pic"]); + pic.setAttribute("score", reply["score"]); + pic.setAttribute("title", reply["score"]); + } + } }); + } + + } catch (e) { + exception_error("updateScore", e); + } +} + +function changeScore(id, pic) { + try { + var score = pic.getAttribute("score"); + + var new_score = prompt(__("Please enter new score for this article:"), score); + + if (new_score != undefined) { + + var query = "op=article&method=setScore&id=" + param_escape(id) + + "&score=" + param_escape(new_score); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + var reply = JSON.parse(transport.responseText); + + if (reply) { + pic.src = pic.src.replace(/score_.*?\.png/, reply["score_pic"]); + pic.setAttribute("score", new_score); + pic.setAttribute("title", new_score); + } + } }); + } + } catch (e) { + exception_error("changeScore", e); + } +} + +function displayArticleUrl(id) { + try { + var query = "op=rpc&method=getlinktitlebyid&id=" + param_escape(id); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + var reply = JSON.parse(transport.responseText); + + if (reply && reply.link) { + prompt(__("Article URL:"), reply.link); + } + } }); + } catch (e) { + exception_error("changeScore", e); + } +} + +function openSelectedAttachment(elem) { + try { + var url = elem[elem.selectedIndex].value; + + if (url) { + window.open(url); + elem.selectedIndex = 0; + } + + } catch (e) { + exception_error("openSelectedAttachment", e); + } +} + +function scrollToRowId(id) { + try { + var row = $(id); + + if (row) + $("headlines-frame").scrollTop = row.offsetTop - 4; + + } catch (e) { + exception_error("scrollToRowId", e); + } +} + +function updateFloatingTitle(unread_only) { + try { + if (!isCdmMode()) return; + + var hf = $("headlines-frame"); + + var elems = $$("#headlines-frame > div[id*=RROW]"); + + for (var i = 0; i < elems.length; i++) { + + var child = elems[i]; + + if (child && child.offsetTop + child.offsetHeight > hf.scrollTop) { + + var header = child.getElementsByClassName("cdmHeader")[0]; + + if (unread_only || child.id != $("floatingTitle").getAttribute("rowid")) { + if (child.id != $("floatingTitle").getAttribute("rowid")) { + $("floatingTitle").setAttribute("rowid", child.id); + $("floatingTitle").innerHTML = header.innerHTML; + $("floatingTitle").firstChild.innerHTML = "" + $("floatingTitle").firstChild.innerHTML; + + initFloatingMenu(); + + var cb = $$("#floatingTitle .dijitCheckBox")[0]; + + if (cb) + cb.parentNode.removeChild(cb); + } + + if (child.hasClassName("Unread")) + $("floatingTitle").addClassName("Unread"); + else + $("floatingTitle").removeClassName("Unread"); + + PluginHost.run(PluginHost.HOOK_FLOATING_TITLE, child); + } + + $("floatingTitle").style.marginRight = hf.offsetWidth - child.offsetWidth + "px"; + if (header.offsetTop + header.offsetHeight < hf.scrollTop + $("floatingTitle").offsetHeight - 5 && + child.offsetTop + child.offsetHeight >= hf.scrollTop + $("floatingTitle").offsetHeight - 5) + $("floatingTitle").style.visibility = "visible"; + else + $("floatingTitle").style.visibility = "hidden"; + + return; + + } + } + + } catch (e) { + exception_error("updateFloatingTitle", e); + } +} + +function cdmFooterClick(event) { + event.stopPropagation(); +} \ No newline at end of file diff --git a/lib/CheckBoxTree.js b/lib/CheckBoxTree.js new file mode 100644 index 0000000000..48cfbae9a9 --- /dev/null +++ b/lib/CheckBoxTree.js @@ -0,0 +1,474 @@ +dojo.provide("lib.CheckBoxTree"); +dojo.provide("lib.CheckBoxStoreModel"); + +// THIS WIDGET IS BASED ON DOJO/DIJIT 1.4.0 AND WILL NOT WORK WITH PREVIOUS VERSIONS +// +// Release date: 02/05/2010 +// + +dojo.require("dijit.Tree"); +dojo.require("dijit.form.CheckBox"); + +dojo.declare( "lib.CheckBoxStoreModel", dijit.tree.TreeStoreModel, +{ + // checkboxAll: Boolean + // If true, every node in the tree will receive a checkbox regardless if the 'checkbox' attribute + // is specified in the dojo.data. + checkboxAll: true, + + // checkboxState: Boolean + // The default state applied to every checkbox unless otherwise specified in the dojo.data. + // (see also: checkboxIdent) + checkboxState: false, + + // checkboxRoot: Boolean + // If true, the root node will receive a checkbox eventhough it's not a true entry in the store. + // This attribute is independent of the showRoot attribute of the tree itself. If the tree + // attribute 'showRoot' is set to false to checkbox for the root will not show either. + checkboxRoot: false, + + // checkboxStrict: Boolean + // If true, a strict parent-child checkbox relation is maintained. For example, if all children + // are checked the parent will automatically be checked or if any of the children are unchecked + // the parent will be unchecked. + checkboxStrict: true, + + // checkboxIdent: String + // The attribute name (attribute of the dojo.data.item) that specifies that items checkbox initial + // state. Example: { name:'Egypt', type:'country', checkbox: true } + // If a dojo.data.item has no 'checkbox' attribute specified it will depend on the attribute + // 'checkboxAll' if one will be created automatically and if so what the initial state will be as + // specified by 'checkboxState'. + checkboxIdent: "checkbox", + + updateCheckbox: function(/*dojo.data.Item*/ storeItem, /*Boolean*/ newState ) { + // summary: + // Update the checkbox state (true/false) for the item and the associated parent and + // child checkboxes if any. + // description: + // Update a single checkbox state (true/false) for the item and the associated parent + // and child checkboxes if any. This function is called from the tree if a user checked + // or unchecked a checkbox on the tree. The parent and child tree nodes are updated to + // maintain consistency if 'checkboxStrict' is set to true. + // storeItem: + // The item in the dojo.data.store whos checkbox state needs updating. + // newState: + // The new state of the checkbox: true or false + // example: + // | model.updateCheckboxState(item, true); + // + + this._setCheckboxState( storeItem, newState ); + //if( this.checkboxStrict ) { I don't need all this 1-1 stuff, only parent -> child (fox) + this._updateChildCheckbox( storeItem, newState ); + //this._updateParentCheckbox( storeItem, newState ); + //} + }, + setAllChecked: function(checked) { + var items = this.store._arrayOfAllItems; + this.setCheckboxState(items, checked); + }, + setCheckboxState: function(items, checked) { + for (var i = 0; i < items.length; i++) { + this._setCheckboxState(items[i], checked); + } + }, + getCheckedItems: function() { + var items = this.store._arrayOfAllItems; + var result = []; + + for (var i = 0; i < items.length; i++) { + if (this.store.getValue(items[i], 'checkbox')) + result.push(items[i]); + } + + return result; + }, + + getCheckboxState: function(/*dojo.data.Item*/ storeItem) { + // summary: + // Get the current checkbox state from the dojo.data.store. + // description: + // Get the current checkbox state from the dojo.data store. A checkbox can have three + // different states: true, false or undefined. Undefined in this context means no + // checkbox identifier (checkboxIdent) was found in the dojo.data store. Depending on + // the checkbox attributes as specified above the following will take place: + // a) If the current checkbox state is undefined and the checkbox attribute 'checkboxAll' or + // 'checkboxRoot' is true one will be created and the default state 'checkboxState' will + // be applied. + // b) If the current state is undefined and 'checkboxAll' is false the state undefined remains + // unchanged and is returned. This will prevent any tree node from creating a checkbox. + // + // storeItem: + // The item in the dojo.data.store whos checkbox state is returned. + // example: + // | var currState = model.getCheckboxState(item); + // + var currState = undefined; + + // Special handling required for the 'fake' root entry (the root is NOT a dojo.data.item). + // this stuff is only relevant for Forest store -fox +/* if ( storeItem == this.root ) { + if( typeof(storeItem.checkbox) == "undefined" ) { + this.root.checkbox = undefined; // create a new checbox reference as undefined. + if( this.checkboxRoot ) { + currState = this.root.checkbox = this.checkboxState; + } + } else { + currState = this.root.checkbox; + } + } else { // a valid dojo.store.item + currState = this.store.getValue(storeItem, this.checkboxIdent); + if( currState == undefined && this.checkboxAll) { + this._setCheckboxState( storeItem, this.checkboxState ); + currState = this.checkboxState; + } + } */ + + currState = this.store.getValue(storeItem, this.checkboxIdent); + if( currState == undefined && this.checkboxAll) { + this._setCheckboxState( storeItem, this.checkboxState ); + currState = this.checkboxState; + } + + return currState; // the current state of the checkbox (true/false or undefined) + }, + + _setCheckboxState: function(/*dojo.data.Item*/ storeItem, /*Boolean*/ newState ) { + // summary: + // Set/update the checkbox state on the dojo.data store. + // description: + // Set/update the checkbox state on the dojo.data.store. Retreive the current + // state of the checkbox and validate if an update is required, this will keep + // update events to a minimum. On completion a 'onCheckboxChange' event is + // triggered. + // If the current state is undefined (ie: no checkbox attribute specified for + // this dojo.data.item) the 'checkboxAll' attribute is checked to see if one + // needs to be created. In case of the root the 'checkboxRoot' attribute is checked. + // NOTE: the store.setValue function will create the 'checkbox' attribute for the + // item if none exists. + // storeItem: + // The item in the dojo.data.store whos checkbox state is updated. + // newState: + // The new state of the checkbox: true or false + // example: + // | model.setCheckboxState(item, true); + // + var stateChanged = true; + + if( storeItem != this.root ) { + var currState = this.store.getValue(storeItem, this.checkboxIdent); + if( currState != newState && ( currState !== undefined || this.checkboxAll ) ) { + this.store.setValue(storeItem, this.checkboxIdent, newState); + } else { + stateChanged = false; // No changes to the checkbox + } + } else { // Tree root instance + if( this.root.checkbox != newState && ( this.root.checkbox !== undefined || this.checkboxRoot ) ) { + this.root.checkbox = newState; + } else { + stateChanged = false; + } + } + if( stateChanged ) { // In case of any changes trigger the update event. + this.onCheckboxChange(storeItem); + } + return stateChanged; + }, + + _updateChildCheckbox: function(/*dojo.data.Item*/ parentItem, /*Boolean*/ newState ) { + // summary: + // Set all child checkboxes to true/false depending on the parent checkbox state. + // description: + // If a parent checkbox changes state, all child and grandchild checkboxes will be + // updated to reflect the change. For example, if the parent state is set to true, + // all child and grandchild checkboxes will receive that same 'true' state. + // If a child checkbox changes state and has multiple parent, all of its parents + // need to be re-evaluated. + // parentItem: + // The parent dojo.data.item whos child/grandchild checkboxes require updating. + // newState: + // The new state of the checkbox: true or false + // + + if( this.mayHaveChildren( parentItem )) { + this.getChildren( parentItem, dojo.hitch( this, + function( children ) { + dojo.forEach( children, function(child) { + if( this._setCheckboxState(child, newState) ) { + var parents = this._getParentsItem(child); + if( parents.length > 1 ) { + this._updateParentCheckbox( child, newState ); + } + } + if( this.mayHaveChildren( child )) { + this._updateChildCheckbox( child, newState ); + } + }, this ); + }), + function(err) { + console.error(this, ": updating child checkboxes: ", err); + } + ); + } + }, + + _updateParentCheckbox: function(/*dojo.data.Item*/ storeItem, /*Boolean*/ newState ) { + // summary: + // Update the parent checkbox state depending on the state of all child checkboxes. + // description: + // Update the parent checkbox state depending on the state of all child checkboxes. + // The parent checkbox automatically changes state if ALL child checkboxes are true + // or false. If, as a result, the parent checkbox changes state, we will check if + // its parent needs to be updated as well all the way upto the root. + // storeItem: + // The dojo.data.item whos parent checkboxes require updating. + // newState: + // The new state of the checkbox: true or false + // + var parents = this._getParentsItem(storeItem); + dojo.forEach( parents, function( parentItem ) { + if( newState ) { // new state = true (checked) + this.getChildren( parentItem, dojo.hitch( this, + function(siblings) { + var allChecked = true; + dojo.some( siblings, function(sibling) { + siblState = this.getCheckboxState(sibling); + if( siblState !== undefined && allChecked ) + allChecked = siblState; + return !(allChecked); + }, this ); + if( allChecked ) { + this._setCheckboxState( parentItem, true ); + this._updateParentCheckbox( parentItem, true ); + } + }), + function(err) { + console.error(this, ": updating parent checkboxes: ", err); + } + ); + } else { // new state = false (unchecked) + if( this._setCheckboxState( parentItem, false ) ) { + this._updateParentCheckbox( parentItem, false ); + } + } + }, this ); + }, + + _getParentsItem: function(/*dojo.data.Item*/ storeItem ) { + // summary: + // Get the parent(s) of a dojo.data item. + // description: + // Get the parent(s) of a dojo.data item. The '_reverseRefMap' entry of the item is + // used to identify the parent(s). A child will have a parent reference if the parent + // specified the '_reference' attribute. + // For example: children:[{_reference:'Mexico'}, {_reference:'Canada'}, ... + // storeItem: + // The dojo.data.item whos parent(s) will be returned. + // + var parents = []; + + if( storeItem != this.root ) { + var references = storeItem[this.store._reverseRefMap]; + for(itemId in references ) { + parents.push(this.store._itemsByIdentity[itemId]); + } + if (!parents.length) { + parents.push(this.root); + } + } + return parents; // parent(s) of a dojo.data.item (Array of dojo.data.items) + }, + + validateData: function(/*dojo.data.Item*/ storeItem, /*thisObject*/ scope ) { + // summary: + // Validate/normalize the parent(s) checkbox data in the dojo.data store. + // description: + // Validate/normalize the parent-child checkbox relationship if the attribute + // 'checkboxStrict' is set to true. This function is called as part of the post + // creation of the Tree instance. All parent checkboxes are set to the appropriate + // state according to the actual state(s) of their children. + // This will potentionally overwrite whatever was specified for the parent in the + // dojo.data store. This will garantee the tree is in a consistent state after startup. + // storeItem: + // The element to start traversing the dojo.data.store, typically model.root + // scope: + // The scope to use when this method executes. + // example: + // | this.model.validateData(this.model.root, this.model); + // + if( !scope.checkboxStrict ) { + return; + } + scope.getChildren( storeItem, dojo.hitch( scope, + function(children) { + var allChecked = true; + var childState; + dojo.forEach( children, function( child ) { + if( this.mayHaveChildren( child )) { + this.validateData( child, this ); + } + childState = this.getCheckboxState( child ); + if( childState !== undefined && allChecked ) + allChecked = childState; + }, this); + + if ( this._setCheckboxState( storeItem, allChecked) ) { + this._updateParentCheckbox( storeItem, allChecked); + } + }), + function(err) { + console.error(this, ": validating checkbox data: ", err); + } + ); + }, + + onCheckboxChange: function(/*dojo.data.Item*/ storeItem ) { + // summary: + // Callback whenever a checkbox state has changed state, so that + // the Tree can update the checkbox. This callback is generally + // triggered by the '_setCheckboxState' function. + // tags: + // callback + } + +}); + +dojo.declare( "lib._CheckBoxTreeNode", dijit._TreeNode, +{ + // _checkbox: [protected] dojo.doc.element + // Local reference to the dojo.doc.element of type 'checkbox' + _checkbox: null, + + _createCheckbox: function() { + // summary: + // Create a checkbox on the CheckBoxTreeNode + // description: + // Create a checkbox on the CheckBoxTreeNode. The checkbox is ONLY created if a + // valid reference was found in the dojo.data store or the attribute 'checkboxAll' + // is set to true. If the current state is 'undefined' no reference was found and + // 'checkboxAll' is set to false. + // Note: the attribute 'checkboxAll' is validated by the getCheckboxState function + // therefore no need to do that here. (see getCheckboxState for details). + // + var currState = this.tree.model.getCheckboxState( this.item ); + if( currState !== undefined ) { + this._checkbox = new dijit.form.CheckBox(); + //this._checkbox = dojo.doc.createElement('input'); + this._checkbox.type = 'checkbox'; + this._checkbox.attr('checked', currState); + dojo.place(this._checkbox.domNode, this.expandoNode, 'after'); + } + }, + + postCreate: function() { + // summary: + // Handle the creation of the checkbox after the CheckBoxTreeNode has been instanciated. + // description: + // Handle the creation of the checkbox after the CheckBoxTreeNode has been instanciated. + this._createCheckbox(); + this.inherited( arguments ); + } + +}); + +dojo.declare( "lib.CheckBoxTree", dijit.Tree, +{ + + onNodeChecked: function(/*dojo.data.Item*/ storeItem, /*treeNode*/ treeNode) { + // summary: + // Callback when a checkbox tree node is checked + // tags: + // callback + }, + + onNodeUnchecked: function(/*dojo.data.Item*/ storeItem, /* treeNode */ treeNode) { + // summary: + // Callback when a checkbox tree node is unchecked + // tags: + // callback + }, + + _onClick: function(/*TreeNode*/ nodeWidget, /*Event*/ e) { + // summary: + // Translates click events into commands for the controller to process + // description: + // the _onClick function is called whenever a 'click' is detected. This + // instance of _onClick only handles the click events associated with + // the checkbox whos DOM name is INPUT. + // + var domElement = e.target; + + // Only handle checkbox clicks here + if(domElement.type != 'checkbox') { + return this.inherited( arguments ); + } + + this._publish("execute", { item: nodeWidget.item, node: nodeWidget} ); + // Go tell the model to update the checkbox state + + this.model.updateCheckbox( nodeWidget.item, nodeWidget._checkbox.checked ); + // Generate some additional events + //this.onClick( nodeWidget.item, nodeWidget, e ); + if(nodeWidget._checkbox.checked) { + this.onNodeChecked( nodeWidget.item, nodeWidget); + } else { + this.onNodeUnchecked( nodeWidget.item, nodeWidget); + } + this.focusNode(nodeWidget); + }, + + _onCheckboxChange: function(/*dojo.data.Item*/ storeItem ) { + // summary: + // Processes notification of a change to a checkbox state (triggered by the model). + // description: + // Whenever the model changes the state of a checkbox in the dojo.data.store it will + // trigger the 'onCheckboxChange' event allowing the Tree to make the same changes + // on the tree Node. There are several conditions why a tree node or checkbox does not + // exists: + // a) The node has not been created yet (the user has not expanded the tree node yet). + // b) The checkbox may be null if condition (a) exists or no 'checkbox' attribute was + // specified for the associated dojo.data.item and the attribute 'checkboxAll' is + // set to false. + // tags: + // callback + var model = this.model, + identity = model.getIdentity(storeItem), + nodes = this._itemNodesMap[identity]; + + // As of dijit.Tree 1.4 multiple references (parents) are supported, therefore we may have + // to update multiple nodes which are all associated with the same dojo.data.item. + if( nodes ) { + dojo.forEach( nodes, function(node) { + if( node._checkbox != null ) { + node._checkbox.attr('checked', this.model.getCheckboxState( storeItem )); + } + }, this ); + } + }, + + postCreate: function() { + // summary: + // Handle any specifics related to the tree and model after the instanciation of the Tree. + // description: + // Validate if we have a 'write' store first. Subscribe to the 'onCheckboxChange' event + // (triggered by the model) and kickoff the initial checkbox data validation. + // + var store = this.model.store; + if(!store.getFeatures()['dojo.data.api.Write']){ + throw new Error("lib.CheckboxTree: store must support dojo.data.Write"); + } + this.connect(this.model, "onCheckboxChange", "_onCheckboxChange"); + this.model.validateData( this.model.root, this.model ); + this.inherited(arguments); + }, + + _createTreeNode: function( args ) { + // summary: + // Create a new CheckboxTreeNode instance. + // description: + // Create a new CheckboxTreeNode instance. + return new lib._CheckBoxTreeNode(args); + } + +}); diff --git a/lib/MiniTemplator.class.php b/lib/MiniTemplator.class.php index 69281cb5ee..a139473f95 100644 --- a/lib/MiniTemplator.class.php +++ b/lib/MiniTemplator.class.php @@ -336,7 +336,7 @@ function processBeginBlockCmd ($parms, $cmdTPosBegin, $cmdTPosEnd) { $this->openBlocksTab[$this->currentNestingLevel] = $blockNo; $this->currentNestingLevel += 1; if ($this->currentNestingLevel > $this->maxNestingLevel) { - $trhis->triggerError ("Block nesting overflow in template at offset $cmdTPosBegin."); + $this->triggerError ("Block nesting overflow in template at offset $cmdTPosBegin."); return false; } return true; } @@ -844,7 +844,7 @@ function readFileIntoString ($fileName, &$s) { $fh = fopen($fileName,"rb"); if ($fh === false) return false; $fileSize = filesize($fileName); - if ($fileSize === false) {close ($fh); return false; } + if ($fileSize === false) {fclose ($fh); return false; } $s = fread($fh,$fileSize); fclose ($fh); if (strlen($s) != $fileSize) return false; diff --git a/lib/Mobile_Detect.php b/lib/Mobile_Detect.php new file mode 100644 index 0000000000..cf9a268af1 --- /dev/null +++ b/lib/Mobile_Detect.php @@ -0,0 +1,220 @@ +isMobile() or $detect->isTablet() + * + * For more specific usage see the documentation navigate to: + * http://code.google.com/p/php-mobile-detect/wiki/Mobile_Detect + * + * @license http://www.opensource.org/licenses/mit-license.php The MIT License + */ + +class Mobile_Detect { + + protected $detectionRules; + protected $userAgent = null; + protected $accept = null; + // Assume the visitor has a desktop environment. + protected $isMobile = false; + protected $isTablet = false; + protected $phoneDeviceName = null; + protected $tabletDevicename = null; + protected $operatingSystemName = null; + protected $userAgentName = null; + // List of mobile devices (phones) + protected $phoneDevices = array( + 'iPhone' => '(iPhone.*Mobile|iPod|iTunes)', + 'BlackBerry' => 'BlackBerry|rim[0-9]+', + 'HTC' => 'HTC|HTC.*(6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090', + 'Nexus' => 'Nexus One|Nexus S', + 'DellStreak' => 'Dell Streak', + 'Motorola' => '\bDroid\b.*Build|HRI39|MOT\-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT909|XT910|XT912|XT928', + 'Samsung' => 'Samsung|GT-I9100|GT-I9000|GT-I9020|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-LC11|SCH-N150|SCH-N300|SCH-R300|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-C207|SGH-C225|SGH-C417|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D807|SGH-E105|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E635|SGH-E715|SGH-I577|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I717|SGH-I727|SGH-I777|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-N105|SGH-N625|SGH-P107|SGH-P207|SGH-P735|SGH-P777|SGH-Q105|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T919|SGH-T929|SGH-T939|SGH-T939|SGH-T959|SGH-T989|SGH-V205|SGH-V206|SGH-X105|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-ZX10|SGH-ZX20|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500I|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100', + 'Sony' => 'E10i|SonyEricsson|SonyEricssonLT15iv', + 'Asus' => 'Asus.*Galaxy', + 'Palm' => 'PalmSource|Palm', // avantgo|blazer|elaine|hiptop|plucker|xiino + 'GenericPhone' => '(mmp|pocket|psp|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|wap|nokia|Series40|Series60|S60|SonyEricsson|N900|PPC;|MAUI.*WAP.*Browser|LG-P500)' + ); + // List of tablet devices. + protected $tabletDevices = array( + 'BlackBerryTablet' => 'PlayBook|RIM Tablet', + 'iPad' => 'iPad|iPad.*Mobile', // @todo: check for mobile friendly emails topic. + 'Kindle' => 'Kindle|Silk.*Accelerated', + 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|GT-P1000|GT-P1010|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I777|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SGH-T989|SPH-D710|SPH-P100', + 'HTCtablet' => 'HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200', + 'MotorolaTablet' => 'xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617', + 'AsusTablet' => 'Transformer|TF101', + 'NookTablet' => 'NookColor|nook browser|BNTV250A|LogicPD Zoom2', + 'AcerTablet' => 'Android.*(A100|A101|A200|A500|A501|A510|W500|W500P|W501|W501P)', + 'YarvikTablet' => 'Android.*(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468)', + 'GenericTablet' => 'Tablet(?!.*PC)|ViewPad7|LG-V909|MID7015|BNTV250A|LogicPD Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b', + ); + // List of mobile Operating Systems. + protected $operatingSystems = array( + 'AndroidOS' => '(android.*mobile|android(?!.*mobile))', + 'BlackBerryOS' => '(blackberry|rim tablet os)', + 'PalmOS' => '(avantgo|blazer|elaine|hiptop|palm|plucker|xiino)', + 'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|\bS60\b', + 'WindowsMobileOS' => 'IEMobile|Windows Phone|Windows CE.*(PPC|Smartphone)|MSIEMobile|Window Mobile|XBLWP7', + 'iOS' => '(iphone|ipod|ipad)', + 'FlashLiteOS' => '', + 'JavaOS' => '', + 'NokiaOS' => '', + 'webOS' => '', + 'badaOS' => '\bBada\b', + 'BREWOS' => '', + ); + // List of mobile User Agents. + protected $userAgents = array( + 'Chrome' => '\bCrMo\b|Chrome\/[.0-9]* Mobile', + 'Dolfin' => '\bDolfin\b', + 'Opera' => 'Opera.*Mini|Opera.*Mobi', + 'Skyfire' => 'skyfire', + 'IE' => 'IEMobile', + 'Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile', + 'Bolt' => 'bolt', + 'TeaShark' => 'teashark', + 'Blazer' => 'Blazer', + 'Safari' => 'Mobile.*Safari|Safari.*Mobile', + 'Midori' => 'midori', + 'GenericBrowser' => 'NokiaBrowser|OviBrowser|SEMC.*Browser' + ); + + function __construct(){ + + // Merge all rules together. + $this->detectionRules = array_merge( + $this->phoneDevices, + $this->tabletDevices, + $this->operatingSystems, + $this->userAgents + ); + $this->userAgent = $_SERVER['HTTP_USER_AGENT']; + $this->accept = $_SERVER['HTTP_ACCEPT']; + + if ( + isset($_SERVER['HTTP_X_WAP_PROFILE']) || + isset($_SERVER['HTTP_X_WAP_CLIENTID']) || + isset($_SERVER['HTTP_WAP_CONNECTION']) || + isset($_SERVER['HTTP_PROFILE']) || + isset($_SERVER['HTTP_X_OPERAMINI_PHONE_UA']) || // Reported by Nokia devices (eg. C3) + isset($_SERVER['HTTP_X_NOKIA_IPADDRESS']) || + isset($_SERVER['HTTP_X_NOKIA_GATEWAY_ID']) || + isset($_SERVER['HTTP_X_ORANGE_ID']) || + isset($_SERVER['HTTP_X_VODAFONE_3GPDPCONTEXT']) || + isset($_SERVER['HTTP_X_HUAWEI_USERID']) || + isset($_SERVER['HTTP_UA_OS']) || // Reported by Windows Smartphones + (isset($_SERVER['HTTP_UA_CPU']) && $_SERVER['HTTP_UA_CPU'] == 'ARM') // Seen this on a HTC + ) { + $this->isMobile = true; + } elseif (!empty($this->accept) && (strpos($this->accept, 'text/vnd.wap.wml') !== false || strpos($this->accept, 'application/vnd.wap.xhtml+xml') !== false)) { + $this->isMobile = true; + } else { + $this->_detect(); + } + + } + + public function getRules() + { + return $this->detectionRules; + } + + /** + * Magic overloading method. + * + * @method boolean is[...]() + * @param string $name + * @param array $arguments + * @return mixed + */ + public function __call($name, $arguments) + { + + $key = substr($name, 2); + return $this->_detect($key); + + } + + /** + * Private method that does the detection of the + * mobile devices. + * + * @param type $key + * @return boolean|null + */ + private function _detect($key='') + { + + if(empty($key)){ + + // Begin general search. + foreach($this->detectionRules as $_regex){ + if(empty($_regex)){ continue; } + if(preg_match('/'.$_regex.'/is', $this->userAgent)){ + $this->isMobile = true; + return true; + } + } + return false; + + } else { + + // Search for a certain key. + // Make the keys lowecase so we can match: isIphone(), isiPhone(), isiphone(), etc. + $key = strtolower($key); + $_rules = array_change_key_case($this->detectionRules); + + if(array_key_exists($key, $_rules)){ + if(empty($_rules[$key])){ return null; } + if(preg_match('/'.$_rules[$key].'/is', $this->userAgent)){ + $this->isMobile = true; + return true; + } else { + return false; + } + } else { + trigger_error("Method $key is not defined", E_USER_WARNING); + } + + return false; + + } + + } + + /** + * Check if the device is mobile. + * Returns true if any type of mobile device detected, including special ones + * @return bool + */ + public function isMobile() + { + return $this->isMobile; + } + + /** + * Check if the device is a tablet. + * Return true if any type of tablet device is detected. + * @return boolean + */ + public function isTablet() + { + + foreach($this->tabletDevices as $_regex){ + if(preg_match('/'.$_regex.'/is', $this->userAgent)){ + $this->isTablet = true; + return true; + } + } + + return false; + + } + + +} \ No newline at end of file diff --git a/extras/button/license.txt b/lib/button/license.txt similarity index 100% rename from extras/button/license.txt rename to lib/button/license.txt diff --git a/extras/button/musicplayer.swf b/lib/button/musicplayer.swf similarity index 100% rename from extras/button/musicplayer.swf rename to lib/button/musicplayer.swf diff --git a/extras/button/musicplayer_f6.swf b/lib/button/musicplayer_f6.swf similarity index 100% rename from extras/button/musicplayer_f6.swf rename to lib/button/musicplayer_f6.swf diff --git a/lib/dijit/BackgroundIframe.js b/lib/dijit/BackgroundIframe.js new file mode 100644 index 0000000000..8b6f3f8560 --- /dev/null +++ b/lib/dijit/BackgroundIframe.js @@ -0,0 +1,2 @@ +//>>built +define("dijit/BackgroundIframe",["require","./main","dojo/_base/config","dojo/dom-construct","dojo/dom-style","dojo/_base/lang","dojo/on","dojo/sniff","dojo/_base/window"],function(_1,_2,_3,_4,_5,_6,on,_7,_8){var _9=new function(){var _a=[];this.pop=function(){var _b;if(_a.length){_b=_a.pop();_b.style.display="";}else{if(_7("ie")<9){var _c=_3["dojoBlankHtmlUrl"]||_1.toUrl("dojo/resources/blank.html")||"javascript:\"\"";var _d="");}};_8.setInitialState=function(_23){_e=_1b(_c,_23,_d);};_8.addToHistory=function(_24){_12=[];var _25=null;var url=null;if(!_11){if(_1["useXDomain"]&&!_1["dojoIframeHistoryUrl"]){console.warn("dojo/back: When using cross-domain Dojo builds,"+" please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl"+" to the path on your domain to iframe_history.html");}_11=window.frames["dj_history"];}if(!_10){_10=_5.create("a",{style:{display:"none"}},_6.body());}if(_24["changeUrl"]){_25=""+((_24["changeUrl"]!==true)?_24["changeUrl"]:(new Date()).getTime());if(_13.length==0&&_e.urlHash==_25){_e=_1b(url,_24,_25);return;}else{if(_13.length>0&&_13[_13.length-1].urlHash==_25){_13[_13.length-1]=_1b(url,_24,_25);return;}}_15=true;setTimeout(function(){_a(_25);_15=false;},1);_10.href=_25;if(_3("ie")){url=_20();var _26=_24["back"]||_24["backButton"]||_24["handle"];var tcb=function(_27){if(_9()!=""){setTimeout(function(){_a(_25);},1);}_26.apply(this,[_27]);};if(_24["back"]){_24.back=tcb;}else{if(_24["backButton"]){_24.backButton=tcb;}else{if(_24["handle"]){_24.handle=tcb;}}}var _28=_24["forward"]||_24["forwardButton"]||_24["handle"];var tfw=function(_29){if(_9()!=""){_a(_25);}if(_28){_28.apply(this,[_29]);}};if(_24["forward"]){_24.forward=tfw;}else{if(_24["forwardButton"]){_24.forwardButton=tfw;}else{if(_24["handle"]){_24.handle=tfw;}}}}else{if(!_3("ie")){if(!_f){_f=setInterval(_21,200);}}}}else{url=_20();}_13.push(_1b(url,_24,_25));};_8._iframeLoaded=function(evt,_2a){var _2b=_1e(_2a.href);if(_2b==null){if(_13.length==1){_16();}return;}if(_14){_14=false;return;}if(_13.length>=2&&_2b==_1e(_13[_13.length-2].url)){_16();}else{if(_12.length>0&&_2b==_1e(_12[_12.length-1].url)){_19();}}};return _8;}); \ No newline at end of file diff --git a/lib/dojo/behavior.js b/lib/dojo/behavior.js new file mode 100644 index 0000000000..40d5d6a7ff --- /dev/null +++ b/lib/dojo/behavior.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/behavior",["./_base/kernel","./_base/lang","./_base/array","./_base/connect","./query","./ready"],function(_1,_2,_3,_4,_5,_6){_1.deprecated("dojo.behavior","Use dojo/on with event delegation (on.selector())");var _7=function(){function _8(_9,_a){if(!_9[_a]){_9[_a]=[];}return _9[_a];};var _b=0;function _c(_d,_e,_f){var _10={};for(var x in _d){if(typeof _10[x]=="undefined"){if(!_f){_e(_d[x],x);}else{_f.call(_e,_d[x],x);}}}};this._behaviors={};this.add=function(_11){_c(_11,this,function(_12,_13){var _14=_8(this._behaviors,_13);if(typeof _14["id"]!="number"){_14.id=_b++;}var _15=[];_14.push(_15);if((_2.isString(_12))||(_2.isFunction(_12))){_12={found:_12};}_c(_12,function(_16,_17){_8(_15,_17).push(_16);});});};var _18=function(_19,_1a,_1b){if(_2.isString(_1a)){if(_1b=="found"){_4.publish(_1a,[_19]);}else{_4.connect(_19,_1b,function(){_4.publish(_1a,arguments);});}}else{if(_2.isFunction(_1a)){if(_1b=="found"){_1a(_19);}else{_4.connect(_19,_1b,_1a);}}}};this.apply=function(){_c(this._behaviors,function(_1c,id){_5(id).forEach(function(_1d){var _1e=0;var bid="_dj_behavior_"+_1c.id;if(typeof _1d[bid]=="number"){_1e=_1d[bid];if(_1e==(_1c.length)){return;}}for(var x=_1e,_1f;_1f=_1c[x];x++){_c(_1f,function(_20,_21){if(_2.isArray(_20)){_3.forEach(_20,function(_22){_18(_1d,_22,_21);});}});}_1d[bid]=_1c.length;});});};};_1.behavior=new _7();_6(_1.behavior,"apply");return _1.behavior;}); \ No newline at end of file diff --git a/lib/dojo/cache.js b/lib/dojo/cache.js new file mode 100644 index 0000000000..b4dfd7bee6 --- /dev/null +++ b/lib/dojo/cache.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cache",["./_base/kernel","./text"],function(_1){return _1.cache;}); \ No newline at end of file diff --git a/lib/dojo/cldr/LICENSE b/lib/dojo/cldr/LICENSE new file mode 100644 index 0000000000..7aeb1dd5b6 --- /dev/null +++ b/lib/dojo/cldr/LICENSE @@ -0,0 +1,29 @@ +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + +Unicode Data Files include all data files under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, +and http://www.unicode.org/cldr/data/ . Unicode Software includes any source code published in the Unicode Standard or under +the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/. +NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, INSTALLING, COPYING OR +OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU +UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS +AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE. + +COPYRIGHT AND PERMISSION NOTICE +Copyright © 1991-2007 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in http://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated +documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data +Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell +copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided +that (a) the above copyright notice(s) and this permission notice appear with all copies of the Data Files or Software, (b) both the +above copyright notice(s) and this permission notice appear in associated documentation, and (c) there is clear notice in each modified Data File +or in the Software as well as in the documentation associated with the Data File(s) or Software that the data or software has been modified. +THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE +AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS +INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, +OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THE DATA FILES OR SOFTWARE. +Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other +dealings in these Data Files or Software without prior written authorization of the copyright holder. \ No newline at end of file diff --git a/lib/dojo/cldr/README b/lib/dojo/cldr/README new file mode 100644 index 0000000000..36876766a6 --- /dev/null +++ b/lib/dojo/cldr/README @@ -0,0 +1,18 @@ +All files within this directory were derived from the Common Locale +Data Repository (see http://unicode.org/cldr) The CLDR project is +responsible for the accuracy and maintenance of this data. A copy +of this data is checked into the Dojo util project as a zip file. +The XML data is transformed to the JSON-style Javascript you see +under the nls/ directory. These Javascript files include data +necessary to do things like format and parse dates, numbers, and +currencies in different locales to consider cultural differences. +They are used by other modules in core Dojo such as dojo.date, +dojo.number and dojo.currency. It usually is not necessary to use +dojo.cldr directly. + +An arbitrary subset of locales have been checked in to dojo/cldr +under svn. To support other locales, the full set may be generated +by using xslt scripts in the util/buildscripts/cldr/ ant script. +Hundreds of locales are supported by the CLDR project. + +See terms of use: http://www.unicode.org/copyright.html#Exhibit1 diff --git a/lib/dojo/cldr/monetary.js b/lib/dojo/cldr/monetary.js new file mode 100644 index 0000000000..bedd3869a1 --- /dev/null +++ b/lib/dojo/cldr/monetary.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/monetary",["../_base/kernel","../_base/lang"],function(_1,_2){var _3={};_2.setObject("dojo.cldr.monetary",_3);_3.getData=function(_4){var _5={ADP:0,AFN:0,ALL:0,AMD:0,BHD:3,BIF:0,BYR:0,CLF:0,CLP:0,COP:0,CRC:0,DJF:0,ESP:0,GNF:0,GYD:0,HUF:0,IDR:0,IQD:0,IRR:3,ISK:0,ITL:0,JOD:3,JPY:0,KMF:0,KPW:0,KRW:0,KWD:3,LAK:0,LBP:0,LUF:0,LYD:3,MGA:0,MGF:0,MMK:0,MNT:0,MRO:0,MUR:0,OMR:3,PKR:0,PYG:0,RSD:0,RWF:0,SLL:0,SOS:0,STD:0,SYP:0,TMM:0,TND:3,TRL:0,TZS:0,UGX:0,UZS:0,VND:0,VUV:0,XAF:0,XOF:0,XPF:0,YER:0,ZMK:0,ZWD:0};var _6={CHF:5};var _7=_5[_4],_8=_6[_4];if(typeof _7=="undefined"){_7=2;}if(typeof _8=="undefined"){_8=0;}return {places:_7,round:_8};};return _3;}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ar/buddhist.js b/lib/dojo/cldr/nls/ar/buddhist.js new file mode 100644 index 0000000000..987694f2ff --- /dev/null +++ b/lib/dojo/cldr/nls/ar/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ar/buddhist",{"dateFormatItem-yM":"M/y G","dateFormatItem-yQ":"Q yyyy","dayPeriods-format-wide-pm":"Ù…","eraNames":["التقويم البوذي"],"dateFormatItem-MMMEd":"E d MMM","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-MMdd":"dd/MM","days-standAlone-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["ÙŠ","Ù","Ù…","Ø£","Ùˆ","Ù†","Ù„","غ","س","Ùƒ","ب","د"],"dayPeriods-format-wide-am":"ص","dateFormatItem-y":"y G","timeFormat-full":"h:mm:ss a zzzz","months-standAlone-abbr":["يناير","ÙØ¨Ø±Ø§ÙŠØ±","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوÙمبر","ديسمبر"],"dateFormatItem-Ed":"EØŒ d","dateFormatItem-yMMM":"MMM y G","days-standAlone-narrow":["Ø­","Ù†","Ø«","ر","Ø®","ج","س"],"eraAbbr":["التقويم البوذي"],"dateFormatItem-yyyyMM":"MM/y G","dateFormatItem-yyyyMMMM":"MMMMØŒ y G","dateFormat-long":"d MMMMØŒ y G","timeFormat-medium":"h:mm:ss a","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"dd/MM/y G","dateFormatItem-yMd":"d/M/y G","dateFormatItem-yMMMM":"MMMM y G","dateFormatItem-ms":"mm:ss","quarters-standAlone-narrow":["Ù¡","Ù¢","Ù£","Ù¤"],"months-standAlone-wide":["يناير","ÙØ¨Ø±Ø§ÙŠØ±","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوÙمبر","ديسمبر"],"dateFormatItem-MMMMEd":"E d MMMM","dateFormatItem-MMMd":"d MMM","quarters-format-narrow":["Ù¡","Ù¢","Ù£","Ù¤"],"timeFormat-long":"h:mm:ss a z","months-format-abbr":["يناير","ÙØ¨Ø±Ø§ÙŠØ±","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوÙمبر","ديسمبر"],"timeFormat-short":"h:mm a","dateFormatItem-MMMMd":"d MMMM","days-format-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-M":"L","dateFormatItem-yMMMd":"d MMMØŒ y G","dateFormatItem-MEd":"EØŒ d/M","days-standAlone-short":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"days-standAlone-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormat-short":"d/M/y G","dateFormatItem-yMMMEd":"EØŒ d MMMØŒ y G","dateFormat-full":"EEEEØŒ d MMMMØŒ y G","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"EØŒ d/M/y G","months-format-wide":["يناير","ÙØ¨Ø±Ø§ÙŠØ±","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوÙمبر","ديسمبر"],"days-format-short":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-d":"d","quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"eraNarrow":["التقويم البوذي"],"days-format-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ar/currency.js b/lib/dojo/cldr/nls/ar/currency.js new file mode 100644 index 0000000000..54e59b96e1 --- /dev/null +++ b/lib/dojo/cldr/nls/ar/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ar/currency",{"HKD_displayName":"دولار هونج كونج","CHF_displayName":"ÙØ±Ù†Ùƒ سويسري","JPY_symbol":"JPÂ¥","CAD_displayName":"دولار كندي","HKD_symbol":"HK$","CNY_displayName":"يوان صيني","USD_symbol":"US$","AUD_displayName":"دولار أسترالي","JPY_displayName":"ين ياباني","CAD_symbol":"CA$","USD_displayName":"دولار أمريكي","EUR_symbol":"€","CNY_symbol":"ÙŠ.ص","GBP_displayName":"جنيه إسترليني","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"يورو"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ar/gregorian.js b/lib/dojo/cldr/nls/ar/gregorian.js new file mode 100644 index 0000000000..372fa3bc75 --- /dev/null +++ b/lib/dojo/cldr/nls/ar/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ar/gregorian",{"days-standAlone-short":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"months-format-narrow":["ÙŠ","Ù","Ù…","Ø£","Ùˆ","Ù†","Ù„","غ","س","Ùƒ","ب","د"],"quarters-standAlone-narrow":["Ù¡","Ù¢","Ù£","Ù¤"],"field-weekday":"اليوم","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EØŒ d/M/yyyy","dateFormatItem-MMMEd":"EØŒ d MMM","eraNarrow":["Ù‚.Ù…","Ù…"],"days-format-short":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormat-long":"d MMMMØŒ y","months-format-wide":["يناير","ÙØ¨Ø±Ø§ÙŠØ±","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوÙمبر","ديسمبر"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"Ù…","dateFormat-full":"EEEEØŒ d MMMMØŒ y","dateFormatItem-Md":"d/M","dateFormatItem-yMd":"d/M/yyyy","field-era":"العصر","dateFormatItem-yM":"M/yyyy","months-standAlone-wide":["يناير","ÙØ¨Ø±Ø§ÙŠØ±","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوÙمبر","ديسمبر"],"timeFormat-short":"h:mm a","quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"timeFormat-long":"h:mm:ss a z","field-year":"السنة","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q yyyy","dateFormatItem-yyyyMMMM":"MMMMØŒ y","field-hour":"الساعات","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["يناير","ÙØ¨Ø±Ø§ÙŠØ±","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوÙمبر","ديسمبر"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"h:mm:ss a zzzz","field-day-relative+0":"اليوم","field-day-relative+1":"غدًا","field-day-relative+2":"بعد الغد","dateFormatItem-H":"HH","months-standAlone-abbr":["يناير","ÙØ¨Ø±Ø§ÙŠØ±","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوÙمبر","ديسمبر"],"quarters-format-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"quarters-standAlone-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormatItem-M":"L","days-standAlone-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-MMMMd":"d MMMM","timeFormat-medium":"h:mm:ss a","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"eraAbbr":["Ù‚.Ù…","Ù…"],"field-minute":"الدقائق","field-dayperiod":"ص/Ù…","days-standAlone-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["Ù¡","Ù¢","Ù£","Ù¤"],"field-day-relative+-1":"أمس","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"أول أمس","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"EØŒ d/M","dateTimeFormat-full":"{1} {0}","dateFormatItem-yMMMM":"MMMM y","field-day":"يوم","days-format-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"field-zone":"التوقيت","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["ÙŠ","Ù","Ù…","Ø£","Ùˆ","Ù†","Ù„","غ","س","Ùƒ","ب","د"],"field-year-relative+-1":"السنة الماضية","field-month-relative+-1":"الشهر الماضي","dateFormatItem-hm":"h:mm a","days-format-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-yMMMd":"d MMMØŒ y","eraNames":["قبل الميلاد","ميلادي"],"days-format-narrow":["Ø­","Ù†","Ø«","ر","Ø®","ج","س"],"field-month":"الشهر","days-standAlone-narrow":["Ø­","Ù†","Ø«","ر","Ø®","ج","س"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"ص","dateFormatItem-MMMMEd":"EØŒ d MMMM","dateFormat-short":"d/M/yyyy","field-second":"الثواني","dateFormatItem-yMMMEd":"EØŒ d MMMØŒ y","field-month-relative+0":"هذا الشهر","field-month-relative+1":"الشهر التالي","dateFormatItem-Ed":"EØŒ d","field-week":"الأسبوع","dateFormat-medium":"dd/MM/yyyy","field-year-relative+0":"هذه السنة","field-week-relative+-1":"الأسبوع الماضي","field-year-relative+1":"السنة التالية","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","field-week-relative+0":"هذا الأسبوع","field-week-relative+1":"الأسبوع التالي"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ar/hebrew.js b/lib/dojo/cldr/nls/ar/hebrew.js new file mode 100644 index 0000000000..d2b0926916 --- /dev/null +++ b/lib/dojo/cldr/nls/ar/hebrew.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ar/hebrew",{"dateFormatItem-yM":"M/yyyy","dateFormatItem-yQ":"Q yyyy","dayPeriods-format-wide-pm":"Ù…","eraNames":["ص"],"dateFormatItem-MMMEd":"EØŒ d MMM","dateFormatItem-yQQQ":"QQQ y","days-standAlone-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dayPeriods-format-wide-am":"ص","timeFormat-full":"h:mm:ss a zzzz","months-standAlone-abbr":["تشري","مرحشوان","كيسلو","Ø·ÙŠÙØª","شباط","آذار الأول","آذار","نيسان","أيار","Ø³ÙŠÙØ§Ù†","تموز","آب","أيلول"],"dateFormatItem-Ed":"EØŒ d","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["Ø­","Ù†","Ø«","ر","Ø®","ج","س"],"eraAbbr":["ص"],"dateFormat-long":"d MMMMØŒ y","timeFormat-medium":"h:mm:ss a","dateFormat-medium":"dd/MM/yyyy","dateFormatItem-yMd":"d/M/yyyy","quarters-standAlone-narrow":["Ù¡","Ù¢","Ù£","Ù¤"],"months-standAlone-wide":["تشري","مرحشوان","كيسلو","Ø·ÙŠÙØª","شباط","آذار الأول","آذار","نيسان","أيار","Ø³ÙŠÙØ§Ù†","تموز","آب","أيلول"],"dateFormatItem-MMMd":"d MMM","quarters-format-narrow":["Ù¡","Ù¢","Ù£","Ù¤"],"timeFormat-long":"h:mm:ss a z","months-format-abbr":["تشري","مرحشوان","كيسلو","Ø·ÙŠÙØª","شباط","آذار الأول","آذار","نيسان","أيار","Ø³ÙŠÙØ§Ù†","تموز","آب","أيلول"],"timeFormat-short":"h:mm a","days-format-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-yMMMd":"d MMMØŒ y","dateFormatItem-MEd":"EØŒ d/M","days-standAlone-short":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"days-standAlone-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormat-short":"d/M/yyyy","dateFormatItem-yMMMEd":"EØŒ d MMMØŒ y","dateFormat-full":"EEEEØŒ d MMMMØŒ y","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"EØŒ d/M/yyyy","months-format-wide":["تشري","مرحشوان","كيسلو","Ø·ÙŠÙØª","شباط","آذار الأول","آذار","نيسان","أيار","Ø³ÙŠÙØ§Ù†","تموز","آب","أيلول"],"days-format-short":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"months-format-wide-leap":"آذار الثاني","eraNarrow":["ص"],"days-format-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ar/islamic.js b/lib/dojo/cldr/nls/ar/islamic.js new file mode 100644 index 0000000000..435dba6446 --- /dev/null +++ b/lib/dojo/cldr/nls/ar/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ar/islamic",{"dateFormatItem-yM":"M/yyyy","dateFormatItem-yQ":"Q yyyy","dayPeriods-format-wide-pm":"Ù…","eraNames":["هـ"],"dateFormatItem-MMMEd":"EØŒ d MMM","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ y","days-standAlone-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["Ù¡","Ù¢","Ù£","4","Ù¥","Ù¦","Ù§","Ù¨","Ù©","١٠","١١","١٢"],"dayPeriods-format-wide-am":"ص","dateFormatItem-y":"y","timeFormat-full":"h:mm:ss a zzzz","months-standAlone-abbr":["محرم","ØµÙØ±","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"dateFormatItem-Ed":"d E","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["Ø­","Ù†","Ø«","ر","Ø®","ج","س"],"eraAbbr":["هـ"],"dateFormat-long":"d MMMM y","timeFormat-medium":"h:mm:ss a","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"d MMMØŒ y G","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-yMd":"d/M/yyyy","dateFormatItem-yMMMM":"MMMM y","dateFormatItem-ms":"mm:ss","quarters-standAlone-narrow":["Ù¡","Ù¢","Ù£","Ù¤"],"months-standAlone-wide":["محرم","ØµÙØ±","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"dateFormatItem-MMMMEd":"EØŒ d MMMM","dateFormatItem-MMMd":"d MMM","quarters-format-narrow":["Ù¡","Ù¢","Ù£","Ù¤"],"timeFormat-long":"h:mm:ss a z","months-format-abbr":["محرم","ØµÙØ±","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"timeFormat-short":"h:mm a","dateFormatItem-H":"HH","dateFormatItem-MMMMd":"d MMMM","days-format-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-M":"L","dateFormatItem-yMMMd":"d MMMØŒ y","dateFormatItem-MEd":"EØŒ d/M","months-format-narrow":["Ù¡","Ù¢","Ù£","Ù¤","Ù¥","Ù¦","Ù§","Ù¨","Ù©","١٠","١١","١٢"],"days-standAlone-short":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormat-short":"d/M/yyyy","dateFormatItem-yMMMEd":"EØŒ d MMM y","dateFormat-full":"EEEEØŒ d MMMM y","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"EØŒ d/M/yyyy","months-format-wide":["محرم","ØµÙØ±","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"days-format-short":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-d":"d","quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"eraNarrow":["هـ"],"days-format-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-h":"h a"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ar/number.js b/lib/dojo/cldr/nls/ar/number.js new file mode 100644 index 0000000000..0c3e0a818d --- /dev/null +++ b/lib/dojo/cldr/nls/ar/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ar/number",{"group":",","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":".","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###;#,##0.###-","currencyFormat":"¤ #,##0.00;¤ #,##0.00-","plusSign":"+","decimalFormat-long":"000 تريليون","decimalFormat-short":"000 ترليو"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/buddhist.js b/lib/dojo/cldr/nls/buddhist.js new file mode 100644 index 0000000000..7ae9bc3567 --- /dev/null +++ b/lib/dojo/cldr/nls/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/buddhist",{root:{"days-standAlone-short":["1","2","3","4","5","6","7"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["1","2","3","4"],"dateFormatItem-yQQQ":"G y QQQ","dateFormatItem-yMEd":"E, GGGGG yyyy-MM-dd","dateFormatItem-MMMEd":"E MMM d","eraNarrow":["BE"],"days-format-short":["1","2","3","4","5","6","7"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormat-long":"G y MMMM d","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, G y MMMM dd","dateFormatItem-Md":"M-d","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yMd":"GGGGG yyyy-MM-dd","dateFormatItem-yM":"GGGGG yyyy-MM","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"timeFormat-short":"HH:mm","quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateTimeFormat":"{1} {0}","timeFormat-long":"HH:mm:ss z","dateFormatItem-yMMM":"G y MMM","dateFormatItem-yQ":"GGGGG yyyy Q","dateTimeFormats-appendItem-Era":"{0} {1}","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"timeFormat-full":"HH:mm:ss zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Gy":"G y","dateFormatItem-M":"L","days-standAlone-wide":["1","2","3","4","5","6","7"],"timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["BE"],"days-standAlone-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"E, M-d","days-format-wide":["1","2","3","4","5","6","7"],"dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"G y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-yMMMd":"G y MMM d","eraNames":["BE"],"days-format-narrow":["1","2","3","4","5","6","7"],"days-standAlone-narrow":["1","2","3","4","5","6","7"],"dateFormatItem-MMM":"LLL","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormat-short":"GGGGG yyyy-MM-dd","dateFormatItem-yMMMEd":"E, G y MMM d","dateFormatItem-Ed":"d E","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateFormat-medium":"G y MMM d","dayPeriods-format-narrow-pm":"PM","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"},"ar":true,"ca":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"en-gb":true,"es":true,"fi":true,"fr":true,"hu":true,"it":true,"ja":true,"ko":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ca/buddhist.js b/lib/dojo/cldr/nls/ca/buddhist.js new file mode 100644 index 0000000000..d5e9fe25b4 --- /dev/null +++ b/lib/dojo/cldr/nls/ca/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ca/buddhist",{"dateFormatItem-yM":"MM/yyyy GGGGG","dateFormatItem-yQ":"Q yyyy GGGGG","dayPeriods-format-wide-pm":"p.m.","eraNames":["eB"],"dateFormatItem-MMMEd":"E d MMM","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ y G","days-standAlone-wide":["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["g","f","m","a","m","j","j","a","s","o","n","d"],"dayPeriods-format-wide-am":"a.m.","quarters-standAlone-abbr":["1T","2T","3T","4T"],"dateFormatItem-y":"y G","timeFormat-full":"H.mm.ss zzzz","months-standAlone-abbr":["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],"dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y G","days-standAlone-narrow":["dg","dl","dt","dc","dj","dv","ds"],"eraAbbr":["eB"],"dateFormat-long":"d MMMM y G","timeFormat-medium":"H.mm.ss","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"d MMM y G","dateFormatItem-Hms":"HH:mm:ss","dayPeriods-format-narrow-pm":"p.m.","dateFormatItem-yMd":"d/M/yyyy","quarters-standAlone-wide":["1r trimestre","2n trimestre","3r trimestre","4t trimestre"],"dateFormatItem-ms":"mm:ss","dayPeriods-format-narrow-am":"a.m.","months-standAlone-wide":["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],"dateFormatItem-MMMd":"d MMM","timeFormat-long":"H.mm.ss z","months-format-abbr":["de gen.","de febr.","de març","d’abr.","de maig","de juny","de jul.","d’ag.","de set.","d’oct.","de nov.","de des."],"timeFormat-short":"H.mm","dateFormatItem-H":"HH","quarters-format-abbr":["1T","2T","3T","4T"],"days-format-abbr":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"dateFormatItem-M":"L","days-format-narrow":["dg","dl","dt","dc","dj","dv","ds"],"dateFormatItem-yMMMd":"d MMM y","dateFormatItem-MEd":"E, d/M","months-format-narrow":["G","F","M","A","M","J","J","A","S","O","N","D"],"days-standAlone-short":["dg.","dl.","dm.","dc.","dj.","dv.","ds."],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["dg","dl","dt","dc","dj","dv","ds"],"dateFormat-short":"dd/MM/yyyy GGGGG","dateFormatItem-yMMMEd":"E, d MMM y G","dateFormat-full":"EEEE, dd MMMM y G","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E, dd/MM/yyyy GGGGG","months-format-wide":["de gener","de febrer","de març","d’abril","de maig","de juny","de juliol","d’agost","de setembre","d’octubre","de novembre","de desembre"],"days-format-short":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"dateFormatItem-d":"d","quarters-format-wide":["1r trimestre","2n trimestre","3r trimestre","4t trimestre"],"eraNarrow":["eB"],"days-format-wide":["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],"dateFormatItem-h":"h a"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ca/currency.js b/lib/dojo/cldr/nls/ca/currency.js new file mode 100644 index 0000000000..76837179c3 --- /dev/null +++ b/lib/dojo/cldr/nls/ca/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ca/currency",{"HKD_displayName":"dòlar de Hong Kong","CHF_displayName":"franc suís","JPY_symbol":"JPÂ¥","CAD_displayName":"dòlar canadenc","HKD_symbol":"HK$","CNY_displayName":"iuan renmimbi xinès","USD_symbol":"US$","AUD_displayName":"dòlar australià","JPY_displayName":"ien japonès","CAD_symbol":"CA$","USD_displayName":"dòlar dels Estats Units","EUR_symbol":"€","CNY_symbol":"Â¥","GBP_displayName":"lliura esterlina britànica","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ca/gregorian.js b/lib/dojo/cldr/nls/ca/gregorian.js new file mode 100644 index 0000000000..b649c70941 --- /dev/null +++ b/lib/dojo/cldr/nls/ca/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ca/gregorian",{"days-standAlone-short":["dg.","dl.","dm.","dc.","dj.","dv.","ds."],"months-format-narrow":["G","F","M","A","M","J","J","A","S","O","N","D"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"dia de la setmana","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E, d.M.y","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["aC","dC"],"days-format-short":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"dateFormat-long":"d MMMM 'de' y","months-format-wide":["de gener","de febrer","de març","d’abril","de maig","de juny","de juliol","d’agost","de setembre","d’octubre","de novembre","de desembre"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"p.m.","dateFormat-full":"EEEE d MMMM 'de' y","dateFormatItem-Md":"d/M","dateFormatItem-yMd":"d/M/yyyy","field-era":"era","dateFormatItem-yM":"M/yyyy","months-standAlone-wide":["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],"timeFormat-short":"H.mm","quarters-format-wide":["1r trimestre","2n trimestre","3r trimestre","4t trimestre"],"timeFormat-long":"H.mm.ss z","field-year":"any","dateFormatItem-yMMM":"LLL y","dateFormatItem-yQ":"Q yyyy","field-hour":"hora","months-format-abbr":["de gen.","de febr.","de març","d’abr.","de maig","de juny","de jul.","d’ag.","de set.","d’oct.","de nov.","de des."],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"H.mm.ss zzzz","field-day-relative+0":"avui","field-day-relative+1":"demà","field-day-relative+2":"demà passat","dateFormatItem-H":"H","months-standAlone-abbr":["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],"quarters-format-abbr":["1T","2T","3T","4T"],"quarters-standAlone-wide":["1r trimestre","2n trimestre","3r trimestre","4t trimestre"],"dateFormatItem-M":"L","days-standAlone-wide":["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],"dateFormatItem-MMMMd":"d MMMM","timeFormat-medium":"H.mm.ss","dateFormatItem-Hm":"H.mm","quarters-standAlone-abbr":["1T","2T","3T","4T"],"eraAbbr":["aC","dC"],"field-minute":"minut","field-dayperiod":"a.m./p.m.","days-standAlone-abbr":["dg","dl","dt","dc","dj","dv","ds"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm.ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"ahir","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"a.m.","field-day-relative+-2":"abans d'ahir","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} {0}","dateFormatItem-yMMMM":"LLLL 'de' y","field-day":"dia","days-format-wide":["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],"field-zone":"zona","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["g","f","m","a","m","j","j","a","s","o","n","d"],"field-year-relative+-1":"Últim any","field-month-relative+-1":"Últim mes","dateFormatItem-hm":"h.mm a","days-format-abbr":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"dateFormatItem-yMMMd":"d MMM y","eraNames":["abans de Crist","després de Crist"],"days-format-narrow":["dg","dl","dt","dc","dj","dv","ds"],"days-standAlone-narrow":["dg","dl","dt","dc","dj","dv","ds"],"dateFormatItem-MMM":"LLL","field-month":"mes","dayPeriods-format-wide-am":"a.m.","dateFormatItem-MMMMEd":"E d MMMM","dateFormat-short":"dd/MM/yy","field-second":"segon","dateFormatItem-yMMMEd":"E, d MMM, y","field-month-relative+0":"Aquest mes","field-month-relative+1":"Mes següent","dateFormatItem-Ed":"E d","field-week":"setmana","dateFormat-medium":"dd/MM/yyyy","field-year-relative+0":"Aquest any","field-week-relative+-1":"Última setmana","field-year-relative+1":"Any següent","dateFormatItem-mmss":"mm:ss","dayPeriods-format-narrow-pm":"p.m.","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H.mm.ss","dateFormatItem-hms":"h.mm.ss a","field-week-relative+0":"Aquesta setmana","field-week-relative+1":"Setmana següent"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ca/number.js b/lib/dojo/cldr/nls/ca/number.js new file mode 100644 index 0000000000..985cbd7b69 --- /dev/null +++ b/lib/dojo/cldr/nls/ca/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ca/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","decimalFormat-long":"000 bilions","decimalFormat-short":"000 B"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/cs/buddhist.js b/lib/dojo/cldr/nls/cs/buddhist.js new file mode 100644 index 0000000000..1818adaad0 --- /dev/null +++ b/lib/dojo/cldr/nls/cs/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/cs/buddhist",{"dateFormatItem-yM":"LLLL y GGGGG","dateFormatItem-yQ":"Q., y GGGGG","dateFormatItem-MMMEd":"E, d. M.","dateFormatItem-yQQQ":"QQQ, y G","days-standAlone-wide":["nedÄ›le","pondÄ›lí","úterý","stÅ™eda","Ätvrtek","pátek","sobota"],"months-standAlone-narrow":["l","ú","b","d","k","Ä","Ä","s","z","Å™","l","p"],"dateFormatItem-y":"y G","timeFormat-full":"H:mm:ss zzzz","months-standAlone-abbr":["led","úno","bÅ™e","dub","kvÄ›","Ävn","Ävc","srp","zář","říj","lis","pro"],"dateFormatItem-Ed":"E, d.","dateFormatItem-yMMM":"LLLL y G","days-standAlone-narrow":["N","P","Ú","S","ÄŒ","P","S"],"dateFormat-long":"d. MMMM y G","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","dateFormat-medium":"d. M. y G","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-yMd":"d. M. y","quarters-standAlone-wide":["1. Ätvrtletí","2. Ätvrtletí","3. Ätvrtletí","4. Ätvrtletí"],"months-standAlone-wide":["leden","únor","bÅ™ezen","duben","kvÄ›ten","Äerven","Äervenec","srpen","září","říjen","listopad","prosinec"],"dateFormatItem-MMMd":"d. M.","timeFormat-long":"H:mm:ss z","months-format-abbr":["led","úno","bÅ™e","dub","kvÄ›","Ävn","Ävc","srp","zář","říj","lis","pro"],"timeFormat-short":"H:mm","dateFormatItem-H":"H","days-format-abbr":["ne","po","út","st","Ät","pá","so"],"days-format-narrow":["N","P","Ú","S","ÄŒ","P","S"],"dateFormatItem-yMMMd":"d. M. y","dateFormatItem-MEd":"E, d. M.","days-standAlone-short":["Ne","Po","Út","St","ÄŒt","Pá","So"],"days-standAlone-abbr":["ne","po","út","st","Ät","pá","so"],"dateFormat-short":"dd.MM.yy GGGGG","dateFormatItem-yMMMEd":"E, d. M. y G","dateFormat-full":"EEEE, d. MMMM y G","dateFormatItem-Md":"d. M.","dateFormatItem-yMEd":"E, d. M. y GGGGG","months-format-wide":["ledna","února","bÅ™ezna","dubna","kvÄ›tna","Äervna","Äervence","srpna","září","října","listopadu","prosince"],"days-format-short":["ne","po","út","st","Ät","pá","so"],"dateFormatItem-d":"d.","quarters-format-wide":["1. Ätvrtletí","2. Ätvrtletí","3. Ätvrtletí","4. Ätvrtletí"],"days-format-wide":["nedÄ›le","pondÄ›lí","úterý","stÅ™eda","Ätvrtek","pátek","sobota"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/cs/currency.js b/lib/dojo/cldr/nls/cs/currency.js new file mode 100644 index 0000000000..14f3c2ab44 --- /dev/null +++ b/lib/dojo/cldr/nls/cs/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/cs/currency",{"HKD_displayName":"hongkongský dolar","CHF_displayName":"Å¡výcarský frank","JPY_symbol":"JPÂ¥","CAD_displayName":"kanadský dolar","HKD_symbol":"HK$","CNY_displayName":"Äínský jüan","USD_symbol":"US$","AUD_displayName":"australský dolar","JPY_displayName":"japonský jen","CAD_symbol":"CA$","USD_displayName":"americký dolar","EUR_symbol":"€","CNY_symbol":"CNÂ¥","GBP_displayName":"britská libra","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/cs/gregorian.js b/lib/dojo/cldr/nls/cs/gregorian.js new file mode 100644 index 0000000000..05f822923c --- /dev/null +++ b/lib/dojo/cldr/nls/cs/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/cs/gregorian",{"days-standAlone-short":["Ne","Po","Út","St","ÄŒt","Pá","So"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Den v týdnu","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E, d. M. y","dateFormatItem-MMMEd":"E, d. M.","eraNarrow":["pÅ™.n.l.","n. l."],"days-format-short":["ne","po","út","st","Ät","pá","so"],"dateFormat-long":"d. MMMM y","months-format-wide":["ledna","února","bÅ™ezna","dubna","kvÄ›tna","Äervna","Äervence","srpna","září","října","listopadu","prosince"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, d. MMMM y","dateFormatItem-Md":"d. M.","dateFormatItem-yMd":"d. M. y","field-era":"LetopoÄet","dateFormatItem-yM":"M/y","months-standAlone-wide":["leden","únor","bÅ™ezen","duben","kvÄ›ten","Äerven","Äervenec","srpen","září","říjen","listopad","prosinec"],"timeFormat-short":"H:mm","quarters-format-wide":["1. Ätvrtletí","2. Ätvrtletí","3. Ätvrtletí","4. Ätvrtletí"],"timeFormat-long":"H:mm:ss z","field-year":"Rok","dateFormatItem-yMMM":"LLLL y","dateFormatItem-yQ":"Q yyyy","dateFormatItem-yyyyMMMM":"LLLL y","field-hour":"Hodina","months-format-abbr":["led","úno","bÅ™e","dub","kvÄ›","Ävn","Ävc","srp","zář","říj","lis","pro"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"Dnes","field-day-relative+1":"Zítra","field-day-relative+2":"Pozítří","dateFormatItem-H":"H","months-standAlone-abbr":["led","úno","bÅ™e","dub","kvÄ›","Ävn","Ävc","srp","zář","říj","lis","pro"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["1. Ätvrtletí","2. Ätvrtletí","3. Ätvrtletí","4. Ätvrtletí"],"dateFormatItem-M":"L","days-standAlone-wide":["nedÄ›le","pondÄ›lí","úterý","stÅ™eda","Ätvrtek","pátek","sobota"],"timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["pÅ™. n. l.","n. l."],"field-minute":"Minuta","field-dayperiod":"AM/PM","days-standAlone-abbr":["ne","po","út","st","Ät","pá","so"],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"VÄera","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","field-day-relative+-2":"PÅ™edevÄírem","dateFormatItem-MMMd":"d. M.","dateFormatItem-MEd":"E, d. M.","dateTimeFormat-full":"{1} {0}","field-day":"Den","days-format-wide":["nedÄ›le","pondÄ›lí","úterý","stÅ™eda","Ätvrtek","pátek","sobota"],"field-zone":"ÄŒasové pásmo","dateFormatItem-y":"y","months-standAlone-narrow":["l","ú","b","d","k","Ä","Ä","s","z","Å™","l","p"],"field-year-relative+-1":"Minulý rok","field-month-relative+-1":"Minulý mÄ›síc","dateFormatItem-hm":"h:mm a","days-format-abbr":["ne","po","út","st","Ät","pá","so"],"dateFormatItem-yMMMd":"d. M. y","eraNames":["pÅ™. n. l.","n. l."],"days-format-narrow":["N","P","Ú","S","ÄŒ","P","S"],"days-standAlone-narrow":["N","P","Ú","S","ÄŒ","P","S"],"dateFormatItem-MMM":"LLL","field-month":"MÄ›síc","dayPeriods-format-wide-am":"AM","dateFormat-short":"dd.MM.yy","field-second":"Sekunda","dateFormatItem-yMMMEd":"E, d. M. y","field-month-relative+0":"Tento mÄ›síc","field-month-relative+1":"Příští mÄ›síc","dateFormatItem-Ed":"E, d.","field-week":"Týden","dateFormat-medium":"d. M. yyyy","field-year-relative+0":"Tento rok","field-week-relative+-1":"Minulý týden","dateFormatItem-yyyyM":"M/yyyy","field-year-relative+1":"Příští rok","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yyyy":"y","field-week-relative+0":"Tento týden","field-week-relative+1":"Příští týden"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/cs/islamic.js b/lib/dojo/cldr/nls/cs/islamic.js new file mode 100644 index 0000000000..3a695d437e --- /dev/null +++ b/lib/dojo/cldr/nls/cs/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/cs/islamic",{"quarters-standAlone-wide":["1. Ätvrtletí","2. Ätvrtletí","3. Ätvrtletí","4. Ätvrtletí"],"dateFormatItem-yMd":"d. M. y","dateFormat-medium":"d. MMM. y G","dateFormatItem-MMMEd":"E, d. MMM.","dateFormatItem-MEd":"E, d. M.","dateFormatItem-yMEd":"E, d. M. y","dateFormatItem-Hm":"H:mm","dateFormatItem-H":"H","dateFormatItem-yMMMd":"d. M. y","timeFormat-full":"H:mm:ss zzzz","days-format-short":["ne","po","út","st","Ät","pá","so"],"dateFormatItem-Md":"d. M.","days-standAlone-narrow":["N","P","Ú","S","ÄŒ","P","S"],"dateFormatItem-yQQQ":"QQQ y","days-standAlone-short":["Ne","Po","Út","St","ÄŒt","Pá","So"],"timeFormat-medium":"H:mm:ss","dateFormat-long":"d. MMMM y","dateFormatItem-Hms":"H:mm:ss","dateFormat-short":"dd.MM.yy. G","dateFormatItem-yMMMEd":"E, d. MMM y","days-standAlone-wide":["nedÄ›le","pondÄ›lí","úterý","stÅ™eda","Ätvrtek","pátek","sobota"],"dateFormatItem-d":"d.","days-format-narrow":["N","P","Ú","S","ÄŒ","P","S"],"dateFormatItem-yM":"MM/y","timeFormat-short":"H:mm","days-standAlone-abbr":["ne","po","út","st","Ät","pá","so"],"timeFormat-long":"H:mm:ss z","days-format-wide":["nedÄ›le","pondÄ›lí","úterý","stÅ™eda","Ätvrtek","pátek","sobota"],"dateFormatItem-yQ":"Q yyyy","dateFormatItem-yMMM":"LLL y","quarters-format-wide":["1. Ätvrtletí","2. Ätvrtletí","3. Ätvrtletí","4. Ätvrtletí"],"dateFormat-full":"EEEE, d. MMMM y G","dateFormatItem-MMMd":"d. MMM.","days-format-abbr":["ne","po","út","st","Ät","pá","so"],"dateFormatItem-Ed":"E, d."}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/cs/number.js b/lib/dojo/cldr/nls/cs/number.js new file mode 100644 index 0000000000..6303a53671 --- /dev/null +++ b/lib/dojo/cldr/nls/cs/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/cs/number",{"group":" ","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 bilionů","decimalFormat-short":"000 bil'.'"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/currency.js b/lib/dojo/cldr/nls/currency.js new file mode 100644 index 0000000000..2079219be4 --- /dev/null +++ b/lib/dojo/cldr/nls/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/currency",{root:{"USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JPÂ¥","AUD_symbol":"A$","CNY_symbol":"CNÂ¥","EUR_symbol":"€"},"ar":true,"ca":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"en-au":true,"en-ca":true,"en-gb":true,"es":true,"fi":true,"fr":true,"he":true,"hu":true,"it":true,"ja":true,"ko":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sk":true,"sl":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true,"zh-hk":true,"zh-tw":true}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/da/buddhist.js b/lib/dojo/cldr/nls/da/buddhist.js new file mode 100644 index 0000000000..5bb7134935 --- /dev/null +++ b/lib/dojo/cldr/nls/da/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/da/buddhist",{"dateFormatItem-yM":"M/y G","dateFormatItem-yQ":"Q y G","dateFormatItem-MMMEd":"E d. MMM","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-yQQQ":"QQQ y G","dateFormatItem-MMdd":"dd/MM","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-MMM":"MMM","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-Gy":"y G","quarters-standAlone-abbr":["K1","K2","K3","K4"],"dateFormatItem-y":"y G","timeFormat-full":"HH.mm.ss zzzz","dateFormatItem-yyyy":"y G","months-standAlone-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"dateFormatItem-Ed":"E d.","dateFormatItem-yMMM":"MMM y G","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yyyyMM":"MM/y G","dateFormat-long":"d. MMMM y G","timeFormat-medium":"HH.mm.ss","dateFormatItem-Hm":"HH.mm","dateFormatItem-yyMM":"MM/y G","dateFormat-medium":"d. MMM y G","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-yyMMM":"MMM y G","dateFormatItem-yMd":"d/M/y G","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-ms":"mm.ss","months-standAlone-wide":["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],"dateFormatItem-MMMMEd":"E d. MMMM","dateFormatItem-MMMd":"d. MMM","dateFormatItem-yyQ":"Q. 'kvartal' y G","timeFormat-long":"HH.mm.ss z","months-format-abbr":["jan.","feb.","mar.","apr.","maj","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"dateFormatItem-H":"HH","timeFormat-short":"HH.mm","quarters-format-abbr":["K1","K2","K3","K4"],"days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"dateFormatItem-M":"M","days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yMMMd":"d. MMM y G","dateFormatItem-MEd":"E d/M","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-standAlone-short":["sø","ma","ti","on","to","fr","lø"],"dateFormatItem-hm":"h.mm a","days-standAlone-abbr":["søn","man","tir","ons","tor","fre","lør"],"dateFormat-short":"d/M/yyyy","dateFormatItem-yMMMEd":"E d. MMM y G","dateFormat-full":"EEEE d. MMMM y G","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E d/M/y G","months-format-wide":["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],"days-format-short":["sø","ma","ti","on","to","fr","lø"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-d":"d.","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/da/currency.js b/lib/dojo/cldr/nls/da/currency.js new file mode 100644 index 0000000000..e056f1e2f4 --- /dev/null +++ b/lib/dojo/cldr/nls/da/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/da/currency",{"HKD_displayName":"Hongkong dollar","CHF_displayName":"Schweizisk franc","JPY_symbol":"JPÂ¥","CAD_displayName":"Canadisk dollar","HKD_symbol":"HK$","CNY_displayName":"Kinesisk yuan renminbi","USD_symbol":"$","AUD_displayName":"Australsk dollar","JPY_displayName":"Japansk yen","CAD_symbol":"CA$","USD_displayName":"Amerikansk dollar","EUR_symbol":"€","CNY_symbol":"CNÂ¥","GBP_displayName":"Britisk pund","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"Euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/da/gregorian.js b/lib/dojo/cldr/nls/da/gregorian.js new file mode 100644 index 0000000000..5ff57327c8 --- /dev/null +++ b/lib/dojo/cldr/nls/da/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/da/gregorian",{"days-standAlone-short":["sø","ma","ti","on","to","fr","lø"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"ugedag","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E d/M/y","dateFormatItem-MMMEd":"E d. MMM","eraNarrow":["f.Kr.","e.Kr."],"days-format-short":["sø","ma","ti","on","to","fr","lø"],"dateFormat-long":"d. MMM y","months-format-wide":["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE 'den' d. MMMM y","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"middag","dateFormatItem-yMd":"d/M/y","field-era":"æra","dateFormatItem-yM":"M/y","months-standAlone-wide":["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],"timeFormat-short":"HH.mm","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"timeFormat-long":"HH.mm.ss z","field-year":"Ã¥r","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q yyyy","field-hour":"time","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["jan.","feb.","mar.","apr.","maj","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"dateFormatItem-yyQ":"Q. 'kvartal' yy","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"i dag","field-day-relative+1":"i morgen","field-day-relative+2":"i overmorgen","dateFormatItem-H":"HH","months-standAlone-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-M":"M","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyyyMMM":"MMM y","dayPeriods-format-abbr-noon":"middag","dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH.mm.ss","dateFormatItem-Hm":"HH.mm","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["f.Kr.","e.Kr."],"field-minute":"minut","field-dayperiod":"dagtid","days-standAlone-abbr":["søn","man","tir","ons","tor","fre","lør"],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm.ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"i gÃ¥r","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"i forgÃ¥rs","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} {0}","field-day":"dag","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-zone":"tidszone","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"sidste Ã¥r","field-month-relative+-1":"sidste mÃ¥ned","dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"h.mm a","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"dateFormatItem-yMMMd":"d. MMM y","eraNames":["f.Kr.","e.Kr."],"days-format-narrow":["S","M","T","O","T","F","L"],"days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-MMM":"MMM","field-month":"mÃ¥ned","dayPeriods-format-wide-am":"AM","dateFormatItem-MMMMEd":"E d. MMMM","dateFormat-short":"dd/MM/yy","dayPeriods-format-narrow-noon":"middag","field-second":"sekund","dateFormatItem-yMMMEd":"E d. MMM y","field-month-relative+0":"denne mÃ¥ned","field-month-relative+1":"næste mÃ¥ned","dateFormatItem-Ed":"E 'd'. d.","field-week":"uge","dateFormat-medium":"dd/MM/yyyy","field-year-relative+0":"i Ã¥r","field-week-relative+-1":"sidste uge","field-year-relative+1":"næste Ã¥r","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-yyyy":"y","field-week-relative+0":"denne uge","field-week-relative+1":"næste uge"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/da/islamic.js b/lib/dojo/cldr/nls/da/islamic.js new file mode 100644 index 0000000000..8cc02f8675 --- /dev/null +++ b/lib/dojo/cldr/nls/da/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/da/islamic",{"dateFormatItem-yM":"M/y","dateFormatItem-yyyyMMMEd":"E d. MMM y G","dateFormatItem-yQ":"Q yyyy","dateFormatItem-MMMEd":"E d. MMM","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-MMdd":"dd/MM","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-MMM":"MMM","quarters-standAlone-abbr":["K1","K2","K3","K4"],"timeFormat-full":"HH.mm.ss zzzz","dateFormatItem-yyyy":"y G","dateFormatItem-Ed":"E d.","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormat-long":"d. MMMM y G","timeFormat-medium":"HH.mm.ss","dateFormatItem-Hm":"HH.mm","dateFormatItem-yyMM":"MM/y G","dateFormat-medium":"d. MMM y G","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-yyMMM":"MMM y G","dateFormatItem-yMd":"d/M/y","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-ms":"mm.ss","dateFormatItem-yyyyMd":"d/M/y G","dateFormatItem-yyyyMMMd":"d. MMM y G","dateFormatItem-MMMMEd":"E d. MMMM","dateFormatItem-yyyyMEd":"E d/M/y G","dateFormatItem-MMMd":"d. MMM","dateFormatItem-yyQ":"Q. 'kvartal' y G","timeFormat-long":"HH.mm.ss z","timeFormat-short":"HH.mm","dateFormatItem-H":"HH","quarters-format-abbr":["K1","K2","K3","K4"],"days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"dateFormatItem-M":"M","days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yMMMd":"d. MMM y","dateFormatItem-yyyyQQQ":"QQQ y G","dateFormatItem-MEd":"E d/M","days-standAlone-short":["sø","ma","ti","on","to","fr","lø"],"dateFormatItem-hm":"h.mm a","days-standAlone-abbr":["søn","man","tir","ons","tor","fre","lør"],"dateFormat-short":"d/M/y G","dateFormatItem-yyyyM":"M/y G","dateFormatItem-yMMMEd":"E d. MMM y","dateFormat-full":"EEEE d. MMMM y G","dateFormatItem-Md":"d/M","dateFormatItem-yyyyQ":"Q y G","dateFormatItem-yMEd":"E d/M/y","days-format-short":["sø","ma","ti","on","to","fr","lø"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-d":"d.","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/da/number.js b/lib/dojo/cldr/nls/da/number.js new file mode 100644 index 0000000000..b2f177c311 --- /dev/null +++ b/lib/dojo/cldr/nls/da/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/da/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":",","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 billioner","decimalFormat-short":"000 bill"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/de/buddhist.js b/lib/dojo/cldr/nls/de/buddhist.js new file mode 100644 index 0000000000..79a7b7409d --- /dev/null +++ b/lib/dojo/cldr/nls/de/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/de/buddhist",{"dateFormatItem-yM":"M.y G","dateFormatItem-yyMMdd":"dd.MM.y G","dateFormatItem-yQ":"Q y G","dayPeriods-format-wide-pm":"nachm.","dateFormatItem-MMMEd":"E, d. MMM","dateFormatItem-yQQQ":"QQQ y G","dateFormatItem-MMdd":"dd.MM.","days-standAlone-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-Gy":"y G","dayPeriods-format-wide-am":"vorm.","dateFormatItem-y":"y G","dateFormatItem-yyyy":"y G","months-standAlone-abbr":["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],"dateFormatItem-Ed":"E d.","dateFormatItem-yMMM":"MMM y G","days-standAlone-narrow":["S","M","D","M","D","F","S"],"dateFormatItem-yyyyMMMM":"MMMM y G","dateFormat-long":"d. MMMM y G","dateFormatItem-Hm":"HH:mm","dateFormatItem-MMd":"d.MM.","dateFormatItem-yyMM":"MM.y G","dateFormat-medium":"d. MMM y G","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-yyMMM":"MMM y G","dateFormatItem-yyQQQQ":"QQQQ y G","dateFormatItem-yMd":"d.M.y G","quarters-standAlone-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"dateFormatItem-ms":"mm:ss","months-standAlone-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"dateFormatItem-MMMd":"d. MMM","dateFormatItem-yyQ":"Q y G","months-format-abbr":["Jan.","Feb.","Mär.","Apr.","Mai","Juni","Juli","Aug.","Sep.","Okt.","Nov.","Dez."],"dateFormatItem-H":"HH 'Uhr'","dateFormatItem-MMMMdd":"dd. MMMM","days-format-abbr":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"dateFormatItem-M":"L","days-format-narrow":["S","M","D","M","D","F","S"],"dateFormatItem-yMMMd":"d. MMM y G","dateFormatItem-MEd":"E, d.M.","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-standAlone-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"days-standAlone-abbr":["So","Mo","Di","Mi","Do","Fr","Sa"],"dateFormat-short":"d.M.yyyy","dateFormatItem-yMMMEd":"E, d. MMM y G","dateFormat-full":"EEEE d. MMMM y G","dateFormatItem-Md":"d.M.","dateFormatItem-yMEd":"E, d.M.y G","months-format-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"days-format-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"dateFormatItem-d":"d","quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"days-format-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/de/currency.js b/lib/dojo/cldr/nls/de/currency.js new file mode 100644 index 0000000000..d95b4a5905 --- /dev/null +++ b/lib/dojo/cldr/nls/de/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/de/currency",{"HKD_displayName":"Hongkong-Dollar","CHF_displayName":"Schweizer Franken","JPY_symbol":"Â¥","CAD_displayName":"Kanadischer Dollar","HKD_symbol":"HK$","CNY_displayName":"Renminbi Yuan","USD_symbol":"$","AUD_displayName":"Australischer Dollar","JPY_displayName":"Japanische Yen","CAD_symbol":"CA$","USD_displayName":"US-Dollar","EUR_symbol":"€","CNY_symbol":"CNÂ¥","GBP_displayName":"Britisches Pfund Sterling","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"Euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/de/gregorian.js b/lib/dojo/cldr/nls/de/gregorian.js new file mode 100644 index 0000000000..ba8a3e9b96 --- /dev/null +++ b/lib/dojo/cldr/nls/de/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/de/gregorian",{"days-standAlone-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Wochentag","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E, d.M.y","dateFormatItem-MMMEd":"E, d. MMM","eraNarrow":["v. Chr.","n. Chr."],"dayPeriods-format-wide-earlyMorning":"morgens","dayPeriods-format-wide-morning":"vormittags","days-format-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"dateFormat-long":"d. MMMM y","months-format-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"dayPeriods-format-wide-evening":"abends","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"nachm.","dateFormat-full":"EEEE, d. MMMM y","dateFormatItem-Md":"d.M.","dateFormatItem-yyMMdd":"dd.MM.yy","dayPeriods-format-wide-noon":"Mittag","dateFormatItem-yMd":"d.M.y","field-era":"Epoche","dateFormatItem-yM":"M.y","months-standAlone-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"timeFormat-short":"HH:mm","quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"timeFormat-long":"HH:mm:ss z","field-year":"Jahr","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q y","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"Stunde","dateFormatItem-MMdd":"dd.MM.","months-format-abbr":["Jan.","Feb.","Mär.","Apr.","Mai","Juni","Juli","Aug.","Sep.","Okt.","Nov.","Dez."],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"Heute","field-day-relative+1":"Morgen","field-day-relative+2":"Übermorgen","dateFormatItem-H":"HH 'Uhr'","months-standAlone-abbr":["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"dateFormatItem-M":"L","days-standAlone-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["v. Chr.","n. Chr."],"field-minute":"Minute","field-dayperiod":"Tageshälfte","days-standAlone-abbr":["So","Mo","Di","Mi","Do","Fr","Sa"],"dayPeriods-format-wide-night":"nachts","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"Gestern","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"Vorgestern","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, d.M.","dateTimeFormat-full":"{1} {0}","field-day":"Tag","days-format-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"field-zone":"Zone","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"Letztes Jahr","field-month-relative+-1":"Letzter Monat","dateFormatItem-yyMM":"MM.yy","dateFormatItem-hm":"h:mm a","days-format-abbr":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"dateFormatItem-yMMMd":"d. MMM y","eraNames":["v. Chr.","n. Chr."],"days-format-narrow":["S","M","D","M","D","F","S"],"days-standAlone-narrow":["S","M","D","M","D","F","S"],"dateFormatItem-MMM":"LLL","field-month":"Monat","dayPeriods-format-wide-am":"vorm.","dateFormatItem-MMMMEd":"E, d. MMMM","dateFormatItem-MMMMdd":"dd. MMMM","dateFormat-short":"dd.MM.yy","dateFormatItem-MMd":"d.MM.","dayPeriods-format-wide-afternoon":"nachmittags","field-second":"Sekunde","dateFormatItem-yMMMEd":"E, d. MMM y","field-month-relative+0":"Dieser Monat","field-month-relative+1":"Nächster Monat","dateFormatItem-Ed":"E, d.","field-week":"Woche","dateFormat-medium":"dd.MM.yyyy","field-year-relative+0":"Dieses Jahr","field-week-relative+-1":"Letzte Woche","field-year-relative+1":"Nächstes Jahr","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yyyy":"y","field-week-relative+0":"Diese Woche","field-week-relative+1":"Nächste Woche"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/de/islamic.js b/lib/dojo/cldr/nls/de/islamic.js new file mode 100644 index 0000000000..53e10c50c4 --- /dev/null +++ b/lib/dojo/cldr/nls/de/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/de/islamic",{"dateFormatItem-yM":"M.y","dateFormatItem-yyyyMMMEd":"E, d. MMM y G","dateFormatItem-yyMMdd":"dd.MM.y G","dateFormatItem-yQ":"Q y","dayPeriods-format-wide-pm":"nachm.","dateFormatItem-MMMEd":"E, d. MMM","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-MMdd":"dd.MM.","days-standAlone-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"vorm.","dateFormatItem-yyyy":"y G","dateFormatItem-Ed":"E d.","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["S","M","D","M","D","F","S"],"dateFormatItem-yyyyMMMM":"MMMM y G","dateFormat-long":"d. MMMM y G","dateFormatItem-Hm":"HH:mm","dateFormatItem-MMd":"d.MM.","dateFormatItem-yyMM":"MM.y G","dateFormat-medium":"d. MMM y G","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-yyMMM":"MMM y G","dateFormatItem-yyQQQQ":"QQQQ y G","dateFormatItem-yMd":"d.M.y","quarters-standAlone-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"dateFormatItem-ms":"mm:ss","dateFormatItem-yyyyMd":"d.M.y G","dateFormatItem-yyyyMMMd":"d. MMM y G","dateFormatItem-yyyyMEd":"E, d.M.y G","dateFormatItem-MMMd":"d. MMM","dateFormatItem-yyQ":"Q y G","dateFormatItem-H":"HH 'Uhr'","days-format-abbr":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"dateFormatItem-MMMMdd":"dd. MMMM","dateFormatItem-M":"L","days-format-narrow":["S","M","D","M","D","F","S"],"dateFormatItem-yMMMd":"d. MMM y","dateFormatItem-yyyyQQQ":"QQQ y G","dateFormatItem-MEd":"E, d.M.","days-standAlone-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"days-standAlone-abbr":["So","Mo","Di","Mi","Do","Fr","Sa"],"dateFormat-short":"d.M.y G","dateFormatItem-yyyyM":"M.y G","dateFormatItem-yMMMEd":"E, d. MMM y","dateFormat-full":"EEEE d. MMMM y G","dateFormatItem-Md":"d.M.","dateFormatItem-yyyyQ":"Q y G","dateFormatItem-yMEd":"E, d.M.y","days-format-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-d":"d","quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"days-format-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/de/number.js b/lib/dojo/cldr/nls/de/number.js new file mode 100644 index 0000000000..9b6867e362 --- /dev/null +++ b/lib/dojo/cldr/nls/de/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/de/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 Billionen","decimalFormat-short":"000 Bio"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/el/buddhist.js b/lib/dojo/cldr/nls/el/buddhist.js new file mode 100644 index 0000000000..0961958d4f --- /dev/null +++ b/lib/dojo/cldr/nls/el/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/el/buddhist",{"dateFormatItem-yM":"M/y","dateFormatItem-yQ":"y Q","dayPeriods-format-wide-pm":"μ.μ.","dateFormatItem-MMMEd":"E, d MMM","dateFormatItem-yQQQ":"y QQQ","days-standAlone-wide":["ΚυÏιακή","ΔευτέÏα","ΤÏίτη","ΤετάÏτη","Πέμπτη","ΠαÏασκευή","Σάββατο"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Î","Δ"],"dateFormatItem-Gy":"y G","dayPeriods-format-wide-am":"Ï€.μ.","quarters-standAlone-abbr":["Τ1","Τ2","Τ3","Τ4"],"dateFormatItem-y":"y G","timeFormat-full":"h:mm:ss a zzzz","months-standAlone-abbr":["Ιαν","Φεβ","ΜάÏ","ΑπÏ","Μάι","ΙοÏν","ΙοÏλ","ΑÏγ","Σεπ","Οκτ","Îοέ","Δεκ"],"dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"LLL, y G","days-standAlone-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"dateFormat-long":"d MMMM, y G","timeFormat-medium":"h:mm:ss a","dateFormat-medium":"d MMM, y G","dateFormatItem-yMd":"d/M/y","quarters-standAlone-wide":["1ο Ï„Ïίμηνο","2ο Ï„Ïίμηνο","3ο Ï„Ïίμηνο","4ο Ï„Ïίμηνο"],"months-standAlone-wide":["ΙανουάÏιος","ΦεβÏουάÏιος","ΜάÏτιος","ΑπÏίλιος","Μάιος","ΙοÏνιος","ΙοÏλιος","ΑÏγουστος","ΣεπτέμβÏιος","ΟκτώβÏιος","ÎοέμβÏιος","ΔεκέμβÏιος"],"dateFormatItem-MMMd":"d MMM","timeFormat-long":"h:mm:ss a z","months-format-abbr":["Ιαν","Φεβ","ΜαÏ","ΑπÏ","Μαϊ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Îοε","Δεκ"],"timeFormat-short":"h:mm a","quarters-format-abbr":["Τ1","Τ2","Τ3","Τ4"],"days-format-abbr":["ΚυÏ","Δευ","ΤÏί","Τετ","Πέμ","ΠαÏ","Σάβ"],"days-format-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"dateFormatItem-yMMMd":"d MMM, y G","dateFormatItem-MEd":"E, d/M","months-format-narrow":["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Î","Δ"],"days-standAlone-short":["Κυ","Δε","ΤÏ","Τε","Πε","Πα","Σα"],"days-standAlone-abbr":["ΚυÏ","Δευ","ΤÏί","Τετ","Πέμ","ΠαÏ","Σάβ"],"dateFormat-short":"d/M/yyyy","dateFormatItem-yMMMEd":"E, d MMM, y G","dateFormat-full":"EEEE, d MMMM, y G","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E, d/M/y","months-format-wide":["ΙανουαÏίου","ΦεβÏουαÏίου","ΜαÏτίου","ΑπÏιλίου","ΜαÎου","Ιουνίου","Ιουλίου","ΑυγοÏστου","ΣεπτεμβÏίου","ΟκτωβÏίου","ÎοεμβÏίου","ΔεκεμβÏίου"],"days-format-short":["Κυ","Δε","ΤÏ","Τε","Πε","Πα","Σα"],"quarters-format-wide":["1ο Ï„Ïίμηνο","2ο Ï„Ïίμηνο","3ο Ï„Ïίμηνο","4ο Ï„Ïίμηνο"],"days-format-wide":["ΚυÏιακή","ΔευτέÏα","ΤÏίτη","ΤετάÏτη","Πέμπτη","ΠαÏασκευή","Σάββατο"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/el/currency.js b/lib/dojo/cldr/nls/el/currency.js new file mode 100644 index 0000000000..69a1e1fa37 --- /dev/null +++ b/lib/dojo/cldr/nls/el/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/el/currency",{"HKD_displayName":"ΔολάÏιο Χονγκ Κονγκ","CHF_displayName":"ΦÏάγκο Ελβετίας","CAD_displayName":"ΔολάÏιο Καναδά","CNY_displayName":"Γιουάν Ρενμίμπι Κίνας","USD_symbol":"$","AUD_displayName":"ΔολάÏιο ΑυστÏαλίας","JPY_displayName":"Γιεν Ιαπωνίας","USD_displayName":"ΔολάÏιο ΗΠΑ","GBP_displayName":"ΛίÏα ΣτεÏλίνα Î’Ïετανίας","EUR_displayName":"ΕυÏÏŽ"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/el/gregorian.js b/lib/dojo/cldr/nls/el/gregorian.js new file mode 100644 index 0000000000..71df1475b7 --- /dev/null +++ b/lib/dojo/cldr/nls/el/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/el/gregorian",{"days-standAlone-short":["Κυ","Δε","ΤÏ","Τε","Πε","Πα","Σα"],"months-format-narrow":["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Î","Δ"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"ΗμέÏα εβδομάδας","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"E, d/M/yyyy","dateFormatItem-MMMEd":"E, d MMM","eraNarrow":["Ï€.Χ.","μ.Χ."],"days-format-short":["Κυ","Δε","ΤÏ","Τε","Πε","Πα","Σα"],"dateFormat-long":"d MMMM y","months-format-wide":["ΙανουαÏίου","ΦεβÏουαÏίου","ΜαÏτίου","ΑπÏιλίου","ΜαÎου","Ιουνίου","Ιουλίου","ΑυγοÏστου","ΣεπτεμβÏίου","ΟκτωβÏίου","ÎοεμβÏίου","ΔεκεμβÏίου"],"dateTimeFormat-medium":"{1} - {0}","dayPeriods-format-wide-pm":"μ.μ.","dateFormat-full":"EEEE, d MMMM y","dateFormatItem-Md":"d/M","dateFormatItem-yMd":"d/M/yyyy","field-era":"ΠεÏίοδος","dateFormatItem-yM":"M/yyyy","months-standAlone-wide":["ΙανουάÏιος","ΦεβÏουάÏιος","ΜάÏτιος","ΑπÏίλιος","Μάιος","ΙοÏνιος","ΙοÏλιος","ΑÏγουστος","ΣεπτέμβÏιος","ΟκτώβÏιος","ÎοέμβÏιος","ΔεκέμβÏιος"],"timeFormat-short":"h:mm a","quarters-format-wide":["1ο Ï„Ïίμηνο","2ο Ï„Ïίμηνο","3ο Ï„Ïίμηνο","4ο Ï„Ïίμηνο"],"timeFormat-long":"h:mm:ss a z","field-year":"Έτος","dateFormatItem-yMMM":"LLL y","dateFormatItem-yQ":"y Q","dateFormatItem-yyyyMMMM":"LLLL y","field-hour":"ÎÏα","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["Ιαν","Φεβ","ΜαÏ","ΑπÏ","Μαϊ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Îοε","Δεκ"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"h:mm:ss a zzzz","field-day-relative+0":"ΣήμεÏα","field-day-relative+1":"ΑÏÏιο","field-day-relative+2":"ΜεθαÏÏιο","dateFormatItem-H":"HH","months-standAlone-abbr":["Ιαν","Φεβ","ΜάÏ","ΑπÏ","Μάι","ΙοÏν","ΙοÏλ","ΑÏγ","Σεπ","Οκτ","Îοέ","Δεκ"],"quarters-format-abbr":["Τ1","Τ2","Τ3","Τ4"],"quarters-standAlone-wide":["1ο Ï„Ïίμηνο","2ο Ï„Ïίμηνο","3ο Ï„Ïίμηνο","4ο Ï„Ïίμηνο"],"dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-M":"L","days-standAlone-wide":["ΚυÏιακή","ΔευτέÏα","ΤÏίτη","ΤετάÏτη","Πέμπτη","ΠαÏασκευή","Σάββατο"],"dateFormatItem-MMMMd":"d MMMM","dateFormatItem-yyMMM":"LLL yy","timeFormat-medium":"h:mm:ss a","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Τ1","Τ2","Τ3","Τ4"],"eraAbbr":["Ï€.Χ.","μ.Χ."],"field-minute":"Λεπτό","field-dayperiod":"Ï€.μ./μ.μ.","days-standAlone-abbr":["ΚυÏ","Δευ","ΤÏί","Τετ","Πέμ","ΠαÏ","Σάβ"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"Χτες","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} - {0}","field-day-relative+-2":"ΠÏοχτές","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1} - {0}","field-day":"ΗμέÏα","days-format-wide":["ΚυÏιακή","ΔευτέÏα","ΤÏίτη","ΤετάÏτη","Πέμπτη","ΠαÏασκευή","Σάββατο"],"field-zone":"Ζώνη","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Î","Δ"],"field-year-relative+-1":"ΠÏοηγοÏμενο έτος","field-month-relative+-1":"ΠÏοηγοÏμενος μήνας","dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"h:mm a","days-format-abbr":["ΚυÏ","Δευ","ΤÏί","Τετ","Πέμ","ΠαÏ","Σάβ"],"dateFormatItem-yMMMd":"d MMM y","eraNames":["Ï€.Χ.","μ.Χ."],"days-format-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"days-standAlone-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"dateFormatItem-MMM":"LLL","field-month":"Μήνας","dateFormatItem-HHmm":"HH:mm","dayPeriods-format-wide-am":"Ï€.μ.","dateFormatItem-MMMMEd":"E, d MMMM","dateFormatItem-MMMMdd":"dd MMMM","dateFormat-short":"d/M/yy","field-second":"ΔευτεÏόλεπτο","dateFormatItem-yMMMEd":"E, d MMM y","field-month-relative+0":"ΤÏέχων μήνας","field-month-relative+1":"Επόμενος μήνας","dateFormatItem-Ed":"E d","field-week":"Εβδομάδα","dateFormat-medium":"d MMM y","field-year-relative+0":"Φέτος","field-week-relative+-1":"ΠÏοηγοÏμενη εβδομάδα","field-year-relative+1":"Επόμενο έτος","dateFormatItem-mmss":"mm:ss","dateTimeFormat-short":"{1} - {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yyyy":"y","field-week-relative+0":"Αυτήν την εβδομάδα","field-week-relative+1":"Επόμενη εβδομάδα"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/el/hebrew.js b/lib/dojo/cldr/nls/el/hebrew.js new file mode 100644 index 0000000000..827a4a139a --- /dev/null +++ b/lib/dojo/cldr/nls/el/hebrew.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/el/hebrew",{"dateFormatItem-yM":"M/yyyy","dayPeriods-format-wide-pm":"μ.μ.","eraNames":["Ï€.μ."],"dateFormatItem-MMMEd":"E, d MMM","dateTimeFormat-full":"{1} - {0}","days-standAlone-wide":["ΚυÏιακή","ΔευτέÏα","ΤÏίτη","ΤετάÏτη","Πέμπτη","ΠαÏασκευή","Σάββατο"],"dateTimeFormat-short":"{1} - {0}","dayPeriods-format-wide-am":"Ï€.μ.","dateTimeFormat-medium":"{1} - {0}","quarters-standAlone-abbr":["Τ1","Τ2","Τ3","Τ4"],"timeFormat-full":"h:mm:ss a zzzz","dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"LLL y","days-standAlone-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"eraAbbr":["Ï€.μ."],"dateFormat-long":"d MMMM y","timeFormat-medium":"h:mm:ss a","dateFormat-medium":"d MMM y","dateFormatItem-yMd":"d/M/yyyy","quarters-standAlone-wide":["1ο Ï„Ïίμηνο","2ο Ï„Ïίμηνο","3ο Ï„Ïίμηνο","4ο Ï„Ïίμηνο"],"dateTimeFormat-long":"{1} - {0}","dateFormatItem-MMMd":"d MMM","timeFormat-long":"h:mm:ss a z","timeFormat-short":"h:mm a","quarters-format-abbr":["Τ1","Τ2","Τ3","Τ4"],"days-format-abbr":["ΚυÏ","Δευ","ΤÏί","Τετ","Πέμ","ΠαÏ","Σάβ"],"days-format-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"dateFormatItem-yMMMd":"d MMM y","dateFormatItem-MEd":"E, d/M","days-standAlone-short":["Κυ","Δε","ΤÏ","Τε","Πε","Πα","Σα"],"days-standAlone-abbr":["ΚυÏ","Δευ","ΤÏί","Τετ","Πέμ","ΠαÏ","Σάβ"],"dateFormat-short":"d/M/yy","dateFormatItem-yMMMEd":"E, d MMM y","dateFormat-full":"EEEE, d MMMM y","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E, d/M/yyyy","days-format-short":["Κυ","Δε","ΤÏ","Τε","Πε","Πα","Σα"],"quarters-format-wide":["1ο Ï„Ïίμηνο","2ο Ï„Ïίμηνο","3ο Ï„Ïίμηνο","4ο Ï„Ïίμηνο"],"days-format-wide":["ΚυÏιακή","ΔευτέÏα","ΤÏίτη","ΤετάÏτη","Πέμπτη","ΠαÏασκευή","Σάββατο"],"eraNarrow":["Ï€.μ."]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/el/number.js b/lib/dojo/cldr/nls/el/number.js new file mode 100644 index 0000000000..1667f54818 --- /dev/null +++ b/lib/dojo/cldr/nls/el/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/el/number",{"group":".","percentSign":"%","exponential":"e","percentFormat":"#,##0%","list":",","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 Ï„ÏισεκατομμÏÏια","decimalFormat-short":"000 τÏις"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-au/currency.js b/lib/dojo/cldr/nls/en-au/currency.js new file mode 100644 index 0000000000..c6388c5104 --- /dev/null +++ b/lib/dojo/cldr/nls/en-au/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/en-au/currency",{"AUD_symbol":"$","USD_symbol":"US$"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-au/gregorian.js b/lib/dojo/cldr/nls/en-au/gregorian.js new file mode 100644 index 0000000000..f22acf2c93 --- /dev/null +++ b/lib/dojo/cldr/nls/en-au/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/en-au/gregorian",{"dateFormatItem-yMd":"d/M/y","dateFormat-medium":"dd/MM/yyyy","dateFormatItem-MMMEd":"E, d MMM","dateFormatItem-MMdd":"dd/MM","dateFormatItem-MEd":"E, d/M","dateFormatItem-yMEd":"E, d/M/y","dateFormatItem-yMMMd":"d MMM y","timeFormat-full":"h:mm:ss a zzzz","dateFormatItem-yyyyMMMM":"MMMM y","dateFormatItem-MMMMd":"d MMMM","dateFormatItem-yyyyMM":"MM/yyyy","timeFormat-medium":"h:mm:ss a","dateFormat-long":"d MMMM y","dateFormat-short":"d/MM/yy","timeFormat-short":"h:mm a","timeFormat-long":"h:mm:ss a z","dateFormat-full":"EEEE, d MMMM y","dateFormatItem-MMMd":"d MMM"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-au/number.js b/lib/dojo/cldr/nls/en-au/number.js new file mode 100644 index 0000000000..bc10a63490 --- /dev/null +++ b/lib/dojo/cldr/nls/en-au/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/en-au/number",{"currencyFormat":"¤#,##0.00"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-ca/currency.js b/lib/dojo/cldr/nls/en-ca/currency.js new file mode 100644 index 0000000000..dffc2b8ef2 --- /dev/null +++ b/lib/dojo/cldr/nls/en-ca/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/en-ca/currency",{"CAD_symbol":"$","USD_symbol":"US$"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-ca/gregorian.js b/lib/dojo/cldr/nls/en-ca/gregorian.js new file mode 100644 index 0000000000..372bf99ebf --- /dev/null +++ b/lib/dojo/cldr/nls/en-ca/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/en-ca/gregorian",{"dateFormatItem-MMMMEd":"E, MMMM d","dateFormatItem-MMdd":"MM/dd","dateFormatItem-yyMMM":"MMM yy","dateFormatItem-MMMMd":"MMMM d"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-gb/buddhist.js b/lib/dojo/cldr/nls/en-gb/buddhist.js new file mode 100644 index 0000000000..51c5fe4eec --- /dev/null +++ b/lib/dojo/cldr/nls/en-gb/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/en-gb/buddhist",{"dateFormatItem-yM":"MM/y","dateFormatItem-yQ":"Q y","dayPeriods-format-wide-pm":"pm","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-MMdd":"dd/MM","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dayPeriods-format-wide-am":"am","dateFormatItem-y":"y","dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-yyyyMM":"MM/y G","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormat-long":"d MMMM y G","dateFormat-medium":"d MMM y G","dayPeriods-format-narrow-pm":"p","dateFormatItem-yyMMM":"MMM y G","dateFormatItem-yMd":"dd/MM/yyyy","dayPeriods-format-narrow-am":"a","dateFormatItem-yyyyMd":"d/M/y G","dateFormatItem-MMMd":"d MMM","months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"dateFormatItem-MMMMd":"d MMMM","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-M":"LL","dateFormatItem-yMMMd":"d MMM y G","dateFormatItem-MEd":"E, d/M","dateFormat-short":"dd/MM/y G","dateFormatItem-yMMMEd":"E, d MMM y G","dateFormat-full":"EEEE, d MMMM y G","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E, d/M/y G","months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"days-format-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-gb/currency.js b/lib/dojo/cldr/nls/en-gb/currency.js new file mode 100644 index 0000000000..832073218d --- /dev/null +++ b/lib/dojo/cldr/nls/en-gb/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/en-gb/currency",{"HKD_displayName":"Hong Kong Dollar","CAD_displayName":"Canadian Dollar","HKD_symbol":"HK$","CNY_displayName":"Chinese Yuan","AUD_displayName":"Australian Dollar","CAD_symbol":"CA$","EUR_symbol":"€","CNY_symbol":"CNÂ¥","GBP_displayName":"British Pound","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"Euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-gb/gregorian.js b/lib/dojo/cldr/nls/en-gb/gregorian.js new file mode 100644 index 0000000000..b8e2461beb --- /dev/null +++ b/lib/dojo/cldr/nls/en-gb/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/en-gb/gregorian",{"dateFormatItem-yM":"MM/y","field-dayperiod":"am/pm","dayPeriods-format-wide-pm":"pm","dateFormatItem-yQ":"Q y","dateFormatItem-MMMEd":"E d MMM","dateTimeFormat-full":"{1} {0}","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-MMdd":"dd/MM","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-MMM":"LLL","dateTimeFormat-short":"{1} {0}","dayPeriods-format-wide-am":"am","dateTimeFormat-medium":"{1} {0}","dateFormatItem-y":"y","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-yyyyMMMM":"MMMM y","dateFormat-long":"d MMMM y","timeFormat-medium":"HH:mm:ss","dateFormatItem-Ehm":"E h:mm a","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"d MMM y","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-yyMMM":"MMM yy","dateFormatItem-yMd":"dd/MM/yyyy","dateFormatItem-ms":"mm:ss","dateTimeFormat-long":"{1} {0}","dateFormatItem-MMMd":"d MMM","dateFormatItem-Ehms":"E h:mm:ss a","timeFormat-long":"HH:mm:ss z","timeFormat-short":"HH:mm","dateFormatItem-H":"HH","dateFormatItem-MMMMd":"d MMMM","dateFormatItem-M":"LL","dateFormatItem-yMMMd":"d MMM y","dateFormatItem-MEd":"E dd/MM","dateFormatItem-hm":"h:mm a","dateFormat-short":"dd/MM/yyyy","dateFormatItem-yMMMEd":"E, d MMM y","dateFormat-full":"EEEE, d MMMM y","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Md":"dd/MM","dateFormatItem-EHm":"E HH:mm","dateFormatItem-yMEd":"E, dd/MM/yyyy","dateFormatItem-d":"d","dateFormatItem-h":"h a"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-gb/islamic.js b/lib/dojo/cldr/nls/en-gb/islamic.js new file mode 100644 index 0000000000..6d9282d799 --- /dev/null +++ b/lib/dojo/cldr/nls/en-gb/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/en-gb/islamic",{"dateFormatItem-yM":"MM/y","dateFormatItem-yyyyMMMEd":"E, d MMM y G","dateFormatItem-yQ":"Q y","dayPeriods-format-wide-pm":"pm","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-MMdd":"dd/MM","dayPeriods-format-wide-am":"am","dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-yyyyMM":"MM/y G","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormat-long":"d MMMM y G","dateFormat-medium":"d MMM y G","dayPeriods-format-narrow-pm":"p","dateFormatItem-yyMMM":"MMM y G","dateFormatItem-yMd":"dd/MM/yyyy","dayPeriods-format-narrow-am":"a","dateFormatItem-yyyyMd":"d/M/y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-yyyyMEd":"E, d/M/y G","dateFormatItem-MMMd":"d MMM","dateFormatItem-MMMMd":"d MMMM","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-M":"LL","dateFormatItem-yMMMd":"d MMM y","dateFormatItem-MEd":"E, d/M","dateFormat-short":"dd/MM/y G","dateFormatItem-yMMMEd":"E, d MMM y","dateFormat-full":"EEEE, d MMMM y G","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E, dd/MM/yyyy","days-format-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-gb/number.js b/lib/dojo/cldr/nls/en-gb/number.js new file mode 100644 index 0000000000..d2f53365cf --- /dev/null +++ b/lib/dojo/cldr/nls/en-gb/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/en-gb/number",{"currencyFormat":"¤#,##0.00","decimalFormat-short":"000T"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en/buddhist.js b/lib/dojo/cldr/nls/en/buddhist.js new file mode 100644 index 0000000000..e4d18269bb --- /dev/null +++ b/lib/dojo/cldr/nls/en/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/en/buddhist",{"dateFormatItem-yM":"M/y GGGGG","dateFormatItem-yQ":"Q y G","dateFormatItem-MMMEd":"E, MMM d","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ y G","dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-Gy":"y G","dateFormatItem-y":"y G","timeFormat-full":"h:mm:ss a zzzz","dateFormatItem-Ed":"d E","dateFormatItem-yMMM":"MMM y G","days-standAlone-narrow":["S","M","T","W","T","F","S"],"dateFormat-long":"MMMM d, y G","timeFormat-medium":"h:mm:ss a","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"MMM d, y G","dateFormatItem-Hms":"HH:mm:ss","dayPeriods-format-narrow-pm":"p","dateFormatItem-yMd":"M/d/y GGGGG","dateFormatItem-ms":"mm:ss","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"MMM d","timeFormat-long":"h:mm:ss a z","months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"timeFormat-short":"h:mm a","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-M":"L","dateFormatItem-yMMMd":"MMM d, y G","dateFormatItem-MEd":"E, M/d","dateFormatItem-hm":"h:mm a","dateFormat-short":"M/d/yy GGGGG","dateFormatItem-yMMMEd":"E, MMM d, y G","dateFormat-full":"EEEE, MMMM d, y G","dateFormatItem-Md":"M/d","dateFormatItem-yMEd":"E, M/d/y GGGGG","months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"days-format-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"dateFormatItem-d":"d","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en/currency.js b/lib/dojo/cldr/nls/en/currency.js new file mode 100644 index 0000000000..ec5f3b3edf --- /dev/null +++ b/lib/dojo/cldr/nls/en/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/en/currency",{"HKD_displayName":"Hong Kong Dollar","CHF_displayName":"Swiss Franc","JPY_symbol":"Â¥","CAD_displayName":"Canadian Dollar","CNY_displayName":"Chinese Yuan","USD_symbol":"$","AUD_displayName":"Australian Dollar","JPY_displayName":"Japanese Yen","USD_displayName":"US Dollar","GBP_displayName":"British Pound Sterling","EUR_displayName":"Euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en/gregorian.js b/lib/dojo/cldr/nls/en/gregorian.js new file mode 100644 index 0000000000..c624ec00d0 --- /dev/null +++ b/lib/dojo/cldr/nls/en/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/en/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Day of the Week","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E, M/d/y","dateFormatItem-MMMEd":"E, MMM d","eraNarrow":["B","A"],"days-format-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"dateFormat-long":"MMMM d, y","months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, MMMM d, y","dateFormatItem-Md":"M/d","dayPeriods-format-wide-noon":"noon","dateFormatItem-yMd":"M/d/y","field-era":"Era","dateFormatItem-yM":"M/y","months-standAlone-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"timeFormat-short":"h:mm a","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"timeFormat-long":"h:mm:ss a z","field-year":"Year","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q y","field-hour":"Hour","months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"timeFormat-full":"h:mm:ss a zzzz","field-day-relative+0":"Today","field-day-relative+1":"Tomorrow","months-standAlone-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dateFormatItem-M":"L","days-standAlone-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"timeFormat-medium":"h:mm:ss a","dateFormatItem-Hm":"HH:mm","eraAbbr":["BC","AD"],"field-minute":"Minute","field-dayperiod":"AM/PM","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"Yesterday","dateTimeFormat-long":"{1} 'at' {0}","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"E, M/d","dateTimeFormat-full":"{1} 'at' {0}","field-day":"Day","days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"field-zone":"Time Zone","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"Last year","field-month-relative+-1":"Last month","dateFormatItem-hm":"h:mm a","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yMMMd":"MMM d, y","eraNames":["Before Christ","Anno Domini"],"days-format-narrow":["S","M","T","W","T","F","S"],"field-month":"Month","days-standAlone-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"AM","dateFormatItem-EHm":"E HH:mm","dateFormat-short":"M/d/yy","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-format-narrow-noon":"n","field-second":"Second","dateFormatItem-yMMMEd":"E, MMM d, y","field-month-relative+0":"This month","field-month-relative+1":"Next month","dateFormatItem-Ed":"d E","field-week":"Week","dateFormat-medium":"MMM d, y","field-year-relative+0":"This year","field-week-relative+-1":"Last week","field-year-relative+1":"Next year","dayPeriods-format-narrow-pm":"p","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","field-week-relative+0":"This week","field-week-relative+1":"Next week"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en/islamic.js b/lib/dojo/cldr/nls/en/islamic.js new file mode 100644 index 0000000000..dbd5af46c3 --- /dev/null +++ b/lib/dojo/cldr/nls/en/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/en/islamic",{"dateFormatItem-yM":"M/y","dateFormatItem-yyyyMMMEd":"E, MMM d, y G","dateFormatItem-yQ":"Q y","dateFormatItem-MMMEd":"E, MMM d","dateTimeFormat-full":"{1} 'at' {0}","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-MMM":"LLL","dateTimeFormat-short":"{1}, {0}","dateTimeFormat-medium":"{1}, {0}","timeFormat-full":"h:mm:ss a zzzz","dateFormatItem-yyyy":"y G","dateFormatItem-Ed":"d E","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["S","M","T","W","T","F","S"],"dateFormat-long":"MMMM d, y G","timeFormat-medium":"h:mm:ss a","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"MMM d, y G","dateFormatItem-Hms":"HH:mm:ss","dayPeriods-format-narrow-pm":"p","dateFormatItem-yMd":"M/d/y","dateFormatItem-ms":"mm:ss","dayPeriods-format-narrow-am":"a","dateTimeFormat-long":"{1} 'at' {0}","dateFormatItem-yyyyMd":"M/d/y G","dateFormatItem-yyyyMMMd":"MMM d, y G","dateFormatItem-yyyyMEd":"E, M/d/y G","dateFormatItem-MMMd":"MMM d","timeFormat-long":"h:mm:ss a z","timeFormat-short":"h:mm a","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-M":"L","dateFormatItem-yMMMd":"MMM d, y","dateFormatItem-yyyyQQQ":"QQQ y G","dateFormatItem-MEd":"E, M/d","dateFormatItem-hm":"h:mm a","dateFormat-short":"M/d/yy G","dateFormatItem-yyyyM":"M/y G","dateFormatItem-yMMMEd":"E, MMM d, y","dateFormat-full":"EEEE, MMMM d, y G","dateFormatItem-Md":"M/d","dateFormatItem-yyyyQ":"Q y G","dateFormatItem-yMEd":"E, M/d/y","days-format-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-d":"d","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en/number.js b/lib/dojo/cldr/nls/en/number.js new file mode 100644 index 0000000000..c6db228aaa --- /dev/null +++ b/lib/dojo/cldr/nls/en/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/en/number",{"group":",","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":".","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","decimalFormat-long":"000 trillion","decimalFormat-short":"000T"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/es/buddhist.js b/lib/dojo/cldr/nls/es/buddhist.js new file mode 100644 index 0000000000..2c26fd479a --- /dev/null +++ b/lib/dojo/cldr/nls/es/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/es/buddhist",{"dateFormatItem-yM":"M/y G","dateFormatItem-yQ":"Q y G","dayPeriods-format-wide-pm":"p.m.","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-yQQQ":"QQQ y G","dateFormatItem-MMM":"LLL","months-standAlone-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-Gy":"y G","dayPeriods-format-wide-am":"a.m.","dateFormatItem-y":"y G","dateFormatItem-MMMdd":"dd-MMM","months-standAlone-abbr":["ene","feb","mar","abr","mayo","jun","jul","ago","sep","oct","nov","dic"],"dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y G","days-standAlone-narrow":["D","L","M","X","J","V","S"],"dateFormatItem-yyyyMM":"MM/y G","dateFormat-long":"d 'de' MMMM 'de' y G","dateFormatItem-Hm":"HH:mm","dateFormatItem-MMd":"d/MM","dateFormatItem-yyMM":"MM/y G","dateFormat-medium":"dd/MM/y G","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-yyMMM":"MMM-y G","dateFormatItem-yyQQQQ":"QQQQ 'de' y G","dateFormatItem-yMd":"d/M/y G","quarters-standAlone-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"dateFormatItem-yMMMM":"MMMM 'de' y G","dateFormatItem-ms":"mm:ss","quarters-standAlone-narrow":["1T","2T","3T","4T"],"dateFormatItem-MMMd":"d MMM","quarters-format-narrow":["1T","2T","3T","4T"],"dateFormatItem-yyQ":"Q y G","months-format-abbr":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],"dateFormatItem-MMMMd":"d 'de' MMMM","quarters-format-abbr":["T1","T2","T3","T4"],"days-format-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"dateFormatItem-M":"L","dateFormatItem-yMMMd":"d MMM y G","dateFormatItem-MEd":"E, d/M","days-standAlone-short":["D","L","M","X","J","V","S"],"dateFormatItem-hm":"hh:mm a","dateFormat-short":"dd/MM/y G","dateFormatItem-yMMMEd":"E, d MMM y G","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E d/M/y G","months-format-wide":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],"days-format-short":["D","L","M","X","J","V","S"],"dateFormatItem-d":"d","quarters-format-wide":["1er trimestre","2º trimestre","3er trimestre","4º trimestre"],"days-format-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"dateFormatItem-h":"hh a"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/es/currency.js b/lib/dojo/cldr/nls/es/currency.js new file mode 100644 index 0000000000..3d3d306381 --- /dev/null +++ b/lib/dojo/cldr/nls/es/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/es/currency",{"HKD_displayName":"dólar de Hong Kong","CHF_displayName":"franco suizo","CAD_displayName":"dólar canadiense","CNY_displayName":"yuan chino","AUD_displayName":"dólar australiano","JPY_displayName":"yen japonés","USD_displayName":"dólar estadounidense","GBP_displayName":"libra esterlina británica","AUD_symbol":"AU$","EUR_displayName":"euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/es/gregorian.js b/lib/dojo/cldr/nls/es/gregorian.js new file mode 100644 index 0000000000..69ac7e754d --- /dev/null +++ b/lib/dojo/cldr/nls/es/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/es/gregorian",{"days-standAlone-short":["D","L","M","X","J","V","S"],"months-format-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"quarters-standAlone-narrow":["1T","2T","3T","4T"],"field-weekday":"día de la semana","dateFormatItem-yyQQQQ":"QQQQ 'de' yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE, d/M/y","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["a.C.","d.C."],"dateFormatItem-MMMdd":"dd-MMM","days-format-short":["D","L","M","X","J","V","S"],"dateFormat-long":"d 'de' MMMM 'de' y","months-format-wide":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"p.m.","dateFormat-full":"EEEE, d 'de' MMMM 'de' y","dateFormatItem-Md":"d/M","dateFormatItem-yMd":"d/M/y","field-era":"era","dateFormatItem-yM":"M/y","months-standAlone-wide":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],"timeFormat-short":"HH:mm","quarters-format-wide":["1er trimestre","2º trimestre","3er trimestre","4º trimestre"],"timeFormat-long":"HH:mm:ss z","field-year":"año","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q y","field-hour":"hora","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"hoy","field-day-relative+1":"mañana","field-day-relative+2":"pasado mañana","dateFormatItem-H":"HH","months-standAlone-abbr":["ene","feb","mar","abr","mayo","jun","jul","ago","sep","oct","nov","dic"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"dateFormatItem-M":"L","days-standAlone-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"dateFormatItem-MMMMd":"d 'de' MMMM","dateFormatItem-yyMMM":"MMM-yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["a.C.","d.C."],"field-minute":"minuto","field-dayperiod":"periodo del día","days-standAlone-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1T","2T","3T","4T"],"field-day-relative+-1":"ayer","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"antes de ayer","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1} {0}","dateFormatItem-yMMMM":"MMMM 'de' y","field-day":"día","days-format-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"field-zone":"zona","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"el año pasado","field-month-relative+-1":"el mes pasado","dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"hh:mm a","days-format-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"dateFormatItem-yMMMd":"d MMM y","eraNames":["antes de Cristo","anno Dómini"],"days-format-narrow":["D","L","M","X","J","V","S"],"field-month":"mes","days-standAlone-narrow":["D","L","M","X","J","V","S"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"a.m.","dateFormat-short":"dd/MM/yy","dateFormatItem-MMd":"d/MM","field-second":"segundo","dateFormatItem-yMMMEd":"EEE, d 'de' MMMM 'de' y","field-month-relative+0":"este mes","field-month-relative+1":"el próximo mes","dateFormatItem-Ed":"E d","field-week":"semana","dateFormat-medium":"dd/MM/yyyy","field-year-relative+0":"este año","field-week-relative+-1":"la semana pasada","field-year-relative+1":"el próximo año","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"hh:mm:ss a","field-week-relative+0":"esta semana","field-week-relative+1":"la próxima semana"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/es/islamic.js b/lib/dojo/cldr/nls/es/islamic.js new file mode 100644 index 0000000000..707d8a350e --- /dev/null +++ b/lib/dojo/cldr/nls/es/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/es/islamic",{"dateFormatItem-yM":"M/y","dateFormatItem-yyyyMMMEd":"E, d MMM y G","dateFormatItem-yQ":"Q y","dayPeriods-format-wide-pm":"p.m.","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"a.m.","dateFormatItem-MMMdd":"dd-MMM","dateFormatItem-yyyy":"y G","dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["D","L","M","X","J","V","S"],"dateFormatItem-yyyyMMMM":"MMMM 'de' y G","dateFormat-long":"d 'de' MMMM 'de' y G","dateFormatItem-Hm":"HH:mm","dateFormatItem-MMd":"d/MM","dateFormatItem-yyMM":"MM/y G","dateFormat-medium":"dd/MM/y G","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-yyMMM":"MMM-y G","dateFormatItem-yyQQQQ":"QQQQ 'de' y G","dateFormatItem-yMd":"d/M/y","quarters-standAlone-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"dateFormatItem-ms":"mm:ss","quarters-standAlone-narrow":["1T","2T","3T","4T"],"dateFormatItem-yyyyMd":"d/M/y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-yyyyMEd":"E d/M/y G","dateFormatItem-MMMd":"d MMM","quarters-format-narrow":["1T","2T","3T","4T"],"dateFormatItem-yyQ":"Q y G","dateFormatItem-MMMMd":"d 'de' MMMM","quarters-format-abbr":["T1","T2","T3","T4"],"days-format-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"dateFormatItem-M":"L","dateFormatItem-yMMMd":"d MMM y","dateFormatItem-MEd":"E, d/M","dateFormatItem-yyyyQQQ":"QQQ y G","days-standAlone-short":["D","L","M","X","J","V","S"],"dateFormatItem-hm":"hh:mm a","dateFormat-short":"dd/MM/y G","dateFormatItem-yyyyM":"M/y G","dateFormatItem-yMMMEd":"E d MMM y","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-Md":"d/M","dateFormatItem-yyyyQ":"Q y G","dateFormatItem-yMEd":"EEE, d/M/y","days-format-short":["D","L","M","X","J","V","S"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-d":"d","quarters-format-wide":["1er trimestre","2º trimestre","3er trimestre","4º trimestre"],"days-format-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"dateFormatItem-h":"hh a"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/es/number.js b/lib/dojo/cldr/nls/es/number.js new file mode 100644 index 0000000000..43bdb13a3f --- /dev/null +++ b/lib/dojo/cldr/nls/es/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/es/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 billones","decimalFormat-short":"000 B"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fi/buddhist.js b/lib/dojo/cldr/nls/fi/buddhist.js new file mode 100644 index 0000000000..c77dd23b62 --- /dev/null +++ b/lib/dojo/cldr/nls/fi/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/fi/buddhist",{"dateFormatItem-yM":"L.y G","dateFormatItem-yMMMMccccd":"cccc, d. MMMM y G","dateFormatItem-yQ":"Q/y G","dayPeriods-format-wide-pm":"ip.","dateFormatItem-MMMEd":"E d. MMM","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-yQQQ":"QQQ y G","days-standAlone-wide":["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"dateFormatItem-Gy":"y G","dayPeriods-format-wide-am":"ap.","quarters-standAlone-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"dateFormatItem-y":"y G","timeFormat-full":"H.mm.ss zzzz","months-standAlone-abbr":["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],"dateFormatItem-Ed":"ccc d.","dateFormatItem-yMMM":"LLLL y G","days-standAlone-narrow":["S","M","T","K","T","P","L"],"dateFormatItem-yyyyMMMM":"LLLL y G","dateFormat-long":"d. MMMM y G","timeFormat-medium":"H.mm.ss","dateFormatItem-Hm":"H.mm","dateFormatItem-yyMM":"M.y G","dateFormat-medium":"d.M.y G","dateFormatItem-Hms":"H.mm.ss","dayPeriods-format-narrow-pm":"ip.","dateFormatItem-yyMMM":"LLLL y G","dateFormatItem-yMd":"d.M.y G","quarters-standAlone-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"dateFormatItem-ms":"mm.ss","dateFormatItem-yyyyQQQQ":"QQQQ y G","dayPeriods-format-narrow-am":"ap.","months-standAlone-wide":["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],"dateFormatItem-yyyyMEd":"E d.M.y G","dateFormatItem-MMMd":"d. MMM","dateFormatItem-yyQ":"Q/y G","timeFormat-long":"H.mm.ss z","months-format-abbr":["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"],"dateFormatItem-H":"H","timeFormat-short":"H.mm","quarters-format-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"days-format-abbr":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-M":"L","days-format-narrow":["S","M","T","K","T","P","L"],"dateFormatItem-yMMMd":"d. MMM y G","dateFormatItem-MEd":"E d.M.","months-format-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"days-standAlone-short":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-hm":"h.mm a","days-standAlone-abbr":["su","ma","ti","ke","to","pe","la"],"dayPeriods-format-abbr-pm":"ip.","dateFormat-short":"d.M.y G","dateFormatItem-yyyyM":"M.y G","dateFormatItem-yMMMEd":"E d. MMM y G","dateFormat-full":"cccc d. MMMM y G","dateFormatItem-Md":"d.M.","dateFormatItem-yMEd":"E d.M.y G","months-format-wide":["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"],"dayPeriods-format-abbr-am":"ap.","days-format-short":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-d":"d","quarters-format-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"days-format-wide":["sunnuntaina","maanantaina","tiistaina","keskiviikkona","torstaina","perjantaina","lauantaina"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fi/currency.js b/lib/dojo/cldr/nls/fi/currency.js new file mode 100644 index 0000000000..7191777c0b --- /dev/null +++ b/lib/dojo/cldr/nls/fi/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/fi/currency",{"HKD_displayName":"Hongkongin dollari","CHF_displayName":"Sveitsin frangi","JPY_symbol":"Â¥","CAD_displayName":"Kanadan dollari","HKD_symbol":"HKD","CNY_displayName":"Kiinan yuan","USD_symbol":"$","AUD_displayName":"Australian dollari","JPY_displayName":"Japanin jeni","CAD_symbol":"CAD","USD_displayName":"Yhdysvaltain dollari","EUR_symbol":"€","CNY_symbol":"CNY","GBP_displayName":"Englannin punta","GBP_symbol":"£","AUD_symbol":"AUD","EUR_displayName":"euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fi/gregorian.js b/lib/dojo/cldr/nls/fi/gregorian.js new file mode 100644 index 0000000000..9ab9b756cf --- /dev/null +++ b/lib/dojo/cldr/nls/fi/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/fi/gregorian",{"days-standAlone-short":["su","ma","ti","ke","to","pe","la"],"months-format-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"viikonpäivä","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E d.M.yyyy","dateFormatItem-MMMEd":"ccc d. MMM","eraNarrow":["eK","jK"],"days-format-short":["su","ma","ti","ke","to","pe","la"],"dateFormat-long":"d. MMMM y","months-format-wide":["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"ip.","dateFormat-full":"cccc d. MMMM y","dateFormatItem-yyyyMEd":"E d.M.yyyy","dateFormatItem-Md":"d.M.","dayPeriods-standAlone-wide-pm":"ip.","dayPeriods-format-abbr-am":"ap.","dateFormatItem-yMd":"d.M.yyyy","dateFormatItem-yM":"L.yyyy","field-era":"aikakausi","months-standAlone-wide":["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],"timeFormat-short":"H.mm","quarters-format-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"timeFormat-long":"H.mm.ss z","dateFormatItem-yMMM":"LLL y","dateFormatItem-yQ":"Q/yyyy","field-year":"vuosi","dateFormatItem-yyyyMMMM":"LLLL y","field-hour":"tunti","months-format-abbr":["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"],"dateFormatItem-yyQ":"Q/yy","timeFormat-full":"H.mm.ss zzzz","field-day-relative+0":"tänään","field-day-relative+1":"huomenna","field-day-relative+2":"ylihuomenna","dateFormatItem-H":"H","months-standAlone-abbr":["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],"quarters-format-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"quarters-standAlone-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"dateFormatItem-M":"L","days-standAlone-wide":["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],"dateFormatItem-yyMMM":"LLLL yy","timeFormat-medium":"H.mm.ss","dateFormatItem-Hm":"H.mm","quarters-standAlone-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"eraAbbr":["eKr.","jKr."],"field-minute":"minuutti","field-dayperiod":"vuorokaudenaika","days-standAlone-abbr":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm.ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"eilen","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"ap.","field-day-relative+-2":"toissapäivänä","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d.M.","dateTimeFormat-full":"{1} {0}","dateFormatItem-yMMMMccccd":"cccc d. MMMM y","field-day":"päivä","days-format-wide":["sunnuntaina","maanantaina","tiistaina","keskiviikkona","torstaina","perjantaina","lauantaina"],"field-zone":"aikavyöhyke","dateFormatItem-y":"y","months-standAlone-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"field-year-relative+-1":"viime vuonna","field-month-relative+-1":"viime kuussa","dateFormatItem-yyMM":"M.yy","dateFormatItem-hm":"h.mm a","dayPeriods-format-abbr-pm":"ip.","days-format-abbr":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-yMMMd":"d. MMM y","eraNames":["ennen Kristuksen syntymää","jälkeen Kristuksen syntymän"],"days-format-narrow":["S","M","T","K","T","P","L"],"days-standAlone-narrow":["S","M","T","K","T","P","L"],"dateFormatItem-MMM":"LLL","field-month":"kuukausi","dayPeriods-format-wide-am":"ap.","dayPeriods-standAlone-wide-am":"ap.","dateFormat-short":"d.M.yyyy","field-second":"sekunti","dateFormatItem-yMMMEd":"E d. MMM y","field-month-relative+0":"tässä kuussa","field-month-relative+1":"ensi kuussa","dateFormatItem-Ed":"E d.","field-week":"viikko","dateFormat-medium":"d.M.yyyy","field-year-relative+0":"tänä vuonna","field-week-relative+-1":"viime viikolla","dateFormatItem-yyyyM":"M.yyyy","field-year-relative+1":"ensi vuonna","dayPeriods-format-narrow-pm":"ip.","dateFormatItem-yyyyQQQQ":"QQQQ y","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H.mm.ss","dateFormatItem-hms":"h.mm.ss a","field-week-relative+0":"tällä viikolla","field-week-relative+1":"ensi viikolla"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fi/hebrew.js b/lib/dojo/cldr/nls/fi/hebrew.js new file mode 100644 index 0000000000..1844763ac7 --- /dev/null +++ b/lib/dojo/cldr/nls/fi/hebrew.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/fi/hebrew",{"dateFormatItem-yM":"L.yyyy","dateFormatItem-yQ":"Q/yyyy","months-standAlone-abbr-leap":"adár II","dayPeriods-format-wide-pm":"ip.","dateFormatItem-MMMEd":"ccc d. MMM","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-yQQQ":"QQQ y","days-standAlone-wide":["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],"months-standAlone-narrow":["T","H","K","T","S","A","A","N","I","S","T","A","E"],"dayPeriods-format-wide-am":"ap.","quarters-standAlone-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"timeFormat-full":"H.mm.ss zzzz","months-standAlone-narrow-leap":"A","months-standAlone-abbr":["tiÅ¡rí","heÅ¡ván","kislév","tevét","Å¡evát","adár I","adár","nisán","ijjár","siván","tammúz","ab","elúl"],"dateFormatItem-Ed":"E d.","dateFormatItem-yMMM":"LLL y","days-standAlone-narrow":["S","M","T","K","T","P","L"],"dateFormat-long":"d. MMMM y","timeFormat-medium":"H.mm.ss","dateFormatItem-Hm":"H.mm","dateFormat-medium":"d.M.yyyy","dateFormatItem-Hms":"H.mm.ss","dayPeriods-format-narrow-pm":"ip.","dateFormatItem-yMd":"d.M.yyyy","quarters-standAlone-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"dateFormatItem-ms":"mm.ss","dayPeriods-format-narrow-am":"ap.","months-standAlone-wide":["tiÅ¡ríkuu","heÅ¡vánkuu","kislévkuu","tevétkuu","Å¡evátkuu","adárkuu I","adárkuu","nisánkuu","ijjárkuu","sivánkuu","tammúzkuu","abkuu","elúlkuu"],"dateFormatItem-MMMd":"d. MMM","timeFormat-long":"H.mm.ss z","months-format-abbr":["tiÅ¡ríkuuta","heÅ¡vánkuuta","kislévkuuta","tevétkuuta","Å¡evátkuuta","adárkuuta I","adárkuuta","nisánkuuta","ijjárkuuta","sivánkuuta","tammúzkuuta","abkuuta","elúlkuuta"],"timeFormat-short":"H.mm","dateFormatItem-H":"H","quarters-format-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"days-format-abbr":["su","ma","ti","ke","to","pe","la"],"days-format-narrow":["S","M","T","K","T","P","L"],"dateFormatItem-yMMMd":"d. MMM y","dateFormatItem-MEd":"E d.M.","months-format-narrow":["T","H","K","T","S","A","A","N","I","S","T","A","E"],"days-standAlone-short":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-hm":"h.mm a","days-standAlone-abbr":["su","ma","ti","ke","to","pe","la"],"months-standAlone-wide-leap":"adárkuu II","dayPeriods-format-abbr-pm":"ip.","dateFormat-short":"d.M.yyyy","dateFormatItem-yMMMEd":"E d. MMM y","dateFormat-full":"cccc d. MMMM y","dateFormatItem-Md":"d.M.","dateFormatItem-yMEd":"E d.M.yyyy","months-format-wide":["tiÅ¡ríkuuta","heÅ¡vánkuuta","kislévkuuta","tevétkuuta","Å¡evátkuuta","adárkuuta I","adárkuuta","nisánkuuta","ijjárkuuta","sivánkuuta","tammúzkuuta","abkuuta","elúlkuuta"],"dayPeriods-format-abbr-am":"ap.","days-format-short":["su","ma","ti","ke","to","pe","la"],"quarters-format-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"months-format-wide-leap":"adárkuuta II","days-format-wide":["sunnuntaina","maanantaina","tiistaina","keskiviikkona","torstaina","perjantaina","lauantaina"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fi/islamic.js b/lib/dojo/cldr/nls/fi/islamic.js new file mode 100644 index 0000000000..6dc7f1694c --- /dev/null +++ b/lib/dojo/cldr/nls/fi/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/fi/islamic",{"dateFormatItem-yM":"L.yyyy","dateFormatItem-yyyyMMMEd":"E d. MMM y G","dateFormatItem-yQ":"Q/yyyy","dayPeriods-format-wide-pm":"ip.","dateFormatItem-MMMEd":"E d. MMM","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-yQQQ":"QQQ y","days-standAlone-wide":["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],"dateFormatItem-MMM":"LLL","dateFormatItem-Gy":"y G","dayPeriods-format-wide-am":"ap.","quarters-standAlone-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"dateFormatItem-y":"y G","timeFormat-full":"H.mm.ss zzzz","dateFormatItem-yyyy":"y G","months-standAlone-abbr":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","džumada-l-ula","džumada-l-akhira","radžab","Å¡a’ban","ramadan","Å¡awwal","dhu-l-qa’da","dhu-l-hiddža"],"dateFormatItem-Ed":"ccc d.","dateFormatItem-yMMM":"LLL y","days-standAlone-narrow":["S","M","T","K","T","P","L"],"dateFormatItem-yyyyMMMMccccd":"cccc, d. MMMM y G","dateFormatItem-yyyyMM":"M.y G","dateFormatItem-yyyyMMMM":"LLLL y G","dateFormat-long":"d. MMMM y G","timeFormat-medium":"H.mm.ss","dateFormatItem-Hm":"H.mm","dateFormat-medium":"d.M.y G","dateFormatItem-Hms":"H.mm.ss","dayPeriods-format-narrow-pm":"ip.","dateFormatItem-yMd":"d.M.yyyy","quarters-standAlone-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"dateFormatItem-ms":"mm.ss","dateFormatItem-yyyyQQQQ":"QQQQ y G","dayPeriods-format-narrow-am":"ap.","months-standAlone-wide":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","džumada-l-ula","džumada-l-akhira","radžab","Å¡a’ban","ramadan","Å¡awwal","dhu-l-qa’da","dhu-l-hiddža"],"dateFormatItem-yyyyMd":"d.M.y G","dateFormatItem-yyyyMMMd":"d. MMM y G","dateFormatItem-yyyyMEd":"E d.M.y G","dateFormatItem-MMMd":"d. MMM","months-format-abbr":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","džumada-l-ula","džumada-l-akhira","radžab","Å¡a’ban","ramadan","Å¡awwal","dhu-l-qa’da","dhu-l-hiddža"],"timeFormat-long":"H.mm.ss z","dateFormatItem-H":"H","timeFormat-short":"H.mm","quarters-format-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"days-format-abbr":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-M":"L","days-format-narrow":["S","M","T","K","T","P","L"],"dateFormatItem-yMMMd":"d. MMM y","dateFormatItem-yyyyQQQ":"QQQ y G","dateFormatItem-MEd":"E d.M.","days-standAlone-short":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-hm":"h.mm a","days-standAlone-abbr":["su","ma","ti","ke","to","pe","la"],"dayPeriods-format-abbr-pm":"ip.","dateFormat-short":"d.M.y G","dateFormatItem-yyyyM":"M.y G","dateFormatItem-yMMMEd":"E d. MMM y","dateFormat-full":"cccc d. MMMM y G","dateFormatItem-Md":"d.M.","dateFormatItem-yyyyQ":"Q/y G","dateFormatItem-yMEd":"E d.M.yyyy","months-format-wide":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","džumada-l-ula","džumada-l-akhira","radžab","Å¡a’ban","ramadan","Å¡awwal","dhu-l-qa’da","dhu-l-hiddža"],"dayPeriods-format-abbr-am":"ap.","days-format-short":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-yyyyMMM":"LLLL y G","dateFormatItem-d":"d","quarters-format-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"days-format-wide":["sunnuntaina","maanantaina","tiistaina","keskiviikkona","torstaina","perjantaina","lauantaina"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fi/number.js b/lib/dojo/cldr/nls/fi/number.js new file mode 100644 index 0000000000..c483d3e74d --- /dev/null +++ b/lib/dojo/cldr/nls/fi/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/fi/number",{"group":" ","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"epäluku","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 biljoonaa","decimalFormat-short":"000 bilj'.'"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fr-ch/gregorian.js b/lib/dojo/cldr/nls/fr-ch/gregorian.js new file mode 100644 index 0000000000..2bb8f7400e --- /dev/null +++ b/lib/dojo/cldr/nls/fr-ch/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/fr-ch/gregorian",{"timeFormat-full":"HH.mm:ss 'h' zzzz","dateFormat-full":"EEEE, d MMMM y","dateFormat-short":"dd.MM.yy"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fr-ch/number.js b/lib/dojo/cldr/nls/fr-ch/number.js new file mode 100644 index 0000000000..2630e51d77 --- /dev/null +++ b/lib/dojo/cldr/nls/fr-ch/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/fr-ch/number",{"currencyFormat":"¤ #,##0.00;¤-#,##0.00","group":"'","decimal":"."}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fr/buddhist.js b/lib/dojo/cldr/nls/fr/buddhist.js new file mode 100644 index 0000000000..f14ea5d0a3 --- /dev/null +++ b/lib/dojo/cldr/nls/fr/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/fr/buddhist",{"dateFormatItem-yM":"M/y G","dateFormatItem-yQ":"'T'Q y G","eraNames":["ère bouddhiste"],"dateFormatItem-MMMEd":"E d MMM","dateFormatItem-yQQQ":"QQQ y G","dateFormatItem-MMdd":"dd/MM","days-standAlone-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-Gy":"y G","quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-y":"y G","dateFormatItem-MMMdd":"dd MMM","months-standAlone-abbr":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y G","days-standAlone-narrow":["D","L","M","M","J","V","S"],"eraAbbr":["ère b."],"dateFormatItem-yyyyMMMM":"MMMM y G","dateFormat-long":"d MMMM y G","dateFormatItem-Hm":"HH:mm","dateFormatItem-MMd":"d/MM","dateFormatItem-yyMM":"MM/y G","dateFormat-medium":"d MMM, y G","dateFormatItem-Hms":"HH:mm:ss","dayPeriods-format-narrow-pm":"p","dateFormatItem-yyMMM":"MMM y G","dateFormatItem-yyQQQQ":"QQQQ y G","dateFormatItem-yMd":"d/M/y G","quarters-standAlone-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dateFormatItem-ms":"mm:ss","dateFormatItem-yyMMMd":"d MMM y G","months-standAlone-wide":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"dateFormatItem-MMMMEd":"E d MMMM","dateFormatItem-MMMd":"d MMM","dateFormatItem-yyMMMEd":"E d MMM y G","dateFormatItem-yyQ":"'T'Q y G","months-format-abbr":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"quarters-format-abbr":["T1","T2","T3","T4"],"days-format-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"dateFormatItem-M":"L","days-format-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-yMMMd":"d MMM y","dateFormatItem-MEd":"E d/M","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-standAlone-short":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"days-standAlone-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"dateFormat-short":"d/M/yyyy","dateFormatItem-yMMMEd":"E d MMM y G","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E d/M/y G","months-format-wide":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"days-format-short":["di","lu","ma","me","je","ve","sa"],"dateFormatItem-d":"d","quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"eraNarrow":"E.B.","days-format-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fr/currency.js b/lib/dojo/cldr/nls/fr/currency.js new file mode 100644 index 0000000000..0d88dce6b8 --- /dev/null +++ b/lib/dojo/cldr/nls/fr/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/fr/currency",{"HKD_displayName":"dollar de Hong Kong","CHF_displayName":"franc suisse","JPY_symbol":"Â¥JP","CAD_displayName":"dollar canadien","HKD_symbol":"$HK","CNY_displayName":"yuan renminbi chinois","USD_symbol":"$US","AUD_displayName":"dollar australien","JPY_displayName":"yen japonais","CAD_symbol":"$CA","USD_displayName":"dollar des États-Unis","EUR_symbol":"€","CNY_symbol":"Â¥CN","GBP_displayName":"livre sterling","GBP_symbol":"£UK","AUD_symbol":"$AU","EUR_displayName":"euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fr/gregorian.js b/lib/dojo/cldr/nls/fr/gregorian.js new file mode 100644 index 0000000000..1e1fbcf0e0 --- /dev/null +++ b/lib/dojo/cldr/nls/fr/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/fr/gregorian",{"days-standAlone-short":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"jour de la semaine","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yyMMMEd":"E d MMM yy","dateFormatItem-yMEd":"E d/M/yyyy","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["av. J.-C.","ap. J.-C."],"dayPeriods-format-wide-morning":"matin","dateFormatItem-MMMdd":"dd MMM","days-format-short":["di","lu","ma","me","je","ve","sa"],"dateFormat-long":"d MMMM y","months-format-wide":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE d MMMM y","dateFormatItem-Md":"d/M","dayPeriods-format-abbr-am":"AM","dayPeriods-format-wide-noon":"midi","dateFormatItem-yMd":"d/M/yyyy","field-era":"ère","dateFormatItem-yM":"M/yyyy","months-standAlone-wide":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"timeFormat-short":"HH:mm","quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"timeFormat-long":"HH:mm:ss z","field-year":"année","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"'T'Q y","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"heure","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"dateFormatItem-yyQ":"'T'Q yy","timeFormat-full":"HH:mm:ss zzzz","dayPeriods-format-narrow-morning":"matin","field-day-relative+0":"aujourd’hui","field-day-relative+1":"demain","field-day-relative+2":"après-demain","dateFormatItem-H":"HH","months-standAlone-abbr":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dateFormatItem-M":"L","days-standAlone-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["av. J.-C.","ap. J.-C."],"field-minute":"minute","field-dayperiod":"cadran","days-standAlone-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"dayPeriods-format-wide-night":"soir","dateFormatItem-yyMMMd":"d MMM yy","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"hier","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"avant-hier","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} {0}","field-day":"jour","days-format-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"field-zone":"fuseau horaire","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"l’année dernière","dayPeriods-format-narrow-night":"soir","field-month-relative+-1":"le mois dernier","dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"h:mm a","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"dateFormatItem-yMMMd":"d MMM y","eraNames":["avant Jésus-Christ","après Jésus-Christ"],"days-format-narrow":["D","L","M","M","J","V","S"],"days-standAlone-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-MMM":"LLL","field-month":"mois","dayPeriods-format-wide-am":"AM","dateFormatItem-MMMMEd":"E d MMMM","dateFormat-short":"dd/MM/yy","dateFormatItem-MMd":"d/MM","dayPeriods-format-wide-afternoon":"après-midi","dayPeriods-format-narrow-noon":"midi","field-second":"seconde","dateFormatItem-yMMMEd":"E d MMM y","field-month-relative+0":"ce mois-ci","field-month-relative+1":"le mois prochain","dateFormatItem-Ed":"E d","field-week":"semaine","dateFormat-medium":"d MMM y","field-year-relative+0":"cette année","field-week-relative+-1":"la semaine dernière","field-year-relative+1":"l’année prochaine","dayPeriods-format-narrow-pm":"p","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","field-week-relative+0":"cette semaine","field-week-relative+1":"la semaine prochaine"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fr/hebrew.js b/lib/dojo/cldr/nls/fr/hebrew.js new file mode 100644 index 0000000000..4117ac51c5 --- /dev/null +++ b/lib/dojo/cldr/nls/fr/hebrew.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/fr/hebrew",{"quarters-standAlone-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"quarters-format-abbr":["T1","T2","T3","T4"],"dateFormatItem-yMd":"d/M/yyyy","dateFormat-medium":"d MMM y","dateFormatItem-MMMEd":"E d MMM","quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-MEd":"E d/M","dateFormatItem-yMEd":"E d/M/yyyy","dateFormatItem-yMMMd":"d MMM y","days-format-short":["di","lu","ma","me","je","ve","sa"],"dateFormatItem-Md":"d/M","months-standAlone-wide":["Tisseri","Hesvan","Kislev","Tébeth","Schébat","Adar I","Adar","Nissan","Iyar","Sivan","Tamouz","Ab","Elloul"],"months-format-wide-leap":"Adar II","days-standAlone-narrow":["D","L","M","M","J","V","S"],"months-standAlone-abbr":["Tisseri","Hesvan","Kislev","Tébeth","Schébat","Adar I","Adar","Nissan","Iyar","Sivan","Tamouz","Ab","Elloul"],"dateFormatItem-yQQQ":"QQQ y","days-standAlone-short":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"dateFormat-long":"d MMMM y","dateFormat-short":"dd/MM/yy","dateFormatItem-yMMMEd":"E d MMM y","months-format-wide":["Tisseri","Hesvan","Kislev","Tébeth","Schébat","Adar I","Adar","Nissan","Iyar","Sivan","Tamouz","Ab","Elloul"],"days-standAlone-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"days-format-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-yM":"M/yyyy","dayPeriods-format-narrow-pm":"p","months-format-abbr":["Tisseri","Hesvan","Kislev","Tébeth","Schébat","Adar I","Adar","Nissan","Iyar","Sivan","Tamouz","Ab","Elloul"],"days-standAlone-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"days-format-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"dateFormatItem-yQ":"'T'Q y","dateFormatItem-yMMM":"MMM y","quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dateFormat-full":"EEEE d MMMM y","dateFormatItem-MMMd":"d MMM","days-format-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"dateFormatItem-Ed":"E d"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fr/islamic.js b/lib/dojo/cldr/nls/fr/islamic.js new file mode 100644 index 0000000000..52c3a2ef87 --- /dev/null +++ b/lib/dojo/cldr/nls/fr/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/fr/islamic",{"dateFormatItem-yM":"M/yyyy","dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-yQ":"'T'Q y","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-MMdd":"dd/MM","days-standAlone-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-y":"y","dateFormatItem-MMMdd":"dd MMM","dateFormatItem-yyyy":"y G","months-standAlone-abbr":["mouh.","saf.","rab.aw.","rab.th.","joum.ou.","joum.th.","raj.","chaa.","ram.","chaw.","dhou.qi.","dhou.hi."],"dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["D","L","M","M","J","V","S"],"eraAbbr":["AH"],"dateFormatItem-yyyyMMMM":"MMMM y G","dateFormat-long":"d MMMM y G","dateFormatItem-Hm":"HH:mm","dateFormatItem-MMd":"d/MM","dateFormatItem-yyMM":"MM/y G","dateFormat-medium":"d MMM, y G","dateFormatItem-Hms":"HH:mm:ss","dayPeriods-format-narrow-pm":"p","dateFormatItem-yyMMM":"MMM y G","dateFormatItem-yyQQQQ":"QQQQ y G","dateFormatItem-yMd":"d/M/yyyy","quarters-standAlone-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dateFormatItem-ms":"mm:ss","dateFormatItem-yyMMMd":"d MMM y G","months-standAlone-wide":["mouharram","safar","rabia al awal","rabia ath-thani","joumada al oula","joumada ath-thania","rajab","chaabane","ramadan","chawwal","dhou al qi`da","dhou al-hijja"],"dateFormatItem-yyyyMd":"d/M/y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-MMMMEd":"E d MMMM","dateFormatItem-yyyyMEd":"E d/M/y G","dateFormatItem-MMMd":"d MMM","dateFormatItem-yyMMMEd":"E d MMM y G","dateFormatItem-yyQ":"'T'Q y G","months-format-abbr":["mouh.","saf.","rab.aw.","rab.th.","joum.oul.","joum.tha.","raj.","chaa.","ram.","chaw.","dhou.q.","dhou.h."],"dateFormatItem-H":"HH","quarters-format-abbr":["T1","T2","T3","T4"],"days-format-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"dateFormatItem-M":"L","days-format-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-yMMMd":"d MMM y","dateFormatItem-MEd":"E d/M","dateFormatItem-yyyyQQQ":"QQQ y G","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-standAlone-short":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"dateFormat-short":"d/M/y G","dateFormatItem-yyyyM":"M/y G","dateFormatItem-yMMMEd":"E d MMM y","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E d/M/yyyy","dateFormatItem-yyyyQ":"'T'Q y G","months-format-wide":["mouharram","safar","rabia al awal","rabia ath-thani","joumada al oula","joumada ath-thania","rajab","chaabane","ramadan","chawwal","dhou al qi`da","dhou al-hijja"],"days-format-short":["di","lu","ma","me","je","ve","sa"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-d":"d","quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"days-format-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"dateFormatItem-h":"h a"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fr/number.js b/lib/dojo/cldr/nls/fr/number.js new file mode 100644 index 0000000000..6d553350f5 --- /dev/null +++ b/lib/dojo/cldr/nls/fr/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/fr/number",{"group":" ","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","plusSign":"+","decimalFormat-long":"000 billions","decimalFormat-short":"000 Bn"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/gregorian.js b/lib/dojo/cldr/nls/gregorian.js new file mode 100644 index 0000000000..84dfd62b38 --- /dev/null +++ b/lib/dojo/cldr/nls/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/gregorian",{root:{"days-standAlone-short":["1","2","3","4","5","6","7"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Day of the Week","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"E, y-M-d","dateFormatItem-MMMEd":"E MMM d","eraNarrow":["BCE","CE"],"days-format-short":["1","2","3","4","5","6","7"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormat-long":"y MMMM d","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, y MMMM dd","dateFormatItem-Md":"M-d","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yMd":"y-M-d","field-era":"Era","dateFormatItem-yM":"y-M","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"timeFormat-short":"HH:mm","quarters-format-wide":["Q1","Q2","Q3","Q4"],"timeFormat-long":"HH:mm:ss z","field-year":"Year","dateFormatItem-yMMM":"y MMM","dateFormatItem-yQ":"y Q","dateTimeFormats-appendItem-Era":"{0} {1}","field-hour":"Hour","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"timeFormat-full":"HH:mm:ss zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-day-relative+0":"Today","field-day-relative+1":"Tomorrow","dateFormatItem-H":"HH","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-M":"L","days-standAlone-wide":["1","2","3","4","5","6","7"],"timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["BCE","CE"],"field-minute":"Minute","field-dayperiod":"Dayperiod","days-standAlone-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"Yesterday","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","field-day":"Day","days-format-wide":["1","2","3","4","5","6","7"],"field-zone":"Zone","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-yMMMd":"y MMM d","eraNames":["BCE","CE"],"days-format-narrow":["1","2","3","4","5","6","7"],"days-standAlone-narrow":["1","2","3","4","5","6","7"],"dateFormatItem-MMM":"LLL","field-month":"Month","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormat-short":"yyyy-MM-dd","field-second":"Second","dateFormatItem-yMMMEd":"E, y MMM d","dateFormatItem-Ed":"d E","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Week","dateFormat-medium":"y MMM d","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"},"ar":true,"ca":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"en-au":true,"en-ca":true,"en-gb":true,"es":true,"fi":true,"fr":true,"fr-ch":true,"he":true,"hu":true,"it":true,"ja":true,"ko":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sk":true,"sl":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true,"zh-hk":true,"zh-tw":true}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/he/currency.js b/lib/dojo/cldr/nls/he/currency.js new file mode 100644 index 0000000000..0f3a8e936a --- /dev/null +++ b/lib/dojo/cldr/nls/he/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/he/currency",{"HKD_displayName":"דולר הונג קונגי","CHF_displayName":"פרנק שוויצרי","CAD_displayName":"דולר קנדי","CNY_displayName":"יו×ן רנמינבי סיני","AUD_displayName":"דולר ×וסטרלי","JPY_displayName":"ין יפני","USD_displayName":"דולר ×מריק××™","GBP_displayName":"לירה שטרלינג","EUR_displayName":"×ירו"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/he/gregorian.js b/lib/dojo/cldr/nls/he/gregorian.js new file mode 100644 index 0000000000..813277185a --- /dev/null +++ b/lib/dojo/cldr/nls/he/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/he/gregorian",{"days-standAlone-short":["×'","ב'","×’'","ד'","×”'","ו'","ש'"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["ר1","ר2","ר3","ר4"],"field-weekday":"×™×•× ×‘×©×‘×•×¢","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"E, d/M/y","dateFormatItem-MMMEd":"E, d בMMM","eraNarrow":["לפנה״ס","לסה״נ"],"days-format-short":["×'","ב'","×’'","ד'","×”'","ו'","ש'"],"dateFormat-long":"d בMMMM y","months-format-wide":["ינו×ר","פברו×ר","מרץ","×פריל","מ××™","יוני","יולי","×וגוסט","ספטמבר","×וקטובר","נובמבר","דצמבר"],"dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"×חה״צ","dateFormat-full":"EEEE, d בMMMM y","dateFormatItem-Md":"d/M","dateFormatItem-yMd":"d.M.yyyy","field-era":"תקופה","dateFormatItem-yM":"M.yyyy","months-standAlone-wide":["ינו×ר","פברו×ר","מרץ","×פריל","מ××™","יוני","יולי","×וגוסט","ספטמבר","×וקטובר","נובמבר","דצמבר"],"timeFormat-short":"HH:mm","quarters-format-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"timeFormat-long":"HH:mm:ss z","field-year":"שנה","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"yyyy Q","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"שעה","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["ינו","פבר","מרץ","×פר","מ××™","יונ","יול","×וג","ספט","×וק","נוב","דצמ"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"היו×","field-day-relative+1":"מחר","field-day-relative+2":"מחרתיי×","dateFormatItem-H":"HH","months-standAlone-abbr":["ינו׳","פבר׳","מרץ","×פר׳","מ××™","יונ׳","יול׳","×וג׳","ספט׳","×וק׳","נוב׳","דצמ׳"],"quarters-format-abbr":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"quarters-standAlone-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"dateFormatItem-M":"L","days-standAlone-wide":["×™×•× ×¨×שון","×™×•× ×©× ×™","×™×•× ×©×œ×™×©×™","×™×•× ×¨×‘×™×¢×™","×™×•× ×—×ž×™×©×™","×™×•× ×©×™×©×™","×™×•× ×©×‘×ª"],"dateFormatItem-MMMMd":"d בMMMM","dateFormatItem-yyMMM":"MMM yyyy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"eraAbbr":["לפנה״ס","לסה״נ"],"field-minute":"דקה","field-dayperiod":"לפה״צ/×חה״צ","days-standAlone-abbr":["×™×•× ×׳","×™×•× ×‘×³","×™×•× ×’×³","×™×•× ×“×³","×™×•× ×”×³","×™×•× ×•×³","שבת"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"×תמול","dateFormatItem-h":"h a","field-day-relative+-2":"שלשו×","dateFormatItem-MMMd":"d בMMM","dateFormatItem-MEd":"E, d/M","dateFormatItem-yMMMM":"MMMM y","field-day":"יו×","days-format-wide":["×™×•× ×¨×שון","×™×•× ×©× ×™","×™×•× ×©×œ×™×©×™","×™×•× ×¨×‘×™×¢×™","×™×•× ×—×ž×™×©×™","×™×•× ×©×™×©×™","×™×•× ×©×‘×ª"],"field-zone":"×זור","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"שנה שעברה","field-month-relative+-1":"חודש שעבר","dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"h:mm a","days-format-abbr":["×™×•× ×׳","×™×•× ×‘×³","×™×•× ×’×³","×™×•× ×“×³","×™×•× ×”×³","×™×•× ×•×³","שבת"],"dateFormatItem-yMMMd":"d בMMM y","eraNames":["לפני הספירה","לספירה"],"days-format-narrow":["×'","ב'","×’'","ד'","×”'","ו׳","ש׳"],"field-month":"חודש","days-standAlone-narrow":["×׳","ב׳","ג׳","ד׳","ה׳","ו","ש"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"לפנה״צ","dateFormatItem-MMMMEd":"E, d בMMMM","dateFormat-short":"dd/MM/yy","field-second":"שנייה","dateFormatItem-yMMMEd":"E, d בMMM y","field-month-relative+0":"החודש","field-month-relative+1":"חודש הב×","dateFormatItem-Ed":"E ×”-d","field-week":"שבוע","dateFormat-medium":"d בMMM yyyy","field-year-relative+0":"השנה","field-week-relative+-1":"שבוע שעבר","field-year-relative+1":"שנה הב××”","dateFormatItem-mmss":"mm:ss","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yyyy":"y","field-week-relative+0":"השבוע","field-week-relative+1":"שבוע הב×"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/he/hebrew.js b/lib/dojo/cldr/nls/he/hebrew.js new file mode 100644 index 0000000000..572aee91ab --- /dev/null +++ b/lib/dojo/cldr/nls/he/hebrew.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/he/hebrew",{"dateFormatItem-yM":"MMMM y","dateFormatItem-yQ":"yyyy Q","months-standAlone-abbr-leap":"×דר ב׳","dayPeriods-format-wide-pm":"×חה״צ","eraNames":["לבה״ע"],"dateFormatItem-MMMEd":"E, d בMMMM","dateFormatItem-MMM":"MMMM","months-standAlone-narrow":["תש","חש","כס","טב","שב","××","×ד","× ×™","××™","סי","תמ","×ב","×ל"],"dateTimeFormat-short":"{1}, {0}","dayPeriods-format-wide-am":"לפנה״צ","months-format-narrow-leap":"×2","dateTimeFormat-medium":"{1}, {0}","months-format-abbr-leap":"×דר ב׳","months-standAlone-narrow-leap":"×2","months-standAlone-abbr":["תשרי","חשוון","כסלו","טבת","שבט","×דר ×׳","×דר","ניסן","×ייר","סיוון","תמוז","×ב","×לול"],"dateFormatItem-Ed":"E ×”-d","dateFormatItem-yMMM":"MMMM y","days-standAlone-narrow":["×׳","ב׳","ג׳","ד׳","ה׳","ו","ש"],"eraAbbr":["לבה״ע"],"dateFormat-long":"d בMMMM y","dateFormat-medium":"d בMMMM y","dateFormatItem-yMd":"d בMMMM y","dateFormatItem-yMMMM":"MMMM y","quarters-standAlone-narrow":["ר1","ר2","ר3","ר4"],"months-standAlone-wide":["תשרי","חשון","כסלו","טבת","שבט","×דר ×׳","×דר","ניסן","×ייר","סיון","תמוז","×ב","×לול"],"dateFormatItem-MMMMEd":"E, d בMMMM","dateFormatItem-MMMd":"d בMMMM","months-format-abbr":["תשרי","חשוון","כסלו","טבת","שבט","×דר ×׳","×דר","ניסן","×ייר","סיון","תמוז","×ב","×לול"],"dateFormatItem-MMMMd":"d בMMMM","days-format-abbr":["×™×•× ×׳","×™×•× ×‘×³","×™×•× ×’×³","×™×•× ×“×³","×™×•× ×”×³","×™×•× ×•×³","שבת"],"days-format-narrow":["×'","ב'","×’'","ד'","×”'","ו׳","ש׳"],"dateFormatItem-M":"MMMM","dateFormatItem-yMMMd":"d בMMMM y","dateFormatItem-MEd":"E, d בMMMM","months-format-narrow":["תש","חש","כס","טב","שב","××","×ד","× ×™","××™","סי","תמ","×ב","×ל"],"days-standAlone-short":["×'","ב'","×’'","ד'","×”'","ו'","ש'"],"months-standAlone-wide-leap":"×דר ב׳","dateFormat-short":"d בMMMM y","dateFormatItem-yMMMEd":"E, d בMMMM y","dateFormat-full":"EEEE, d בMMMM y","dateFormatItem-Md":"d בMMMM","dateFormatItem-yMEd":"E, d בMMMM y","months-format-wide":["תשרי","חשוון","כסלו","טבת","שבט","×דר ×׳","×דר","ניסן","×ייר","סיון","תמוז","×ב","×לול"],"days-format-short":["×'","ב'","×’'","ד'","×”'","ו'","ש'"],"months-format-wide-leap":"×דר ב׳","quarters-format-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"eraNarrow":["לבה״ע"],"days-format-wide":["×™×•× ×¨×שון","×™×•× ×©× ×™","×™×•× ×©×œ×™×©×™","×™×•× ×¨×‘×™×¢×™","×™×•× ×—×ž×™×©×™","×™×•× ×©×™×©×™","×™×•× ×©×‘×ª"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/he/islamic.js b/lib/dojo/cldr/nls/he/islamic.js new file mode 100644 index 0000000000..799caca36b --- /dev/null +++ b/lib/dojo/cldr/nls/he/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/he/islamic",{"dateFormatItem-yM":"M/yyyy","dateFormatItem-yQ":"Q yyyy","dayPeriods-format-wide-pm":"×חה״צ","eraNames":["שנת היג׳רה"],"dateFormatItem-MMMEd":"E, d בMMM","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormat-short":"{1}, {0}","dayPeriods-format-wide-am":"לפנה״צ","dateTimeFormat-medium":"{1}, {0}","months-standAlone-abbr":["מוחר×","צפר","רביע ×׳","רביע ב׳","ג׳ומ××“× ×׳","ג׳ומ××“× ×‘×³","רג׳ב","שעב×ן","רמד×ן","שוו×ל","ד׳ו ×ל-קעדה","ד׳ו ×ל-חיג׳ה"],"dateFormatItem-Ed":"E ×”-d","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["×׳","ב׳","ג׳","ד׳","ה׳","ו","ש"],"eraAbbr":["שנת היג׳רה"],"dateFormat-long":"d בMMMM y","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"d בMMM yyyy","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-yMd":"d.M.yyyy","quarters-standAlone-narrow":["ר1","ר2","ר3","ר4"],"months-standAlone-wide":["מוחר×","צפר","רביע ×ל-×וול","רביע ×-ת׳×× ×™","ג׳ומ××“× ×ל-×ול×","ג׳ומ××“× ×-ת׳×× ×™×”","רג׳ב","שעב×ן","רמד×ן","שוו×ל","ד׳ו ×ל-קעדה","ד׳ו ×ל-חיג׳ה"],"dateFormatItem-MMMMEd":"E, d בMMMM","dateFormatItem-MMMd":"d בMMM","months-format-abbr":["מוחר×","צפר","רביע ×׳","רביע ב׳","ג׳ומ××“× ×׳","ג׳ומ××“× ×‘×³","רג׳ב","שעב×ן","רמד×ן","שוו×ל","ד׳ו ×ל-קעדה","ד׳ו ×ל-חיג׳ה"],"dateFormatItem-MMMMd":"d בMMMM","days-format-abbr":["×™×•× ×׳","×™×•× ×‘×³","×™×•× ×’×³","×™×•× ×“×³","×™×•× ×”×³","×™×•× ×•×³","שבת"],"days-format-narrow":["×'","ב'","×’'","ד'","×”'","ו׳","ש׳"],"dateFormatItem-yMMMd":"d בMMM y","dateFormatItem-MEd":"E, d/M","days-standAlone-short":["×'","ב'","×’'","ד'","×”'","ו'","ש'"],"dateFormatItem-hm":"h:mm a","dateFormat-short":"dd/MM/yy","dateFormatItem-yMMMEd":"E, d בMMM y","dateFormat-full":"EEEE, d בMMMM y","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E, d.M.yyyy","months-format-wide":["מוחר×","צפר","רביע ×ל-×וול","רביע ×-ת׳×× ×™","ג׳ומ××“× ×ל-×ול×","ג׳ומ××“× ×-ת׳×× ×™×”","רג׳ב","שעב×ן","רמד×ן","שוו×ל","ד׳ו ×ל-קעדה","ד׳ו ×ל-חיג׳ה"],"days-format-short":["×'","ב'","×’'","ד'","×”'","ו'","ש'"],"quarters-format-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"eraNarrow":["שנת היג׳רה"],"days-format-wide":["×™×•× ×¨×שון","×™×•× ×©× ×™","×™×•× ×©×œ×™×©×™","×™×•× ×¨×‘×™×¢×™","×™×•× ×—×ž×™×©×™","×™×•× ×©×™×©×™","×™×•× ×©×‘×ª"],"dateFormatItem-h":"h a"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/he/number.js b/lib/dojo/cldr/nls/he/number.js new file mode 100644 index 0000000000..5feed34424 --- /dev/null +++ b/lib/dojo/cldr/nls/he/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/he/number",{"group":",","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":".","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 טריליון","decimalFormat-short":"000T"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/hebrew.js b/lib/dojo/cldr/nls/hebrew.js new file mode 100644 index 0000000000..bb925cca49 --- /dev/null +++ b/lib/dojo/cldr/nls/hebrew.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/hebrew",{root:{"days-standAlone-short":["1","2","3","4","5","6","7"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"quarters-standAlone-narrow":["1","2","3","4"],"dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"E, y-M-d","dateFormatItem-MMMEd":"E MMM d","eraNarrow":["AM"],"days-format-short":["1","2","3","4","5","6","7"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormat-long":"y MMMM d","months-format-wide":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, y MMMM dd","dateFormatItem-Md":"M-d","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yMd":"y-M-d","dateFormatItem-yM":"y-M","months-standAlone-wide":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"timeFormat-short":"HH:mm","quarters-format-wide":["Q1","Q2","Q3","Q4"],"timeFormat-long":"HH:mm:ss z","dateFormatItem-yMMM":"y MMM","dateFormatItem-yQ":"y Q","dateTimeFormats-appendItem-Era":"{0} {1}","months-format-abbr-leap":"Adar II","months-format-abbr":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"timeFormat-full":"HH:mm:ss zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","months-standAlone-abbr":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-M":"L","days-standAlone-wide":["1","2","3","4","5","6","7"],"months-standAlone-wide-leap":"Adar II","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["AM"],"days-standAlone-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","days-format-wide":["1","2","3","4","5","6","7"],"months-standAlone-abbr-leap":"Adar II","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-yMMMd":"y MMM d","eraNames":["AM"],"days-format-narrow":["1","2","3","4","5","6","7"],"days-standAlone-narrow":["1","2","3","4","5","6","7"],"dateFormatItem-MMM":"LLL","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormat-short":"yyyy-MM-dd","dateFormatItem-yMMMEd":"E, y MMM d","dateFormatItem-Ed":"d E","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateFormat-medium":"y MMM d","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","months-format-wide-leap":"Adar II"},"ar":true,"el":true,"fi":true,"fr":true,"he":true,"hu":true,"ja":true,"nl":true,"pl":true,"pt":true,"ro":true,"ru":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/hu/buddhist.js b/lib/dojo/cldr/nls/hu/buddhist.js new file mode 100644 index 0000000000..31a1d5357e --- /dev/null +++ b/lib/dojo/cldr/nls/hu/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/hu/buddhist",{"dateFormatItem-yM":"y.M.","dateFormatItem-yQ":"y. Q","dayPeriods-format-wide-pm":"du.","eraNames":["BK"],"dateFormatItem-MMMEd":"MMM d., E","dateFormatItem-hms":"a h:mm:ss","dateFormatItem-yQQQ":"y. QQQ","days-standAlone-wide":["vasárnap","hétfÅ‘","kedd","szerda","csütörtök","péntek","szombat"],"months-standAlone-narrow":["J","F","M","Ã","M","J","J","A","Sz","O","N","D"],"dayPeriods-format-wide-am":"de.","quarters-standAlone-abbr":["N1","N2","N3","N4"],"dateFormatItem-y":"y","timeFormat-full":"H:mm:ss zzzz","months-standAlone-abbr":["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],"dateFormatItem-Ed":"d., E","dateFormatItem-yMMM":"y. MMM","days-standAlone-narrow":["V","H","K","Sz","Cs","P","Sz"],"eraAbbr":["BK"],"dateFormat-long":"y. MMMM d.","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","dateFormat-medium":"yyyy.MM.dd.","dateFormatItem-Hms":"H:mm:ss","dayPeriods-format-narrow-pm":"du.","dateFormatItem-yMd":"yyyy.MM.dd.","quarters-standAlone-wide":["1. negyedév","2. negyedév","3. negyedév","4. negyedév"],"dayPeriods-format-narrow-am":"de.","quarters-standAlone-narrow":["1.","2.","3.","4."],"months-standAlone-wide":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],"dateFormatItem-MMMd":"MMM d.","timeFormat-long":"H:mm:ss z","months-format-abbr":["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],"timeFormat-short":"H:mm","dateFormatItem-H":"H","quarters-format-abbr":["N1","N2","N3","N4"],"days-format-abbr":["V","H","K","Sze","Cs","P","Szo"],"days-format-narrow":["V","H","K","Sz","Cs","P","Sz"],"dateFormatItem-yMMMd":"y. MMM d.","dateFormatItem-MEd":"M. d., E","months-format-narrow":["J","F","M","Ã","M","J","J","Ã","Sz","O","N","D"],"days-standAlone-short":["V","H","K","Sze","Cs","P","Szo"],"dateFormatItem-hm":"a h:mm","days-standAlone-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormat-short":"yyyy.MM.dd.","dateFormatItem-yMMMEd":"y. MMM d., E","dateFormat-full":"y. MMMM d., EEEE","dateFormatItem-Md":"M.d.","dateFormatItem-yMEd":"yyyy.MM.dd., E","months-format-wide":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],"quarters-format-wide":["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"],"eraNarrow":["BK"],"days-format-wide":["vasárnap","hétfÅ‘","kedd","szerda","csütörtök","péntek","szombat"],"dateFormatItem-h":"a h"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/hu/currency.js b/lib/dojo/cldr/nls/hu/currency.js new file mode 100644 index 0000000000..f326f9a268 --- /dev/null +++ b/lib/dojo/cldr/nls/hu/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/hu/currency",{"HKD_displayName":"Hongkongi dollár","CHF_displayName":"Svájci frank","JPY_symbol":"Â¥","CAD_displayName":"Kanadai dollár","HKD_symbol":"HKD","CNY_displayName":"Kínai jüan renminbi","USD_symbol":"$","AUD_displayName":"Ausztrál dollár","JPY_displayName":"Japán jen","CAD_symbol":"CAD","USD_displayName":"USA dollár","EUR_symbol":"EUR","CNY_symbol":"CNY","GBP_displayName":"Brit font sterling","GBP_symbol":"GBP","AUD_symbol":"AUD","EUR_displayName":"Euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/hu/gregorian.js b/lib/dojo/cldr/nls/hu/gregorian.js new file mode 100644 index 0000000000..0cbe7a26ce --- /dev/null +++ b/lib/dojo/cldr/nls/hu/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/hu/gregorian",{"days-standAlone-short":["V","H","K","Sze","Cs","P","Szo"],"months-format-narrow":["J","F","M","Ã","M","J","J","Ã","Sz","O","N","D"],"quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"hét napja","dateFormatItem-yQQQ":"y. QQQ","dateFormatItem-yMEd":"yyyy.MM.dd., E","dateFormatItem-MMMEd":"MMM d., E","eraNarrow":["ie.","isz."],"days-format-short":["V","H","K","Sze","Cs","P","Szo"],"dateFormat-long":"y. MMMM d.","months-format-wide":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],"dayPeriods-format-wide-pm":"du.","dateFormat-full":"y. MMMM d., EEEE","dateFormatItem-Md":"M. d.","dateFormatItem-yMd":"yyyy.MM.dd.","field-era":"éra","dateFormatItem-yM":"y.M.","months-standAlone-wide":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],"timeFormat-short":"H:mm","quarters-format-wide":["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"],"timeFormat-long":"H:mm:ss z","field-year":"év","dateFormatItem-yMMM":"y. MMM","dateFormatItem-yQ":"y. Q","dateFormatItem-yyyyMMMM":"y. MMMM","field-hour":"óra","dateFormatItem-MMdd":"MM.dd.","months-format-abbr":["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],"dateFormatItem-yyQ":"yy/Q","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"ma","field-day-relative+1":"holnap","field-day-relative+2":"holnapután","dateFormatItem-H":"H","months-standAlone-abbr":["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],"quarters-format-abbr":["N1","N2","N3","N4"],"quarters-standAlone-wide":["1. negyedév","2. negyedév","3. negyedév","4. negyedév"],"dateFormatItem-M":"L","days-standAlone-wide":["vasárnap","hétfÅ‘","kedd","szerda","csütörtök","péntek","szombat"],"dateFormatItem-MMMMd":"MMMM d.","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","quarters-standAlone-abbr":["N1","N2","N3","N4"],"eraAbbr":["i. e.","i. sz."],"field-minute":"perc","field-dayperiod":"napszak","days-standAlone-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"tegnap","dateFormatItem-h":"a h","dayPeriods-format-narrow-am":"de.","field-day-relative+-2":"tegnapelÅ‘tt","dateFormatItem-MMMd":"MMM d.","dateFormatItem-MEd":"M. d., E","field-day":"nap","days-format-wide":["vasárnap","hétfÅ‘","kedd","szerda","csütörtök","péntek","szombat"],"field-zone":"idÅ‘zóna","dateFormatItem-yyyyMM":"yyyy.MM","months-standAlone-narrow":["J","F","M","Ã","M","J","J","A","Sz","O","N","D"],"field-year-relative+-1":"ElÅ‘zÅ‘ év","field-month-relative+-1":"ElÅ‘zÅ‘ hónap","dateFormatItem-hm":"a h:mm","days-format-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormatItem-yMMMd":"y. MMM d.","eraNames":["idÅ‘számításunk elÅ‘tt","idÅ‘számításunk szerint"],"days-format-narrow":["V","H","K","Sz","Cs","P","Sz"],"field-month":"hónap","days-standAlone-narrow":["V","H","K","Sz","Cs","P","Sz"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"de.","dateFormat-short":"yyyy.MM.dd.","field-second":"másodperc","dateFormatItem-yMMMEd":"y. MMM d., E","field-month-relative+0":"Ez a hónap","field-month-relative+1":"KövetkezÅ‘ hónap","dateFormatItem-Ed":"d., E","field-week":"hét","dateFormat-medium":"yyyy.MM.dd.","field-year-relative+0":"Ez az év","field-week-relative+-1":"ElÅ‘zÅ‘ hét","field-year-relative+1":"KövetkezÅ‘ év","dateFormatItem-mmss":"mm:ss","dayPeriods-format-narrow-pm":"du.","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"a h:mm:ss","field-week-relative+0":"Ez a hét","field-week-relative+1":"KövetkezÅ‘ hét"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/hu/hebrew.js b/lib/dojo/cldr/nls/hu/hebrew.js new file mode 100644 index 0000000000..0318700739 --- /dev/null +++ b/lib/dojo/cldr/nls/hu/hebrew.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/hu/hebrew",{"dateFormatItem-yM":"y.M.","dateFormatItem-yQ":"y. Q","months-standAlone-abbr-leap":"Ãdár II","dayPeriods-format-wide-pm":"du.","eraNames":["TÉ"],"dateFormatItem-MMMEd":"MMM d., E","dateFormatItem-hms":"a h:mm:ss","dateFormatItem-yQQQ":"y. QQQ","days-standAlone-wide":["vasárnap","hétfÅ‘","kedd","szerda","csütörtök","péntek","szombat"],"dayPeriods-format-wide-am":"de.","months-format-abbr-leap":"Ãdár II","quarters-standAlone-abbr":["N1","N2","N3","N4"],"timeFormat-full":"H:mm:ss zzzz","months-standAlone-abbr":["Tisri","Hesván","Kiszlév","Tévész","Svát","Ãdár risón","Ãdár","Niszán","Ijár","Sziván","Tamuz","Ãv","Elul"],"dateFormatItem-Ed":"d., E","dateFormatItem-yMMM":"y. MMM","days-standAlone-narrow":["V","H","K","Sz","Cs","P","Sz"],"eraAbbr":["TÉ"],"dateFormat-long":"y. MMMM d.","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","dateFormat-medium":"yyyy.MM.dd.","dateFormatItem-Hms":"H:mm:ss","dayPeriods-format-narrow-pm":"du.","dateFormatItem-yMd":"yyyy.MM.dd.","quarters-standAlone-wide":["1. negyedév","2. negyedév","3. negyedév","4. negyedév"],"dayPeriods-format-narrow-am":"de.","quarters-standAlone-narrow":["1.","2.","3.","4."],"months-standAlone-wide":["Tisri","Hesván","Kiszlév","Tévész","Svát","Ãdár risón","Ãdár","Niszán","Ijár","Sziván","Tamuz","Ãv","Elul"],"dateFormatItem-MMMd":"MMM d.","timeFormat-long":"H:mm:ss z","months-format-abbr":["Tisri","Hesván","Kiszlév","Tévész","Svát","Ãdár I","Ãdár","Niszán","Ijár","Sziván","Tamuz","Ãv","Elul"],"timeFormat-short":"H:mm","dateFormatItem-H":"H","quarters-format-abbr":["N1","N2","N3","N4"],"days-format-abbr":["V","H","K","Sze","Cs","P","Szo"],"days-format-narrow":["V","H","K","Sz","Cs","P","Sz"],"dateFormatItem-yMMMd":"y. MMM d.","dateFormatItem-MEd":"M. d., E","days-standAlone-short":["V","H","K","Sze","Cs","P","Szo"],"dateFormatItem-hm":"a h:mm","days-standAlone-abbr":["V","H","K","Sze","Cs","P","Szo"],"months-standAlone-wide-leap":"Ãdár II","dateFormat-short":"yyyy.MM.dd.","dateFormatItem-yMMMEd":"y. MMM d., E","dateFormat-full":"y. MMMM d., EEEE","dateFormatItem-Md":"M. d.","dateFormatItem-yMEd":"yyyy.MM.dd., E","months-format-wide":["Tisri","Hesván","Kiszlév","Tévész","Svát","Ãdár risón","Ãdár","Niszán","Ijár","Sziván","Tamuz","Ãv","Elul"],"quarters-format-wide":["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"],"months-format-wide-leap":"Ãdár séni","eraNarrow":["TÉ"],"days-format-wide":["vasárnap","hétfÅ‘","kedd","szerda","csütörtök","péntek","szombat"],"dateFormatItem-h":"a h"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/hu/islamic.js b/lib/dojo/cldr/nls/hu/islamic.js new file mode 100644 index 0000000000..30aae41124 --- /dev/null +++ b/lib/dojo/cldr/nls/hu/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/hu/islamic",{"dateFormatItem-yM":"y-M","dateFormatItem-yQ":"y Q","dayPeriods-format-wide-pm":"du.","eraNames":["MF"],"dateFormatItem-MMMEd":"MMM. d., E","dateFormatItem-hms":"a h:mm:ss","dateFormatItem-yQQQ":"y QQQ","days-standAlone-wide":["vasárnap","hétfÅ‘","kedd","szerda","csütörtök","péntek","szombat"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dayPeriods-format-wide-am":"de.","quarters-standAlone-abbr":["N1","N2","N3","N4"],"dateFormatItem-y":"y","timeFormat-full":"H:mm:ss zzzz","months-standAlone-abbr":["Moh.","Saf.","Rébi I","Rébi II","Dsem. I","Dsem. II","Red.","Sab.","Ram.","Sev.","Dsül k.","Dsül h."],"dateFormatItem-Ed":"d E","dateFormatItem-yMMM":"y MMM","days-standAlone-narrow":["V","H","K","Sz","Cs","P","Sz"],"eraAbbr":["MF"],"dateFormat-long":"y. MMMM d.","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","dateFormat-medium":"yyyy.MM.dd.","dateFormatItem-Hms":"H:mm:ss","dayPeriods-format-narrow-pm":"du.","dateFormatItem-yMd":"yyyy.MM.dd.","quarters-standAlone-wide":["1. negyedév","2. negyedév","3. negyedév","4. negyedév"],"dateFormatItem-ms":"mm:ss","dayPeriods-format-narrow-am":"de.","quarters-standAlone-narrow":["1.","2.","3.","4."],"months-standAlone-wide":["Moharrem","Safar","Rébi I","Rébi II","Dsemádi I","Dsemádi II","Redseb","Sabán","Ramadán","Sevvál","Dsül kade","Dsül hedse"],"dateFormatItem-MMMd":"MMM d.","timeFormat-long":"H:mm:ss z","months-format-abbr":["Moh.","Saf.","Rébi I","Rébi II","Dsem. I","Dsem. II","Red.","Sab.","Ram.","Sev.","Dsül k.","Dsül h."],"timeFormat-short":"H:mm","dateFormatItem-H":"HH","dateFormatItem-MMMMd":"MMMM d.","quarters-format-abbr":["N1","N2","N3","N4"],"days-format-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormatItem-M":"L","days-format-narrow":["V","H","K","Sz","Cs","P","Sz"],"dateFormatItem-yMMMd":"y. MMM d.","dateFormatItem-MEd":"M. d., E","days-standAlone-short":["V","H","K","Sze","Cs","P","Szo"],"dateFormatItem-hm":"a h:mm","days-standAlone-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormat-short":"yyyy.MM.dd.","dateFormatItem-yMMMEd":"y. MMM d., E","dateFormat-full":"y. MMMM d., EEEE","dateFormatItem-Md":"M. d.","dateFormatItem-yMEd":"yyyy.MM.dd., E","months-format-wide":["Moharrem","Safar","Rébi el avvel","Rébi el accher","Dsemádi el avvel","Dsemádi el accher","Redseb","Sabán","Ramadán","Sevvál","Dsül kade","Dsül hedse"],"dateFormatItem-d":"d","quarters-format-wide":["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"],"eraNarrow":["MF"],"days-format-wide":["vasárnap","hétfÅ‘","kedd","szerda","csütörtök","péntek","szombat"],"dateFormatItem-h":"a h"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/hu/number.js b/lib/dojo/cldr/nls/hu/number.js new file mode 100644 index 0000000000..7824866aba --- /dev/null +++ b/lib/dojo/cldr/nls/hu/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/hu/number",{"group":" ","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 billió","decimalFormat-short":"000 B"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/islamic.js b/lib/dojo/cldr/nls/islamic.js new file mode 100644 index 0000000000..c5a5efd60d --- /dev/null +++ b/lib/dojo/cldr/nls/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/islamic",{root:{"days-standAlone-short":["1","2","3","4","5","6","7"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["1","2","3","4"],"dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"E, y-M-d","dateFormatItem-MMMEd":"E MMM d","eraNarrow":["AH"],"days-format-short":["1","2","3","4","5","6","7"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormat-long":"y MMMM d","months-format-wide":["Muharram","Safar","RabiÊ» I","RabiÊ» II","Jumada I","Jumada II","Rajab","ShaÊ»ban","Ramadan","Shawwal","DhuÊ»l-QiÊ»dah","DhuÊ»l-Hijjah"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, y MMMM dd","dateFormatItem-Md":"M-d","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yMd":"y-M-d","dateFormatItem-yM":"y-M","months-standAlone-wide":["Muharram","Safar","RabiÊ» I","RabiÊ» II","Jumada I","Jumada II","Rajab","ShaÊ»ban","Ramadan","Shawwal","DhuÊ»l-QiÊ»dah","DhuÊ»l-Hijjah"],"timeFormat-short":"HH:mm","quarters-format-wide":["Q1","Q2","Q3","Q4"],"timeFormat-long":"HH:mm:ss z","dateFormatItem-yMMM":"y MMM","dateFormatItem-yQ":"y Q","dateTimeFormats-appendItem-Era":"{0} {1}","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","DhuÊ»l-Q.","DhuÊ»l-H."],"timeFormat-full":"HH:mm:ss zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","DhuÊ»l-Q.","DhuÊ»l-H."],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-M":"L","days-standAlone-wide":["1","2","3","4","5","6","7"],"timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["AH"],"days-standAlone-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","days-format-wide":["1","2","3","4","5","6","7"],"dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-yMMMd":"y MMM d","eraNames":["AH"],"days-format-narrow":["1","2","3","4","5","6","7"],"days-standAlone-narrow":["1","2","3","4","5","6","7"],"dateFormatItem-MMM":"LLL","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormat-short":"yyyy-MM-dd","dateFormatItem-yMMMEd":"E, y MMM d","dateFormatItem-Ed":"d E","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateFormat-medium":"y MMM d","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"},"ar":true,"cs":true,"da":true,"de":true,"en":true,"en-gb":true,"es":true,"fi":true,"fr":true,"he":true,"hu":true,"it":true,"ja":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/it/buddhist.js b/lib/dojo/cldr/nls/it/buddhist.js new file mode 100644 index 0000000000..8eb2861033 --- /dev/null +++ b/lib/dojo/cldr/nls/it/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/it/buddhist",{"dateFormatItem-yM":"M/y G","dateFormatItem-yQ":"Q-y G","eraNames":["EB"],"dateFormatItem-MMMEd":"E d MMM","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-yQQQ":"QQQ y G","dateFormatItem-MMdd":"dd/MM","days-standAlone-wide":["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["G","F","M","A","M","G","L","A","S","O","N","D"],"dateFormatItem-Gy":"y G","quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-y":"y G","months-standAlone-abbr":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],"dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y G","days-standAlone-narrow":["D","L","M","M","G","V","S"],"eraAbbr":["EB"],"dateFormatItem-yyyyMMMM":"MMMM y G","dateFormat-long":"dd MMMM y G","dateFormatItem-Hm":"HH:mm","dateFormatItem-yyMM":"MM/y G","dateFormat-medium":"dd/MMM/y G","dateFormatItem-Hms":"HH:mm:ss","dayPeriods-format-narrow-pm":"p.","dateFormatItem-yyQQQQ":"QQQQ y G","dateFormatItem-yMd":"d/M/y G","quarters-standAlone-wide":["Primo trimestre","Secondo trimestre","Terzo trimestre","Quarto trimestre"],"dateFormatItem-ms":"mm:ss","dayPeriods-format-narrow-am":"m.","months-standAlone-wide":["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],"dateFormatItem-MMMd":"d MMM","dateFormatItem-yyQ":"Q y G","months-format-abbr":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],"quarters-format-abbr":["T1","T2","T3","T4"],"dateFormatItem-MMMMdd":"dd MMMM","days-format-abbr":["dom","lun","mar","mer","gio","ven","sab"],"dateFormatItem-M":"L","dateFormatItem-yMMMd":"d MMM y G","dateFormatItem-MEd":"E d/M","months-format-narrow":["G","F","M","A","M","G","L","A","S","O","N","D"],"days-standAlone-short":["dom","lun","mar","mer","gio","ven","sab"],"dateFormatItem-hm":"hh:mm a","dateFormat-short":"dd/MM/y G","dateFormatItem-yMMMEd":"E d MMM y G","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E, d/M/y G","months-format-wide":["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],"days-format-short":["dom","lun","mar","mer","gio","ven","sab"],"dateFormatItem-d":"d","quarters-format-wide":["1o trimestre","2o trimestre","3o trimestre","4o trimestre"],"eraNarrow":["EB"],"days-format-wide":["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"dateFormatItem-h":"hh a"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/it/currency.js b/lib/dojo/cldr/nls/it/currency.js new file mode 100644 index 0000000000..77ee934a9e --- /dev/null +++ b/lib/dojo/cldr/nls/it/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/it/currency",{"HKD_displayName":"Dollaro di Hong Kong","CHF_displayName":"Franco Svizzero","CAD_displayName":"Dollaro Canadese","CNY_displayName":"Renmimbi Cinese","USD_symbol":"US$","AUD_displayName":"Dollaro Australiano","JPY_displayName":"Yen Giapponese","CAD_symbol":"CA$","USD_displayName":"Dollaro Statunitense","GBP_displayName":"Sterlina Inglese","EUR_displayName":"Euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/it/gregorian.js b/lib/dojo/cldr/nls/it/gregorian.js new file mode 100644 index 0000000000..9f42765074 --- /dev/null +++ b/lib/dojo/cldr/nls/it/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/it/gregorian",{"days-standAlone-short":["dom","lun","mar","mer","gio","ven","sab"],"months-format-narrow":["G","F","M","A","M","G","L","A","S","O","N","D"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"giorno della settimana","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E d/M/y","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["aC","dC"],"days-format-short":["dom","lun","mar","mer","gio","ven","sab"],"dateFormat-long":"dd MMMM y","months-format-wide":["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE d MMMM y","dateFormatItem-Md":"d/M","dateFormatItem-yMd":"d/M/y","field-era":"era","dateFormatItem-yM":"M/y","months-standAlone-wide":["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],"timeFormat-short":"HH:mm","quarters-format-wide":["1o trimestre","2o trimestre","3o trimestre","4o trimestre"],"timeFormat-long":"HH:mm:ss z","field-year":"anno","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q-yyyy","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"ora","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"oggi","field-day-relative+1":"domani","field-day-relative+2":"dopodomani","dateFormatItem-H":"HH","months-standAlone-abbr":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["Primo trimestre","Secondo trimestre","Terzo trimestre","Quarto trimestre"],"dateFormatItem-M":"L","days-standAlone-wide":["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],"timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["aC","dC"],"field-minute":"minuto","field-dayperiod":"periodo del giorno","days-standAlone-abbr":["dom","lun","mar","mer","gio","ven","sab"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"ieri","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"m.","field-day-relative+-2":"l'altro ieri","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} {0}","field-day":"giorno","days-format-wide":["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"field-zone":"zona","dateFormatItem-y":"y","months-standAlone-narrow":["G","F","M","A","M","G","L","A","S","O","N","D"],"field-year-relative+-1":"Anno scorso","field-month-relative+-1":"Mese scorso","dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"hh:mm a","days-format-abbr":["dom","lun","mar","mer","gio","ven","sab"],"dateFormatItem-yMMMd":"d MMM y","eraNames":["a.C.","d.C"],"days-format-narrow":["D","L","M","M","G","V","S"],"days-standAlone-narrow":["D","L","M","M","G","V","S"],"dateFormatItem-MMM":"LLL","field-month":"mese","dayPeriods-format-wide-am":"AM","dateFormatItem-MMMMdd":"dd MMMM","dateFormat-short":"dd/MM/yy","field-second":"secondo","dateFormatItem-yMMMEd":"E d MMM y","field-month-relative+0":"Questo mese","field-month-relative+1":"Mese prossimo","dateFormatItem-Ed":"E d","field-week":"settimana","dateFormat-medium":"dd/MMM/y","field-year-relative+0":"Questo anno","field-week-relative+-1":"Settimana scorsa","field-year-relative+1":"Anno prossimo","dayPeriods-format-narrow-pm":"p.","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"hh:mm:ss a","field-week-relative+0":"Questa settimana","field-week-relative+1":"Settimana prossima"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/it/islamic.js b/lib/dojo/cldr/nls/it/islamic.js new file mode 100644 index 0000000000..7228036abc --- /dev/null +++ b/lib/dojo/cldr/nls/it/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/it/islamic",{"dateFormatItem-yM":"M/y","dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-yQ":"Q-y G","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-yQQQ":"QQQ y G","dateFormatItem-MMdd":"dd/MM","days-standAlone-wide":["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],"dateFormatItem-MMM":"LLL","quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-yyyy":"y G","dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["D","L","M","M","G","V","S"],"dateFormatItem-yyyyMMMM":"MMMM y G","dateFormat-long":"dd MMMM y G","dateFormatItem-Hm":"HH:mm","dateFormatItem-yyMM":"MM/y G","dateFormat-medium":"dd/MMM/y G","dateFormatItem-Hms":"HH:mm:ss","dayPeriods-format-narrow-pm":"p.","dateFormatItem-yyQQQQ":"QQQQ y G","dateFormatItem-yMd":"d/M/y","quarters-standAlone-wide":["Primo trimestre","Secondo trimestre","Terzo trimestre","Quarto trimestre"],"dateFormatItem-ms":"mm:ss","dayPeriods-format-narrow-am":"m.","dateFormatItem-yyyyMd":"d/M/y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-yyyyMEd":"E, d/M/y G","dateFormatItem-MMMd":"d MMM","dateFormatItem-yyQ":"Q y G","quarters-format-abbr":["T1","T2","T3","T4"],"days-format-abbr":["dom","lun","mar","mer","gio","ven","sab"],"dateFormatItem-MMMMdd":"dd MMMM","dateFormatItem-M":"L","dateFormatItem-yMMMd":"d MMM y","dateFormatItem-MEd":"E d/M","days-standAlone-short":["dom","lun","mar","mer","gio","ven","sab"],"dateFormatItem-hm":"hh:mm a","dateFormat-short":"dd/MM/y G","dateFormatItem-yyyyM":"M/y G","dateFormatItem-yMMMEd":"E d MMM y","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E d/M/y","days-format-short":["dom","lun","mar","mer","gio","ven","sab"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-d":"d","quarters-format-wide":["1o trimestre","2o trimestre","3o trimestre","4o trimestre"],"days-format-wide":["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"dateFormatItem-h":"hh a"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/it/number.js b/lib/dojo/cldr/nls/it/number.js new file mode 100644 index 0000000000..ea461a935c --- /dev/null +++ b/lib/dojo/cldr/nls/it/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/it/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤ #,##0.00","plusSign":"+","decimalFormat-long":"000 bilioni","decimalFormat-short":"000 B"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ja/buddhist.js b/lib/dojo/cldr/nls/ja/buddhist.js new file mode 100644 index 0000000000..da8c200a49 --- /dev/null +++ b/lib/dojo/cldr/nls/ja/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ja/buddhist",{"dateFormatItem-yM":"GGGGyå¹´M月","dateFormatItem-yyyyMMMEd":"GGGGyå¹´M月dæ—¥(E)","dateFormatItem-yQ":"GGGGy QQQ","dayPeriods-format-wide-pm":"åˆå¾Œ","dateFormatItem-GGGGyMd":"GGGGyå¹´M月dæ—¥","eraNames":["仿š¦"],"dateFormatItem-MMMEd":"M月dæ—¥(E)","dateFormatItem-hms":"aK:mm:ss","dateFormatItem-yQQQ":"GGGGy第Qå››åŠæœŸ","dateFormatItem-MMdd":"MM/dd","dateFormatItem-MMM":"M月","dateFormatItem-Gy":"Gyå¹´","dayPeriods-format-wide-am":"åˆå‰","dateFormatItem-y":"GGGGyå¹´","timeFormat-full":"H時mm分ssç§’ zzzz","dateFormatItem-yyyy":"GGGGyå¹´","dateFormatItem-yyyyMMMEEEEd":"GGGGyå¹´M月dæ—¥EEEE","dateFormatItem-EEEEd":"dæ—¥EEEE","dateFormatItem-Ed":"dæ—¥(E)","dateFormatItem-yMMM":"GGGGyå¹´M月","days-standAlone-narrow":["æ—¥","月","ç«","æ°´","木","金","土"],"eraAbbr":["BE"],"dateFormatItem-yyyyMM":"Gy/MM","dateFormat-long":"GGGGyå¹´M月dæ—¥","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","dateFormatItem-MMMEEEEd":"M月dæ—¥EEEE","dateFormat-medium":"Gy/MM/dd","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-yMMMEEEEd":"GGGGyå¹´M月dæ—¥EEEE","dateFormatItem-yMd":"y/M/d","dateFormatItem-ms":"mm:ss","dateFormatItem-yyyyMd":"Gy/M/d","dateFormatItem-yyyyMMMd":"GGGGyå¹´M月dæ—¥","dateFormatItem-yyyyMEd":"Gy/M/d(E)","dateFormatItem-MMMd":"M月dæ—¥","timeFormat-long":"H:mm:ss z","dateFormatItem-H":"H時","timeFormat-short":"H:mm","quarters-format-abbr":["1Q","2Q","3Q","4Q"],"days-format-abbr":["æ—¥","月","ç«","æ°´","木","金","土"],"dateFormatItem-M":"M月","dateFormatItem-yMMMd":"yå¹´M月dæ—¥","dateFormatItem-MEd":"M/d(E)","days-standAlone-short":["æ—¥","月","ç«","æ°´","木","金","土"],"dateFormatItem-hm":"aK:mm","dateFormat-short":"Gy/MM/dd","dateFormatItem-yMMMEd":"GGGGyå¹´M月dæ—¥(E)","dateFormat-full":"GGGGyå¹´M月dæ—¥EEEE","dateFormatItem-Md":"M/d","dateFormatItem-yMEd":"GGGGyå¹´M/d(E)","dateFormatItem-yyyyQ":"Gy/Q","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"days-format-short":["æ—¥","月","ç«","æ°´","木","金","土"],"dateFormatItem-yyyyMMM":"GGGGyå¹´M月","dateFormatItem-d":"dæ—¥","quarters-format-wide":["第1å››åŠæœŸ","第2å››åŠæœŸ","第3å››åŠæœŸ","第4å››åŠæœŸ"],"days-format-wide":["日曜日","月曜日","ç«æ›œæ—¥","水曜日","木曜日","金曜日","土曜日"],"dateFormatItem-h":"aK時"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ja/currency.js b/lib/dojo/cldr/nls/ja/currency.js new file mode 100644 index 0000000000..4a025482b4 --- /dev/null +++ b/lib/dojo/cldr/nls/ja/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ja/currency",{"HKD_displayName":"香港ドル","CHF_displayName":"スイス フラン","JPY_symbol":"ï¿¥","CAD_displayName":"カナダ ドル","HKD_symbol":"HK$","CNY_displayName":"中国人民元","USD_symbol":"$","AUD_displayName":"オーストラリア ドル","JPY_displayName":"日本円","CAD_symbol":"CA$","USD_displayName":"米ドル","EUR_symbol":"€","CNY_symbol":"å…ƒ","GBP_displayName":"英国ãƒãƒ³ãƒ‰","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"ユーロ"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ja/gregorian.js b/lib/dojo/cldr/nls/ja/gregorian.js new file mode 100644 index 0000000000..fe4f628bc8 --- /dev/null +++ b/lib/dojo/cldr/nls/ja/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ja/gregorian",{"days-standAlone-short":["æ—¥","月","ç«","æ°´","木","金","土"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"曜日","dateFormatItem-yQQQ":"yQQQ","dateFormatItem-yMEd":"y/M/d(E)","dateFormatItem-MMMEd":"M月dæ—¥(E)","eraNarrow":["BC","AD"],"days-format-short":["æ—¥","月","ç«","æ°´","木","金","土"],"dateFormat-long":"yå¹´M月dæ—¥","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"åˆå¾Œ","dateFormat-full":"yå¹´M月dæ—¥EEEE","dateFormatItem-Md":"M/d","dayPeriods-format-wide-noon":"æ­£åˆ","dateFormatItem-yMd":"y/M/d","field-era":"時代","dateFormatItem-yM":"y/M","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"timeFormat-short":"H:mm","quarters-format-wide":["第1å››åŠæœŸ","第2å››åŠæœŸ","第3å››åŠæœŸ","第4å››åŠæœŸ"],"timeFormat-long":"H:mm:ss z","field-year":"å¹´","dateFormatItem-yMMM":"yå¹´M月","dateFormatItem-yQ":"y/Q","field-hour":"時","dateFormatItem-MMdd":"MM/dd","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-yyQ":"yy/Q","timeFormat-full":"H時mm分ssç§’ zzzz","field-day-relative+0":"今日","field-day-relative+1":"明日","field-day-relative+2":"明後日","dateFormatItem-H":"H時","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-format-abbr":["1Q","2Q","3Q","4Q"],"quarters-standAlone-wide":["第1å››åŠæœŸ","第2å››åŠæœŸ","第3å››åŠæœŸ","第4å››åŠæœŸ"],"dateFormatItem-M":"M月","days-standAlone-wide":["日曜日","月曜日","ç«æ›œæ—¥","水曜日","木曜日","金曜日","土曜日"],"dateFormatItem-yMMMEEEEd":"yå¹´M月dæ—¥EEEE","dateFormatItem-yyMMM":"yå¹´M月","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["BC","AD"],"field-minute":"分","field-dayperiod":"åˆå‰/åˆå¾Œ","days-standAlone-abbr":["æ—¥","月","ç«","æ°´","木","金","土"],"dateFormatItem-d":"dæ—¥","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"昨日","dateFormatItem-h":"aK時","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"一昨日","dateFormatItem-MMMd":"M月dæ—¥","dateFormatItem-EEEEd":"dæ—¥EEEE","dateFormatItem-MEd":"M/d(E)","dateTimeFormat-full":"{1} {0}","field-day":"æ—¥","days-format-wide":["日曜日","月曜日","ç«æ›œæ—¥","水曜日","木曜日","金曜日","土曜日"],"field-zone":"タイムゾーン","dateFormatItem-yyyyMM":"yyyy/MM","dateFormatItem-y":"yå¹´","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"昨年","field-month-relative+-1":"先月","dateFormatItem-hm":"aK:mm","dateFormatItem-GGGGyMd":"GGGGyå¹´M月dæ—¥","days-format-abbr":["æ—¥","月","ç«","æ°´","木","金","土"],"dateFormatItem-yMMMd":"yå¹´M月dæ—¥","eraNames":["紀元å‰","西暦"],"days-format-narrow":["æ—¥","月","ç«","æ°´","木","金","土"],"dateFormatItem-MMMEEEEd":"M月dæ—¥EEEE","field-month":"月","days-standAlone-narrow":["æ—¥","月","ç«","æ°´","木","金","土"],"dateFormatItem-MMM":"M月","dayPeriods-format-wide-am":"åˆå‰","dateFormat-short":"yyyy/MM/dd","field-second":"ç§’","dateFormatItem-yMMMEd":"yå¹´M月dæ—¥(E)","field-month-relative+0":"今月","field-month-relative+1":"翌月","dateFormatItem-Ed":"dæ—¥(E)","field-week":"週","dateFormat-medium":"yyyy/MM/dd","field-year-relative+0":"今年","field-week-relative+-1":"先週","field-year-relative+1":"翌年","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"aK:mm:ss","dateFormatItem-yyyy":"yå¹´","field-week-relative+0":"今週","field-week-relative+1":"翌週"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ja/hebrew.js b/lib/dojo/cldr/nls/ja/hebrew.js new file mode 100644 index 0000000000..53f5eb8d30 --- /dev/null +++ b/lib/dojo/cldr/nls/ja/hebrew.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ja/hebrew",{"dateFormatItem-yM":"y/M","dateFormatItem-yQ":"y/Q","months-standAlone-abbr-leap":"アダル II","dayPeriods-format-wide-pm":"åˆå¾Œ","dateFormatItem-MMMEd":"M月dæ—¥(E)","dateFormatItem-hms":"aK:mm:ss","dateFormatItem-yQQQ":"yQQQ","dateFormatItem-MMM":"M月","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"dayPeriods-format-wide-am":"åˆå‰","months-format-narrow-leap":"7","months-format-abbr-leap":"アダル II","dateFormatItem-y":"yå¹´","timeFormat-full":"H時mm分ssç§’ zzzz","months-standAlone-narrow-leap":"7","months-standAlone-abbr":["ティスレ","ã¸ã‚·ãƒœãƒ³","キスレブ","テベット","ã‚·ãƒãƒƒãƒˆ","アダル I","アダル","ニサン","イヤル","ã‚·ãƒãƒ³","タムズ","アヴ","エルル"],"dateFormatItem-Ed":"dæ—¥(E)","dateFormatItem-yMMM":"yå¹´M月","days-standAlone-narrow":["æ—¥","月","ç«","æ°´","木","金","土"],"eraAbbr":["AM"],"dateFormat-long":"yå¹´M月dæ—¥","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","dateFormat-medium":"yyyy/MM/dd","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-yMd":"y/M/d","months-standAlone-wide":["ティスレ","ã¸ã‚·ãƒœãƒ³","キスレブ","テベット","ã‚·ãƒãƒƒãƒˆ","アダル I","アダル","ニサン","イヤル","ã‚·ãƒãƒ³","タムズ","アヴ","エルル"],"dateFormatItem-MMMd":"M月dæ—¥","timeFormat-long":"H:mm:ss z","months-format-abbr":["ティスレ","ã¸ã‚·ãƒœãƒ³","キスレブ","テベット","ã‚·ãƒãƒƒãƒˆ","アダル I","アダル","ニサン","イヤル","ã‚·ãƒãƒ³","タムズ","アヴ","エルル"],"timeFormat-short":"H:mm","dateFormatItem-H":"H時","quarters-format-abbr":["1Q","2Q","3Q","4Q"],"days-format-abbr":["æ—¥","月","ç«","æ°´","木","金","土"],"dateFormatItem-M":"M月","dateFormatItem-yMMMd":"yå¹´M月dæ—¥","dateFormatItem-MEd":"M/d(E)","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"days-standAlone-short":["æ—¥","月","ç«","æ°´","木","金","土"],"dateFormatItem-hm":"aK:mm","months-standAlone-wide-leap":"アダル II","dateFormat-short":"yyyy/MM/dd","dateFormatItem-yMMMEd":"yå¹´M月dæ—¥(E)","dateFormat-full":"yå¹´M月dæ—¥EEEE","dateFormatItem-Md":"M/d","dateFormatItem-yMEd":"y/M/d(E)","months-format-wide":["ティスレ","ã¸ã‚·ãƒœãƒ³","キスレブ","テベット","ã‚·ãƒãƒƒãƒˆ","アダル I","アダル","ニサン","イヤル","ã‚·ãƒãƒ³","タムズ","アヴ","エルル"],"days-format-short":["æ—¥","月","ç«","æ°´","木","金","土"],"dateFormatItem-d":"dæ—¥","quarters-format-wide":["第1å››åŠæœŸ","第2å››åŠæœŸ","第3å››åŠæœŸ","第4å››åŠæœŸ"],"months-format-wide-leap":"アダル II","days-format-wide":["日曜日","月曜日","ç«æ›œæ—¥","水曜日","木曜日","金曜日","土曜日"],"dateFormatItem-h":"aK時"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ja/islamic.js b/lib/dojo/cldr/nls/ja/islamic.js new file mode 100644 index 0000000000..870fbac3f4 --- /dev/null +++ b/lib/dojo/cldr/nls/ja/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ja/islamic",{"dateFormatItem-yM":"y/M","dateFormatItem-yQ":"y/Q","dayPeriods-format-wide-pm":"åˆå¾Œ","dateFormatItem-MMMEd":"M月dæ—¥(E)","dateFormatItem-hms":"aK:mm:ss","dateFormatItem-yQQQ":"yQQQ","dateFormatItem-MMM":"M月","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dayPeriods-format-wide-am":"åˆå‰","dateFormatItem-y":"yå¹´","timeFormat-full":"H時mm分ssç§’ zzzz","months-standAlone-abbr":["ムãƒãƒƒãƒ©ãƒ ","サフアル","ラビー・ウル・アウワル","ラビー・ウッ・サーニー","ジュマーダル・アウワル","ジュマーダッサーニー","ラジャブ","シャアãƒãƒ¼ãƒ³","ラマダーン","シャウワール","ズル・カイダ","ズル・ヒッジャ"],"dateFormatItem-Ed":"dæ—¥(E)","dateFormatItem-yMMM":"yå¹´M月","days-standAlone-narrow":["æ—¥","月","ç«","æ°´","木","金","土"],"eraAbbr":["AH"],"dateFormat-long":"yå¹´M月dæ—¥","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","dateFormat-medium":"yyyy/MM/dd","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-yMd":"y/M/d","months-standAlone-wide":["ムãƒãƒƒãƒ©ãƒ ","サフアル","ラビー・ウル・アウワル","ラビー・ウッ・サーニー","ジュマーダル・アウワル","ジュマーダッサーニー","ラジャブ","シャアãƒãƒ¼ãƒ³","ラマダーン","シャウワール","ズル・カイダ","ズル・ヒッジャ"],"dateFormatItem-MMMd":"M月dæ—¥","timeFormat-long":"H:mm:ss z","months-format-abbr":["ムãƒãƒƒãƒ©ãƒ ","サフアル","ラビー・ウル・アウワル","ラビー・ウッ・サーニー","ジュマーダル・アウワル","ジュマーダッサーニー","ラジャブ","シャアãƒãƒ¼ãƒ³","ラマダーン","シャウワール","ズル・カイダ","ズル・ヒッジャ"],"timeFormat-short":"H:mm","dateFormatItem-H":"H時","quarters-format-abbr":["1Q","2Q","3Q","4Q"],"days-format-abbr":["æ—¥","月","ç«","æ°´","木","金","土"],"dateFormatItem-M":"M月","dateFormatItem-yMMMd":"yå¹´M月dæ—¥","dateFormatItem-MEd":"M/d(E)","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-standAlone-short":["æ—¥","月","ç«","æ°´","木","金","土"],"dateFormatItem-hm":"aK:mm","dateFormat-short":"yyyy/MM/dd","dateFormatItem-yMMMEd":"yå¹´M月dæ—¥(E)","dateFormat-full":"yå¹´M月dæ—¥EEEE","dateFormatItem-Md":"M/d","dateFormatItem-yMEd":"y/M/d(E)","months-format-wide":["ムãƒãƒƒãƒ©ãƒ ","サフアル","ラビー・ウル・アウワル","ラビー・ウッ・サーニー","ジュマーダル・アウワル","ジュマーダッサーニー","ラジャブ","シャアãƒãƒ¼ãƒ³","ラマダーン","シャウワール","ズル・カイダ","ズル・ヒッジャ"],"days-format-short":["æ—¥","月","ç«","æ°´","木","金","土"],"dateFormatItem-d":"dæ—¥","quarters-format-wide":["第1å››åŠæœŸ","第2å››åŠæœŸ","第3å››åŠæœŸ","第4å››åŠæœŸ"],"days-format-wide":["日曜日","月曜日","ç«æ›œæ—¥","水曜日","木曜日","金曜日","土曜日"],"dateFormatItem-h":"aK時"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ja/number.js b/lib/dojo/cldr/nls/ja/number.js new file mode 100644 index 0000000000..799ee12cb5 --- /dev/null +++ b/lib/dojo/cldr/nls/ja/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ja/number",{"group":",","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":".","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00","plusSign":"+","decimalFormat-long":"000å…†","decimalFormat-short":"000å…†"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ko/buddhist.js b/lib/dojo/cldr/nls/ko/buddhist.js new file mode 100644 index 0000000000..68a611da51 --- /dev/null +++ b/lib/dojo/cldr/nls/ko/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ko/buddhist",{"dateFormatItem-yM":"G y. M.","dateFormatItem-yQ":"G yë…„ Q분기","dayPeriods-format-wide-pm":"오후","eraNames":["불기"],"dateFormatItem-MMMEd":"MMM dì¼ (E)","dateFormatItem-hms":"a h:mm:ss","dateFormatItem-yQQQ":"G yë…„ QQQ","dateFormatItem-MMdd":"MM. dd","dateFormatItem-MMM":"LLL","months-standAlone-narrow":["1ì›”","2ì›”","3ì›”","4ì›”","5ì›”","6ì›”","7ì›”","8ì›”","9ì›”","10ì›”","11ì›”","12ì›”"],"dateFormatItem-Gy":"G yë…„","dayPeriods-format-wide-am":"오전","dateFormatItem-y":"G yë…„","timeFormat-full":"a h시 më¶„ sì´ˆ zzzz","dateFormatItem-EEEEd":"dì¼ EEEE","dateFormatItem-Ed":"dì¼ (E)","dateFormatItem-yMMM":"G yë…„ MMM","days-standAlone-narrow":["ì¼","ì›”","í™”","수","목","금","토"],"eraAbbr":["불기"],"dateFormatItem-yyyyMM":"G y. MM","dateFormat-long":"G yë…„ Mì›” dì¼","timeFormat-medium":"a h:mm:ss","dateFormatItem-Hm":"HH:mm","dateFormatItem-yyMM":"G yy. M.","dateFormat-medium":"G y. M. d","dateFormatItem-Hms":"H시 më¶„ sì´ˆ","dateFormatItem-yyMMM":"G yë…„ MMM","dateFormatItem-yMMMEEEEd":"G yë…„ MMM dì¼ EEEE","dateFormatItem-yMd":"G y. M. d.","dateFormatItem-ms":"mm:ss","dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-MMMd":"MMM dì¼","dateFormatItem-yyQ":"G yë…„ Q분기","timeFormat-long":"a h시 më¶„ sì´ˆ z","dateFormatItem-H":"H시","timeFormat-short":"a h:mm","quarters-format-abbr":["1분기","2분기","3분기","4분기"],"days-format-abbr":["ì¼","ì›”","í™”","수","목","금","토"],"dateFormatItem-mmss":"mm:ss","dateFormatItem-M":"Mì›”","dateFormatItem-yMMMd":"G yë…„ MMM dì¼","dateFormatItem-MEEEEd":"M. d. EEEE","dateFormatItem-MEd":"M. d. (E)","days-standAlone-short":["ì¼","ì›”","í™”","수","목","금","토"],"dateFormatItem-hm":"a h:mm","dateFormat-short":"G y. M. d","dateFormatItem-yMMMEd":"G yë…„ MMM dì¼ (E)","dateFormat-full":"G yë…„ Mì›” dì¼ EEEE","dateFormatItem-Md":"M. d.","dateFormatItem-yMEd":"G y. M. d. (E)","months-format-wide":["1ì›”","2ì›”","3ì›”","4ì›”","5ì›”","6ì›”","7ì›”","8ì›”","9ì›”","10ì›”","11ì›”","12ì›”"],"days-format-short":["ì¼","ì›”","í™”","수","목","금","토"],"dateFormatItem-d":"dì¼","quarters-format-wide":["ì œ 1/4분기","ì œ 2/4분기","ì œ 3/4분기","ì œ 4/4분기"],"eraNarrow":["불기"],"days-format-wide":["ì¼ìš”ì¼","월요ì¼","화요ì¼","수요ì¼","목요ì¼","금요ì¼","토요ì¼"],"dateFormatItem-h":"a h시"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ko/currency.js b/lib/dojo/cldr/nls/ko/currency.js new file mode 100644 index 0000000000..94d9946d25 --- /dev/null +++ b/lib/dojo/cldr/nls/ko/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ko/currency",{"HKD_displayName":"í™ì½© 달러","CHF_displayName":"스위스 프랑","CAD_displayName":"ìºë‚˜ë‹¤ 달러","CNY_displayName":"중국 위안 ì¸ë¯¼í","AUD_displayName":"호주 달러","JPY_displayName":"ì¼ë³¸ 엔화","USD_displayName":"미국 달러","GBP_displayName":"ì˜êµ­ë ¹ 파운드 스털ë§","AUD_symbol":"AU$","EUR_displayName":"유로화"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ko/gregorian.js b/lib/dojo/cldr/nls/ko/gregorian.js new file mode 100644 index 0000000000..752e061ec4 --- /dev/null +++ b/lib/dojo/cldr/nls/ko/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ko/gregorian",{"days-standAlone-short":["ì¼","ì›”","í™”","수","목","금","토"],"months-format-narrow":["1ì›”","2ì›”","3ì›”","4ì›”","5ì›”","6ì›”","7ì›”","8ì›”","9ì›”","10ì›”","11ì›”","12ì›”"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"ìš”ì¼","dateFormatItem-yQQQ":"yë…„ QQQ","dateFormatItem-yMEd":"yyyy. M. d. (E)","dateFormatItem-MMMEd":"MMM dì¼ (E)","eraNarrow":["기ì›ì „","서기"],"days-format-short":["ì¼","ì›”","í™”","수","목","금","토"],"dateFormat-long":"yë…„ Mì›” dì¼","months-format-wide":["1ì›”","2ì›”","3ì›”","4ì›”","5ì›”","6ì›”","7ì›”","8ì›”","9ì›”","10ì›”","11ì›”","12ì›”"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"오후","dateFormat-full":"yë…„ Mì›” dì¼ EEEE","dateFormatItem-Md":"M. d.","dateFormatItem-yMd":"yyyy. M. d.","field-era":"연호","dateFormatItem-yM":"yyyy. M.","months-standAlone-wide":["1ì›”","2ì›”","3ì›”","4ì›”","5ì›”","6ì›”","7ì›”","8ì›”","9ì›”","10ì›”","11ì›”","12ì›”"],"timeFormat-short":"a h:mm","quarters-format-wide":["ì œ 1/4분기","ì œ 2/4분기","ì œ 3/4분기","ì œ 4/4분기"],"dateFormatItem-MEEEEd":"M. d. EEEE","timeFormat-long":"a h시 më¶„ sì´ˆ z","field-year":"ë…„","dateFormatItem-yMMM":"yë…„ MMM","dateFormatItem-yQ":"yë…„ Q분기","field-hour":"시","dateFormatItem-MMdd":"MM. dd","months-format-abbr":["1ì›”","2ì›”","3ì›”","4ì›”","5ì›”","6ì›”","7ì›”","8ì›”","9ì›”","10ì›”","11ì›”","12ì›”"],"dateFormatItem-yyQ":"yyë…„ Q분기","timeFormat-full":"a h시 më¶„ sì´ˆ zzzz","field-day-relative+0":"오늘","field-day-relative+1":"ë‚´ì¼","field-day-relative+2":"모레","dateFormatItem-H":"H시","months-standAlone-abbr":["1ì›”","2ì›”","3ì›”","4ì›”","5ì›”","6ì›”","7ì›”","8ì›”","9ì›”","10ì›”","11ì›”","12ì›”"],"quarters-format-abbr":["1분기","2분기","3분기","4분기"],"quarters-standAlone-wide":["ì œ 1/4분기","ì œ 2/4분기","ì œ 3/4분기","ì œ 4/4분기"],"dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-M":"Mì›”","days-standAlone-wide":["ì¼ìš”ì¼","월요ì¼","화요ì¼","수요ì¼","목요ì¼","금요ì¼","토요ì¼"],"dateFormatItem-yMMMEEEEd":"yë…„ MMM dì¼ EEEE","dateFormatItem-yyMMM":"yyë…„ MMM","timeFormat-medium":"a h:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["1분기","2분기","3분기","4분기"],"eraAbbr":["기ì›ì „","서기"],"field-minute":"ë¶„","field-dayperiod":"오전/오후","days-standAlone-abbr":["ì¼","ì›”","í™”","수","목","금","토"],"dateFormatItem-d":"dì¼","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"ì–´ì œ","dateFormatItem-h":"a h시","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"그저께","dateFormatItem-MMMd":"MMM dì¼","dateFormatItem-EEEEd":"dì¼ EEEE","dateFormatItem-MEd":"M. d. (E)","dateTimeFormat-full":"{1} {0}","field-day":"ì¼","days-format-wide":["ì¼ìš”ì¼","월요ì¼","화요ì¼","수요ì¼","목요ì¼","금요ì¼","토요ì¼"],"field-zone":"시간대","dateFormatItem-yyyyMM":"yyyy. MM","dateFormatItem-y":"yë…„","months-standAlone-narrow":["1ì›”","2ì›”","3ì›”","4ì›”","5ì›”","6ì›”","7ì›”","8ì›”","9ì›”","10ì›”","11ì›”","12ì›”"],"field-year-relative+-1":"지난해","field-month-relative+-1":"지난달","dateFormatItem-yyMM":"yy. M.","dateFormatItem-hm":"a h:mm","days-format-abbr":["ì¼","ì›”","í™”","수","목","금","토"],"dateFormatItem-yMMMd":"yë…„ MMM dì¼","eraNames":["서력기ì›ì „","서력기ì›"],"days-format-narrow":["ì¼","ì›”","í™”","수","목","금","토"],"field-month":"ì›”","days-standAlone-narrow":["ì¼","ì›”","í™”","수","목","금","토"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"오전","dateFormat-short":"yy. M. d.","field-second":"ì´ˆ","dateFormatItem-yMMMEd":"yë…„ MMM dì¼ (E)","field-month-relative+0":"ì´ë²ˆ 달","field-month-relative+1":"ë‹¤ìŒ ë‹¬","dateFormatItem-Ed":"dì¼ (E)","field-week":"주","dateFormat-medium":"yyyy. M. d.","field-year-relative+0":"올해","field-week-relative+-1":"지난주","field-year-relative+1":"ë‚´ë…„","dateFormatItem-mmss":"mm:ss","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H시 më¶„ sì´ˆ","dateFormatItem-hms":"a h:mm:ss","field-week-relative+0":"ì´ë²ˆ 주","field-week-relative+1":"ë‹¤ìŒ ì£¼"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ko/number.js b/lib/dojo/cldr/nls/ko/number.js new file mode 100644 index 0000000000..25dc931e0c --- /dev/null +++ b/lib/dojo/cldr/nls/ko/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ko/number",{"group":",","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":".","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","decimalFormat-long":"000ì¡°","decimalFormat-short":"000ì¡°"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nb/buddhist.js b/lib/dojo/cldr/nls/nb/buddhist.js new file mode 100644 index 0000000000..5a410d0549 --- /dev/null +++ b/lib/dojo/cldr/nls/nb/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/nb/buddhist",{"dateFormatItem-yM":"M y G","dateFormatItem-yQ":"Q y G","dateFormatItem-MMMEd":"E d. MMM","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ y G","dateFormatItem-MMdd":"dd.MM","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-Gy":"y G","quarters-standAlone-abbr":["K1","K2","K3","K4"],"dateFormatItem-y":"y G","timeFormat-full":"'kl'. HH:mm:ss zzzz","months-standAlone-abbr":["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],"dateFormatItem-Ed":"E d.","dateFormatItem-yMMM":"MMM y G","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yyyyMMMM":"MMMM y G","dateFormat-long":"d. MMMM y G","dateFormatItem-Hm":"HH:mm","dateFormatItem-yyMM":"MM.y G","dateFormat-medium":"d. MMM y G","dateFormatItem-Hms":"HH:mm:ss","dayPeriods-format-narrow-pm":"p","dateFormatItem-yyMMM":"MMM y G","dateFormatItem-yyQQQQ":"QQQQ y G","dateFormatItem-yMd":"d.M.y G","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-ms":"mm.ss","dayPeriods-format-narrow-am":"a","months-standAlone-wide":["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],"dateFormatItem-MMMd":"d. MMM","dateFormatItem-yyQ":"Q y G","months-format-abbr":["jan.","feb.","mars","apr.","mai","juni","juli","aug.","sep.","okt.","nov.","des."],"quarters-format-abbr":["K1","K2","K3","K4"],"days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"dateFormatItem-M":"L","days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yMMMd":"d. MMM y G","dateFormatItem-MEd":"E d.M","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-standAlone-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["sø.","ma.","ti.","on.","to.","fr.","lø."],"dayPeriods-format-abbr-pm":"p.m.","dateFormat-short":"d.M yyyy","dateFormatItem-yMMMEd":"E d. MMM y G","dateFormat-full":"EEEE d. MMMM y G","dateFormatItem-Md":"d.M.","dateFormatItem-yMEd":"E d.M.y G","months-format-wide":["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],"dayPeriods-format-abbr-am":"a.m.","days-format-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"dateFormatItem-d":"d.","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nb/currency.js b/lib/dojo/cldr/nls/nb/currency.js new file mode 100644 index 0000000000..0d46d7c313 --- /dev/null +++ b/lib/dojo/cldr/nls/nb/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/nb/currency",{"HKD_displayName":"Hongkong-dollar","CHF_displayName":"sveitsiske franc","CAD_displayName":"kanadiske dollar","CNY_displayName":"kinesiske yuan","AUD_displayName":"australske dollar","JPY_displayName":"japanske yen","USD_displayName":"amerikanske dollar","EUR_symbol":"€","GBP_displayName":"britiske pund sterling","GBP_symbol":"£","EUR_displayName":"euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nb/gregorian.js b/lib/dojo/cldr/nls/nb/gregorian.js new file mode 100644 index 0000000000..190f094f97 --- /dev/null +++ b/lib/dojo/cldr/nls/nb/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/nb/gregorian",{"days-standAlone-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"ukedag","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E d.MM.y","dateFormatItem-MMMEd":"E d. MMM","eraNarrow":["f.Kr.","e.Kr."],"days-format-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"dateFormat-long":"d. MMMM y","months-format-wide":["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],"dateTimeFormat-medium":"{0} {1}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE d. MMMM y","dateFormatItem-Md":"d.M.","dayPeriods-format-abbr-am":"a.m.","dateFormatItem-yMd":"d.M.yyyy","dateFormatItem-yM":"M y","field-era":"tidsalder","months-standAlone-wide":["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],"timeFormat-short":"HH:mm","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"timeFormat-long":"HH:mm:ss z","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q yyyy","field-year":"Ã¥r","dateFormatItem-yyyyMMMM":"MMMM y","dateFormatItem-MMdd":"d.M.","field-hour":"time","months-format-abbr":["jan.","feb.","mars","apr.","mai","juni","juli","aug.","sep.","okt.","nov.","des."],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"'kl'. HH:mm:ss zzzz","field-day-relative+0":"i dag","field-day-relative+1":"i morgen","field-day-relative+2":"i overmorgen","dateFormatItem-H":"HH","months-standAlone-abbr":["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-M":"L","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["f.Kr.","e.Kr."],"field-minute":"minutt","field-dayperiod":"AM/PM","days-standAlone-abbr":["sø.","ma.","ti.","on.","to.","fr.","lø."],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm.ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"i gÃ¥r","dateFormatItem-h":"h a","dateTimeFormat-long":"{0} {1}","dayPeriods-format-narrow-am":"a","field-day-relative+-2":"i forgÃ¥rs","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d.M","dateTimeFormat-full":"{0} {1}","field-day":"dag","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-zone":"sone","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"I fjor","field-month-relative+-1":"Sist mÃ¥ned","dateFormatItem-yyMM":"MM.yy","dateFormatItem-hm":"h:mm a","dayPeriods-format-abbr-pm":"p.m.","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"dateFormatItem-yMMMd":"d. MMM y","eraNames":["f.Kr.","e.Kr."],"days-format-narrow":["S","M","T","O","T","F","L"],"days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-MMM":"LLL","field-month":"mÃ¥ned","dayPeriods-format-wide-am":"AM","dateFormat-short":"dd.MM.yy","field-second":"sekund","dateFormatItem-yMMMEd":"E d. MMM y","field-month-relative+0":"Denne mÃ¥neden","field-month-relative+1":"Neste mÃ¥ned","dateFormatItem-Ed":"E d.","field-week":"uke","dateFormat-medium":"d. MMM y","field-year-relative+0":"Dette Ã¥ret","field-week-relative+-1":"Sist uke","field-year-relative+1":"Neste Ã¥r","dayPeriods-format-narrow-pm":"p","dateTimeFormat-short":"{0} {1}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","field-week-relative+0":"Denne uken","field-week-relative+1":"Neste uke"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nb/islamic.js b/lib/dojo/cldr/nls/nb/islamic.js new file mode 100644 index 0000000000..d4d4903b8a --- /dev/null +++ b/lib/dojo/cldr/nls/nb/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/nb/islamic",{"dateFormatItem-yM":"M y","dateFormatItem-yyyyMMMEd":"E d. MMM y G","dateFormatItem-yQ":"Q yyyy","dateFormatItem-MMMEd":"E d. MMM","dateTimeFormat-full":"{0} {1}","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-MMdd":"dd.MM","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-MMM":"LLL","dateTimeFormat-short":"{0} {1}","dateTimeFormat-medium":"{0} {1}","quarters-standAlone-abbr":["K1","K2","K3","K4"],"timeFormat-full":"'kl'. HH:mm:ss zzzz","dateFormatItem-yyyy":"y G","dateFormatItem-Ed":"E d.","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yyyyMMMM":"MMMM y G","dateFormat-long":"d. MMMM y G","dateFormatItem-Hm":"HH:mm","dateFormatItem-yyMM":"MM.y G","dateFormat-medium":"d. MMM y G","dateFormatItem-Hms":"HH:mm:ss","dayPeriods-format-narrow-pm":"p","dateFormatItem-yyMMM":"MMM y G","dateFormatItem-yyQQQQ":"QQQQ y G","dateFormatItem-yMd":"d.M.yyyy","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-ms":"mm.ss","dayPeriods-format-narrow-am":"a","dateTimeFormat-long":"{0} {1}","dateFormatItem-yyyyMd":"d.M.y G","dateFormatItem-yyyyMMMd":"d. MMM y G","dateFormatItem-yyyyMEd":"E d.M.y G","dateFormatItem-MMMd":"d. MMM","dateFormatItem-yyQ":"Q y G","quarters-format-abbr":["K1","K2","K3","K4"],"days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"dateFormatItem-M":"L","days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yMMMd":"d. MMM y","dateFormatItem-yyyyQQQ":"QQQ y G","dateFormatItem-MEd":"E d.M","days-standAlone-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["sø.","ma.","ti.","on.","to.","fr.","lø."],"dayPeriods-format-abbr-pm":"p.m.","dateFormat-short":"d.M y G","dateFormatItem-yyyyM":"M y G","dateFormatItem-yMMMEd":"E d. MMM y","dateFormat-full":"EEEE d. MMMM y G","dateFormatItem-Md":"d.M.","dateFormatItem-yyyyQ":"Q y G","dateFormatItem-yMEd":"E d.MM.y","dayPeriods-format-abbr-am":"a.m.","days-format-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-d":"d.","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nb/number.js b/lib/dojo/cldr/nls/nb/number.js new file mode 100644 index 0000000000..5e75f95d00 --- /dev/null +++ b/lib/dojo/cldr/nls/nb/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/nb/number",{"group":" ","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤ #,##0.00","plusSign":"+","decimalFormat-long":"000 billioner","decimalFormat-short":"000 bill"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nl/buddhist.js b/lib/dojo/cldr/nls/nl/buddhist.js new file mode 100644 index 0000000000..71e69be0de --- /dev/null +++ b/lib/dojo/cldr/nls/nl/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/nl/buddhist",{"dateFormatItem-yM":"M-y G","dateFormatItem-yQ":"Q y G","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-yQQQ":"QQQ y G","dateFormatItem-MMdd":"dd-MM","days-standAlone-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-Gy":"y G","quarters-standAlone-abbr":["K1","K2","K3","K4"],"dateFormatItem-y":"y G","months-standAlone-abbr":["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],"dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y G","days-standAlone-narrow":["Z","M","D","W","D","V","Z"],"dateFormatItem-yyyyMMMM":"MMMM y G","dateFormat-long":"d MMMM y G","dateFormatItem-Hm":"HH:mm","dateFormatItem-MMd":"d-MM","dateFormatItem-yyMM":"MM-yy G","dateFormat-medium":"d MMM y G","dateFormatItem-yyMMM":"MMM yy G","dateFormatItem-yyQQQQ":"QQQQ yy G","dateFormatItem-yMd":"d-M-y G","quarters-standAlone-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dateFormatItem-ms":"mm:ss","months-standAlone-wide":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],"dateFormatItem-MMMd":"d MMM","dateFormatItem-yyQ":"Q yy G","months-format-abbr":["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"dateFormatItem-MMMMd":"d MMMM","quarters-format-abbr":["K1","K2","K3","K4"],"days-format-abbr":["zo","ma","di","wo","do","vr","za"],"days-format-narrow":["Z","M","D","W","D","V","Z"],"dateFormatItem-M":"L","dateFormatItem-yMMMd":"d MMM y G","dateFormatItem-MEd":"E d-M","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-standAlone-short":["zo","ma","di","wo","do","vr","za"],"days-standAlone-abbr":["zo","ma","di","wo","do","vr","za"],"dateFormat-short":"dd-MM-yy G","dateFormatItem-yMMMEd":"E d MMM y G","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-Md":"d-M","dateFormatItem-yMEd":"E d-M-y G","months-format-wide":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],"days-format-short":["zo","ma","di","wo","do","vr","za"],"dateFormatItem-d":"d","quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"days-format-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nl/currency.js b/lib/dojo/cldr/nls/nl/currency.js new file mode 100644 index 0000000000..4eea2bf0e8 --- /dev/null +++ b/lib/dojo/cldr/nls/nl/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/nl/currency",{"HKD_displayName":"Hongkongse dollar","CHF_displayName":"Zwitserse frank","JPY_symbol":"JPÂ¥","CAD_displayName":"Canadese dollar","HKD_symbol":"HK$","CNY_displayName":"Chinese yuan renminbi","USD_symbol":"US$","AUD_displayName":"Australische dollar","JPY_displayName":"Japanse yen","CAD_symbol":"C$","USD_displayName":"Amerikaanse dollar","EUR_symbol":"€","CNY_symbol":"CNÂ¥","GBP_displayName":"Brits pond sterling","AUD_symbol":"AU $","EUR_displayName":"Euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nl/gregorian.js b/lib/dojo/cldr/nls/nl/gregorian.js new file mode 100644 index 0000000000..eb28117e39 --- /dev/null +++ b/lib/dojo/cldr/nls/nl/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/nl/gregorian",{"days-standAlone-short":["zo","ma","di","wo","do","vr","za"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Dag van de week","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E d-M-y","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["v.Chr.","n.Chr."],"days-format-short":["zo","ma","di","wo","do","vr","za"],"dateFormat-long":"d MMMM y","months-format-wide":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE d MMMM y","dateFormatItem-Md":"d-M","dayPeriods-format-wide-noon":"12 uur 's middags","dateFormatItem-yMd":"d-M-y","field-era":"Tijdperk","dateFormatItem-yM":"M-y","months-standAlone-wide":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],"timeFormat-short":"HH:mm","quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"timeFormat-long":"HH:mm:ss z","field-year":"Jaar","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q yyyy","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"Uur","dateFormatItem-MMdd":"dd-MM","months-format-abbr":["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"Vandaag","field-day-relative+1":"Morgen","field-day-relative+2":"Overmorgen","dateFormatItem-H":"HH","months-standAlone-abbr":["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dateFormatItem-M":"L","days-standAlone-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"dateFormatItem-MMMMd":"d MMMM","dayPeriods-format-abbr-noon":"12 uur 's middags","dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["v.Chr.","n.Chr."],"field-minute":"Minuut","field-dayperiod":"AM/PM","days-standAlone-abbr":["zo","ma","di","wo","do","vr","za"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"Gisteren","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"Eergisteren","dateFormatItem-MMMd":"d-MMM","dateFormatItem-MEd":"E d-M","dateTimeFormat-full":"{1} {0}","field-day":"Dag","days-format-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"field-zone":"Zone","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"Vorig jaar","field-month-relative+-1":"Vorige maand","dateFormatItem-yyMM":"MM-yy","dateFormatItem-hm":"h:mm a","days-format-abbr":["zo","ma","di","wo","do","vr","za"],"dateFormatItem-yMMMd":"d MMM y","eraNames":["Voor Christus","na Christus"],"days-format-narrow":["Z","M","D","W","D","V","Z"],"days-standAlone-narrow":["Z","M","D","W","D","V","Z"],"dateFormatItem-MMM":"LLL","field-month":"Maand","dayPeriods-format-wide-am":"AM","dateFormat-short":"dd-MM-yy","dateFormatItem-MMd":"d-MM","dayPeriods-format-narrow-noon":"n","field-second":"Seconde","dateFormatItem-yMMMEd":"E d MMM y","field-month-relative+0":"Deze maand","field-month-relative+1":"Volgende maand","dateFormatItem-Ed":"E d","field-week":"week","dateFormat-medium":"d MMM y","field-year-relative+0":"Dit jaar","field-week-relative+-1":"Vorige week","field-year-relative+1":"Volgend jaar","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","field-week-relative+0":"Deze week","field-week-relative+1":"Volgende week"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nl/hebrew.js b/lib/dojo/cldr/nls/nl/hebrew.js new file mode 100644 index 0000000000..2a71246f42 --- /dev/null +++ b/lib/dojo/cldr/nls/nl/hebrew.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/nl/hebrew",{"quarters-standAlone-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"quarters-format-abbr":["K1","K2","K3","K4"],"dateFormatItem-yMd":"d-M-y","dateFormat-medium":"d MMM y","dateFormatItem-MMMEd":"E d MMM","quarters-standAlone-abbr":["K1","K2","K3","K4"],"dateFormatItem-MEd":"E d-M","dateFormatItem-yMEd":"E d-M-y","dateFormatItem-yMMMd":"d MMM y","days-format-short":["zo","ma","di","wo","do","vr","za"],"dateFormatItem-Md":"d-M","months-standAlone-wide":["Tisjrie","Chesjwan","Kislev","Tevet","Sjevat","Adar A","Adar","Nisan","Ijar","Sivan","Tammoez","Av","Elloel"],"months-format-wide-leap":"Adar B","days-standAlone-narrow":["Z","M","D","W","D","V","Z"],"months-standAlone-abbr":["Tisjrie","Chesjwan","Kislev","Tevet","Sjevat","Adar A","Adar","Nisan","Ijar","Sivan","Tammoez","Av","Elloel"],"dateFormatItem-yQQQ":"QQQ y","days-standAlone-short":["zo","ma","di","wo","do","vr","za"],"dateFormat-long":"d MMMM y","dateFormat-short":"dd-MM-yy","dateFormatItem-yMMMEd":"E d MMM y","months-format-wide":["Tisjrie","Chesjwan","Kislev","Tevet","Sjevat","Adar A","Adar","Nisan","Ijar","Sivan","Tammoez","Av","Elloel"],"days-standAlone-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"days-format-narrow":["Z","M","D","W","D","V","Z"],"dateFormatItem-yM":"M-y","months-format-abbr":["Tisjrie","Chesjwan","Kislev","Tevet","Sjevat","Adar A","Adar","Nisan","Ijar","Sivan","Tammoez","Av","Elloel"],"days-standAlone-abbr":["zo","ma","di","wo","do","vr","za"],"days-format-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"dateFormatItem-yQ":"Q yyyy","dateFormatItem-yMMM":"MMM y","quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dateFormat-full":"EEEE d MMMM y","dateFormatItem-MMMd":"d-MMM","days-format-abbr":["zo","ma","di","wo","do","vr","za"],"dateFormatItem-Ed":"E d"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nl/islamic.js b/lib/dojo/cldr/nls/nl/islamic.js new file mode 100644 index 0000000000..4a5b80bb19 --- /dev/null +++ b/lib/dojo/cldr/nls/nl/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/nl/islamic",{"dateFormatItem-yM":"M-y","dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-yQ":"Q yyyy","eraNames":["SaÊ»na Hizjria"],"dateFormatItem-MMMEd":"E d MMM","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-MMdd":"dd-MM","days-standAlone-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-abbr":["K1","K2","K3","K4"],"dateFormatItem-yyyy":"y G","months-standAlone-abbr":["Moeh.","Saf.","Rab. I","Rab. II","Joem. I","Joem. II","Raj.","Sja.","Ram.","Sjaw.","Doe al k.","Doe al h."],"dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["Z","M","D","W","D","V","Z"],"eraAbbr":["SaÊ»na Hizjria"],"dateFormatItem-yyyyMMMM":"MMMM y G","dateFormat-long":"d MMMM y G","dateFormatItem-Hm":"HH:mm","dateFormatItem-MMd":"d-MM","dateFormatItem-yyMM":"MM-yy G","dateFormat-medium":"d MMM y G","dateFormatItem-yyMMM":"MMM yy G","dateFormatItem-yyQQQQ":"QQQQ yy G","dateFormatItem-yMd":"d-M-y","quarters-standAlone-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dateFormatItem-ms":"mm:ss","months-standAlone-wide":["Moeharram","Safar","RabiÊ»a al awal","RabiÊ»a al thani","JoemadÊ»al awal","JoemadÊ»al thani","Rajab","SjaÊ»aban","Ramadan","Sjawal","Doe al kaÊ»aba","Doe al hizja"],"dateFormatItem-yyyyMd":"d-M-y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-yyyyMEd":"E d-M-y G","dateFormatItem-MMMd":"d MMM","dateFormatItem-yyQ":"Q yy G","months-format-abbr":["Moeh.","Saf.","Rab. I","Rab. II","Joem. I","Joem. II","Raj.","Sja.","Ram.","Sjaw.","Doe al k.","Doe al h."],"dateFormatItem-MMMMd":"d MMMM","quarters-format-abbr":["K1","K2","K3","K4"],"days-format-abbr":["zo","ma","di","wo","do","vr","za"],"dateFormatItem-M":"L","days-format-narrow":["Z","M","D","W","D","V","Z"],"dateFormatItem-yMMMd":"d MMM y","dateFormatItem-yyyyQQQ":"QQQ y G","dateFormatItem-MEd":"E d-M","days-standAlone-short":["zo","ma","di","wo","do","vr","za"],"days-standAlone-abbr":["zo","ma","di","wo","do","vr","za"],"dateFormat-short":"dd-MM-yy G","dateFormatItem-yyyyM":"M-y G","dateFormatItem-yMMMEd":"E d MMM y","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-Md":"d-M","dateFormatItem-yyyyQ":"Q y G","dateFormatItem-yMEd":"E d-M-y","months-format-wide":["Moeharram","Safar","RabiÊ»a al awal","RabiÊ»a al thani","JoemadÊ»al awal","JoemadÊ»al thani","Rajab","SjaÊ»aban","Ramadan","Sjawal","Doe al kaÊ»aba","Doe al hizja"],"days-format-short":["zo","ma","di","wo","do","vr","za"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-d":"d","quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"eraNarrow":["SaÊ»na Hizjria"],"days-format-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nl/number.js b/lib/dojo/cldr/nls/nl/number.js new file mode 100644 index 0000000000..a0a8ecfa95 --- /dev/null +++ b/lib/dojo/cldr/nls/nl/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/nl/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤ #,##0.00;¤ #,##0.00-","plusSign":"+","decimalFormat-long":"000 biljoen","decimalFormat-short":"000 bln'.'"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/number.js b/lib/dojo/cldr/nls/number.js new file mode 100644 index 0000000000..8a413b4687 --- /dev/null +++ b/lib/dojo/cldr/nls/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/number",{root:{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"¤ #,##0.00","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000T","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"ar":true,"ca":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"en-gb":true,"es":true,"fi":true,"fr":true,"fr-ch":true,"he":true,"hu":true,"it":true,"ja":true,"ko":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sk":true,"sl":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true,"zh-hk":true,"zh-tw":true}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pl/buddhist.js b/lib/dojo/cldr/nls/pl/buddhist.js new file mode 100644 index 0000000000..cb7e2b7b55 --- /dev/null +++ b/lib/dojo/cldr/nls/pl/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/pl/buddhist",{"dateFormatItem-yM":"MM.yyyy G","dateFormatItem-yQ":"G y Q","dateFormatItem-MMMEd":"E, d MMM","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-yQQQ":"G y QQQ","dateFormatItem-MMdd":"d.MM","days-standAlone-wide":["niedziela","poniedziaÅ‚ek","wtorek","Å›roda","czwartek","piÄ…tek","sobota"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["s","l","m","k","m","c","l","s","w","p","l","g"],"dateFormatItem-Gy":"y G","quarters-standAlone-abbr":["1 kw.","2 kw.","3 kw.","4 kw."],"dateFormatItem-y":"y G","months-standAlone-abbr":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"dateFormatItem-Ed":"E, d","dateFormatItem-yMMM":"LLL y G","days-standAlone-narrow":["N","P","W","Åš","C","P","S"],"dateFormatItem-yyyyMM":"MM.yyyy G","dateFormatItem-yyyyMMMM":"LLLL y G","dateFormat-long":"d MMMM, y G","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"d MMM y G","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-yyMMM":"LLL y G","dateFormatItem-yMd":"d.MM.yyyy G","quarters-standAlone-wide":["I kwartaÅ‚","II kwartaÅ‚","III kwartaÅ‚","IV kwartaÅ‚"],"dateFormatItem-yMMMM":"LLLL y G","dateFormatItem-ms":"mm:ss","quarters-standAlone-narrow":["K1","K2","K3","K4"],"months-standAlone-wide":["styczeÅ„","luty","marzec","kwiecieÅ„","maj","czerwiec","lipiec","sierpieÅ„","wrzesieÅ„","październik","listopad","grudzieÅ„"],"dateFormatItem-MMMd":"d MMM","dateFormatItem-yyQ":"Q y G","months-format-abbr":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"dateFormatItem-MMMMd":"d MMMM","quarters-format-abbr":["K1","K2","K3","K4"],"days-format-abbr":["niedz.","pon.","wt.","Å›r.","czw.","pt.","sob."],"dateFormatItem-M":"L","days-format-narrow":["N","P","W","Åš","C","P","S"],"dateFormatItem-yMMMd":"d MMM y G","dateFormatItem-MEd":"E, d.MM","months-format-narrow":["s","l","m","k","m","c","l","s","w","p","l","g"],"days-standAlone-short":["niedz.","pon.","wt.","Å›r.","czw.","pt.","sob."],"dateFormatItem-hm":"hh:mm a","days-standAlone-abbr":["niedz.","pon.","wt.","Å›r.","czw.","pt.","sob."],"dateFormat-short":"dd.MM.yyyy G","dateFormatItem-yMMMEd":"E, d MMM y G","dateFormat-full":"EEEE, d MMMM, y G","dateFormatItem-Md":"d.MM","dateFormatItem-yMEd":"E, d.MM.yyyy G","months-format-wide":["stycznia","lutego","marca","kwietnia","maja","czerwca","lipca","sierpnia","wrzeÅ›nia","października","listopada","grudnia"],"days-format-short":["niedz.","pon.","wt.","Å›r.","czw.","pt.","sob."],"dateFormatItem-d":"d","quarters-format-wide":["I kwartaÅ‚","II kwartaÅ‚","III kwartaÅ‚","IV kwartaÅ‚"],"days-format-wide":["niedziela","poniedziaÅ‚ek","wtorek","Å›roda","czwartek","piÄ…tek","sobota"],"dateFormatItem-h":"hh a"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pl/currency.js b/lib/dojo/cldr/nls/pl/currency.js new file mode 100644 index 0000000000..db65e49b3a --- /dev/null +++ b/lib/dojo/cldr/nls/pl/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/pl/currency",{"HKD_displayName":"dolar hongkoÅ„ski","CHF_displayName":"frank szwajcarski","CAD_displayName":"dolar kanadyjski","CNY_displayName":"juan renminbi","AUD_displayName":"dolar australijski","JPY_displayName":"jen japoÅ„ski","USD_displayName":"dolar amerykaÅ„ski ","GBP_displayName":"funt szterling","AUD_symbol":"A$","EUR_displayName":"euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pl/gregorian.js b/lib/dojo/cldr/nls/pl/gregorian.js new file mode 100644 index 0000000000..e0d1143ac7 --- /dev/null +++ b/lib/dojo/cldr/nls/pl/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/pl/gregorian",{"days-standAlone-short":["niedz.","pon.","wt.","Å›r.","czw.","pt.","sob."],"months-format-narrow":["s","l","m","k","m","c","l","s","w","p","l","g"],"quarters-standAlone-narrow":["K1","K2","K3","K4"],"field-weekday":"DzieÅ„ tygodnia","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E, d.MM.yyyy","dateFormatItem-MMMEd":"E, d MMM","eraNarrow":["p.n.e.","n.e."],"dayPeriods-format-wide-earlyMorning":"nad ranem","dayPeriods-format-wide-morning":"rano","days-format-short":["niedz.","pon.","wt.","Å›r.","czw.","pt.","sob."],"dateFormat-long":"d MMMM y","months-format-wide":["stycznia","lutego","marca","kwietnia","maja","czerwca","lipca","sierpnia","wrzeÅ›nia","października","listopada","grudnia"],"dayPeriods-format-wide-evening":"wieczorem","dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, d MMMM y","dateFormatItem-Md":"d.MM","dayPeriods-format-wide-noon":"w poÅ‚udnie","dateFormatItem-yMd":"d.MM.yyyy","field-era":"Era","dateFormatItem-yM":"MM.yyyy","months-standAlone-wide":["styczeÅ„","luty","marzec","kwiecieÅ„","maj","czerwiec","lipiec","sierpieÅ„","wrzesieÅ„","październik","listopad","grudzieÅ„"],"timeFormat-short":"HH:mm","quarters-format-wide":["I kwartaÅ‚","II kwartaÅ‚","III kwartaÅ‚","IV kwartaÅ‚"],"timeFormat-long":"HH:mm:ss z","field-year":"Rok","dateFormatItem-yMMM":"LLL y","dateFormatItem-yQ":"QQQ y","dateFormatItem-yyyyMMMM":"LLLL y","field-hour":"Godzina","dateFormatItem-MMdd":"d.MM","months-format-abbr":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"dateFormatItem-yyQ":"QQQ yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"Dzisiaj","field-day-relative+1":"Jutro","field-day-relative+2":"Pojutrze","dateFormatItem-H":"HH","months-standAlone-abbr":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["I kwartaÅ‚","II kwartaÅ‚","III kwartaÅ‚","IV kwartaÅ‚"],"dateFormatItem-M":"L","days-standAlone-wide":["niedziela","poniedziaÅ‚ek","wtorek","Å›roda","czwartek","piÄ…tek","sobota"],"dateFormatItem-MMMMd":"d MMMM","dateFormatItem-yyMMM":"LLLL yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["1 kw.","2 kw.","3 kw.","4 kw."],"eraAbbr":["p.n.e.","n.e."],"field-minute":"Minuta","field-dayperiod":"Dayperiod","days-standAlone-abbr":["niedz.","pon.","wt.","Å›r.","czw.","pt.","sob."],"dayPeriods-format-wide-night":"w nocy","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"Wczoraj","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"Przedwczoraj","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d.MM","dayPeriods-format-wide-lateMorning":"przed poÅ‚udniem","dateTimeFormat-full":"{1} {0}","dateFormatItem-yMMMM":"LLLL y","field-day":"DzieÅ„","days-format-wide":["niedziela","poniedziaÅ‚ek","wtorek","Å›roda","czwartek","piÄ…tek","sobota"],"field-zone":"Strefa","dateFormatItem-yyyyMM":"MM.yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["s","l","m","k","m","c","l","s","w","p","l","g"],"field-year-relative+-1":"ZeszÅ‚y rok","field-month-relative+-1":"ZeszÅ‚y miesiÄ…c","dateFormatItem-hm":"hh:mm a","days-format-abbr":["niedz.","pon.","wt.","Å›r.","czw.","pt.","sob."],"dateFormatItem-yMMMd":"d MMM y","eraNames":["p.n.e.","n.e."],"days-format-narrow":["N","P","W","Åš","C","P","S"],"days-standAlone-narrow":["N","P","W","Åš","C","P","S"],"dateFormatItem-MMM":"LLL","field-month":"MiesiÄ…c","dayPeriods-format-wide-am":"AM","dateFormat-short":"dd.MM.yyyy","dayPeriods-format-wide-afternoon":"po poÅ‚udniu","field-second":"Sekunda","dateFormatItem-yMMMEd":"E, d MMM y","field-month-relative+0":"Bieżący miesiÄ…c","field-month-relative+1":"PrzyszÅ‚y miesiÄ…c","dateFormatItem-Ed":"E, d","field-week":"TydzieÅ„","dateFormat-medium":"d MMM y","field-year-relative+0":"Bieżący rok","field-week-relative+-1":"ZeszÅ‚y tydzieÅ„","field-year-relative+1":"PrzyszÅ‚y rok","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"hh:mm:ss a","field-week-relative+0":"Bieżący tydzieÅ„","field-week-relative+1":"PrzyszÅ‚y tydzieÅ„"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pl/hebrew.js b/lib/dojo/cldr/nls/pl/hebrew.js new file mode 100644 index 0000000000..02d3909cc4 --- /dev/null +++ b/lib/dojo/cldr/nls/pl/hebrew.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/pl/hebrew",{"dateFormatItem-yM":"MM.yyyy","dateFormatItem-yQ":"QQQ y","dateFormatItem-MMMEd":"E, d MMM","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-yQQQ":"QQQ y","days-standAlone-wide":["niedziela","poniedziaÅ‚ek","wtorek","Å›roda","czwartek","piÄ…tek","sobota"],"dateTimeFormat-short":"{1}, {0}","dateTimeFormat-medium":"{1}, {0}","months-format-abbr-leap":"Adar II","quarters-standAlone-abbr":["1 kw.","2 kw.","3 kw.","4 kw."],"months-standAlone-abbr":["Tiszri","Cheszwan","Kislew","Tewet","Szwat","Adar I","Adar","Nisan","Ijar","Siwan","Tamuz","Aw","Elul"],"dateFormatItem-Ed":"E, d","dateFormatItem-yMMM":"LLL y","days-standAlone-narrow":["N","P","W","Åš","C","P","S"],"dateFormat-long":"d MMMM y","dateFormat-medium":"d MMM y","dateFormatItem-yMd":"d.MM.yyyy","quarters-standAlone-wide":["I kwartaÅ‚","II kwartaÅ‚","III kwartaÅ‚","IV kwartaÅ‚"],"quarters-standAlone-narrow":["K1","K2","K3","K4"],"months-standAlone-wide":["Tiszri","Cheszwan","Kislew","Tewet","Szwat","Adar I","Adar","Nisan","Ijar","Siwan","Tamuz","Aw","Elul"],"dateFormatItem-MMMd":"d MMM","months-format-abbr":["Tiszri","Cheszwan","Kislew","Tewet","Szwat","Adar I","Adar","Nisan","Ijar","Siwan","Tamuz","Aw","Elul"],"quarters-format-abbr":["K1","K2","K3","K4"],"days-format-abbr":["niedz.","pon.","wt.","Å›r.","czw.","pt.","sob."],"days-format-narrow":["N","P","W","Åš","C","P","S"],"dateFormatItem-yMMMd":"d MMM y","dateFormatItem-MEd":"E, d.MM","days-standAlone-short":["niedz.","pon.","wt.","Å›r.","czw.","pt.","sob."],"dateFormatItem-hm":"hh:mm a","days-standAlone-abbr":["niedz.","pon.","wt.","Å›r.","czw.","pt.","sob."],"months-standAlone-wide-leap":"Adar II","dateFormat-short":"dd.MM.yyyy","dateFormatItem-yMMMEd":"E, d MMM y","dateFormat-full":"EEEE, d MMMM y","dateFormatItem-Md":"d.MM","dateFormatItem-yMEd":"E, d.MM.yyyy","months-format-wide":["Tiszri","Cheszwan","Kislew","Tewet","Szwat","Adar I","Adar","Nisan","Ijar","Siwan","Tamuz","Aw","Elul"],"days-format-short":["niedz.","pon.","wt.","Å›r.","czw.","pt.","sob."],"quarters-format-wide":["I kwartaÅ‚","II kwartaÅ‚","III kwartaÅ‚","IV kwartaÅ‚"],"months-format-wide-leap":"Adar II","days-format-wide":["niedziela","poniedziaÅ‚ek","wtorek","Å›roda","czwartek","piÄ…tek","sobota"],"dateFormatItem-h":"hh a"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pl/islamic.js b/lib/dojo/cldr/nls/pl/islamic.js new file mode 100644 index 0000000000..cfd01dd670 --- /dev/null +++ b/lib/dojo/cldr/nls/pl/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/pl/islamic",{"dateFormatItem-yM":"MM.yyyy","dateFormatItem-yyyyMMMEd":"E, d MMM y G","dateFormatItem-yQ":"yyyy Q","dateFormatItem-MMMEd":"E, d MMM","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-MMdd":"d.MM","days-standAlone-wide":["niedziela","poniedziaÅ‚ek","wtorek","Å›roda","czwartek","piÄ…tek","sobota"],"dateFormatItem-MMM":"LLL","dateTimeFormat-short":"{1}, {0}","dateTimeFormat-medium":"{1}, {0}","quarters-standAlone-abbr":["1 kw.","2 kw.","3 kw.","4 kw."],"dateFormatItem-y":"y","dateFormatItem-yyyy":"y G","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Dżu. I","Dżu. II","Ra.","Sza.","Ram.","Szaw.","Zu al-k.","Zu al-h."],"dateFormatItem-Ed":"E, d","dateFormatItem-yMMM":"LLL y","days-standAlone-narrow":["N","P","W","Åš","C","P","S"],"dateFormatItem-yyyyMM":"MM.yyyy G","dateFormatItem-yyyyMMMM":"LLLL y G","dateFormat-long":"d MMMM, y G","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"d MMM y G","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-yyMMM":"LLL yy G","dateFormatItem-yMd":"d.MM.yyyy","quarters-standAlone-wide":["I kwartaÅ‚","II kwartaÅ‚","III kwartaÅ‚","IV kwartaÅ‚"],"dateFormatItem-yMMMM":"LLLL y","dateFormatItem-ms":"mm:ss","quarters-standAlone-narrow":["K1","K2","K3","K4"],"months-standAlone-wide":["Muharram","Safar","Rabi I","Rabi II","Dżumada I","Dżumada II","Radżab","Szaban","Ramadan","Szawwal","Zu al-kada","Zu al-hidżdża"],"dateFormatItem-yyyyMd":"dd.MM.yyyy G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-yyyyMEd":"E, dd.MM.yyyy G","dateFormatItem-MMMd":"d MMM","dateFormatItem-yyQ":"Q y G","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Dżu. I","Dżu. II","Ra.","Sza.","Ram.","Szaw.","Zu al-k.","Zu al-h."],"dateFormatItem-H":"HH","dateFormatItem-MMMMd":"d MMMM","quarters-format-abbr":["K1","K2","K3","K4"],"days-format-abbr":["niedz.","pon.","wt.","Å›r.","czw.","pt.","sob."],"dateFormatItem-M":"L","days-format-narrow":["N","P","W","Åš","C","P","S"],"dateFormatItem-yMMMd":"d MMM y","dateFormatItem-MEd":"E, d.MM","dateFormatItem-yyyyQQQ":"G y QQQ","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-standAlone-short":["niedz.","pon.","wt.","Å›r.","czw.","pt.","sob."],"dateFormatItem-hm":"hh:mm a","days-standAlone-abbr":["niedz.","pon.","wt.","Å›r.","czw.","pt.","sob."],"dateFormat-short":"dd.MM.yyyy G","dateFormatItem-yMMMEd":"E, d MMM y","dateFormat-full":"EEEE, d MMMM, y G","dateFormatItem-Md":"d.MM","dateFormatItem-yMEd":"E, d.MM.yyyy","dateFormatItem-yyyyQ":"G y Q","months-format-wide":["Muharram","Safar","Rabi I","Rabi II","Dżumada I","Dżumada II","Radżab","Szaban","Ramadan","Szawwal","Zu al-kada","Zu al-hidżdża"],"days-format-short":["niedz.","pon.","wt.","Å›r.","czw.","pt.","sob."],"dateFormatItem-d":"d","quarters-format-wide":["I kwartaÅ‚","II kwartaÅ‚","III kwartaÅ‚","IV kwartaÅ‚"],"days-format-wide":["niedziela","poniedziaÅ‚ek","wtorek","Å›roda","czwartek","piÄ…tek","sobota"],"dateFormatItem-h":"hh a"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pl/number.js b/lib/dojo/cldr/nls/pl/number.js new file mode 100644 index 0000000000..b1f5da3dc8 --- /dev/null +++ b/lib/dojo/cldr/nls/pl/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/pl/number",{"group":" ","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","plusSign":"+","decimalFormat-long":"000 biliona","decimalFormat-short":"000 bln"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt-pt/buddhist.js b/lib/dojo/cldr/nls/pt-pt/buddhist.js new file mode 100644 index 0000000000..1e85675bed --- /dev/null +++ b/lib/dojo/cldr/nls/pt-pt/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/pt-pt/buddhist",{"dateFormatItem-yM":"MM/yyyy","dateFormatItem-yQ":"QQQ 'de' y G","dateFormatItem-MMMEd":"E, d/MM","dateFormatItem-yQQQ":"QQQ 'de' y G","days-standAlone-wide":["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],"months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-y":"y","months-standAlone-abbr":["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],"dateFormatItem-yMMM":"MM/y","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yyyyMM":"MM/yyyy","dateFormat-long":"d 'de' MMMM 'de' y","dateFormatItem-Hm":"HH:mm","dateFormatItem-yyMM":"MM/yy","dateFormat-medium":"dd/MM/yyyy","dayPeriods-format-narrow-pm":"p.m.","dateFormatItem-yyMMM":"MM/yy","dateFormatItem-yMd":"dd/MM/yyyy","quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-ms":"mm:ss","dayPeriods-format-narrow-am":"a.m.","dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-yyMMMd":"d/MM/yy","months-standAlone-wide":["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],"dateFormatItem-MMMd":"d/MM","dateFormatItem-HHmm":"HH:mm","dateFormatItem-yyMMMEd":"E, d/MM/yy","dateFormatItem-yyQ":"QQQ 'de' yy G","months-format-abbr":["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],"quarters-format-abbr":["T1","T2","T3","T4"],"days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yMMMd":"d/MM/y","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-standAlone-short":["dom","seg","ter","qua","qui","sex","sáb"],"days-standAlone-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"dayPeriods-format-abbr-pm":"p.m.","dateFormat-short":"d/M/y G","dateFormatItem-yMMMEd":"E, d/MM/y","dateFormat-full":"EEEE, d 'de' MMMM 'de' y","dateFormatItem-yMEd":"E, dd/MM/yyyy","months-format-wide":["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],"dayPeriods-format-abbr-am":"a.m.","days-format-short":["Do","Sg","Te","Qu","Qi","Sx","Sb"],"dateFormatItem-yyyyMMM":"MMM 'de' y","quarters-format-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"days-format-wide":["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt-pt/currency.js b/lib/dojo/cldr/nls/pt-pt/currency.js new file mode 100644 index 0000000000..f45942a567 --- /dev/null +++ b/lib/dojo/cldr/nls/pt-pt/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/pt-pt/currency",{"CAD_displayName":"Dólar canadiano","USD_displayName":"Dólar dos Estados Unidos"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt-pt/gregorian.js b/lib/dojo/cldr/nls/pt-pt/gregorian.js new file mode 100644 index 0000000000..73cc9fab38 --- /dev/null +++ b/lib/dojo/cldr/nls/pt-pt/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/pt-pt/gregorian",{"dateFormatItem-yM":"MM/yyyy","dateFormatItem-yQ":"QQQ 'de' yyyy","dayPeriods-format-wide-pm":"PM","dayPeriods-standAlone-abbr-pm":"p.m.","dateFormatItem-MMMEd":"E, d/MM","dateTimeFormat-full":"{1} às {0}","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ 'de' y","dateFormatItem-MMdd":"dd/MM","days-standAlone-wide":["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],"dateFormatItem-MMM":"LLL","dateTimeFormat-short":"{1}, {0}","dayPeriods-format-wide-am":"AM","dateTimeFormat-medium":"{1}, {0}","dayPeriods-standAlone-abbr-am":"a.m.","quarters-standAlone-abbr":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"dateFormatItem-y":"y","months-standAlone-abbr":["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],"dateFormatItem-Ed":"E, d","dayPeriods-standAlone-wide-pm":"p.m.","dateFormatItem-yMMM":"MM/y","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-yMMMMEd":"E, d 'de' MMMM 'de' y","field-zone":"Fuso horário","dateFormatItem-Hm":"HH:mm","dateFormatItem-yyMM":"MM/yy","dateFormatItem-Hms":"HH:mm:ss","dayPeriods-standAlone-wide-am":"a.m.","dayPeriods-format-narrow-pm":"p.m.","dateFormatItem-yyMMM":"MM/yy","dateFormatItem-yMd":"dd/MM/yyyy","quarters-standAlone-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"dateFormatItem-yMMMM":"MMMM 'de' y","dateFormatItem-yMMMMd":"d 'de' MMMM 'de' y","dateFormatItem-ms":"mm:ss","dayPeriods-format-narrow-am":"a.m.","dateTimeFormat-long":"{1} às {0}","dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-yyMMMd":"d/MM/yy","months-standAlone-wide":["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],"dateFormatItem-MMMMEd":"E, d 'de' MMMM","dateFormatItem-MMMd":"d/MM","dateFormatItem-HHmm":"HH:mm","dateFormatItem-yyMMMEd":"E, d/MM/yy","dateFormatItem-yyQ":"QQQ 'de' yy","months-format-abbr":["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],"dateFormatItem-H":"HH","dateFormatItem-MMMMd":"d 'de' MMMM","quarters-format-abbr":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"days-format-abbr":["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],"dateFormatItem-M":"L","dateFormatItem-yMMMd":"d/MM/y","dateFormatItem-MEd":"E, dd/MM","days-standAlone-short":["Do","Sg","Te","Qu","Qi","Sx","Sb"],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],"dayPeriods-format-abbr-pm":"p.m.","dateFormatItem-yMMMEd":"E, d/MM/y","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E, dd/MM/yyyy","months-format-wide":["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],"dayPeriods-format-abbr-am":"a.m.","days-format-short":["Do","Sg","Te","Qu","Qi","Sx","Sb"],"dateFormatItem-yyyyMMM":"MMM 'de' y","dateFormatItem-d":"d","quarters-format-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"days-format-wide":["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],"dateFormatItem-h":"h a"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt-pt/islamic.js b/lib/dojo/cldr/nls/pt-pt/islamic.js new file mode 100644 index 0000000000..3ffa4a3976 --- /dev/null +++ b/lib/dojo/cldr/nls/pt-pt/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/pt-pt/islamic",{"dateFormatItem-yQ":"QQQ 'de' y G","dateFormatItem-MMMEd":"E, d/MM","dateTimeFormat-full":"{1} às {0}","dateFormatItem-yQQQ":"QQQ 'de' y G","days-standAlone-wide":["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],"dateTimeFormat-short":"{1}, {0}","dateTimeFormat-medium":"{1}, {0}","quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-yMMM":"MM/y","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yyyyMM":"MM/yyyy","dateFormat-long":"d 'de' MMMM 'de' y","dateFormatItem-Hm":"HH:mm","dateFormatItem-yyMM":"MM/yy","dateFormat-medium":"dd/MM/yyyy","dayPeriods-format-narrow-pm":"p.m.","dateFormatItem-yyMMM":"MM/yy","dateFormatItem-yMd":"dd/MM/yyyy","quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-ms":"mm:ss","dayPeriods-format-narrow-am":"a.m.","dateTimeFormat-long":"{1} às {0}","dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-yyMMMd":"d/MM/yy","dateFormatItem-MMMd":"d/MM","dateFormatItem-HHmm":"HH:mm","dateFormatItem-yyMMMEd":"E, d/MM/yy","dateFormatItem-yyQ":"QQQ 'de' yy G","quarters-format-abbr":["T1","T2","T3","T4"],"days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yMMMd":"d/MM/y","days-standAlone-short":["dom","seg","ter","qua","qui","sex","sáb"],"days-standAlone-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"dayPeriods-format-abbr-pm":"p.m.","dateFormat-short":"d/M/y G","dateFormatItem-yMMMEd":"E, d/MM/y","dateFormat-full":"EEEE, d 'de' MMMM 'de' y","dayPeriods-format-abbr-am":"a.m.","days-format-short":["Do","Sg","Te","Qu","Qi","Sx","Sb"],"dateFormatItem-yyyyMMM":"MMM 'de' y","quarters-format-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"days-format-wide":["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt-pt/number.js b/lib/dojo/cldr/nls/pt-pt/number.js new file mode 100644 index 0000000000..412773ebff --- /dev/null +++ b/lib/dojo/cldr/nls/pt-pt/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/pt-pt/number",{"group":" ","decimalFormat-long":"000 biliões","currencyFormat":"#,##0.00 ¤","decimalFormat-short":"000 Bi","decimal":","}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt/buddhist.js b/lib/dojo/cldr/nls/pt/buddhist.js new file mode 100644 index 0000000000..dff14ee5f4 --- /dev/null +++ b/lib/dojo/cldr/nls/pt/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/pt/buddhist",{"dateFormatItem-yM":"MM/y G","dateFormatItem-yQ":"G y Q","dateFormatItem-MMMEd":"E, d 'de' MMM","dateFormatItem-yQQQ":"G y QQQ","dateFormatItem-MMdd":"dd/MM","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-y":"y G","months-standAlone-abbr":["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],"dateFormatItem-Ed":"E, d","dateFormatItem-yMMM":"MMM 'de' y G","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yyyyMM":"MM/y G","dateFormat-long":"d 'de' MMMM 'de' y G","dateFormatItem-Hm":"HH'h'mm","dateFormatItem-yyMM":"MM/yy G","dateFormat-medium":"dd/MM/yyyy G","dayPeriods-format-narrow-pm":"p","dateFormatItem-yyMMM":"MMM 'de' yy G","dateFormatItem-yMd":"dd/MM/yyyy G","quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-ms":"mm'min'ss's'","dayPeriods-format-narrow-am":"a","dateFormatItem-HHmmss":"HH'h'mm'min'ss's'","dateFormatItem-yyMMMd":"d 'de' MMM 'de' yy G","months-standAlone-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-HHmm":"HH'h'mm","dateFormatItem-yyMMMEd":"E, d 'de' MMM 'de' yy G","dateFormatItem-yyQ":"Q yy G","months-format-abbr":["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],"quarters-format-abbr":["T1","T2","T3","T4"],"days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"dateFormatItem-M":"L","days-format-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yMMMd":"d 'de' MMM 'de' y G","dateFormatItem-MEd":"E, dd/MM","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-standAlone-short":["dom","seg","ter","qua","qui","sex","sáb"],"days-standAlone-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"dateFormat-short":"d/M/yyyy","dateFormatItem-yMMMEd":"E, d 'de' MMM 'de' y G","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E, dd/MM/yyyy G","months-format-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"days-format-short":["dom","seg","ter","qua","qui","sex","sáb"],"dateFormatItem-yyyyMMM":"MMM 'de' y G","dateFormatItem-d":"d","quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt/currency.js b/lib/dojo/cldr/nls/pt/currency.js new file mode 100644 index 0000000000..3bdfb3797c --- /dev/null +++ b/lib/dojo/cldr/nls/pt/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/pt/currency",{"HKD_displayName":"Dólar de Hong Kong","CHF_displayName":"Franco suíço","JPY_symbol":"JPÂ¥","CAD_displayName":"Dólar canadense","HKD_symbol":"HK$","CNY_displayName":"Yuan chinês","USD_symbol":"US$","AUD_displayName":"Dólar australiano","JPY_displayName":"Iene japonês","CAD_symbol":"CA$","USD_displayName":"Dólar norte-americano","EUR_symbol":"€","CNY_symbol":"CNÂ¥","GBP_displayName":"Libra esterlina britânica","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"Euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt/gregorian.js b/lib/dojo/cldr/nls/pt/gregorian.js new file mode 100644 index 0000000000..02bd0c0cc1 --- /dev/null +++ b/lib/dojo/cldr/nls/pt/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/pt/gregorian",{"days-standAlone-short":["dom","seg","ter","qua","qui","sex","sáb"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Dia da semana","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yyMMMEd":"E, d 'de' MMM 'de' yy","dateFormatItem-yMEd":"E, dd/MM/yyyy","dateFormatItem-MMMEd":"E, d 'de' MMM","eraNarrow":["a.C.","d.C."],"dayPeriods-format-wide-morning":"manhã","days-format-short":["dom","seg","ter","qua","qui","sex","sáb"],"dateFormat-long":"d 'de' MMMM 'de' y","months-format-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, d 'de' MMMM 'de' y","dateFormatItem-Md":"d/M","dayPeriods-format-abbr-am":"AM","dayPeriods-format-wide-noon":"meio-dia","dateFormatItem-yMd":"dd/MM/yyyy","field-era":"Era","dateFormatItem-yM":"MM/yyyy","months-standAlone-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"timeFormat-short":"HH:mm","quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"timeFormat-long":"HH:mm:ss z","field-year":"Ano","dateFormatItem-yMMM":"MMM 'de' y","dateFormatItem-yQ":"yyyy Q","field-hour":"Hora","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"Hoje","field-day-relative+1":"Amanhã","field-day-relative+2":"Depois de amanhã","dateFormatItem-H":"HH","months-standAlone-abbr":["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-M":"L","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-yyyyMMM":"MMM 'de' y","dateFormatItem-yyMMM":"MMM 'de' yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["a.C.","d.C."],"field-minute":"Minuto","field-dayperiod":"Período do dia","days-standAlone-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"dayPeriods-format-wide-night":"noite","dateFormatItem-yyMMMd":"d 'de' MMM 'de' yy","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"Ontem","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"a","field-day-relative+-2":"Anteontem","dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-MEd":"E, dd/MM","dateTimeFormat-full":"{1} {0}","field-day":"Dia","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"field-zone":"Fuso","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"Ano passado","field-month-relative+-1":"Mês passado","dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"h:mm a","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"dateFormatItem-yMMMd":"d 'de' MMM 'de' y","eraNames":["Antes de Cristo","Ano do Senhor"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-MMM":"LLL","field-month":"Mês","dateFormatItem-HHmm":"HH:mm","dayPeriods-format-wide-am":"AM","dateFormat-short":"dd/MM/yy","dayPeriods-format-wide-afternoon":"tarde","field-second":"Segundo","dateFormatItem-yMMMEd":"E, d 'de' MMM 'de' y","field-month-relative+0":"Este mês","field-month-relative+1":"Próximo mês","dateFormatItem-Ed":"E, d","field-week":"Semana","dateFormat-medium":"dd/MM/yyyy","field-year-relative+0":"Este ano","field-week-relative+-1":"Semana passada","field-year-relative+1":"Próximo ano","dayPeriods-format-narrow-pm":"p","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","field-week-relative+0":"Esta semana","field-week-relative+1":"Próxima semana"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt/hebrew.js b/lib/dojo/cldr/nls/pt/hebrew.js new file mode 100644 index 0000000000..9a0c1a88fc --- /dev/null +++ b/lib/dojo/cldr/nls/pt/hebrew.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/pt/hebrew",{"dateFormatItem-yM":"MM/yyyy","dateFormatItem-yQ":"yyyy Q","months-standAlone-abbr-leap":"Adar II","dateFormatItem-MMMEd":"E, d 'de' MMM","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"months-format-abbr-leap":"Adar II","quarters-standAlone-abbr":["T1","T2","T3","T4"],"months-standAlone-abbr":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"dateFormatItem-Ed":"E, d","dateFormatItem-yMMM":"MMM 'de' y","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"dateFormat-long":"d 'de' MMMM 'de' y","dateFormat-medium":"dd/MM/yyyy","dayPeriods-format-narrow-pm":"p","dateFormatItem-yMd":"dd/MM/yyyy","quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dayPeriods-format-narrow-am":"a","months-standAlone-wide":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"dateFormatItem-MMMd":"d 'de' MMM","months-format-abbr":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"quarters-format-abbr":["T1","T2","T3","T4"],"days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yMMMd":"d 'de' MMM 'de' y","dateFormatItem-MEd":"E, dd/MM","days-standAlone-short":["dom","seg","ter","qua","qui","sex","sáb"],"days-standAlone-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"months-standAlone-wide-leap":"Adar II","dateFormat-short":"dd/MM/yy","dateFormatItem-yMMMEd":"E, d 'de' MMM 'de' y","dateFormat-full":"EEEE, d 'de' MMMM 'de' y","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E, dd/MM/yyyy","months-format-wide":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"days-format-short":["dom","seg","ter","qua","qui","sex","sáb"],"quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"months-format-wide-leap":"Adar II","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt/islamic.js b/lib/dojo/cldr/nls/pt/islamic.js new file mode 100644 index 0000000000..ca60b15a37 --- /dev/null +++ b/lib/dojo/cldr/nls/pt/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/pt/islamic",{"dateFormatItem-yM":"MM/yyyy","dateFormatItem-yyyyMMMEd":"E, d 'de' MMM 'de' y G","dateFormatItem-yQ":"yyyy Q","dateFormatItem-MMMEd":"E, d 'de' MMM","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-MMdd":"dd/MM","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-MMM":"LLL","quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-y":"y","dateFormatItem-yyyy":"y G","dateFormatItem-Ed":"E, d","dateFormatItem-yMMM":"MMM 'de' y","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yyyyMM":"MM/y G","dateFormat-long":"d 'de' MMMM 'de' y G","dateFormatItem-Hm":"HH'h'mm","dateFormatItem-yyMM":"MM/yy G","dateFormat-medium":"dd/MM/yyyy G","dateFormatItem-Hms":"HH:mm:ss","dayPeriods-format-narrow-pm":"p","dateFormatItem-yyMMM":"MMM 'de' yy G","dateFormatItem-yMd":"dd/MM/yyyy","quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-ms":"mm'min'ss's'","dayPeriods-format-narrow-am":"a","dateFormatItem-HHmmss":"HH'h'mm'min'ss's'","dateFormatItem-yyMMMd":"d 'de' MMM 'de' yy G","dateFormatItem-yyyyMd":"dd/MM/yyyy G","dateFormatItem-yyyyMMMd":"d 'de' MMM 'de' y G","dateFormatItem-yyyyMEd":"E, dd/MM/yyyy G","dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-HHmm":"HH'h'mm","dateFormatItem-yyMMMEd":"E, d 'de' MMM 'de' yy G","dateFormatItem-yyQ":"Q yy G","dateFormatItem-H":"HH","quarters-format-abbr":["T1","T2","T3","T4"],"days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"dateFormatItem-M":"L","days-format-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yMMMd":"d 'de' MMM 'de' y","dateFormatItem-MEd":"E, dd/MM","dateFormatItem-yyyyQQQ":"G y QQQ","days-standAlone-short":["dom","seg","ter","qua","qui","sex","sáb"],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"dateFormat-short":"d/M/yyyy","dateFormatItem-yyyyM":"MM/y G","dateFormatItem-yMMMEd":"E, d 'de' MMM 'de' y","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E, dd/MM/yyyy","dateFormatItem-yyyyQ":"G y Q","days-format-short":["dom","seg","ter","qua","qui","sex","sáb"],"dateFormatItem-yyyyMMM":"MMM 'de' y G","dateFormatItem-d":"d","quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-h":"h a"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt/number.js b/lib/dojo/cldr/nls/pt/number.js new file mode 100644 index 0000000000..43c35a067e --- /dev/null +++ b/lib/dojo/cldr/nls/pt/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/pt/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","decimalFormat-long":"000 trilhões","decimalFormat-short":"000 tri"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ro/buddhist.js b/lib/dojo/cldr/nls/ro/buddhist.js new file mode 100644 index 0000000000..b3e1db661f --- /dev/null +++ b/lib/dojo/cldr/nls/ro/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ro/buddhist",{"dateFormatItem-yM":"MM.yyyy","dateFormatItem-yQ":"'trimestrul' Q y","eraNames":["era budistă"],"dateFormatItem-MMMEd":"E d MMM","dateFormatItem-yQQQ":"QQQ y","days-standAlone-wide":["duminică","luni","marÈ›i","miercuri","joi","vineri","sâmbătă"],"months-standAlone-narrow":["I","F","M","A","M","I","I","A","S","O","N","D"],"quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-y":"y","months-standAlone-abbr":["ian.","feb.","mar.","apr.","mai","iun.","iul.","aug.","sept.","oct.","nov.","dec."],"dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["D","L","M","M","J","V","S"],"eraAbbr":["e.b."],"dateFormat-long":"d MMMM y G","dateFormat-medium":"d MMM y G","dateFormatItem-yMd":"dd.MM.yyyy","quarters-standAlone-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"quarters-standAlone-narrow":["T1","T2","T3","T4"],"months-standAlone-wide":["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"],"dateFormatItem-MMMd":"d MMM","quarters-format-narrow":["1","2","3","T4"],"months-format-abbr":["ian.","feb.","mar.","apr.","mai","iun.","iul.","aug.","sept.","oct.","nov.","dec."],"quarters-format-abbr":["trim. I","trim. II","trim. III","trim. IV"],"days-format-abbr":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"days-format-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-yMMMd":"d MMM y","dateFormatItem-MEd":"E, dd.MM","months-format-narrow":["I","F","M","A","M","I","I","A","S","O","N","D"],"days-standAlone-short":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"days-standAlone-abbr":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"dateFormat-short":"d/M/yyyy","dateFormatItem-yMMMEd":"E, d MMM y","dateFormat-full":"EEEE, d MMMM, y G","dateFormatItem-Md":"dd.MM","dateFormatItem-yMEd":"E, dd.MM.yyyy","months-format-wide":["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"],"days-format-short":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"quarters-format-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"days-format-wide":["duminică","luni","marÈ›i","miercuri","joi","vineri","sâmbătă"],"eraNarrow":["e.b."]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ro/currency.js b/lib/dojo/cldr/nls/ro/currency.js new file mode 100644 index 0000000000..881ffd6184 --- /dev/null +++ b/lib/dojo/cldr/nls/ro/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ro/currency",{"HKD_displayName":"dolar Hong Kong","CHF_displayName":"franc elveÈ›ian","CAD_displayName":"dolar canadian","CNY_displayName":"yuan renminbi chinezesc","USD_symbol":"$","AUD_displayName":"dolar australian","JPY_displayName":"yen japonez","USD_displayName":"dolar american","GBP_displayName":"liră sterlină","EUR_displayName":"euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ro/gregorian.js b/lib/dojo/cldr/nls/ro/gregorian.js new file mode 100644 index 0000000000..f4b5a66393 --- /dev/null +++ b/lib/dojo/cldr/nls/ro/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ro/gregorian",{"days-standAlone-short":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"months-format-narrow":["I","F","M","A","M","I","I","A","S","O","N","D"],"quarters-standAlone-narrow":["T1","T2","T3","T4"],"field-weekday":"zi a săptămânii","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E, dd.MM.yyyy","dateFormatItem-MMMEd":"E, d MMM","eraNarrow":["î.Hr.","d.Hr."],"days-format-short":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"dateFormat-long":"d MMMM y","months-format-wide":["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"],"dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, d MMMM y","dateFormatItem-Md":"dd.MM","dateFormatItem-yMd":"dd.MM.yyyy","field-era":"eră","dateFormatItem-yM":"MM.yyyy","months-standAlone-wide":["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"],"timeFormat-short":"HH:mm","quarters-format-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"timeFormat-long":"HH:mm:ss z","field-year":"an","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"'trimestrul' Q y","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"oră","dateFormatItem-MMdd":"dd.MM","months-format-abbr":["ian.","feb.","mar.","apr.","mai","iun.","iul.","aug.","sept.","oct.","nov.","dec."],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"azi","field-day-relative+1":"mâine","field-day-relative+2":"poimâine","dateFormatItem-H":"HH","months-standAlone-abbr":["ian.","feb.","mar.","apr.","mai","iun.","iul.","aug.","sept.","oct.","nov.","dec."],"quarters-format-abbr":["trim. I","trim. II","trim. III","trim. IV"],"quarters-standAlone-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"dateFormatItem-M":"L","days-standAlone-wide":["duminică","luni","marÈ›i","miercuri","joi","vineri","sâmbătă"],"dateFormatItem-MMMMd":"d MMMM","dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["î.Hr.","d.Hr."],"field-minute":"minut","field-dayperiod":"perioada zilei","days-standAlone-abbr":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","T4"],"field-day-relative+-1":"ieri","dateTimeFormat-long":"{1}, {0}","field-day-relative+-2":"alaltăieri","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, dd.MM","dateTimeFormat-full":"{1}, {0}","dateFormatItem-yMMMM":"MMMM y","field-day":"zi","days-format-wide":["duminică","luni","marÈ›i","miercuri","joi","vineri","sâmbătă"],"field-zone":"zonă","dateFormatItem-yyyyMM":"MM.yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["I","F","M","A","M","I","I","A","S","O","N","D"],"field-year-relative+-1":"Anul trecut","field-month-relative+-1":"Luna trecută","dateFormatItem-yyMM":"MM.yy","dateFormatItem-hm":"h:mm a","days-format-abbr":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"dateFormatItem-yMMMd":"d MMM y","eraNames":["înainte de Hristos","după Hristos"],"days-format-narrow":["D","L","M","M","J","V","S"],"days-standAlone-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-MMM":"LLL","field-month":"lună","dayPeriods-format-wide-am":"AM","dateFormatItem-MMMMEd":"E, d MMMM","dateFormat-short":"dd.MM.yyyy","field-second":"secundă","dateFormatItem-yMMMEd":"E, d MMM y","field-month-relative+0":"Luna aceasta","field-month-relative+1":"Luna viitoare","dateFormatItem-Ed":"E d","field-week":"săptămână","dateFormat-medium":"dd.MM.yyyy","field-year-relative+0":"Anul acesta","field-week-relative+-1":"Săptămâna trecută","field-year-relative+1":"Anul viitor","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","field-week-relative+0":"Săptămâna aceasta","field-week-relative+1":"Săptămâna viitoare"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ro/hebrew.js b/lib/dojo/cldr/nls/ro/hebrew.js new file mode 100644 index 0000000000..4111ab9189 --- /dev/null +++ b/lib/dojo/cldr/nls/ro/hebrew.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ro/hebrew",{"dateFormatItem-yM":"MM.yyyy","dateFormatItem-yQ":"'trimestrul' Q y","months-standAlone-abbr-leap":"Adar II","dateFormatItem-MMMEd":"E, d MMM","dateTimeFormat-full":"{1}, {0}","dateFormatItem-yQQQ":"QQQ y","days-standAlone-wide":["duminică","luni","marÈ›i","miercuri","joi","vineri","sâmbătă"],"dateTimeFormat-short":"{1}, {0}","dateTimeFormat-medium":"{1}, {0}","months-format-abbr-leap":"Adar II","quarters-standAlone-abbr":["T1","T2","T3","T4"],"months-standAlone-abbr":["TiÈ™rei","HeÈ™van","Kislev","Tevet","Șevat","Adar I","Adar","Nisan","Iyar","Sivan","Tammuz","Av","Elul"],"dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["D","L","M","M","J","V","S"],"dateFormat-long":"d MMMM y","dateFormat-medium":"dd.MM.yyyy","dateFormatItem-yMd":"dd.MM.yyyy","quarters-standAlone-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"quarters-standAlone-narrow":["T1","T2","T3","T4"],"dateTimeFormat-long":"{1}, {0}","months-standAlone-wide":["TiÈ™rei","HeÈ™van","Kislev","Tevet","Șevat","Adar I","Adar","Nisan","Iyar","Sivan","Tammuz","Av","Elul"],"dateFormatItem-MMMd":"d MMM","quarters-format-narrow":["1","2","3","T4"],"months-format-abbr":["TiÈ™rei","HeÈ™van","Kislev","Tevet","Șevat","Adar I","Adar","Nisan","Iyar","Sivan","Tammuz","Av","Elul"],"quarters-format-abbr":["trim. I","trim. II","trim. III","trim. IV"],"days-format-abbr":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"days-format-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-yMMMd":"d MMM y","dateFormatItem-MEd":"E, dd.MM","days-standAlone-short":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"days-standAlone-abbr":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"months-standAlone-wide-leap":"Adar II","dateFormat-short":"dd.MM.yyyy","dateFormatItem-yMMMEd":"E, d MMM y","dateFormat-full":"EEEE, d MMMM y","dateFormatItem-Md":"dd.MM","dateFormatItem-yMEd":"E, dd.MM.yyyy","months-format-wide":["TiÈ™rei","HeÈ™van","Kislev","Tevet","Șevat","Adar I","Adar","Nisan","Iyar","Sivan","Tammuz","Av","Elul"],"days-format-short":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"quarters-format-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"months-format-wide-leap":"Adar II","days-format-wide":["duminică","luni","marÈ›i","miercuri","joi","vineri","sâmbătă"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ro/islamic.js b/lib/dojo/cldr/nls/ro/islamic.js new file mode 100644 index 0000000000..0aed871596 --- /dev/null +++ b/lib/dojo/cldr/nls/ro/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ro/islamic",{"quarters-standAlone-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"quarters-format-abbr":["trim. I","trim. II","trim. III","trim. IV"],"dateFormatItem-yMd":"dd.MM.yyyy","dateFormat-medium":"dd.MM.yyyy","dateFormatItem-MMMEd":"E, d MMM","quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-MEd":"E, dd.MM","dateFormatItem-yMEd":"E, dd.MM.yyyy","dateTimeFormat-medium":"{1}, {0}","dateFormatItem-yMMMd":"d MMM y","quarters-format-narrow":["1","2","3","T4"],"days-format-short":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"dateFormatItem-Md":"dd.MM","days-standAlone-narrow":["D","L","M","M","J","V","S"],"dateTimeFormat-long":"{1}, {0}","dateFormatItem-yQQQ":"QQQ y","days-standAlone-short":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"quarters-standAlone-narrow":["T1","T2","T3","T4"],"dateFormat-long":"d MMMM y","dateFormat-short":"dd.MM.yyyy","dateFormatItem-yMMMEd":"E, d MMM y","days-standAlone-wide":["duminică","luni","marÈ›i","miercuri","joi","vineri","sâmbătă"],"dateTimeFormat-short":"{1}, {0}","dateTimeFormat-full":"{1}, {0}","days-format-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-yM":"MM.yyyy","days-standAlone-abbr":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"days-format-wide":["duminică","luni","marÈ›i","miercuri","joi","vineri","sâmbătă"],"dateFormatItem-yQ":"'trimestrul' Q y","dateFormatItem-yMMM":"MMM y","quarters-format-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"dateFormat-full":"EEEE, d MMMM y","dateFormatItem-MMMd":"d MMM","days-format-abbr":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"dateFormatItem-Ed":"E d"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ro/number.js b/lib/dojo/cldr/nls/ro/number.js new file mode 100644 index 0000000000..77447318c0 --- /dev/null +++ b/lib/dojo/cldr/nls/ro/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ro/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 trilioane","decimalFormat-short":"000 T"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ru/buddhist.js b/lib/dojo/cldr/nls/ru/buddhist.js new file mode 100644 index 0000000000..fb6dd2a6e1 --- /dev/null +++ b/lib/dojo/cldr/nls/ru/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ru/buddhist",{"dateFormatItem-yM":"MM.y G","dateFormatItem-yQ":"QQQ y 'г'.","dayPeriods-format-wide-pm":"поÑле полуднÑ","dateFormatItem-MMMEd":"ccc, d MMM","dateFormatItem-yQQQ":"QQQ y G","dateFormatItem-MMdd":"dd.MM","days-standAlone-wide":["ВоÑкреÑенье","Понедельник","Вторник","Среда","Четверг","ПÑтница","Суббота"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["Я","Ф","М","Ð","М","И","И","Ð","С","О","Ð","Д"],"dateFormatItem-Gy":"y G","dayPeriods-format-wide-am":"до полуднÑ","quarters-standAlone-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"dateFormatItem-y":"y G","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-yyyy":"y G","months-standAlone-abbr":["Янв.","Февр.","Март","Ðпр.","Май","Июнь","Июль","Ðвг.","Сент.","Окт.","ÐоÑб.","Дек."],"dateFormatItem-Ed":"E, d","dateFormatItem-yMMM":"LLL y G","dateFormatItem-yyyyLLLL":"LLLL y G","days-standAlone-narrow":["Ð’","П","Ð’","С","Ч","П","С"],"dateFormatItem-yyyyMM":"MM.yyyy G","dateFormatItem-yyyyMMMM":"LLLL y G","dateFormat-long":"d MMMM y 'г'. G","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","dateFormatItem-yyMM":"MM.yy G","dateFormat-medium":"dd.MM.yyyy G","dateFormatItem-Hms":"H:mm:ss","dayPeriods-format-narrow-pm":"пп","dateFormatItem-yyMMM":"LLL yy G","dateFormatItem-yMd":"dd.MM.y G","quarters-standAlone-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"dateFormatItem-ms":"mm:ss","dateFormatItem-yyyyQQQQ":"QQQQ y 'г'. G","dayPeriods-format-narrow-am":"дп","months-standAlone-wide":["Январь","Февраль","Март","Ðпрель","Май","Июнь","Июль","ÐвгуÑÑ‚","СентÑбрь","ОктÑбрь","ÐоÑбрь","Декабрь"],"dateFormatItem-MMMd":"d MMM","dateFormatItem-yyMMMEd":"E, d MMM yy G","dateFormatItem-yyQ":"Q yy G","dateFormatItem-E":"ccc","timeFormat-long":"H:mm:ss z","months-format-abbr":["Ñнв.","февр.","марта","апр.","маÑ","июнÑ","июлÑ","авг.","Ñент.","окт.","ноÑб.","дек."],"dateFormatItem-H":"H","timeFormat-short":"H:mm","quarters-format-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"days-format-abbr":["вÑ","пн","вт","ÑÑ€","чт","пт","Ñб"],"dateFormatItem-M":"L","days-format-narrow":["вÑ","пн","вт","ÑÑ€","чт","пт","Ñб"],"dateFormatItem-yMMMd":"d MMM y G","dateFormatItem-MEd":"E, dd.MM","months-format-narrow":["Я","Ф","М","Ð","М","И","И","Ð","С","О","Ð","Д"],"days-standAlone-short":["вÑ","пн","вт","ÑÑ€","чт","пт","Ñб"],"days-standAlone-abbr":["Ð’Ñ","Пн","Ð’Ñ‚","Ср","Чт","Пт","Сб"],"dayPeriods-format-abbr-pm":"поÑле полуднÑ","dateFormat-short":"dd.MM.yy G","dateFormatItem-yMMMEd":"E, d MMM y G","dateFormat-full":"EEEE, d MMMM y 'г'. G","dateFormatItem-Md":"dd.MM","dateFormatItem-yMEd":"E, dd.MM.y G","months-format-wide":["ÑнварÑ","февралÑ","марта","апрелÑ","маÑ","июнÑ","июлÑ","авгуÑта","ÑентÑбрÑ","октÑбрÑ","ноÑбрÑ","декабрÑ"],"dayPeriods-format-abbr-am":"до полуднÑ","days-format-short":["вÑ","пн","вт","ÑÑ€","чт","пт","Ñб"],"dateFormatItem-d":"d","quarters-format-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"days-format-wide":["воÑкреÑенье","понедельник","вторник","Ñреда","четверг","пÑтница","Ñуббота"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ru/currency.js b/lib/dojo/cldr/nls/ru/currency.js new file mode 100644 index 0000000000..ed810acef4 --- /dev/null +++ b/lib/dojo/cldr/nls/ru/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ru/currency",{"HKD_displayName":"ГонконгÑкий доллар","CHF_displayName":"ШвейцарÑкий франк","JPY_symbol":"Â¥","CAD_displayName":"КанадÑкий доллар","CNY_displayName":"Юань Ренминби","USD_symbol":"$","AUD_displayName":"ÐвÑтралийÑкий доллар","JPY_displayName":"ЯпонÑÐºÐ°Ñ Ð¸ÐµÐ½Ð°","USD_displayName":"Доллар СШÐ","GBP_displayName":"ÐнглийÑкий фунт Ñтерлингов","EUR_displayName":"Евро"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ru/gregorian.js b/lib/dojo/cldr/nls/ru/gregorian.js new file mode 100644 index 0000000000..e34b3d60db --- /dev/null +++ b/lib/dojo/cldr/nls/ru/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ru/gregorian",{"days-standAlone-short":["вÑ","пн","вт","ÑÑ€","чт","пт","Ñб"],"months-format-narrow":["Я","Ф","М","Ð","М","И","И","Ð","С","О","Ð","Д"],"field-weekday":"День недели","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yyMMMEd":"E, d MMM yy","dateFormatItem-yMEd":"ccc, d.MM.y 'г'.","dateFormatItem-yyyyLLLL":"LLLL y","dateFormatItem-MMMEd":"ccc, d MMM","eraNarrow":["до н.Ñ.","н.Ñ."],"days-format-short":["вÑ","пн","вт","ÑÑ€","чт","пт","Ñб"],"dateFormat-long":"d MMMM y 'г'.","months-format-wide":["ÑнварÑ","февралÑ","марта","апрелÑ","маÑ","июнÑ","июлÑ","авгуÑта","ÑентÑбрÑ","октÑбрÑ","ноÑбрÑ","декабрÑ"],"dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"поÑле полуднÑ","dateFormat-full":"EEEE, d MMMM y 'г'.","dateFormatItem-Md":"dd.MM","dayPeriods-format-abbr-am":"до полуднÑ","dateFormatItem-yMd":"dd.MM.y","dateFormatItem-yM":"MM.y","field-era":"Эра","months-standAlone-wide":["Январь","Февраль","Март","Ðпрель","Май","Июнь","Июль","ÐвгуÑÑ‚","СентÑбрь","ОктÑбрь","ÐоÑбрь","Декабрь"],"timeFormat-short":"H:mm","quarters-format-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"timeFormat-long":"H:mm:ss z","dateFormatItem-yMMM":"LLL y","dateFormatItem-yQ":"QQQ y 'г'.","field-year":"Год","dateFormatItem-MMdd":"dd.MM","dateFormatItem-yyyyMMMM":"LLLL y","field-hour":"ЧаÑ","months-format-abbr":["Ñнв.","февр.","марта","апр.","маÑ","июнÑ","июлÑ","авг.","Ñент.","окт.","ноÑб.","дек."],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-E":"ccc","field-day-relative+0":"СегоднÑ","field-day-relative+1":"Завтра","field-day-relative+2":"ПоÑлезавтра","dateFormatItem-H":"H","months-standAlone-abbr":["Янв.","Февр.","Март","Ðпр.","Май","Июнь","Июль","Ðвг.","Сент.","Окт.","ÐоÑб.","Дек."],"quarters-format-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"quarters-standAlone-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"dateFormatItem-M":"L","days-standAlone-wide":["ВоÑкреÑенье","Понедельник","Вторник","Среда","Четверг","ПÑтница","Суббота"],"dateFormatItem-yyMMM":"LLL yy","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","quarters-standAlone-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"eraAbbr":["до н.Ñ.","н.Ñ."],"field-minute":"Минута","field-dayperiod":"ДП/ПП","days-standAlone-abbr":["Ð’Ñ","Пн","Ð’Ñ‚","Ср","Чт","Пт","Сб"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"Вчера","dateFormatItem-h":"h a","dateTimeFormat-long":"{1}, {0}","dayPeriods-format-narrow-am":"дп","field-day-relative+-2":"Позавчера","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, dd.MM","dateTimeFormat-full":"{1}, {0}","field-day":"День","days-format-wide":["воÑкреÑенье","понедельник","вторник","Ñреда","четверг","пÑтница","Ñуббота"],"field-zone":"ЧаÑовой поÑÑ","dateFormatItem-yyyyMM":"MM.yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["Я","Ф","М","Ð","М","И","И","Ð","С","О","Ð","Д"],"field-year-relative+-1":"Ð’ прошлом году","field-month-relative+-1":"Ð’ прошлом меÑÑце","dateFormatItem-yyMM":"MM.yy","dateFormatItem-hm":"h:mm a","dayPeriods-format-abbr-pm":"поÑле полуднÑ","days-format-abbr":["вÑ","пн","вт","ÑÑ€","чт","пт","Ñб"],"dateFormatItem-yMMMd":"d MMM y 'г'.","eraNames":["до н.Ñ.","н.Ñ."],"days-format-narrow":["вÑ","пн","вт","ÑÑ€","чт","пт","Ñб"],"days-standAlone-narrow":["Ð’","П","Ð’","С","Ч","П","С"],"dateFormatItem-MMM":"LLL","field-month":"МеÑÑц","dayPeriods-format-wide-am":"до полуднÑ","dateFormat-short":"dd.MM.yy","field-second":"Секунда","dateFormatItem-yMMMEd":"E, d MMM y","field-month-relative+0":"Ð’ Ñтом меÑÑце","field-month-relative+1":"Ð’ Ñледующем меÑÑце","dateFormatItem-Ed":"ccc, d","field-week":"ÐеделÑ","dateFormat-medium":"dd MMM y 'г'.","field-year-relative+0":"Ð’ Ñтом году","field-week-relative+-1":"Ðа прошлой неделе","field-year-relative+1":"Ð’ Ñледующем году","dayPeriods-format-narrow-pm":"пп","dateFormatItem-yyyyQQQQ":"QQQQ y 'г'.","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yyyy":"y","field-week-relative+0":"Ðа Ñтой неделе","field-week-relative+1":"Ðа Ñледующей неделе"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ru/hebrew.js b/lib/dojo/cldr/nls/ru/hebrew.js new file mode 100644 index 0000000000..2e69db990f --- /dev/null +++ b/lib/dojo/cldr/nls/ru/hebrew.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ru/hebrew",{"dateFormatItem-yM":"MM.y","dateFormatItem-yQ":"QQQ y 'г'.","months-standAlone-abbr-leap":"Ðдар II","dayPeriods-format-wide-pm":"поÑле полуднÑ","dateFormatItem-MMMEd":"ccc, d MMM","dateTimeFormat-full":"{1}, {0}","days-standAlone-wide":["ВоÑкреÑенье","Понедельник","Вторник","Среда","Четверг","ПÑтница","Суббота"],"dateTimeFormat-short":"{1}, {0}","dayPeriods-format-wide-am":"до полуднÑ","dateTimeFormat-medium":"{1}, {0}","months-format-abbr-leap":"Ðдар II","quarters-standAlone-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"timeFormat-full":"H:mm:ss zzzz","months-standAlone-abbr":["Тишрей","Хешван","КиÑлев","Тевет","Шеват","Ðдар I","Ðдар","ÐиÑан","ИÑÑ€","Сиван","Таммуз","Ðв","Элул"],"dateFormatItem-Ed":"ccc, d","dateFormatItem-yMMM":"LLL y","days-standAlone-narrow":["Ð’","П","Ð’","С","Ч","П","С"],"dateFormat-long":"d MMMM y 'г'.","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","dateFormat-medium":"dd MMM y 'г'.","dateFormatItem-Hms":"H:mm:ss","dayPeriods-format-narrow-pm":"пп","dateFormatItem-yMd":"dd.MM.y","quarters-standAlone-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"dayPeriods-format-narrow-am":"дп","dateTimeFormat-long":"{1}, {0}","months-standAlone-wide":["Тишрей","Хешван","КиÑлев","Тевет","Шеват","Ðдар I","Ðдар","ÐиÑан","ИÑÑ€","Сиван","Таммуз","Ðв","Элул"],"dateFormatItem-MMMd":"d MMM","timeFormat-long":"H:mm:ss z","months-format-abbr":["Тишрей","Хешван","КиÑлев","Тевет","Шеват","Ðдар I","Ðдар","ÐиÑан","ИÑÑ€","Сиван","Таммуз","Ðв","Элул"],"timeFormat-short":"H:mm","dateFormatItem-H":"H","quarters-format-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"days-format-abbr":["вÑ","пн","вт","ÑÑ€","чт","пт","Ñб"],"days-format-narrow":["вÑ","пн","вт","ÑÑ€","чт","пт","Ñб"],"dateFormatItem-yMMMd":"d MMM y 'г'.","dateFormatItem-MEd":"E, dd.MM","days-standAlone-short":["вÑ","пн","вт","ÑÑ€","чт","пт","Ñб"],"days-standAlone-abbr":["Ð’Ñ","Пн","Ð’Ñ‚","Ср","Чт","Пт","Сб"],"months-standAlone-wide-leap":"Ðдар II","dayPeriods-format-abbr-pm":"поÑле полуднÑ","dateFormat-short":"dd.MM.yy","dateFormatItem-yMMMEd":"E, d MMM y","dateFormat-full":"EEEE, d MMMM y 'г'.","dateFormatItem-Md":"dd.MM","dateFormatItem-yMEd":"ccc, d.MM.y 'г'.","months-format-wide":["Тишрей","Хешван","КиÑлев","Тевет","Шеват","Ðдар I","Ðдар","ÐиÑан","ИÑÑ€","Сиван","Таммуз","Ðв","Элул"],"dayPeriods-format-abbr-am":"до полуднÑ","days-format-short":["вÑ","пн","вт","ÑÑ€","чт","пт","Ñб"],"quarters-format-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"months-format-wide-leap":"Ðдар II","days-format-wide":["воÑкреÑенье","понедельник","вторник","Ñреда","четверг","пÑтница","Ñуббота"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ru/islamic.js b/lib/dojo/cldr/nls/ru/islamic.js new file mode 100644 index 0000000000..2e4b980bd5 --- /dev/null +++ b/lib/dojo/cldr/nls/ru/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ru/islamic",{"days-standAlone-short":["вÑ","пн","вт","ÑÑ€","чт","пт","Ñб"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-yyMMMEd":"E, d MMM yy G","dateFormatItem-yMEd":"ccc, d.MM.y 'г'.","dateFormatItem-yyyyLLLL":"LLLL y G","dateFormatItem-MMMEd":"ccc, d MMM","days-format-short":["вÑ","пн","вт","ÑÑ€","чт","пт","Ñб"],"dateFormat-long":"d MMMM y 'г'. G","months-format-wide":["Мухаррам","Сафар","Раби-уль-авваль","Раби-уль-ахир","Джумад-уль-авваль","Джумад-уль-ахир","Раджаб","Шаабан","Рамадан","Шавваль","Зуль-Каада","Зуль-Хиджжа"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"поÑле полуднÑ","dateFormat-full":"EEEE, d MMMM y 'г'. G","dateFormatItem-yyyyMEd":"E, dd.MM.y G","dateFormatItem-Md":"dd.MM","dayPeriods-format-abbr-am":"до полуднÑ","dateFormatItem-yMd":"dd.MM.y","dateFormatItem-yM":"MM.y","months-standAlone-wide":["Мухаррам","Сафар","Раби-уль-авваль","Раби-уль-ахир","Джумад-уль-авваль","Джумад-уль-ахир","Раджаб","Шаабан","Рамадан","Шавваль","Зуль-Каада","Зуль-Хиджжа"],"timeFormat-short":"H:mm","quarters-format-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"timeFormat-long":"H:mm:ss z","dateFormatItem-yMMM":"LLL y","dateFormatItem-yQ":"QQQ y 'г'.","dateFormatItem-yyyyMMMM":"LLLL y G","dateFormatItem-MMdd":"dd.MM","months-format-abbr":["Мухаррам","Сафар","Раби-уль-авваль","Раби-уль-ахир","Джумад-уль-авваль","Джумад-уль-ахир","Раджаб","Шаабан","Рамадан","Шавваль","Зуль-Каада","Зуль-Хиджжа"],"dateFormatItem-yyQ":"Q yy G","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-E":"ccc","dateFormatItem-H":"H","months-standAlone-abbr":["Мухаррам","Сафар","Раби-уль-авваль","Раби-уль-ахир","Джумад-уль-авваль","Джумад-уль-ахир","Раджаб","Шаабан","Рамадан","Шавваль","Зуль-Каада","Зуль-Хиджжа"],"quarters-format-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"quarters-standAlone-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"dateFormatItem-yyyyMMMEd":"E, d MMM y G","dateFormatItem-M":"L","days-standAlone-wide":["ВоÑкреÑенье","Понедельник","Вторник","Среда","Четверг","ПÑтница","Суббота"],"dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-yyMMM":"LLL yy G","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","quarters-standAlone-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"days-standAlone-abbr":["Ð’Ñ","Пн","Ð’Ñ‚","Ср","Чт","Пт","Сб"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","dateTimeFormat-long":"{1}, {0}","dayPeriods-format-narrow-am":"дп","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, dd.MM","dateTimeFormat-full":"{1}, {0}","days-format-wide":["воÑкреÑенье","понедельник","вторник","Ñреда","четверг","пÑтница","Ñуббота"],"dateFormatItem-yyyyMM":"MM.yyyy G","dateFormatItem-yyMM":"MM.yy G","dayPeriods-format-abbr-pm":"поÑле полуднÑ","days-format-abbr":["вÑ","пн","вт","ÑÑ€","чт","пт","Ñб"],"dateFormatItem-yMMMd":"d MMM y 'г'.","days-format-narrow":["вÑ","пн","вт","ÑÑ€","чт","пт","Ñб"],"dateFormatItem-yyyyMd":"dd.MM.y G","days-standAlone-narrow":["Ð’","П","Ð’","С","Ч","П","С"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"до полуднÑ","dateFormat-short":"dd.MM.yy G","dateFormatItem-yMMMEd":"E, d MMM y","dateFormatItem-Ed":"E, d","dateFormat-medium":"dd.MM.yyyy G","dateFormatItem-yyyyM":"MM.y G","dayPeriods-format-narrow-pm":"пп","dateFormatItem-yyyyQQQQ":"QQQQ y 'г'. G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-yyyy":"y G"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ru/number.js b/lib/dojo/cldr/nls/ru/number.js new file mode 100644 index 0000000000..bc5c990486 --- /dev/null +++ b/lib/dojo/cldr/nls/ru/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/ru/number",{"group":" ","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"не чиÑло","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 триллиона","decimalFormat-short":"000 трлн"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sk/currency.js b/lib/dojo/cldr/nls/sk/currency.js new file mode 100644 index 0000000000..4dd71f13fc --- /dev/null +++ b/lib/dojo/cldr/nls/sk/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/sk/currency",{"HKD_displayName":"Hongkongský dolár","CHF_displayName":"Å vajÄiarský frank","JPY_symbol":"JPY","CAD_displayName":"Kanadský dolár","HKD_symbol":"HKD","CNY_displayName":"Čínsky jüan","USD_symbol":"USD","AUD_displayName":"Austrálsky dolár","JPY_displayName":"Japonský jen","CAD_symbol":"CAD","USD_displayName":"Americký dolár","EUR_symbol":"EUR","CNY_symbol":"CNY","GBP_displayName":"Britská libra","GBP_symbol":"GBP","AUD_symbol":"AUD","EUR_displayName":"Euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sk/gregorian.js b/lib/dojo/cldr/nls/sk/gregorian.js new file mode 100644 index 0000000000..2c9f6978a0 --- /dev/null +++ b/lib/dojo/cldr/nls/sk/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/sk/gregorian",{"days-standAlone-short":["Ne","Po","Ut","St","Å t","Pi","So"],"months-format-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Deň v týždni","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E d. M. y","dateFormatItem-MMMEd":"E, d. MMM.","eraNarrow":["pred n.l.","n.l."],"days-format-short":["Ne","Po","Ut","St","Å t","Pi","So"],"dateFormat-long":"d. MMMM y","months-format-wide":["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"popoludní","dateFormat-full":"EEEE, d. MMMM y","dateFormatItem-Md":"d.M.","dateFormatItem-yMd":"d.M.yyyy","field-era":"Éra","dateFormatItem-yM":"M.yyyy","months-standAlone-wide":["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],"timeFormat-short":"H:mm","quarters-format-wide":["1. Å¡tvrÅ¥rok","2. Å¡tvrÅ¥rok","3. Å¡tvrÅ¥rok","4. Å¡tvrÅ¥rok"],"timeFormat-long":"H:mm:ss z","field-year":"Rok","dateFormatItem-yMMM":"LLL y","dateFormatItem-yQ":"Q yyyy","dateFormatItem-yyyyMMMM":"LLLL y","field-hour":"Hodina","months-format-abbr":["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"Dnes","field-day-relative+1":"Zajtra","field-day-relative+2":"Pozajtra","dateFormatItem-H":"H","months-standAlone-abbr":["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["1. Å¡tvrÅ¥rok","2. Å¡tvrÅ¥rok","3. Å¡tvrÅ¥rok","4. Å¡tvrÅ¥rok"],"dateFormatItem-M":"L.","days-standAlone-wide":["nedeľa","pondelok","utorok","streda","Å¡tvrtok","piatok","sobota"],"dateFormatItem-MMMMd":"d. MMMM","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","quarters-standAlone-abbr":["1Q","2Q","3Q","4Q"],"eraAbbr":["pred n.l.","n.l."],"field-minute":"Minúta","field-dayperiod":"ÄŒasÅ¥ dňa","days-standAlone-abbr":["ne","po","ut","st","Å¡t","pi","so"],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"VÄera","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"PredvÄerom","dateFormatItem-MMMd":"d. MMM.","dateFormatItem-MEd":"E, d.M.","dateTimeFormat-full":"{1} {0}","dateFormatItem-yMMMM":"LLLL y","field-day":"Deň","days-format-wide":["nedeľa","pondelok","utorok","streda","Å¡tvrtok","piatok","sobota"],"field-zone":"ÄŒasové pásmo","dateFormatItem-y":"y","months-standAlone-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"field-year-relative+-1":"Minulý rok","field-month-relative+-1":"Posledný mesiac","dateFormatItem-hm":"h:mm a","days-format-abbr":["ne","po","ut","st","Å¡t","pi","so"],"dateFormatItem-yMMMd":"d.M.yyyy","eraNames":["pred n.l.","n.l."],"days-format-narrow":["N","P","U","S","Å ","P","S"],"days-standAlone-narrow":["N","P","U","S","Å ","P","S"],"dateFormatItem-MMM":"LLL","field-month":"Mesiac","dayPeriods-format-wide-am":"dopoludnia","dateFormatItem-MMMMEd":"E, d. MMMM","dateFormat-short":"d.M.yyyy","field-second":"Sekunda","dateFormatItem-yMMMEd":"E, d. MMM y","field-month-relative+0":"Tento mesiac","field-month-relative+1":"Budúci mesiac","dateFormatItem-Ed":"E d.","field-week":"Týždeň","dateFormat-medium":"d.M.yyyy","field-year-relative+0":"Tento rok","field-week-relative+-1":"Minulý týždeň","dateFormatItem-yyyyM":"M.yyyy","field-year-relative+1":"Budúci rok","dateFormatItem-mmss":"mm:ss","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"h:mm:ss a","field-week-relative+0":"Tento týždeň","field-week-relative+1":"Budúci týždeň"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sk/number.js b/lib/dojo/cldr/nls/sk/number.js new file mode 100644 index 0000000000..7290e9a398 --- /dev/null +++ b/lib/dojo/cldr/nls/sk/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/sk/number",{"group":" ","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 biliónov","decimalFormat-short":"000 bil'.'"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sl/currency.js b/lib/dojo/cldr/nls/sl/currency.js new file mode 100644 index 0000000000..ac3e5a0349 --- /dev/null +++ b/lib/dojo/cldr/nls/sl/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/sl/currency",{"HKD_displayName":"hongkonÅ¡ki dolar","CHF_displayName":"Å¡vicarski frank","JPY_symbol":"Â¥","CAD_displayName":"kanadski dolar","CNY_displayName":"kitajski juan renminbi","USD_symbol":"$","AUD_displayName":"avstralski dolar","JPY_displayName":"japonski jen","USD_displayName":"ameriÅ¡ki dolar","GBP_displayName":"britanski funt","EUR_displayName":"evro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sl/gregorian.js b/lib/dojo/cldr/nls/sl/gregorian.js new file mode 100644 index 0000000000..7c4fe1c5fc --- /dev/null +++ b/lib/dojo/cldr/nls/sl/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/sl/gregorian",{"days-standAlone-short":["ned.","pon.","tor.","sre.","Äet.","pet.","sob."],"months-format-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Dan v tednu","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E, d. M. y","dateFormatItem-MMMEd":"E, d. MMM","eraNarrow":["pr. n. Å¡t.","po Kr."],"days-format-short":["ned.","pon.","tor.","sre.","Äet.","pet.","sob."],"dateFormat-long":"dd. MMMM y","months-format-wide":["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"pop.","dateFormat-full":"EEEE, dd. MMMM y","dateFormatItem-Md":"d. M.","dateFormatItem-yMd":"d. M. y","field-era":"Doba","dateFormatItem-yM":"M/y","months-standAlone-wide":["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"],"timeFormat-short":"HH:mm","quarters-format-wide":["1. Äetrtletje","2. Äetrtletje","3. Äetrtletje","4. Äetrtletje"],"timeFormat-long":"HH:mm:ss z","field-year":"Leto","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q y","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"Ura","months-format-abbr":["jan.","feb.","mar.","apr.","maj","jun.","jul.","avg.","sep.","okt.","nov.","dec."],"dateFormatItem-yyQ":"Q/yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"Danes","field-day-relative+1":"Jutri","field-day-relative+2":"PojutriÅ¡njem","dateFormatItem-H":"HH","months-standAlone-abbr":["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["1. Äetrtletje","2. Äetrtletje","3. Äetrtletje","4. Äetrtletje"],"dateFormatItem-M":"L","days-standAlone-wide":["nedelja","ponedeljek","torek","sreda","Äetrtek","petek","sobota"],"timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","eraAbbr":["pr. n. Å¡t.","po Kr."],"field-minute":"Minuta","field-dayperiod":"ÄŒas dneva","days-standAlone-abbr":["ned","pon","tor","sre","Äet","pet","sob"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"VÄeraj","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"PredvÄerajÅ¡njim","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, d. MM.","dateTimeFormat-full":"{1} {0}","field-day":"Dan","days-format-wide":["nedelja","ponedeljek","torek","sreda","Äetrtek","petek","sobota"],"field-zone":"ObmoÄje","dateFormatItem-y":"y","months-standAlone-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"field-year-relative+-1":"Lani","field-month-relative+-1":"PrejÅ¡nji mesec","dateFormatItem-hm":"h:mm a","days-format-abbr":["ned.","pon.","tor.","sre.","Äet.","pet.","sob."],"dateFormatItem-yMMMd":"MMM d, y","eraNames":["pred naÅ¡im Å¡tetjem","naÅ¡e Å¡tetje"],"days-format-narrow":["n","p","t","s","Ä","p","s"],"field-month":"Mesec","days-standAlone-narrow":["n","p","t","s","Ä","p","s"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"dop.","dateFormat-short":"d. MM. yy","field-second":"Sekunda","dateFormatItem-yMMMEd":"E, d. MMM y","field-month-relative+0":"Ta mesec","field-month-relative+1":"Naslednji mesec","dateFormatItem-Ed":"E, d.","field-week":"Teden","dateFormat-medium":"d. MMM yyyy","field-year-relative+0":"Letos","field-week-relative+-1":"PrejÅ¡nji teden","dateFormatItem-yyyyM":"M/yyyy","field-year-relative+1":"Naslednje leto","dateFormatItem-mmss":"mm:ss","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","field-week-relative+0":"Ta teden","field-week-relative+1":"Naslednji teden"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sl/number.js b/lib/dojo/cldr/nls/sl/number.js new file mode 100644 index 0000000000..fbfac16396 --- /dev/null +++ b/lib/dojo/cldr/nls/sl/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/sl/number",{"group":".","percentSign":"%","exponential":"e","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","decimalFormat-long":"000 bilijona","decimalFormat-short":"000 bil'.'"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sv/buddhist.js b/lib/dojo/cldr/nls/sv/buddhist.js new file mode 100644 index 0000000000..c9312eaa92 --- /dev/null +++ b/lib/dojo/cldr/nls/sv/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/sv/buddhist",{"dateFormatItem-yM":"G yyyy-MM","dateFormatItem-yQ":"G yyyy Q","dayPeriods-format-wide-pm":"em","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"G y QQQ","dateFormatItem-MMdd":"dd/MM","days-standAlone-wide":["söndag","mÃ¥ndag","tisdag","onsdag","torsdag","fredag","lördag"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-Gy":"y G","dayPeriods-format-wide-am":"fm","quarters-standAlone-abbr":["K1","K2","K3","K4"],"dateFormatItem-y":"y G","timeFormat-full":"'kl'. HH:mm:ss zzzz","months-standAlone-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y G","days-standAlone-narrow":["S","M","T","O","T","F","L"],"eraAbbr":["BE"],"dateFormatItem-yyyyMM":"G yyyy-MM","dateFormat-long":"d MMMM y G","dateFormatItem-Hm":"HH:mm","dateFormatItem-MMd":"d/M","dateFormatItem-yyMM":"G yy-MM","dateFormat-medium":"d MMM y G","dateFormatItem-Hms":"HH:mm:ss","dayPeriods-format-narrow-pm":"e","dateFormatItem-yyMMM":"MMM -yy G","dateFormatItem-yMd":"G yyyy-MM-dd","quarters-standAlone-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"dateFormatItem-ms":"mm:ss","dateFormatItem-yyyyQQQQ":"QQQQ y G","dayPeriods-format-narrow-am":"f","months-standAlone-wide":["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],"dateFormatItem-MMMMEd":"E d:'e' MMMM","dateFormatItem-MMMd":"d MMM","dateFormatItem-yyQ":"Q yy G","months-format-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"dateFormatItem-MMMMd":"d:'e' MMMM","quarters-format-abbr":["K1","K2","K3","K4"],"days-format-abbr":["sön","mÃ¥n","tis","ons","tors","fre","lör"],"dateFormatItem-M":"L","days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yMMMd":"d MMM y G","dateFormatItem-MEd":"E d/M","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-standAlone-short":["sö","mÃ¥","ti","on","to","fr","lö"],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["sön","mÃ¥n","tis","ons","tor","fre","lör"],"dayPeriods-format-abbr-pm":"EM","dateFormat-short":"G yyyy-MM-dd","dateFormatItem-yMMMEd":"E d MMM y G","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E, G yyyy-MM-dd","months-format-wide":["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],"dayPeriods-format-abbr-am":"FM","days-format-short":["sö","mÃ¥","ti","on","to","fr","lö"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-d":"d","quarters-format-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"days-format-wide":["söndag","mÃ¥ndag","tisdag","onsdag","torsdag","fredag","lördag"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sv/currency.js b/lib/dojo/cldr/nls/sv/currency.js new file mode 100644 index 0000000000..f25e638a6b --- /dev/null +++ b/lib/dojo/cldr/nls/sv/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/sv/currency",{"HKD_displayName":"Hongkong-dollar","CHF_displayName":"schweizisk franc","JPY_symbol":"JPÂ¥","CAD_displayName":"kanadensisk dollar","HKD_symbol":"HK$","CNY_displayName":"kinesisk yuan renminbi","USD_symbol":"US$","AUD_displayName":"australisk dollar","JPY_displayName":"japansk yen","CAD_symbol":"CAN$","USD_displayName":"US-dollar","EUR_symbol":"€","CNY_symbol":"CNÂ¥","GBP_displayName":"brittiskt pund sterling","GBP_symbol":"GB£","AUD_symbol":"AU$","EUR_displayName":"euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sv/gregorian.js b/lib/dojo/cldr/nls/sv/gregorian.js new file mode 100644 index 0000000000..ca98ab019b --- /dev/null +++ b/lib/dojo/cldr/nls/sv/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/sv/gregorian",{"days-standAlone-short":["sö","mÃ¥","ti","on","to","fr","lö"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"veckodag","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"E, yyyy-MM-dd","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["f.Kr.","e.Kr."],"days-format-short":["sö","mÃ¥","ti","on","to","fr","lö"],"dateFormat-long":"d MMMM y","months-format-wide":["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"em","dateFormat-full":"EEEE'en' 'den' d:'e' MMMM y","dateFormatItem-Md":"d/M","dayPeriods-format-abbr-am":"FM","dateFormatItem-yMd":"yyyy-MM-dd","dateFormatItem-yM":"yyyy-MM","field-era":"era","months-standAlone-wide":["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],"timeFormat-short":"HH:mm","quarters-format-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"timeFormat-long":"HH:mm:ss z","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"yyyy Q","field-year":"Ã¥r","dateFormatItem-MMdd":"dd/MM","field-hour":"timme","months-format-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"'kl'. HH:mm:ss zzzz","field-day-relative+0":"i dag","field-day-relative+1":"i morgon","field-day-relative+2":"i övermorgon","dateFormatItem-H":"HH","months-standAlone-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"dateFormatItem-M":"L","days-standAlone-wide":["söndag","mÃ¥ndag","tisdag","onsdag","torsdag","fredag","lördag"],"dateFormatItem-yyyyMMM":"MMM y","dateFormatItem-MMMMd":"d:'e' MMMM","dateFormatItem-yyMMM":"MMM -yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["f.Kr.","e.Kr."],"field-minute":"minut","field-dayperiod":"fm/em","days-standAlone-abbr":["sön","mÃ¥n","tis","ons","tor","fre","lör"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"i gÃ¥r","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"f","field-day-relative+-2":"i förrgÃ¥r","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} {0}","field-day":"dag","days-format-wide":["söndag","mÃ¥ndag","tisdag","onsdag","torsdag","fredag","lördag"],"field-zone":"tidszon","dateFormatItem-yyyyMM":"yyyy-MM","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"i fjol","field-month-relative+-1":"förra mÃ¥naden","dateFormatItem-yyMM":"yy-MM","dateFormatItem-hm":"h:mm a","dayPeriods-format-abbr-pm":"EM","days-format-abbr":["sön","mÃ¥n","tis","ons","tors","fre","lör"],"dateFormatItem-yMMMd":"d MMM y","eraNames":["före Kristus","efter Kristus"],"days-format-narrow":["S","M","T","O","T","F","L"],"days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-MMM":"LLL","field-month":"mÃ¥nad","dayPeriods-format-wide-am":"fm","dateFormatItem-MMMMEd":"E d:'e' MMMM","dateFormat-short":"yyyy-MM-dd","dateFormatItem-MMd":"d/M","field-second":"sekund","dateFormatItem-yMMMEd":"E d MMM y","field-month-relative+0":"denna mÃ¥nad","field-month-relative+1":"nästa mÃ¥nad","dateFormatItem-Ed":"E d","field-week":"vecka","dateFormat-medium":"d MMM y","field-year-relative+0":"i Ã¥r","field-week-relative+-1":"förra veckan","field-year-relative+1":"nästa Ã¥r","dayPeriods-format-narrow-pm":"e","dateFormatItem-yyyyQQQQ":"QQQQ y","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","field-week-relative+0":"denna vecka","field-week-relative+1":"nästa vecka"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sv/hebrew.js b/lib/dojo/cldr/nls/sv/hebrew.js new file mode 100644 index 0000000000..67bacd543e --- /dev/null +++ b/lib/dojo/cldr/nls/sv/hebrew.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/sv/hebrew",{"dateFormatItem-yM":"yyyy-MM","dateFormatItem-yQ":"yyyy Q","dayPeriods-format-wide-pm":"em","dateFormatItem-MMMEd":"E d MMM","days-standAlone-wide":["söndag","mÃ¥ndag","tisdag","onsdag","torsdag","fredag","lördag"],"dayPeriods-format-wide-am":"fm","quarters-standAlone-abbr":["K1","K2","K3","K4"],"timeFormat-full":"'kl'. HH:mm:ss zzzz","months-standAlone-abbr":["tishrí","heshván","kislév","tevét","shevát","adár I","adár","nisán","ijjár","siván","tammúz","ab","elúl"],"dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["S","M","T","O","T","F","L"],"eraAbbr":["AM"],"dateFormat-long":"d MMMM y","dateFormat-medium":"d MMM y","dayPeriods-format-narrow-pm":"e","dateFormatItem-yMd":"yyyy-MM-dd","quarters-standAlone-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"dayPeriods-format-narrow-am":"f","months-standAlone-wide":["tishrí","heshván","kislév","tevét","shevát","adár I","adár","nisán","ijjár","siván","tammúz","ab","elúl"],"dateFormatItem-MMMd":"d MMM","months-format-abbr":["tishrí","heshván","kislév","tevét","shevát","adár I","adár","nisán","ijjár","siván","tammúz","ab","elúl"],"quarters-format-abbr":["K1","K2","K3","K4"],"days-format-abbr":["sön","mÃ¥n","tis","ons","tors","fre","lör"],"days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yMMMd":"d MMM y","dateFormatItem-MEd":"E d/M","days-standAlone-short":["sö","mÃ¥","ti","on","to","fr","lö"],"days-standAlone-abbr":["sön","mÃ¥n","tis","ons","tor","fre","lör"],"dayPeriods-format-abbr-pm":"EM","dateFormatItem-yMMMEd":"E d MMM y","dateFormat-full":"EEEE'en' 'den' d:'e' MMMM y","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E, yyyy-MM-dd","months-format-wide":["tishrí","heshván","kislév","tevét","shevát","adár I","adár","nisán","ijjár","siván","tammúz","ab","elúl"],"dayPeriods-format-abbr-am":"FM","days-format-short":["sö","mÃ¥","ti","on","to","fr","lö"],"quarters-format-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"months-format-wide-leap":"adár II","days-format-wide":["söndag","mÃ¥ndag","tisdag","onsdag","torsdag","fredag","lördag"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sv/islamic.js b/lib/dojo/cldr/nls/sv/islamic.js new file mode 100644 index 0000000000..38b8e4ba91 --- /dev/null +++ b/lib/dojo/cldr/nls/sv/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/sv/islamic",{"dateFormatItem-yM":"yyyy-MM","dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-yQ":"yyyy Q","dayPeriods-format-wide-pm":"em","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-MMdd":"dd/MM","days-standAlone-wide":["söndag","mÃ¥ndag","tisdag","onsdag","torsdag","fredag","lördag"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"fm","quarters-standAlone-abbr":["K1","K2","K3","K4"],"timeFormat-full":"'kl'. HH:mm:ss zzzz","dateFormatItem-yyyy":"y G","months-standAlone-abbr":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","jumada-l-ula","jumada-l-akhira","rajab","sha’ban","ramadan","shawwal","dhu-l-ga’da","dhu-l-hijja"],"dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["S","M","T","O","T","F","L"],"eraAbbr":["AH"],"dateFormatItem-yyyyMM":"G y-MM","dateFormat-long":"d MMMM y G","dateFormatItem-Hm":"HH:mm","dateFormatItem-MMd":"d/M","dateFormatItem-yyMM":"G yy-MM","dateFormat-medium":"d MMM y G","dateFormatItem-Hms":"HH:mm:ss","dayPeriods-format-narrow-pm":"e","dateFormatItem-yyMMM":"MMM -yy G","dateFormatItem-yMd":"yyyy-MM-dd","quarters-standAlone-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"dateFormatItem-ms":"mm:ss","dateFormatItem-yyyyQQQQ":"QQQQ y G","dayPeriods-format-narrow-am":"f","months-standAlone-wide":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","jumada-l-ula","jumada-l-akhira","rajab","sha’ban","ramadan","shawwal","dhu-l-ga’da","dhu-l-hijja"],"dateFormatItem-yyyyMd":"G y-MM-dd","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-MMMMEd":"E d:'e' MMMM","dateFormatItem-yyyyMEd":"E, G y-MM-dd","dateFormatItem-MMMd":"d MMM","dateFormatItem-yyQ":"Q yy G","months-format-abbr":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","jumada-l-ula","jumada-l-akhira","rajab","sha’ban","ramadan","shawwal","dhu-l-ga’da","dhu-l-hijja"],"dateFormatItem-MMMMd":"d:'e' MMMM","quarters-format-abbr":["K1","K2","K3","K4"],"days-format-abbr":["sön","mÃ¥n","tis","ons","tors","fre","lör"],"dateFormatItem-M":"L","days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yMMMd":"d MMM y","dateFormatItem-MEd":"E d/M","dateFormatItem-yyyyQQQ":"G y QQQ","days-standAlone-short":["sö","mÃ¥","ti","on","to","fr","lö"],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["sön","mÃ¥n","tis","ons","tor","fre","lör"],"dayPeriods-format-abbr-pm":"EM","dateFormat-short":"G y-MM-dd","dateFormatItem-yyyyM":"G y-MM","dateFormatItem-yMMMEd":"E d MMM y","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-Md":"d/M","dateFormatItem-yyyyQ":"G y Q","dateFormatItem-yMEd":"E, yyyy-MM-dd","months-format-wide":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","jumada-l-ula","jumada-l-akhira","rajab","sha’ban","ramadan","shawwal","dhu-l-ga’da","dhu-l-hijja"],"dayPeriods-format-abbr-am":"FM","days-format-short":["sö","mÃ¥","ti","on","to","fr","lö"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-d":"d","quarters-format-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"days-format-wide":["söndag","mÃ¥ndag","tisdag","onsdag","torsdag","fredag","lördag"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sv/number.js b/lib/dojo/cldr/nls/sv/number.js new file mode 100644 index 0000000000..b4b11594f2 --- /dev/null +++ b/lib/dojo/cldr/nls/sv/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/sv/number",{"scientificFormat":"#E0","currencyDecimal":":","infinity":"∞","list":";","percentSign":"%","minusSign":"−","decimalFormat-short":"000 bn","nan":"¤¤¤","plusSign":"+","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 biljoner","decimalFormat":"#,##0.###","currencyGroup":".","decimal":",","exponential":"×10^"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/th/buddhist.js b/lib/dojo/cldr/nls/th/buddhist.js new file mode 100644 index 0000000000..3d3600793c --- /dev/null +++ b/lib/dojo/cldr/nls/th/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/th/buddhist",{"dateFormatItem-yM":"M/yyyy","dateFormatItem-yQ":"Q yyyy","dayPeriods-format-wide-pm":"หลังเที่ยง","eraNames":["พุทธศัà¸à¸£à¸²à¸Š"],"dateFormatItem-MMMEd":"E d MMM","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ y","days-standAlone-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุà¸à¸£à¹Œ","วันเสาร์"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["ม.ค.","à¸.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","à¸.ค.","ส.ค.","à¸.ย.","ต.ค.","พ.ย.","ธ.ค."],"dayPeriods-format-wide-am":"à¸à¹ˆà¸­à¸™à¹€à¸—ี่ยง","quarters-standAlone-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dateFormatItem-y":"G y","timeFormat-full":"H นาฬิà¸à¸² mm นาที ss วินาที zzzz","months-standAlone-abbr":["ม.ค.","à¸.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","à¸.ค.","ส.ค.","à¸.ย.","ต.ค.","พ.ย.","ธ.ค."],"dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"eraAbbr":["พ.ศ."],"dateFormatItem-yyyyMMMM":"MMMM y","dateFormat-long":"d MMMM y","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"d MMM y","dateFormatItem-Hms":"HH:mm:ss","dayPeriods-format-narrow-pm":"หลังเที่ยง","dateFormatItem-yMd":"d/M/yyyy","quarters-standAlone-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dateFormatItem-yMMMM":"MMMM y","dateFormatItem-ms":"mm:ss","dayPeriods-format-narrow-am":"à¸à¹ˆà¸­à¸™à¹€à¸—ี่ยง","months-standAlone-wide":["มà¸à¸£à¸²à¸„ม","à¸à¸¸à¸¡à¸ à¸²à¸žà¸±à¸™à¸˜à¹Œ","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","à¸à¸£à¸à¸Žà¸²à¸„ม","สิงหาคม","à¸à¸±à¸™à¸¢à¸²à¸¢à¸™","ตุลาคม","พฤศจิà¸à¸²à¸¢à¸™","ธันวาคม"],"dateFormatItem-MMMMEd":"E d MMMM","dateFormatItem-MMMd":"d MMM","dateFormatItem-yyQ":"Q yy","timeFormat-long":"H นาฬิà¸à¸² mm นาที ss วินาที z","months-format-abbr":["ม.ค.","à¸.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","à¸.ค.","ส.ค.","à¸.ย.","ต.ค.","พ.ย.","ธ.ค."],"dateFormatItem-H":"HH","dateFormatItem-MMMMd":"d MMMM","quarters-format-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"days-format-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-mmss":"mm:ss","dateFormatItem-M":"L","days-format-narrow":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-yMMMd":"d MMM y","dateFormatItem-MEd":"E, d/M","months-format-narrow":["ม.ค.","à¸.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย","à¸.ค.","ส.ค.","à¸.ย.","ต.ค.","พ.ย.","ธ.ค."],"days-standAlone-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormat-short":"d/M/yy","dateFormatItem-yyyyM":"M/yyyy","dateFormatItem-yMMMEd":"E d MMM y","dateFormat-full":"EEEEที่ d MMMM G y","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E d/M/yyyy","months-format-wide":["มà¸à¸£à¸²à¸„ม","à¸à¸¸à¸¡à¸ à¸²à¸žà¸±à¸™à¸˜à¹Œ","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","à¸à¸£à¸à¸Žà¸²à¸„ม","สิงหาคม","à¸à¸±à¸™à¸¢à¸²à¸¢à¸™","ตุลาคม","พฤศจิà¸à¸²à¸¢à¸™","ธันวาคม"],"days-format-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-d":"d","quarters-format-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"eraNarrow":["พ.ศ."],"days-format-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุà¸à¸£à¹Œ","วันเสาร์"],"dateFormatItem-h":"h a"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/th/currency.js b/lib/dojo/cldr/nls/th/currency.js new file mode 100644 index 0000000000..a781a4c139 --- /dev/null +++ b/lib/dojo/cldr/nls/th/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/th/currency",{"HKD_displayName":"ดอลลาร์ฮ่องà¸à¸‡","CHF_displayName":"ฟรังà¸à¹Œà¸ªà¸§à¸´à¸ª","JPY_symbol":"Â¥","CAD_displayName":"ดอลลาร์à¹à¸„นาดา","HKD_symbol":"HK$","CNY_displayName":"หยวนจีน","USD_symbol":"US$","AUD_displayName":"ดอลลาร์ออสเตรเลีย","JPY_displayName":"เยนà¸à¸µà¹ˆà¸›à¸¸à¹ˆà¸™","CAD_symbol":"CA$","USD_displayName":"ดอลลาร์สหรัà¸","EUR_symbol":"€","CNY_symbol":"CNÂ¥","GBP_displayName":"ปอนด์สเตอร์ลิง (สหราชอาณาจัà¸à¸£)","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"ยูโร"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/th/gregorian.js b/lib/dojo/cldr/nls/th/gregorian.js new file mode 100644 index 0000000000..0bab9b3065 --- /dev/null +++ b/lib/dojo/cldr/nls/th/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/th/gregorian",{"days-standAlone-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"months-format-narrow":["ม.ค.","à¸.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย","à¸.ค.","ส.ค.","à¸.ย.","ต.ค.","พ.ย.","ธ.ค."],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"วันในสัปดาห์","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E d/M/yyyy","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["à¸à¹ˆà¸­à¸™ ค.ศ.","ค.ศ."],"days-format-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormat-long":"d MMMM y","months-format-wide":["มà¸à¸£à¸²à¸„ม","à¸à¸¸à¸¡à¸ à¸²à¸žà¸±à¸™à¸˜à¹Œ","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","à¸à¸£à¸à¸Žà¸²à¸„ม","สิงหาคม","à¸à¸±à¸™à¸¢à¸²à¸¢à¸™","ตุลาคม","พฤศจิà¸à¸²à¸¢à¸™","ธันวาคม"],"dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"หลังเที่ยง","dateFormat-full":"EEEEที่ d MMMM G y","dateFormatItem-Md":"d/M","dateFormatItem-yMd":"d/M/yyyy","field-era":"สมัย","dateFormatItem-yM":"M/yyyy","months-standAlone-wide":["มà¸à¸£à¸²à¸„ม","à¸à¸¸à¸¡à¸ à¸²à¸žà¸±à¸™à¸˜à¹Œ","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","à¸à¸£à¸à¸Žà¸²à¸„ม","สิงหาคม","à¸à¸±à¸™à¸¢à¸²à¸¢à¸™","ตุลาคม","พฤศจิà¸à¸²à¸¢à¸™","ธันวาคม"],"timeFormat-short":"HH:mm","quarters-format-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"timeFormat-long":"H นาฬิà¸à¸² mm นาที ss วินาที z","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q yyyy","field-year":"ปี","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"ชั่วโมง","months-format-abbr":["ม.ค.","à¸.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","à¸.ค.","ส.ค.","à¸.ย.","ต.ค.","พ.ย.","ธ.ค."],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"H นาฬิà¸à¸² mm นาที ss วินาที zzzz","field-day-relative+0":"วันนี้","field-day-relative+1":"พรุ่งนี้","field-day-relative+2":"มะรืนนี้","dateFormatItem-H":"HH","months-standAlone-abbr":["ม.ค.","à¸.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","à¸.ค.","ส.ค.","à¸.ย.","ต.ค.","พ.ย.","ธ.ค."],"quarters-format-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"quarters-standAlone-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dateFormatItem-M":"L","days-standAlone-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุà¸à¸£à¹Œ","วันเสาร์"],"dateFormatItem-MMMMd":"d MMMM","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"eraAbbr":["ปีà¸à¹ˆà¸­à¸™ ค.ศ.","ค.ศ."],"field-minute":"นาที","field-dayperiod":"ช่วงวัน","days-standAlone-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"เมื่อวาน","dateFormatItem-h":"h a","dateTimeFormat-long":"{1}, {0}","dayPeriods-format-narrow-am":"à¸à¹ˆà¸­à¸™à¹€à¸—ี่ยง","field-day-relative+-2":"เมื่อวานซืน","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1}, {0}","dateFormatItem-yMMMM":"MMMM y","field-day":"วัน","days-format-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุà¸à¸£à¹Œ","วันเสาร์"],"field-zone":"เขต","dateFormatItem-y":"y","months-standAlone-narrow":["ม.ค.","à¸.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","à¸.ค.","ส.ค.","à¸.ย.","ต.ค.","พ.ย.","ธ.ค."],"field-year-relative+-1":"ปีที่à¹à¸¥à¹‰à¸§","field-month-relative+-1":"เดือนที่à¹à¸¥à¹‰à¸§","dateFormatItem-hm":"h:mm a","days-format-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-yMMMd":"d MMM y","eraNames":["ปีà¸à¹ˆà¸­à¸™à¸„ริสต์ศัà¸à¸£à¸²à¸Š","คริสต์ศัà¸à¸£à¸²à¸Š"],"days-format-narrow":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"days-standAlone-narrow":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-MMM":"LLL","field-month":"เดือน","dayPeriods-format-wide-am":"à¸à¹ˆà¸­à¸™à¹€à¸—ี่ยง","dateFormatItem-MMMMEd":"E d MMMM","dateFormat-short":"d/M/yy","field-second":"วินาที","dateFormatItem-yMMMEd":"E d MMM y","field-month-relative+0":"เดือนนี้","field-month-relative+1":"เดือนหน้า","dateFormatItem-Ed":"E d","field-week":"สัปดาห์","dateFormat-medium":"d MMM y","field-year-relative+0":"ปีนี้","field-week-relative+-1":"สัปดาห์ที่à¹à¸¥à¹‰à¸§","dateFormatItem-yyyyM":"M/yyyy","field-year-relative+1":"ปีหน้า","dateFormatItem-mmss":"mm:ss","dayPeriods-format-narrow-pm":"หลังเที่ยง","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","field-week-relative+0":"สัปดาห์นี้","field-week-relative+1":"สัปดาห์หน้า"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/th/hebrew.js b/lib/dojo/cldr/nls/th/hebrew.js new file mode 100644 index 0000000000..6a946be003 --- /dev/null +++ b/lib/dojo/cldr/nls/th/hebrew.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/th/hebrew",{"dateFormatItem-yM":"M/yyyy","dateFormatItem-yQ":"Q yyyy","months-standAlone-abbr-leap":"อาดาร์ II","dayPeriods-format-wide-pm":"หลังเที่ยง","eraNames":["ย.ศ."],"dateFormatItem-MMMEd":"E d MMM","dateTimeFormat-full":"{1}, {0}","dateFormatItem-yQQQ":"QQQ y","days-standAlone-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุà¸à¸£à¹Œ","วันเสาร์"],"dateTimeFormat-short":"{1}, {0}","dayPeriods-format-wide-am":"à¸à¹ˆà¸­à¸™à¹€à¸—ี่ยง","dateTimeFormat-medium":"{1}, {0}","months-format-abbr-leap":"อาดาร์ II","quarters-standAlone-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"timeFormat-full":"H นาฬิà¸à¸² mm นาที ss วินาที zzzz","months-standAlone-abbr":["ทิชรี","เฮวาน","à¸à¸µà¸ªà¹€à¸¥à¸Ÿ","เตเวต","เชวัต","อาดาร์ I","อาดาร์","นิสซาน","อิยาร์","สีวัน","ตามูซ","อัฟ","เอลอุล"],"dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"eraAbbr":["ย.ศ."],"dateFormat-long":"d MMMM y","dateFormat-medium":"d MMM y","dayPeriods-format-narrow-pm":"หลังเที่ยง","dateFormatItem-yMd":"d/M/yyyy","quarters-standAlone-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dayPeriods-format-narrow-am":"à¸à¹ˆà¸­à¸™à¹€à¸—ี่ยง","dateTimeFormat-long":"{1}, {0}","months-standAlone-wide":["ทิชรี","เฮวาน","à¸à¸µà¸ªà¹€à¸¥à¸Ÿ","เตเวต","เชวัต","อาดาร์ I","อาดาร์","นิสซาน","อิยาร์","สีวัน","ตามูซ","อัฟ","เอลอุล"],"dateFormatItem-MMMd":"d MMM","timeFormat-long":"H นาฬิà¸à¸² mm นาที ss วินาที z","months-format-abbr":["ทิชรี","เฮวาน","à¸à¸µà¸ªà¹€à¸¥à¸Ÿ","เตเวต","เชวัต","อาดาร์ I","อาดาร์","นิสซาน","อิยาร์","สีวัน","ตามูซ","อัฟ","เอลอุล"],"quarters-format-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"days-format-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"days-format-narrow":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-yMMMd":"d MMM y","dateFormatItem-MEd":"E, d/M","days-standAlone-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"days-standAlone-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"months-standAlone-wide-leap":"อาดาร์ II","dateFormat-short":"d/M/yy","dateFormatItem-yMMMEd":"E d MMM y","dateFormat-full":"EEEEที่ d MMMM G y","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E d/M/yyyy","months-format-wide":["ทิชรี","เฮวาน","à¸à¸µà¸ªà¹€à¸¥à¸Ÿ","เตเวต","เชวัต","อาดาร์ I","อาดาร์","นิสซาน","อิยาร์","สีวัน","ตามูซ","อัฟ","เอลอุล"],"days-format-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"quarters-format-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"months-format-wide-leap":"อาดาร์ II","eraNarrow":["ย.ศ."],"days-format-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุà¸à¸£à¹Œ","วันเสาร์"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/th/islamic.js b/lib/dojo/cldr/nls/th/islamic.js new file mode 100644 index 0000000000..b297efcd1d --- /dev/null +++ b/lib/dojo/cldr/nls/th/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/th/islamic",{"dateFormatItem-yM":"M/yyyy","dateFormatItem-yQ":"Q yyyy","dayPeriods-format-wide-pm":"หลังเที่ยง","eraNames":["ฮิจเราะห์ศัà¸à¸£à¸²à¸Š"],"dateFormatItem-MMMEd":"E d MMM","dateTimeFormat-full":"{1}, {0}","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ y","days-standAlone-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุà¸à¸£à¹Œ","วันเสาร์"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormat-short":"{1}, {0}","dayPeriods-format-wide-am":"à¸à¹ˆà¸­à¸™à¹€à¸—ี่ยง","dateTimeFormat-medium":"{1}, {0}","quarters-standAlone-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dateFormatItem-y":"y","timeFormat-full":"H นาฬิà¸à¸² mm นาที ss วินาที zzzz","months-standAlone-abbr":["มุฮัร.","เศาะ.","รอบี 1","รอบี 2","à¸à¸¸à¸¡à¸² 1","à¸à¸¸à¸¡à¸² 2","เราะ.","ชะอ์.","เราะมะ.","เชาว.","ซุลà¸à¸´à¸­à¸º.","ซุลหิจ."],"dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"eraAbbr":["ฮ.ศ."],"dateFormat-long":"d MMMM y","dateFormatItem-Hm":"H:mm","dateFormat-medium":"d MMM y","dateFormatItem-Hms":"H:mm:ss","dayPeriods-format-narrow-pm":"หลังเที่ยง","dateFormatItem-yMd":"d/M/yyyy","quarters-standAlone-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dateFormatItem-yMMMM":"MMMM y","dateFormatItem-ms":"mm:ss","dayPeriods-format-narrow-am":"à¸à¹ˆà¸­à¸™à¹€à¸—ี่ยง","dateTimeFormat-long":"{1}, {0}","months-standAlone-wide":["มุฮะร์รอม","ซอฟาร์","รอบี I","รอบี II","จุมาดา I","จุมาดา II","รอจับ","ชะอะบาน","รอมะดอน","เชาวัล","ดฮุุอัลà¸à¸´à¸”ะห์","ดฮุอัลฮิจจะห์"],"dateFormatItem-MMMMEd":"E d MMMM","dateFormatItem-MMMd":"d MMM","months-format-abbr":["มุฮัร.","เศาะ.","รอบี 1","รอบี 2","à¸à¸¸à¸¡à¸² 1","à¸à¸¸à¸¡à¸² 2","เราะ.","ชะอ์.","เราะมะ.","เชาว.","ซุลà¸à¸´à¸­à¸º.","ซุลหิจ."],"timeFormat-long":"H นาฬิà¸à¸² mm นาที ss วินาที z","dateFormatItem-H":"H","dateFormatItem-MMMMd":"d MMMM","quarters-format-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"days-format-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-M":"L","days-format-narrow":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-yMMMd":"d MMM y","dateFormatItem-MEd":"E, d/M","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-standAlone-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormat-short":"d/M/yyyy","dateFormatItem-yMMMEd":"E d MMM y","dateFormat-full":"EEEEที่ d MMMM G y","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E d/M/yyyy","months-format-wide":["มุฮะร์รอม","ซอฟาร์","รอบี I","รอบี II","จุมาดา I","จุมาดา II","รอจับ","ชะอะบาน","รอมะดอน","เชาวัล","ดฮุุอัลà¸à¸´à¸”ะห์","ดฮุอัลฮิจจะห์"],"days-format-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-d":"d","quarters-format-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"eraNarrow":["ฮ.ศ."],"days-format-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุà¸à¸£à¹Œ","วันเสาร์"],"dateFormatItem-h":"h a"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/th/number.js b/lib/dojo/cldr/nls/th/number.js new file mode 100644 index 0000000000..2f657cd212 --- /dev/null +++ b/lib/dojo/cldr/nls/th/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/th/number",{"group":",","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":".","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","decimalFormat-long":"000 ล้านล้าน","decimalFormat-short":"000 ล'.'ล'.'"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/tr/buddhist.js b/lib/dojo/cldr/nls/tr/buddhist.js new file mode 100644 index 0000000000..c6eb212f17 --- /dev/null +++ b/lib/dojo/cldr/nls/tr/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/tr/buddhist",{"dateFormatItem-yM":"MM.y G","dateFormatItem-yQ":"Q y G","dayPeriods-format-wide-pm":"ÖS","dateFormatItem-MMMEd":"dd MMM E","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ y G","days-standAlone-wide":["Pazar","Pazartesi","Salı","ÇarÅŸamba","PerÅŸembe","Cuma","Cumartesi"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["O","Åž","M","N","M","H","T","A","E","E","K","A"],"dateFormatItem-Gy":"y G","dayPeriods-format-wide-am":"ÖÖ","quarters-standAlone-abbr":["Ç1","Ç2","Ç3","Ç4"],"dateFormatItem-y":"y G","dateFormatItem-yyyy":"y G","months-standAlone-abbr":["Oca","Åžub","Mar","Nis","May","Haz","Tem","AÄŸu","Eyl","Eki","Kas","Ara"],"dateFormatItem-Ed":"d E","dateFormatItem-yMMM":"MMM y G","days-standAlone-narrow":["P","P","S","Ç","P","C","C"],"dateFormat-long":"dd MMMM y G","dateFormatItem-Hm":"HH:mm","dateFormatItem-yyMM":"MM.yy G","dateFormat-medium":"dd MMM y G","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-yyMMM":"MMM yy G","dateFormatItem-yyQQQQ":"QQQQ yy G","dateFormatItem-yMd":"dd.MM.y G","quarters-standAlone-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"dateFormatItem-yMMMM":"MMMM y G","dateFormatItem-ms":"mm:ss","quarters-standAlone-narrow":["1.","2.","3.","4."],"months-standAlone-wide":["Ocak","Åžubat","Mart","Nisan","Mayıs","Haziran","Temmuz","AÄŸustos","Eylül","Ekim","Kasım","Aralık"],"dateFormatItem-MMMd":"dd MMM","quarters-format-narrow":["1.","2.","3.","4."],"dateFormatItem-yyQ":"Q yy G","months-format-abbr":["Oca","Åžub","Mar","Nis","May","Haz","Tem","AÄŸu","Eyl","Eki","Kas","Ara"],"dateFormatItem-H":"HH","quarters-format-abbr":["Ç1","Ç2","Ç3","Ç4"],"days-format-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"dateFormatItem-mmss":"mm:ss","dateFormatItem-M":"L","days-format-narrow":["P","P","S","Ç","P","C","C"],"dateFormatItem-yMMMd":"dd MMM y G","dateFormatItem-MEd":"dd.MM E","months-format-narrow":["O","Åž","M","N","M","H","T","A","E","E","K","A"],"days-standAlone-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"dateFormat-short":"dd.MM.yyyy G","dateFormatItem-yMMMEd":"dd MMM y G E","dateFormat-full":"dd MMMM y G EEEE","dateFormatItem-Md":"dd.MM","dateFormatItem-yMEd":"dd.MM.y G E","months-format-wide":["Ocak","Åžubat","Mart","Nisan","Mayıs","Haziran","Temmuz","AÄŸustos","Eylül","Ekim","Kasım","Aralık"],"days-format-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"dateFormatItem-d":"d","quarters-format-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"days-format-wide":["Pazar","Pazartesi","Salı","ÇarÅŸamba","PerÅŸembe","Cuma","Cumartesi"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/tr/currency.js b/lib/dojo/cldr/nls/tr/currency.js new file mode 100644 index 0000000000..b56b565071 --- /dev/null +++ b/lib/dojo/cldr/nls/tr/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/tr/currency",{"HKD_displayName":"Hong Kong Doları","CHF_displayName":"İsviçre Frangı","JPY_symbol":"Â¥","CAD_displayName":"Kanada Doları","HKD_symbol":"HK$","CNY_displayName":"Çin Yuanı","USD_symbol":"$","AUD_displayName":"Avustralya Doları","JPY_displayName":"Japon Yeni","CAD_symbol":"CA$","USD_displayName":"ABD Doları","EUR_symbol":"€","CNY_symbol":"CNÂ¥","GBP_displayName":"İngiliz Sterlini","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"Euro"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/tr/gregorian.js b/lib/dojo/cldr/nls/tr/gregorian.js new file mode 100644 index 0000000000..0b31c636c3 --- /dev/null +++ b/lib/dojo/cldr/nls/tr/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/tr/gregorian",{"days-standAlone-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"months-format-narrow":["O","Åž","M","N","M","H","T","A","E","E","K","A"],"quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"Haftanın Günü","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"y/QQQ","dateFormatItem-yMEd":"dd.MM.yyyy E","dateFormatItem-MMMEd":"d MMMM E","eraNarrow":["MÖ","MS"],"days-format-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"dateFormat-long":"d MMMM y","months-format-wide":["Ocak","Åžubat","Mart","Nisan","Mayıs","Haziran","Temmuz","AÄŸustos","Eylül","Ekim","Kasım","Aralık"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"ÖS","dateFormat-full":"d MMMM y EEEE","dateFormatItem-Md":"dd/MM","dateFormatItem-yMd":"dd.MM.yyyy","field-era":"Miladi Dönem","dateFormatItem-yM":"MM/y","months-standAlone-wide":["Ocak","Åžubat","Mart","Nisan","Mayıs","Haziran","Temmuz","AÄŸustos","Eylül","Ekim","Kasım","Aralık"],"timeFormat-short":"HH:mm","quarters-format-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"timeFormat-long":"HH:mm:ss z","field-year":"Yıl","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"y/Q","field-hour":"Saat","months-format-abbr":["Oca","Åžub","Mar","Nis","May","Haz","Tem","AÄŸu","Eyl","Eki","Kas","Ara"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"Bugün","field-day-relative+1":"Yarın","field-day-relative+2":"Öbür gün","dateFormatItem-H":"HH","months-standAlone-abbr":["Oca","Åžub","Mar","Nis","May","Haz","Tem","AÄŸu","Eyl","Eki","Kas","Ara"],"quarters-format-abbr":["Ç1","Ç2","Ç3","Ç4"],"quarters-standAlone-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"dateFormatItem-M":"L","days-standAlone-wide":["Pazar","Pazartesi","Salı","ÇarÅŸamba","PerÅŸembe","Cuma","Cumartesi"],"dateFormatItem-MMMMd":"dd MMMM","dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Ç1","Ç2","Ç3","Ç4"],"eraAbbr":["MÖ","MS"],"field-minute":"Dakika","field-dayperiod":"ÖÖ/ÖS","days-standAlone-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"Dün","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"Evvelsi gün","dateFormatItem-MMMd":"d MMMM","dateFormatItem-MEd":"dd/MM E","dateTimeFormat-full":"{1} {0}","dateFormatItem-yMMMM":"MMMM y","field-day":"Gün","days-format-wide":["Pazar","Pazartesi","Salı","ÇarÅŸamba","PerÅŸembe","Cuma","Cumartesi"],"field-zone":"Saat Dilimi","dateFormatItem-y":"y","months-standAlone-narrow":["O","Åž","M","N","M","H","T","A","E","E","K","A"],"field-year-relative+-1":"Geçen yıl","field-month-relative+-1":"Geçen ay","dateFormatItem-yyMM":"MM.yy","dateFormatItem-hm":"h:mm a","days-format-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"dateFormatItem-yMMMd":"dd MMM y","eraNames":["Milattan Önce","Milattan Sonra"],"days-format-narrow":["P","P","S","Ç","P","C","C"],"days-standAlone-narrow":["P","P","S","Ç","P","C","C"],"dateFormatItem-MMM":"LLL","field-month":"Ay","dayPeriods-format-wide-am":"ÖÖ","dateFormatItem-MMMMEd":"dd MMMM E","dateFormat-short":"dd.MM.yyyy","field-second":"Saniye","dateFormatItem-yMMMEd":"d MMM y E","field-month-relative+0":"Bu ay","field-month-relative+1":"Gelecek ay","dateFormatItem-Ed":"d E","field-week":"Hafta","dateFormat-medium":"d MMM y","field-year-relative+0":"Bu yıl","field-week-relative+-1":"Geçen hafta","field-year-relative+1":"Gelecek yıl","dateFormatItem-mmss":"mm:ss","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yyyy":"y","field-week-relative+0":"Bu hafta","field-week-relative+1":"Gelecek hafta"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/tr/hebrew.js b/lib/dojo/cldr/nls/tr/hebrew.js new file mode 100644 index 0000000000..86c3bfbe31 --- /dev/null +++ b/lib/dojo/cldr/nls/tr/hebrew.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/tr/hebrew",{"dateFormatItem-yM":"MM/y","dateFormatItem-yQ":"y/Q","dayPeriods-format-wide-pm":"ÖS","dateFormatItem-MMMEd":"d MMMM E","dateFormatItem-yQQQ":"y/QQQ","days-standAlone-wide":["Pazar","Pazartesi","Salı","ÇarÅŸamba","PerÅŸembe","Cuma","Cumartesi"],"dayPeriods-format-wide-am":"ÖÖ","quarters-standAlone-abbr":["Ç1","Ç2","Ç3","Ç4"],"months-standAlone-abbr":["TiÅŸri","HeÅŸvan","Kislev","Tevet","Åževat","Veadar","Adar","Nisan","İyar","Sivan","Tamuz","Av","Elul"],"dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["P","P","S","Ç","P","C","C"],"dateFormat-long":"d MMMM y","dateFormat-medium":"d MMM y","dateFormatItem-yMd":"dd.MM.yyyy","quarters-standAlone-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"quarters-standAlone-narrow":["1.","2.","3.","4."],"months-standAlone-wide":["TiÅŸri","HeÅŸvan","Kislev","Tevet","Åževat","Veadar","Adar","Nisan","İyar","Sivan","Tamuz","Av","Elul"],"dateFormatItem-MMMd":"d MMMM","quarters-format-narrow":["1.","2.","3.","4."],"months-format-abbr":["TiÅŸri","HeÅŸvan","Kislev","Tevet","Åževat","Veadar","Adar","Nisan","İyar","Sivan","Tamuz","Av","Elul"],"quarters-format-abbr":["Ç1","Ç2","Ç3","Ç4"],"days-format-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"days-format-narrow":["P","P","S","Ç","P","C","C"],"dateFormatItem-yMMMd":"dd MMM y","dateFormatItem-MEd":"dd/MM E","days-standAlone-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"days-standAlone-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"dateFormat-short":"dd.MM.yyyy","dateFormatItem-yMMMEd":"d MMM y E","dateFormat-full":"d MMMM y EEEE","dateFormatItem-Md":"dd/MM","dateFormatItem-yMEd":"dd.MM.yyyy E","months-format-wide":["TiÅŸri","HeÅŸvan","Kislev","Tevet","Åževat","Veadar","Adar","Nisan","İyar","Sivan","Tamuz","Av","Elul"],"days-format-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"quarters-format-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"months-format-wide-leap":"Adar II","days-format-wide":["Pazar","Pazartesi","Salı","ÇarÅŸamba","PerÅŸembe","Cuma","Cumartesi"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/tr/islamic.js b/lib/dojo/cldr/nls/tr/islamic.js new file mode 100644 index 0000000000..54a262b404 --- /dev/null +++ b/lib/dojo/cldr/nls/tr/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/tr/islamic",{"dateFormatItem-yM":"MM/y","dateFormatItem-yyyyMMMEd":"dd MMM y G E","dateFormatItem-yQ":"y/Q","dayPeriods-format-wide-pm":"ÖS","dateFormatItem-MMMEd":"dd MMM E","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"y/QQQ","days-standAlone-wide":["Pazar","Pazartesi","Salı","ÇarÅŸamba","PerÅŸembe","Cuma","Cumartesi"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dayPeriods-format-wide-am":"ÖÖ","quarters-standAlone-abbr":["Ç1","Ç2","Ç3","Ç4"],"dateFormatItem-yyyy":"y G","months-standAlone-abbr":["Muharrem","Safer","Rebiülevvel","Rebiülahir","Cemaziyelevvel","Cemaziyelahir","Recep","Åžaban","Ramazan","Åževval","Zilkade","Zilhicce"],"dateFormatItem-Ed":"d E","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["P","P","S","Ç","P","C","C"],"dateFormatItem-yyyyMMMM":"MMMM y G","dateFormat-long":"dd MMMM y G","dateFormatItem-Hm":"HH:mm","dateFormatItem-yyMM":"MM.yy G","dateFormat-medium":"dd MMM y G","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-yyMMM":"MMM yy G","dateFormatItem-yyQQQQ":"QQQQ yy G","dateFormatItem-yMd":"dd.MM.yyyy","quarters-standAlone-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"dateFormatItem-ms":"mm:ss","quarters-standAlone-narrow":["1.","2.","3.","4."],"months-standAlone-wide":["Muharrem","Safer","Rebiülevvel","Rebiülahir","Cemaziyelevvel","Cemaziyelahir","Recep","Åžaban","Ramazan","Åževval","Zilkade","Zilhicce"],"dateFormatItem-yyyyMd":"dd.MM.y G","dateFormatItem-yyyyMMMd":"dd MMM y G","dateFormatItem-yyyyMEd":"dd.MM.y G E","dateFormatItem-MMMd":"dd MMM","quarters-format-narrow":["1.","2.","3.","4."],"dateFormatItem-yyQ":"Q yy G","months-format-abbr":["Muharrem","Safer","Rebiülevvel","Rebiülahir","Cemaziyelevvel","Cemaziyelahir","Recep","Åžaban","Ramazan","Åževval","Zilkade","Zilhicce"],"dateFormatItem-H":"HH","quarters-format-abbr":["Ç1","Ç2","Ç3","Ç4"],"days-format-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"dateFormatItem-mmss":"mm:ss","dateFormatItem-M":"L","days-format-narrow":["P","P","S","Ç","P","C","C"],"dateFormatItem-yMMMd":"dd MMM y","dateFormatItem-MEd":"dd.MM E","dateFormatItem-yyyyQQQ":"QQQ y G","days-standAlone-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"dateFormat-short":"dd.MM.yyyy G","dateFormatItem-yyyyM":"MM.y G","dateFormatItem-yMMMEd":"d MMM y E","dateFormat-full":"dd MMMM y G EEEE","dateFormatItem-Md":"dd.MM","dateFormatItem-yyyyQ":"Q y G","dateFormatItem-yMEd":"dd.MM.yyyy E","months-format-wide":["Muharrem","Safer","Rebiülevvel","Rebiülahir","Cemaziyelevvel","Cemaziyelahir","Recep","Åžaban","Ramazan","Åževval","Zilkade","Zilhicce"],"days-format-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-d":"d","quarters-format-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"days-format-wide":["Pazar","Pazartesi","Salı","ÇarÅŸamba","PerÅŸembe","Cuma","Cumartesi"]}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/tr/number.js b/lib/dojo/cldr/nls/tr/number.js new file mode 100644 index 0000000000..cd0960dbf0 --- /dev/null +++ b/lib/dojo/cldr/nls/tr/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/tr/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"%#,##0","list":";","infinity":"∞","minusSign":"-","decimal":",","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 trilyon","decimalFormat-short":"000 T"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-hant/buddhist.js b/lib/dojo/cldr/nls/zh-hant/buddhist.js new file mode 100644 index 0000000000..b45dfcf9d3 --- /dev/null +++ b/lib/dojo/cldr/nls/zh-hant/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/zh-hant/buddhist",{"dateFormatItem-yM":"Gy/M","dateFormatItem-yQ":"Gyå¹´QQQ","dayPeriods-format-wide-pm":"下åˆ","eraNames":["佛曆"],"dateFormatItem-MMMEd":"M月dæ—¥E","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-yQQQ":"Gyå¹´QQQ","dateFormatItem-MMdd":"MM/dd","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-MMM":"LLL","dateFormatItem-Gy":"Gyå¹´","dayPeriods-format-wide-am":"上åˆ","quarters-standAlone-abbr":["1季度","2季度","3季度","4季度"],"dateFormatItem-y":"Gyå¹´","timeFormat-full":"zzzzah時mm分ssç§’","dateFormatItem-yyyy":"Gyå¹´","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-Ed":"d日(E)","dateFormatItem-yMMM":"Gyå¹´M月","days-standAlone-narrow":["æ—¥","一","二","三","å››","五","å…­"],"eraAbbr":["佛曆"],"dateFormat-long":"Gyå¹´M月dæ—¥","timeFormat-medium":"ah:mm:ss","dateFormatItem-Hm":"H:mm","dateFormatItem-yyMM":"Gyy/MM","dateFormat-medium":"Gy/M/d","dateFormatItem-Hms":"H:mm:ss","dayPeriods-format-narrow-pm":"下åˆ","dateFormatItem-yyMMM":"Gyyå¹´M月","dateFormatItem-yMd":"Gy/M/d","quarters-standAlone-wide":["第一季度","第二季度","第三季度","第四季度"],"dateFormatItem-ms":"mm:ss","dayPeriods-format-narrow-am":"上åˆ","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","乿œˆ","åæœˆ","å一月","å二月"],"dateFormatItem-MMMd":"M月dæ—¥","dateFormatItem-yyQ":"Gyy年第Q季度","timeFormat-long":"zah時mm分ssç§’","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-H":"H時","timeFormat-short":"ah:mm","quarters-format-abbr":["1å­£","2å­£","3å­£","4å­£"],"dateFormatItem-MMMMdd":"M月ddæ—¥","days-format-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dateFormatItem-M":"M月","days-format-narrow":["æ—¥","一","二","三","å››","五","å…­"],"dateFormatItem-yMMMd":"Gyå¹´M月dæ—¥","dateFormatItem-MEd":"M/d(E)","days-standAlone-short":["æ—¥","一","二","三","å››","五","å…­"],"dateFormatItem-hm":"ah:mm","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateFormat-short":"Gy/M/d","dateFormatItem-yyyyM":"yå¹´M月","dateFormatItem-yMMMEd":"Gyå¹´M月dæ—¥E","dateFormat-full":"Gyå¹´M月dæ—¥EEEE","dateFormatItem-Md":"M/d","dateFormatItem-yMEd":"Gy/M/d(E)","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"days-format-short":["æ—¥","一","二","三","å››","五","å…­"],"dateFormatItem-yyyyMMM":"Gyå¹´M月","dateFormatItem-d":"dæ—¥","quarters-format-wide":["第1å­£","第2å­£","第3å­£","第4å­£"],"eraNarrow":["佛曆"],"days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-h":"ah時"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-hant/currency.js b/lib/dojo/cldr/nls/zh-hant/currency.js new file mode 100644 index 0000000000..cf31d117db --- /dev/null +++ b/lib/dojo/cldr/nls/zh-hant/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/zh-hant/currency",{"HKD_displayName":"港幣","CHF_displayName":"瑞士法郎","JPY_symbol":"Â¥","CAD_displayName":"加幣","HKD_symbol":"HK$","CNY_displayName":"人民幣","USD_symbol":"$","AUD_displayName":"澳幣","JPY_displayName":"日圓","CAD_symbol":"CA$","USD_displayName":"美金","EUR_symbol":"€","CNY_symbol":"ï¿¥","GBP_displayName":"英鎊","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"æ­å…ƒ"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-hant/gregorian.js b/lib/dojo/cldr/nls/zh-hant/gregorian.js new file mode 100644 index 0000000000..282da047bb --- /dev/null +++ b/lib/dojo/cldr/nls/zh-hant/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/zh-hant/gregorian",{"days-standAlone-short":["æ—¥","一","二","三","å››","五","å…­"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"週天","dateFormatItem-yQQQ":"yå¹´QQQ","dateFormatItem-yMEd":"y/M/d(E)","dateFormatItem-MMMEd":"M月dæ—¥E","eraNarrow":["西元å‰","西元"],"dayPeriods-format-wide-earlyMorning":"清晨","dayPeriods-format-wide-morning":"上åˆ","days-format-short":["æ—¥","一","二","三","å››","五","å…­"],"dateFormat-long":"yå¹´M月dæ—¥","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"下åˆ","dateFormat-full":"yå¹´M月dæ—¥EEEE","dateFormatItem-Md":"M/d","dayPeriods-format-narrow-midDay":"中åˆ","dayPeriods-format-wide-noon":"中åˆ","dateFormatItem-yMd":"y/M/d","field-era":"年代","dateFormatItem-yM":"y/M","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"timeFormat-short":"ah:mm","quarters-format-wide":["第1å­£","第2å­£","第3å­£","第4å­£"],"timeFormat-long":"zah時mm分ssç§’","field-year":"å¹´","dateFormatItem-yMMM":"yå¹´M月","dateFormatItem-yQ":"yå¹´QQQ","dateFormatItem-yyyyMMMM":"yå¹´M月","field-hour":"å°æ™‚","dateFormatItem-MMdd":"MM/dd","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-yyQ":"yy年第Q季度","timeFormat-full":"zzzzah時mm分ssç§’","dayPeriods-format-narrow-morning":"上åˆ","field-day-relative+0":"今天","field-day-relative+1":"明天","field-day-relative+2":"後天","dateFormatItem-H":"H時","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-format-abbr":["1å­£","2å­£","3å­£","4å­£"],"quarters-standAlone-wide":["第1å­£","第2å­£","第3å­£","第4å­£"],"dateFormatItem-M":"M月","dateFormatItem-yyMMM":"yyå¹´M月","timeFormat-medium":"ah:mm:ss","dateFormatItem-Hm":"H:mm","quarters-standAlone-abbr":["1å­£","2å­£","3å­£","4å­£"],"eraAbbr":["西元å‰","西元"],"field-minute":"分é˜","field-dayperiod":"上åˆ/下åˆ","days-standAlone-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dayPeriods-format-wide-night":"晚上","dateFormatItem-d":"dæ—¥","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"昨天","dateFormatItem-h":"ah時","dateTimeFormat-long":"{1}{0}","dayPeriods-format-narrow-am":"上åˆ","field-day-relative+-2":"å‰å¤©","dateFormatItem-MMMd":"M月dæ—¥","dayPeriods-format-wide-midDay":"中åˆ","dateFormatItem-MEd":"M/d(E)","dateTimeFormat-full":"{1}{0}","field-day":"æ—¥","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-zone":"時å€","dateFormatItem-y":"yå¹´","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"去年","dayPeriods-format-narrow-night":"晚上","field-month-relative+-1":"上個月","dateFormatItem-yyMM":"yy-MM","dateFormatItem-hm":"ah:mm","dayPeriods-format-narrow-weeHours":"凌晨","days-format-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dateFormatItem-yMMMd":"yå¹´M月dæ—¥","eraNames":["西元å‰","西元"],"dayPeriods-format-narrow-earlyMorning":"清晨","days-standAlone-narrow":["æ—¥","一","二","三","å››","五","å…­"],"dateFormatItem-MMM":"LLL","field-month":"月","dayPeriods-format-wide-am":"上åˆ","dateFormatItem-MMMMdd":"M月ddæ—¥","dayPeriods-format-wide-weeHours":"凌晨","dateFormat-short":"y/M/d","dayPeriods-format-wide-afternoon":"下åˆ","dayPeriods-format-narrow-afternoon":"下åˆ","dayPeriods-format-narrow-noon":"中åˆ","field-second":"ç§’","dateFormatItem-yMMMEd":"yå¹´M月dæ—¥E","field-month-relative+0":"本月","field-month-relative+1":"下個月","dateFormatItem-Ed":"d日(E)","field-week":"週","dateFormat-medium":"yyyy/M/d","field-year-relative+0":"今年","field-week-relative+-1":"上週","dateFormatItem-yyyyM":"yå¹´M月","field-year-relative+1":"明年","dayPeriods-format-narrow-pm":"下åˆ","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-yyyy":"yå¹´","field-week-relative+0":"本週","field-week-relative+1":"下週"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-hant/hebrew.js b/lib/dojo/cldr/nls/zh-hant/hebrew.js new file mode 100644 index 0000000000..7ba747b986 --- /dev/null +++ b/lib/dojo/cldr/nls/zh-hant/hebrew.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/zh-hant/hebrew",{"dateFormatItem-yM":"y/M","dateFormatItem-yQ":"yå¹´QQQ","months-standAlone-abbr-leap":"äºžé”æœˆ II","dayPeriods-format-wide-pm":"下åˆ","eraNames":["創世紀元"],"dateFormatItem-MMMEd":"M月dæ—¥E","dateTimeFormat-full":"{1}{0}","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-yQQQ":"yå¹´QQQ","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dayPeriods-format-wide-am":"上åˆ","months-format-abbr-leap":"äºžé”æœˆ II","quarters-standAlone-abbr":["1季度","2季度","3季度","4季度"],"dateFormatItem-y":"yå¹´","timeFormat-full":"zzzzah時mm分ssç§’","months-standAlone-abbr":["ææ–¯åˆ©æœˆ","ç‘ªè¥¿ç­æœˆ","åŸºæ–¯æµæœˆ","æåˆ¥æœˆ","細罷特月","äºžé”æœˆ I","äºžé”æœˆ","尼散月","ä»¥ç¥æœˆ","西彎月","æ­æ¨¡æ–¯æœˆ","埃波月","以祿月"],"dateFormatItem-Ed":"d日(E)","dateFormatItem-yMMM":"yå¹´M月","days-standAlone-narrow":["æ—¥","一","二","三","å››","五","å…­"],"eraAbbr":["創世紀元"],"dateFormat-long":"yå¹´M月dæ—¥","timeFormat-medium":"ah:mm:ss","dateFormatItem-Hm":"H:mm","dateFormat-medium":"yyyy/M/d","dateFormatItem-Hms":"H:mm:ss","dayPeriods-format-narrow-pm":"下åˆ","dateFormatItem-yMd":"y/M/d","quarters-standAlone-wide":["第一季度","第二季度","第三季度","第四季度"],"dayPeriods-format-narrow-am":"上åˆ","dateTimeFormat-long":"{1}{0}","months-standAlone-wide":["ææ–¯åˆ©æœˆ","ç‘ªè¥¿ç­æœˆ","åŸºæ–¯æµæœˆ","æåˆ¥æœˆ","細罷特月","äºžé”æœˆ I","äºžé”æœˆ","尼散月","ä»¥ç¥æœˆ","西彎月","æ­æ¨¡æ–¯æœˆ","埃波月","以祿月"],"dateFormatItem-MMMd":"M月dæ—¥","timeFormat-long":"zah時mm分ssç§’","months-format-abbr":["ææ–¯åˆ©æœˆ","ç‘ªè¥¿ç­æœˆ","åŸºæ–¯æµæœˆ","æåˆ¥æœˆ","細罷特月","äºžé”æœˆ I","äºžé”æœˆ","尼散月","ä»¥ç¥æœˆ","西彎月","æ­æ¨¡æ–¯æœˆ","埃波月","以祿月"],"dateFormatItem-H":"H時","timeFormat-short":"ah:mm","quarters-format-abbr":["1å­£","2å­£","3å­£","4å­£"],"days-format-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dateFormatItem-M":"M月","days-format-narrow":["æ—¥","一","二","三","å››","五","å…­"],"dateFormatItem-yMMMd":"yå¹´M月dæ—¥","dateFormatItem-MEd":"M/d(E)","days-standAlone-short":["æ—¥","一","二","三","å››","五","å…­"],"dateFormatItem-hm":"ah:mm","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"months-standAlone-wide-leap":"äºžé”æœˆ II","dateFormat-short":"y/M/d","dateFormatItem-yMMMEd":"yå¹´M月dæ—¥E","dateFormat-full":"yå¹´M月dæ—¥EEEE","dateFormatItem-Md":"M/d","dateFormatItem-yMEd":"y/M/d(E)","months-format-wide":["ææ–¯åˆ©æœˆ","ç‘ªè¥¿ç­æœˆ","åŸºæ–¯æµæœˆ","æåˆ¥æœˆ","細罷特月","äºžé”æœˆ I","äºžé”æœˆ","尼散月","ä»¥ç¥æœˆ","西彎月","æ­æ¨¡æ–¯æœˆ","埃波月","以祿月"],"days-format-short":["æ—¥","一","二","三","å››","五","å…­"],"dateFormatItem-d":"dæ—¥","quarters-format-wide":["第1å­£","第2å­£","第3å­£","第4å­£"],"months-format-wide-leap":"äºžé”æœˆ II","eraNarrow":["創世紀元"],"days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-h":"ah時"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-hant/islamic.js b/lib/dojo/cldr/nls/zh-hant/islamic.js new file mode 100644 index 0000000000..3e9155a9a7 --- /dev/null +++ b/lib/dojo/cldr/nls/zh-hant/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/zh-hant/islamic",{"dateFormatItem-yM":"y/M","dateFormatItem-yyyyMMMEd":"Gyå¹´M月dæ—¥E","dateFormatItem-yQ":"yå¹´QQQ","dayPeriods-format-wide-pm":"下åˆ","eraNames":["伊斯蘭曆"],"dateFormatItem-MMMEd":"M月dæ—¥E","dateTimeFormat-full":"{1}{0}","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-yQQQ":"yå¹´QQQ","dateFormatItem-MMdd":"MM/dd","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-Gy":"Gyå¹´","dayPeriods-format-wide-am":"上åˆ","quarters-standAlone-abbr":["1季度","2季度","3季度","4季度"],"dateFormatItem-y":"yå¹´","timeFormat-full":"zzzzah時mm分ssç§’","dateFormatItem-yyyy":"Gyå¹´","months-standAlone-abbr":["穆哈蘭姆月","色法爾月","賴比月 I","賴比月 II","䏻馬锿œˆ I","䏻馬锿œˆ II","è³´å“²åœæœˆ","èˆçˆ¾é‚¦æœˆ","賴買丹月","閃瓦魯月","都爾喀爾德月","都爾黑哲月"],"dateFormatItem-Ed":"d日(E)","dateFormatItem-yMMM":"yå¹´M月","days-standAlone-narrow":["æ—¥","一","二","三","å››","五","å…­"],"eraAbbr":["伊斯蘭曆"],"dateFormat-long":"Gyå¹´M月dæ—¥","timeFormat-medium":"ah:mm:ss","dateFormatItem-Hm":"H:mm","dateFormat-medium":"Gy/M/d","dateFormatItem-Hms":"H:mm:ss","dayPeriods-format-narrow-pm":"下åˆ","dateFormatItem-yMd":"Gy/M/d","quarters-standAlone-wide":["第一季度","第二季度","第三季度","第四季度"],"dateFormatItem-ms":"mm:ss","dayPeriods-format-narrow-am":"上åˆ","dateTimeFormat-long":"{1}{0}","months-standAlone-wide":["穆哈蘭姆月","色法爾月","賴比月 I","賴比月 II","䏻馬锿œˆ I","䏻馬锿œˆ II","è³´å“²åœæœˆ","èˆçˆ¾é‚¦æœˆ","賴買丹月","閃瓦魯月","都爾喀爾德月","都爾黑哲月"],"dateFormatItem-yyyyMd":"Gy/M/d","dateFormatItem-yyyyMMMd":"Gyå¹´M月dæ—¥","dateFormatItem-MMMd":"M月dæ—¥","months-format-abbr":["穆哈蘭姆月","色法爾月","賴比月 I","賴比月 II","䏻馬锿œˆ I","䏻馬锿œˆ II","è³´å“²åœæœˆ","èˆçˆ¾é‚¦æœˆ","賴買丹月","閃瓦魯月","都爾喀爾德月","都爾黑哲月"],"timeFormat-long":"zah時mm分ssç§’","dateFormatItem-H":"H時","timeFormat-short":"ah:mm","quarters-format-abbr":["1å­£","2å­£","3å­£","4å­£"],"dateFormatItem-MMMMdd":"M月ddæ—¥","days-format-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dateFormatItem-M":"M月","days-format-narrow":["æ—¥","一","二","三","å››","五","å…­"],"dateFormatItem-yMMMd":"Gyå¹´M月dæ—¥","dateFormatItem-MEd":"M/d(E)","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-standAlone-short":["æ—¥","一","二","三","å››","五","å…­"],"dateFormatItem-hm":"ah:mm","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateFormat-short":"Gy/M/d","dateFormatItem-yyyyM":"Gy/M","dateFormatItem-yMMMEd":"yå¹´M月dæ—¥E","dateFormat-full":"Gyå¹´M月dæ—¥EEEE","dateFormatItem-Md":"M/d","dateFormatItem-yMEd":"y/M/d(E)","dateFormatItem-yyyyQ":"Gyå¹´QQQ","months-format-wide":["穆哈蘭姆月","色法爾月","賴比月 I","賴比月 II","䏻馬锿œˆ I","䏻馬锿œˆ II","è³´å“²åœæœˆ","èˆçˆ¾é‚¦æœˆ","賴買丹月","閃瓦魯月","都爾喀爾德月","都爾黑哲月"],"days-format-short":["æ—¥","一","二","三","å››","五","å…­"],"dateFormatItem-yyyyMMM":"Gyå¹´M月","dateFormatItem-d":"dæ—¥","quarters-format-wide":["第1å­£","第2å­£","第3å­£","第4å­£"],"eraNarrow":["伊斯蘭曆"],"days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-h":"ah時"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-hant/number.js b/lib/dojo/cldr/nls/zh-hant/number.js new file mode 100644 index 0000000000..51f24314e4 --- /dev/null +++ b/lib/dojo/cldr/nls/zh-hant/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/zh-hant/number",{"group":",","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":".","nan":"éžæ•¸å€¼","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00","plusSign":"+","decimalFormat-long":"000å…†","decimalFormat-short":"000T"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-hk/currency.js b/lib/dojo/cldr/nls/zh-hk/currency.js new file mode 100644 index 0000000000..b92686b815 --- /dev/null +++ b/lib/dojo/cldr/nls/zh-hk/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/zh-hk/currency",{"HKD_displayName":"港幣","JPY_symbol":"Â¥","CAD_displayName":"加幣","CNY_displayName":"人民幣","USD_symbol":"$","AUD_displayName":"澳幣","JPY_displayName":"日圓","USD_displayName":"美金","GBP_displayName":"英鎊","EUR_displayName":"æ­å…ƒ"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-hk/gregorian.js b/lib/dojo/cldr/nls/zh-hk/gregorian.js new file mode 100644 index 0000000000..32d28d0abe --- /dev/null +++ b/lib/dojo/cldr/nls/zh-hk/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/zh-hk/gregorian",{"dateFormatItem-yQ":"yå¹´QQQ","field-minute":"分é˜","eraNames":["西元å‰","西元"],"field-weekday":"週天","field-era":"年代","field-hour":"å°æ™‚","quarters-standAlone-abbr":["第1å­£","第2å­£","第3å­£","第4å­£"],"timeFormat-full":"zzzzah時mm分ssç§’","dateFormatItem-yyyy":"yå¹´","dateFormatItem-Ed":"d日(E)","eraAbbr":["西元å‰","西元"],"field-day-relative+2":"後天","dateFormatItem-yyyyMMMM":"yå¹´M月","field-zone":"時å€","dateFormatItem-Hm":"H:mm","field-week-relative+-1":"上週","dateFormatItem-yyMM":"yy-MM","dateFormat-medium":"yyyy/M/d","dateFormatItem-Hms":"H:mm:ss","quarters-standAlone-wide":["第1å­£","第2å­£","第3å­£","第4å­£"],"months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-week":"週","field-week-relative+0":"本週","field-week-relative+1":"下週","timeFormat-long":"zah時mm分ssç§’","field-month-relative+1":"下個月","dateFormatItem-H":"H時","quarters-format-abbr":["第1å­£","第2å­£","第3å­£","第4å­£"],"field-second":"ç§’","dateFormatItem-MEd":"M/d(E)","dateFormat-short":"y/M/d","dateFormatItem-yyyyM":"yå¹´M月","dateFormatItem-yMEd":"y/M/d(E)","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-format-wide":["第1å­£","第2å­£","第3å­£","第4å­£"],"field-month-relative+-1":"上個月","eraNarrow":["西元å‰","西元"],"dateFormatItem-h":"ah時"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-hk/number.js b/lib/dojo/cldr/nls/zh-hk/number.js new file mode 100644 index 0000000000..99df11c332 --- /dev/null +++ b/lib/dojo/cldr/nls/zh-hk/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/zh-hk/number",{"currencyFormat":"¤#,##0.00","decimalFormat-short":"000T","nan":"éžæ•¸å€¼"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-tw/currency.js b/lib/dojo/cldr/nls/zh-tw/currency.js new file mode 100644 index 0000000000..f8193eff84 --- /dev/null +++ b/lib/dojo/cldr/nls/zh-tw/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/zh-tw/currency",{"HKD_displayName":"港幣","JPY_symbol":"Â¥","CAD_displayName":"加幣","CNY_displayName":"人民幣","USD_symbol":"$","AUD_displayName":"澳幣","JPY_displayName":"日圓","USD_displayName":"美金","GBP_displayName":"英鎊","EUR_displayName":"æ­å…ƒ"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-tw/gregorian.js b/lib/dojo/cldr/nls/zh-tw/gregorian.js new file mode 100644 index 0000000000..e5ed515193 --- /dev/null +++ b/lib/dojo/cldr/nls/zh-tw/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/zh-tw/gregorian",{"dateFormatItem-yQ":"yå¹´QQQ","field-minute":"分é˜","eraNames":["西元å‰","西元"],"field-weekday":"週天","field-era":"年代","field-hour":"å°æ™‚","quarters-standAlone-abbr":["第1å­£","第2å­£","第3å­£","第4å­£"],"timeFormat-full":"zzzzah時mm分ssç§’","dateFormatItem-yyyy":"yå¹´","dateFormatItem-Ed":"d日(E)","eraAbbr":["西元å‰","西元"],"field-day-relative+2":"後天","dateFormatItem-yyyyMMMM":"yå¹´M月","field-zone":"時å€","dateFormatItem-Hm":"H:mm","field-week-relative+-1":"上週","dateFormatItem-yyMM":"yy-MM","dateFormat-medium":"yyyy/M/d","dateFormatItem-Hms":"H:mm:ss","quarters-standAlone-wide":["第1å­£","第2å­£","第3å­£","第4å­£"],"months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-week":"週","field-week-relative+0":"本週","field-week-relative+1":"下週","timeFormat-long":"zah時mm分ssç§’","field-month-relative+1":"下個月","dateFormatItem-H":"H時","quarters-format-abbr":["第1å­£","第2å­£","第3å­£","第4å­£"],"field-second":"ç§’","dateFormatItem-MEd":"M/d(E)","dateFormat-short":"y/M/d","dateFormatItem-yyyyM":"yå¹´M月","dateFormatItem-yMEd":"y/M/d(E)","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-format-wide":["第1å­£","第2å­£","第3å­£","第4å­£"],"field-month-relative+-1":"上個月","eraNarrow":["西元å‰","西元"],"dateFormatItem-h":"ah時"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-tw/number.js b/lib/dojo/cldr/nls/zh-tw/number.js new file mode 100644 index 0000000000..dd92e32131 --- /dev/null +++ b/lib/dojo/cldr/nls/zh-tw/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/zh-tw/number",{"currencyFormat":"¤#,##0.00","decimalFormat-short":"000T","nan":"éžæ•¸å€¼"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh/buddhist.js b/lib/dojo/cldr/nls/zh/buddhist.js new file mode 100644 index 0000000000..e8fc22202a --- /dev/null +++ b/lib/dojo/cldr/nls/zh/buddhist.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/zh/buddhist",{"dateFormatItem-yM":"Gyå¹´M月","dateFormatItem-yyyyMMMEd":"Gyå¹´M月dæ—¥E","dateFormatItem-yQ":"Gy年第Q季度","dayPeriods-format-wide-pm":"下åˆ","eraNames":["佛历"],"dateFormatItem-MMMEd":"M月dæ—¥E","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-yQQQ":"Gy年第Q季度","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-MMM":"LLL","dateFormatItem-Gy":"Gyå¹´","dayPeriods-format-wide-am":"上åˆ","quarters-standAlone-abbr":["1季度","2季度","3季度","4季度"],"dateFormatItem-y":"Gyå¹´","timeFormat-full":"zzzzah:mm:ss","dateFormatItem-yyyy":"Gyå¹´","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-Ed":"dæ—¥E","dateFormatItem-yMMM":"Gyå¹´M月","days-standAlone-narrow":["æ—¥","一","二","三","å››","五","å…­"],"eraAbbr":["佛历"],"dateFormat-long":"Gyå¹´M月dæ—¥","timeFormat-medium":"ah:mm:ss","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"Gyyyy-M-d","dateFormatItem-Hms":"HH:mm:ss","dayPeriods-format-narrow-pm":"下åˆ","dateFormatItem-yMd":"y/M/d","quarters-standAlone-wide":["第一季度","第二季度","第三季度","第四季度"],"dateFormatItem-ms":"mm:ss","dayPeriods-format-narrow-am":"上åˆ","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","乿œˆ","åæœˆ","å一月","å二月"],"dateFormatItem-yyyyMd":"Gy-M-d","dateFormatItem-yyyyMMMd":"Gyå¹´M月dæ—¥","dateFormatItem-yyyyMEd":"Gy-M-dE","dateFormatItem-MMMd":"M月dæ—¥","timeFormat-long":"zah:mm:ss","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-H":"Hæ—¶","timeFormat-short":"ah:mm","quarters-format-abbr":["1季度","2季度","3季度","4季度"],"days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-M":"M月","days-format-narrow":["æ—¥","一","二","三","å››","五","å…­"],"dateFormatItem-yMMMd":"yå¹´M月dæ—¥","dateFormatItem-MEd":"M-dE","dateFormatItem-yyyyQQQ":"Gyå¹´QQQQ","days-standAlone-short":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-hm":"ah:mm","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateFormat-short":"Gy-M-d","dateFormatItem-yyyyM":"Gy-M","dateFormatItem-yMMMEd":"Gyå¹´M月dæ—¥E","dateFormat-full":"Gyå¹´M月dæ—¥EEEE","dateFormatItem-Md":"M-d","dateFormatItem-yMEd":"Gyå¹´M月d日,E","dateFormatItem-yyyyQ":"Gyå¹´QQQ","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","乿œˆ","åæœˆ","å一月","å二月"],"days-format-short":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-yyyyMMM":"Gyå¹´M月","dateFormatItem-d":"dæ—¥","quarters-format-wide":["第一季度","第二季度","第三季度","第四季度"],"eraNarrow":["佛历"],"days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-h":"ahæ—¶"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh/currency.js b/lib/dojo/cldr/nls/zh/currency.js new file mode 100644 index 0000000000..1d67eee602 --- /dev/null +++ b/lib/dojo/cldr/nls/zh/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/zh/currency",{"HKD_displayName":"港元","CHF_displayName":"瑞士法郎","JPY_symbol":"JPÂ¥","CAD_displayName":"加拿大元","HKD_symbol":"HK$","CNY_displayName":"人民å¸","USD_symbol":"US$","AUD_displayName":"澳大利亚元","JPY_displayName":"日元","CAD_symbol":"CA$","USD_displayName":"美元","EUR_symbol":"€","CNY_symbol":"ï¿¥","GBP_displayName":"英镑","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"欧元"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh/gregorian.js b/lib/dojo/cldr/nls/zh/gregorian.js new file mode 100644 index 0000000000..080ca94372 --- /dev/null +++ b/lib/dojo/cldr/nls/zh/gregorian.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/zh/gregorian",{"days-standAlone-short":["周日","周一","周二","周三","周四","周五","周六"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"星期","dateFormatItem-yQQQ":"yå¹´QQQ","dateFormatItem-yMEd":"y/M/dEEE","dateFormatItem-MMMEd":"M月dæ—¥E","eraNarrow":["公元å‰","公元"],"dayPeriods-format-wide-earlyMorning":"清晨","dayPeriods-format-wide-morning":"上åˆ","days-format-short":["周日","周一","周二","周三","周四","周五","周六"],"dateFormat-long":"yå¹´M月dæ—¥","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","乿œˆ","åæœˆ","å一月","å二月"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"下åˆ","dateFormat-full":"yå¹´M月dæ—¥EEEE","dateFormatItem-Md":"M/d","dayPeriods-format-narrow-midDay":"中åˆ","dayPeriods-format-wide-noon":"中åˆ","dateFormatItem-yMd":"y/M/d","dateFormatItem-yM":"y/M","field-era":"时期","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","乿œˆ","åæœˆ","å一月","å二月"],"timeFormat-short":"ah:mm","quarters-format-wide":["第一季度","第二季度","第三季度","第四季度"],"timeFormat-long":"zah:mm:ss","dateFormatItem-yMMM":"yå¹´M月","dateFormatItem-yQ":"y年第Q季度","field-year":"å¹´","dateFormatItem-MMdd":"MM/dd","dateFormatItem-yyyyMMMM":"yyyyå¹´M月","field-hour":"å°æ—¶","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-yyQ":"yy年第Q季度","timeFormat-full":"zzzzah:mm:ss","dayPeriods-format-narrow-morning":"上åˆ","field-day-relative+0":"今天","field-day-relative+1":"明天","field-day-relative+2":"åŽå¤©","dateFormatItem-H":"Hæ—¶","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-format-abbr":["1季度","2季度","3季度","4季度"],"quarters-standAlone-wide":["第一季度","第二季度","第三季度","第四季度"],"dateFormatItem-M":"M月","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yyMMM":"yyå¹´M月","timeFormat-medium":"ah:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["1季度","2季度","3季度","4季度"],"eraAbbr":["公元å‰","公元"],"field-minute":"分钟","field-dayperiod":"上åˆ/下åˆ","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dayPeriods-format-wide-night":"晚上","dateFormatItem-d":"dæ—¥","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"昨天","dateFormatItem-h":"ahæ—¶","dateTimeFormat-long":"{1}{0}","dayPeriods-format-narrow-am":"上åˆ","field-day-relative+-2":"å‰å¤©","dateFormatItem-MMMd":"M月dæ—¥","dayPeriods-format-wide-midDay":"中åˆ","dateFormatItem-MEd":"M/dE","dateTimeFormat-full":"{1}{0}","field-day":"æ—¥","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-zone":"时区","dateFormatItem-y":"yå¹´","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"去年","dayPeriods-format-narrow-night":"晚上","field-month-relative+-1":"上个月","dateFormatItem-yyMM":"yyå¹´M月","dateFormatItem-hm":"ah:mm","dayPeriods-format-narrow-weeHours":"凌晨","days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"eraNames":["公元å‰","公元"],"dateFormatItem-yMMMd":"yå¹´M月dæ—¥","days-format-narrow":["æ—¥","一","二","三","å››","五","å…­"],"dayPeriods-format-narrow-earlyMorning":"清晨","days-standAlone-narrow":["æ—¥","一","二","三","å››","五","å…­"],"dateFormatItem-MMM":"LLL","field-month":"月","dayPeriods-format-wide-am":"上åˆ","dateFormatItem-MMMMdd":"M月ddæ—¥","dayPeriods-format-wide-weeHours":"凌晨","dateFormat-short":"yy-M-d","dayPeriods-format-wide-afternoon":"下åˆ","dayPeriods-format-narrow-afternoon":"下åˆ","dayPeriods-format-narrow-noon":"中åˆ","field-second":"ç§’é’Ÿ","dateFormatItem-yMMMEd":"yå¹´M月dæ—¥E","field-month-relative+0":"本月","field-month-relative+1":"下个月","dateFormatItem-Ed":"dæ—¥E","field-week":"周","dateFormat-medium":"yå¹´M月dæ—¥","field-year-relative+0":"今年","field-week-relative+-1":"上周","dateFormatItem-yyyyM":"yyyyå¹´M月","field-year-relative+1":"明年","dayPeriods-format-narrow-pm":"下åˆ","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-yyyy":"yyyyå¹´","field-week-relative+0":"本周","field-week-relative+1":"下周"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh/hebrew.js b/lib/dojo/cldr/nls/zh/hebrew.js new file mode 100644 index 0000000000..b831ea7bc2 --- /dev/null +++ b/lib/dojo/cldr/nls/zh/hebrew.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/zh/hebrew",{"dateFormatItem-yM":"y/M","dateFormatItem-yQ":"y年第Q季度","months-standAlone-abbr-leap":"é—°7月","dayPeriods-format-wide-pm":"下åˆ","eraNames":["希伯æ¥åކ"],"dateFormatItem-MMMEd":"M月dæ—¥E","dateTimeFormat-full":"{1}{0}","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-yQQQ":"yå¹´QQQ","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dayPeriods-format-wide-am":"上åˆ","months-format-abbr-leap":"é—°7月","quarters-standAlone-abbr":["1季度","2季度","3季度","4季度"],"dateFormatItem-y":"yå¹´","timeFormat-full":"zzzzah:mm:ss","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"dateFormatItem-Ed":"dæ—¥E","dateFormatItem-yMMM":"yå¹´M月","days-standAlone-narrow":["æ—¥","一","二","三","å››","五","å…­"],"eraAbbr":["希伯æ¥åކ"],"dateFormat-long":"yå¹´M月dæ—¥","timeFormat-medium":"ah:mm:ss","dateFormat-medium":"yå¹´M月dæ—¥","dayPeriods-format-narrow-pm":"下åˆ","dateFormatItem-yMd":"y/M/d","quarters-standAlone-wide":["第一季度","第二季度","第三季度","第四季度"],"dayPeriods-format-narrow-am":"上åˆ","dateTimeFormat-long":"{1}{0}","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","乿œˆ","åæœˆ","å一月","å二月","å三月"],"dateFormatItem-MMMd":"M月dæ—¥","timeFormat-long":"zah:mm:ss","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"timeFormat-short":"ah:mm","dateFormatItem-H":"Hæ—¶","quarters-format-abbr":["1季度","2季度","3季度","4季度"],"days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-M":"M月","days-format-narrow":["æ—¥","一","二","三","å››","五","å…­"],"dateFormatItem-yMMMd":"yå¹´M月dæ—¥","dateFormatItem-MEd":"M/dE","days-standAlone-short":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-hm":"ah:mm","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"months-standAlone-wide-leap":"闰七月","dateFormat-short":"yy-M-d","dateFormatItem-yMMMEd":"yå¹´M月dæ—¥E","dateFormat-full":"yå¹´M月dæ—¥EEEE","dateFormatItem-Md":"M/d","dateFormatItem-yMEd":"y/M/dEEE","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","乿œˆ","åæœˆ","å一月","å二月","å三月"],"days-format-short":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-d":"dæ—¥","quarters-format-wide":["第一季度","第二季度","第三季度","第四季度"],"months-format-wide-leap":"闰七月","eraNarrow":["希伯æ¥åކ"],"days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-h":"ahæ—¶"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh/islamic.js b/lib/dojo/cldr/nls/zh/islamic.js new file mode 100644 index 0000000000..653b41b1a6 --- /dev/null +++ b/lib/dojo/cldr/nls/zh/islamic.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/zh/islamic",{"dateFormatItem-yM":"yå¹´M月","dateFormatItem-yQ":"y年第Q季度","dayPeriods-format-wide-pm":"下åˆ","eraNames":["回历"],"dateFormatItem-MMMEd":"M月dæ—¥E","dateTimeFormat-full":"{1}{0}","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-yQQQ":"y年第Q季度","dateFormatItem-MMdd":"MM-dd","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dayPeriods-format-wide-am":"上åˆ","quarters-standAlone-abbr":["1季度","2季度","3季度","4季度"],"dateFormatItem-y":"yå¹´","timeFormat-full":"zzzzah:mm:ss","dateFormatItem-yyyy":"GGGyyå¹´","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-Ed":"dæ—¥E","dateFormatItem-yMMM":"yå¹´M月","days-standAlone-narrow":["æ—¥","一","二","三","å››","五","å…­"],"eraAbbr":["回历"],"dateFormat-long":"Gyå¹´M月dæ—¥","timeFormat-medium":"ah:mm:ss","dateFormatItem-Hm":"H:mm","dateFormat-medium":"Gyå¹´M月dæ—¥","dateFormatItem-Hms":"H:mm:ss","dayPeriods-format-narrow-pm":"下åˆ","dateFormatItem-yMd":"y/M/d","quarters-standAlone-wide":["第一季度","第二季度","第三季度","第四季度"],"dateFormatItem-ms":"mm:ss","dayPeriods-format-narrow-am":"上åˆ","dateTimeFormat-long":"{1}{0}","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","乿œˆ","åæœˆ","å一月","å二月"],"dateFormatItem-yyyyMd":"GGGGGyy-MM-dd","dateFormatItem-yyyyMMMd":"GGGGGyyå¹´M月dæ—¥","dateFormatItem-MMMd":"M月dæ—¥","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"timeFormat-long":"zah:mm:ss","dateFormatItem-H":"Hæ—¶","timeFormat-short":"ah:mm","quarters-format-abbr":["1季度","2季度","3季度","4季度"],"dateFormatItem-MMMMdd":"M月ddæ—¥","days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-M":"M月","days-format-narrow":["æ—¥","一","二","三","å››","五","å…­"],"dateFormatItem-yMMMd":"yå¹´M月dæ—¥","dateFormatItem-MEd":"M-dE","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-standAlone-short":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-hm":"ah:mm","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateFormat-short":"Gyy-MM-dd","dateFormatItem-yyyyM":"GGGGGyy-MM","dateFormatItem-yMMMEd":"yå¹´M月dæ—¥E","dateFormat-full":"Gyå¹´M月dæ—¥EEEE","dateFormatItem-Md":"M-d","dateFormatItem-yMEd":"yå¹´M月d日,E","dateFormatItem-yyyyQ":"Gyå¹´QQQ","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","乿œˆ","åæœˆ","å一月","å二月"],"days-format-short":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-yyyyMMM":"GGGGGyyå¹´M月","dateFormatItem-d":"dæ—¥","quarters-format-wide":["第一季度","第二季度","第三季度","第四季度"],"eraNarrow":["回历"],"days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-h":"ahæ—¶"}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh/number.js b/lib/dojo/cldr/nls/zh/number.js new file mode 100644 index 0000000000..7d9c546961 --- /dev/null +++ b/lib/dojo/cldr/nls/zh/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/nls/zh/number",{"group":",","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":".","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","decimalFormat-long":"000å…†","decimalFormat-short":"000å…†"}); \ No newline at end of file diff --git a/lib/dojo/cldr/supplemental.js b/lib/dojo/cldr/supplemental.js new file mode 100644 index 0000000000..893fd31f2b --- /dev/null +++ b/lib/dojo/cldr/supplemental.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cldr/supplemental",["../_base/lang","../i18n"],function(_1,_2){var _3={};_1.setObject("dojo.cldr.supplemental",_3);_3.getFirstDayOfWeek=function(_4){var _5={bd:5,mv:5,ae:6,af:6,bh:6,dj:6,dz:6,eg:6,iq:6,ir:6,jo:6,kw:6,ly:6,ma:6,om:6,qa:6,sa:6,sd:6,sy:6,ye:6,ag:0,ar:0,as:0,au:0,br:0,bs:0,bt:0,bw:0,by:0,bz:0,ca:0,cn:0,co:0,dm:0,"do":0,et:0,gt:0,gu:0,hk:0,hn:0,id:0,ie:0,il:0,"in":0,jm:0,jp:0,ke:0,kh:0,kr:0,la:0,mh:0,mm:0,mo:0,mt:0,mx:0,mz:0,ni:0,np:0,nz:0,pa:0,pe:0,ph:0,pk:0,pr:0,py:0,sg:0,sv:0,th:0,tn:0,tt:0,tw:0,um:0,us:0,ve:0,vi:0,ws:0,za:0,zw:0};var _6=_3._region(_4);var _7=_5[_6];return (_7===undefined)?1:_7;};_3._region=function(_8){_8=_2.normalizeLocale(_8);var _9=_8.split("-");var _a=_9[1];if(!_a){_a={de:"de",en:"us",es:"es",fi:"fi",fr:"fr",he:"il",hu:"hu",it:"it",ja:"jp",ko:"kr",nl:"nl",pt:"br",sv:"se",zh:"cn"}[_9[0]];}else{if(_a.length==4){_a=_9[2];}}return _a;};_3.getWeekend=function(_b){var _c={"in":0,af:4,dz:4,ir:4,om:4,sa:4,ye:4,ae:5,bh:5,eg:5,il:5,iq:5,jo:5,kw:5,ly:5,ma:5,qa:5,sd:5,sy:5,tn:5},_d={af:5,dz:5,ir:5,om:5,sa:5,ye:5,ae:6,bh:5,eg:6,il:6,iq:6,jo:6,kw:6,ly:6,ma:6,qa:6,sd:6,sy:6,tn:6},_e=_3._region(_b),_f=_c[_e],end=_d[_e];if(_f===undefined){_f=6;}if(end===undefined){end=0;}return {start:_f,end:end};};return _3;}); \ No newline at end of file diff --git a/lib/dojo/colors.js b/lib/dojo/colors.js new file mode 100644 index 0000000000..7d0aa18293 --- /dev/null +++ b/lib/dojo/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/colors",["./_base/kernel","./_base/lang","./_base/Color","./_base/array"],function(_1,_2,_3,_4){var _5={};_2.setObject("dojo.colors",_5);var _6=function(m1,m2,h){if(h<0){++h;}if(h>1){--h;}var h6=6*h;if(h6<1){return m1+(m2-m1)*h6;}if(2*h<1){return m2;}if(3*h<2){return m1+(m2-m1)*(2/3-h)*6;}return m1;};_1.colorFromRgb=_3.fromRgb=function(_7,_8){var m=_7.toLowerCase().match(/^(rgba?|hsla?)\(([\s\.\-,%0-9]+)\)/);if(m){var c=m[2].split(/\s*,\s*/),l=c.length,t=m[1],a;if((t=="rgb"&&l==3)||(t=="rgba"&&l==4)){var r=c[0];if(r.charAt(r.length-1)=="%"){a=_4.map(c,function(x){return parseFloat(x)*2.56;});if(l==4){a[3]=c[3];}return _3.fromArray(a,_8);}return _3.fromArray(c,_8);}if((t=="hsl"&&l==3)||(t=="hsla"&&l==4)){var H=((parseFloat(c[0])%360)+360)%360/360,S=parseFloat(c[1])/100,L=parseFloat(c[2])/100,m2=L<=0.5?L*(S+1):L+S-L*S,m1=2*L-m2;a=[_6(m1,m2,H+1/3)*256,_6(m1,m2,H)*256,_6(m1,m2,H-1/3)*256,1];if(l==4){a[3]=c[3];}return _3.fromArray(a,_8);}}return null;};var _9=function(c,_a,_b){c=Number(c);return isNaN(c)?_b:c<_a?_a:c>_b?_b:c;};_3.prototype.sanitize=function(){var t=this;t.r=Math.round(_9(t.r,0,255));t.g=Math.round(_9(t.g,0,255));t.b=Math.round(_9(t.b,0,255));t.a=_9(t.a,0,1);return this;};_5.makeGrey=_3.makeGrey=function(g,a){return _3.fromArray([g,g,g,a]);};_2.mixin(_3.named,{"aliceblue":[240,248,255],"antiquewhite":[250,235,215],"aquamarine":[127,255,212],"azure":[240,255,255],"beige":[245,245,220],"bisque":[255,228,196],"blanchedalmond":[255,235,205],"blueviolet":[138,43,226],"brown":[165,42,42],"burlywood":[222,184,135],"cadetblue":[95,158,160],"chartreuse":[127,255,0],"chocolate":[210,105,30],"coral":[255,127,80],"cornflowerblue":[100,149,237],"cornsilk":[255,248,220],"crimson":[220,20,60],"cyan":[0,255,255],"darkblue":[0,0,139],"darkcyan":[0,139,139],"darkgoldenrod":[184,134,11],"darkgray":[169,169,169],"darkgreen":[0,100,0],"darkgrey":[169,169,169],"darkkhaki":[189,183,107],"darkmagenta":[139,0,139],"darkolivegreen":[85,107,47],"darkorange":[255,140,0],"darkorchid":[153,50,204],"darkred":[139,0,0],"darksalmon":[233,150,122],"darkseagreen":[143,188,143],"darkslateblue":[72,61,139],"darkslategray":[47,79,79],"darkslategrey":[47,79,79],"darkturquoise":[0,206,209],"darkviolet":[148,0,211],"deeppink":[255,20,147],"deepskyblue":[0,191,255],"dimgray":[105,105,105],"dimgrey":[105,105,105],"dodgerblue":[30,144,255],"firebrick":[178,34,34],"floralwhite":[255,250,240],"forestgreen":[34,139,34],"gainsboro":[220,220,220],"ghostwhite":[248,248,255],"gold":[255,215,0],"goldenrod":[218,165,32],"greenyellow":[173,255,47],"grey":[128,128,128],"honeydew":[240,255,240],"hotpink":[255,105,180],"indianred":[205,92,92],"indigo":[75,0,130],"ivory":[255,255,240],"khaki":[240,230,140],"lavender":[230,230,250],"lavenderblush":[255,240,245],"lawngreen":[124,252,0],"lemonchiffon":[255,250,205],"lightblue":[173,216,230],"lightcoral":[240,128,128],"lightcyan":[224,255,255],"lightgoldenrodyellow":[250,250,210],"lightgray":[211,211,211],"lightgreen":[144,238,144],"lightgrey":[211,211,211],"lightpink":[255,182,193],"lightsalmon":[255,160,122],"lightseagreen":[32,178,170],"lightskyblue":[135,206,250],"lightslategray":[119,136,153],"lightslategrey":[119,136,153],"lightsteelblue":[176,196,222],"lightyellow":[255,255,224],"limegreen":[50,205,50],"linen":[250,240,230],"magenta":[255,0,255],"mediumaquamarine":[102,205,170],"mediumblue":[0,0,205],"mediumorchid":[186,85,211],"mediumpurple":[147,112,219],"mediumseagreen":[60,179,113],"mediumslateblue":[123,104,238],"mediumspringgreen":[0,250,154],"mediumturquoise":[72,209,204],"mediumvioletred":[199,21,133],"midnightblue":[25,25,112],"mintcream":[245,255,250],"mistyrose":[255,228,225],"moccasin":[255,228,181],"navajowhite":[255,222,173],"oldlace":[253,245,230],"olivedrab":[107,142,35],"orange":[255,165,0],"orangered":[255,69,0],"orchid":[218,112,214],"palegoldenrod":[238,232,170],"palegreen":[152,251,152],"paleturquoise":[175,238,238],"palevioletred":[219,112,147],"papayawhip":[255,239,213],"peachpuff":[255,218,185],"peru":[205,133,63],"pink":[255,192,203],"plum":[221,160,221],"powderblue":[176,224,230],"rosybrown":[188,143,143],"royalblue":[65,105,225],"saddlebrown":[139,69,19],"salmon":[250,128,114],"sandybrown":[244,164,96],"seagreen":[46,139,87],"seashell":[255,245,238],"sienna":[160,82,45],"skyblue":[135,206,235],"slateblue":[106,90,205],"slategray":[112,128,144],"slategrey":[112,128,144],"snow":[255,250,250],"springgreen":[0,255,127],"steelblue":[70,130,180],"tan":[210,180,140],"thistle":[216,191,216],"tomato":[255,99,71],"turquoise":[64,224,208],"violet":[238,130,238],"wheat":[245,222,179],"whitesmoke":[245,245,245],"yellowgreen":[154,205,50]});return _3;}); \ No newline at end of file diff --git a/lib/dojo/cookie.js b/lib/dojo/cookie.js new file mode 100644 index 0000000000..23cb09ba26 --- /dev/null +++ b/lib/dojo/cookie.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/cookie",["./_base/kernel","./regexp"],function(_1,_2){_1.cookie=function(_3,_4,_5){var c=document.cookie,_6;if(arguments.length==1){var _7=c.match(new RegExp("(?:^|; )"+_2.escapeString(_3)+"=([^;]*)"));_6=_7?decodeURIComponent(_7[1]):undefined;}else{_5=_5||{};var _8=_5.expires;if(typeof _8=="number"){var d=new Date();d.setTime(d.getTime()+_8*24*60*60*1000);_8=_5.expires=d;}if(_8&&_8.toUTCString){_5.expires=_8.toUTCString();}_4=encodeURIComponent(_4);var _9=_3+"="+_4,_a;for(_a in _5){_9+="; "+_a;var _b=_5[_a];if(_b!==true){_9+="="+_b;}}document.cookie=_9;}return _6;};_1.cookie.isSupported=function(){if(!("cookieEnabled" in navigator)){this("__djCookieTest__","CookiesAllowed");navigator.cookieEnabled=this("__djCookieTest__")=="CookiesAllowed";if(navigator.cookieEnabled){this("__djCookieTest__","",{expires:-1});}}return navigator.cookieEnabled;};return _1.cookie;}); \ No newline at end of file diff --git a/lib/dojo/currency.js b/lib/dojo/currency.js new file mode 100644 index 0000000000..871b6c12ee --- /dev/null +++ b/lib/dojo/currency.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/currency",["./_base/array","./_base/lang","./number","./i18n","./i18n!./cldr/nls/currency","./cldr/monetary"],function(_1,_2,_3,_4,_5,_6){var _7={};_2.setObject("dojo.currency",_7);_7._mixInDefaults=function(_8){_8=_8||{};_8.type="currency";var _9=_4.getLocalization("dojo.cldr","currency",_8.locale)||{};var _a=_8.currency;var _b=_6.getData(_a);_1.forEach(["displayName","symbol","group","decimal"],function(_c){_b[_c]=_9[_a+"_"+_c];});_b.fractional=[true,false];return _2.mixin(_b,_8);};_7.format=function(_d,_e){return _3.format(_d,_7._mixInDefaults(_e));};_7.regexp=function(_f){return _3.regexp(_7._mixInDefaults(_f));};_7.parse=function(_10,_11){return _3.parse(_10,_7._mixInDefaults(_11));};return _7;}); \ No newline at end of file diff --git a/lib/dojo/data/ItemFileReadStore.js b/lib/dojo/data/ItemFileReadStore.js new file mode 100644 index 0000000000..d393bcfe9d --- /dev/null +++ b/lib/dojo/data/ItemFileReadStore.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/data/ItemFileReadStore",["../_base/kernel","../_base/lang","../_base/declare","../_base/array","../_base/xhr","../Evented","./util/filter","./util/simpleFetch","../date/stamp"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9){var _a=_3("dojo.data.ItemFileReadStore",[_6],{constructor:function(_b){this._arrayOfAllItems=[];this._arrayOfTopLevelItems=[];this._loadFinished=false;this._jsonFileUrl=_b.url;this._ccUrl=_b.url;this.url=_b.url;this._jsonData=_b.data;this.data=null;this._datatypeMap=_b.typeMap||{};if(!this._datatypeMap["Date"]){this._datatypeMap["Date"]={type:Date,deserialize:function(_c){return _9.fromISOString(_c);}};}this._features={"dojo.data.api.Read":true,"dojo.data.api.Identity":true};this._itemsByIdentity=null;this._storeRefPropName="_S";this._itemNumPropName="_0";this._rootItemPropName="_RI";this._reverseRefMap="_RRM";this._loadInProgress=false;this._queuedFetches=[];if(_b.urlPreventCache!==undefined){this.urlPreventCache=_b.urlPreventCache?true:false;}if(_b.hierarchical!==undefined){this.hierarchical=_b.hierarchical?true:false;}if(_b.clearOnClose){this.clearOnClose=true;}if("failOk" in _b){this.failOk=_b.failOk?true:false;}},url:"",_ccUrl:"",data:null,typeMap:null,clearOnClose:false,urlPreventCache:false,failOk:false,hierarchical:true,_assertIsItem:function(_d){if(!this.isItem(_d)){throw new Error(this.declaredClass+": Invalid item argument.");}},_assertIsAttribute:function(_e){if(typeof _e!=="string"){throw new Error(this.declaredClass+": Invalid attribute argument.");}},getValue:function(_f,_10,_11){var _12=this.getValues(_f,_10);return (_12.length>0)?_12[0]:_11;},getValues:function(_13,_14){this._assertIsItem(_13);this._assertIsAttribute(_14);return (_13[_14]||[]).slice(0);},getAttributes:function(_15){this._assertIsItem(_15);var _16=[];for(var key in _15){if((key!==this._storeRefPropName)&&(key!==this._itemNumPropName)&&(key!==this._rootItemPropName)&&(key!==this._reverseRefMap)){_16.push(key);}}return _16;},hasAttribute:function(_17,_18){this._assertIsItem(_17);this._assertIsAttribute(_18);return (_18 in _17);},containsValue:function(_19,_1a,_1b){var _1c=undefined;if(typeof _1b==="string"){_1c=_7.patternToRegExp(_1b,false);}return this._containsValue(_19,_1a,_1b,_1c);},_containsValue:function(_1d,_1e,_1f,_20){return _4.some(this.getValues(_1d,_1e),function(_21){if(_21!==null&&!_2.isObject(_21)&&_20){if(_21.toString().match(_20)){return true;}}else{if(_1f===_21){return true;}}});},isItem:function(_22){if(_22&&_22[this._storeRefPropName]===this){if(this._arrayOfAllItems[_22[this._itemNumPropName]]===_22){return true;}}return false;},isItemLoaded:function(_23){return this.isItem(_23);},loadItem:function(_24){this._assertIsItem(_24.item);},getFeatures:function(){return this._features;},getLabel:function(_25){if(this._labelAttr&&this.isItem(_25)){return this.getValue(_25,this._labelAttr);}return undefined;},getLabelAttributes:function(_26){if(this._labelAttr){return [this._labelAttr];}return null;},filter:function(_27,_28,_29){var _2a=[],i,key;if(_27.query){var _2b,_2c=_27.queryOptions?_27.queryOptions.ignoreCase:false;var _2d={};for(key in _27.query){_2b=_27.query[key];if(typeof _2b==="string"){_2d[key]=_7.patternToRegExp(_2b,_2c);}else{if(_2b instanceof RegExp){_2d[key]=_2b;}}}for(i=0;i<_28.length;++i){var _2e=true;var _2f=_28[i];if(_2f===null){_2e=false;}else{for(key in _27.query){_2b=_27.query[key];if(!this._containsValue(_2f,key,_2b,_2d[key])){_2e=false;}}}if(_2e){_2a.push(_2f);}}_29(_2a,_27);}else{for(i=0;i<_28.length;++i){var _30=_28[i];if(_30!==null){_2a.push(_30);}}_29(_2a,_27);}},_fetchItems:function(_31,_32,_33){var _34=this;if(this._loadFinished){this.filter(_31,this._getItemsArray(_31.queryOptions),_32);}else{if(this._jsonFileUrl!==this._ccUrl){_1.deprecated(this.declaredClass+": ","To change the url, set the url property of the store,"+" not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0");this._ccUrl=this._jsonFileUrl;this.url=this._jsonFileUrl;}else{if(this.url!==this._ccUrl){this._jsonFileUrl=this.url;this._ccUrl=this.url;}}if(this.data!=null){this._jsonData=this.data;this.data=null;}if(this._jsonFileUrl){if(this._loadInProgress){this._queuedFetches.push({args:_31,filter:_2.hitch(_34,"filter"),findCallback:_2.hitch(_34,_32)});}else{this._loadInProgress=true;var _35={url:_34._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk};var _36=_5.get(_35);_36.addCallback(function(_37){try{_34._getItemsFromLoadedData(_37);_34._loadFinished=true;_34._loadInProgress=false;_34.filter(_31,_34._getItemsArray(_31.queryOptions),_32);_34._handleQueuedFetches();}catch(e){_34._loadFinished=true;_34._loadInProgress=false;_33(e,_31);}});_36.addErrback(function(_38){_34._loadInProgress=false;_33(_38,_31);});var _39=null;if(_31.abort){_39=_31.abort;}_31.abort=function(){var df=_36;if(df&&df.fired===-1){df.cancel();df=null;}if(_39){_39.call(_31);}};}}else{if(this._jsonData){try{this._loadFinished=true;this._getItemsFromLoadedData(this._jsonData);this._jsonData=null;_34.filter(_31,this._getItemsArray(_31.queryOptions),_32);}catch(e){_33(e,_31);}}else{_33(new Error(this.declaredClass+": No JSON source data was provided as either URL or a nested Javascript object."),_31);}}}},_handleQueuedFetches:function(){if(this._queuedFetches.length>0){for(var i=0;i= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/data/ItemFileWriteStore",["../_base/lang","../_base/declare","../_base/array","../_base/json","../_base/kernel","./ItemFileReadStore","../date/stamp"],function(_1,_2,_3,_4,_5,_6,_7){return _2("dojo.data.ItemFileWriteStore",_6,{constructor:function(_8){this._features["dojo.data.api.Write"]=true;this._features["dojo.data.api.Notification"]=true;this._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};if(!this._datatypeMap["Date"].serialize){this._datatypeMap["Date"].serialize=function(_9){return _7.toISOString(_9,{zulu:true});};}if(_8&&(_8.referenceIntegrity===false)){this.referenceIntegrity=false;}this._saveInProgress=false;},referenceIntegrity:true,_assert:function(_a){if(!_a){throw new Error("assertion failed in ItemFileWriteStore");}},_getIdentifierAttribute:function(){return this.getFeatures()["dojo.data.api.Identity"];},newItem:function(_b,_c){this._assert(!this._saveInProgress);if(!this._loadFinished){this._forceLoad();}if(typeof _b!="object"&&typeof _b!="undefined"){throw new Error("newItem() was passed something other than an object");}var _d=null;var _e=this._getIdentifierAttribute();if(_e===Number){_d=this._arrayOfAllItems.length;}else{_d=_b[_e];if(typeof _d==="undefined"){throw new Error("newItem() was not passed an identity for the new item");}if(_1.isArray(_d)){throw new Error("newItem() was not passed an single-valued identity");}}if(this._itemsByIdentity){this._assert(typeof this._itemsByIdentity[_d]==="undefined");}this._assert(typeof this._pending._newItems[_d]==="undefined");this._assert(typeof this._pending._deletedItems[_d]==="undefined");var _f={};_f[this._storeRefPropName]=this;_f[this._itemNumPropName]=this._arrayOfAllItems.length;if(this._itemsByIdentity){this._itemsByIdentity[_d]=_f;_f[_e]=[_d];}this._arrayOfAllItems.push(_f);var _10=null;if(_c&&_c.parent&&_c.attribute){_10={item:_c.parent,attribute:_c.attribute,oldValue:undefined};var _11=this.getValues(_c.parent,_c.attribute);if(_11&&_11.length>0){var _12=_11.slice(0,_11.length);if(_11.length===1){_10.oldValue=_11[0];}else{_10.oldValue=_11.slice(0,_11.length);}_12.push(_f);this._setValueOrValues(_c.parent,_c.attribute,_12,false);_10.newValue=this.getValues(_c.parent,_c.attribute);}else{this._setValueOrValues(_c.parent,_c.attribute,_f,false);_10.newValue=_f;}}else{_f[this._rootItemPropName]=true;this._arrayOfTopLevelItems.push(_f);}this._pending._newItems[_d]=_f;for(var key in _b){if(key===this._storeRefPropName||key===this._itemNumPropName){throw new Error("encountered bug in ItemFileWriteStore.newItem");}var _13=_b[key];if(!_1.isArray(_13)){_13=[_13];}_f[key]=_13;if(this.referenceIntegrity){for(var i=0;i<_13.length;i++){var val=_13[i];if(this.isItem(val)){this._addReferenceToMap(val,_f,key);}}}}this.onNew(_f,_10);return _f;},_removeArrayElement:function(_14,_15){var _16=_3.indexOf(_14,_15);if(_16!=-1){_14.splice(_16,1);return true;}return false;},deleteItem:function(_17){this._assert(!this._saveInProgress);this._assertIsItem(_17);var _18=_17[this._itemNumPropName];var _19=this.getIdentity(_17);if(this.referenceIntegrity){var _1a=this.getAttributes(_17);if(_17[this._reverseRefMap]){_17["backup_"+this._reverseRefMap]=_1.clone(_17[this._reverseRefMap]);}_3.forEach(_1a,function(_1b){_3.forEach(this.getValues(_17,_1b),function(_1c){if(this.isItem(_1c)){if(!_17["backupRefs_"+this._reverseRefMap]){_17["backupRefs_"+this._reverseRefMap]=[];}_17["backupRefs_"+this._reverseRefMap].push({id:this.getIdentity(_1c),attr:_1b});this._removeReferenceFromMap(_1c,_17,_1b);}},this);},this);var _1d=_17[this._reverseRefMap];if(_1d){for(var _1e in _1d){var _1f=null;if(this._itemsByIdentity){_1f=this._itemsByIdentity[_1e];}else{_1f=this._arrayOfAllItems[_1e];}if(_1f){for(var _20 in _1d[_1e]){var _21=this.getValues(_1f,_20)||[];var _22=_3.filter(_21,function(_23){return !(this.isItem(_23)&&this.getIdentity(_23)==_19);},this);this._removeReferenceFromMap(_17,_1f,_20);if(_22.length<_21.length){this._setValueOrValues(_1f,_20,_22,true);}}}}}}this._arrayOfAllItems[_18]=null;_17[this._storeRefPropName]=null;if(this._itemsByIdentity){delete this._itemsByIdentity[_19];}this._pending._deletedItems[_19]=_17;if(_17[this._rootItemPropName]){this._removeArrayElement(this._arrayOfTopLevelItems,_17);}this.onDelete(_17);return true;},setValue:function(_24,_25,_26){return this._setValueOrValues(_24,_25,_26,true);},setValues:function(_27,_28,_29){return this._setValueOrValues(_27,_28,_29,true);},unsetAttribute:function(_2a,_2b){return this._setValueOrValues(_2a,_2b,[],true);},_setValueOrValues:function(_2c,_2d,_2e,_2f){this._assert(!this._saveInProgress);this._assertIsItem(_2c);this._assert(_1.isString(_2d));this._assert(typeof _2e!=="undefined");var _30=this._getIdentifierAttribute();if(_2d==_30){throw new Error("ItemFileWriteStore does not have support for changing the value of an item's identifier.");}var _31=this._getValueOrValues(_2c,_2d);var _32=this.getIdentity(_2c);if(!this._pending._modifiedItems[_32]){var _33={};for(var key in _2c){if((key===this._storeRefPropName)||(key===this._itemNumPropName)||(key===this._rootItemPropName)){_33[key]=_2c[key];}else{if(key===this._reverseRefMap){_33[key]=_1.clone(_2c[key]);}else{_33[key]=_2c[key].slice(0,_2c[key].length);}}}this._pending._modifiedItems[_32]=_33;}var _34=false;if(_1.isArray(_2e)&&_2e.length===0){_34=delete _2c[_2d];_2e=undefined;if(this.referenceIntegrity&&_31){var _35=_31;if(!_1.isArray(_35)){_35=[_35];}for(var i=0;i<_35.length;i++){var _36=_35[i];if(this.isItem(_36)){this._removeReferenceFromMap(_36,_2c,_2d);}}}}else{var _37;if(_1.isArray(_2e)){_37=_2e.slice(0,_2e.length);}else{_37=[_2e];}if(this.referenceIntegrity){if(_31){var _35=_31;if(!_1.isArray(_35)){_35=[_35];}var map={};_3.forEach(_35,function(_38){if(this.isItem(_38)){var id=this.getIdentity(_38);map[id.toString()]=true;}},this);_3.forEach(_37,function(_39){if(this.isItem(_39)){var id=this.getIdentity(_39);if(map[id.toString()]){delete map[id.toString()];}else{this._addReferenceToMap(_39,_2c,_2d);}}},this);for(var rId in map){var _3a;if(this._itemsByIdentity){_3a=this._itemsByIdentity[rId];}else{_3a=this._arrayOfAllItems[rId];}this._removeReferenceFromMap(_3a,_2c,_2d);}}else{for(var i=0;i<_37.length;i++){var _36=_37[i];if(this.isItem(_36)){this._addReferenceToMap(_36,_2c,_2d);}}}}_2c[_2d]=_37;_34=true;}if(_2f){this.onSet(_2c,_2d,_31,_2e);}return _34;},_addReferenceToMap:function(_3b,_3c,_3d){var _3e=this.getIdentity(_3c);var _3f=_3b[this._reverseRefMap];if(!_3f){_3f=_3b[this._reverseRefMap]={};}var _40=_3f[_3e];if(!_40){_40=_3f[_3e]={};}_40[_3d]=true;},_removeReferenceFromMap:function(_41,_42,_43){var _44=this.getIdentity(_42);var _45=_41[this._reverseRefMap];var _46;if(_45){for(_46 in _45){if(_46==_44){delete _45[_46][_43];if(this._isEmpty(_45[_46])){delete _45[_46];}}}if(this._isEmpty(_45)){delete _41[this._reverseRefMap];}}},_dumpReferenceMap:function(){var i;for(i=0;i0){_57=false;}}}return _57;},save:function(_58){this._assert(!this._saveInProgress);this._saveInProgress=true;var _59=this;var _5a=function(){_59._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};_59._saveInProgress=false;if(_58&&_58.onComplete){var _5b=_58.scope||_5.global;_58.onComplete.call(_5b);}};var _5c=function(err){_59._saveInProgress=false;if(_58&&_58.onError){var _5d=_58.scope||_5.global;_58.onError.call(_5d,err);}};if(this._saveEverything){var _5e=this._getNewFileContentString();this._saveEverything(_5a,_5c,_5e);}if(this._saveCustom){this._saveCustom(_5a,_5c);}if(!this._saveEverything&&!this._saveCustom){_5a();}},revert:function(){this._assert(!this._saveInProgress);var _5f;for(_5f in this._pending._modifiedItems){var _60=this._pending._modifiedItems[_5f];var _61=null;if(this._itemsByIdentity){_61=this._itemsByIdentity[_5f];}else{_61=this._arrayOfAllItems[_5f];}_60[this._storeRefPropName]=this;for(var key in _61){delete _61[key];}_1.mixin(_61,_60);}var _62;for(_5f in this._pending._deletedItems){_62=this._pending._deletedItems[_5f];_62[this._storeRefPropName]=this;var _63=_62[this._itemNumPropName];if(_62["backup_"+this._reverseRefMap]){_62[this._reverseRefMap]=_62["backup_"+this._reverseRefMap];delete _62["backup_"+this._reverseRefMap];}this._arrayOfAllItems[_63]=_62;if(this._itemsByIdentity){this._itemsByIdentity[_5f]=_62;}if(_62[this._rootItemPropName]){this._arrayOfTopLevelItems.push(_62);}}for(_5f in this._pending._deletedItems){_62=this._pending._deletedItems[_5f];if(_62["backupRefs_"+this._reverseRefMap]){_3.forEach(_62["backupRefs_"+this._reverseRefMap],function(_64){var _65;if(this._itemsByIdentity){_65=this._itemsByIdentity[_64.id];}else{_65=this._arrayOfAllItems[_64.id];}this._addReferenceToMap(_65,_62,_64.attr);},this);delete _62["backupRefs_"+this._reverseRefMap];}}for(_5f in this._pending._newItems){var _66=this._pending._newItems[_5f];_66[this._storeRefPropName]=null;this._arrayOfAllItems[_66[this._itemNumPropName]]=null;if(_66[this._rootItemPropName]){this._removeArrayElement(this._arrayOfTopLevelItems,_66);}if(this._itemsByIdentity){delete this._itemsByIdentity[_5f];}}this._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};return true;},isDirty:function(_67){if(_67){var _68=this.getIdentity(_67);return new Boolean(this._pending._newItems[_68]||this._pending._modifiedItems[_68]||this._pending._deletedItems[_68]).valueOf();}else{return !this._isEmpty(this._pending._newItems)||!this._isEmpty(this._pending._modifiedItems)||!this._isEmpty(this._pending._deletedItems);}},onSet:function(_69,_6a,_6b,_6c){},onNew:function(_6d,_6e){},onDelete:function(_6f){},close:function(_70){if(this.clearOnClose){if(!this.isDirty()){this.inherited(arguments);}else{throw new Error("dojo.data.ItemFileWriteStore: There are unsaved changes present in the store. Please save or revert the changes before invoking close.");}}}});}); \ No newline at end of file diff --git a/lib/dojo/data/ObjectStore.js b/lib/dojo/data/ObjectStore.js new file mode 100644 index 0000000000..a2acacb41d --- /dev/null +++ b/lib/dojo/data/ObjectStore.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/data/ObjectStore",["../_base/lang","../Evented","../_base/declare","../_base/Deferred","../_base/array","../_base/connect","../regexp"],function(_1,_2,_3,_4,_5,_6,_7){function _8(_9){return _9=="*"?".*":_9=="?"?".":_9;};return _3("dojo.data.ObjectStore",[_2],{objectStore:null,constructor:function(_a){this._dirtyObjects=[];if(_a.labelAttribute){_a.labelProperty=_a.labelAttribute;}_1.mixin(this,_a);},labelProperty:"label",getValue:function(_b,_c,_d){return typeof _b.get==="function"?_b.get(_c):_c in _b?_b[_c]:_d;},getValues:function(_e,_f){var val=this.getValue(_e,_f);return val instanceof Array?val:val===undefined?[]:[val];},getAttributes:function(_10){var res=[];for(var i in _10){if(_10.hasOwnProperty(i)&&!(i.charAt(0)=="_"&&i.charAt(1)=="_")){res.push(i);}}return res;},hasAttribute:function(_11,_12){return _12 in _11;},containsValue:function(_13,_14,_15){return _5.indexOf(this.getValues(_13,_14),_15)>-1;},isItem:function(_16){return (typeof _16=="object")&&_16&&!(_16 instanceof Date);},isItemLoaded:function(_17){return _17&&typeof _17.load!=="function";},loadItem:function(_18){var _19;if(typeof _18.item.load==="function"){_4.when(_18.item.load(),function(_1a){_19=_1a;var _1b=_1a instanceof Error?_18.onError:_18.onItem;if(_1b){_1b.call(_18.scope,_1a);}});}else{if(_18.onItem){_18.onItem.call(_18.scope,_18.item);}}return _19;},close:function(_1c){return _1c&&_1c.abort&&_1c.abort();},fetch:function(_1d){_1d=_1.delegate(_1d,_1d&&_1d.queryOptions);var _1e=this;var _1f=_1d.scope||_1e;var _20=_1d.query;if(typeof _20=="object"){_20=_1.delegate(_20);for(var i in _20){var _21=_20[i];if(typeof _21=="string"){_20[i]=RegExp("^"+_7.escapeString(_21,"*?\\").replace(/\\.|\*|\?/g,_8)+"$",_1d.ignoreCase?"mi":"m");_20[i].toString=(function(_22){return function(){return _22;};})(_21);}}}var _23=this.objectStore.query(_20,_1d);_4.when(_23.total,function(_24){_4.when(_23,function(_25){if(_1d.onBegin){_1d.onBegin.call(_1f,_24||_25.length,_1d);}if(_1d.onItem){for(var i=0;i<_25.length;i++){_1d.onItem.call(_1f,_25[i],_1d);}}if(_1d.onComplete){_1d.onComplete.call(_1f,_1d.onItem?null:_25,_1d);}return _25;},_26);},_26);function _26(_27){if(_1d.onError){_1d.onError.call(_1f,_27,_1d);}};_1d.abort=function(){if(_23.cancel){_23.cancel();}};if(_23.observe){if(this.observing){this.observing.cancel();}this.observing=_23.observe(function(_28,_29,_2a){if(_5.indexOf(_1e._dirtyObjects,_28)==-1){if(_29==-1){_1e.onNew(_28);}else{if(_2a==-1){_1e.onDelete(_28);}else{for(var i in _28){if(i!=_1e.objectStore.idProperty){_1e.onSet(_28,i,null,_28[i]);}}}}}},true);}this.onFetch(_23);_1d.store=this;return _1d;},getFeatures:function(){return {"dojo.data.api.Read":!!this.objectStore.get,"dojo.data.api.Identity":true,"dojo.data.api.Write":!!this.objectStore.put,"dojo.data.api.Notification":true};},getLabel:function(_2b){if(this.isItem(_2b)){return this.getValue(_2b,this.labelProperty);}return undefined;},getLabelAttributes:function(_2c){return [this.labelProperty];},getIdentity:function(_2d){return this.objectStore.getIdentity?this.objectStore.getIdentity(_2d):_2d[this.objectStore.idProperty||"id"];},getIdentityAttributes:function(_2e){return [this.objectStore.idProperty];},fetchItemByIdentity:function(_2f){var _30;_4.when(this.objectStore.get(_2f.identity),function(_31){_30=_31;_2f.onItem.call(_2f.scope,_31);},function(_32){_2f.onError.call(_2f.scope,_32);});return _30;},newItem:function(_33,_34){if(_34){var _35=this.getValue(_34.parent,_34.attribute,[]);_35=_35.concat([_33]);_33.__parent=_35;this.setValue(_34.parent,_34.attribute,_35);}this._dirtyObjects.push({object:_33,save:true});this.onNew(_33);return _33;},deleteItem:function(_36){this.changing(_36,true);this.onDelete(_36);},setValue:function(_37,_38,_39){var old=_37[_38];this.changing(_37);_37[_38]=_39;this.onSet(_37,_38,old,_39);},setValues:function(_3a,_3b,_3c){if(!_1.isArray(_3c)){throw new Error("setValues expects to be passed an Array object as its value");}this.setValue(_3a,_3b,_3c);},unsetAttribute:function(_3d,_3e){this.changing(_3d);var old=_3d[_3e];delete _3d[_3e];this.onSet(_3d,_3e,old,undefined);},changing:function(_3f,_40){_3f.__isDirty=true;for(var i=0;i0;){i--;var _50=_4f[i];var _51=_50.object;var old=_50.old;if(_51&&old){for(var j in old){if(old.hasOwnProperty(j)&&_51[j]!==old[j]){this.onSet(_51,j,_51[j],old[j]);_51[j]=old[j];}}for(j in _51){if(!old.hasOwnProperty(j)){this.onSet(_51,j,_51[j]);delete _51[j];}}}else{if(!old){this.onDelete(_51);}else{this.onNew(old);}}delete (_51||old).__isDirty;_4f.splice(i,1);}},isDirty:function(_52){if(!_52){return !!this._dirtyObjects.length;}return _52.__isDirty;},onSet:function(){},onNew:function(){},onDelete:function(){},onFetch:function(_53){}});}); \ No newline at end of file diff --git a/lib/dojo/data/api/Identity.js b/lib/dojo/data/api/Identity.js new file mode 100644 index 0000000000..4b7cd66719 --- /dev/null +++ b/lib/dojo/data/api/Identity.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/data/api/Identity",["../../_base/declare","./Read"],function(_1,_2){return _1("dojo.data.api.Identity",_2,{getFeatures:function(){return {"dojo.data.api.Read":true,"dojo.data.api.Identity":true};},getIdentity:function(_3){throw new Error("Unimplemented API: dojo.data.api.Identity.getIdentity");},getIdentityAttributes:function(_4){throw new Error("Unimplemented API: dojo.data.api.Identity.getIdentityAttributes");},fetchItemByIdentity:function(_5){if(!this.isItemLoaded(_5.item)){throw new Error("Unimplemented API: dojo.data.api.Identity.fetchItemByIdentity");}}});}); \ No newline at end of file diff --git a/lib/dojo/data/api/Item.js b/lib/dojo/data/api/Item.js new file mode 100644 index 0000000000..d7bd7cb5b6 --- /dev/null +++ b/lib/dojo/data/api/Item.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/data/api/Item",["../../_base/declare"],function(_1){return _1(null,{});}); \ No newline at end of file diff --git a/lib/dojo/data/api/Notification.js b/lib/dojo/data/api/Notification.js new file mode 100644 index 0000000000..ac6a1da068 --- /dev/null +++ b/lib/dojo/data/api/Notification.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/data/api/Notification",["../../_base/declare","./Read"],function(_1,_2){return _1("dojo.data.api.Notification",_2,{getFeatures:function(){return {"dojo.data.api.Read":true,"dojo.data.api.Notification":true};},onSet:function(_3,_4,_5,_6){throw new Error("Unimplemented API: dojo.data.api.Notification.onSet");},onNew:function(_7,_8){throw new Error("Unimplemented API: dojo.data.api.Notification.onNew");},onDelete:function(_9){throw new Error("Unimplemented API: dojo.data.api.Notification.onDelete");}});}); \ No newline at end of file diff --git a/lib/dojo/data/api/Read.js b/lib/dojo/data/api/Read.js new file mode 100644 index 0000000000..b3fb2a1c29 --- /dev/null +++ b/lib/dojo/data/api/Read.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/data/api/Read",["../../_base/declare"],function(_1){return _1("dojo.data.api.Read",null,{getValue:function(_2,_3,_4){throw new Error("Unimplemented API: dojo.data.api.Read.getValue");},getValues:function(_5,_6){throw new Error("Unimplemented API: dojo.data.api.Read.getValues");},getAttributes:function(_7){throw new Error("Unimplemented API: dojo.data.api.Read.getAttributes");},hasAttribute:function(_8,_9){throw new Error("Unimplemented API: dojo.data.api.Read.hasAttribute");},containsValue:function(_a,_b,_c){throw new Error("Unimplemented API: dojo.data.api.Read.containsValue");},isItem:function(_d){throw new Error("Unimplemented API: dojo.data.api.Read.isItem");},isItemLoaded:function(_e){throw new Error("Unimplemented API: dojo.data.api.Read.isItemLoaded");},loadItem:function(_f){if(!this.isItemLoaded(_f.item)){throw new Error("Unimplemented API: dojo.data.api.Read.loadItem");}},fetch:function(_10){throw new Error("Unimplemented API: dojo.data.api.Read.fetch");},getFeatures:function(){return {"dojo.data.api.Read":true};},close:function(_11){throw new Error("Unimplemented API: dojo.data.api.Read.close");},getLabel:function(_12){throw new Error("Unimplemented API: dojo.data.api.Read.getLabel");},getLabelAttributes:function(_13){throw new Error("Unimplemented API: dojo.data.api.Read.getLabelAttributes");}});}); \ No newline at end of file diff --git a/lib/dojo/data/api/Request.js b/lib/dojo/data/api/Request.js new file mode 100644 index 0000000000..22e6129c14 --- /dev/null +++ b/lib/dojo/data/api/Request.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/data/api/Request",["../../_base/declare"],function(_1){return _1("dojo.data.api.Request",null,{abort:function(){throw new Error("Unimplemented API: dojo.data.api.Request.abort");}});}); \ No newline at end of file diff --git a/lib/dojo/data/api/Write.js b/lib/dojo/data/api/Write.js new file mode 100644 index 0000000000..4aba32e970 --- /dev/null +++ b/lib/dojo/data/api/Write.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/data/api/Write",["../../_base/declare","./Read"],function(_1,_2){return _1("dojo.data.api.Write",_2,{getFeatures:function(){return {"dojo.data.api.Read":true,"dojo.data.api.Write":true};},newItem:function(_3,_4){throw new Error("Unimplemented API: dojo.data.api.Write.newItem");},deleteItem:function(_5){throw new Error("Unimplemented API: dojo.data.api.Write.deleteItem");},setValue:function(_6,_7,_8){throw new Error("Unimplemented API: dojo.data.api.Write.setValue");},setValues:function(_9,_a,_b){throw new Error("Unimplemented API: dojo.data.api.Write.setValues");},unsetAttribute:function(_c,_d){throw new Error("Unimplemented API: dojo.data.api.Write.clear");},save:function(_e){throw new Error("Unimplemented API: dojo.data.api.Write.save");},revert:function(){throw new Error("Unimplemented API: dojo.data.api.Write.revert");},isDirty:function(_f){throw new Error("Unimplemented API: dojo.data.api.Write.isDirty");}});}); \ No newline at end of file diff --git a/lib/dojo/data/util/filter.js b/lib/dojo/data/util/filter.js new file mode 100644 index 0000000000..d5d1f175ea --- /dev/null +++ b/lib/dojo/data/util/filter.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/data/util/filter",["../../_base/lang"],function(_1){var _2={};_1.setObject("dojo.data.util.filter",_2);_2.patternToRegExp=function(_3,_4){var _5="^";var c=null;for(var i=0;i<_3.length;i++){c=_3.charAt(i);switch(c){case "\\":_5+=c;i++;_5+=_3.charAt(i);break;case "*":_5+=".*";break;case "?":_5+=".";break;case "$":case "^":case "/":case "+":case ".":case "|":case "(":case ")":case "{":case "}":case "[":case "]":_5+="\\";default:_5+=c;}}_5+="$";if(_4){return new RegExp(_5,"mi");}else{return new RegExp(_5,"m");}};return _2;}); \ No newline at end of file diff --git a/lib/dojo/data/util/simpleFetch.js b/lib/dojo/data/util/simpleFetch.js new file mode 100644 index 0000000000..b4271f428a --- /dev/null +++ b/lib/dojo/data/util/simpleFetch.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/data/util/simpleFetch",["../../_base/lang","../../_base/kernel","./sorter"],function(_1,_2,_3){var _4={};_1.setObject("dojo.data.util.simpleFetch",_4);_4.errorHandler=function(_5,_6){if(_6.onError){var _7=_6.scope||_2.global;_6.onError.call(_7,_5,_6);}};_4.fetchHandler=function(_8,_9){var _a=_9.abort||null,_b=false,_c=_9.start?_9.start:0,_d=(_9.count&&(_9.count!==Infinity))?(_c+_9.count):_8.length;_9.abort=function(){_b=true;if(_a){_a.call(_9);}};var _e=_9.scope||_2.global;if(!_9.store){_9.store=this;}if(_9.onBegin){_9.onBegin.call(_e,_8.length,_9);}if(_9.sort){_8.sort(_3.createSortFunction(_9.sort,this));}if(_9.onItem){for(var i=_c;(i<_8.length)&&(i<_d);++i){var _f=_8[i];if(!_b){_9.onItem.call(_e,_f,_9);}}}if(_9.onComplete&&!_b){var _10=null;if(!_9.onItem){_10=_8.slice(_c,_d);}_9.onComplete.call(_e,_10,_9);}};_4.fetch=function(_11){_11=_11||{};if(!_11.store){_11.store=this;}this._fetchItems(_11,_1.hitch(this,"fetchHandler"),_1.hitch(this,"errorHandler"));return _11;};return _4;}); \ No newline at end of file diff --git a/lib/dojo/data/util/sorter.js b/lib/dojo/data/util/sorter.js new file mode 100644 index 0000000000..9817434a3e --- /dev/null +++ b/lib/dojo/data/util/sorter.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/data/util/sorter",["../../_base/lang"],function(_1){var _2={};_1.setObject("dojo.data.util.sorter",_2);_2.basicComparator=function(a,b){var r=-1;if(a===null){a=undefined;}if(b===null){b=undefined;}if(a==b){r=0;}else{if(a>b||a==null){r=1;}}return r;};_2.createSortFunction=function(_3,_4){var _5=[];function _6(_7,_8,_9,s){return function(_a,_b){var a=s.getValue(_a,_7);var b=s.getValue(_b,_7);return _8*_9(a,b);};};var _c;var _d=_4.comparatorMap;var bc=_2.basicComparator;for(var i=0;i<_3.length;i++){_c=_3[i];var _e=_c.attribute;if(_e){var _f=(_c.descending)?-1:1;var _10=bc;if(_d){if(typeof _e!=="string"&&("toString" in _e)){_e=_e.toString();}_10=_d[_e]||bc;}_5.push(_6(_e,_f,_10,_4));}}return function(_11,_12){var i=0;while(i<_5.length){var ret=_5[i++](_11,_12);if(ret!==0){return ret;}}return 0;};};return _2;}); \ No newline at end of file diff --git a/lib/dojo/date.js b/lib/dojo/date.js new file mode 100644 index 0000000000..dee2c3e80d --- /dev/null +++ b/lib/dojo/date.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/date",["./has","./_base/lang"],function(_1,_2){var _3={};_3.getDaysInMonth=function(_4){var _5=_4.getMonth();var _6=[31,28,31,30,31,30,31,31,30,31,30,31];if(_5==1&&_3.isLeapYear(_4)){return 29;}return _6[_5];};_3.isLeapYear=function(_7){var _8=_7.getFullYear();return !(_8%400)||(!(_8%4)&&!!(_8%100));};_3.getTimezoneName=function(_9){var _a=_9.toString();var tz="";var _b;var _c=_a.indexOf("(");if(_c>-1){tz=_a.substring(++_c,_a.indexOf(")"));}else{var _d=/([A-Z\/]+) \d{4}$/;if((_b=_a.match(_d))){tz=_b[1];}else{_a=_9.toLocaleString();_d=/ ([A-Z\/]+)$/;if((_b=_a.match(_d))){tz=_b[1];}}}return (tz=="AM"||tz=="PM")?"":tz;};_3.compare=function(_e,_f,_10){_e=new Date(+_e);_f=new Date(+(_f||new Date()));if(_10=="date"){_e.setHours(0,0,0,0);_f.setHours(0,0,0,0);}else{if(_10=="time"){_e.setFullYear(0,0,0);_f.setFullYear(0,0,0);}}if(_e>_f){return 1;}if(_e<_f){return -1;}return 0;};_3.add=function(_11,_12,_13){var sum=new Date(+_11);var _14=false;var _15="Date";switch(_12){case "day":break;case "weekday":var _16,_17;var mod=_13%5;if(!mod){_16=(_13>0)?5:-5;_17=(_13>0)?((_13-5)/5):((_13+5)/5);}else{_16=mod;_17=parseInt(_13/5);}var _18=_11.getDay();var adj=0;if(_18==6&&_13>0){adj=1;}else{if(_18==0&&_13<0){adj=-1;}}var _19=_18+_16;if(_19==0||_19==6){adj=(_13>0)?2:-2;}_13=(7*_17)+_16+adj;break;case "year":_15="FullYear";_14=true;break;case "week":_13*=7;break;case "quarter":_13*=3;case "month":_14=true;_15="Month";break;default:_15="UTC"+_12.charAt(0).toUpperCase()+_12.substring(1)+"s";}if(_15){sum["set"+_15](sum["get"+_15]()+_13);}if(_14&&(sum.getDate()<_11.getDate())){sum.setDate(0);}return sum;};_3.difference=function(_1a,_1b,_1c){_1b=_1b||new Date();_1c=_1c||"day";var _1d=_1b.getFullYear()-_1a.getFullYear();var _1e=1;switch(_1c){case "quarter":var m1=_1a.getMonth();var m2=_1b.getMonth();var q1=Math.floor(m1/3)+1;var q2=Math.floor(m2/3)+1;q2+=(_1d*4);_1e=q2-q1;break;case "weekday":var _1f=Math.round(_3.difference(_1a,_1b,"day"));var _20=parseInt(_3.difference(_1a,_1b,"week"));var mod=_1f%7;if(mod==0){_1f=_20*5;}else{var adj=0;var _21=_1a.getDay();var _22=_1b.getDay();_20=parseInt(_1f/7);mod=_1f%7;var _23=new Date(_1a);_23.setDate(_23.getDate()+(_20*7));var _24=_23.getDay();if(_1f>0){switch(true){case _21==6:adj=-1;break;case _21==0:adj=0;break;case _22==6:adj=-1;break;case _22==0:adj=-2;break;case (_24+mod)>5:adj=-2;}}else{if(_1f<0){switch(true){case _21==6:adj=0;break;case _21==0:adj=1;break;case _22==6:adj=2;break;case _22==0:adj=1;break;case (_24+mod)<0:adj=2;}}}_1f+=adj;_1f-=(_20*2);}_1e=_1f;break;case "year":_1e=_1d;break;case "month":_1e=(_1b.getMonth()-_1a.getMonth())+(_1d*12);break;case "week":_1e=parseInt(_3.difference(_1a,_1b,"day")/7);break;case "day":_1e/=24;case "hour":_1e/=60;case "minute":_1e/=60;case "second":_1e/=1000;case "millisecond":_1e*=_1b.getTime()-_1a.getTime();}return Math.round(_1e);};1&&_2.mixin(_2.getObject("dojo.date",true),_3);return _3;}); \ No newline at end of file diff --git a/lib/dojo/date/locale.js b/lib/dojo/date/locale.js new file mode 100644 index 0000000000..7d4106a435 --- /dev/null +++ b/lib/dojo/date/locale.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/date/locale",["../_base/lang","../_base/array","../date","../cldr/supplemental","../i18n","../regexp","../string","../i18n!../cldr/nls/gregorian","module"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9){var _a={};_1.setObject(_9.id.replace(/\//g,"."),_a);function _b(_c,_d,_e,_f){return _f.replace(/([a-z])\1*/ig,function(_10){var s,pad,c=_10.charAt(0),l=_10.length,_11=["abbr","wide","narrow"];switch(c){case "G":s=_d[(l<4)?"eraAbbr":"eraNames"][_c.getFullYear()<0?0:1];break;case "y":s=_c.getFullYear();switch(l){case 1:break;case 2:if(!_e.fullYear){s=String(s);s=s.substr(s.length-2);break;}default:pad=true;}break;case "Q":case "q":s=Math.ceil((_c.getMonth()+1)/3);pad=true;break;case "M":case "L":var m=_c.getMonth();if(l<3){s=m+1;pad=true;}else{var _12=["months",c=="L"?"standAlone":"format",_11[l-3]].join("-");s=_d[_12][m];}break;case "w":var _13=0;s=_a._getWeekOfYear(_c,_13);pad=true;break;case "d":s=_c.getDate();pad=true;break;case "D":s=_a._getDayOfYear(_c);pad=true;break;case "e":case "c":var d=_c.getDay();if(l<2){s=(d-_4.getFirstDayOfWeek(_e.locale)+8)%7;break;}case "E":d=_c.getDay();if(l<3){s=d+1;pad=true;}else{var _14=["days",c=="c"?"standAlone":"format",_11[l-3]].join("-");s=_d[_14][d];}break;case "a":var _15=_c.getHours()<12?"am":"pm";s=_e[_15]||_d["dayPeriods-format-wide-"+_15];break;case "h":case "H":case "K":case "k":var h=_c.getHours();switch(c){case "h":s=(h%12)||12;break;case "H":s=h;break;case "K":s=(h%12);break;case "k":s=h||24;break;}pad=true;break;case "m":s=_c.getMinutes();pad=true;break;case "s":s=_c.getSeconds();pad=true;break;case "S":s=Math.round(_c.getMilliseconds()*Math.pow(10,l-3));pad=true;break;case "v":case "z":s=_a._getZone(_c,true,_e);if(s){break;}l=4;case "Z":var _16=_a._getZone(_c,false,_e);var tz=[(_16<=0?"+":"-"),_7.pad(Math.floor(Math.abs(_16)/60),2),_7.pad(Math.abs(_16)%60,2)];if(l==4){tz.splice(0,0,"GMT");tz.splice(3,0,":");}s=tz.join("");break;default:throw new Error("dojo.date.locale.format: invalid pattern char: "+_f);}if(pad){s=_7.pad(s,l);}return s;});};_a._getZone=function(_17,_18,_19){if(_18){return _3.getTimezoneName(_17);}else{return _17.getTimezoneOffset();}};_a.format=function(_1a,_1b){_1b=_1b||{};var _1c=_5.normalizeLocale(_1b.locale),_1d=_1b.formatLength||"short",_1e=_a._getGregorianBundle(_1c),str=[],_1f=_1.hitch(this,_b,_1a,_1e,_1b);if(_1b.selector=="year"){return _20(_1e["dateFormatItem-yyyy"]||"yyyy",_1f);}var _21;if(_1b.selector!="date"){_21=_1b.timePattern||_1e["timeFormat-"+_1d];if(_21){str.push(_20(_21,_1f));}}if(_1b.selector!="time"){_21=_1b.datePattern||_1e["dateFormat-"+_1d];if(_21){str.push(_20(_21,_1f));}}return str.length==1?str[0]:_1e["dateTimeFormat-"+_1d].replace(/\'/g,"").replace(/\{(\d+)\}/g,function(_22,key){return str[key];});};_a.regexp=function(_23){return _a._parseInfo(_23).regexp;};_a._parseInfo=function(_24){_24=_24||{};var _25=_5.normalizeLocale(_24.locale),_26=_a._getGregorianBundle(_25),_27=_24.formatLength||"short",_28=_24.datePattern||_26["dateFormat-"+_27],_29=_24.timePattern||_26["timeFormat-"+_27],_2a;if(_24.selector=="date"){_2a=_28;}else{if(_24.selector=="time"){_2a=_29;}else{_2a=_26["dateTimeFormat-"+_27].replace(/\{(\d+)\}/g,function(_2b,key){return [_29,_28][key];});}}var _2c=[],re=_20(_2a,_1.hitch(this,_2d,_2c,_26,_24));return {regexp:re,tokens:_2c,bundle:_26};};_a.parse=function(_2e,_2f){var _30=/[\u200E\u200F\u202A\u202E]/g,_31=_a._parseInfo(_2f),_32=_31.tokens,_33=_31.bundle,re=new RegExp("^"+_31.regexp.replace(_30,"")+"$",_31.strict?"":"i"),_34=re.exec(_2e&&_2e.replace(_30,""));if(!_34){return null;}var _35=["abbr","wide","narrow"],_36=[1970,0,1,0,0,0,0],_37="",_38=_2.every(_34,function(v,i){if(!i){return true;}var _39=_32[i-1],l=_39.length,c=_39.charAt(0);switch(c){case "y":if(l!=2&&_2f.strict){_36[0]=v;}else{if(v<100){v=Number(v);var _3a=""+new Date().getFullYear(),_3b=_3a.substring(0,2)*100,_3c=Math.min(Number(_3a.substring(2,4))+20,99);_36[0]=(v<_3c)?_3b+v:_3b-100+v;}else{if(_2f.strict){return false;}_36[0]=v;}}break;case "M":case "L":if(l>2){var _3d=_33["months-"+(c=="L"?"standAlone":"format")+"-"+_35[l-3]].concat();if(!_2f.strict){v=v.replace(".","").toLowerCase();_3d=_2.map(_3d,function(s){return s.replace(".","").toLowerCase();});}v=_2.indexOf(_3d,v);if(v==-1){return false;}}else{v--;}_36[1]=v;break;case "E":case "e":case "c":var _3e=_33["days-"+(c=="c"?"standAlone":"format")+"-"+_35[l-3]].concat();if(!_2f.strict){v=v.toLowerCase();_3e=_2.map(_3e,function(d){return d.toLowerCase();});}v=_2.indexOf(_3e,v);if(v==-1){return false;}break;case "D":_36[1]=0;case "d":_36[2]=v;break;case "a":var am=_2f.am||_33["dayPeriods-format-wide-am"],pm=_2f.pm||_33["dayPeriods-format-wide-pm"];if(!_2f.strict){var _3f=/\./g;v=v.replace(_3f,"").toLowerCase();am=am.replace(_3f,"").toLowerCase();pm=pm.replace(_3f,"").toLowerCase();}if(_2f.strict&&v!=am&&v!=pm){return false;}_37=(v==pm)?"p":(v==am)?"a":"";break;case "K":if(v==24){v=0;}case "h":case "H":case "k":if(v>23){return false;}_36[3]=v;break;case "m":_36[4]=v;break;case "s":_36[5]=v;break;case "S":_36[6]=v;}return true;});var _40=+_36[3];if(_37==="p"&&_40<12){_36[3]=_40+12;}else{if(_37==="a"&&_40==12){_36[3]=0;}}var _41=new Date(_36[0],_36[1],_36[2],_36[3],_36[4],_36[5],_36[6]);if(_2f.strict){_41.setFullYear(_36[0]);}var _42=_32.join(""),_43=_42.indexOf("d")!=-1,_44=_42.indexOf("M")!=-1;if(!_38||(_44&&_41.getMonth()>_36[1])||(_43&&_41.getDate()>_36[2])){return null;}if((_44&&_41.getMonth()<_36[1])||(_43&&_41.getDate()<_36[2])){_41=_3.add(_41,"hour",1);}return _41;};function _20(_45,_46,_47,_48){var _49=function(x){return x;};_46=_46||_49;_47=_47||_49;_48=_48||_49;var _4a=_45.match(/(''|[^'])+/g),_4b=_45.charAt(0)=="'";_2.forEach(_4a,function(_4c,i){if(!_4c){_4a[i]="";}else{_4a[i]=(_4b?_47:_46)(_4c.replace(/''/g,"'"));_4b=!_4b;}});return _48(_4a.join(""));};function _2d(_4d,_4e,_4f,_50){_50=_6.escapeString(_50);if(!_4f.strict){_50=_50.replace(" a"," ?a");}return _50.replace(/([a-z])\1*/ig,function(_51){var s,c=_51.charAt(0),l=_51.length,p2="",p3="";if(_4f.strict){if(l>1){p2="0"+"{"+(l-1)+"}";}if(l>2){p3="0"+"{"+(l-2)+"}";}}else{p2="0?";p3="0{0,2}";}switch(c){case "y":s="\\d{2,4}";break;case "M":case "L":s=(l>2)?"\\S+?":"1[0-2]|"+p2+"[1-9]";break;case "D":s="[12][0-9][0-9]|3[0-5][0-9]|36[0-6]|"+p2+"[1-9][0-9]|"+p3+"[1-9]";break;case "d":s="3[01]|[12]\\d|"+p2+"[1-9]";break;case "w":s="[1-4][0-9]|5[0-3]|"+p2+"[1-9]";break;case "E":case "e":case "c":s="\\S+";break;case "h":s="1[0-2]|"+p2+"[1-9]";break;case "k":s="1[01]|"+p2+"\\d";break;case "H":s="1\\d|2[0-3]|"+p2+"\\d";break;case "K":s="1\\d|2[0-4]|"+p2+"[1-9]";break;case "m":case "s":s="[0-5]\\d";break;case "S":s="\\d{"+l+"}";break;case "a":var am=_4f.am||_4e["dayPeriods-format-wide-am"],pm=_4f.pm||_4e["dayPeriods-format-wide-pm"];s=am+"|"+pm;if(!_4f.strict){if(am!=am.toLowerCase()){s+="|"+am.toLowerCase();}if(pm!=pm.toLowerCase()){s+="|"+pm.toLowerCase();}if(s.indexOf(".")!=-1){s+="|"+s.replace(/\./g,"");}}s=s.replace(/\./g,"\\.");break;default:s=".*";}if(_4d){_4d.push(_51);}return "("+s+")";}).replace(/[\xa0 ]/g,"[\\s\\xa0]");};var _52=[];_a.addCustomFormats=function(_53,_54){_52.push({pkg:_53,name:_54});};_a._getGregorianBundle=function(_55){var _56={};_2.forEach(_52,function(_57){var _58=_5.getLocalization(_57.pkg,_57.name,_55);_56=_1.mixin(_56,_58);},this);return _56;};_a.addCustomFormats(_9.id.replace(/\/date\/locale$/,".cldr"),"gregorian");_a.getNames=function(_59,_5a,_5b,_5c){var _5d,_5e=_a._getGregorianBundle(_5c),_5f=[_59,_5b,_5a];if(_5b=="standAlone"){var key=_5f.join("-");_5d=_5e[key];if(_5d[0]==1){_5d=undefined;}}_5f[1]="format";return (_5d||_5e[_5f.join("-")]).concat();};_a.isWeekend=function(_60,_61){var _62=_4.getWeekend(_61),day=(_60||new Date()).getDay();if(_62.end<_62.start){_62.end+=7;if(day<_62.start){day+=7;}}return day>=_62.start&&day<=_62.end;};_a._getDayOfYear=function(_63){return _3.difference(new Date(_63.getFullYear(),0,1,_63.getHours()),_63)+1;};_a._getWeekOfYear=function(_64,_65){if(arguments.length==1){_65=0;}var _66=new Date(_64.getFullYear(),0,1).getDay(),adj=(_66-_65+7)%7,_67=Math.floor((_a._getDayOfYear(_64)+adj-1)/7);if(_66==_65){_67++;}return _67;};return _a;}); \ No newline at end of file diff --git a/lib/dojo/date/stamp.js b/lib/dojo/date/stamp.js new file mode 100644 index 0000000000..708ee72507 --- /dev/null +++ b/lib/dojo/date/stamp.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/date/stamp",["../_base/lang","../_base/array"],function(_1,_2){var _3={};_1.setObject("dojo.date.stamp",_3);_3.fromISOString=function(_4,_5){if(!_3._isoRegExp){_3._isoRegExp=/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/;}var _6=_3._isoRegExp.exec(_4),_7=null;if(_6){_6.shift();if(_6[1]){_6[1]--;}if(_6[6]){_6[6]*=1000;}if(_5){_5=new Date(_5);_2.forEach(_2.map(["FullYear","Month","Date","Hours","Minutes","Seconds","Milliseconds"],function(_8){return _5["get"+_8]();}),function(_9,_a){_6[_a]=_6[_a]||_9;});}_7=new Date(_6[0]||1970,_6[1]||0,_6[2]||1,_6[3]||0,_6[4]||0,_6[5]||0,_6[6]||0);if(_6[0]<100){_7.setFullYear(_6[0]||1970);}var _b=0,_c=_6[7]&&_6[7].charAt(0);if(_c!="Z"){_b=((_6[8]||0)*60)+(Number(_6[9])||0);if(_c!="-"){_b*=-1;}}if(_c){_b-=_7.getTimezoneOffset();}if(_b){_7.setTime(_7.getTime()+_b*60000);}}return _7;};_3.toISOString=function(_d,_e){var _f=function(n){return (n<10)?"0"+n:n;};_e=_e||{};var _10=[],_11=_e.zulu?"getUTC":"get",_12="";if(_e.selector!="time"){var _13=_d[_11+"FullYear"]();_12=["0000".substr((_13+"").length)+_13,_f(_d[_11+"Month"]()+1),_f(_d[_11+"Date"]())].join("-");}_10.push(_12);if(_e.selector!="date"){var _14=[_f(_d[_11+"Hours"]()),_f(_d[_11+"Minutes"]()),_f(_d[_11+"Seconds"]())].join(":");var _15=_d[_11+"Milliseconds"]();if(_e.milliseconds){_14+="."+(_15<100?"0":"")+_f(_15);}if(_e.zulu){_14+="Z";}else{if(_e.selector!="time"){var _16=_d.getTimezoneOffset();var _17=Math.abs(_16);_14+=(_16>0?"-":"+")+_f(Math.floor(_17/60))+":"+_f(_17%60);}}_10.push(_14);}return _10.join("T");};return _3;}); \ No newline at end of file diff --git a/lib/dojo/dnd/AutoSource.js b/lib/dojo/dnd/AutoSource.js new file mode 100644 index 0000000000..fa7eddd545 --- /dev/null +++ b/lib/dojo/dnd/AutoSource.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/dnd/AutoSource",["../_base/declare","./Source"],function(_1,_2){return _1("dojo.dnd.AutoSource",_2,{constructor:function(){this.autoSync=true;}});}); \ No newline at end of file diff --git a/lib/dojo/dnd/Avatar.js b/lib/dojo/dnd/Avatar.js new file mode 100644 index 0000000000..44fcfd2f4e --- /dev/null +++ b/lib/dojo/dnd/Avatar.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/dnd/Avatar",["../_base/declare","../_base/window","../dom","../dom-attr","../dom-class","../dom-construct","../hccss","../query"],function(_1,_2,_3,_4,_5,_6,_7,_8){return _1("dojo.dnd.Avatar",null,{constructor:function(_9){this.manager=_9;this.construct();},construct:function(){var a=_6.create("table",{"class":"dojoDndAvatar",style:{position:"absolute",zIndex:"1999",margin:"0px"}}),_a=this.manager.source,_b,b=_6.create("tbody",null,a),tr=_6.create("tr",null,b),td=_6.create("td",null,tr),k=Math.min(5,this.manager.nodes.length),i=0;if(_7("highcontrast")){_6.create("span",{id:"a11yIcon",innerHTML:this.manager.copy?"+":"<"},td);}_6.create("span",{innerHTML:_a.generateText?this._generateText():""},td);_4.set(tr,{"class":"dojoDndAvatarHeader",style:{opacity:0.9}});for(;i= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/dnd/Container",["../_base/array","../_base/declare","../_base/event","../_base/kernel","../_base/lang","../_base/window","../dom","../dom-class","../dom-construct","../Evented","../has","../on","../query","../ready","../touch","./common"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,on,_c,_d,_e,_f){var _10=_2("dojo.dnd.Container",_a,{skipForm:false,allowNested:false,constructor:function(_11,_12){this.node=_7.byId(_11);if(!_12){_12={};}this.creator=_12.creator||null;this.skipForm=_12.skipForm;this.parent=_12.dropParent&&_7.byId(_12.dropParent);this.map={};this.current=null;this.containerState="";_8.add(this.node,"dojoDndContainer");if(!(_12&&_12._skipStartup)){this.startup();}this.events=[on(this.node,_e.over,_5.hitch(this,"onMouseOver")),on(this.node,_e.out,_5.hitch(this,"onMouseOut")),on(this.node,"dragstart",_5.hitch(this,"onSelectStart")),on(this.node,"selectstart",_5.hitch(this,"onSelectStart"))];},creator:function(){},getItem:function(key){return this.map[key];},setItem:function(key,_13){this.map[key]=_13;},delItem:function(key){delete this.map[key];},forInItems:function(f,o){o=o||_4.global;var m=this.map,e=_f._empty;for(var i in m){if(i in e){continue;}f.call(o,m[i],i,this);}return o;},clearItems:function(){this.map={};},getAllNodes:function(){return _c((this.allowNested?"":"> ")+".dojoDndItem",this.parent);},sync:function(){var map={};this.getAllNodes().forEach(function(_14){if(_14.id){var _15=this.getItem(_14.id);if(_15){map[_14.id]=_15;return;}}else{_14.id=_f.getUniqueId();}var _16=_14.getAttribute("dndType"),_17=_14.getAttribute("dndData");map[_14.id]={data:_17||_14.innerHTML,type:_16?_16.split(/\s*,\s*/):["text"]};},this);this.map=map;return this;},insertNodes:function(_18,_19,_1a){if(!this.parent.firstChild){_1a=null;}else{if(_19){if(!_1a){_1a=this.parent.firstChild;}}else{if(_1a){_1a=_1a.nextSibling;}}}var i,t;if(_1a){for(i=0;i<_18.length;++i){t=this._normalizedCreator(_18[i]);this.setItem(t.node.id,{data:t.data,type:t.type});_1a.parentNode.insertBefore(t.node,_1a);}}else{for(i=0;i<_18.length;++i){t=this._normalizedCreator(_18[i]);this.setItem(t.node.id,{data:t.data,type:t.type});this.parent.appendChild(t.node);}}return this;},destroy:function(){_1.forEach(this.events,function(_1b){_1b.remove();});this.clearItems();this.node=this.parent=this.current=null;},markupFactory:function(_1c,_1d,_1e){_1c._skipStartup=true;return new _1e(_1d,_1c);},startup:function(){if(!this.parent){this.parent=this.node;if(this.parent.tagName.toLowerCase()=="table"){var c=this.parent.getElementsByTagName("tbody");if(c&&c.length){this.parent=c[0];}}}this.defaultCreator=_f._defaultCreator(this.parent);this.sync();},onMouseOver:function(e){var n=e.relatedTarget;while(n){if(n==this.node){break;}try{n=n.parentNode;}catch(x){n=null;}}if(!n){this._changeState("Container","Over");this.onOverEvent();}n=this._getChildByEvent(e);if(this.current==n){return;}if(this.current){this._removeItemClass(this.current,"Over");}if(n){this._addItemClass(n,"Over");}this.current=n;},onMouseOut:function(e){for(var n=e.relatedTarget;n;){if(n==this.node){return;}try{n=n.parentNode;}catch(x){n=null;}}if(this.current){this._removeItemClass(this.current,"Over");this.current=null;}this._changeState("Container","");this.onOutEvent();},onSelectStart:function(e){if(!this.skipForm||!_f.isFormElement(e)){_3.stop(e);}},onOverEvent:function(){},onOutEvent:function(){},_changeState:function(_1f,_20){var _21="dojoDnd"+_1f;var _22=_1f.toLowerCase()+"State";_8.replace(this.node,_21+_20,_21+this[_22]);this[_22]=_20;},_addItemClass:function(_23,_24){_8.add(_23,"dojoDndItem"+_24);},_removeItemClass:function(_25,_26){_8.remove(_25,"dojoDndItem"+_26);},_getChildByEvent:function(e){var _27=e.target;if(_27){for(var _28=_27.parentNode;_28;_27=_28,_28=_27.parentNode){if((_28==this.parent||this.allowNested)&&_8.contains(_27,"dojoDndItem")){return _27;}}}return null;},_normalizedCreator:function(_29,_2a){var t=(this.creator||this.defaultCreator).call(this,_29,_2a);if(!_5.isArray(t.type)){t.type=["text"];}if(!t.node.id){t.node.id=_f.getUniqueId();}_8.add(t.node,"dojoDndItem");return t;}});_f._createNode=function(tag){if(!tag){return _f._createSpan;}return function(_2b){return _9.create(tag,{innerHTML:_2b});};};_f._createTrTd=function(_2c){var tr=_9.create("tr");_9.create("td",{innerHTML:_2c},tr);return tr;};_f._createSpan=function(_2d){return _9.create("span",{innerHTML:_2d});};_f._defaultCreatorNodes={ul:"li",ol:"li",div:"div",p:"div"};_f._defaultCreator=function(_2e){var tag=_2e.tagName.toLowerCase();var c=tag=="tbody"||tag=="thead"?_f._createTrTd:_f._createNode(_f._defaultCreatorNodes[tag]);return function(_2f,_30){var _31=_2f&&_5.isObject(_2f),_32,_33,n;if(_31&&_2f.tagName&&_2f.nodeType&&_2f.getAttribute){_32=_2f.getAttribute("dndData")||_2f.innerHTML;_33=_2f.getAttribute("dndType");_33=_33?_33.split(/\s*,\s*/):["text"];n=_2f;}else{_32=(_31&&_2f.data)?_2f.data:_2f;_33=(_31&&_2f.type)?_2f.type:["text"];n=(_30=="avatar"?_f._createSpan:c)(String(_32));}if(!n.id){n.id=_f.getUniqueId();}return {node:n,data:_32,type:_33};};};return _10;}); \ No newline at end of file diff --git a/lib/dojo/dnd/Manager.js b/lib/dojo/dnd/Manager.js new file mode 100644 index 0000000000..a38ff45c22 --- /dev/null +++ b/lib/dojo/dnd/Manager.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/dnd/Manager",["../_base/array","../_base/declare","../_base/event","../_base/lang","../_base/window","../dom-class","../Evented","../has","../keys","../on","../topic","../touch","./common","./autoscroll","./Avatar"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,on,_a,_b,_c,_d,_e){var _f=_2("dojo.dnd.Manager",[_7],{constructor:function(){this.avatar=null;this.source=null;this.nodes=[];this.copy=true;this.target=null;this.canDropFlag=false;this.events=[];},OFFSET_X:_8("touch")?0:16,OFFSET_Y:_8("touch")?-64:16,overSource:function(_10){if(this.avatar){this.target=(_10&&_10.targetState!="Disabled")?_10:null;this.canDropFlag=Boolean(this.target);this.avatar.update();}_a.publish("/dnd/source/over",_10);},outSource:function(_11){if(this.avatar){if(this.target==_11){this.target=null;this.canDropFlag=false;this.avatar.update();_a.publish("/dnd/source/over",null);}}else{_a.publish("/dnd/source/over",null);}},startDrag:function(_12,_13,_14){_d.autoScrollStart(_5.doc);this.source=_12;this.nodes=_13;this.copy=Boolean(_14);this.avatar=this.makeAvatar();_5.body().appendChild(this.avatar.node);_a.publish("/dnd/start",_12,_13,this.copy);this.events=[on(_5.doc,_b.move,_4.hitch(this,"onMouseMove")),on(_5.doc,_b.release,_4.hitch(this,"onMouseUp")),on(_5.doc,"keydown",_4.hitch(this,"onKeyDown")),on(_5.doc,"keyup",_4.hitch(this,"onKeyUp")),on(_5.doc,"dragstart",_3.stop),on(_5.body(),"selectstart",_3.stop)];var c="dojoDnd"+(_14?"Copy":"Move");_6.add(_5.body(),c);},canDrop:function(_15){var _16=Boolean(this.target&&_15);if(this.canDropFlag!=_16){this.canDropFlag=_16;this.avatar.update();}},stopDrag:function(){_6.remove(_5.body(),["dojoDndCopy","dojoDndMove"]);_1.forEach(this.events,function(_17){_17.remove();});this.events=[];this.avatar.destroy();this.avatar=null;this.source=this.target=null;this.nodes=[];},makeAvatar:function(){return new _e(this);},updateAvatar:function(){this.avatar.update();},onMouseMove:function(e){var a=this.avatar;if(a){_d.autoScrollNodes(e);var s=a.node.style;s.left=(e.pageX+this.OFFSET_X)+"px";s.top=(e.pageY+this.OFFSET_Y)+"px";var _18=Boolean(this.source.copyState(_c.getCopyKeyState(e)));if(this.copy!=_18){this._setCopyStatus(_18);}}if(_8("touch")){e.preventDefault();}},onMouseUp:function(e){if(this.avatar){if(this.target&&this.canDropFlag){var _19=Boolean(this.source.copyState(_c.getCopyKeyState(e)));_a.publish("/dnd/drop/before",this.source,this.nodes,_19,this.target,e);_a.publish("/dnd/drop",this.source,this.nodes,_19,this.target,e);}else{_a.publish("/dnd/cancel");}this.stopDrag();}},onKeyDown:function(e){if(this.avatar){switch(e.keyCode){case _9.CTRL:var _1a=Boolean(this.source.copyState(true));if(this.copy!=_1a){this._setCopyStatus(_1a);}break;case _9.ESCAPE:_a.publish("/dnd/cancel");this.stopDrag();break;}}},onKeyUp:function(e){if(this.avatar&&e.keyCode==_9.CTRL){var _1b=Boolean(this.source.copyState(false));if(this.copy!=_1b){this._setCopyStatus(_1b);}}},_setCopyStatus:function(_1c){this.copy=_1c;this.source._markDndStatus(this.copy);this.updateAvatar();_6.replace(_5.body(),"dojoDnd"+(this.copy?"Copy":"Move"),"dojoDnd"+(this.copy?"Move":"Copy"));}});_c._manager=null;_f.manager=_c.manager=function(){if(!_c._manager){_c._manager=new _f();}return _c._manager;};return _f;}); \ No newline at end of file diff --git a/lib/dojo/dnd/Moveable.js b/lib/dojo/dnd/Moveable.js new file mode 100644 index 0000000000..acf17487af --- /dev/null +++ b/lib/dojo/dnd/Moveable.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/dnd/Moveable",["../_base/array","../_base/declare","../_base/event","../_base/lang","../dom","../dom-class","../Evented","../on","../topic","../touch","./common","./Mover","../_base/window"],function(_1,_2,_3,_4,_5,_6,_7,on,_8,_9,_a,_b,_c){var _d=_2("dojo.dnd.Moveable",[_7],{handle:"",delay:0,skip:false,constructor:function(_e,_f){this.node=_5.byId(_e);if(!_f){_f={};}this.handle=_f.handle?_5.byId(_f.handle):null;if(!this.handle){this.handle=this.node;}this.delay=_f.delay>0?_f.delay:0;this.skip=_f.skip;this.mover=_f.mover?_f.mover:_b;this.events=[on(this.handle,_9.press,_4.hitch(this,"onMouseDown")),on(this.handle,"dragstart",_4.hitch(this,"onSelectStart")),on(this.handle,"selectstart",_4.hitch(this,"onSelectStart"))];},markupFactory:function(_10,_11,_12){return new _12(_11,_10);},destroy:function(){_1.forEach(this.events,function(_13){_13.remove();});this.events=this.node=this.handle=null;},onMouseDown:function(e){if(this.skip&&_a.isFormElement(e)){return;}if(this.delay){this.events.push(on(this.handle,_9.move,_4.hitch(this,"onMouseMove")),on(this.handle,_9.release,_4.hitch(this,"onMouseUp")));this._lastX=e.pageX;this._lastY=e.pageY;}else{this.onDragDetected(e);}_3.stop(e);},onMouseMove:function(e){if(Math.abs(e.pageX-this._lastX)>this.delay||Math.abs(e.pageY-this._lastY)>this.delay){this.onMouseUp(e);this.onDragDetected(e);}_3.stop(e);},onMouseUp:function(e){for(var i=0;i<2;++i){this.events.pop().remove();}_3.stop(e);},onSelectStart:function(e){if(!this.skip||!_a.isFormElement(e)){_3.stop(e);}},onDragDetected:function(e){new this.mover(this.node,e,this);},onMoveStart:function(_14){_8.publish("/dnd/move/start",_14);_6.add(_c.body(),"dojoMove");_6.add(this.node,"dojoMoveItem");},onMoveStop:function(_15){_8.publish("/dnd/move/stop",_15);_6.remove(_c.body(),"dojoMove");_6.remove(this.node,"dojoMoveItem");},onFirstMove:function(){},onMove:function(_16,_17){this.onMoving(_16,_17);var s=_16.node.style;s.left=_17.l+"px";s.top=_17.t+"px";this.onMoved(_16,_17);},onMoving:function(){},onMoved:function(){}});return _d;}); \ No newline at end of file diff --git a/lib/dojo/dnd/Mover.js b/lib/dojo/dnd/Mover.js new file mode 100644 index 0000000000..0b7c6613e3 --- /dev/null +++ b/lib/dojo/dnd/Mover.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/dnd/Mover",["../_base/array","../_base/declare","../_base/event","../_base/lang","../sniff","../_base/window","../dom","../dom-geometry","../dom-style","../Evented","../on","../touch","./common","./autoscroll"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,on,_b,_c,_d){return _2("dojo.dnd.Mover",[_a],{constructor:function(_e,e,_f){this.node=_7.byId(_e);this.marginBox={l:e.pageX,t:e.pageY};this.mouseButton=e.button;var h=(this.host=_f),d=_e.ownerDocument;this.events=[on(d,_b.move,_4.hitch(this,"onFirstMove")),on(d,_b.move,_4.hitch(this,"onMouseMove")),on(d,_b.release,_4.hitch(this,"onMouseUp")),on(d,"dragstart",_3.stop),on(d.body,"selectstart",_3.stop)];_d.autoScrollStart(d);if(h&&h.onMoveStart){h.onMoveStart(this);}},onMouseMove:function(e){_d.autoScroll(e);var m=this.marginBox;this.host.onMove(this,{l:m.l+e.pageX,t:m.t+e.pageY},e);_3.stop(e);},onMouseUp:function(e){if(_5("webkit")&&_5("mac")&&this.mouseButton==2?e.button==0:this.mouseButton==e.button){this.destroy();}_3.stop(e);},onFirstMove:function(e){var s=this.node.style,l,t,h=this.host;switch(s.position){case "relative":case "absolute":l=Math.round(parseFloat(s.left))||0;t=Math.round(parseFloat(s.top))||0;break;default:s.position="absolute";var m=_8.getMarginBox(this.node);var b=_6.doc.body;var bs=_9.getComputedStyle(b);var bm=_8.getMarginBox(b,bs);var bc=_8.getContentBox(b,bs);l=m.l-(bc.l-bm.l);t=m.t-(bc.t-bm.t);break;}this.marginBox.l=l-this.marginBox.l;this.marginBox.t=t-this.marginBox.t;if(h&&h.onFirstMove){h.onFirstMove(this,e);}this.events.shift().remove();},destroy:function(){_1.forEach(this.events,function(_10){_10.remove();});var h=this.host;if(h&&h.onMoveStop){h.onMoveStop(this);}this.events=this.node=this.host=null;}});}); \ No newline at end of file diff --git a/lib/dojo/dnd/Selector.js b/lib/dojo/dnd/Selector.js new file mode 100644 index 0000000000..e44e15dd43 --- /dev/null +++ b/lib/dojo/dnd/Selector.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/dnd/Selector",["../_base/array","../_base/declare","../_base/event","../_base/kernel","../_base/lang","../dom","../dom-construct","../mouse","../_base/NodeList","../on","../touch","./common","./Container"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,on,_a,_b,_c){var _d=_2("dojo.dnd.Selector",_c,{constructor:function(_e,_f){if(!_f){_f={};}this.singular=_f.singular;this.autoSync=_f.autoSync;this.selection={};this.anchor=null;this.simpleSelection=false;this.events.push(on(this.node,_a.press,_5.hitch(this,"onMouseDown")),on(this.node,_a.release,_5.hitch(this,"onMouseUp")));},singular:false,getSelectedNodes:function(){var t=new _9();var e=_b._empty;for(var i in this.selection){if(i in e){continue;}t.push(_6.byId(i));}return t;},selectNone:function(){return this._removeSelection()._removeAnchor();},selectAll:function(){this.forInItems(function(_10,id){this._addItemClass(_6.byId(id),"Selected");this.selection[id]=1;},this);return this._removeAnchor();},deleteSelectedNodes:function(){var e=_b._empty;for(var i in this.selection){if(i in e){continue;}var n=_6.byId(i);this.delItem(i);_7.destroy(n);}this.anchor=null;this.selection={};return this;},forInSelectedItems:function(f,o){o=o||_4.global;var s=this.selection,e=_b._empty;for(var i in s){if(i in e){continue;}f.call(o,this.getItem(i),i,this);}},sync:function(){_d.superclass.sync.call(this);if(this.anchor){if(!this.getItem(this.anchor.id)){this.anchor=null;}}var t=[],e=_b._empty;for(var i in this.selection){if(i in e){continue;}if(!this.getItem(i)){t.push(i);}}_1.forEach(t,function(i){delete this.selection[i];},this);return this;},insertNodes:function(_11,_12,_13,_14){var _15=this._normalizedCreator;this._normalizedCreator=function(_16,_17){var t=_15.call(this,_16,_17);if(_11){if(!this.anchor){this.anchor=t.node;this._removeItemClass(t.node,"Selected");this._addItemClass(this.anchor,"Anchor");}else{if(this.anchor!=t.node){this._removeItemClass(t.node,"Anchor");this._addItemClass(t.node,"Selected");}}this.selection[t.node.id]=1;}else{this._removeItemClass(t.node,"Selected");this._removeItemClass(t.node,"Anchor");}return t;};_d.superclass.insertNodes.call(this,_12,_13,_14);this._normalizedCreator=_15;return this;},destroy:function(){_d.superclass.destroy.call(this);this.selection=this.anchor=null;},onMouseDown:function(e){if(this.autoSync){this.sync();}if(!this.current){return;}if(!this.singular&&!_b.getCopyKeyState(e)&&!e.shiftKey&&(this.current.id in this.selection)){this.simpleSelection=true;if(_8.isLeft(e)){_3.stop(e);}return;}if(!this.singular&&e.shiftKey){if(!_b.getCopyKeyState(e)){this._removeSelection();}var c=this.getAllNodes();if(c.length){if(!this.anchor){this.anchor=c[0];this._addItemClass(this.anchor,"Anchor");}this.selection[this.anchor.id]=1;if(this.anchor!=this.current){var i=0,_18;for(;i= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/dnd/Source",["../_base/array","../_base/connect","../_base/declare","../_base/kernel","../_base/lang","../dom-class","../dom-geometry","../mouse","../ready","../topic","./common","./Selector","./Manager"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,_c,_d){if(!_4.isAsync){_9(0,function(){var _e=["dojo/dnd/AutoSource","dojo/dnd/Target"];require(_e);});}var _f=_3("dojo.dnd.Source",_c,{isSource:true,horizontal:false,copyOnly:false,selfCopy:false,selfAccept:true,skipForm:false,withHandles:false,autoSync:false,delay:0,accept:["text"],generateText:true,constructor:function(_10,_11){_5.mixin(this,_5.mixin({},_11));var _12=this.accept;if(_12.length){this.accept={};for(var i=0;i<_12.length;++i){this.accept[_12[i]]=1;}}this.isDragging=false;this.mouseDown=false;this.targetAnchor=null;this.targetBox=null;this.before=true;this._lastX=0;this._lastY=0;this.sourceState="";if(this.isSource){_6.add(this.node,"dojoDndSource");}this.targetState="";if(this.accept){_6.add(this.node,"dojoDndTarget");}if(this.horizontal){_6.add(this.node,"dojoDndHorizontal");}this.topics=[_a.subscribe("/dnd/source/over",_5.hitch(this,"onDndSourceOver")),_a.subscribe("/dnd/start",_5.hitch(this,"onDndStart")),_a.subscribe("/dnd/drop",_5.hitch(this,"onDndDrop")),_a.subscribe("/dnd/cancel",_5.hitch(this,"onDndCancel"))];},checkAcceptance:function(_13,_14){if(this==_13){return !this.copyOnly||this.selfAccept;}for(var i=0;i<_14.length;++i){var _15=_13.getItem(_14[i].id).type;var _16=false;for(var j=0;j<_15.length;++j){if(_15[j] in this.accept){_16=true;break;}}if(!_16){return false;}}return true;},copyState:function(_17,_18){if(_17){return true;}if(arguments.length<2){_18=this==_d.manager().target;}if(_18){if(this.copyOnly){return this.selfCopy;}}else{return this.copyOnly;}return false;},destroy:function(){_f.superclass.destroy.call(this);_1.forEach(this.topics,function(t){t.remove();});this.targetAnchor=null;},onMouseMove:function(e){if(this.isDragging&&this.targetState=="Disabled"){return;}_f.superclass.onMouseMove.call(this,e);var m=_d.manager();if(!this.isDragging){if(this.mouseDown&&this.isSource&&(Math.abs(e.pageX-this._lastX)>this.delay||Math.abs(e.pageY-this._lastY)>this.delay)){var _19=this.getSelectedNodes();if(_19.length){m.startDrag(this,_19,this.copyState(_b.getCopyKeyState(e),true));}}}if(this.isDragging){var _1a=false;if(this.current){if(!this.targetBox||this.targetAnchor!=this.current){this.targetBox=_7.position(this.current,true);}if(this.horizontal){_1a=(e.pageX-this.targetBox.x= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/dnd/Target",["../_base/declare","../dom-class","./Source"],function(_1,_2,_3){return _1("dojo.dnd.Target",_3,{constructor:function(){this.isSource=false;_2.remove(this.node,"dojoDndSource");}});}); \ No newline at end of file diff --git a/lib/dojo/dnd/TimedMoveable.js b/lib/dojo/dnd/TimedMoveable.js new file mode 100644 index 0000000000..d160e3d0bd --- /dev/null +++ b/lib/dojo/dnd/TimedMoveable.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/dnd/TimedMoveable",["../_base/declare","./Moveable"],function(_1,_2){var _3=_2.prototype.onMove;return _1("dojo.dnd.TimedMoveable",_2,{timeout:40,constructor:function(_4,_5){if(!_5){_5={};}if(_5.timeout&&typeof _5.timeout=="number"&&_5.timeout>=0){this.timeout=_5.timeout;}},onMoveStop:function(_6){if(_6._timer){clearTimeout(_6._timer);_3.call(this,_6,_6._leftTop);}_2.prototype.onMoveStop.apply(this,arguments);},onMove:function(_7,_8){_7._leftTop=_8;if(!_7._timer){var _9=this;_7._timer=setTimeout(function(){_7._timer=null;_3.call(_9,_7,_7._leftTop);},this.timeout);}}});}); \ No newline at end of file diff --git a/lib/dojo/dnd/autoscroll.js b/lib/dojo/dnd/autoscroll.js new file mode 100644 index 0000000000..1c5badb449 --- /dev/null +++ b/lib/dojo/dnd/autoscroll.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/dnd/autoscroll",["../_base/lang","../sniff","../_base/window","../dom-geometry","../dom-style","../window"],function(_1,_2,_3,_4,_5,_6){var _7={};_1.setObject("dojo.dnd.autoscroll",_7);_7.getViewport=_6.getBox;_7.V_TRIGGER_AUTOSCROLL=32;_7.H_TRIGGER_AUTOSCROLL=32;_7.V_AUTOSCROLL_VALUE=16;_7.H_AUTOSCROLL_VALUE=16;var _8,_9=_3.doc,_a=Infinity,_b=Infinity;_7.autoScrollStart=function(d){_9=d;_8=_6.getBox(_9);var _c=_3.body(_9).parentNode;_a=Math.max(_c.scrollHeight-_8.h,0);_b=Math.max(_c.scrollWidth-_8.w,0);};_7.autoScroll=function(e){var v=_8||_6.getBox(_9),_d=_3.body(_9).parentNode,dx=0,dy=0;if(e.clientX<_7.H_TRIGGER_AUTOSCROLL){dx=-_7.H_AUTOSCROLL_VALUE;}else{if(e.clientX>v.w-_7.H_TRIGGER_AUTOSCROLL){dx=Math.min(_7.H_AUTOSCROLL_VALUE,_b-_d.scrollLeft);}}if(e.clientY<_7.V_TRIGGER_AUTOSCROLL){dy=-_7.V_AUTOSCROLL_VALUE;}else{if(e.clientY>v.h-_7.V_TRIGGER_AUTOSCROLL){dy=Math.min(_7.V_AUTOSCROLL_VALUE,_a-_d.scrollTop);}}window.scrollBy(dx,dy);};_7._validNodes={"div":1,"p":1,"td":1};_7._validOverflow={"auto":1,"scroll":1};_7.autoScrollNodes=function(e){var b,t,w,h,rx,ry,dx=0,dy=0,_e,_f;for(var n=e.target;n;){if(n.nodeType==1&&(n.tagName.toLowerCase() in _7._validNodes)){var s=_5.getComputedStyle(n),_10=(s.overflow.toLowerCase() in _7._validOverflow),_11=(s.overflowX.toLowerCase() in _7._validOverflow),_12=(s.overflowY.toLowerCase() in _7._validOverflow);if(_10||_11||_12){b=_4.getContentBox(n,s);t=_4.position(n,true);}if(_10||_11){w=Math.min(_7.H_TRIGGER_AUTOSCROLL,b.w/2);rx=e.pageX-t.x;if(_2("webkit")||_2("opera")){rx+=_3.body().scrollLeft;}dx=0;if(rx>0&&rxb.w-w){dx=w;}}_e=n.scrollLeft;n.scrollLeft=n.scrollLeft+dx;}}if(_10||_12){h=Math.min(_7.V_TRIGGER_AUTOSCROLL,b.h/2);ry=e.pageY-t.y;if(_2("webkit")||_2("opera")){ry+=_3.body().scrollTop;}dy=0;if(ry>0&&ryb.h-h){dy=h;}}_f=n.scrollTop;n.scrollTop=n.scrollTop+dy;}}if(dx||dy){return;}}try{n=n.parentNode;}catch(x){n=null;}}_7.autoScroll(e);};return _7;}); \ No newline at end of file diff --git a/lib/dojo/dnd/common.js b/lib/dojo/dnd/common.js new file mode 100644 index 0000000000..4ac2dca566 --- /dev/null +++ b/lib/dojo/dnd/common.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/dnd/common",["../_base/connect","../_base/kernel","../_base/lang","../dom"],function(_1,_2,_3,_4){var _5=_3.getObject("dojo.dnd",true);_5.getCopyKeyState=_1.isCopyKey;_5._uniqueId=0;_5.getUniqueId=function(){var id;do{id=_2._scopeName+"Unique"+(++_5._uniqueId);}while(_4.byId(id));return id;};_5._empty={};_5.isFormElement=function(e){var t=e.target;if(t.nodeType==3){t=t.parentNode;}return " button textarea input select option ".indexOf(" "+t.tagName.toLowerCase()+" ")>=0;};return _5;}); \ No newline at end of file diff --git a/lib/dojo/dnd/move.js b/lib/dojo/dnd/move.js new file mode 100644 index 0000000000..1271d4de78 --- /dev/null +++ b/lib/dojo/dnd/move.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/dnd/move",["../_base/declare","../dom-geometry","../dom-style","./common","./Mover","./Moveable"],function(_1,_2,_3,_4,_5,_6){var _7=_1("dojo.dnd.move.constrainedMoveable",_6,{constraints:function(){},within:false,constructor:function(_8,_9){if(!_9){_9={};}this.constraints=_9.constraints;this.within=_9.within;},onFirstMove:function(_a){var c=this.constraintBox=this.constraints.call(this,_a);c.r=c.l+c.w;c.b=c.t+c.h;if(this.within){var mb=_2.getMarginSize(_a.node);c.r-=mb.w;c.b-=mb.h;}},onMove:function(_b,_c){var c=this.constraintBox,s=_b.node.style;this.onMoving(_b,_c);_c.l=_c.l= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +/* + This is an optimized version of Dojo, built for deployment and not for + development. To get sources and documentation, please visit: + + http://dojotoolkit.org +*/ + +//>>built +(function(_1,_2){var _3=function(){},_4=function(it){for(var p in it){return 0;}return 1;},_5={}.toString,_6=function(it){return _5.call(it)=="[object Function]";},_7=function(it){return _5.call(it)=="[object String]";},_8=function(it){return _5.call(it)=="[object Array]";},_9=function(_a,_b){if(_a){for(var i=0;i<_a.length;){_b(_a[i++]);}}},_c=function(_d,_e){for(var p in _e){_d[p]=_e[p];}return _d;},_f=function(_10,_11){return _c(new Error(_10),{src:"dojoLoader",info:_11});},_12=1,uid=function(){return "_"+_12++;},req=function(_13,_14,_15){return _16(_13,_14,_15,0,req);},_17=this,doc=_17.document,_18=doc&&doc.createElement("DiV"),has=req.has=function(_19){return _6(_1a[_19])?(_1a[_19]=_1a[_19](_17,doc,_18)):_1a[_19];},_1a=has.cache=_2.hasCache;has.add=function(_1b,_1c,now,_1d){(_1a[_1b]===undefined||_1d)&&(_1a[_1b]=_1c);return now&&has(_1b);};0&&has.add("host-node",_1.has&&"host-node" in _1.has?_1.has["host-node"]:(typeof process=="object"&&process.versions&&process.versions.node&&process.versions.v8));if(0){require("./_base/configNode.js").config(_2);_2.loaderPatch.nodeRequire=require;}0&&has.add("host-rhino",_1.has&&"host-rhino" in _1.has?_1.has["host-rhino"]:(typeof load=="function"&&(typeof Packages=="function"||typeof Packages=="object")));if(0){for(var _1e=_1.baseUrl||".",arg,_1f=this.arguments,i=0;i<_1f.length;){arg=(_1f[i++]+"").split("=");if(arg[0]=="baseUrl"){_1e=arg[1];break;}}load(_1e+"/_base/configRhino.js");rhinoDojoConfig(_2,_1e,_1f);}for(var p in _1.has){has.add(p,_1.has[p],0,1);}var _20=1,_21=2,_22=3,_23=4,_24=5;if(0){_20="requested";_21="arrived";_22="not-a-module";_23="executing";_24="executed";}var _25=0,_26="sync",xd="xd",_27=[],_28=0,_29=_3,_2a=_3,_2b;if(1){req.isXdUrl=_3;req.initSyncLoader=function(_2c,_2d,_2e){if(!_28){_28=_2c;_29=_2d;_2a=_2e;}return {sync:_26,requested:_20,arrived:_21,nonmodule:_22,executing:_23,executed:_24,syncExecStack:_27,modules:_2f,execQ:_30,getModule:_31,injectModule:_32,setArrived:_33,signal:_34,finishExec:_35,execModule:_36,dojoRequirePlugin:_28,getLegacyMode:function(){return _25;},guardCheckComplete:_37};};if(1){var _38=location.protocol,_39=location.host;req.isXdUrl=function(url){if(/^\./.test(url)){return false;}if(/^\/\//.test(url)){return true;}var _3a=url.match(/^([^\/\:]+\:)\/+([^\/]+)/);return _3a&&(_3a[1]!=_38||(_39&&_3a[2]!=_39));};1||has.add("dojo-xhr-factory",1);has.add("dojo-force-activex-xhr",1&&!doc.addEventListener&&window.location.protocol=="file:");has.add("native-xhr",typeof XMLHttpRequest!="undefined");if(has("native-xhr")&&!has("dojo-force-activex-xhr")){_2b=function(){return new XMLHttpRequest();};}else{for(var _3b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"],_3c,i=0;i<3;){try{_3c=_3b[i++];if(new ActiveXObject(_3c)){break;}}catch(e){}}_2b=function(){return new ActiveXObject(_3c);};}req.getXhr=_2b;has.add("dojo-gettext-api",1);req.getText=function(url,_3d,_3e){var xhr=_2b();xhr.open("GET",_3f(url),false);xhr.send(null);if(xhr.status==200||(!location.host&&!xhr.status)){if(_3e){_3e(xhr.responseText,_3d);}}else{throw _f("xhrFailed",xhr.status);}return xhr.responseText;};}}else{req.async=1;}var _40=new Function("return eval(arguments[0]);");req.eval=function(_41,_42){return _40(_41+"\r\n////@ sourceURL="+_42);};var _43={},_44="error",_34=req.signal=function(_45,_46){var _47=_43[_45];_9(_47&&_47.slice(0),function(_48){_48.apply(null,_8(_46)?_46:[_46]);});},on=req.on=function(_49,_4a){var _4b=_43[_49]||(_43[_49]=[]);_4b.push(_4a);return {remove:function(){for(var i=0;i<_4b.length;i++){if(_4b[i]===_4a){_4b.splice(i,1);return;}}}};};var _4c=[],_4d={},_4e=[],_4f={},map=req.map={},_50=[],_2f={},_51="",_52={},_53="url:",_54={},_55={};if(1){var _56=function(_57){var p,_58,_59,now,m;for(p in _54){_58=_54[p];_59=p.match(/^url\:(.+)/);if(_59){_52[_53+_5a(_59[1],_57)]=_58;}else{if(p=="*now"){now=_58;}else{if(p!="*noref"){m=_5b(p,_57);_52[m.mid]=_52[_53+m.url]=_58;}}}}if(now){now(_5c(_57));}_54={};},_5d=function(s){return s.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,function(c){return "\\"+c;});},_5e=function(map,_5f){_5f.splice(0,_5f.length);for(var p in map){_5f.push([p,map[p],new RegExp("^"+_5d(p)+"(/|$)"),p.length]);}_5f.sort(function(lhs,rhs){return rhs[3]-lhs[3];});return _5f;},_60=function(_61){var _62=_61.name;if(!_62){_62=_61;_61={name:_62};}_61=_c({main:"main"},_61);_61.location=_61.location?_61.location:_62;if(_61.packageMap){map[_62]=_61.packageMap;}if(!_61.main.indexOf("./")){_61.main=_61.main.substring(2);}_4f[_62]=_61;},_63=[],_64=function(_65,_66,_67){for(var p in _65){if(p=="waitSeconds"){req.waitms=(_65[p]||0)*1000;}if(p=="cacheBust"){_51=_65[p]?(_7(_65[p])?_65[p]:(new Date()).getTime()+""):"";}if(p=="baseUrl"||p=="combo"){req[p]=_65[p];}if(1&&p=="async"){var _68=_65[p];req.legacyMode=_25=(_7(_68)&&/sync|legacyAsync/.test(_68)?_68:(!_68?_26:false));req.async=!_25;}if(_65[p]!==_1a){req.rawConfig[p]=_65[p];p!="has"&&has.add("config-"+p,_65[p],0,_66);}}if(!req.baseUrl){req.baseUrl="./";}if(!/\/$/.test(req.baseUrl)){req.baseUrl+="/";}for(p in _65.has){has.add(p,_65.has[p],0,_66);}_9(_65.packages,_60);for(_1e in _65.packagePaths){_9(_65.packagePaths[_1e],function(_69){var _6a=_1e+"/"+_69;if(_7(_69)){_69={name:_69};}_69.location=_6a;_60(_69);});}_5e(_c(map,_65.map),_50);_9(_50,function(_6b){_6b[1]=_5e(_6b[1],[]);if(_6b[0]=="*"){_50.star=_6b;}});_5e(_c(_4d,_65.paths),_4e);_9(_65.aliases,function(_6c){if(_7(_6c[0])){_6c[0]=new RegExp("^"+_5d(_6c[0])+"$");}_4c.push(_6c);});if(_66){_63.push({config:_65.config});}else{for(p in _65.config){var _6d=_31(p,_67);_6d.config=_c(_6d.config||{},_65.config[p]);}}if(_65.cache){_56();_54=_65.cache;if(_65.cache["*noref"]){_56();}}_34("config",[_65,req.rawConfig]);};if(has("dojo-cdn")||1){var _6e=doc.getElementsByTagName("script"),i=0,_6f,_70,src,_71;while(i<_6e.length){_6f=_6e[i++];if((src=_6f.getAttribute("src"))&&(_71=src.match(/(((.*)\/)|^)dojo\.js(\W|$)/i))){_70=_71[3]||"";_2.baseUrl=_2.baseUrl||_70;src=(_6f.getAttribute("data-dojo-config")||_6f.getAttribute("djConfig"));if(src){_55=req.eval("({ "+src+" })","data-dojo-config");}if(0){var _72=_6f.getAttribute("data-main");if(_72){_55.deps=_55.deps||[_72];}}break;}}}if(0){try{if(window.parent!=window&&window.parent.require){var doh=window.parent.require("doh");doh&&_c(_55,doh.testConfig);}}catch(e){}}req.rawConfig={};_64(_2,1);if(has("dojo-cdn")){_4f.dojo.location=_70;if(_70){_70+="/";}_4f.dijit.location=_70+"../dijit/";_4f.dojox.location=_70+"../dojox/";}_64(_1,1);_64(_55,1);}else{_4d=_2.paths;_4e=_2.pathsMapProg;_4f=_2.packs;_4c=_2.aliases;_50=_2.mapProgs;_2f=_2.modules;_52=_2.cache;_51=_2.cacheBust;req.rawConfig=_2;}if(0){req.combo=req.combo||{add:_3};var _73=0,_74=[],_75=null;}var _76=function(_77){_37(function(){_9(_77.deps,_32);if(0&&_73&&!_75){_75=setTimeout(function(){_73=0;_75=null;req.combo.done(function(_78,url){var _79=function(){_7a(0,_78);_7b();};_74.push(_78);_7c=_78;req.injectUrl(url,_79,_78);_7c=0;},req);},0);}});},_16=function(a1,a2,a3,_7d,_7e){var _7f,_80;if(_7(a1)){_7f=_31(a1,_7d,true);if(_7f&&_7f.executed){return _7f.result;}throw _f("undefinedModule",a1);}if(!_8(a1)){_64(a1,0,_7d);a1=a2;a2=a3;}if(_8(a1)){if(!a1.length){a2&&a2();}else{_80="require*"+uid();for(var mid,_81=[],i=0;i_ab){_ac=_6(_ad[1])?mid.replace(_ad[0],_ad[1]):_ad[1];}});if(_ac){return _9c(_ac,0,_9e,_9f,_a0,_a1,_a2,_a3);}_a8=_9f[mid];if(_a8){return _a3?_82(_a8.pid,_a8.mid,_a8.pack,_a8.url):_9f[mid];}}_a7=_94(mid,_a2);if(_a7){url=_a7[1]+mid.substring(_a7[3]);}else{if(pid){url=_a4.location+"/"+_a5;}else{if(has("config-tlmSiblingOfDojo")){url="../"+mid;}else{url=mid;}}}if(!(/(^\/)|(\:)/.test(url))){url=_a0+url;}url+=".js";return _82(pid,mid,_a4,_96(url));},_5b=function(mid,_af){return _9c(mid,_af,_4f,_2f,req.baseUrl,_50,_4e);},_b0=function(_b1,_b2,_b3){return _b1.normalize?_b1.normalize(_b2,function(mid){return _b4(mid,_b3);}):_b4(_b2,_b3);},_b5=0,_31=function(mid,_b6,_b7){var _b8,_b9,_ba,_bb;_b8=mid.match(/^(.+?)\!(.*)$/);if(_b8){_b9=_31(_b8[1],_b6,_b7);if(1&&_25==_26&&!_b9.executed){_32(_b9);if(_b9.injected===_21&&!_b9.executed){_37(function(){_36(_b9);});}if(_b9.executed){_bc(_b9);}else{_30.unshift(_b9);}}if(_b9.executed===_24&&!_b9.load){_bc(_b9);}if(_b9.load){_ba=_b0(_b9,_b8[2],_b6);mid=(_b9.mid+"!"+(_b9.dynamic?++_b5+"!":"")+_ba);}else{_ba=_b8[2];mid=_b9.mid+"!"+(++_b5)+"!waitingForPlugin";}_bb={plugin:_b9,mid:mid,req:_5c(_b6),prid:_ba};}else{_bb=_5b(mid,_b6);}return _2f[_bb.mid]||(!_b7&&(_2f[_bb.mid]=_bb));},_b4=req.toAbsMid=function(mid,_bd){return _5b(mid,_bd).mid;},_5a=req.toUrl=function(_be,_bf){var _c0=_5b(_be+"/x",_bf),url=_c0.url;return _3f(_c0.pid===0?_be:url.substring(0,url.length-5));},_c1={injected:_21,executed:_24,def:_22,result:_22},_c2=function(mid){return _2f[mid]=_c({mid:mid},_c1);},_c3=_c2("require"),_c4=_c2("exports"),_c5=_c2("module"),_c6=function(_c7,_c8){req.trace("loader-run-factory",[_c7.mid]);var _c9=_c7.def,_ca;1&&_27.unshift(_c7);if(has("config-dojo-loader-catches")){try{_ca=_6(_c9)?_c9.apply(null,_c8):_c9;}catch(e){_34(_44,_c7.result=_f("factoryThrew",[_c7,e]));}}else{_ca=_6(_c9)?_c9.apply(null,_c8):_c9;}_c7.result=_ca===undefined&&_c7.cjs?_c7.cjs.exports:_ca;1&&_27.shift(_c7);},_cb={},_cc=0,_bc=function(_cd){var _ce=_cd.result;_cd.dynamic=_ce.dynamic;_cd.normalize=_ce.normalize;_cd.load=_ce.load;return _cd;},_cf=function(_d0){var map={};_9(_d0.loadQ,function(_d1){var _d2=_b0(_d0,_d1.prid,_d1.req.module),mid=_d0.dynamic?_d1.mid.replace(/waitingForPlugin$/,_d2):(_d0.mid+"!"+_d2),_d3=_c(_c({},_d1),{mid:mid,prid:_d2,injected:0});if(!_2f[mid]){_e5(_2f[mid]=_d3);}map[_d1.mid]=_2f[mid];_33(_d1);delete _2f[_d1.mid];});_d0.loadQ=0;var _d4=function(_d5){for(var _d6,_d7=_d5.deps||[],i=0;i<_d7.length;i++){_d6=map[_d7[i].mid];if(_d6){_d7[i]=_d6;}}};for(var p in _2f){_d4(_2f[p]);}_9(_30,_d4);},_35=function(_d8){req.trace("loader-finish-exec",[_d8.mid]);_d8.executed=_24;_d8.defOrder=_cc++;1&&_9(_d8.provides,function(cb){cb();});if(_d8.loadQ){_bc(_d8);_cf(_d8);}for(i=0;i<_30.length;){if(_30[i]===_d8){_30.splice(i,1);}else{i++;}}if(/^require\*/.test(_d8.mid)){delete _2f[_d8.mid];}},_d9=[],_36=function(_da,_db){if(_da.executed===_23){req.trace("loader-circular-dependency",[_d9.concat(_da.mid).join("->")]);return (!_da.def||_db)?_cb:(_da.cjs&&_da.cjs.exports);}if(!_da.executed){if(!_da.def){return _cb;}var mid=_da.mid,_dc=_da.deps||[],arg,_dd,_de=[],i=0;if(0){_d9.push(mid);req.trace("loader-exec-module",["exec",_d9.length,mid]);}_da.executed=_23;while(i<_dc.length){arg=_dc[i++];_dd=((arg===_c3)?_5c(_da):((arg===_c4)?_da.cjs.exports:((arg===_c5)?_da.cjs:_36(arg,_db))));if(_dd===_cb){_da.executed=0;req.trace("loader-exec-module",["abort",mid]);0&&_d9.pop();return _cb;}_de.push(_dd);}_c6(_da,_de);_35(_da);0&&_d9.pop();}return _da.result;},_84=0,_37=function(_df){try{_84++;_df();}finally{_84--;}if(_93()){_34("idle",[]);}},_7b=function(){if(_84){return;}_37(function(){_29();for(var _e0,_e1,i=0;i<_30.length;){_e0=_cc;_e1=_30[i];_36(_e1);if(_e0!=_cc){_29();i=0;}else{i++;}}});};if(0){req.undef=function(_e2,_e3){var _e4=_31(_e2,_e3);_33(_e4);delete _2f[_e4.mid];};}if(1){if(has("dojo-loader-eval-hint-url")===undefined){has.add("dojo-loader-eval-hint-url",1);}var _3f=function(url){url+="";return url+(_51?((/\?/.test(url)?"&":"?")+_51):"");},_e5=function(_e6){var _e7=_e6.plugin;if(_e7.executed===_24&&!_e7.load){_bc(_e7);}var _e8=function(def){_e6.result=def;_33(_e6);_35(_e6);_7b();};if(_e7.load){_e7.load(_e6.prid,_e6.req,_e8);}else{if(_e7.loadQ){_e7.loadQ.push(_e6);}else{_e7.loadQ=[_e6];_30.unshift(_e7);_32(_e7);}}},_8a=0,_7c=0,_e9=0,_8b=function(_ea,_eb){if(has("config-stripStrict")){_ea=_ea.replace(/"use strict"/g,"");}_e9=1;if(has("config-dojo-loader-catches")){try{if(_ea===_8a){_8a.call(null);}else{req.eval(_ea,has("dojo-loader-eval-hint-url")?_eb.url:_eb.mid);}}catch(e){_34(_44,_f("evalModuleThrew",_eb));}}else{if(_ea===_8a){_8a.call(null);}else{req.eval(_ea,has("dojo-loader-eval-hint-url")?_eb.url:_eb.mid);}}_e9=0;},_32=function(_ec){var mid=_ec.mid,url=_ec.url;if(_ec.executed||_ec.injected||_8d[mid]||(_ec.url&&((_ec.pack&&_8d[_ec.url]===_ec.pack)||_8d[_ec.url]==1))){return;}_8e(_ec);if(0){var _ed=0;if(_ec.plugin&&_ec.plugin.isCombo){req.combo.add(_ec.plugin.mid,_ec.prid,0,req);_ed=1;}else{if(!_ec.plugin){_ed=req.combo.add(0,_ec.mid,_ec.url,req);}}if(_ed){_73=1;return;}}if(_ec.plugin){_e5(_ec);return;}var _ee=function(){_7a(_ec);if(_ec.injected!==_21){_33(_ec);_c(_ec,_c1);req.trace("loader-define-nonmodule",[_ec.url]);}if(1&&_25){!_27.length&&_7b();}else{_7b();}};_8a=_52[mid]||_52[_53+_ec.url];if(_8a){req.trace("loader-inject",["cache",_ec.mid,url]);_8b(_8a,_ec);_ee();return;}if(1&&_25){if(_ec.isXd){_25==_26&&(_25=xd);}else{if(_ec.isAmd&&_25!=_26){}else{var _ef=function(_f0){if(_25==_26){_27.unshift(_ec);_8b(_f0,_ec);_27.shift();_7a(_ec);if(!_ec.cjs){_33(_ec);_35(_ec);}if(_ec.finish){var _f1=mid+"*finish",_f2=_ec.finish;delete _ec.finish;def(_f1,["dojo",("dojo/require!"+_f2.join(",")).replace(/\./g,"/")],function(_f3){_9(_f2,function(mid){_f3.require(mid);});});_30.unshift(_31(_f1));}_ee();}else{_f0=_2a(_ec,_f0);if(_f0){_8b(_f0,_ec);_ee();}else{_7c=_ec;req.injectUrl(_3f(url),_ee,_ec);_7c=0;}}};req.trace("loader-inject",["xhr",_ec.mid,url,_25!=_26]);if(has("config-dojo-loader-catches")){try{req.getText(url,_25!=_26,_ef);}catch(e){_34(_44,_f("xhrInjectFailed",[_ec,e]));}}else{req.getText(url,_25!=_26,_ef);}return;}}}req.trace("loader-inject",["script",_ec.mid,url]);_7c=_ec;req.injectUrl(_3f(url),_ee,_ec);_7c=0;},_f4=function(_f5,_f6,def){req.trace("loader-define-module",[_f5.mid,_f6]);if(0&&_f5.plugin&&_f5.plugin.isCombo){_f5.result=_6(def)?def():def;_33(_f5);_35(_f5);return _f5;}var mid=_f5.mid;if(_f5.injected===_21){_34(_44,_f("multipleDefine",_f5));return _f5;}_c(_f5,{deps:_f6,def:def,cjs:{id:_f5.mid,uri:_f5.url,exports:(_f5.result={}),setExports:function(_f7){_f5.cjs.exports=_f7;},config:function(){return _f5.config;}}});for(var i=0;i<_f6.length;i++){_f6[i]=_31(_f6[i],_f5);}if(1&&_25&&!_8d[mid]){_76(_f5);_30.push(_f5);_7b();}_33(_f5);if(!_6(def)&&!_f6.length){_f5.result=def;_35(_f5);}return _f5;},_7a=function(_f8,_f9){var _fa=[],_fb,_fc;while(_8c.length){_fc=_8c.shift();_f9&&(_fc[0]=_f9.shift());_fb=(_fc[0]&&_31(_fc[0]))||_f8;_fa.push([_fb,_fc[1],_fc[2]]);}_56(_f8);_9(_fa,function(_fd){_76(_f4.apply(null,_fd));});};}var _fe=0,_92=_3,_90=_3;if(1){_92=function(){_fe&&clearTimeout(_fe);_fe=0;},_90=function(){_92();if(req.waitms){_fe=window.setTimeout(function(){_92();_34(_44,_f("timeout",_8d));},req.waitms);}};}if(1){has.add("ie-event-behavior",!!doc.attachEvent&&(typeof opera==="undefined"||opera.toString()!="[object Opera]"));}if(1&&(1||1)){var _ff=function(node,_100,_101,_102){if(!has("ie-event-behavior")){node.addEventListener(_100,_102,false);return function(){node.removeEventListener(_100,_102,false);};}else{node.attachEvent(_101,_102);return function(){node.detachEvent(_101,_102);};}},_103=_ff(window,"load","onload",function(){req.pageLoaded=1;doc.readyState!="complete"&&(doc.readyState="complete");_103();});if(1){var _104=doc.getElementsByTagName("script")[0],_105=_104.parentNode;req.injectUrl=function(url,_106,_107){var node=_107.node=doc.createElement("script"),_108=function(e){e=e||window.event;var node=e.target||e.srcElement;if(e.type==="load"||/complete|loaded/.test(node.readyState)){_109();_10a();_106&&_106();}},_109=_ff(node,"load","onreadystatechange",_108),_10a=_ff(node,"error","onerror",function(e){_109();_10a();_34(_44,_f("scriptError",[url,e]));});node.type="text/javascript";node.charset="utf-8";node.src=url;_105.insertBefore(node,_104);return node;};}}if(1){req.log=function(){try{for(var i=0;i0&&form.attributes.length<40);}has.clearElement=function(_13a){_13a.innerHTML="";return _13a;};has.normalize=function(id,_13b){var _13c=id.match(/[\?:]|[^:\?]*/g),i=0,get=function(skip){var term=_13c[i++];if(term==":"){return 0;}else{if(_13c[i++]=="?"){if(!skip&&has(term)){return get();}else{get(true);return get(skip);}}return term||0;}};id=get();return id&&_13b(id);};has.load=function(id,_13d,_13e){if(id){_13d([id],_13e);}else{_13e();}};return has;});},"dojo/_base/config":function(){define(["../has","require"],function(has,_13f){var _140={};if(1){var src=_13f.rawConfig,p;for(p in src){_140[p]=src[p];}}else{var _141=function(_142,_143,_144){for(p in _142){p!="has"&&has.add(_143+p,_142[p],0,_144);}};_140=1?_13f.rawConfig:this.dojoConfig||this.djConfig||{};_141(_140,"config",1);_141(_140.has,"",1);}return _140;});},"dojo/sniff":function(){define("dojo/sniff",["./has"],function(has){if(1){var n=navigator,dua=n.userAgent,dav=n.appVersion,tv=parseFloat(dav);has.add("air",dua.indexOf("AdobeAIR")>=0),has.add("khtml",dav.indexOf("Konqueror")>=0?tv:undefined);has.add("webkit",parseFloat(dua.split("WebKit/")[1])||undefined);has.add("chrome",parseFloat(dua.split("Chrome/")[1])||undefined);has.add("safari",dav.indexOf("Safari")>=0&&!has("chrome")?parseFloat(dav.split("Version/")[1]):undefined);has.add("mac",dav.indexOf("Macintosh")>=0);has.add("quirks",document.compatMode=="BackCompat");has.add("ios",/iPhone|iPod|iPad/.test(dua));has.add("android",parseFloat(dua.split("Android ")[1])||undefined);if(!has("webkit")){if(dua.indexOf("Opera")>=0){has.add("opera",tv>=9.8?parseFloat(dua.split("Version/")[1])||tv:tv);}if(dua.indexOf("Gecko")>=0&&!has("khtml")&&!has("webkit")){has.add("mozilla",tv);}if(has("mozilla")){has.add("ff",parseFloat(dua.split("Firefox/")[1]||dua.split("Minefield/")[1])||undefined);}if(document.all&&!has("opera")){var isIE=parseFloat(dav.split("MSIE ")[1])||undefined;var mode=document.documentMode;if(mode&&mode!=5&&Math.floor(isIE)!=mode){isIE=mode;}has.add("ie",isIE);}has.add("wii",typeof opera!="undefined"&&opera.wiiremote);}}return has;});},"dojo/_base/lang":function(){define(["./kernel","../has","../sniff"],function(dojo,has){has.add("bug-for-in-skips-shadowed",function(){for(var i in {toString:1}){return 0;}return 1;});var _145=has("bug-for-in-skips-shadowed")?"hasOwnProperty.valueOf.isPrototypeOf.propertyIsEnumerable.toLocaleString.toString.constructor".split("."):[],_146=_145.length,_147=function(_148,_149,_14a){var p,i=0,_14b=dojo.global;if(!_14a){if(!_148.length){return _14b;}else{p=_148[i++];try{_14a=dojo.scopeMap[p]&&dojo.scopeMap[p][1];}catch(e){}_14a=_14a||(p in _14b?_14b[p]:(_149?_14b[p]={}:undefined));}}while(_14a&&(p=_148[i++])){_14a=(p in _14a?_14a[p]:(_149?_14a[p]={}:undefined));}return _14a;},opts=Object.prototype.toString,_14c=function(obj,_14d,_14e){return (_14e||[]).concat(Array.prototype.slice.call(obj,_14d||0));},_14f=/\{([^\}]+)\}/g;var lang={_extraNames:_145,_mixin:function(dest,_150,_151){var name,s,i,_152={};for(name in _150){s=_150[name];if(!(name in dest)||(dest[name]!==s&&(!(name in _152)||_152[name]!==s))){dest[name]=_151?_151(s):s;}}if(has("bug-for-in-skips-shadowed")){if(_150){for(i=0;i<_146;++i){name=_145[i];s=_150[name];if(!(name in dest)||(dest[name]!==s&&(!(name in _152)||_152[name]!==s))){dest[name]=_151?_151(s):s;}}}}return dest;},mixin:function(dest,_153){if(!dest){dest={};}for(var i=1,l=arguments.length;i2){return lang._hitchArgs.apply(dojo,arguments);}if(!_15e){_15e=_15d;_15d=null;}if(lang.isString(_15e)){_15d=_15d||dojo.global;if(!_15d[_15e]){throw (["lang.hitch: scope[\"",_15e,"\"] is null (scope=\"",_15d,"\")"].join(""));}return function(){return _15d[_15e].apply(_15d,arguments||[]);};}return !_15d?_15e:function(){return _15e.apply(_15d,arguments||[]);};},delegate:(function(){function TMP(){};return function(obj,_15f){TMP.prototype=obj;var tmp=new TMP();TMP.prototype=null;if(_15f){lang._mixin(tmp,_15f);}return tmp;};})(),_toArray:has("ie")?(function(){function slow(obj,_160,_161){var arr=_161||[];for(var x=_160||0;x0){return _16e.lastIndexOf(a,x,from);}var l=a&&a.length||0,end=up?l+_16d:_16c,i;if(from===u){i=up?_16c:l+_16d;}else{if(from<0){i=l+from;if(i<0){i=_16c;}}else{i=from>=l?l+_16d:from;}}if(l&&typeof a=="string"){a=a.split("");}for(;i!=end;i+=_16b){if(a[i]==x){return i;}}return -1;};};var _16e={every:_167(false),some:_167(true),indexOf:_16a(true),lastIndexOf:_16a(false),forEach:function(arr,_16f,_170){var i=0,l=arr&&arr.length||0;if(l&&typeof arr=="string"){arr=arr.split("");}if(typeof _16f=="string"){_16f=_165[_16f]||_166(_16f);}if(_170){for(;i=_17a[i].priority;i++){}_17a.splice(i,0,_181);_179();};1||has.add("dojo-config-addOnLoad",1);if(1){var dca=dojo.config.addOnLoad;if(dca){_17e[(lang.isArray(dca)?"apply":"call")](dojo,dca);}}if(1&&dojo.config.parseOnLoad&&!dojo.isAsync){_17e(99,function(){if(!dojo.parser){dojo.deprecated("Add explicit require(['dojo/parser']);","","2.0");_176(["dojo/parser"]);}});}if(1){_177(_17c);}else{_17c();}return _17e;});},"dojo/domReady":function(){define("dojo/domReady",["./has"],function(has){var _183=this,doc=document,_184={"loaded":1,"complete":1},_185=typeof doc.readyState!="string",_186=!!_184[doc.readyState];if(_185){doc.readyState="loading";}if(!_186){var _187=[],_188=[],_189=function(evt){evt=evt||_183.event;if(_186||(evt.type=="readystatechange"&&!_184[doc.readyState])){return;}_186=1;if(_185){doc.readyState="complete";}while(_187.length){(_187.shift())(doc);}},on=function(node,_18a){node.addEventListener(_18a,_189,false);_187.push(function(){node.removeEventListener(_18a,_189,false);});};if(!has("dom-addeventlistener")){on=function(node,_18b){_18b="on"+_18b;node.attachEvent(_18b,_189);_187.push(function(){node.detachEvent(_18b,_189);});};var div=doc.createElement("div");try{if(div.doScroll&&_183.frameElement===null){_188.push(function(){try{div.doScroll("left");return 1;}catch(e){}});}}catch(e){}}on(doc,"DOMContentLoaded");on(_183,"load");if("onreadystatechange" in doc){on(doc,"readystatechange");}else{if(!_185){_188.push(function(){return _184[doc.readyState];});}}if(_188.length){var _18c=function(){if(_186){return;}var i=_188.length;while(i--){if(_188[i]()){_189("poller");return;}}setTimeout(_18c,30);};_18c();}}function _18d(_18e){if(_186){_18e(doc);}else{_187.push(_18e);}};_18d.load=function(id,req,load){_18d(load);};return _18d;});},"dojo/_base/declare":function(){define(["./kernel","../has","./lang"],function(dojo,has,lang){var mix=lang.mixin,op=Object.prototype,opts=op.toString,xtor=new Function,_18f=0,_190="constructor";function err(msg,cls){throw new Error("declare"+(cls?" "+cls:"")+": "+msg);};function _191(_192,_193){var _194=[],_195=[{cls:0,refs:[]}],_196={},_197=1,l=_192.length,i=0,j,lin,base,top,_198,rec,name,refs;for(;i=0;--j){_198=lin[j].prototype;if(!_198.hasOwnProperty("declaredClass")){_198.declaredClass="uniqName_"+(_18f++);}name=_198.declaredClass;if(!_196.hasOwnProperty(name)){_196[name]={count:0,refs:[],cls:lin[j]};++_197;}rec=_196[name];if(top&&top!==rec){rec.refs.push(top);++top.count;}top=rec;}++top.count;_195[0].refs.push(top);}while(_195.length){top=_195.pop();_194.push(top.cls);--_197;while(refs=top.refs,refs.length==1){top=refs[0];if(!top||--top.count){top=0;break;}_194.push(top.cls);--_197;}if(top){for(i=0,l=refs.length;i=0;--i){f=_1b2[i];m=f._meta;f=m?m.ctor:f;if(f){f.apply(this,_1b4?_1b4[i]:a);}}f=this.postscript;if(f){f.apply(this,args);}};};function _1b6(ctor,_1b7){return function(){var a=arguments,t=a,a0=a[0],f;if(!(this instanceof a.callee)){return _1b5(a);}if(_1b7){if(a0){f=a0.preamble;if(f){t=f.apply(this,t)||t;}}f=this.preamble;if(f){f.apply(this,t);}}if(ctor){ctor.apply(this,a);}f=this.postscript;if(f){f.apply(this,a);}};};function _1b8(_1b9){return function(){var a=arguments,i=0,f,m;if(!(this instanceof a.callee)){return _1b5(a);}for(;f=_1b9[i];++i){m=f._meta;f=m?m.ctor:f;if(f){f.apply(this,a);break;}}f=this.postscript;if(f){f.apply(this,a);}};};function _1ba(name,_1bb,_1bc){return function(){var b,m,f,i=0,step=1;if(_1bc){i=_1bb.length-1;step=-1;}for(;b=_1bb[i];i+=step){m=b._meta;f=(m?m.hidden:b.prototype)[name];if(f){f.apply(this,arguments);}}};};function _1bd(ctor){xtor.prototype=ctor.prototype;var t=new xtor;xtor.prototype=null;return t;};function _1b5(args){var ctor=args.callee,t=_1bd(ctor);ctor.apply(t,args);return t;};function _1ae(_1be,_1bf,_1c0){if(typeof _1be!="string"){_1c0=_1bf;_1bf=_1be;_1be="";}_1c0=_1c0||{};var _1c1,i,t,ctor,name,_1c2,_1c3,_1c4=1,_1c5=_1bf;if(opts.call(_1bf)=="[object Array]"){_1c2=_191(_1bf,_1be);t=_1c2[0];_1c4=_1c2.length-t;_1bf=_1c2[_1c4];}else{_1c2=[0];if(_1bf){if(opts.call(_1bf)=="[object Function]"){t=_1bf._meta;_1c2=_1c2.concat(t?t.bases:_1bf);}else{err("base class is not a callable constructor.",_1be);}}else{if(_1bf!==null){err("unknown base class. Did you use dojo.require to pull it in?",_1be);}}}if(_1bf){for(i=_1c4-1;;--i){_1c1=_1bd(_1bf);if(!i){break;}t=_1c2[i];(t._meta?_1a4:mix)(_1c1,t.prototype);ctor=new Function;ctor.superclass=_1bf;ctor.prototype=_1c1;_1bf=_1c1.constructor=ctor;}}else{_1c1={};}_1ae.safeMixin(_1c1,_1c0);t=_1c0.constructor;if(t!==op.constructor){t.nom=_190;_1c1.constructor=t;}for(i=_1c4-1;i;--i){t=_1c2[i]._meta;if(t&&t.chains){_1c3=mix(_1c3||{},t.chains);}}if(_1c1["-chains-"]){_1c3=mix(_1c3||{},_1c1["-chains-"]);}t=!_1c3||!_1c3.hasOwnProperty(_190);_1c2[0]=ctor=(_1c3&&_1c3.constructor==="manual")?_1b8(_1c2):(_1c2.length==1?_1b6(_1c0.constructor,t):_1b1(_1c2,t));ctor._meta={bases:_1c2,hidden:_1c0,chains:_1c3,parents:_1c5,ctor:_1c0.constructor};ctor.superclass=_1bf&&_1bf.prototype;ctor.extend=_1ac;ctor.createSubclass=_1af;ctor.prototype=_1c1;_1c1.constructor=ctor;_1c1.getInherited=_19f;_1c1.isInstanceOf=_1a2;_1c1.inherited=_1a1;_1c1.__inherited=_199;if(_1be){_1c1.declaredClass=_1be;lang.setObject(_1be,ctor);}if(_1c3){for(name in _1c3){if(_1c1[name]&&typeof _1c3[name]=="string"&&name!=_190){t=_1c1[name]=_1ba(name,_1c2,_1c3[name]==="after");t.nom=name;}}}return ctor;};dojo.safeMixin=_1ae.safeMixin=_1a8;dojo.declare=_1ae;return _1ae;});},"dojo/_base/connect":function(){define(["./kernel","../on","../topic","../aspect","./event","../mouse","./sniff","./lang","../keys"],function(dojo,on,hub,_1c6,_1c7,_1c8,has,lang){has.add("events-keypress-typed",function(){var _1c9={charCode:0};try{_1c9=document.createEvent("KeyboardEvent");(_1c9.initKeyboardEvent||_1c9.initKeyEvent).call(_1c9,"keypress",true,true,null,false,false,false,false,9,3);}catch(e){}return _1c9.charCode==0&&!has("opera");});function _1ca(obj,_1cb,_1cc,_1cd,_1ce){_1cd=lang.hitch(_1cc,_1cd);if(!obj||!(obj.addEventListener||obj.attachEvent)){return _1c6.after(obj||dojo.global,_1cb,_1cd,true);}if(typeof _1cb=="string"&&_1cb.substring(0,2)=="on"){_1cb=_1cb.substring(2);}if(!obj){obj=dojo.global;}if(!_1ce){switch(_1cb){case "keypress":_1cb=_1cf;break;case "mouseenter":_1cb=_1c8.enter;break;case "mouseleave":_1cb=_1c8.leave;break;}}return on(obj,_1cb,_1cd,_1ce);};var _1d0={106:42,111:47,186:59,187:43,188:44,189:45,190:46,191:47,192:96,219:91,220:92,221:93,222:39,229:113};var _1d1=has("mac")?"metaKey":"ctrlKey";var _1d2=function(evt,_1d3){var faux=lang.mixin({},evt,_1d3);_1d4(faux);faux.preventDefault=function(){evt.preventDefault();};faux.stopPropagation=function(){evt.stopPropagation();};return faux;};function _1d4(evt){evt.keyChar=evt.charCode?String.fromCharCode(evt.charCode):"";evt.charOrCode=evt.keyChar||evt.keyCode;};var _1cf;if(has("events-keypress-typed")){var _1d5=function(e,code){try{return (e.keyCode=code);}catch(e){return 0;}};_1cf=function(_1d6,_1d7){var _1d8=on(_1d6,"keydown",function(evt){var k=evt.keyCode;var _1d9=(k!=13)&&k!=32&&(k!=27||!has("ie"))&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222)&&k!=229;if(_1d9||evt.ctrlKey){var c=_1d9?0:k;if(evt.ctrlKey){if(k==3||k==13){return _1d7.call(evt.currentTarget,evt);}else{if(c>95&&c<106){c-=48;}else{if((!evt.shiftKey)&&(c>=65&&c<=90)){c+=32;}else{c=_1d0[c]||c;}}}}var faux=_1d2(evt,{type:"keypress",faux:true,charCode:c});_1d7.call(evt.currentTarget,faux);if(has("ie")){_1d5(evt,faux.keyCode);}}});var _1da=on(_1d6,"keypress",function(evt){var c=evt.charCode;c=c>=32?c:0;evt=_1d2(evt,{charCode:c,faux:true});return _1d7.call(this,evt);});return {remove:function(){_1d8.remove();_1da.remove();}};};}else{if(has("opera")){_1cf=function(_1db,_1dc){return on(_1db,"keypress",function(evt){var c=evt.which;if(c==3){c=99;}c=c<32&&!evt.shiftKey?0:c;if(evt.ctrlKey&&!evt.shiftKey&&c>=65&&c<=90){c+=32;}return _1dc.call(this,_1d2(evt,{charCode:c}));});};}else{_1cf=function(_1dd,_1de){return on(_1dd,"keypress",function(evt){_1d4(evt);return _1de.call(this,evt);});};}}var _1df={_keypress:_1cf,connect:function(obj,_1e0,_1e1,_1e2,_1e3){var a=arguments,args=[],i=0;args.push(typeof a[0]=="string"?null:a[i++],a[i++]);var a1=a[i+1];args.push(typeof a1=="string"||typeof a1=="function"?a[i++]:null,a[i++]);for(var l=a.length;i-1){var _1ff=type.split(/\s*,\s*/);var _200=[];var i=0;var _201;while(_201=_1ff[i++]){_200.push(_1fc(_1fa,_201,_1fb,_1fd,_1fe));}_200.remove=function(){for(var i=0;i<_200.length;i++){_200[i].remove();}};return _200;}return _1fc(_1fa,type,_1fb,_1fd,_1fe);};var _202=/^touch/;function _1f0(_203,type,_204,_205,_206){var _207=type.match(/(.*):(.*)/);if(_207){type=_207[2];_207=_207[1];return on.selector(_207,type).call(_206,_203,_204);}if(has("touch")){if(_202.test(type)){_204=_208(_204);}if(!has("event-orientationchange")&&(type=="orientationchange")){type="resize";_203=window;_204=_208(_204);}}if(_209){_204=_209(_204);}if(_203.addEventListener){var _20a=type in _20b,_20c=_20a?_20b[type]:type;_203.addEventListener(_20c,_204,_20a);return {remove:function(){_203.removeEventListener(_20c,_204,_20a);}};}type="on"+type;if(_20d&&_203.attachEvent){return _20d(_203,type,_204);}throw new Error("Target must be an event emitter");};on.selector=function(_20e,_20f,_210){return function(_211,_212){var _213=typeof _20e=="function"?{matches:_20e}:this,_214=_20f.bubble;function _215(_216){_213=_213&&_213.matches?_213:dojo.query;while(!_213.matches(_216,_20e,_211)){if(_216==_211||_210===false||!(_216=_216.parentNode)||_216.nodeType!=1){return;}}return _216;};if(_214){return on(_211,_214(_215),_212);}return on(_211,_20f,function(_217){var _218=_215(_217.target);return _218&&_212.call(_218,_217);});};};function _219(){this.cancelable=false;};function _21a(){this.bubbles=false;};var _21b=[].slice,_21c=on.emit=function(_21d,type,_21e){var args=_21b.call(arguments,2);var _21f="on"+type;if("parentNode" in _21d){var _220=args[0]={};for(var i in _21e){_220[i]=_21e[i];}_220.preventDefault=_219;_220.stopPropagation=_21a;_220.target=_21d;_220.type=type;_21e=_220;}do{_21d[_21f]&&_21d[_21f].apply(_21d,args);}while(_21e&&_21e.bubbles&&(_21d=_21d.parentNode));return _21e&&_21e.cancelable&&_21e;};var _20b={};if(!has("event-stopimmediatepropagation")){var _221=function(){this.immediatelyStopped=true;this.modified=true;};var _209=function(_222){return function(_223){if(!_223.immediatelyStopped){_223.stopImmediatePropagation=_221;return _222.apply(this,arguments);}};};}if(has("dom-addeventlistener")){_20b={focusin:"focus",focusout:"blur"};on.emit=function(_224,type,_225){if(_224.dispatchEvent&&document.createEvent){var _226=_224.ownerDocument.createEvent("HTMLEvents");_226.initEvent(type,!!_225.bubbles,!!_225.cancelable);for(var i in _225){var _227=_225[i];if(!(i in _226)){_226[i]=_225[i];}}return _224.dispatchEvent(_226)&&_226;}return _21c.apply(on,arguments);};}else{on._fixEvent=function(evt,_228){if(!evt){var w=_228&&(_228.ownerDocument||_228.document||_228).parentWindow||window;evt=w.event;}if(!evt){return evt;}if(_229&&evt.type==_229.type){evt=_229;}if(!evt.target){evt.target=evt.srcElement;evt.currentTarget=(_228||evt.srcElement);if(evt.type=="mouseover"){evt.relatedTarget=evt.fromElement;}if(evt.type=="mouseout"){evt.relatedTarget=evt.toElement;}if(!evt.stopPropagation){evt.stopPropagation=_22a;evt.preventDefault=_22b;}switch(evt.type){case "keypress":var c=("charCode" in evt?evt.charCode:evt.keyCode);if(c==10){c=0;evt.keyCode=13;}else{if(c==13||c==27){c=0;}else{if(c==3){c=99;}}}evt.charCode=c;_22c(evt);break;}}return evt;};var _229,_22d=function(_22e){this.handle=_22e;};_22d.prototype.remove=function(){delete _dojoIEListeners_[this.handle];};var _22f=function(_230){return function(evt){evt=on._fixEvent(evt,this);var _231=_230.call(this,evt);if(evt.modified){if(!_229){setTimeout(function(){_229=null;});}_229=evt;}return _231;};};var _20d=function(_232,type,_233){_233=_22f(_233);if(((_232.ownerDocument?_232.ownerDocument.parentWindow:_232.parentWindow||_232.window||window)!=top||has("jscript")<5.8)&&!has("config-_allow_leaks")){if(typeof _dojoIEListeners_=="undefined"){_dojoIEListeners_=[];}var _234=_232[type];if(!_234||!_234.listeners){var _235=_234;_234=Function("event","var callee = arguments.callee; for(var i = 0; i=0){s.width=w+u;}if(h>=0){s.height=h+u;}};function _26f(node){return node.tagName.toLowerCase()=="button"||node.tagName.toLowerCase()=="input"&&(node.getAttribute("type")||"").toLowerCase()=="button";};function _270(node){return geom.boxModel=="border-box"||node.tagName.toLowerCase()=="table"||_26f(node);};geom.setContentSize=function setContentSize(node,box,_271){node=dom.byId(node);var w=box.w,h=box.h;if(_270(node)){var pb=geom.getPadBorderExtents(node,_271);if(w>=0){w+=pb.w;}if(h>=0){h+=pb.h;}}_26e(node,NaN,NaN,w,h);};var _272={l:0,t:0,w:0,h:0};geom.setMarginBox=function setMarginBox(node,box,_273){node=dom.byId(node);var s=_273||_267.getComputedStyle(node),w=box.w,h=box.h,pb=_270(node)?_272:geom.getPadBorderExtents(node,s),mb=geom.getMarginExtents(node,s);if(has("webkit")){if(_26f(node)){var ns=node.style;if(w>=0&&!ns.width){ns.width="4px";}if(h>=0&&!ns.height){ns.height="4px";}}}if(w>=0){w=Math.max(w-pb.w-mb.w,0);}if(h>=0){h=Math.max(h-pb.h-mb.h,0);}_26e(node,box.l,box.t,w,h);};geom.isBodyLtr=function isBodyLtr(doc){doc=doc||win.doc;return (win.body(doc).dir||doc.documentElement.dir||"ltr").toLowerCase()=="ltr";};geom.docScroll=function docScroll(doc){doc=doc||win.doc;var node=win.doc.parentWindow||win.doc.defaultView;return "pageXOffset" in node?{x:node.pageXOffset,y:node.pageYOffset}:(node=has("quirks")?win.body(doc):doc.documentElement)&&{x:geom.fixIeBiDiScrollLeft(node.scrollLeft||0,doc),y:node.scrollTop||0};};if(has("ie")){geom.getIeDocumentElementOffset=function getIeDocumentElementOffset(doc){doc=doc||win.doc;var de=doc.documentElement;if(has("ie")<8){var r=de.getBoundingClientRect(),l=r.left,t=r.top;if(has("ie")<7){l+=de.clientLeft;t+=de.clientTop;}return {x:l<0?0:l,y:t<0?0:t};}else{return {x:0,y:0};}};}geom.fixIeBiDiScrollLeft=function fixIeBiDiScrollLeft(_274,doc){doc=doc||win.doc;var ie=has("ie");if(ie&&!geom.isBodyLtr(doc)){var qk=has("quirks"),de=qk?win.body(doc):doc.documentElement,pwin=win.global;if(ie==6&&!qk&&pwin.frameElement&&de.scrollHeight>de.clientHeight){_274+=de.clientLeft;}return (ie<8||qk)?(_274+de.clientWidth-de.scrollWidth):-_274;}return _274;};geom.position=function(node,_275){node=dom.byId(node);var db=win.body(node.ownerDocument),ret=node.getBoundingClientRect();ret={x:ret.left,y:ret.top,w:ret.right-ret.left,h:ret.bottom-ret.top};if(has("ie")<9){var _276=geom.getIeDocumentElementOffset(node.ownerDocument);ret.x-=_276.x+(has("quirks")?db.clientLeft+db.offsetLeft:0);ret.y-=_276.y+(has("quirks")?db.clientTop+db.offsetTop:0);}if(_275){var _277=geom.docScroll(node.ownerDocument);ret.x+=_277.x;ret.y+=_277.y;}return ret;};geom.getMarginSize=function getMarginSize(node,_278){node=dom.byId(node);var me=geom.getMarginExtents(node,_278||_267.getComputedStyle(node));var size=node.getBoundingClientRect();return {w:(size.right-size.left)+me.w,h:(size.bottom-size.top)+me.h};};geom.normalizeEvent=function(_279){if(!("layerX" in _279)){_279.layerX=_279.offsetX;_279.layerY=_279.offsetY;}if(!has("dom-addeventlistener")){var se=_279.target;var doc=(se&&se.ownerDocument)||document;var _27a=has("quirks")?doc.body:doc.documentElement;var _27b=geom.getIeDocumentElementOffset(doc);_279.pageX=_279.clientX+geom.fixIeBiDiScrollLeft(_27a.scrollLeft||0,doc)-_27b.x;_279.pageY=_279.clientY+(_27a.scrollTop||0)-_27b.y;}};return geom;});},"dojo/_base/window":function(){define(["./kernel","./lang","../sniff"],function(dojo,lang,has){var ret={global:dojo.global,doc:this["document"]||null,body:function(doc){doc=doc||dojo.doc;return doc.body||doc.getElementsByTagName("body")[0];},setContext:function(_27c,_27d){dojo.global=ret.global=_27c;dojo.doc=ret.doc=_27d;},withGlobal:function(_27e,_27f,_280,_281){var _282=dojo.global;try{dojo.global=ret.global=_27e;return ret.withDoc.call(null,_27e.document,_27f,_280,_281);}finally{dojo.global=ret.global=_282;}},withDoc:function(_283,_284,_285,_286){var _287=ret.doc,oldQ=has("quirks"),_288=has("ie"),isIE,mode,pwin;try{dojo.doc=ret.doc=_283;dojo.isQuirks=has.add("quirks",dojo.doc.compatMode=="BackCompat",true,true);if(has("ie")){if((pwin=_283.parentWindow)&&pwin.navigator){isIE=parseFloat(pwin.navigator.appVersion.split("MSIE ")[1])||undefined;mode=_283.documentMode;if(mode&&mode!=5&&Math.floor(isIE)!=mode){isIE=mode;}dojo.isIE=has.add("ie",isIE,true,true);}}if(_285&&typeof _284=="string"){_284=_285[_284];}return _284.apply(_285,_286||[]);}finally{dojo.doc=ret.doc=_287;dojo.isQuirks=has.add("quirks",oldQ,true,true);dojo.isIE=has.add("ie",_288,true,true);}}};1&&lang.mixin(dojo,ret);return ret;});},"dojo/dom":function(){define("dojo/dom",["./sniff","./_base/window"],function(has,win){if(has("ie")<=7){try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}}var dom={};if(has("ie")){dom.byId=function(id,doc){if(typeof id!="string"){return id;}var _289=doc||win.doc,te=id&&_289.getElementById(id);if(te&&(te.attributes.id.value==id||te.id==id)){return te;}else{var eles=_289.all[id];if(!eles||eles.nodeName){eles=[eles];}var i=0;while((te=eles[i++])){if((te.attributes&&te.attributes.id&&te.attributes.id.value==id)||te.id==id){return te;}}}};}else{dom.byId=function(id,doc){return ((typeof id=="string")?(doc||win.doc).getElementById(id):id)||null;};}dom.isDescendant=function(node,_28a){try{node=dom.byId(node);_28a=dom.byId(_28a);while(node){if(node==_28a){return true;}node=node.parentNode;}}catch(e){}return false;};has.add("css-user-select",function(_28b,doc,_28c){if(!_28c){return false;}var _28d=_28c.style;var _28e=["Khtml","O","ms","Moz","Webkit"],i=_28e.length,name="userSelect",_28f;do{if(typeof _28d[name]!=="undefined"){return name;}}while(i--&&(name=_28e[i]+"UserSelect"));return false;});var _290=has("css-user-select");dom.setSelectable=_290?function(node,_291){dom.byId(node).style[_290]=_291?"":"none";}:function(node,_292){node=dom.byId(node);var _293=node.getElementsByTagName("*"),i=_293.length;if(_292){node.removeAttribute("unselectable");while(i--){_293[i].removeAttribute("unselectable");}}else{node.setAttribute("unselectable","on");while(i--){_293[i].setAttribute("unselectable","on");}}};return dom;});},"dojo/dom-style":function(){define("dojo/dom-style",["./sniff","./dom"],function(has,dom){var _294,_295={};if(has("webkit")){_294=function(node){var s;if(node.nodeType==1){var dv=node.ownerDocument.defaultView;s=dv.getComputedStyle(node,null);if(!s&&node.style){node.style.display="";s=dv.getComputedStyle(node,null);}}return s||{};};}else{if(has("ie")&&(has("ie")<9||has("quirks"))){_294=function(node){return node.nodeType==1&&node.currentStyle?node.currentStyle:{};};}else{_294=function(node){return node.nodeType==1?node.ownerDocument.defaultView.getComputedStyle(node,null):{};};}}_295.getComputedStyle=_294;var _296;if(!has("ie")){_296=function(_297,_298){return parseFloat(_298)||0;};}else{_296=function(_299,_29a){if(!_29a){return 0;}if(_29a=="medium"){return 4;}if(_29a.slice&&_29a.slice(-2)=="px"){return parseFloat(_29a);}var s=_299.style,rs=_299.runtimeStyle,cs=_299.currentStyle,_29b=s.left,_29c=rs.left;rs.left=cs.left;try{s.left=_29a;_29a=s.pixelLeft;}catch(e){_29a=0;}s.left=_29b;rs.left=_29c;return _29a;};}_295.toPixelValue=_296;var astr="DXImageTransform.Microsoft.Alpha";var af=function(n,f){try{return n.filters.item(astr);}catch(e){return f?{}:null;}};var _29d=has("ie")<9||(has("ie")<10&&has("quirks"))?function(node){try{return af(node).Opacity/100;}catch(e){return 1;}}:function(node){return _294(node).opacity;};var _29e=has("ie")<9||(has("ie")<10&&has("quirks"))?function(node,_29f){var ov=_29f*100,_2a0=_29f==1;node.style.zoom=_2a0?"":1;if(!af(node)){if(_2a0){return _29f;}node.style.filter+=" progid:"+astr+"(Opacity="+ov+")";}else{af(node,1).Opacity=ov;}af(node,1).Enabled=!_2a0;if(node.tagName.toLowerCase()=="tr"){for(var td=node.firstChild;td;td=td.nextSibling){if(td.tagName.toLowerCase()=="td"){_29e(td,_29f);}}}return _29f;}:function(node,_2a1){return node.style.opacity=_2a1;};var _2a2={left:true,top:true};var _2a3=/margin|padding|width|height|max|min|offset/;function _2a4(node,type,_2a5){type=type.toLowerCase();if(has("ie")){if(_2a5=="auto"){if(type=="height"){return node.offsetHeight;}if(type=="width"){return node.offsetWidth;}}if(type=="fontweight"){switch(_2a5){case 700:return "bold";case 400:default:return "normal";}}}if(!(type in _2a2)){_2a2[type]=_2a3.test(type);}return _2a2[type]?_296(node,_2a5):_2a5;};var _2a6=has("ie")?"styleFloat":"cssFloat",_2a7={"cssFloat":_2a6,"styleFloat":_2a6,"float":_2a6};_295.get=function getStyle(node,name){var n=dom.byId(node),l=arguments.length,op=(name=="opacity");if(l==2&&op){return _29d(n);}name=_2a7[name]||name;var s=_295.getComputedStyle(n);return (l==1)?s:_2a4(n,name,s[name]||n.style[name]);};_295.set=function setStyle(node,name,_2a8){var n=dom.byId(node),l=arguments.length,op=(name=="opacity");name=_2a7[name]||name;if(l==3){return op?_29e(n,_2a8):n.style[name]=_2a8;}for(var x in name){_295.set(node,x,name[x]);}return _295.getComputedStyle(n);};return _295;});},"dojo/mouse":function(){define("dojo/mouse",["./_base/kernel","./on","./has","./dom","./_base/window"],function(dojo,on,has,dom,win){has.add("dom-quirks",win.doc&&win.doc.compatMode=="BackCompat");has.add("events-mouseenter",win.doc&&"onmouseenter" in win.doc.createElement("div"));has.add("events-mousewheel",win.doc&&"onmousewheel" in win.doc);var _2a9;if((has("dom-quirks")&&has("ie"))||!has("dom-addeventlistener")){_2a9={LEFT:1,MIDDLE:4,RIGHT:2,isButton:function(e,_2aa){return e.button&_2aa;},isLeft:function(e){return e.button&1;},isMiddle:function(e){return e.button&4;},isRight:function(e){return e.button&2;}};}else{_2a9={LEFT:0,MIDDLE:1,RIGHT:2,isButton:function(e,_2ab){return e.button==_2ab;},isLeft:function(e){return e.button==0;},isMiddle:function(e){return e.button==1;},isRight:function(e){return e.button==2;}};}dojo.mouseButtons=_2a9;function _2ac(type,_2ad){var _2ae=function(node,_2af){return on(node,type,function(evt){if(_2ad){return _2ad(evt,_2af);}if(!dom.isDescendant(evt.relatedTarget,node)){return _2af.call(this,evt);}});};_2ae.bubble=function(_2b0){return _2ac(type,function(evt,_2b1){var _2b2=_2b0(evt.target);var _2b3=evt.relatedTarget;if(_2b2&&(_2b2!=(_2b3&&_2b3.nodeType==1&&_2b0(_2b3)))){return _2b1.call(_2b2,evt);}});};return _2ae;};var _2b4;if(has("events-mousewheel")){_2b4="mousewheel";}else{_2b4=function(node,_2b5){return on(node,"DOMMouseScroll",function(evt){evt.wheelDelta=-evt.detail;_2b5.call(this,evt);});};}return {_eventHandler:_2ac,enter:_2ac("mouseover"),leave:_2ac("mouseout"),wheel:_2b4,isLeft:_2a9.isLeft,isMiddle:_2a9.isMiddle,isRight:_2a9.isRight};});},"dojo/_base/sniff":function(){define(["./kernel","./lang","../sniff"],function(dojo,lang,has){if(!1){return has;}dojo._name="browser";lang.mixin(dojo,{isBrowser:true,isFF:has("ff"),isIE:has("ie"),isKhtml:has("khtml"),isWebKit:has("webkit"),isMozilla:has("mozilla"),isMoz:has("mozilla"),isOpera:has("opera"),isSafari:has("safari"),isChrome:has("chrome"),isMac:has("mac"),isIos:has("ios"),isAndroid:has("android"),isWii:has("wii"),isQuirks:has("quirks"),isAir:has("air")});dojo.locale=dojo.locale||(has("ie")?navigator.userLanguage:navigator.language).toLowerCase();return has;});},"dojo/keys":function(){define("dojo/keys",["./_base/kernel","./sniff"],function(dojo,has){return dojo.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,META:has("webkit")?91:224,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,HELP:47,LEFT_WINDOW:91,RIGHT_WINDOW:92,SELECT:93,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_MULTIPLY:106,NUMPAD_PLUS:107,NUMPAD_ENTER:108,NUMPAD_MINUS:109,NUMPAD_PERIOD:110,NUMPAD_DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,NUM_LOCK:144,SCROLL_LOCK:145,UP_DPAD:175,DOWN_DPAD:176,LEFT_DPAD:177,RIGHT_DPAD:178,copyKey:has("mac")&&!has("air")?(has("safari")?91:224):17};});},"dojo/_base/Deferred":function(){define(["./kernel","../Deferred","../promise/Promise","../errors/CancelError","../has","./lang","../when"],function(dojo,_2b6,_2b7,_2b8,has,lang,when){var _2b9=function(){};var _2ba=Object.freeze||function(){};var _2bb=dojo.Deferred=function(_2bc){var _2bd,_2be,_2bf,head,_2c0;var _2c1=(this.promise=new _2b7());function _2c2(_2c3){if(_2be){throw new Error("This deferred has already been resolved");}_2bd=_2c3;_2be=true;_2c4();};function _2c4(){var _2c5;while(!_2c5&&_2c0){var _2c6=_2c0;_2c0=_2c0.next;if((_2c5=(_2c6.progress==_2b9))){_2be=false;}var func=(_2bf?_2c6.error:_2c6.resolved);if(has("config-useDeferredInstrumentation")){if(_2bf&&_2b6.instrumentRejected){_2b6.instrumentRejected(_2bd,!!func);}}if(func){try{var _2c7=func(_2bd);if(_2c7&&typeof _2c7.then==="function"){_2c7.then(lang.hitch(_2c6.deferred,"resolve"),lang.hitch(_2c6.deferred,"reject"),lang.hitch(_2c6.deferred,"progress"));continue;}var _2c8=_2c5&&_2c7===undefined;if(_2c5&&!_2c8){_2bf=_2c7 instanceof Error;}_2c6.deferred[_2c8&&_2bf?"reject":"resolve"](_2c8?_2bd:_2c7);}catch(e){_2c6.deferred.reject(e);}}else{if(_2bf){_2c6.deferred.reject(_2bd);}else{_2c6.deferred.resolve(_2bd);}}}};this.resolve=this.callback=function(_2c9){this.fired=0;this.results=[_2c9,null];_2c2(_2c9);};this.reject=this.errback=function(_2ca){_2bf=true;this.fired=1;if(has("config-useDeferredInstrumentation")){if(_2b6.instrumentRejected){_2b6.instrumentRejected(_2ca,!!_2c0);}}_2c2(_2ca);this.results=[null,_2ca];};this.progress=function(_2cb){var _2cc=_2c0;while(_2cc){var _2cd=_2cc.progress;_2cd&&_2cd(_2cb);_2cc=_2cc.next;}};this.addCallbacks=function(_2ce,_2cf){this.then(_2ce,_2cf,_2b9);return this;};_2c1.then=this.then=function(_2d0,_2d1,_2d2){var _2d3=_2d2==_2b9?this:new _2bb(_2c1.cancel);var _2d4={resolved:_2d0,error:_2d1,progress:_2d2,deferred:_2d3};if(_2c0){head=head.next=_2d4;}else{_2c0=head=_2d4;}if(_2be){_2c4();}return _2d3.promise;};var _2d5=this;_2c1.cancel=this.cancel=function(){if(!_2be){var _2d6=_2bc&&_2bc(_2d5);if(!_2be){if(!(_2d6 instanceof Error)){_2d6=new _2b8(_2d6);}_2d6.log=false;_2d5.reject(_2d6);}}};_2ba(_2c1);};lang.extend(_2bb,{addCallback:function(_2d7){return this.addCallbacks(lang.hitch.apply(dojo,arguments));},addErrback:function(_2d8){return this.addCallbacks(null,lang.hitch.apply(dojo,arguments));},addBoth:function(_2d9){var _2da=lang.hitch.apply(dojo,arguments);return this.addCallbacks(_2da,_2da);},fired:-1});_2bb.when=dojo.when=when;return _2bb;});},"dojo/Deferred":function(){define("dojo/Deferred",["./has","./_base/lang","./errors/CancelError","./promise/Promise","./promise/instrumentation"],function(has,lang,_2db,_2dc,_2dd){"use strict";var _2de=0,_2df=1,_2e0=2;var _2e1="This deferred has already been fulfilled.";var _2e2=Object.freeze||function(){};var _2e3=function(_2e4,type,_2e5,_2e6,_2e7){if(1){if(type===_2e0&&_2e8.instrumentRejected&&_2e4.length===0){_2e8.instrumentRejected(_2e5,false,_2e6,_2e7);}}for(var i=0;i<_2e4.length;i++){_2e9(_2e4[i],type,_2e5,_2e6);}};var _2e9=function(_2ea,type,_2eb,_2ec){var func=_2ea[type];var _2ed=_2ea.deferred;if(func){try{var _2ee=func(_2eb);if(type===_2de){if(typeof _2ee!=="undefined"){_2ef(_2ed,type,_2ee);}}else{if(_2ee&&typeof _2ee.then==="function"){_2ea.cancel=_2ee.cancel;_2ee.then(_2f0(_2ed,_2df),_2f0(_2ed,_2e0),_2f0(_2ed,_2de));return;}_2ef(_2ed,_2df,_2ee);}}catch(error){_2ef(_2ed,_2e0,error);}}else{_2ef(_2ed,type,_2eb);}if(1){if(type===_2e0&&_2e8.instrumentRejected){_2e8.instrumentRejected(_2eb,!!func,_2ec,_2ed.promise);}}};var _2f0=function(_2f1,type){return function(_2f2){_2ef(_2f1,type,_2f2);};};var _2ef=function(_2f3,type,_2f4){if(!_2f3.isCanceled()){switch(type){case _2de:_2f3.progress(_2f4);break;case _2df:_2f3.resolve(_2f4);break;case _2e0:_2f3.reject(_2f4);break;}}};var _2e8=function(_2f5){var _2f6=this.promise=new _2dc();var _2f7=this;var _2f8,_2f9,_2fa;var _2fb=false;var _2fc=[];if(1&&Error.captureStackTrace){Error.captureStackTrace(_2f7,_2e8);Error.captureStackTrace(_2f6,_2e8);}this.isResolved=_2f6.isResolved=function(){return _2f8===_2df;};this.isRejected=_2f6.isRejected=function(){return _2f8===_2e0;};this.isFulfilled=_2f6.isFulfilled=function(){return !!_2f8;};this.isCanceled=_2f6.isCanceled=function(){return _2fb;};this.progress=function(_2fd,_2fe){if(!_2f8){_2e3(_2fc,_2de,_2fd,null,_2f7);return _2f6;}else{if(_2fe===true){throw new Error(_2e1);}else{return _2f6;}}};this.resolve=function(_2ff,_300){if(!_2f8){_2e3(_2fc,_2f8=_2df,_2f9=_2ff,null,_2f7);_2fc=null;return _2f6;}else{if(_300===true){throw new Error(_2e1);}else{return _2f6;}}};var _301=this.reject=function(_302,_303){if(!_2f8){if(1&&Error.captureStackTrace){Error.captureStackTrace(_2fa={},_301);}_2e3(_2fc,_2f8=_2e0,_2f9=_302,_2fa,_2f7);_2fc=null;return _2f6;}else{if(_303===true){throw new Error(_2e1);}else{return _2f6;}}};this.then=_2f6.then=function(_304,_305,_306){var _307=[_306,_304,_305];_307.cancel=_2f6.cancel;_307.deferred=new _2e8(function(_308){return _307.cancel&&_307.cancel(_308);});if(_2f8&&!_2fc){_2e9(_307,_2f8,_2f9,_2fa);}else{_2fc.push(_307);}return _307.deferred.promise;};this.cancel=_2f6.cancel=function(_309,_30a){if(!_2f8){if(_2f5){var _30b=_2f5(_309);_309=typeof _30b==="undefined"?_309:_30b;}_2fb=true;if(!_2f8){if(typeof _309==="undefined"){_309=new _2db();}_301(_309);return _309;}else{if(_2f8===_2e0&&_2f9===_309){return _309;}}}else{if(_30a===true){throw new Error(_2e1);}}};_2e2(_2f6);};_2e8.prototype.toString=function(){return "[object Deferred]";};if(_2dd){_2dd(_2e8);}return _2e8;});},"dojo/errors/CancelError":function(){define(["./create"],function(_30c){return _30c("CancelError",null,null,{dojoType:"cancel"});});},"dojo/errors/create":function(){define(["../_base/lang"],function(lang){return function(name,ctor,base,_30d){base=base||Error;var _30e=function(_30f){if(base===Error){if(Error.captureStackTrace){Error.captureStackTrace(this,_30e);}var err=Error.call(this,_30f),prop;for(prop in err){if(err.hasOwnProperty(prop)){this[prop]=err[prop];}}this.message=_30f;this.stack=err.stack;}else{base.apply(this,arguments);}if(ctor){ctor.apply(this,arguments);}};_30e.prototype=lang.delegate(base.prototype,_30d);_30e.prototype.name=name;_30e.prototype.constructor=_30e;return _30e;};});},"dojo/promise/Promise":function(){define(["../_base/lang"],function(lang){"use strict";function _310(){throw new TypeError("abstract");};return lang.extend(function Promise(){},{then:function(_311,_312,_313){_310();},cancel:function(_314,_315){_310();},isResolved:function(){_310();},isRejected:function(){_310();},isFulfilled:function(){_310();},isCanceled:function(){_310();},always:function(_316){return this.then(_316,_316);},otherwise:function(_317){return this.then(null,_317);},trace:function(){return this;},traceRejected:function(){return this;},toString:function(){return "[object Promise]";}});});},"dojo/promise/instrumentation":function(){define(["./tracer","../has","../_base/lang","../_base/array"],function(_318,has,lang,_319){function _31a(_31b,_31c,_31d){var _31e="";if(_31b&&_31b.stack){_31e+=_31b.stack;}if(_31c&&_31c.stack){_31e+="\n ----------------------------------------\n rejected"+_31c.stack.split("\n").slice(1).join("\n").replace(/^\s+/," ");}if(_31d&&_31d.stack){_31e+="\n ----------------------------------------\n"+_31d.stack;}console.error(_31b,_31e);};function _31f(_320,_321,_322,_323){if(!_321){_31a(_320,_322,_323);}};var _324=[];var _325=false;var _326=1000;function _327(_328,_329,_32a,_32b){if(_329){_319.some(_324,function(obj,ix){if(obj.error===_328){_324.splice(ix,1);return true;}});}else{if(!_319.some(_324,function(obj){return obj.error===_328;})){_324.push({error:_328,rejection:_32a,deferred:_32b,timestamp:new Date().getTime()});}}if(!_325){_325=setTimeout(_32c,_326);}};function _32c(){var now=new Date().getTime();var _32d=now-_326;_324=_319.filter(_324,function(obj){if(obj.timestamp<_32d){_31a(obj.error,obj.rejection,obj.deferred);return false;}return true;});if(_324.length){_325=setTimeout(_32c,_324[0].timestamp+_326-now);}else{_325=false;}};return function(_32e){var _32f=has("config-useDeferredInstrumentation");if(_32f){_318.on("resolved",lang.hitch(console,"log","resolved"));_318.on("rejected",lang.hitch(console,"log","rejected"));_318.on("progress",lang.hitch(console,"log","progress"));var args=[];if(typeof _32f==="string"){args=_32f.split(",");_32f=args.shift();}if(_32f==="report-rejections"){_32e.instrumentRejected=_31f;}else{if(_32f==="report-unhandled-rejections"||_32f===true||_32f===1){_32e.instrumentRejected=_327;_326=parseInt(args[0],10)||_326;}else{throw new Error("Unsupported instrumentation usage <"+_32f+">");}}}};});},"dojo/promise/tracer":function(){define(["../_base/lang","./Promise","../Evented"],function(lang,_330,_331){"use strict";var _332=new _331;var emit=_332.emit;_332.emit=null;function _333(args){setTimeout(function(){emit.apply(_332,args);},0);};_330.prototype.trace=function(){var args=lang._toArray(arguments);this.then(function(_334){_333(["resolved",_334].concat(args));},function(_335){_333(["rejected",_335].concat(args));},function(_336){_333(["progress",_336].concat(args));});return this;};_330.prototype.traceRejected=function(){var args=lang._toArray(arguments);this.otherwise(function(_337){_333(["rejected",_337].concat(args));});return this;};return _332;});},"dojo/when":function(){define("dojo/when",["./Deferred","./promise/Promise"],function(_338,_339){"use strict";return function when(_33a,_33b,_33c,_33d){var _33e=_33a&&typeof _33a.then==="function";var _33f=_33e&&_33a instanceof _339;if(!_33e){if(_33b){return _33b(_33a);}else{return new _338().resolve(_33a);}}else{if(!_33f){var _340=new _338(_33a.cancel);_33a.then(_340.resolve,_340.reject,_340.progress);_33a=_340.promise;}}if(_33b||_33c||_33d){return _33a.then(_33b,_33c,_33d);}return _33a;};});},"dojo/_base/json":function(){define(["./kernel","../json"],function(dojo,json){dojo.fromJson=function(js){return eval("("+js+")");};dojo._escapeString=json.stringify;dojo.toJsonIndentStr="\t";dojo.toJson=function(it,_341){return json.stringify(it,function(key,_342){if(_342){var tf=_342.__json__||_342.json;if(typeof tf=="function"){return tf.call(_342);}}return _342;},_341&&dojo.toJsonIndentStr);};return dojo;});},"dojo/json":function(){define("dojo/json",["./has"],function(has){"use strict";var _343=typeof JSON!="undefined";has.add("json-parse",_343);has.add("json-stringify",_343&&JSON.stringify({a:0},function(k,v){return v||1;})=="{\"a\":1}");if(has("json-stringify")){return JSON;}else{var _344=function(str){return ("\""+str.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");};return {parse:has("json-parse")?JSON.parse:function(str,_345){if(_345&&!/^([\s\[\{]*(?:"(?:\\.|[^"])+"|-?\d[\d\.]*(?:[Ee][+-]?\d+)?|null|true|false|)[\s\]\}]*(?:,|:|$))+$/.test(str)){throw new SyntaxError("Invalid characters in JSON");}return eval("("+str+")");},stringify:function(_346,_347,_348){var _349;if(typeof _347=="string"){_348=_347;_347=null;}function _34a(it,_34b,key){if(_347){it=_347(key,it);}var val,_34c=typeof it;if(_34c=="number"){return isFinite(it)?it+"":"null";}if(_34c=="boolean"){return it+"";}if(it===null){return "null";}if(typeof it=="string"){return _344(it);}if(_34c=="function"||_34c=="undefined"){return _349;}if(typeof it.toJSON=="function"){return _34a(it.toJSON(key),_34b,key);}if(it instanceof Date){return "\"{FullYear}-{Month+}-{Date}T{Hours}:{Minutes}:{Seconds}Z\"".replace(/\{(\w+)(\+)?\}/g,function(t,prop,plus){var num=it["getUTC"+prop]()+(plus?1:0);return num<10?"0"+num:num;});}if(it.valueOf()!==it){return _34a(it.valueOf(),_34b,key);}var _34d=_348?(_34b+_348):"";var sep=_348?" ":"";var _34e=_348?"\n":"";if(it instanceof Array){var itl=it.length,res=[];for(key=0;key>=bits;t[x]=bits==4?17*c:c;});t.a=1;return t;};_353.fromArray=dojo.colorFromArray=function(a,obj){var t=obj||new _353();t._set(Number(a[0]),Number(a[1]),Number(a[2]),Number(a[3]));if(isNaN(t.a)){t.a=1;}return t.sanitize();};_353.fromString=dojo.colorFromString=function(str,obj){var a=_353.named[str];return a&&_353.fromArray(a,obj)||_353.fromRgb(str,obj)||_353.fromHex(str,obj);};return _353;});},"dojo/_base/browser":function(){if(require.has){require.has.add("config-selectorEngine","acme");}define(["../ready","./kernel","./connect","./unload","./window","./event","./html","./NodeList","../query","./xhr","./fx"],function(dojo){return dojo;});},"dojo/_base/unload":function(){define(["./kernel","./lang","../on"],function(dojo,lang,on){var win=window;var _35b={addOnWindowUnload:function(obj,_35c){if(!dojo.windowUnloaded){on(win,"unload",(dojo.windowUnloaded=function(){}));}on(win,"unload",lang.hitch(obj,_35c));},addOnUnload:function(obj,_35d){on(win,"beforeunload",lang.hitch(obj,_35d));}};dojo.addOnWindowUnload=_35b.addOnWindowUnload;dojo.addOnUnload=_35b.addOnUnload;return _35b;});},"dojo/_base/html":function(){define(["./kernel","../dom","../dom-style","../dom-attr","../dom-prop","../dom-class","../dom-construct","../dom-geometry"],function(dojo,dom,_35e,attr,prop,cls,ctr,geom){dojo.byId=dom.byId;dojo.isDescendant=dom.isDescendant;dojo.setSelectable=dom.setSelectable;dojo.getAttr=attr.get;dojo.setAttr=attr.set;dojo.hasAttr=attr.has;dojo.removeAttr=attr.remove;dojo.getNodeProp=attr.getNodeProp;dojo.attr=function(node,name,_35f){if(arguments.length==2){return attr[typeof name=="string"?"get":"set"](node,name);}return attr.set(node,name,_35f);};dojo.hasClass=cls.contains;dojo.addClass=cls.add;dojo.removeClass=cls.remove;dojo.toggleClass=cls.toggle;dojo.replaceClass=cls.replace;dojo._toDom=dojo.toDom=ctr.toDom;dojo.place=ctr.place;dojo.create=ctr.create;dojo.empty=function(node){ctr.empty(node);};dojo._destroyElement=dojo.destroy=function(node){ctr.destroy(node);};dojo._getPadExtents=dojo.getPadExtents=geom.getPadExtents;dojo._getBorderExtents=dojo.getBorderExtents=geom.getBorderExtents;dojo._getPadBorderExtents=dojo.getPadBorderExtents=geom.getPadBorderExtents;dojo._getMarginExtents=dojo.getMarginExtents=geom.getMarginExtents;dojo._getMarginSize=dojo.getMarginSize=geom.getMarginSize;dojo._getMarginBox=dojo.getMarginBox=geom.getMarginBox;dojo.setMarginBox=geom.setMarginBox;dojo._getContentBox=dojo.getContentBox=geom.getContentBox;dojo.setContentSize=geom.setContentSize;dojo._isBodyLtr=dojo.isBodyLtr=geom.isBodyLtr;dojo._docScroll=dojo.docScroll=geom.docScroll;dojo._getIeDocumentElementOffset=dojo.getIeDocumentElementOffset=geom.getIeDocumentElementOffset;dojo._fixIeBiDiScrollLeft=dojo.fixIeBiDiScrollLeft=geom.fixIeBiDiScrollLeft;dojo.position=geom.position;dojo.marginBox=function marginBox(node,box){return box?geom.setMarginBox(node,box):geom.getMarginBox(node);};dojo.contentBox=function contentBox(node,box){return box?geom.setContentSize(node,box):geom.getContentBox(node);};dojo.coords=function(node,_360){dojo.deprecated("dojo.coords()","Use dojo.position() or dojo.marginBox().");node=dom.byId(node);var s=_35e.getComputedStyle(node),mb=geom.getMarginBox(node,s);var abs=geom.position(node,_360);mb.x=abs.x;mb.y=abs.y;return mb;};dojo.getProp=prop.get;dojo.setProp=prop.set;dojo.prop=function(node,name,_361){if(arguments.length==2){return prop[typeof name=="string"?"get":"set"](node,name);}return prop.set(node,name,_361);};dojo.getStyle=_35e.get;dojo.setStyle=_35e.set;dojo.getComputedStyle=_35e.getComputedStyle;dojo.__toPixelValue=dojo.toPixelValue=_35e.toPixelValue;dojo.style=function(node,name,_362){switch(arguments.length){case 1:return _35e.get(node);case 2:return _35e[typeof name=="string"?"get":"set"](node,name);}return _35e.set(node,name,_362);};return dojo;});},"dojo/dom-attr":function(){define("dojo/dom-attr",["exports","./sniff","./_base/lang","./dom","./dom-style","./dom-prop"],function(_363,has,lang,dom,_364,prop){var _365={innerHTML:1,className:1,htmlFor:has("ie"),value:1},_366={classname:"class",htmlfor:"for",tabindex:"tabIndex",readonly:"readOnly"};function _367(node,name){var attr=node.getAttributeNode&&node.getAttributeNode(name);return attr&&attr.specified;};_363.has=function hasAttr(node,name){var lc=name.toLowerCase();return _365[prop.names[lc]||name]||_367(dom.byId(node),_366[lc]||name);};_363.get=function getAttr(node,name){node=dom.byId(node);var lc=name.toLowerCase(),_368=prop.names[lc]||name,_369=_365[_368],_36a=node[_368];if(_369&&typeof _36a!="undefined"){return _36a;}if(_368!="href"&&(typeof _36a=="boolean"||lang.isFunction(_36a))){return _36a;}var _36b=_366[lc]||name;return _367(node,_36b)?node.getAttribute(_36b):null;};_363.set=function setAttr(node,name,_36c){node=dom.byId(node);if(arguments.length==2){for(var x in name){_363.set(node,x,name[x]);}return node;}var lc=name.toLowerCase(),_36d=prop.names[lc]||name,_36e=_365[_36d];if(_36d=="style"&&typeof _36c!="string"){_364.set(node,_36c);return node;}if(_36e||typeof _36c=="boolean"||lang.isFunction(_36c)){return prop.set(node,name,_36c);}node.setAttribute(_366[lc]||name,_36c);return node;};_363.remove=function removeAttr(node,name){dom.byId(node).removeAttribute(_366[name.toLowerCase()]||name);};_363.getNodeProp=function getNodeProp(node,name){node=dom.byId(node);var lc=name.toLowerCase(),_36f=prop.names[lc]||name;if((_36f in node)&&_36f!="href"){return node[_36f];}var _370=_366[lc]||name;return _367(node,_370)?node.getAttribute(_370):null;};});},"dojo/dom-prop":function(){define("dojo/dom-prop",["exports","./_base/kernel","./sniff","./_base/lang","./dom","./dom-style","./dom-construct","./_base/connect"],function(_371,dojo,has,lang,dom,_372,ctr,conn){var _373={},_374=0,_375=dojo._scopeName+"attrid";_371.names={"class":"className","for":"htmlFor",tabindex:"tabIndex",readonly:"readOnly",colspan:"colSpan",frameborder:"frameBorder",rowspan:"rowSpan",valuetype:"valueType"};_371.get=function getProp(node,name){node=dom.byId(node);var lc=name.toLowerCase(),_376=_371.names[lc]||name;return node[_376];};_371.set=function setProp(node,name,_377){node=dom.byId(node);var l=arguments.length;if(l==2&&typeof name!="string"){for(var x in name){_371.set(node,x,name[x]);}return node;}var lc=name.toLowerCase(),_378=_371.names[lc]||name;if(_378=="style"&&typeof _377!="string"){_372.set(node,_377);return node;}if(_378=="innerHTML"){if(has("ie")&&node.tagName.toLowerCase() in {col:1,colgroup:1,table:1,tbody:1,tfoot:1,thead:1,tr:1,title:1}){ctr.empty(node);node.appendChild(ctr.toDom(_377,node.ownerDocument));}else{node[_378]=_377;}return node;}if(lang.isFunction(_377)){var _379=node[_375];if(!_379){_379=_374++;node[_375]=_379;}if(!_373[_379]){_373[_379]={};}var h=_373[_379][_378];if(h){conn.disconnect(h);}else{try{delete node[_378];}catch(e){}}if(_377){_373[_379][_378]=conn.connect(node,_378,_377);}else{node[_378]=null;}return node;}node[_378]=_377;return node;};});},"dojo/dom-construct":function(){define("dojo/dom-construct",["exports","./_base/kernel","./sniff","./_base/window","./dom","./dom-attr","./on"],function(_37a,dojo,has,win,dom,attr,on){var _37b={option:["select"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table","tbody"],td:["table","tbody","tr"],th:["table","thead","tr"],legend:["fieldset"],caption:["table"],colgroup:["table"],col:["table","colgroup"],li:["ul"]},_37c=/<\s*([\w\:]+)/,_37d={},_37e=0,_37f="__"+dojo._scopeName+"ToDomId";for(var _380 in _37b){if(_37b.hasOwnProperty(_380)){var tw=_37b[_380];tw.pre=_380=="option"?"":"<"+tw.join("><")+">";tw.post="";}}function _d(_e,_f){var _10=_f.parentNode;if(_10){_10.insertBefore(_e,_f);}};function _11(_12,ref){var _13=ref.parentNode;if(_13){if(_13.lastChild==ref){_13.appendChild(_12);}else{_13.insertBefore(_12,ref.nextSibling);}}};_1.toDom=function toDom(_14,doc){doc=doc||_4.doc;var _15=doc[_b];if(!_15){doc[_b]=_15=++_a+"";_9[_15]=doc.createElement("div");}_14+="";var _16=_14.match(_8),tag=_16?_16[1].toLowerCase():"",_17=_9[_15],_18,i,fc,df;if(_16&&_7[tag]){_18=_7[tag];_17.innerHTML=_18.pre+_14+_18.post;for(i=_18.length;i;--i){_17=_17.firstChild;}}else{_17.innerHTML=_14;}if(_17.childNodes.length==1){return _17.removeChild(_17.firstChild);}df=doc.createDocumentFragment();while((fc=_17.firstChild)){df.appendChild(fc);}return df;};_1.place=function place(_19,_1a,_1b){_1a=_5.byId(_1a);if(typeof _19=="string"){_19=/^\s*= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/dom-form",["./_base/lang","./dom","./io-query","./json"],function(_1,_2,_3,_4){function _5(_6,_7,_8){if(_8===null){return;}var _9=_6[_7];if(typeof _9=="string"){_6[_7]=[_9,_8];}else{if(_1.isArray(_9)){_9.push(_8);}else{_6[_7]=_8;}}};var _a="file|submit|image|reset|button";var _b={fieldToObject:function fieldToObject(_c){var _d=null;_c=_2.byId(_c);if(_c){var _e=_c.name,_f=(_c.type||"").toLowerCase();if(_e&&_f&&!_c.disabled){if(_f=="radio"||_f=="checkbox"){if(_c.checked){_d=_c.value;}}else{if(_c.multiple){_d=[];var _10=[_c.firstChild];while(_10.length){for(var _11=_10.pop();_11;_11=_11.nextSibling){if(_11.nodeType==1&&_11.tagName.toLowerCase()=="option"){if(_11.selected){_d.push(_11.value);}}else{if(_11.nextSibling){_10.push(_11.nextSibling);}if(_11.firstChild){_10.push(_11.firstChild);}break;}}}}else{_d=_c.value;}}}}return _d;},toObject:function formToObject(_12){var ret={},_13=_2.byId(_12).elements;for(var i=0,l=_13.length;i= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/dom-geometry",["./sniff","./_base/window","./dom","./dom-style"],function(_1,_2,_3,_4){var _5={};_5.boxModel="content-box";if(_1("ie")){_5.boxModel=document.compatMode=="BackCompat"?"border-box":"content-box";}_5.getPadExtents=function getPadExtents(_6,_7){_6=_3.byId(_6);var s=_7||_4.getComputedStyle(_6),px=_4.toPixelValue,l=px(_6,s.paddingLeft),t=px(_6,s.paddingTop),r=px(_6,s.paddingRight),b=px(_6,s.paddingBottom);return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};var _8="none";_5.getBorderExtents=function getBorderExtents(_9,_a){_9=_3.byId(_9);var px=_4.toPixelValue,s=_a||_4.getComputedStyle(_9),l=s.borderLeftStyle!=_8?px(_9,s.borderLeftWidth):0,t=s.borderTopStyle!=_8?px(_9,s.borderTopWidth):0,r=s.borderRightStyle!=_8?px(_9,s.borderRightWidth):0,b=s.borderBottomStyle!=_8?px(_9,s.borderBottomWidth):0;return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};_5.getPadBorderExtents=function getPadBorderExtents(_b,_c){_b=_3.byId(_b);var s=_c||_4.getComputedStyle(_b),p=_5.getPadExtents(_b,s),b=_5.getBorderExtents(_b,s);return {l:p.l+b.l,t:p.t+b.t,r:p.r+b.r,b:p.b+b.b,w:p.w+b.w,h:p.h+b.h};};_5.getMarginExtents=function getMarginExtents(_d,_e){_d=_3.byId(_d);var s=_e||_4.getComputedStyle(_d),px=_4.toPixelValue,l=px(_d,s.marginLeft),t=px(_d,s.marginTop),r=px(_d,s.marginRight),b=px(_d,s.marginBottom);return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};_5.getMarginBox=function getMarginBox(_f,_10){_f=_3.byId(_f);var s=_10||_4.getComputedStyle(_f),me=_5.getMarginExtents(_f,s),l=_f.offsetLeft-me.l,t=_f.offsetTop-me.t,p=_f.parentNode,px=_4.toPixelValue,pcs;if(_1("mozilla")){var sl=parseFloat(s.left),st=parseFloat(s.top);if(!isNaN(sl)&&!isNaN(st)){l=sl;t=st;}else{if(p&&p.style){pcs=_4.getComputedStyle(p);if(pcs.overflow!="visible"){l+=pcs.borderLeftStyle!=_8?px(_f,pcs.borderLeftWidth):0;t+=pcs.borderTopStyle!=_8?px(_f,pcs.borderTopWidth):0;}}}}else{if(_1("opera")||(_1("ie")==8&&!_1("quirks"))){if(p){pcs=_4.getComputedStyle(p);l-=pcs.borderLeftStyle!=_8?px(_f,pcs.borderLeftWidth):0;t-=pcs.borderTopStyle!=_8?px(_f,pcs.borderTopWidth):0;}}}return {l:l,t:t,w:_f.offsetWidth+me.w,h:_f.offsetHeight+me.h};};_5.getContentBox=function getContentBox(_11,_12){_11=_3.byId(_11);var s=_12||_4.getComputedStyle(_11),w=_11.clientWidth,h,pe=_5.getPadExtents(_11,s),be=_5.getBorderExtents(_11,s);if(!w){w=_11.offsetWidth;h=_11.offsetHeight;}else{h=_11.clientHeight;be.w=be.h=0;}if(_1("opera")){pe.l+=be.l;pe.t+=be.t;}return {l:pe.l,t:pe.t,w:w-pe.w-be.w,h:h-pe.h-be.h};};function _13(_14,l,t,w,h,u){u=u||"px";var s=_14.style;if(!isNaN(l)){s.left=l+u;}if(!isNaN(t)){s.top=t+u;}if(w>=0){s.width=w+u;}if(h>=0){s.height=h+u;}};function _15(_16){return _16.tagName.toLowerCase()=="button"||_16.tagName.toLowerCase()=="input"&&(_16.getAttribute("type")||"").toLowerCase()=="button";};function _17(_18){return _5.boxModel=="border-box"||_18.tagName.toLowerCase()=="table"||_15(_18);};_5.setContentSize=function setContentSize(_19,box,_1a){_19=_3.byId(_19);var w=box.w,h=box.h;if(_17(_19)){var pb=_5.getPadBorderExtents(_19,_1a);if(w>=0){w+=pb.w;}if(h>=0){h+=pb.h;}}_13(_19,NaN,NaN,w,h);};var _1b={l:0,t:0,w:0,h:0};_5.setMarginBox=function setMarginBox(_1c,box,_1d){_1c=_3.byId(_1c);var s=_1d||_4.getComputedStyle(_1c),w=box.w,h=box.h,pb=_17(_1c)?_1b:_5.getPadBorderExtents(_1c,s),mb=_5.getMarginExtents(_1c,s);if(_1("webkit")){if(_15(_1c)){var ns=_1c.style;if(w>=0&&!ns.width){ns.width="4px";}if(h>=0&&!ns.height){ns.height="4px";}}}if(w>=0){w=Math.max(w-pb.w-mb.w,0);}if(h>=0){h=Math.max(h-pb.h-mb.h,0);}_13(_1c,box.l,box.t,w,h);};_5.isBodyLtr=function isBodyLtr(doc){doc=doc||_2.doc;return (_2.body(doc).dir||doc.documentElement.dir||"ltr").toLowerCase()=="ltr";};_5.docScroll=function docScroll(doc){doc=doc||_2.doc;var _1e=_2.doc.parentWindow||_2.doc.defaultView;return "pageXOffset" in _1e?{x:_1e.pageXOffset,y:_1e.pageYOffset}:(_1e=_1("quirks")?_2.body(doc):doc.documentElement)&&{x:_5.fixIeBiDiScrollLeft(_1e.scrollLeft||0,doc),y:_1e.scrollTop||0};};if(_1("ie")){_5.getIeDocumentElementOffset=function getIeDocumentElementOffset(doc){doc=doc||_2.doc;var de=doc.documentElement;if(_1("ie")<8){var r=de.getBoundingClientRect(),l=r.left,t=r.top;if(_1("ie")<7){l+=de.clientLeft;t+=de.clientTop;}return {x:l<0?0:l,y:t<0?0:t};}else{return {x:0,y:0};}};}_5.fixIeBiDiScrollLeft=function fixIeBiDiScrollLeft(_1f,doc){doc=doc||_2.doc;var ie=_1("ie");if(ie&&!_5.isBodyLtr(doc)){var qk=_1("quirks"),de=qk?_2.body(doc):doc.documentElement,_20=_2.global;if(ie==6&&!qk&&_20.frameElement&&de.scrollHeight>de.clientHeight){_1f+=de.clientLeft;}return (ie<8||qk)?(_1f+de.clientWidth-de.scrollWidth):-_1f;}return _1f;};_5.position=function(_21,_22){_21=_3.byId(_21);var db=_2.body(_21.ownerDocument),ret=_21.getBoundingClientRect();ret={x:ret.left,y:ret.top,w:ret.right-ret.left,h:ret.bottom-ret.top};if(_1("ie")<9){var _23=_5.getIeDocumentElementOffset(_21.ownerDocument);ret.x-=_23.x+(_1("quirks")?db.clientLeft+db.offsetLeft:0);ret.y-=_23.y+(_1("quirks")?db.clientTop+db.offsetTop:0);}if(_22){var _24=_5.docScroll(_21.ownerDocument);ret.x+=_24.x;ret.y+=_24.y;}return ret;};_5.getMarginSize=function getMarginSize(_25,_26){_25=_3.byId(_25);var me=_5.getMarginExtents(_25,_26||_4.getComputedStyle(_25));var _27=_25.getBoundingClientRect();return {w:(_27.right-_27.left)+me.w,h:(_27.bottom-_27.top)+me.h};};_5.normalizeEvent=function(_28){if(!("layerX" in _28)){_28.layerX=_28.offsetX;_28.layerY=_28.offsetY;}if(!_1("dom-addeventlistener")){var se=_28.target;var doc=(se&&se.ownerDocument)||document;var _29=_1("quirks")?doc.body:doc.documentElement;var _2a=_5.getIeDocumentElementOffset(doc);_28.pageX=_28.clientX+_5.fixIeBiDiScrollLeft(_29.scrollLeft||0,doc)-_2a.x;_28.pageY=_28.clientY+(_29.scrollTop||0)-_2a.y;}};return _5;}); \ No newline at end of file diff --git a/lib/dojo/dom-prop.js b/lib/dojo/dom-prop.js new file mode 100644 index 0000000000..8dcccc8194 --- /dev/null +++ b/lib/dojo/dom-prop.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/dom-prop",["exports","./_base/kernel","./sniff","./_base/lang","./dom","./dom-style","./dom-construct","./_base/connect"],function(_1,_2,_3,_4,_5,_6,_7,_8){var _9={},_a=0,_b=_2._scopeName+"attrid";_1.names={"class":"className","for":"htmlFor",tabindex:"tabIndex",readonly:"readOnly",colspan:"colSpan",frameborder:"frameBorder",rowspan:"rowSpan",valuetype:"valueType"};_1.get=function getProp(_c,_d){_c=_5.byId(_c);var lc=_d.toLowerCase(),_e=_1.names[lc]||_d;return _c[_e];};_1.set=function setProp(_f,_10,_11){_f=_5.byId(_f);var l=arguments.length;if(l==2&&typeof _10!="string"){for(var x in _10){_1.set(_f,x,_10[x]);}return _f;}var lc=_10.toLowerCase(),_12=_1.names[lc]||_10;if(_12=="style"&&typeof _11!="string"){_6.set(_f,_11);return _f;}if(_12=="innerHTML"){if(_3("ie")&&_f.tagName.toLowerCase() in {col:1,colgroup:1,table:1,tbody:1,tfoot:1,thead:1,tr:1,title:1}){_7.empty(_f);_f.appendChild(_7.toDom(_11,_f.ownerDocument));}else{_f[_12]=_11;}return _f;}if(_4.isFunction(_11)){var _13=_f[_b];if(!_13){_13=_a++;_f[_b]=_13;}if(!_9[_13]){_9[_13]={};}var h=_9[_13][_12];if(h){_8.disconnect(h);}else{try{delete _f[_12];}catch(e){}}if(_11){_9[_13][_12]=_8.connect(_f,_12,_11);}else{_f[_12]=null;}return _f;}_f[_12]=_11;return _f;};}); \ No newline at end of file diff --git a/lib/dojo/dom-style.js b/lib/dojo/dom-style.js new file mode 100644 index 0000000000..2efd5b2957 --- /dev/null +++ b/lib/dojo/dom-style.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/dom-style",["./sniff","./dom"],function(_1,_2){var _3,_4={};if(_1("webkit")){_3=function(_5){var s;if(_5.nodeType==1){var dv=_5.ownerDocument.defaultView;s=dv.getComputedStyle(_5,null);if(!s&&_5.style){_5.style.display="";s=dv.getComputedStyle(_5,null);}}return s||{};};}else{if(_1("ie")&&(_1("ie")<9||_1("quirks"))){_3=function(_6){return _6.nodeType==1&&_6.currentStyle?_6.currentStyle:{};};}else{_3=function(_7){return _7.nodeType==1?_7.ownerDocument.defaultView.getComputedStyle(_7,null):{};};}}_4.getComputedStyle=_3;var _8;if(!_1("ie")){_8=function(_9,_a){return parseFloat(_a)||0;};}else{_8=function(_b,_c){if(!_c){return 0;}if(_c=="medium"){return 4;}if(_c.slice&&_c.slice(-2)=="px"){return parseFloat(_c);}var s=_b.style,rs=_b.runtimeStyle,cs=_b.currentStyle,_d=s.left,_e=rs.left;rs.left=cs.left;try{s.left=_c;_c=s.pixelLeft;}catch(e){_c=0;}s.left=_d;rs.left=_e;return _c;};}_4.toPixelValue=_8;var _f="DXImageTransform.Microsoft.Alpha";var af=function(n,f){try{return n.filters.item(_f);}catch(e){return f?{}:null;}};var _10=_1("ie")<9||(_1("ie")<10&&_1("quirks"))?function(_11){try{return af(_11).Opacity/100;}catch(e){return 1;}}:function(_12){return _3(_12).opacity;};var _13=_1("ie")<9||(_1("ie")<10&&_1("quirks"))?function(_14,_15){var ov=_15*100,_16=_15==1;_14.style.zoom=_16?"":1;if(!af(_14)){if(_16){return _15;}_14.style.filter+=" progid:"+_f+"(Opacity="+ov+")";}else{af(_14,1).Opacity=ov;}af(_14,1).Enabled=!_16;if(_14.tagName.toLowerCase()=="tr"){for(var td=_14.firstChild;td;td=td.nextSibling){if(td.tagName.toLowerCase()=="td"){_13(td,_15);}}}return _15;}:function(_17,_18){return _17.style.opacity=_18;};var _19={left:true,top:true};var _1a=/margin|padding|width|height|max|min|offset/;function _1b(_1c,_1d,_1e){_1d=_1d.toLowerCase();if(_1("ie")){if(_1e=="auto"){if(_1d=="height"){return _1c.offsetHeight;}if(_1d=="width"){return _1c.offsetWidth;}}if(_1d=="fontweight"){switch(_1e){case 700:return "bold";case 400:default:return "normal";}}}if(!(_1d in _19)){_19[_1d]=_1a.test(_1d);}return _19[_1d]?_8(_1c,_1e):_1e;};var _1f=_1("ie")?"styleFloat":"cssFloat",_20={"cssFloat":_1f,"styleFloat":_1f,"float":_1f};_4.get=function getStyle(_21,_22){var n=_2.byId(_21),l=arguments.length,op=(_22=="opacity");if(l==2&&op){return _10(n);}_22=_20[_22]||_22;var s=_4.getComputedStyle(n);return (l==1)?s:_1b(n,_22,s[_22]||n.style[_22]);};_4.set=function setStyle(_23,_24,_25){var n=_2.byId(_23),l=arguments.length,op=(_24=="opacity");_24=_20[_24]||_24;if(l==3){return op?_13(n,_25):n.style[_24]=_25;}for(var x in _24){_4.set(_23,x,_24[x]);}return _4.getComputedStyle(n);};return _4;}); \ No newline at end of file diff --git a/lib/dojo/dom.js b/lib/dojo/dom.js new file mode 100644 index 0000000000..054ec52911 --- /dev/null +++ b/lib/dojo/dom.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/dom",["./sniff","./_base/window"],function(_1,_2){if(_1("ie")<=7){try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}}var _3={};if(_1("ie")){_3.byId=function(id,_4){if(typeof id!="string"){return id;}var _5=_4||_2.doc,te=id&&_5.getElementById(id);if(te&&(te.attributes.id.value==id||te.id==id)){return te;}else{var _6=_5.all[id];if(!_6||_6.nodeName){_6=[_6];}var i=0;while((te=_6[i++])){if((te.attributes&&te.attributes.id&&te.attributes.id.value==id)||te.id==id){return te;}}}};}else{_3.byId=function(id,_7){return ((typeof id=="string")?(_7||_2.doc).getElementById(id):id)||null;};}_3.isDescendant=function(_8,_9){try{_8=_3.byId(_8);_9=_3.byId(_9);while(_8){if(_8==_9){return true;}_8=_8.parentNode;}}catch(e){}return false;};_1.add("css-user-select",function(_a,_b,_c){if(!_c){return false;}var _d=_c.style;var _e=["Khtml","O","ms","Moz","Webkit"],i=_e.length,_f="userSelect",_10;do{if(typeof _d[_f]!=="undefined"){return _f;}}while(i--&&(_f=_e[i]+"UserSelect"));return false;});var _11=_1("css-user-select");_3.setSelectable=_11?function(_12,_13){_3.byId(_12).style[_11]=_13?"":"none";}:function(_14,_15){_14=_3.byId(_14);var _16=_14.getElementsByTagName("*"),i=_16.length;if(_15){_14.removeAttribute("unselectable");while(i--){_16[i].removeAttribute("unselectable");}}else{_14.setAttribute("unselectable","on");while(i--){_16[i].setAttribute("unselectable","on");}}};return _3;}); \ No newline at end of file diff --git a/lib/dojo/domReady.js b/lib/dojo/domReady.js new file mode 100644 index 0000000000..12fc0a4559 --- /dev/null +++ b/lib/dojo/domReady.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/domReady",["./has"],function(_1){var _2=this,_3=document,_4={"loaded":1,"complete":1},_5=typeof _3.readyState!="string",_6=!!_4[_3.readyState];if(_5){_3.readyState="loading";}if(!_6){var _7=[],_8=[],_9=function(_a){_a=_a||_2.event;if(_6||(_a.type=="readystatechange"&&!_4[_3.readyState])){return;}_6=1;if(_5){_3.readyState="complete";}while(_7.length){(_7.shift())(_3);}},on=function(_b,_c){_b.addEventListener(_c,_9,false);_7.push(function(){_b.removeEventListener(_c,_9,false);});};if(!_1("dom-addeventlistener")){on=function(_d,_e){_e="on"+_e;_d.attachEvent(_e,_9);_7.push(function(){_d.detachEvent(_e,_9);});};var _f=_3.createElement("div");try{if(_f.doScroll&&_2.frameElement===null){_8.push(function(){try{_f.doScroll("left");return 1;}catch(e){}});}}catch(e){}}on(_3,"DOMContentLoaded");on(_2,"load");if("onreadystatechange" in _3){on(_3,"readystatechange");}else{if(!_5){_8.push(function(){return _4[_3.readyState];});}}if(_8.length){var _10=function(){if(_6){return;}var i=_8.length;while(i--){if(_8[i]()){_9("poller");return;}}setTimeout(_10,30);};_10();}}function _11(_12){if(_6){_12(_3);}else{_7.push(_12);}};_11.load=function(id,req,_13){_11(_13);};return _11;}); \ No newline at end of file diff --git a/lib/dojo/errors/CancelError.js b/lib/dojo/errors/CancelError.js new file mode 100644 index 0000000000..5d6f9e6530 --- /dev/null +++ b/lib/dojo/errors/CancelError.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/errors/CancelError",["./create"],function(_1){return _1("CancelError",null,null,{dojoType:"cancel"});}); \ No newline at end of file diff --git a/lib/dojo/errors/RequestError.js b/lib/dojo/errors/RequestError.js new file mode 100644 index 0000000000..2773cd77f0 --- /dev/null +++ b/lib/dojo/errors/RequestError.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/errors/RequestError",["./create"],function(_1){return _1("RequestError",function(_2,_3){this.response=_3;});}); \ No newline at end of file diff --git a/lib/dojo/errors/RequestTimeoutError.js b/lib/dojo/errors/RequestTimeoutError.js new file mode 100644 index 0000000000..a9fed01548 --- /dev/null +++ b/lib/dojo/errors/RequestTimeoutError.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/errors/RequestTimeoutError",["./create","./RequestError"],function(_1,_2){return _1("RequestTimeoutError",null,_2,{dojoType:"timeout"});}); \ No newline at end of file diff --git a/lib/dojo/errors/create.js b/lib/dojo/errors/create.js new file mode 100644 index 0000000000..e4bb45659d --- /dev/null +++ b/lib/dojo/errors/create.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/errors/create",["../_base/lang"],function(_1){return function(_2,_3,_4,_5){_4=_4||Error;var _6=function(_7){if(_4===Error){if(Error.captureStackTrace){Error.captureStackTrace(this,_6);}var _8=Error.call(this,_7),_9;for(_9 in _8){if(_8.hasOwnProperty(_9)){this[_9]=_8[_9];}}this.message=_7;this.stack=_8.stack;}else{_4.apply(this,arguments);}if(_3){_3.apply(this,arguments);}};_6.prototype=_1.delegate(_4.prototype,_5);_6.prototype.name=_2;_6.prototype.constructor=_6;return _6;};}); \ No newline at end of file diff --git a/lib/dojo/fx.js b/lib/dojo/fx.js new file mode 100644 index 0000000000..b806ade8dd --- /dev/null +++ b/lib/dojo/fx.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/fx",["./_base/lang","./Evented","./_base/kernel","./_base/array","./_base/connect","./_base/fx","./dom","./dom-style","./dom-geometry","./ready","require"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b){if(!_3.isAsync){_a(0,function(){var _c=["./fx/Toggler"];_b(_c);});}var _d=_3.fx={};var _e={_fire:function(_f,_10){if(this[_f]){this[_f].apply(this,_10||[]);}return this;}};var _11=function(_12){this._index=-1;this._animations=_12||[];this._current=this._onAnimateCtx=this._onEndCtx=null;this.duration=0;_4.forEach(this._animations,function(a){this.duration+=a.duration;if(a.delay){this.duration+=a.delay;}},this);};_11.prototype=new _2();_1.extend(_11,{_onAnimate:function(){this._fire("onAnimate",arguments);},_onEnd:function(){_5.disconnect(this._onAnimateCtx);_5.disconnect(this._onEndCtx);this._onAnimateCtx=this._onEndCtx=null;if(this._index+1==this._animations.length){this._fire("onEnd");}else{this._current=this._animations[++this._index];this._onAnimateCtx=_5.connect(this._current,"onAnimate",this,"_onAnimate");this._onEndCtx=_5.connect(this._current,"onEnd",this,"_onEnd");this._current.play(0,true);}},play:function(_13,_14){if(!this._current){this._current=this._animations[this._index=0];}if(!_14&&this._current.status()=="playing"){return this;}var _15=_5.connect(this._current,"beforeBegin",this,function(){this._fire("beforeBegin");}),_16=_5.connect(this._current,"onBegin",this,function(arg){this._fire("onBegin",arguments);}),_17=_5.connect(this._current,"onPlay",this,function(arg){this._fire("onPlay",arguments);_5.disconnect(_15);_5.disconnect(_16);_5.disconnect(_17);});if(this._onAnimateCtx){_5.disconnect(this._onAnimateCtx);}this._onAnimateCtx=_5.connect(this._current,"onAnimate",this,"_onAnimate");if(this._onEndCtx){_5.disconnect(this._onEndCtx);}this._onEndCtx=_5.connect(this._current,"onEnd",this,"_onEnd");this._current.play.apply(this._current,arguments);return this;},pause:function(){if(this._current){var e=_5.connect(this._current,"onPause",this,function(arg){this._fire("onPause",arguments);_5.disconnect(e);});this._current.pause();}return this;},gotoPercent:function(_18,_19){this.pause();var _1a=this.duration*_18;this._current=null;_4.some(this._animations,function(a){if(a.duration<=_1a){this._current=a;return true;}_1a-=a.duration;return false;});if(this._current){this._current.gotoPercent(_1a/this._current.duration,_19);}return this;},stop:function(_1b){if(this._current){if(_1b){for(;this._index+1this._animations.length){this._fire("onEnd");}},_call:function(_23,_24){var t=this._pseudoAnimation;t[_23].apply(t,_24);},play:function(_25,_26){this._finished=0;this._doAction("play",arguments);this._call("play",arguments);return this;},pause:function(){this._doAction("pause",arguments);this._call("pause",arguments);return this;},gotoPercent:function(_27,_28){var ms=this.duration*_27;_4.forEach(this._animations,function(a){a.gotoPercent(a.duration= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/fx/Toggler",["../_base/lang","../_base/declare","../_base/fx","../_base/connect"],function(_1,_2,_3,_4){return _2("dojo.fx.Toggler",null,{node:null,showFunc:_3.fadeIn,hideFunc:_3.fadeOut,showDuration:200,hideDuration:200,constructor:function(_5){var _6=this;_1.mixin(_6,_5);_6.node=_5.node;_6._showArgs=_1.mixin({},_5);_6._showArgs.node=_6.node;_6._showArgs.duration=_6.showDuration;_6.showAnim=_6.showFunc(_6._showArgs);_6._hideArgs=_1.mixin({},_5);_6._hideArgs.node=_6.node;_6._hideArgs.duration=_6.hideDuration;_6.hideAnim=_6.hideFunc(_6._hideArgs);_4.connect(_6.showAnim,"beforeBegin",_1.hitch(_6.hideAnim,"stop",true));_4.connect(_6.hideAnim,"beforeBegin",_1.hitch(_6.showAnim,"stop",true));},show:function(_7){return this.showAnim.play(_7||0);},hide:function(_8){return this.hideAnim.play(_8||0);}});}); \ No newline at end of file diff --git a/lib/dojo/fx/easing.js b/lib/dojo/fx/easing.js new file mode 100644 index 0000000000..34a94920f9 --- /dev/null +++ b/lib/dojo/fx/easing.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/fx/easing",["../_base/lang"],function(_1){var _2={linear:function(n){return n;},quadIn:function(n){return Math.pow(n,2);},quadOut:function(n){return n*(n-2)*-1;},quadInOut:function(n){n=n*2;if(n<1){return Math.pow(n,2)/2;}return -1*((--n)*(n-2)-1)/2;},cubicIn:function(n){return Math.pow(n,3);},cubicOut:function(n){return Math.pow(n-1,3)+1;},cubicInOut:function(n){n=n*2;if(n<1){return Math.pow(n,3)/2;}n-=2;return (Math.pow(n,3)+2)/2;},quartIn:function(n){return Math.pow(n,4);},quartOut:function(n){return -1*(Math.pow(n-1,4)-1);},quartInOut:function(n){n=n*2;if(n<1){return Math.pow(n,4)/2;}n-=2;return -1/2*(Math.pow(n,4)-2);},quintIn:function(n){return Math.pow(n,5);},quintOut:function(n){return Math.pow(n-1,5)+1;},quintInOut:function(n){n=n*2;if(n<1){return Math.pow(n,5)/2;}n-=2;return (Math.pow(n,5)+2)/2;},sineIn:function(n){return -1*Math.cos(n*(Math.PI/2))+1;},sineOut:function(n){return Math.sin(n*(Math.PI/2));},sineInOut:function(n){return -1*(Math.cos(Math.PI*n)-1)/2;},expoIn:function(n){return (n==0)?0:Math.pow(2,10*(n-1));},expoOut:function(n){return (n==1)?1:(-1*Math.pow(2,-10*n)+1);},expoInOut:function(n){if(n==0){return 0;}if(n==1){return 1;}n=n*2;if(n<1){return Math.pow(2,10*(n-1))/2;}--n;return (-1*Math.pow(2,-10*n)+2)/2;},circIn:function(n){return -1*(Math.sqrt(1-Math.pow(n,2))-1);},circOut:function(n){n=n-1;return Math.sqrt(1-Math.pow(n,2));},circInOut:function(n){n=n*2;if(n<1){return -1/2*(Math.sqrt(1-Math.pow(n,2))-1);}n-=2;return 1/2*(Math.sqrt(1-Math.pow(n,2))+1);},backIn:function(n){var s=1.70158;return Math.pow(n,2)*((s+1)*n-s);},backOut:function(n){n=n-1;var s=1.70158;return Math.pow(n,2)*((s+1)*n+s)+1;},backInOut:function(n){var s=1.70158*1.525;n=n*2;if(n<1){return (Math.pow(n,2)*((s+1)*n-s))/2;}n-=2;return (Math.pow(n,2)*((s+1)*n+s)+2)/2;},elasticIn:function(n){if(n==0||n==1){return n;}var p=0.3;var s=p/4;n=n-1;return -1*Math.pow(2,10*n)*Math.sin((n-s)*(2*Math.PI)/p);},elasticOut:function(n){if(n==0||n==1){return n;}var p=0.3;var s=p/4;return Math.pow(2,-10*n)*Math.sin((n-s)*(2*Math.PI)/p)+1;},elasticInOut:function(n){if(n==0){return 0;}n=n*2;if(n==2){return 1;}var p=0.3*1.5;var s=p/4;if(n<1){n-=1;return -0.5*(Math.pow(2,10*n)*Math.sin((n-s)*(2*Math.PI)/p));}n-=1;return 0.5*(Math.pow(2,-10*n)*Math.sin((n-s)*(2*Math.PI)/p))+1;},bounceIn:function(n){return (1-_2.bounceOut(1-n));},bounceOut:function(n){var s=7.5625;var p=2.75;var l;if(n<(1/p)){l=s*Math.pow(n,2);}else{if(n<(2/p)){n-=(1.5/p);l=s*Math.pow(n,2)+0.75;}else{if(n<(2.5/p)){n-=(2.25/p);l=s*Math.pow(n,2)+0.9375;}else{n-=(2.625/p);l=s*Math.pow(n,2)+0.984375;}}}return l;},bounceInOut:function(n){if(n<0.5){return _2.bounceIn(n*2)/2;}return (_2.bounceOut(n*2-1)/2)+0.5;}};_1.setObject("dojo.fx.easing",_2);return _2;}); \ No newline at end of file diff --git a/lib/dojo/gears.js b/lib/dojo/gears.js new file mode 100644 index 0000000000..2a9b82008e --- /dev/null +++ b/lib/dojo/gears.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/gears",["./_base/lang","./sniff"],function(_1,_2){var _3={};_1.setObject("dojo.gears",_3);_3._gearsObject=function(){var _4;var _5=_1.getObject("google.gears");if(_5){return _5;}if(typeof GearsFactory!="undefined"){_4=new GearsFactory();}else{if(_2("ie")){try{_4=new ActiveXObject("Gears.Factory");}catch(e){}}else{if(navigator.mimeTypes["application/x-googlegears"]){_4=document.createElement("object");_4.setAttribute("type","application/x-googlegears");_4.setAttribute("width",0);_4.setAttribute("height",0);_4.style.display="none";document.documentElement.appendChild(_4);}}}if(!_4){return null;}_1.setObject("google.gears.factory",_4);return _1.getObject("google.gears");};_3.available=(!!_3._gearsObject())||0;return _3;}); \ No newline at end of file diff --git a/lib/dojo/has.js b/lib/dojo/has.js new file mode 100644 index 0000000000..17bb5e6acd --- /dev/null +++ b/lib/dojo/has.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/has",["require","module"],function(_1,_2){var _3=_1.has||function(){};if(!1){var _4=typeof window!="undefined"&&typeof location!="undefined"&&typeof document!="undefined"&&window.location==location&&window.document==document,_5=this,_6=_4&&document,_7=_6&&_6.createElement("DiV"),_8=(_2.config&&_2.config())||{};_3=function(_9){return typeof _8[_9]=="function"?(_8[_9]=_8[_9](_5,_6,_7)):_8[_9];};_3.cache=_8;_3.add=function(_a,_b,_c,_d){(typeof _8[_a]=="undefined"||_d)&&(_8[_a]=_b);return _c&&_3(_a);};1||_3.add("host-browser",_4);1||_3.add("dom",_4);1||_3.add("dojo-dom-ready-api",1);1||_3.add("dojo-sniff",1);}if(1){_3.add("dom-addeventlistener",!!document.addEventListener);_3.add("touch","ontouchstart" in document);_3.add("device-width",screen.availWidth||innerWidth);var _e=document.createElement("form");_3.add("dom-attributes-explicit",_e.attributes.length==0);_3.add("dom-attributes-specified-flag",_e.attributes.length>0&&_e.attributes.length<40);}_3.clearElement=function(_f){_f.innerHTML="";return _f;};_3.normalize=function(id,_10){var _11=id.match(/[\?:]|[^:\?]*/g),i=0,get=function(_12){var _13=_11[i++];if(_13==":"){return 0;}else{if(_11[i++]=="?"){if(!_12&&_3(_13)){return get();}else{get(true);return get(_12);}}return _13||0;}};id=get();return id&&_10(id);};_3.load=function(id,_14,_15){if(id){_14([id],_15);}else{_15();}};return _3;}); \ No newline at end of file diff --git a/lib/dojo/hash.js b/lib/dojo/hash.js new file mode 100644 index 0000000000..4b07466b00 --- /dev/null +++ b/lib/dojo/hash.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/hash",["./_base/kernel","require","./_base/config","./_base/connect","./_base/lang","./ready","./sniff"],function(_1,_2,_3,_4,_5,_6,_7){_1.hash=function(_8,_9){if(!arguments.length){return _a();}if(_8.charAt(0)=="#"){_8=_8.substring(1);}if(_9){_b(_8);}else{location.href="#"+_8;}return _8;};var _c,_d,_e,_f=_3.hashPollFrequency||100;function _10(str,_11){var i=str.indexOf(_11);return (i>=0)?str.substring(i+1):"";};function _a(){return _10(location.href,"#");};function _12(){_4.publish("/dojo/hashchange",[_a()]);};function _13(){if(_a()===_c){return;}_c=_a();_12();};function _b(_14){if(_d){if(_d.isTransitioning()){setTimeout(_5.hitch(null,_b,_14),_f);return;}var _15=_d.iframe.location.href;var _16=_15.indexOf("?");_d.iframe.location.replace(_15.substring(0,_16)+"?"+_14);return;}location.replace("#"+_14);!_e&&_13();};function _17(){var ifr=document.createElement("iframe"),_18="dojo-hash-iframe",_19=_3.dojoBlankHtmlUrl||_2.toUrl("./resources/blank.html");if(_3.useXDomain&&!_3.dojoBlankHtmlUrl){console.warn("dojo.hash: When using cross-domain Dojo builds,"+" please save dojo/resources/blank.html to your domain and set djConfig.dojoBlankHtmlUrl"+" to the path on your domain to blank.html");}ifr.id=_18;ifr.src=_19+"?"+_a();ifr.style.display="none";document.body.appendChild(ifr);this.iframe=_1.global[_18];var _1a,_1b,_1c,_1d,_1e,_1f=this.iframe.location;function _20(){_c=_a();_1a=_1e?_c:_10(_1f.href,"?");_1b=false;_1c=null;};this.isTransitioning=function(){return _1b;};this.pollLocation=function(){if(!_1e){try{var _21=_10(_1f.href,"?");if(document.title!=_1d){_1d=this.iframe.document.title=document.title;}}catch(e){_1e=true;console.error("dojo.hash: Error adding history entry. Server unreachable.");}}var _22=_a();if(_1b&&_c===_22){if(_1e||_21===_1c){_20();_12();}else{setTimeout(_5.hitch(this,this.pollLocation),0);return;}}else{if(_c===_22&&(_1e||_1a===_21)){}else{if(_c!==_22){_c=_22;_1b=true;_1c=_22;ifr.src=_19+"?"+_1c;_1e=false;setTimeout(_5.hitch(this,this.pollLocation),0);return;}else{if(!_1e){location.href="#"+_1f.search.substring(1);_20();_12();}}}}setTimeout(_5.hitch(this,this.pollLocation),_f);};_20();setTimeout(_5.hitch(this,this.pollLocation),_f);};_6(function(){if("onhashchange" in _1.global&&(!_7("ie")||(_7("ie")>=8&&document.compatMode!="BackCompat"))){_e=_4.connect(_1.global,"onhashchange",_12);}else{if(document.addEventListener){_c=_a();setInterval(_13,_f);}else{if(document.attachEvent){_d=new _17();}}}});return _1.hash;}); \ No newline at end of file diff --git a/lib/dojo/hccss.js b/lib/dojo/hccss.js new file mode 100644 index 0000000000..3921ddb77c --- /dev/null +++ b/lib/dojo/hccss.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/hccss",["require","./_base/config","./dom-class","./dom-style","./has","./ready","./_base/window"],function(_1,_2,_3,_4,_5,_6,_7){_5.add("highcontrast",function(){var _8=_7.doc.createElement("div");_8.style.cssText="border: 1px solid; border-color:red green; position: absolute; height: 5px; top: -999px;"+"background-image: url("+(_2.blankGif||_1.toUrl("./resources/blank.gif"))+");";_7.body().appendChild(_8);var cs=_4.getComputedStyle(_8),_9=cs.backgroundImage,hc=(cs.borderTopColor==cs.borderRightColor)||(_9&&(_9=="none"||_9=="url(invalid-url:)"));if(_5("ie")<=8){_8.outerHTML="";}else{_7.body().removeChild(_8);}return hc;});_6(90,function(){if(_5("highcontrast")){_3.add(_7.body(),"dj_a11y");}});return _5;}); \ No newline at end of file diff --git a/lib/dojo/html.js b/lib/dojo/html.js new file mode 100644 index 0000000000..10fc9b04e5 --- /dev/null +++ b/lib/dojo/html.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/html",["./_base/kernel","./_base/lang","./_base/array","./_base/declare","./dom","./dom-construct","./parser"],function(_1,_2,_3,_4,_5,_6,_7){var _8={};_2.setObject("dojo.html",_8);var _9=0;_8._secureForInnerHtml=function(_a){return _a.replace(/(?:\s*]+>|]*>[\s\S]*?<\/title>)/ig,"");};_8._emptyNode=_6.empty;_8._setNodeContent=function(_b,_c){_6.empty(_b);if(_c){if(typeof _c=="string"){_c=_6.toDom(_c,_b.ownerDocument);}if(!_c.nodeType&&_2.isArrayLike(_c)){for(var _d=_c.length,i=0;i<_c.length;i=_d==_c.length?i+1:0){_6.place(_c[i],_b,"last");}}else{_6.place(_c,_b,"last");}}return _b;};_8._ContentSetter=_4("dojo.html._ContentSetter",null,{node:"",content:"",id:"",cleanContent:false,extractContent:false,parseContent:false,parserScope:_1._scopeName,startup:true,constructor:function(_e,_f){_2.mixin(this,_e||{});_f=this.node=_5.byId(this.node||_f);if(!this.id){this.id=["Setter",(_f)?_f.id||_f.tagName:"",_9++].join("_");}},set:function(_10,_11){if(undefined!==_10){this.content=_10;}if(_11){this._mixin(_11);}this.onBegin();this.setContent();var ret=this.onEnd();if(ret&&ret.then){return ret;}else{return this.node;}},setContent:function(){var _12=this.node;if(!_12){throw new Error(this.declaredClass+": setContent given no node");}try{_12=_8._setNodeContent(_12,this.content);}catch(e){var _13=this.onContentError(e);try{_12.innerHTML=_13;}catch(e){console.error("Fatal "+this.declaredClass+".setContent could not change content due to "+e.message,e);}}this.node=_12;},empty:function(){if(this.parseDeferred){if(!this.parseDeferred.isResolved()){this.parseDeferred.cancel();}delete this.parseDeferred;}if(this.parseResults&&this.parseResults.length){_3.forEach(this.parseResults,function(w){if(w.destroy){w.destroy();}});delete this.parseResults;}_6.empty(this.node);},onBegin:function(){var _14=this.content;if(_2.isString(_14)){if(this.cleanContent){_14=_8._secureForInnerHtml(_14);}if(this.extractContent){var _15=_14.match(/]*>\s*([\s\S]+)\s*<\/body>/im);if(_15){_14=_15[1];}}}this.empty();this.content=_14;return this.node;},onEnd:function(){if(this.parseContent){this._parse();}return this.node;},tearDown:function(){delete this.parseResults;delete this.parseDeferred;delete this.node;delete this.content;},onContentError:function(err){return "Error occurred setting content: "+err;},onExecError:function(err){return "Error occurred executing scripts: "+err;},_mixin:function(_16){var _17={},key;for(key in _16){if(key in _17){continue;}this[key]=_16[key];}},_parse:function(){var _18=this.node;try{var _19={};_3.forEach(["dir","lang","textDir"],function(_1a){if(this[_1a]){_19[_1a]=this[_1a];}},this);var _1b=this;this.parseDeferred=_7.parse({rootNode:_18,noStart:!this.startup,inherited:_19,scope:this.parserScope}).then(function(_1c){return _1b.parseResults=_1c;});}catch(e){this._onError("Content",e,"Error parsing in _ContentSetter#"+this.id);}},_onError:function(_1d,err,_1e){var _1f=this["on"+_1d+"Error"].call(this,err);if(_1e){console.error(_1e,err);}else{if(_1f){_8._setNodeContent(this.node,_1f,true);}}}});_8.set=function(_20,_21,_22){if(undefined==_21){console.warn("dojo.html.set: no cont argument provided, using empty string");_21="";}if(!_22){return _8._setNodeContent(_20,_21,true);}else{var op=new _8._ContentSetter(_2.mixin(_22,{content:_21,node:_20}));return op.set();}};return _8;}); \ No newline at end of file diff --git a/lib/dojo/i18n.js b/lib/dojo/i18n.js new file mode 100644 index 0000000000..6b961d8f98 --- /dev/null +++ b/lib/dojo/i18n.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/i18n",["./_base/kernel","require","./has","./_base/array","./_base/config","./_base/lang","./_base/xhr","./json","module"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9){_3.add("dojo-preload-i18n-Api",1);1||_3.add("dojo-v1x-i18n-Api",1);var _a=_1.i18n={},_b=/(^.*(^|\/)nls)(\/|$)([^\/]*)\/?([^\/]*)/,_c=function(_d,_e,_f,_10){for(var _11=[_f+_10],_12=_e.split("-"),_13="",i=0;i<_12.length;i++){_13+=(_13?"-":"")+_12[i];if(!_d||_d[_13]){_11.push(_f+_13+"/"+_10);}}return _11;},_14={},_15=function(_16,_17,_18){_18=_18?_18.toLowerCase():_1.locale;_16=_16.replace(/\./g,"/");_17=_17.replace(/\./g,"/");return (/root/i.test(_18))?(_16+"/nls/"+_17):(_16+"/nls/"+_18+"/"+_17);},_19=_1.getL10nName=function(_1a,_1b,_1c){return _1a=_9.id+"!"+_15(_1a,_1b,_1c);},_1d=function(_1e,_1f,_20,_21,_22,_23){_1e([_1f],function(_24){var _25=_6.clone(_24.root),_26=_c(!_24._v1x&&_24,_22,_20,_21);_1e(_26,function(){for(var i=1;i<_26.length;i++){_25=_6.mixin(_6.clone(_25),arguments[i]);}var _27=_1f+"/"+_22;_14[_27]=_25;_23();});});},_28=function(id,_29){return /^\./.test(id)?_29(id):id;},_2a=function(_2b){var _2c=_5.extraLocale||[];_2c=_6.isArray(_2c)?_2c:[_2c];_2c.push(_2b);return _2c;},_2d=function(id,_2e,_2f){if(_3("dojo-preload-i18n-Api")){var _30=id.split("*"),_31=_30[1]=="preload";if(_31){if(!_14[id]){_14[id]=1;_32(_30[2],_8.parse(_30[3]),1,_2e);}_2f(1);}if(_31||_33(id,_2e,_2f)){return;}}var _34=_b.exec(id),_35=_34[1]+"/",_36=_34[5]||_34[4],_37=_35+_36,_38=(_34[5]&&_34[4]),_39=_38||_1.locale,_3a=_37+"/"+_39,_3b=_38?[_39]:_2a(_39),_3c=_3b.length,_3d=function(){if(!--_3c){_2f(_6.delegate(_14[_3a]));}};_4.forEach(_3b,function(_3e){var _3f=_37+"/"+_3e;if(_3("dojo-preload-i18n-Api")){_40(_3f);}if(!_14[_3f]){_1d(_2e,_37,_35,_36,_3e,_3d);}else{_3d();}});};if(_3("dojo-unit-tests")){var _41=_a.unitTests=[];}if(_3("dojo-preload-i18n-Api")||1){var _42=_a.normalizeLocale=function(_43){var _44=_43?_43.toLowerCase():_1.locale;return _44=="root"?"ROOT":_44;},_45=function(mid,_46){return (1&&1)?_46.isXdUrl(_2.toUrl(mid+".js")):true;},_47=0,_48=[],_32=_a._preloadLocalizations=function(_49,_4a,_4b,_4c){_4c=_4c||_2;function _4d(mid,_4e){if(_45(mid,_4c)||_4b){_4c([mid],_4e);}else{_5a([mid],_4e,_4c);}};function _4f(_50,_51){var _52=_50.split("-");while(_52.length){if(_51(_52.join("-"))){return;}_52.pop();}_51("ROOT");};function _53(_54){_54=_42(_54);_4f(_54,function(loc){if(_4.indexOf(_4a,loc)>=0){var mid=_49.replace(/\./g,"/")+"_"+loc;_47++;_4d(mid,function(_55){for(var p in _55){_14[_2.toAbsMid(p)+"/"+loc]=_55[p];}--_47;while(!_47&&_48.length){_2d.apply(null,_48.shift());}});return true;}return false;});};_53();_4.forEach(_1.config.extraLocale,_53);},_33=function(id,_56,_57){if(_47){_48.push([id,_56,_57]);}return _47;},_40=function(){};}if(1){var _58={},_59=new Function("__bundle","__checkForLegacyModules","__mid","__amdValue","var define = function(mid, factory){define.called = 1; __amdValue.result = factory || mid;},"+"\t require = function(){define.called = 1;};"+"try{"+"define.called = 0;"+"eval(__bundle);"+"if(define.called==1)"+"return __amdValue;"+"if((__checkForLegacyModules = __checkForLegacyModules(__mid)))"+"return __checkForLegacyModules;"+"}catch(e){}"+"try{"+"return eval('('+__bundle+')');"+"}catch(e){"+"return e;"+"}"),_5a=function(_5b,_5c,_5d){var _5e=[];_4.forEach(_5b,function(mid){var url=_5d.toUrl(mid+".js");function _2d(_5f){var _60=_59(_5f,_40,mid,_58);if(_60===_58){_5e.push(_14[url]=_58.result);}else{if(_60 instanceof Error){console.error("failed to evaluate i18n bundle; url="+url,_60);_60={};}_5e.push(_14[url]=(/nls\/[^\/]+\/[^\/]+$/.test(url)?_60:{root:_60,_v1x:1}));}};if(_14[url]){_5e.push(_14[url]);}else{var _61=_5d.syncLoadNls(mid);if(_61){_5e.push(_61);}else{if(!_7){try{_5d.getText(url,true,_2d);}catch(e){_5e.push(_14[url]={});}}else{_7.get({url:url,sync:true,load:_2d,error:function(){_5e.push(_14[url]={});}});}}}});_5c&&_5c.apply(null,_5e);};_40=function(_62){for(var _63,_64=_62.split("/"),_65=_1.global[_64[0]],i=1;_65&&i<_64.length-1;_65=_65[_64[i++]]){}if(_65){_63=_65[_64[i]];if(!_63){_63=_65[_64[i].replace(/-/g,"_")];}if(_63){_14[_62]=_63;}}return _63;};_a.getLocalization=function(_66,_67,_68){var _69,_6a=_15(_66,_67,_68);_2d(_6a,(!_45(_6a,_2)?function(_6b,_6c){_5a(_6b,_6c,_2);}:_2),function(_6d){_69=_6d;});return _69;};if(_3("dojo-unit-tests")){_41.push(function(doh){doh.register("tests.i18n.unit",function(t){var _6e;_6e=_59("{prop:1}",_40,"nonsense",_58);t.is({prop:1},_6e);t.is(undefined,_6e[1]);_6e=_59("({prop:1})",_40,"nonsense",_58);t.is({prop:1},_6e);t.is(undefined,_6e[1]);_6e=_59("{'prop-x':1}",_40,"nonsense",_58);t.is({"prop-x":1},_6e);t.is(undefined,_6e[1]);_6e=_59("({'prop-x':1})",_40,"nonsense",_58);t.is({"prop-x":1},_6e);t.is(undefined,_6e[1]);_6e=_59("define({'prop-x':1})",_40,"nonsense",_58);t.is(_58,_6e);t.is({"prop-x":1},_58.result);_6e=_59("define('some/module', {'prop-x':1})",_40,"nonsense",_58);t.is(_58,_6e);t.is({"prop-x":1},_58.result);_6e=_59("this is total nonsense and should throw an error",_40,"nonsense",_58);t.is(_6e instanceof Error,true);});});}}return _6.mixin(_a,{dynamic:true,normalize:_28,load:_2d,cache:_14});}); \ No newline at end of file diff --git a/lib/dojo/io-query.js b/lib/dojo/io-query.js new file mode 100644 index 0000000000..8407900438 --- /dev/null +++ b/lib/dojo/io-query.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/io-query",["./_base/lang"],function(_1){var _2={};return {objectToQuery:function objectToQuery(_3){var _4=encodeURIComponent,_5=[];for(var _6 in _3){var _7=_3[_6];if(_7!=_2[_6]){var _8=_4(_6)+"=";if(_1.isArray(_7)){for(var i=0,l=_7.length;i= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/io/iframe",["../_base/config","../_base/json","../_base/kernel","../_base/lang","../_base/xhr","../sniff","../_base/window","../dom","../dom-construct","../query","require","../aspect","../request/iframe"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,_c,_d){_3.deprecated("dojo/io/iframe","Use dojo/request/iframe.","2.0");var _e=_d._iframeName;_e=_e.substring(0,_e.lastIndexOf("_"));var _f=_4.delegate(_d,{create:function(){return _f._frame=_d.create.apply(_d,arguments);},get:null,post:null,send:function(_10){var _11;var dfd=_5._ioSetArgs(_10,function(dfd){_11&&_11.cancel();},function(dfd){var _12=null,_13=dfd.ioArgs;try{var _14=_13.handleAs;if(_14==="xml"||_14==="html"){_12=_11.response.data;}else{_12=_11.response.text;if(_14==="json"){_12=_2.fromJson(_12);}else{if(_14==="javascript"){_12=_3.eval(_12);}}}}catch(e){_12=e;}return _12;},function(_15,dfd){dfd.ioArgs._hasError=true;return _15;});var _16=dfd.ioArgs;var _17="GET",_18=_8.byId(_10.form);if(_10.method&&_10.method.toUpperCase()==="POST"&&_18){_17="POST";}var _19={method:_17,handleAs:_10.handleAs==="json"||_10.handleAs==="javascript"?"text":_10.handleAs,form:_10.form,query:_18?null:_10.content,data:_18?_10.content:null,timeout:_10.timeout,ioArgs:_16};if(_19.method){_19.method=_19.method.toUpperCase();}if(_1.ioPublish&&_3.publish&&_16.args.ioPublish!==false){var _1a=_c.after(_d,"_notifyStart",function(_1b){if(_1b.options.ioArgs===_16){_1a.remove();_5._ioNotifyStart(dfd);}},true);}_11=_d(_16.url,_19,true);_16._callNext=_11._callNext;_11.then(function(){dfd.resolve(dfd);}).otherwise(function(_1c){dfd.ioArgs.error=_1c;dfd.reject(_1c);});return dfd;},_iframeOnload:_7.global[_e+"_onload"]});_4.setObject("dojo.io.iframe",_f);return _f;}); \ No newline at end of file diff --git a/lib/dojo/io/script.js b/lib/dojo/io/script.js new file mode 100644 index 0000000000..130a5391f1 --- /dev/null +++ b/lib/dojo/io/script.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/io/script",["../_base/connect","../_base/kernel","../_base/lang","../sniff","../_base/window","../_base/xhr","../dom","../dom-construct","../request/script"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9){_2.deprecated("dojo/io/script","Use dojo/request/script.","2.0");var _a={get:function(_b){var _c;var _d=this._makeScriptDeferred(_b,function(_e){_c&&_c.cancel();});var _f=_d.ioArgs;_6._ioAddQueryToUrl(_f);_6._ioNotifyStart(_d);_c=_9.get(_f.url,{timeout:_b.timeout,jsonp:_f.jsonp,checkString:_b.checkString,ioArgs:_f,frameDoc:_b.frameDoc,canAttach:function(_10){_f.requestId=_10.id;_f.scriptId=_10.scriptId;_f.canDelete=_10.canDelete;return _a._canAttach(_f);}},true);_c.then(function(){_d.resolve(_d);}).otherwise(function(_11){_d.ioArgs.error=_11;_d.reject(_11);});return _d;},attach:_9._attach,remove:_9._remove,_makeScriptDeferred:function(_12,_13){var dfd=_6._ioSetArgs(_12,_13||this._deferredCancel,this._deferredOk,this._deferredError);var _14=dfd.ioArgs;_14.id=_2._scopeName+"IoScript"+(this._counter++);_14.canDelete=false;_14.jsonp=_12.callbackParamName||_12.jsonp;if(_14.jsonp){_14.query=_14.query||"";if(_14.query.length>0){_14.query+="&";}_14.query+=_14.jsonp+"="+(_12.frameDoc?"parent.":"")+_2._scopeName+".io.script.jsonp_"+_14.id+"._jsonpCallback";_14.frameDoc=_12.frameDoc;_14.canDelete=true;dfd._jsonpCallback=this._jsonpCallback;this["jsonp_"+_14.id]=dfd;}return dfd;},_deferredCancel:function(dfd){dfd.canceled=true;},_deferredOk:function(dfd){var _15=dfd.ioArgs;return _15.json||_15.scriptLoaded||_15;},_deferredError:function(_16,dfd){return _16;},_deadScripts:[],_counter:1,_addDeadScript:function(_17){_a._deadScripts.push({id:_17.id,frameDoc:_17.frameDoc});_17.frameDoc=null;},_validCheck:function(dfd){var _18=_a._deadScripts;if(_18&&_18.length>0){for(var i=0;i<_18.length;i++){_a.remove(_18[i].id,_18[i].frameDoc);_18[i].frameDoc=null;}_a._deadScripts=[];}return true;},_ioCheck:function(dfd){var _19=dfd.ioArgs;if(_19.json||(_19.scriptLoaded&&!_19.args.checkString)){return true;}var _1a=_19.args.checkString;return _1a&&eval("typeof("+_1a+") != 'undefined'");},_resHandle:function(dfd){if(_a._ioCheck(dfd)){dfd.callback(dfd);}else{dfd.errback(new Error("inconceivable dojo.io.script._resHandle error"));}},_canAttach:function(){return true;},_jsonpCallback:function(_1b){this.ioArgs.json=_1b;_2.global[_9._callbacksProperty][this.ioArgs.requestId](_1b);}};_3.setObject("dojo.io.script",_a);return _a;}); \ No newline at end of file diff --git a/lib/dojo/jaxer.js b/lib/dojo/jaxer.js new file mode 100644 index 0000000000..4e1a2fe381 --- /dev/null +++ b/lib/dojo/jaxer.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/jaxer",["./_base/kernel"],function(_1){_1.deprecated("(dojo)/jaxer interface","Jaxer is no longer supported by the Dojo Toolkit, will be removed with DTK 1.9.");if(typeof print=="function"){console.debug=Jaxer.Log.debug;console.warn=Jaxer.Log.warn;console.error=Jaxer.Log.error;console.info=Jaxer.Log.info;console.log=Jaxer.Log.warn;}onserverload=_1._loadInit;return _1;}); \ No newline at end of file diff --git a/lib/dojo/json.js b/lib/dojo/json.js new file mode 100644 index 0000000000..203d51a520 --- /dev/null +++ b/lib/dojo/json.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/json",["./has"],function(_1){"use strict";var _2=typeof JSON!="undefined";_1.add("json-parse",_2);_1.add("json-stringify",_2&&JSON.stringify({a:0},function(k,v){return v||1;})=="{\"a\":1}");if(_1("json-stringify")){return JSON;}else{var _3=function(_4){return ("\""+_4.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");};return {parse:_1("json-parse")?JSON.parse:function(_5,_6){if(_6&&!/^([\s\[\{]*(?:"(?:\\.|[^"])+"|-?\d[\d\.]*(?:[Ee][+-]?\d+)?|null|true|false|)[\s\]\}]*(?:,|:|$))+$/.test(_5)){throw new SyntaxError("Invalid characters in JSON");}return eval("("+_5+")");},stringify:function(_7,_8,_9){var _a;if(typeof _8=="string"){_9=_8;_8=null;}function _b(it,_c,_d){if(_8){it=_8(_d,it);}var _e,_f=typeof it;if(_f=="number"){return isFinite(it)?it+"":"null";}if(_f=="boolean"){return it+"";}if(it===null){return "null";}if(typeof it=="string"){return _3(it);}if(_f=="function"||_f=="undefined"){return _a;}if(typeof it.toJSON=="function"){return _b(it.toJSON(_d),_c,_d);}if(it instanceof Date){return "\"{FullYear}-{Month+}-{Date}T{Hours}:{Minutes}:{Seconds}Z\"".replace(/\{(\w+)(\+)?\}/g,function(t,_10,_11){var num=it["getUTC"+_10]()+(_11?1:0);return num<10?"0"+num:num;});}if(it.valueOf()!==it){return _b(it.valueOf(),_c,_d);}var _12=_9?(_c+_9):"";var sep=_9?" ":"";var _13=_9?"\n":"";if(it instanceof Array){var itl=it.length,res=[];for(_d=0;_d= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/keys",["./_base/kernel","./sniff"],function(_1,_2){return _1.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,META:_2("webkit")?91:224,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,HELP:47,LEFT_WINDOW:91,RIGHT_WINDOW:92,SELECT:93,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_MULTIPLY:106,NUMPAD_PLUS:107,NUMPAD_ENTER:108,NUMPAD_MINUS:109,NUMPAD_PERIOD:110,NUMPAD_DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,NUM_LOCK:144,SCROLL_LOCK:145,UP_DPAD:175,DOWN_DPAD:176,LEFT_DPAD:177,RIGHT_DPAD:178,copyKey:_2("mac")&&!_2("air")?(_2("safari")?91:224):17};}); \ No newline at end of file diff --git a/lib/dojo/loadInit.js b/lib/dojo/loadInit.js new file mode 100644 index 0000000000..ceb9162bab --- /dev/null +++ b/lib/dojo/loadInit.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/loadInit",["./_base/loader"],function(_1){return {dynamic:0,normalize:function(id){return id;},load:_1.loadInit};}); \ No newline at end of file diff --git a/lib/dojo/main.js b/lib/dojo/main.js new file mode 100644 index 0000000000..78def25c33 --- /dev/null +++ b/lib/dojo/main.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/main",["./_base/kernel","./has","require","./sniff","./_base/lang","./_base/array","./_base/config","./ready","./_base/declare","./_base/connect","./_base/Deferred","./_base/json","./_base/Color","./has!dojo-firebug?./_firebug/firebug","./_base/browser","./_base/loader"],function(_1,_2,_3,_4,_5,_6,_7,_8){if(_7.isDebug){_3(["./_firebug/firebug"]);}1||_2.add("dojo-config-require",1);if(1){var _9=_7.require;if(_9){_9=_6.map(_5.isArray(_9)?_9:[_9],function(_a){return _a.replace(/\./g,"/");});if(_1.isAsync){_3(_9);}else{_8(1,function(){_3(_9);});}}}return _1;}); \ No newline at end of file diff --git a/lib/dojo/mouse.js b/lib/dojo/mouse.js new file mode 100644 index 0000000000..0c37325b6f --- /dev/null +++ b/lib/dojo/mouse.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/mouse",["./_base/kernel","./on","./has","./dom","./_base/window"],function(_1,on,_2,_3,_4){_2.add("dom-quirks",_4.doc&&_4.doc.compatMode=="BackCompat");_2.add("events-mouseenter",_4.doc&&"onmouseenter" in _4.doc.createElement("div"));_2.add("events-mousewheel",_4.doc&&"onmousewheel" in _4.doc);var _5;if((_2("dom-quirks")&&_2("ie"))||!_2("dom-addeventlistener")){_5={LEFT:1,MIDDLE:4,RIGHT:2,isButton:function(e,_6){return e.button&_6;},isLeft:function(e){return e.button&1;},isMiddle:function(e){return e.button&4;},isRight:function(e){return e.button&2;}};}else{_5={LEFT:0,MIDDLE:1,RIGHT:2,isButton:function(e,_7){return e.button==_7;},isLeft:function(e){return e.button==0;},isMiddle:function(e){return e.button==1;},isRight:function(e){return e.button==2;}};}_1.mouseButtons=_5;function _8(_9,_a){var _b=function(_c,_d){return on(_c,_9,function(_e){if(_a){return _a(_e,_d);}if(!_3.isDescendant(_e.relatedTarget,_c)){return _d.call(this,_e);}});};_b.bubble=function(_f){return _8(_9,function(evt,_10){var _11=_f(evt.target);var _12=evt.relatedTarget;if(_11&&(_11!=(_12&&_12.nodeType==1&&_f(_12)))){return _10.call(_11,evt);}});};return _b;};var _13;if(_2("events-mousewheel")){_13="mousewheel";}else{_13=function(_14,_15){return on(_14,"DOMMouseScroll",function(evt){evt.wheelDelta=-evt.detail;_15.call(this,evt);});};}return {_eventHandler:_8,enter:_8("mouseover"),leave:_8("mouseout"),wheel:_13,isLeft:_5.isLeft,isMiddle:_5.isMiddle,isRight:_5.isRight};}); \ No newline at end of file diff --git a/lib/dojo/nls/ar/colors.js b/lib/dojo/nls/ar/colors.js new file mode 100644 index 0000000000..5557b08b84 --- /dev/null +++ b/lib/dojo/nls/ar/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/ar/colors",({aliceblue:"أزرق ÙØ§ØªØ­",antiquewhite:"أبيض عتيق",aqua:"أزرق مائي",aquamarine:"أزرق مائل للأخضر (زبرجد)",azure:"أزرق سماوي",beige:"بيج",bisque:"Ø£ØµÙØ± برتقالي الى رمادي Ù…ØµÙØ±",black:"أسود",blanchedalmond:"أخضر مائل للبياض",blue:"أزرق",blueviolet:"أزرق-Ø¨Ù†ÙØ³Ø¬ÙŠ",brown:"بني",burlywood:"خشبي",cadetblue:"أزرق ملون بالرمادي",chartreuse:"أخضر مائل Ù„Ù„ØµÙØ±Ø©",chocolate:"بني غامق",coral:"مرجاني",cornflowerblue:"أزرق عنبري",cornsilk:"حريري",crimson:"قرمزي",cyan:"أزرق سماوي",darkblue:"أزرق داكن",darkcyan:"أزرق سماوي داكن",darkgoldenrod:"Ø£ØµÙØ± ذهبي داكن",darkgray:"رمادي داكن",darkgreen:"أخضر داكن",darkgrey:"رمادي داكن",darkkhaki:"كاكي داكن",darkmagenta:"قرمزي داكن",darkolivegreen:"أخضر زيتوني داكن",darkorange:"برتقالي داكن",darkorchid:"أرجواني داكن",darkred:"أحمر داكن",darksalmon:"ÙØ¶ÙŠ Ø¯Ø§ÙƒÙ†",darkseagreen:"أخضر مائل للأزرق داكن",darkslateblue:"أزرق اردوازي داكن",darkslategray:"رمادي اردوازي داكن",darkslategrey:"رمادي اردوازي داكن",darkturquoise:"تركواز داكن",darkviolet:"Ø¨Ù†ÙØ³Ø¬ÙŠ Ø¯Ø§ÙƒÙ†",deeppink:"أحمر وردي غامق",deepskyblue:"أزرق سماوي غامق",dimgray:"رمادي شاحب",dimgrey:"رمادي شاحب",dodgerblue:"أزرق عنبري",firebrick:"Ø£ØµÙØ± زاهي",floralwhite:"أبيض زهري",forestgreen:"أخضر بلون أشجار الغابات",fuchsia:"Ùوشيا",gainsboro:"رمادي مائل للأزرق ÙØ§ØªØ­",ghostwhite:"أبيض Ø´ÙØ§Ù",gold:"ذهبي",goldenrod:"Ø£ØµÙØ± ذهبي",gray:"رمادي",green:"أخضر",greenyellow:"أخضر مائل Ù„Ù„Ø£ØµÙØ±",grey:"رمادي",honeydew:"أبيض مائل للأخضر",hotpink:"أحمر وردي زاهي",indianred:"أحمر هندي",indigo:"نيلي",ivory:"عاجي",khaki:"كاكي",lavender:"أرجواني شاحب",lavenderblush:"أحمر أرجواني",lawngreen:"أخضر بلون العشب",lemonchiffon:"Ø£ØµÙØ± Ø´ÙØ§Ù",lightblue:"أزرق ÙØ§ØªØ­",lightcoral:"مرجاني ÙØ§ØªØ­",lightcyan:"سماوي ÙØ§ØªØ­",lightgoldenrodyellow:"Ø£ØµÙØ± ذهبي ÙØ§ØªØ­",lightgray:"رمادي ÙØ§ØªØ­",lightgreen:"أخضر ÙØ§ØªØ­",lightgrey:"رمادي ÙØ§ØªØ­",lightpink:"وردي ÙØ§ØªØ­",lightsalmon:"ÙØ¶ÙŠ ÙØ§ØªØ­",lightseagreen:"أخضر مائل للأزرق ÙØ§ØªØ­",lightskyblue:"أزرق سماوي ÙØ§ØªØ­",lightslategray:"رمادي اردوازي ÙØ§ØªØ­",lightslategrey:"رمادي اردوازي ÙØ§ØªØ­",lightsteelblue:"أزرق معدني ÙØ§ØªØ­",lightyellow:"Ø£ØµÙØ± ÙØ§ØªØ­",lime:"ليموني",limegreen:"أخضر ليموني",linen:"كتاني",magenta:"أحمر قرمزي",maroon:"أحمر داكن",mediumaquamarine:"أزرق مائل للأخضر (زبرجد) متوسط",mediumblue:"أزرق متوسط",mediumorchid:"أرجواني متوسط",mediumpurple:"قرمزي متوسط",mediumseagreen:"أخضر مائل للأزرق متوسط",mediumslateblue:"أزرق اردوازي متوسط",mediumspringgreen:"أخضر ربيعي متوسط",mediumturquoise:"تركواز متوسط",mediumvioletred:"أحمر-Ø¨Ù†ÙØ³Ø¬ÙŠ Ù…ØªÙˆØ³Ø·",midnightblue:"أزرق بحري",mintcream:"Ø£ØµÙØ± شاحب مائل للأخضر الزرعي",mistyrose:"وردي",moccasin:"نحاسي أحمر",navajowhite:"أبيض ملاحي",navy:"أزرق داكن",oldlace:"برتقالي مائل Ù„Ù„Ø£ØµÙØ± شاحب",olive:"أخضر زيتوني داكن",olivedrab:"أسود ÙØ§ØªØ­",orange:"برتقالي",orangered:"أحمر مائل للبرتقالي",orchid:"أرجواني ÙØ§ØªØ­",palegoldenrod:"Ø£ØµÙØ± ذهبي شاحب",palegreen:"أخضر شاحب",paleturquoise:"تركواز شاحب",palevioletred:"أحمر-Ø¨Ù†ÙØ³Ø¬ÙŠ Ø´Ø§Ø­Ø¨",papayawhip:"خوخي ÙØ§ØªØ­",peachpuff:"خوخي مائل Ù„Ù„Ø£ØµÙØ±",peru:"بني جملي",pink:"وردي",plum:"أرجواني داكن",powderblue:"أزرق مائل Ù„Ù„Ø£ØµÙØ±",purple:"ارجواني",red:"أحمر",rosybrown:"بني وردي",royalblue:"أزرق ملكي",saddlebrown:"بني ÙØ§ØªØ­",salmon:"برتقالي وردي شاحب",sandybrown:"بني مائل Ù„Ù„ØµÙØ±Ø©",seagreen:"أخضر مائل للأزرق",seashell:"أبيض مائل Ù„Ù„Ø£ØµÙØ± ÙØ§ØªØ­",sienna:"بني محروق",silver:"ÙØ¶ÙŠ",skyblue:"أزرق سماوي",slateblue:"أزرق اردوازي",slategray:"رمادي اردوازي",slategrey:"رمادي اردوازي",snow:"أبيض ثلجي",springgreen:"أخضر ربيعي",steelblue:"أزرق معدني",tan:"خمري",teal:"بترولي",thistle:"ارجواني شاحب",tomato:"أحمر مائل Ù„Ù„Ø£ØµÙØ±",transparent:"Ø´ÙØ§Ù",turquoise:"تركواز",violet:"Ø¨Ù†ÙØ³Ø¬ÙŠ",wheat:"أخضر قمحي",white:"أبيض",whitesmoke:"دخان أبيض",yellow:"Ø£ØµÙØ±",yellowgreen:"أخضر مائل Ù„Ù„Ø£ØµÙØ±"})); \ No newline at end of file diff --git a/lib/dojo/nls/az/colors.js b/lib/dojo/nls/az/colors.js new file mode 100644 index 0000000000..c08ba73120 --- /dev/null +++ b/lib/dojo/nls/az/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/az/colors",({"lightsteelblue":"açıq metal mavi","orangered":"narıncı qırmızı","midnightblue":"gecÉ™ mavisi","cadetblue":"dÉ™niz mavisi","seashell":"dÉ™niz sÉ™thi","slategrey":"boz ÅŸifer rÉ™ngi","coral":"mÉ™rcan","darkturquoise":"tünd firuzÉ™yi","antiquewhite":"antik aÄŸ","mediumspringgreen":"orta bahar yaşılı","salmon":"somon","darkgrey":"tünd boz","ivory":"fil diÅŸi","greenyellow":"yaşıl-sarı","mistyrose":"gül qurusu","lightsalmon":"açıq somon","silver":"gümüşü","dimgrey":"açıq boz","orange":"narıncı","white":"aÄŸ","navajowhite":"navajo ağı","royalblue":"parlaq tünd mavi","deeppink":"tünd çəhrayı","lime":"lomon yaşılı","oldlace":"köhnÉ™ krujeva","chartreuse":"chartreuse","darkcyan":"tünd firuzÉ™yi","yellow":"sarı","linen":"kÉ™tan","olive":"zeytun","gold":"qızıl","lawngreen":"çəmÉ™n yaşılı","lightyellow":"açıq sarı","tan":"günəş yanığı","darkviolet":"tünd bÉ™növÅŸÉ™yi","lightslategrey":"tünd ÅŸifer bozu","grey":"boz","darkkhaki":"tünd haki","green":"yaşıl","deepskyblue":"tünd sÉ™ma mavisi","aqua":"dÉ™niz mavisi","sienna":"tünd qÉ™hvÉ™yi","mintcream":"nanÉ™li krem","rosybrown":"çəhrayımsı qÉ™hvÉ™yi","mediumslateblue":"orta şıfer bozu","magenta":"magenta","lightseagreen":"açıq dÉ™niz yaşılı","cyan":"firuzÉ™yi","olivedrab":"É™sgÉ™r yaşılı","darkgoldenrod":"tünd sarı","slateblue":"ÅŸifer mavisi","mediumaquamarine":"orta akvamarin","lavender":"lavanta","mediumseagreen":"orta dÉ™niz yaşılı","maroon":"tünd qırmızı","darkslategray":"tünd ÅŸifer bozu","mediumturquoise":"orta firuzÉ™yi","ghostwhite":"ala","darkblue":"tünd mavi","mediumvioletred":"orta bÉ™növÅŸÉ™yi-qırmızı","brown":"qÉ™hvÉ™yi","lightgray":"açıq boz","sandybrown":"qum rÉ™ngi","pink":"çəhrayı","firebrick":"yanmış kÉ™rpic rÉ™ngi","indigo":"indigo","snow":"qar","darkorchid":"tünd orkide","turquoise":"firuzÉ™yi","chocolate":"ÅŸokolad","springgreen":"bahar yaşılı","moccasin":"mokosen","navy":"tünd göy","lemonchiffon":"limon rÉ™ngi","teal":"teal mavi","floralwhite":"çiçək ağı","cornflowerblue":"peyÄŸÉ™mbÉ™r çiçək mavisi","paleturquoise":"solÄŸun firuzÉ™yi","purple":"tünd qırmızı","gainsboro":"gainsboro","plum":"gavalı","red":"qırmızı","blue":"göy","forestgreen":"tünd dÉ™niz yaşılı","darkgreen":"tünd yaşıl","honeydew":"bal saqqızı","darkseagreen":"tünd dÉ™niz yaşılı","lightcoral":"açıq mÉ™rcan","palevioletred":"solÄŸun bÉ™növÅŸÉ™yi-qırmızı","mediumpurple":"orta tünd qırmızı","saddlebrown":"açıq qÉ™hvÉ™yi","darkmagenta":"tünd magenta","thistle":"dÉ™vÉ™ tikanı","whitesmoke":"aÄŸ duman","wheat":"buÄŸdayı","violet":"bÉ™növÅŸÉ™yi","lightskyblue":"açıq sÉ™ma mavisi","goldenrod":"sapsarı","mediumblue":"orta göy","skyblue":"göy mavisi","crimson":"crimson","darksalmon":"tünd somon","darkred":"tünd qırmızı","darkslategrey":"tünd ÅŸifer bozu","peru":"peru","lightgrey":"açıq boz","lightgoldenrodyellow":"açıq qızılı","blanchedalmond":"solÄŸun badamı","aliceblue":"alice mavisi","bisque":"biskvit","slategray":"ÅŸifer bozu","palegoldenrod":"açıq qızılı","darkorange":"tünd narıncı","aquamarine":"akvamarin","lightgreen":"açıq yaşıl","burlywood":"sarımsı qÉ™hvÉ™ rÉ™ngi","dodgerblue":"toz mavisi","darkgray":"tünd boz","lightcyan":"açıq firuzÉ™yi","powderblue":"pudra mavisi","blueviolet":"mavi-bÉ™növÅŸÉ™yi","orchid":"orkide","dimgray":"solÄŸun boz","beige":"bej","fuchsia":"fuÅŸya","lavenderblush":"lavanta tünd qırmızısı","hotpink":"tünd çəhrayı","steelblue":"metal mavisi","tomato":"pomidor","lightpink":"açıq çəhrayı","limegreen":"É™hÉ™ng yaşılı","indianred":"qızıldÉ™rili qırmızısı","papayawhip":"papaya qamçısı","lightslategray":"açıq ÅŸifer bozu","gray":"boz","mediumorchid":"orta orkide","cornsilk":"qarğıdalı rÉ™ngi","black":"qara","seagreen":"dÉ™niz yaşılı","darkslateblue":"tünd ÅŸifer bozu","khaki":"haki","lightblue":"açıq mavi","palegreen":"solÄŸun yaşıl","azure":"azur mavisi","peachpuff":"açıq ÅŸaftalı","darkolivegreen":"tünd zeytun yaşılı","yellowgreen":"sarı-yaşıl"})); \ No newline at end of file diff --git a/lib/dojo/nls/ca/colors.js b/lib/dojo/nls/ca/colors.js new file mode 100644 index 0000000000..414a3c1a7a --- /dev/null +++ b/lib/dojo/nls/ca/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/ca/colors",({aliceblue:"blau cian clar",antiquewhite:"blanc antic",aqua:"aigua",aquamarine:"aiguamarina",azure:"atzur",beige:"beix",bisque:"crema",black:"negre",blanchedalmond:"ametlla pàl·lid",blue:"blau",blueviolet:"blau violeta",brown:"marró",burlywood:"marró arenós",cadetblue:"blau marí",chartreuse:"Llimona pàl·lid",chocolate:"xocolata",coral:"corall",cornflowerblue:"blau blauet",cornsilk:"cru",crimson:"carmesí",cyan:"cian",darkblue:"blau fosc",darkcyan:"cian fosc",darkgoldenrod:"ocre fosc",darkgray:"gris fosc",darkgreen:"verd fosc",darkgrey:"gris fosc",darkkhaki:"caqui fosc",darkmagenta:"magenta fosc",darkolivegreen:"verd oliva fosc",darkorange:"taronja fosc",darkorchid:"orquídia fosc",darkred:"vermell fosc",darksalmon:"salmó fosc",darkseagreen:"verd marí fosc",darkslateblue:"blau pissarra fosc",darkslategray:"gris pissarra fosc",darkslategrey:"gris pissarra fosc",darkturquoise:"turquesa fosc",darkviolet:"violeta fosc",deeppink:"rosa profund",deepskyblue:"blau cel profund",dimgray:"gris fosc",dimgrey:"gris fosc",dodgerblue:"blau Dodger",firebrick:"maó refractari",floralwhite:"blanc floral",forestgreen:"verd bosc",fuchsia:"fúcsia",gainsboro:"gainsboro",ghostwhite:"blanc fantasma",gold:"daurat",goldenrod:"ocre",gray:"gris",green:"verd",greenyellow:"verd grogós",grey:"gris",honeydew:"rosada de mel",hotpink:"rosa fúcsia",indianred:"vermell indi",indigo:"índigo",ivory:"marbre",khaki:"caqui",lavender:"lavanda",lavenderblush:"lavanda vermellosa",lawngreen:"verd gespa",lemonchiffon:"groc brisa",lightblue:"blau clar",lightcoral:"corall clar",lightcyan:"cian clar",lightgoldenrodyellow:"groc ocre clar",lightgray:"gris clar",lightgreen:"verd clar",lightgrey:"gris clar",lightpink:"rosa clar",lightsalmon:"salmó clar",lightseagreen:"verd marí clar",lightskyblue:"blau cel clar",lightslategray:"gris pissarra clar",lightslategrey:"gris pissarra clar",lightsteelblue:"blau acer clar",lightyellow:"groc clar",lime:"verd llimona",limegreen:"verd llimona verda",linen:"lli",magenta:"magenta",maroon:"marró vermellós",mediumaquamarine:"aiguamarina mitjana",mediumblue:"blau mitjà",mediumorchid:"orquídia mitjana",mediumpurple:"porpra mitjana",mediumseagreen:"verd marí mitjà",mediumslateblue:"blau pissarra mitjà",mediumspringgreen:"verd primavera mitjà",mediumturquoise:"turquesa mitjana",mediumvioletred:"vermell violeta mitjà",midnightblue:"blau mitjanit",mintcream:"menta pàl·lid",mistyrose:"rosa dens",moccasin:"mocassí",navajowhite:"blanc Navajo",navy:"blau marí",oldlace:"rosa cremós",olive:"oliva",olivedrab:"gris oliva",orange:"taronja",orangered:"taronja vermellós",orchid:"orquídia",palegoldenrod:"ocre pàl·lid",palegreen:"verd pàl·lid",paleturquoise:"turquesa pàl·lid",palevioletred:"vermell porpra pàl·lid",papayawhip:"préssec pastel",peachpuff:"préssec",peru:"Perú",pink:"rosa",plum:"pruna",powderblue:"blau grisós",purple:"porpra",red:"vermell",rosybrown:"marró rosat",royalblue:"blau marí intens",saddlebrown:"marró mitjà",salmon:"salmó",sandybrown:"marró arenós",seagreen:"verd marí",seashell:"petxina marina",sienna:"siena",silver:"argent",skyblue:"blau cel",slateblue:"blau pissarra",slategray:"gris pissarra",slategrey:"gris pissarra",snow:"neu",springgreen:"verd de primavera",steelblue:"blau acer",tan:"tan",teal:"verd blavós",thistle:"card",tomato:"tomàquet",transparent:"transparent",turquoise:"turquesa",violet:"violeta",wheat:"blat",white:"blanc",whitesmoke:"blanc fumat",yellow:"groc",yellowgreen:"verd grogós"})); \ No newline at end of file diff --git a/lib/dojo/nls/colors.js b/lib/dojo/nls/colors.js new file mode 100644 index 0000000000..85410e04dc --- /dev/null +++ b/lib/dojo/nls/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/colors",{root:({aliceblue:"alice blue",antiquewhite:"antique white",aqua:"aqua",aquamarine:"aquamarine",azure:"azure",beige:"beige",bisque:"bisque",black:"black",blanchedalmond:"blanched almond",blue:"blue",blueviolet:"blue-violet",brown:"brown",burlywood:"burlywood",cadetblue:"cadet blue",chartreuse:"chartreuse",chocolate:"chocolate",coral:"coral",cornflowerblue:"cornflower blue",cornsilk:"cornsilk",crimson:"crimson",cyan:"cyan",darkblue:"dark blue",darkcyan:"dark cyan",darkgoldenrod:"dark goldenrod",darkgray:"dark gray",darkgreen:"dark green",darkgrey:"dark gray",darkkhaki:"dark khaki",darkmagenta:"dark magenta",darkolivegreen:"dark olive green",darkorange:"dark orange",darkorchid:"dark orchid",darkred:"dark red",darksalmon:"dark salmon",darkseagreen:"dark sea green",darkslateblue:"dark slate blue",darkslategray:"dark slate gray",darkslategrey:"dark slate gray",darkturquoise:"dark turquoise",darkviolet:"dark violet",deeppink:"deep pink",deepskyblue:"deep sky blue",dimgray:"dim gray",dimgrey:"dim gray",dodgerblue:"dodger blue",firebrick:"fire brick",floralwhite:"floral white",forestgreen:"forest green",fuchsia:"fuchsia",gainsboro:"gainsboro",ghostwhite:"ghost white",gold:"gold",goldenrod:"goldenrod",gray:"gray",green:"green",greenyellow:"green-yellow",grey:"gray",honeydew:"honeydew",hotpink:"hot pink",indianred:"indian red",indigo:"indigo",ivory:"ivory",khaki:"khaki",lavender:"lavender",lavenderblush:"lavender blush",lawngreen:"lawn green",lemonchiffon:"lemon chiffon",lightblue:"light blue",lightcoral:"light coral",lightcyan:"light cyan",lightgoldenrodyellow:"light goldenrod yellow",lightgray:"light gray",lightgreen:"light green",lightgrey:"light gray",lightpink:"light pink",lightsalmon:"light salmon",lightseagreen:"light sea green",lightskyblue:"light sky blue",lightslategray:"light slate gray",lightslategrey:"light slate gray",lightsteelblue:"light steel blue",lightyellow:"light yellow",lime:"lime",limegreen:"lime green",linen:"linen",magenta:"magenta",maroon:"maroon",mediumaquamarine:"medium aquamarine",mediumblue:"medium blue",mediumorchid:"medium orchid",mediumpurple:"medium purple",mediumseagreen:"medium sea green",mediumslateblue:"medium slate blue",mediumspringgreen:"medium spring green",mediumturquoise:"medium turquoise",mediumvioletred:"medium violet-red",midnightblue:"midnight blue",mintcream:"mint cream",mistyrose:"misty rose",moccasin:"moccasin",navajowhite:"navajo white",navy:"navy",oldlace:"old lace",olive:"olive",olivedrab:"olive drab",orange:"orange",orangered:"orange red",orchid:"orchid",palegoldenrod:"pale goldenrod",palegreen:"pale green",paleturquoise:"pale turquoise",palevioletred:"pale violet-red",papayawhip:"papaya whip",peachpuff:"peach puff",peru:"peru",pink:"pink",plum:"plum",powderblue:"powder blue",purple:"purple",red:"red",rosybrown:"rosy brown",royalblue:"royal blue",saddlebrown:"saddle brown",salmon:"salmon",sandybrown:"sandy brown",seagreen:"sea green",seashell:"seashell",sienna:"sienna",silver:"silver",skyblue:"sky blue",slateblue:"slate blue",slategray:"slate gray",slategrey:"slate gray",snow:"snow",springgreen:"spring green",steelblue:"steel blue",tan:"tan",teal:"teal",thistle:"thistle",tomato:"tomato",transparent:"transparent",turquoise:"turquoise",violet:"violet",wheat:"wheat",white:"white",whitesmoke:"white smoke",yellow:"yellow",yellowgreen:"yellow green"}),"zh":true,"zh-tw":true,"tr":true,"th":true,"sv":true,"sl":true,"sk":true,"ru":true,"ro":true,"pt":true,"pt-pt":true,"pl":true,"nl":true,"nb":true,"ko":true,"kk":true,"ja":true,"it":true,"hu":true,"hr":true,"he":true,"fr":true,"fi":true,"es":true,"el":true,"de":true,"da":true,"cs":true,"ca":true,"az":true,"ar":true}); \ No newline at end of file diff --git a/lib/dojo/nls/cs/colors.js b/lib/dojo/nls/cs/colors.js new file mode 100644 index 0000000000..c874c8797b --- /dev/null +++ b/lib/dojo/nls/cs/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/cs/colors",({aliceblue:"modravá",antiquewhite:"krémovÄ› bílá",aqua:"azurová",aquamarine:"akvamarínová",azure:"bledÄ› azurová",beige:"bledÄ› béžová",bisque:"bledÄ› oranžová",black:"Äerná",blanchedalmond:"mandlová",blue:"modrá",blueviolet:"modrofialová",brown:"ÄervenohnÄ›dá",burlywood:"krémová",cadetblue:"Å¡edomodrá",chartreuse:"chartreuska",chocolate:"hnÄ›dobéžová",coral:"korálová Äervená",cornflowerblue:"chrpovÄ› modrá",cornsilk:"režná",crimson:"karmínová",cyan:"azurová",darkblue:"tmavÄ› modrá",darkcyan:"tmavÄ› azurová",darkgoldenrod:"tmavÄ› béžová",darkgray:"tmavÄ› Å¡edá",darkgreen:"tmavÄ› zelená",darkgrey:"tmavÄ› Å¡edá",darkkhaki:"pískovÄ› hnÄ›dá",darkmagenta:"tmavÄ› purpurová",darkolivegreen:"tmavÄ› olivová",darkorange:"tmavÄ› oranžová",darkorchid:"tmavÄ› orchidejová",darkred:"tmavÄ› Äervená",darksalmon:"tmavÄ› lososová",darkseagreen:"tmavá moÅ™ská zelená",darkslateblue:"tmavá bÅ™idlicová modrá",darkslategray:"tmavá bÅ™idlicová Å¡edá",darkslategrey:"tmavá bÅ™idlicová Å¡edá",darkturquoise:"tmavÄ› tyrkysová",darkviolet:"tmavÄ› fialová",deeppink:"sytÄ› růžová",deepskyblue:"sytá nebeská modrá",dimgray:"kouÅ™ovÄ› Å¡edá",dimgrey:"kouÅ™ovÄ› Å¡edá",dodgerblue:"jasnÄ› modrá",firebrick:"cihlová",floralwhite:"kvÄ›tinovÄ› bílá",forestgreen:"lesní zelená",fuchsia:"fuchsiová",gainsboro:"bledÄ› Å¡edá",ghostwhite:"modravÄ› bílá",gold:"zlatá",goldenrod:"béžová",gray:"Å¡edá",green:"zelená",greenyellow:"zelenožlutá",grey:"Å¡edá",honeydew:"nazelenalá",hotpink:"jasnÄ› růžová",indianred:"indiánská Äervená",indigo:"indigovÄ› modrá",ivory:"slonovinová",khaki:"písková",lavender:"levandulová",lavenderblush:"levandulová růžová",lawngreen:"jasnÄ› zelená",lemonchiffon:"svÄ›tle citrónová",lightblue:"svÄ›tle modrá",lightcoral:"svÄ›tle korálová",lightcyan:"svÄ›tle azurová",lightgoldenrodyellow:"svÄ›tle žlutá",lightgray:"svÄ›tle Å¡edá",lightgreen:"svÄ›tle zelená",lightgrey:"svÄ›tle Å¡edá",lightpink:"svÄ›tle růžová",lightsalmon:"svÄ›tle lososová",lightseagreen:"svÄ›tlá moÅ™ská zelená",lightskyblue:"svÄ›tlá nebeská modrá",lightslategray:"svÄ›tlá bÅ™idlicová Å¡edá",lightslategrey:"svÄ›tlá bÅ™idlicová Å¡edá",lightsteelblue:"svÄ›tlá ocelová modrá",lightyellow:"bledÄ› žlutá",lime:"limetková",limegreen:"limetkovÄ› zelená",linen:"bledÄ› Å¡edobéžová",magenta:"purpurová",maroon:"kaÅ¡tanová",mediumaquamarine:"stÅ™ední akvamarínová",mediumblue:"stÅ™ednÄ› modrá",mediumorchid:"stÅ™ednÄ› orchidejová",mediumpurple:"stÅ™ednÄ› nachová",mediumseagreen:"stÅ™ední moÅ™ská zelená",mediumslateblue:"stÅ™ední bÅ™idlicová modrá",mediumspringgreen:"stÅ™ední jarní zelená",mediumturquoise:"stÅ™ednÄ› tyrkysová",mediumvioletred:"stÅ™ednÄ› fialovoÄervená",midnightblue:"temnÄ› modrá",mintcream:"mentolová",mistyrose:"růžovobílá",moccasin:"bledÄ› krémová",navajowhite:"svÄ›tle krémová",navy:"námoÅ™nická modrá",oldlace:"svÄ›tle béžová",olive:"olivová",olivedrab:"khaki",orange:"oranžová",orangered:"oranžovoÄervená",orchid:"orchidejová",palegoldenrod:"bledÄ› písková",palegreen:"bledÄ› zelená",paleturquoise:"bledÄ› tyrkysová",palevioletred:"bledÄ› fialovoÄervená",papayawhip:"papájová",peachpuff:"broskvová",peru:"karamelová",pink:"růžová",plum:"Å¡vestková",powderblue:"bledÄ› modrá",purple:"nachová",red:"Äervená",rosybrown:"růžovohnÄ›dá",royalblue:"královská modrá",saddlebrown:"hnÄ›dá",salmon:"lososová",sandybrown:"oranžovohnÄ›dá",seagreen:"moÅ™ská zelená",seashell:"lasturová",sienna:"siena",silver:"stříbrná",skyblue:"nebeská modrá",slateblue:"bÅ™idlicová modrá",slategray:"bÅ™idlicová Å¡edá",slategrey:"bÅ™idlicová Å¡edá",snow:"snÄ›hobílá",springgreen:"jarní zelená",steelblue:"ocelová modrá",tan:"Å¡edobéžová",teal:"Å¡edozelená",thistle:"bodláková",tomato:"tomatová",transparent:"průhledná",turquoise:"tyrkysová",violet:"fialová",wheat:"zlatohnÄ›dá",white:"bílá",whitesmoke:"kouÅ™ovÄ› bílá",yellow:"žlutá",yellowgreen:"žlutozelená"})); \ No newline at end of file diff --git a/lib/dojo/nls/da/colors.js b/lib/dojo/nls/da/colors.js new file mode 100644 index 0000000000..ccab17efd5 --- /dev/null +++ b/lib/dojo/nls/da/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/da/colors",({aliceblue:"babyblÃ¥",antiquewhite:"antikhvid",aqua:"akvablÃ¥",aquamarine:"akvamarin",azure:"azurblÃ¥",beige:"beige",bisque:"gulgrÃ¥",black:"sort",blanchedalmond:"blanceret mandel",blue:"blÃ¥",blueviolet:"blÃ¥violet",brown:"brun",burlywood:"tobak",cadetblue:"kadetblÃ¥",chartreuse:"chartreuse",chocolate:"rust",coral:"koralrød",cornflowerblue:"kornblomstblÃ¥",cornsilk:"majs",crimson:"blodrød",cyan:"cyan",darkblue:"mørkeblÃ¥",darkcyan:"mørk cyan",darkgoldenrod:"mørk gyldenris",darkgray:"mørkegrÃ¥",darkgreen:"mørkegrøn",darkgrey:"mørkegrÃ¥",darkkhaki:"mørk khaki",darkmagenta:"mørk magenta",darkolivegreen:"mørk olivengrøn",darkorange:"mørk orange",darkorchid:"mørk orkide",darkred:"mørkerød",darksalmon:"mørk laksefarvet",darkseagreen:"mørk havgrøn",darkslateblue:"mørk skiferblÃ¥",darkslategray:"mørk skifergrÃ¥",darkslategrey:"mørk skifergrÃ¥",darkturquoise:"mørk turkis",darkviolet:"mørkelilla",deeppink:"dyb pink",deepskyblue:"dyb himmelblÃ¥",dimgray:"svag grÃ¥",dimgrey:"svag grÃ¥",dodgerblue:"dodgerblÃ¥",firebrick:"chamottesten",floralwhite:"blomsterhvid",forestgreen:"skovgrøn",fuchsia:"lyslilla",gainsboro:"gainsboro",ghostwhite:"spøgelseshvid",gold:"guld",goldenrod:"gyldenris",gray:"grÃ¥",green:"grøn",greenyellow:"grøngul",grey:"grÃ¥",honeydew:"honningdug",hotpink:"mørk rosa",indianred:"lys rødbrun",indigo:"indigo",ivory:"elfenben",khaki:"khaki",lavender:"lysviolet",lavenderblush:"lavendelrød",lawngreen:"græsgrøn",lemonchiffon:"citronfromage",lightblue:"lyseblÃ¥",lightcoral:"lys koralrød",lightcyan:"lys cyan",lightgoldenrodyellow:"lys gyldenrisgul",lightgray:"lysegrÃ¥",lightgreen:"lysegrøn",lightgrey:"lysegrÃ¥",lightpink:"lys pink",lightsalmon:"lys laksefarvet",lightseagreen:"lys havgrøn",lightskyblue:"lys himmelblÃ¥",lightslategray:"lys skifergrÃ¥",lightslategrey:"lys skifergrÃ¥",lightsteelblue:"lys stÃ¥lblÃ¥",lightyellow:"lysegul",lime:"lime",limegreen:"limegrøn",linen:"lærred",magenta:"magenta",maroon:"rødbrun",mediumaquamarine:"mellem akvamarin",mediumblue:"mellemblÃ¥",mediumorchid:"mellem orkide",mediumpurple:"mellemlilla",mediumseagreen:"mellemhavgrøn",mediumslateblue:"mellemskiferblÃ¥",mediumspringgreen:"mellemforÃ¥rsgrøn",mediumturquoise:"mellemturkis",mediumvioletred:"mellemviolet",midnightblue:"midnatsblÃ¥",mintcream:"pebermyntecreme",mistyrose:"blegrosa",moccasin:"fruesko",navajowhite:"navajo-hvid",navy:"marineblÃ¥",oldlace:"kniplingshvid",olive:"olivengrøn",olivedrab:"brungrøn",orange:"orange",orangered:"orangerød",orchid:"orkide",palegoldenrod:"bleg gyldenris",palegreen:"bleggrøn",paleturquoise:"bleg turkis",palevioletred:"blegviolet",papayawhip:"papaya",peachpuff:"fersken",peru:"peru",pink:"pink",plum:"blomme",powderblue:"pudderblÃ¥",purple:"lilla",red:"rød",rosybrown:"rosabrun",royalblue:"kongeblÃ¥",saddlebrown:"saddelbrun",salmon:"laksefarvet",sandybrown:"sandbrun",seagreen:"havgrøn",seashell:"muslingeskal",sienna:"sienna",silver:"sølv",skyblue:"himmelblÃ¥",slateblue:"skiferblÃ¥",slategray:"skifergrÃ¥",slategrey:"skifergrÃ¥",snow:"sne",springgreen:"forÃ¥rsgrøn",steelblue:"metalblÃ¥",tan:"tan",teal:"blÃ¥grøn",thistle:"tidsel",tomato:"tomat",transparent:"transparent",turquoise:"turkis",violet:"lilla",wheat:"korngul",white:"hvid",whitesmoke:"hvid røg",yellow:"gul",yellowgreen:"gulgrøn"})); \ No newline at end of file diff --git a/lib/dojo/nls/de/colors.js b/lib/dojo/nls/de/colors.js new file mode 100644 index 0000000000..e22aaf4474 --- /dev/null +++ b/lib/dojo/nls/de/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/de/colors",({aliceblue:"Alice-blau",antiquewhite:"Antikweiß",aqua:"Wasserblau",aquamarine:"Aquamarin",azure:"Azur",beige:"Beige",bisque:"Bisquit",black:"Schwarz",blanchedalmond:"Mandelweiß",blue:"Blau",blueviolet:"Blauviolett",brown:"Braun",burlywood:"Burlywood",cadetblue:"Kadettenblau",chartreuse:"Helles Gelbgrün",chocolate:"Schokoladenbraun",coral:"Koralle",cornflowerblue:"Kornblumenblau",cornsilk:"Kornseide",crimson:"Karmesinrot",cyan:"Zyan",darkblue:"Dunkelblau",darkcyan:"Dunkelzyan",darkgoldenrod:"Dunkelgoldgelb",darkgray:"Dunkelgrau",darkgreen:"Dunkelgrün",darkgrey:"Dunkelgrau",darkkhaki:"Dunkelkhaki",darkmagenta:"Dunkelmagenta",darkolivegreen:"Dunkelolivgrün",darkorange:"Dunkelorange",darkorchid:"Dunkelorchidee",darkred:"Dunkelrot",darksalmon:"Dunkellachs",darkseagreen:"Dunkles Meergrün",darkslateblue:"Dunkelschieferblau",darkslategray:"Dunkelschiefergrau",darkslategrey:"Dunkelschiefergrau",darkturquoise:"Dunkeltürkis",darkviolet:"Dunkelviolett",deeppink:"Tiefrosa",deepskyblue:"Dunkles Himmelblau",dimgray:"Blassgrau",dimgrey:"Blassgrau",dodgerblue:"Dodger-blau",firebrick:"Schamottestein",floralwhite:"Blütenweiß",forestgreen:"Forstgrün",fuchsia:"Fuchsia",gainsboro:"Gainsboro",ghostwhite:"Geisterweiß",gold:"Gold",goldenrod:"Goldgelb",gray:"Grau",green:"Grün",greenyellow:"Grüngelb",grey:"Grau",honeydew:"Honigtau",hotpink:"Knallrosa",indianred:"Indischrot",indigo:"Indigoblau",ivory:"Elfenbein",khaki:"Khaki",lavender:"Lavendelblau",lavenderblush:"Lavendelhauch",lawngreen:"Grasgrün",lemonchiffon:"Zitronenchiffon",lightblue:"Hellblau",lightcoral:"Hellkoralle",lightcyan:"Hellzyan",lightgoldenrodyellow:"Hellgoldgelb",lightgray:"Hellgrau",lightgreen:"Hellgrün",lightgrey:"Hellgrau",lightpink:"Hellrosa",lightsalmon:"Helllachs",lightseagreen:"Helles Meergrün",lightskyblue:"Helles Himmelblau",lightslategray:"Helles Schiefergrau",lightslategrey:"Helles Schiefergrau",lightsteelblue:"Helles Stahlblau",lightyellow:"Hellgelb",lime:"Limone",limegreen:"Limonengrün",linen:"Leinen",magenta:"Magenta",maroon:"Kastanienbraun",mediumaquamarine:"Mittelaquamarin",mediumblue:"Mittelblau",mediumorchid:"Mittelorchidee",mediumpurple:"Mittelpurpur",mediumseagreen:"Mittelmeeresgrün",mediumslateblue:"Mittelschieferblau ",mediumspringgreen:"Mittelfrühlingsgrün",mediumturquoise:"Mitteltürkis ",mediumvioletred:"Mittelviolettrot ",midnightblue:"Mitternachtblau",mintcream:"Mintcreme",mistyrose:"Blassrose",moccasin:"Mokassin",navajowhite:"Navajo-weiß",navy:"Marineblau",oldlace:"Alte Spitze",olive:"Oliv",olivedrab:"Olivgrau",orange:"Orange",orangered:"Orangerot",orchid:"Orchidee",palegoldenrod:"Blassgoldgelb",palegreen:"Blassgrün",paleturquoise:"Blasstürkis",palevioletred:"Blassviolettrot ",papayawhip:"Papayacreme",peachpuff:"Pfirsich",peru:"Peru",pink:"Rosa",plum:"Pflaume",powderblue:"Pulverblau",purple:"Purpurrot",red:"Rot",rosybrown:"Rosigbraun",royalblue:"Königsblau",saddlebrown:"Sattelbraun",salmon:"Lachs",sandybrown:"Sandbraun",seagreen:"Meeresgrün",seashell:"Muschelweiß",sienna:"Sienna",silver:"Silbergrau",skyblue:"Himmelblau",slateblue:"Schieferblau",slategray:"Schiefergrau",slategrey:"Schiefergrau",snow:"Schneeweiß",springgreen:"Frühlingsgrün",steelblue:"Stahlblau",tan:"Hautfarben",teal:"Smaragdgrün",thistle:"Distel",tomato:"Tomatenrot",transparent:"Transparent",turquoise:"Türkis",violet:"Violett",wheat:"Weizen",white:"Weiß",whitesmoke:"Rauchweiß",yellow:"Gelb",yellowgreen:"Gelbgrün"})); \ No newline at end of file diff --git a/lib/dojo/nls/el/colors.js b/lib/dojo/nls/el/colors.js new file mode 100644 index 0000000000..e3acf13ffc --- /dev/null +++ b/lib/dojo/nls/el/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/el/colors",({aliceblue:"σιέλ",antiquewhite:"ξεθωÏιασμένο λευκό",aqua:"γαλάζιο",aquamarine:"γαλαζοπÏάσινο",azure:"μπλε του ουÏανοÏ",beige:"μπεζ",bisque:"σκοÏÏο κÏεμ",black:"μαÏÏο",blanchedalmond:"ζαχαÏί",blue:"μπλε",blueviolet:"βιολετί",brown:"καφέ",burlywood:"καφέ του ξÏλου",cadetblue:"μπλε του στÏατοÏ",chartreuse:"φωτεινό κιτÏινοπÏάσινο",chocolate:"σοκολατί",coral:"κοÏαλί",cornflowerblue:"μεσαίο μπλε",cornsilk:"ασημί του καλαμποκιοÏ",crimson:"Î²Î±Î¸Ï ÎºÏŒÎºÎºÎ¹Î½Î¿",cyan:"κυανό",darkblue:"σκοÏÏο μπλε",darkcyan:"σκοÏÏο κυανό",darkgoldenrod:"σκοÏÏο χÏυσοκίτÏινο",darkgray:"σκοÏÏο γκÏι",darkgreen:"σκοÏÏο Ï€Ïάσινο",darkgrey:"σκοÏÏο γκÏι",darkkhaki:"σκοÏÏο χακί",darkmagenta:"σκοÏÏο ματζέντα",darkolivegreen:"σκοÏÏο Ï€Ïάσινο λαδί",darkorange:"σκοÏÏο ποÏτοκαλί",darkorchid:"σκοÏÏα οÏχιδέα",darkred:"σκοÏÏο κόκκινο",darksalmon:"σκοÏÏο σομόν",darkseagreen:"σκοÏÏο Ï€Ïάσινο της θάλασσας",darkslateblue:"σκοÏÏο μεταλλικό μπλε",darkslategray:"σκοÏÏο μεταλλικό γκÏι",darkslategrey:"σκοÏÏο μεταλλικό γκÏι",darkturquoise:"σκοÏÏο τυÏκουάζ",darkviolet:"σκοÏÏο βιολετί",deeppink:"Î²Î±Î¸Ï Ïοζ",deepskyblue:"Î²Î±Î¸Ï Î¼Ï€Î»Îµ το ουÏανοÏ",dimgray:"αχνό γκÏι",dimgrey:"αχνό γκÏι",dodgerblue:"σκοÏÏο ελεκτÏίκ",firebrick:"κεÏαμιδί",floralwhite:"λευκό των ανθών",forestgreen:"Ï€Ïάσινο του δάσους",fuchsia:"φοÏξια",gainsboro:"γκÏι σιέλ",ghostwhite:"άσπÏο",gold:"χÏυσαφί",goldenrod:"χÏυσοκίτÏινο",gray:"γκÏι",green:"Ï€Ïάσινο",greenyellow:"Ï€ÏασινοκίτÏινο",grey:"γκÏι",honeydew:"μελί",hotpink:"έντονο Ïοζ",indianred:"ινδικό κόκκινο",indigo:"λουλακί",ivory:"ιβουάÏ",khaki:"χακί",lavender:"λίλα",lavenderblush:"μωβ λεβάντας",lawngreen:"σκοÏÏο Ï€Ïάσινο",lemonchiffon:"λεμονί",lightblue:"ανοιχτό μπλε",lightcoral:"ανοιχτό κοÏαλί",lightcyan:"ανοιχτό κυανό",lightgoldenrodyellow:"ανοιχτό χÏυσοκίτÏινο",lightgray:"ανοιχτό γκÏι",lightgreen:"ανοιχτό Ï€Ïάσινο",lightgrey:"ανοιχτό γκÏι",lightpink:"ανοιχτό Ïοζ",lightsalmon:"ανοιχτό σομόν",lightseagreen:"ανοιχτό Ï€Ïάσινο της θάλασσας",lightskyblue:"ανοιχτό μπλε το ουÏανοÏ",lightslategray:"ανοιχτό μεταλλικό γκÏι",lightslategrey:"ανοιχτό μεταλλικό γκÏι",lightsteelblue:"ανοιχτό μπλε ατσαλιοÏ",lightyellow:"ανοιχτό κίτÏινο",lime:"λαχανί",limegreen:"Ï€Ïάσινο λαχανί",linen:"σπαγγί",magenta:"ματζέντα",maroon:"βυσσινί",mediumaquamarine:"μεσαίο γαλαζοπÏάσινο",mediumblue:"μεσαίο μπλε",mediumorchid:"μεσαία οÏχιδέα",mediumpurple:"μεσαίο μωβ",mediumseagreen:"μεσαίο Ï€Ïάσινο της θάλασσας",mediumslateblue:"μεσαίο μεταλλικό μπλε",mediumspringgreen:"μεσαίο Ï€Ïάσινο της άνοιξης",mediumturquoise:"μεσαίο τυÏκουάζ",mediumvioletred:"μεσαίο κόκκινο βιολετί",midnightblue:"Ï€Î¿Î»Ï ÏƒÎºÎ¿ÏÏο μπλε",mintcream:"βεÏαμάν",mistyrose:"Ï„Ïιανταφυλλί",moccasin:"μόκα",navajowhite:"άσπÏο Îαβάχο",navy:"μπλε του ναυτικοÏ",oldlace:"εκÏοÏ",olive:"Ï€Ïάσινο λαδί",olivedrab:"λαδί",orange:"ποÏτοκαλί",orangered:"ποÏτοκαλοκόκκινο",orchid:"οÏχιδέα",palegoldenrod:"αχνό χÏυσοκίτÏινο",palegreen:"αχνό Ï€Ïάσινο",paleturquoise:"αχνό τυÏκουάζ",palevioletred:"αχνό κόκκινο βιολετί",papayawhip:"αχνό Ïοζ",peachpuff:"Ïοδακινί",peru:"πεÏοÏ",pink:"Ïοζ",plum:"δαμασκηνί",powderblue:"αχνό μπλε",purple:"μωβ",red:"κόκκινο",rosybrown:"καστανό",royalblue:"έντονο μπλε",saddlebrown:"Î²Î±Î¸Ï ÎºÎ±Ï†Î­",salmon:"σομόν",sandybrown:"μπεζ της άμμου",seagreen:"Ï€Ïάσινο της θάλασσας",seashell:"κοχÏλι",sienna:"καφεκίτÏινο",silver:"ασημί",skyblue:"μπλε του ουÏανοÏ",slateblue:"μεταλλικό μπλε",slategray:"μεταλλικό γκÏι",slategrey:"μεταλλικό γκÏι",snow:"χιονί",springgreen:"Ï€Ïάσινο της άνοιξης",steelblue:"μπλε ατσαλιοÏ",tan:"ώχÏα",teal:"πετÏόλ",thistle:"μωβ βιολετί",tomato:"κόκκινο της ντομάτας",transparent:"διαφανές",turquoise:"τυÏκουάζ",violet:"βιολετί",wheat:"σταÏένιο",white:"λευκό",whitesmoke:"λευκός καπνός",yellow:"κίτÏινο",yellowgreen:"κιτÏινοπÏάσινο"})); \ No newline at end of file diff --git a/lib/dojo/nls/es/colors.js b/lib/dojo/nls/es/colors.js new file mode 100644 index 0000000000..e1259c6df5 --- /dev/null +++ b/lib/dojo/nls/es/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/es/colors",({aliceblue:"blanco azulado",antiquewhite:"blanco antiguo",aqua:"aguamarina",aquamarine:"aguamarina 2",azure:"blanco cielo",beige:"beige",bisque:"miel",black:"negro",blanchedalmond:"almendra pálido",blue:"azul",blueviolet:"azul violáceo",brown:"marrón",burlywood:"madera",cadetblue:"azul cadete",chartreuse:"verde pálido 2",chocolate:"chocolate",coral:"coral",cornflowerblue:"azul aciano",cornsilk:"crudo",crimson:"carmesí",cyan:"cian",darkblue:"azul oscuro",darkcyan:"cian oscuro",darkgoldenrod:"ocre oscuro",darkgray:"gris oscuro",darkgreen:"verde oscuro",darkgrey:"gris oscuro",darkkhaki:"caqui oscuro",darkmagenta:"magenta oscuro",darkolivegreen:"verde oliva oscuro",darkorange:"naranja oscuro",darkorchid:"orquídea oscuro",darkred:"rojo oscuro",darksalmon:"salmón oscuro",darkseagreen:"verde mar oscuro",darkslateblue:"azul pizarra oscuro",darkslategray:"gris pizarra oscuro",darkslategrey:"gris pizarra oscuro",darkturquoise:"turquesa oscuro",darkviolet:"violeta oscuro",deeppink:"rosa fuerte",deepskyblue:"azul cielo fuerte",dimgray:"gris marengo",dimgrey:"gris marengo",dodgerblue:"azul fuerte",firebrick:"teja",floralwhite:"blanco manteca",forestgreen:"verde pino",fuchsia:"fucsia",gainsboro:"azul gainsboro",ghostwhite:"blanco ligero",gold:"oro",goldenrod:"ocre",gray:"gris",green:"verde",greenyellow:"amarillo verdoso",grey:"gris",honeydew:"flor de rocío",hotpink:"rosa oscuro",indianred:"rojo teja",indigo:"añil",ivory:"marfil",khaki:"caqui",lavender:"lavanda",lavenderblush:"lavanda rosácea",lawngreen:"verde césped",lemonchiffon:"amarillo pastel",lightblue:"azul claro",lightcoral:"coral claro",lightcyan:"cian claro",lightgoldenrodyellow:"ocre claro",lightgray:"gris claro",lightgreen:"verde claro",lightgrey:"gris claro",lightpink:"rosa claro",lightsalmon:"salmón claro",lightseagreen:"verde mar claro",lightskyblue:"azul cielo claro",lightslategray:"gris pizarra claro",lightslategrey:"gris pizarra claro",lightsteelblue:"azul acero claro",lightyellow:"amarillo claro",lime:"lima",limegreen:"lima limón",linen:"blanco arena",magenta:"magenta",maroon:"granate",mediumaquamarine:"aguamarina medio",mediumblue:"azul medio",mediumorchid:"orquídea medio",mediumpurple:"púrpura medio",mediumseagreen:"verde mar medio",mediumslateblue:"azul pizarra medio",mediumspringgreen:"verde primavera medio",mediumturquoise:"turquesa medio",mediumvioletred:"rojo violáceo medio",midnightblue:"azul medianoche",mintcream:"crema menta",mistyrose:"rosa difuminado",moccasin:"arena",navajowhite:"blanco navajo",navy:"azul marino",oldlace:"encaje antiguo",olive:"verde oliva",olivedrab:"verde oliva pardusco",orange:"naranja",orangered:"rojo anaranjado",orchid:"orquídea",palegoldenrod:"ocre pálido",palegreen:"verde pálido",paleturquoise:"turquesa pálido",palevioletred:"rojo violáceo pálido",papayawhip:"papaya claro",peachpuff:"melocotón",peru:"perú",pink:"rosa",plum:"ciruela",powderblue:"azul suave",purple:"púrpura",red:"rojo",rosybrown:"marrón rosáceo",royalblue:"azul real",saddlebrown:"cuero",salmon:"salmón",sandybrown:"marrón arcilla",seagreen:"verde mar",seashell:"blanco marfil",sienna:"siena",silver:"plateado",skyblue:"azul cielo",slateblue:"azul pizarra",slategray:"gris pizarra",slategrey:"gris pizarra",snow:"nieve",springgreen:"verde fuerte",steelblue:"azul acero",tan:"canela",teal:"verde azulado",thistle:"cardo",tomato:"tomate",transparent:"transparente",turquoise:"turquesa",violet:"violeta",wheat:"trigo",white:"blanco",whitesmoke:"blanco ahumado",yellow:"amarillo",yellowgreen:"verde amarillento"})); \ No newline at end of file diff --git a/lib/dojo/nls/fi/colors.js b/lib/dojo/nls/fi/colors.js new file mode 100644 index 0000000000..35db6586ad --- /dev/null +++ b/lib/dojo/nls/fi/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/fi/colors",({aliceblue:"vaaleanharmaansininen",antiquewhite:"antiikinvalkoinen",aqua:"sinivihreä",aquamarine:"vedenvihreä",azure:"taivaansininen",beige:"vaaleanruskea",bisque:"vaaleanruskea",black:"musta",blanchedalmond:"kuorittu manteli",blue:"sininen",blueviolet:"sinivioletti",brown:"ruskea",burlywood:"puunruskea",cadetblue:"meren vihreä",chartreuse:"kellanvihreä",chocolate:"suklaanruskea",coral:"koralli",cornflowerblue:"syvänsininen",cornsilk:"maissinkeltainen",crimson:"karmiininpunainen",cyan:"syaani",darkblue:"tummansininen",darkcyan:"tumma turkoosi",darkgoldenrod:"tumma kultapiisku",darkgray:"tummanharmaa",darkgreen:"tummanvihreä",darkgrey:"tummanharmaa",darkkhaki:"tumma khaki",darkmagenta:"tumma magenta",darkolivegreen:"tummanoliivinvihreä",darkorange:"tummanoranssi",darkorchid:"tumma orkidea",darkred:"tummanpunainen",darksalmon:"tumma lohenpunainen",darkseagreen:"tumma merenvihreä",darkslateblue:"tumma siniharmaa",darkslategray:"tummanharmaa",darkslategrey:"tummanharmaa",darkturquoise:"tumma turkoosi",darkviolet:"tummanvioletti",deeppink:"syvä vaaleanpunainen",deepskyblue:"tumma taivaansininen",dimgray:"himmeänharmaa",dimgrey:"himmeänharmaa",dodgerblue:"Dodger-sininen",firebrick:"poltetun tiilen punainen",floralwhite:"kukanvalkoinen",forestgreen:"metsänvihreä",fuchsia:"purppura",gainsboro:"gainsboro",ghostwhite:"lakananvalkoinen",gold:"kulta",goldenrod:"kullanruskea",gray:"harmaa",green:"vihreä",greenyellow:"vihreänkeltainen",grey:"harmaa",honeydew:"hunajameloninvihreä",hotpink:"pinkki",indianred:"kirkkaanpunainen",indigo:"indigo",ivory:"norsunluu",khaki:"khaki",lavender:"laventeli",lavenderblush:"laventelinpunainen",lawngreen:"ruohonvihreä",lemonchiffon:"sitruunankeltainen",lightblue:"vaaleansininen",lightcoral:"vaalea koralli",lightcyan:"vaalea syaani",lightgoldenrodyellow:"vaalea kultapiiskunkeltainen",lightgray:"vaaleanharmaa",lightgreen:"vaaleanvihreä",lightgrey:"vaaleanharmaa",lightpink:"vaaleanpunainen",lightsalmon:"vaalea lohenpunainen",lightseagreen:"vaalea merenvihreä",lightskyblue:"vaalea taivaansininen",lightslategray:"vaaleanharmaa",lightslategrey:"vaaleanharmaa",lightsteelblue:"vaalea teräksensininen",lightyellow:"vaaleankeltainen",lime:"vaaleanvihreä",limegreen:"limetinvihreä",linen:"pellavanvaalea",magenta:"magenta",maroon:"kastanjanruskea",mediumaquamarine:"keskivaalea vedenvihreä",mediumblue:"keskisininen",mediumorchid:"keskivaalea orkidea",mediumpurple:"keskivaalea violetti",mediumseagreen:"keskivaalea merenvihreä",mediumslateblue:"keskivaalea siniharmaa",mediumspringgreen:"keskivaalea keväänvihreä",mediumturquoise:"keskivaalea turkoosi",mediumvioletred:"keskivaalea lila",midnightblue:"yönsininen",mintcream:"minttukreemi",mistyrose:"utuinen ruusu",moccasin:"nahanruskea",navajowhite:"navajonvalkoinen",navy:"laivastonsininen",oldlace:"vanha pitsi",olive:"oliivinvihreä",olivedrab:"oliivinruskea",orange:"oranssi",orangered:"oranssinpunainen",orchid:"orkidea",palegoldenrod:"haalea kultapiisku",palegreen:"haalea vihreä",paleturquoise:"haalea turkoosi",palevioletred:"haalea lila",papayawhip:"papaijavaahto",peachpuff:"persikka",peru:"peru",pink:"vaaleanpunainen",plum:"luumunpunainen",powderblue:"harmaansininen",purple:"violetti",red:"punainen",rosybrown:"punertavanruskea",royalblue:"syvänsininen",saddlebrown:"satulanruskea",salmon:"lohenpunainen",sandybrown:"hiekanruskea",seagreen:"merenvihreä",seashell:"simpukankuori",sienna:"siena",silver:"hopea",skyblue:"taivaansininen",slateblue:"savensininen",slategray:"savenharmaa",slategrey:"savenharmaa",snow:"lumivalkoinen",springgreen:"keväänvihreä",steelblue:"teräksensininen",tan:"kellanruskea",teal:"sinivihreä",thistle:"ohdake",tomato:"tomaatinpunainen",transparent:"läpinäkyvä",turquoise:"turkoosi",violet:"violetti",wheat:"vehnänkeltainen",white:"valkoinen",whitesmoke:"savunvalkea",yellow:"keltainen",yellowgreen:"kellanvihreä"})); \ No newline at end of file diff --git a/lib/dojo/nls/fr/colors.js b/lib/dojo/nls/fr/colors.js new file mode 100644 index 0000000000..970618a0e4 --- /dev/null +++ b/lib/dojo/nls/fr/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/fr/colors",({aliceblue:"bleu gris",antiquewhite:"blanc antique",aqua:"bleu-vert",aquamarine:"aigue-marine",azure:"bleu azur",beige:"beige",bisque:"beige rosé",black:"noir",blanchedalmond:"coquille d'Å“uf",blue:"bleu",blueviolet:"bleu-violet",brown:"brun",burlywood:"bois précieux",cadetblue:"bleu pétrole",chartreuse:"vert vif",chocolate:"chocolat",coral:"corail",cornflowerblue:"bleuet",cornsilk:"vanille",crimson:"cramoisi",cyan:"cyan",darkblue:"bleu foncé",darkcyan:"cyan foncé",darkgoldenrod:"jaune paille foncé",darkgray:"gris foncé",darkgreen:"vert foncé",darkgrey:"gris foncé",darkkhaki:"kaki foncé",darkmagenta:"magenta foncé",darkolivegreen:"olive foncé",darkorange:"orange foncé",darkorchid:"lilas foncé",darkred:"rouge foncé",darksalmon:"saumon foncé",darkseagreen:"vert d'eau foncé",darkslateblue:"bleu ardoise foncé",darkslategray:"gris ardoise foncé",darkslategrey:"gris ardoise foncé",darkturquoise:"turquoise foncé",darkviolet:"violet foncé",deeppink:"rose soutenu",deepskyblue:"bleu ciel soutenu",dimgray:"gris soutenu",dimgrey:"gris soutenu",dodgerblue:"bleu France",firebrick:"rouge brique",floralwhite:"lys",forestgreen:"vert sapin",fuchsia:"fuchsia",gainsboro:"gris souris",ghostwhite:"blanc laiteux",gold:"or",goldenrod:"jaune paille",gray:"gris",green:"vert",greenyellow:"vert-jaune",grey:"gris",honeydew:"opalin",hotpink:"rose intense",indianred:"rose indien",indigo:"indigo",ivory:"ivoire",khaki:"kaki",lavender:"lavande",lavenderblush:"lavandin",lawngreen:"vert prairie",lemonchiffon:"mousse de citron",lightblue:"bleu clair",lightcoral:"corail clair",lightcyan:"cyan clair",lightgoldenrodyellow:"jaune paille clair",lightgray:"gris clair",lightgreen:"vert clair",lightgrey:"gris clair",lightpink:"rose clair",lightsalmon:"saumon clair",lightseagreen:"vert d'eau clair",lightskyblue:"bleu ciel clair",lightslategray:"gris ardoise clair",lightslategrey:"gris ardoise clair",lightsteelblue:"bleu acier clair",lightyellow:"jaune clair",lime:"vert citron",limegreen:"citron vert",linen:"écru",magenta:"magenta",maroon:"marron",mediumaquamarine:"aigue-marine moyen",mediumblue:"bleu moyen",mediumorchid:"lilas moyen",mediumpurple:"pourpre moyen",mediumseagreen:"vert d'eau moyen",mediumslateblue:"bleu ardoise moyen",mediumspringgreen:"vert printemps moyen",mediumturquoise:"turquoise moyen",mediumvioletred:"rouge violacé moyen",midnightblue:"bleu nuit",mintcream:"crème de menthe",mistyrose:"rose pâle",moccasin:"chamois",navajowhite:"chair",navy:"bleu marine",oldlace:"blanc cassé",olive:"olive",olivedrab:"brun verdâtre",orange:"orange",orangered:"rouge orangé",orchid:"lilas",palegoldenrod:"jaune paille pâle",palegreen:"vert pâle",paleturquoise:"turquoise pâle",palevioletred:"rouge violacé pâle",papayawhip:"crème de papaye",peachpuff:"pêche",peru:"caramel",pink:"rose",plum:"prune",powderblue:"bleu de smalt",purple:"pourpre",red:"rouge",rosybrown:"vieux rose",royalblue:"bleu roi",saddlebrown:"brun cuir",salmon:"saumon",sandybrown:"sable",seagreen:"vert d'eau",seashell:"coquillage",sienna:"terre de sienne",silver:"argent",skyblue:"bleu ciel",slateblue:"bleu ardoise",slategray:"gris ardoise",slategrey:"gris ardoise",snow:"neige",springgreen:"vert printemps",steelblue:"bleu acier",tan:"grège",teal:"sarcelle",thistle:"chardon",tomato:"tomate",transparent:"transparent",turquoise:"turquoise",violet:"violet",wheat:"blé",white:"blanc",whitesmoke:"blanc cendré",yellow:"jaune",yellowgreen:"vert jaunâtre"})); \ No newline at end of file diff --git a/lib/dojo/nls/he/colors.js b/lib/dojo/nls/he/colors.js new file mode 100644 index 0000000000..1b6df3debc --- /dev/null +++ b/lib/dojo/nls/he/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/he/colors",({aliceblue:"כחול פלדה",antiquewhite:"לבן עתיק",aqua:"×קווה",aquamarine:"×קוומ×רין",azure:"תכלת ×¢×–",beige:"בז'",bisque:"לבן שקד",black:"שחור",blanchedalmond:"שקד",blue:"כחול",blueviolet:"כחול-סגול",brown:"חו×",burlywood:"×—×•× ×“×”×•×™",cadetblue:"כחול ×™×",chartreuse:"ירוק-צהוב",chocolate:"שוקולד",coral:"×למוג",cornflowerblue:"כחול דרדר",cornsilk:"צהבהב",crimson:"×רגמן",cyan:"טורקיז",darkblue:"כחול ×›×”×”",darkcyan:"טורקיז ×›×”×”",darkgoldenrod:"זהוב ×›×”×”",darkgray:"×פור ×›×”×”",darkgreen:"ירוק ×›×”×”",darkgrey:"×פור ×›×”×”",darkkhaki:"×—××§×™ ×›×”×”",darkmagenta:"בורדו ×›×”×”",darkolivegreen:"ירוק זית ×›×”×”",darkorange:"×›×ª×•× ×›×”×”",darkorchid:"סחלב ×›×”×”",darkred:"××“×•× ×›×”×”",darksalmon:"סלמון ×›×”×”",darkseagreen:"ירוק ×™× ×›×”×”",darkslateblue:"כחול צפחה ×›×”×”",darkslategray:"×פור צפחה ×›×”×”",darkslategrey:"×פור צפחה ×›×”×”",darkturquoise:"טורקיז ×›×”×”",darkviolet:"סגול ×›×”×”",deeppink:"ורוד עמוק",deepskyblue:"כחול ×©×ž×™×™× ×¢×ž×•×§",dimgray:"×פור עמו×",dimgrey:"×פור עמו×",dodgerblue:"כחול",firebrick:"לבנה שרופה",floralwhite:"לבן פרחוני",forestgreen:"ירוק יער",fuchsia:"ורוד בהיר",gainsboro:"גיינסבורו",ghostwhite:"לבן רפ××™×",gold:"זהב",goldenrod:"זהוב",gray:"×פור",green:"ירוק",greenyellow:"ירוק-צהוב",grey:"×פור",honeydew:"ירקרק",hotpink:"ורוד לוהט",indianred:"××“×•× ×“×”×•×™",indigo:"×ינדיגו",ivory:"שנהב",khaki:"×—××§×™",lavender:"לבנדר",lavenderblush:"סומק לבנדר",lawngreen:"ירוק דש×",lemonchiffon:"ירוק לימון",lightblue:"תכלת",lightcoral:"×למוג בהיר",lightcyan:"טורקיז בהיר",lightgoldenrodyellow:"צהוב בהיר",lightgray:"×פור בהיר",lightgreen:"ירוק בהיר",lightgrey:"×פור בהיר",lightpink:"ורוד בהיר",lightsalmon:"סלמון בהיר",lightseagreen:"ירוק ×™× ×‘×”×™×¨",lightskyblue:"כחול ×©×ž×™×™× ×‘×”×™×¨",lightslategray:"×פור צפחה בהיר",lightslategrey:"×פור צפחה בהיר",lightsteelblue:"כחול פלדה בהיר",lightyellow:"צהוב בהיר",lime:"לימון",limegreen:"ירוק לימוני",linen:"פשתן",magenta:"בורדו",maroon:"×—×•× ×דמד×",mediumaquamarine:"כחול בינוני",mediumblue:"תכלת בינוני",mediumorchid:"סחלב בינוני",mediumpurple:"סגול בינוני",mediumseagreen:"ירוק ×™× ×‘×™× ×•× ×™",mediumslateblue:"כחול צפחה בינוני",mediumspringgreen:"ירוק ×ביב בינוני",mediumturquoise:"טורקיז בינוני",mediumvioletred:"סגול-××“×•× ×‘×™× ×•× ×™",midnightblue:"כחול ×›×”×”",mintcream:"×§×¨× ×ž× ×˜×”",mistyrose:"ורוד מעורפל",moccasin:"מוקסין",navajowhite:"לבן נוו×חו",navy:"כחול ×›×”×”",oldlace:"תחרה עתיקה",olive:"זית",olivedrab:"זית עמו×",orange:"כתו×",orangered:"×›×ª×•× ×דו×",orchid:"סחלב",palegoldenrod:"זהוב בהיר",palegreen:"ירוק בהיר",paleturquoise:"טורקיז בהיר",palevioletred:"סגול-××“×•× ×‘×”×™×¨",papayawhip:"פפ××™×”",peachpuff:"קציפת ×פרסק",peru:"פרו",pink:"ורוד",plum:"שזיף",powderblue:"כחול חיוור",purple:"סגול",red:"×דו×",rosybrown:"×—×•× ×•×¨×“×¨×“",royalblue:"כחול מלכותי",saddlebrown:"×—×•× ×“×”×•×™",salmon:"סלמון",sandybrown:"×—×•× ×—×•×œ×™",seagreen:"ירוק ×™×",seashell:"צדף",sienna:"סיינה",silver:"כסף",skyblue:"כחול שמיי×",slateblue:"כחול צפחה",slategray:"×פור צפחה",slategrey:"×פור צפחה",snow:"שלג",springgreen:"ירוק ×ביב",steelblue:"כחול פלדה",tan:"×—×•× ×דמד×",teal:"כחול-ירוק ×›×”×”",thistle:"דרדר",tomato:"עגבניה",transparent:"שקוף",turquoise:"טורקיז",violet:"סגול",wheat:"חיוט",white:"לבן",whitesmoke:"עשן לבן",yellow:"צהוב",yellowgreen:"ירוק צהוב"})); \ No newline at end of file diff --git a/lib/dojo/nls/hr/colors.js b/lib/dojo/nls/hr/colors.js new file mode 100644 index 0000000000..5826993921 --- /dev/null +++ b/lib/dojo/nls/hr/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/hr/colors",({aliceblue:"alice plava",antiquewhite:"antique bijela",aqua:"aqua",aquamarine:"akvamarin",azure:"azurna",beige:"bež",bisque:"svjetlo smeÄ‘e ružiÄasta",black:"crna",blanchedalmond:"svjetlo bademasta",blue:"plava",blueviolet:"plavo ljubiÄasta",brown:"smeÄ‘a",burlywood:"tamno smeÄ‘a",cadetblue:"kadet plava",chartreuse:"chartreuse",chocolate:"Äokoladna",coral:"koraljna",cornflowerblue:"razliÄak plava",cornsilk:"cornsilk",crimson:"rumena",cyan:"cijan",darkblue:"tamno plava",darkcyan:"tamno cijan",darkgoldenrod:"tamno zlatno žuta",darkgray:"tamno siva",darkgreen:"tamno zelena",darkgrey:"tamno siva",darkkhaki:"tamno sivo smeÄ‘a",darkmagenta:"tamno grimizna",darkolivegreen:"tamno maslinasto zelena",darkorange:"tamno naranÄasta",darkorchid:"tamno ružiÄasta",darkred:"tamno crvena",darksalmon:"tamno žuto ružiÄasta",darkseagreen:"tamno plavo zelena",darkslateblue:"tamno sivo plava",darkslategray:"tamno plavo siva",darkslategrey:"tamno plavo siva",darkturquoise:"tamno tirkizna",darkviolet:"tamno ljubiÄasta",deeppink:"intenzivno ružiÄasta",deepskyblue:"intenzivno nebesko plava",dimgray:"mutno siva",dimgrey:"mutno siva",dodgerblue:"dodger plava",firebrick:"žarko crvena",floralwhite:"cvjetno bijela",forestgreen:"Å¡umsko zelena",fuchsia:"fuksija",gainsboro:"gainsboro",ghostwhite:"sivo bijela",gold:"zlatna",goldenrod:"zlatno žuta",gray:"siva",green:"zelena",greenyellow:"zeleno žuta",grey:"siva",honeydew:"honeydew",hotpink:"žarko ružiÄasta",indianred:"indijski crveno",indigo:"indigo",ivory:"slonovaÄa",khaki:"sivo smeÄ‘a",lavender:"lavanda",lavenderblush:"rumena lavanda",lawngreen:"livadno zelena",lemonchiffon:"nježno žuta",lightblue:"svjetlo plava",lightcoral:"svjetlo koraljna",lightcyan:"svjetlo cijan",lightgoldenrodyellow:"svjetlo zlatno žuta",lightgray:"svjetlo siva",lightgreen:"svjetlo zelena",lightgrey:"svjetlo siva",lightpink:"svjetlo ružiÄasta",lightsalmon:"svjetlo žuto ružiÄasta",lightseagreen:"svjetlo plavo zelena",lightskyblue:"svjetlo nebesko plava",lightslategray:"svjetlo plavo siva",lightslategrey:"svjetlo plavo siva",lightsteelblue:"svjetlo ÄeliÄno plava",lightyellow:"svjetlo žuta",lime:"limeta",limegreen:"limeta zelena",linen:"platno",magenta:"grimizna",maroon:"kestenjasta",mediumaquamarine:"srednje akvamarin",mediumblue:"srednje plava",mediumorchid:"srednje ružiÄasta",mediumpurple:"srednje purpurna",mediumseagreen:"srednje plavo zelena",mediumslateblue:"srednje sivo plava",mediumspringgreen:"srednje proljetno zelena",mediumturquoise:"srednje tirkizna",mediumvioletred:"srednje ljubiÄasto crvena",midnightblue:"ponoćno plava",mintcream:"blijedo zelena",mistyrose:"mutno ružiÄasta",moccasin:"moccasin",navajowhite:"krem bijela",navy:"mornarsko plava",oldlace:"old lace",olive:"maslinasta",olivedrab:"maslinasto siva",orange:"naranÄasta",orangered:"naranÄasto crvena",orchid:"ružiÄasta",palegoldenrod:"blijedo zlatno žuta",palegreen:"blijedo zelena",paleturquoise:"blijedo tirkizna",palevioletred:"blijedo ljubiÄasto crvena",papayawhip:"blijedo naranÄasta",peachpuff:"breskva",peru:"peru",pink:"roza",plum:"Å¡ljiva",powderblue:"blijedo plava",purple:"purpurna",red:"crvena",rosybrown:"ružiÄasto smeÄ‘a",royalblue:"kraljevski plava",saddlebrown:"srednje smeÄ‘a",salmon:"žuto ružiÄasta",sandybrown:"pjeÅ¡Äano smeÄ‘a",seagreen:"plavo zelena",seashell:"nježno ružiÄasta",sienna:"sjena",silver:"srebrna",skyblue:"nebesko plava",slateblue:"sivo plava",slategray:"plavo siva",slategrey:"plavo siva",snow:"snijeg",springgreen:"proljetno zeleno",steelblue:"ÄeliÄno plava",tan:"ten",teal:"teal",thistle:"ÄiÄak",tomato:"rajÄica",transparent:"prozirno",turquoise:"tirkizna",violet:"ljubiÄasta",wheat:"pÅ¡enica",white:"bijela",whitesmoke:"bijeli dim",yellow:"žuta",yellowgreen:"žuto zelena"})); \ No newline at end of file diff --git a/lib/dojo/nls/hu/colors.js b/lib/dojo/nls/hu/colors.js new file mode 100644 index 0000000000..52afdd38ee --- /dev/null +++ b/lib/dojo/nls/hu/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/hu/colors",({aliceblue:"Alice kék",antiquewhite:"antik fehér",aqua:"vízszín",aquamarine:"akvamarin",azure:"azúrkék",beige:"bézs",bisque:"porcelán",black:"fekete",blanchedalmond:"hámozott mandula",blue:"kék",blueviolet:"ibolyakék",brown:"barna",burlywood:"nyersfa",cadetblue:"kadétkék",chartreuse:"chartreuse",chocolate:"csokoládé",coral:"korall",cornflowerblue:"búzavirágkék",cornsilk:"kukoricahaj",crimson:"karmazsinvörös",cyan:"ciánkék",darkblue:"sötétkék",darkcyan:"sötét ciánkék",darkgoldenrod:"sötét aranyvesszÅ‘",darkgray:"sötétszürke",darkgreen:"sötétzöld",darkgrey:"sötétszürke",darkkhaki:"sötét khakiszín",darkmagenta:"sötétbíbor",darkolivegreen:"sötét olajzöld",darkorange:"sötét narancssárga",darkorchid:"sötét orchidea",darkred:"sötétvörös",darksalmon:"sötét lazacszín",darkseagreen:"sötét tengerzöld",darkslateblue:"sötét palakék",darkslategray:"sötét palaszürke",darkslategrey:"sötét palaszürke",darkturquoise:"sötét türkizkék",darkviolet:"sötét ibolyaszín",deeppink:"sötétrózsaszín",deepskyblue:"sötét égszínkék",dimgray:"halványszürke",dimgrey:"halványszürke",dodgerblue:"dodger kék",firebrick:"téglavörös",floralwhite:"virágfehér",forestgreen:"erdÅ‘zöld",fuchsia:"fukszia",gainsboro:"gainsboro",ghostwhite:"szellemfehér",gold:"arany",goldenrod:"aranyvesszÅ‘",gray:"szürke",green:"zöld",greenyellow:"zöldessárga",grey:"szürke",honeydew:"mézharmat",hotpink:"meleg rózsaszín",indianred:"indiánvörös",indigo:"indigó",ivory:"elefántcsont",khaki:"khakiszín",lavender:"levendula",lavenderblush:"pirosas levendula",lawngreen:"fűzöld",lemonchiffon:"sárga műselyem",lightblue:"világoskék",lightcoral:"világos korall",lightcyan:"világos ciánkék",lightgoldenrodyellow:"világos aranyvesszÅ‘ sárga",lightgray:"világosszürke",lightgreen:"világoszöld",lightgrey:"világosszürke",lightpink:"világos rózsaszín",lightsalmon:"világos lazacszín",lightseagreen:"világos tengerzöld",lightskyblue:"világos égszínkék",lightslategray:"világos palaszürke",lightslategrey:"világos palaszürke",lightsteelblue:"világos acélkék",lightyellow:"világossárga",lime:"lime",limegreen:"limezöld",linen:"vászonfehér",magenta:"bíbor",maroon:"gesztenyebarna",mediumaquamarine:"közepes akvamarin",mediumblue:"közepes kék",mediumorchid:"közepes orchidea",mediumpurple:"közepes lila",mediumseagreen:"közepes tengerzöld",mediumslateblue:"közepes palakék",mediumspringgreen:"közepes tavaszzöld",mediumturquoise:"közepes türkizkék",mediumvioletred:"közepes ibolyavörös",midnightblue:"éjkék",mintcream:"mentaszósz",mistyrose:"halvány rózsaszín",moccasin:"mokkaszín",navajowhite:"navajo fehér",navy:"tengerészkék",oldlace:"régi csipke",olive:"olajzöld",olivedrab:"olajzöld drapp",orange:"narancssárga",orangered:"narancsvörös",orchid:"orchidea",palegoldenrod:"halvány aranyvesszÅ‘",palegreen:"halványzöld",paleturquoise:"halvány türkizkék",palevioletred:"halvány ibolyavörös",papayawhip:"papayahab",peachpuff:"barackszín",peru:"peru",pink:"rózsaszín",plum:"szilvakék",powderblue:"púderkék",purple:"lila",red:"vörös",rosybrown:"barnásrózsaszín",royalblue:"királykék",saddlebrown:"nyeregbarna",salmon:"lazacszín",sandybrown:"homokbarna",seagreen:"tengerzöld",seashell:"kagyló",sienna:"vörösesbarna",silver:"ezüst",skyblue:"égszínkék",slateblue:"palakék",slategray:"palaszürke",slategrey:"palaszürke",snow:"hó",springgreen:"tavaszzöld",steelblue:"acélkék",tan:"rozsdabarna",teal:"pávakék",thistle:"bogáncs",tomato:"paradicsom",transparent:"átlátszó",turquoise:"türkizkék",violet:"ibolyaszín",wheat:"búza",white:"fehér",whitesmoke:"fehér füst",yellow:"sárga",yellowgreen:"sárgászöld"})); \ No newline at end of file diff --git a/lib/dojo/nls/it/colors.js b/lib/dojo/nls/it/colors.js new file mode 100644 index 0000000000..d6c8d279d4 --- /dev/null +++ b/lib/dojo/nls/it/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/it/colors",({aliceblue:"bianco ghiaccio",antiquewhite:"rosa antico",aqua:"verde acqua",aquamarine:"acquamarina",azure:"azure",beige:"beige",bisque:"terracotta",black:"nero",blanchedalmond:"beige 2",blue:"blu",blueviolet:"violetto bluastro",brown:"marrone",burlywood:"legno massiccio",cadetblue:"verde petrolio",chartreuse:"verde brillante",chocolate:"cioccolato",coral:"corallo",cornflowerblue:"blu fiordaliso",cornsilk:"crema",crimson:"rosso scarlatto",cyan:"ciano",darkblue:"blu scuro",darkcyan:"celeste scuro",darkgoldenrod:"ocra scuro",darkgray:"grigio scuro",darkgreen:"verde scuro",darkgrey:"grigio scuro",darkkhaki:"cachi scuro",darkmagenta:"magenta scuro",darkolivegreen:"verde oliva scuro",darkorange:"arancione scuro",darkorchid:"orchidea scuro",darkred:"rosso scuro",darksalmon:"salmone scuro",darkseagreen:"verde acqua scuro",darkslateblue:"blu ardesia scuro",darkslategray:"grigio ardesia scuro",darkslategrey:"grigio ardesia scuro",darkturquoise:"turchese scuro",darkviolet:"viola scuro",deeppink:"ciclamino",deepskyblue:"azzurro intenso",dimgray:"grigio tenue",dimgrey:"grigio tenue",dodgerblue:"dodger blue",firebrick:"mattone",floralwhite:"bianco grigio",forestgreen:"verde pino scuro",fuchsia:"fucsia",gainsboro:"gainsboro",ghostwhite:"bianco gesso",gold:"oro",goldenrod:"dorato",gray:"grigio",green:"verde",greenyellow:"verde-giallo",grey:"grigio",honeydew:"miele",hotpink:"rosa acceso",indianred:"terra indiana",indigo:"indaco",ivory:"avorio",khaki:"cachi",lavender:"lavanda",lavenderblush:"lavanda rosa",lawngreen:"verde brillante chiaro",lemonchiffon:"lemon chiffon",lightblue:"blu chiaro",lightcoral:"corallo chiaro",lightcyan:"ciano chiaro",lightgoldenrodyellow:"giallo dorato chiaro",lightgray:"grigio chiaro",lightgreen:"verde chiaro",lightgrey:"grigio chiaro",lightpink:"rosa chiaro",lightsalmon:"salmone chiaro",lightseagreen:"verde acqua chiaro",lightskyblue:"azzurro chiaro",lightslategray:"grigio ardesia chiaro",lightslategrey:"grigio ardesia chiaro",lightsteelblue:"blu acciaio chiaro",lightyellow:"giallo chiaro",lime:"lime",limegreen:"verde lime",linen:"lino",magenta:"magenta",maroon:"Bordeaux",mediumaquamarine:"acquamarina medio",mediumblue:"blu medio",mediumorchid:"orchidea medio",mediumpurple:"viola medio",mediumseagreen:"verde acqua medio",mediumslateblue:"blu ardesia medio",mediumspringgreen:"verde brillante medio",mediumturquoise:"turchese medio",mediumvioletred:"violetto rosso medio",midnightblue:"blu notte",mintcream:"bianco nuvola",mistyrose:"rosa pallido",moccasin:"mocassino",navajowhite:"sabbia",navy:"blu scuro",oldlace:"mandorla",olive:"verde oliva",olivedrab:"verde bottiglia",orange:"arancione",orangered:"vermiglio",orchid:"orchidea",palegoldenrod:"dorato pallido",palegreen:"verde pallido",paleturquoise:"turchese pallido",palevioletred:"violetto rosso pallido",papayawhip:"papaya",peachpuff:"pesche",peru:"perù",pink:"rosa",plum:"prugna",powderblue:"azzurro polvere",purple:"viola",red:"rosso",rosybrown:"caffè latte",royalblue:"royal blue",saddlebrown:"cacao",salmon:"salmone",sandybrown:"argilla",seagreen:"verde acqua",seashell:"sabbia rosa",sienna:"terra di siena",silver:"argento",skyblue:"azzurro",slateblue:"blu ardesia",slategray:"grigio ardesia",slategrey:"grigio ardesia",snow:"neve",springgreen:"verde brillante",steelblue:"blu brillante",tan:"tan",teal:"verde acqua",thistle:"rosa cenere",tomato:"pomodoro",transparent:"trasparente",turquoise:"turchese",violet:"violetto",wheat:"tabacco",white:"bianco",whitesmoke:"bianco fumo",yellow:"giallo",yellowgreen:"giallo verde"})); \ No newline at end of file diff --git a/lib/dojo/nls/ja/colors.js b/lib/dojo/nls/ja/colors.js new file mode 100644 index 0000000000..792a977ff6 --- /dev/null +++ b/lib/dojo/nls/ja/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/ja/colors",({aliceblue:"アリスブルー",antiquewhite:"アンティークホワイト",aqua:"アクア",aquamarine:"碧緑",azure:"è–„ã„空色",beige:"ベージュ",bisque:"ビスク",black:"é»’",blanchedalmond:"çš®ãªã—アーモンド",blue:"é’",blueviolet:"é’ç´«",brown:"茶",burlywood:"ãƒãƒ¼ãƒªãƒ¼ã‚¦ãƒƒãƒ‰",cadetblue:"ãã™ã‚“ã é’",chartreuse:"淡黄緑",chocolate:"ãƒãƒ§ã‚³ãƒ¬ãƒ¼ãƒˆ",coral:"çŠç‘š",cornflowerblue:"コーンフラワーブルー",cornsilk:"コーンシルク",crimson:"深紅",cyan:"シアンブルー",darkblue:"ダークブルー",darkcyan:"ダークシアンブルー",darkgoldenrod:"ダークゴールデンロッド",darkgray:"ダークグレイ",darkgreen:"ダークグリーン",darkgrey:"ダークグレイ",darkkhaki:"ダークカーキ",darkmagenta:"ダークマジェンタ",darkolivegreen:"ダークオリーブグリーン",darkorange:"ダークオレンジ",darkorchid:"ダークオーキッド",darkred:"ダークレッド",darksalmon:"ダークサーモン",darkseagreen:"ダークシーグリーン",darkslateblue:"ダークスレートブルー",darkslategray:"ダークスレートグレイ",darkslategrey:"ダークスレートグレイ",darkturquoise:"ダークターコイズ",darkviolet:"ダークãƒã‚¤ã‚ªãƒ¬ãƒƒãƒˆ",deeppink:"濃ã„ピンク",deepskyblue:"濃ã„空色",dimgray:"ãã™ã‚“ã ã‚°ãƒ¬ã‚¤",dimgrey:"ãã™ã‚“ã ã‚°ãƒ¬ã‚¤",dodgerblue:"ドッジャーブルー",firebrick:"赤煉瓦色",floralwhite:"フローラルホワイト",forestgreen:"フォレストグリーン",fuchsia:"紫紅色",gainsboro:"ゲインズボーロ",ghostwhite:"ゴーストホワイト",gold:"金",goldenrod:"ゴールデンロッド",gray:"グレイ",green:"ç·‘",greenyellow:"緑黄色",grey:"グレイ",honeydew:"ãƒãƒ‹ãƒ¼ãƒ‡ãƒ¥ãƒ¼",hotpink:"ホットピンク",indianred:"インディアンレッド",indigo:"è—色",ivory:"アイボリー",khaki:"カーキ",lavender:"ラベンダー",lavenderblush:"ラベンダーブラッシ",lawngreen:"ローングリーン",lemonchiffon:"レモンシフォン",lightblue:"ライトブルー",lightcoral:"ライトコーラル",lightcyan:"ライトシアン",lightgoldenrodyellow:"ライトゴールデンロッドイエロー",lightgray:"ライトグレイ",lightgreen:"ライトグリーン",lightgrey:"ライトグレイ",lightpink:"ライトピンク",lightsalmon:"ライトサーモン",lightseagreen:"ライトシーグリーン",lightskyblue:"ライトスカイブルー",lightslategray:"ライトスレートグレイ",lightslategrey:"ライトスレートグレイ",lightsteelblue:"ライトスãƒãƒ¼ãƒ«ãƒ–ルー",lightyellow:"ライトイエロー",lime:"ライム",limegreen:"ライムグリーン",linen:"亜麻色",magenta:"赤紫",maroon:"ãˆã³èŒ¶",mediumaquamarine:"ミディアムアクアマリーン",mediumblue:"ミディアムブルー",mediumorchid:"ミディアムオーキッド",mediumpurple:"ミディアムパープル",mediumseagreen:"ミディアムシーグリーン",mediumslateblue:"ミディアムスレートブルー",mediumspringgreen:"ミディアムスプリンググリーン",mediumturquoise:"ミディアムターコイズ",mediumvioletred:"ミディアムãƒã‚¤ã‚ªãƒ¬ãƒƒãƒˆãƒ¬ãƒƒãƒ‰",midnightblue:"ミッドナイトブルー",mintcream:"ミントクリーム",mistyrose:"ミスティローズ",moccasin:"モカシン",navajowhite:"ナãƒãƒ›ãƒ›ãƒ¯ã‚¤ãƒˆ",navy:"濃紺",oldlace:"オールドレイス",olive:"オリーブ",olivedrab:"濃黄緑",orange:"オレンジ",orangered:"オレンジレッド",orchid:"è–„ç´«",palegoldenrod:"ペイルゴールデンロッド",palegreen:"ペイルグリーン",paleturquoise:"ペイルターコイズ",palevioletred:"ペイルãƒã‚¤ã‚ªãƒ¬ãƒƒãƒˆãƒ¬ãƒƒãƒ‰",papayawhip:"パパイアホイップ",peachpuff:"ピーãƒãƒ‘フ",peru:"ペルー",pink:"ピンク",plum:"深紫",powderblue:"æ·¡é’",purple:"ç´«",red:"赤",rosybrown:"ロージーブラウン",royalblue:"藤色",saddlebrown:"サドルブラウン",salmon:"サーモン",sandybrown:"ç ‚è¤è‰²",seagreen:"シーグリーン",seashell:"シーシェル",sienna:"黄è¤è‰²",silver:"銀",skyblue:"スカイブルー",slateblue:"スレートブルー",slategray:"スレートグレイ",slategrey:"スレートグレイ",snow:"雪色",springgreen:"スプリンググリーン",steelblue:"鋼色",tan:"茶è¤è‰²",teal:"ティール",thistle:"シスル",tomato:"トマト色",transparent:"逿˜Ž",turquoise:"ターコイズ",violet:"ã™ã¿ã‚Œè‰²",wheat:"å°éº¦è‰²",white:"白",whitesmoke:"ホワイトスモーク",yellow:"黄",yellowgreen:"黄緑"})); \ No newline at end of file diff --git a/lib/dojo/nls/kk/colors.js b/lib/dojo/nls/kk/colors.js new file mode 100644 index 0000000000..ebcd7f3a70 --- /dev/null +++ b/lib/dojo/nls/kk/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/kk/colors",({aliceblue:"бозғылт көк",antiquewhite:"ақ антик",aqua:"Ñу түÑÑ–",aquamarine:"жаÑылдау-көк",azure:"көкшіл",beige:"Ñарғыш",bisque:"биÑквит",black:"қара",blanchedalmond:"ағартылған бадам",blue:"көк",blueviolet:"көк-ақшыл көк",brown:"қоңыр",burlywood:"ағаш тамыры",cadetblue:"кадет көк",chartreuse:"жаÑылдау-Ñары",chocolate:"шоколад",coral:"коралл",cornflowerblue:"көктікен көк",cornsilk:"жібек",crimson:"таңқұрай",cyan:"циан",darkblue:"күңгірт көк",darkcyan:"күңгірт циан",darkgoldenrod:"қара алтын",darkgray:"қою Ñұры",darkgreen:"қою жаÑыл",darkgrey:"қою Ñұры",darkkhaki:"қою хаки",darkmagenta:"қою қызыл күрең",darkolivegreen:"қою қоңырлау жаÑыл",darkorange:"қою қызғылт Ñары",darkorchid:"күңгірт орÑель",darkred:"күңгірт қызыл",darksalmon:"қою Ñарылау қызғылт",darkseagreen:"қою теңіз толқыны",darkslateblue:"күңгірт грифель көк",darkslategray:"күңгірт көкшіл Ñұры",darkslategrey:"күңгірт көкшіл Ñұры",darkturquoise:"күңгірт көгілдір",darkviolet:"күңгірт қызыл күрең",deeppink:"қою қызғылт",deepskyblue:"қою аÑпан көк",dimgray:"күңгірт Ñұры",dimgrey:"күңгірт Ñұры",dodgerblue:"көк доджер",firebrick:"қызыл кірпіш",floralwhite:"гүлді ақ",forestgreen:"шөпті жаÑыл",fuchsia:"фукÑиÑ",gainsboro:"gainsboro",ghostwhite:"елеÑті ақ",gold:"алтындай",goldenrod:"алтын",gray:"Ñұры",green:"жаÑыл",greenyellow:"жаÑыл-Ñары",grey:"Ñұры",honeydew:"балдай",hotpink:"ашық қызғылт",indianred:"үнділік қызыл",indigo:"индиго",ivory:"піл Ñүйег",khaki:"хаки",lavender:"бозғылт ақшыл көк",lavenderblush:"күңгірт ақшыл қызыл",lawngreen:"көгал жаÑыл",lemonchiffon:"лимон шиффон",lightblue:"ақшыл көк",lightcoral:"ашық коралл",lightcyan:"ашық көгілдір",lightgoldenrodyellow:"ашық алтындай Ñары",lightgray:"ашық Ñұры",lightgreen:"ақшыл жаÑыл",lightgrey:"ашық Ñұры",lightpink:"ақшыл қызғылт",lightsalmon:"ашық Ñарғыш қызғылт",lightseagreen:"ашық теңіз толқыны",lightskyblue:"ашық аÑпан көк",lightslategray:"ашық көкшіл Ñұры",lightslategrey:"ашық көкшіл Ñұры",lightsteelblue:"ашық Ñұрғылт көк",lightyellow:"ашық Ñары",lime:"әк",limegreen:"әк жаÑыл",linen:"зығыр",magenta:"фукÑин",maroon:"Ñарғылт",mediumaquamarine:"орташа жаÑылдау көк",mediumblue:"орташа көк",mediumorchid:"орташа ақшыл",mediumpurple:"орташа қызыл күрең",mediumseagreen:"орташа теңіз толқыны",mediumslateblue:"орташа көкшіл Ñұры",mediumspringgreen:"орташа ашық жаÑыл",mediumturquoise:"орташа көгілдір",mediumvioletred:"орташа ақшыл көк-қызыл",midnightblue:"түн ортаÑÑ‹ көк",mintcream:"жалбыз майы",mistyrose:"көмеÑкі қызғылт",moccasin:"мокаÑин",navajowhite:"навахо ақ",navy:"теңіз көк",oldlace:"еÑкі бау",olive:"зәйтүнді",olivedrab:"жаÑылдау Ñары",orange:"қызғылт Ñары",orangered:"қызғылт Ñары қызыл",orchid:"орхидеÑ",palegoldenrod:"бозғылт алтын",palegreen:"бозғылт жаÑыл",paleturquoise:"бозғылт көгілдір",palevioletred:"бозғылт ақшыл көк-қызыл",papayawhip:"Ð¿Ð°Ð¿Ð°Ð¹Ñ Ò›Ð°Ð¼ÑˆÑ‹ÑÑ‹",peachpuff:"шабдалы",peru:"перу",pink:"қызғылт",plum:"алхоры",powderblue:"жаÑылдау көк",purple:"қызыл күрең",red:"қызыл",rosybrown:"қызғылт қоңыр",royalblue:"патша көк",saddlebrown:"тоқым қоңыр",salmon:"Ñомон",sandybrown:"құмды қоңыр",seagreen:"теңіз толқыны",seashell:"теңіз қабыршағы",sienna:"Ñиенна",silver:"күміÑтей",skyblue:"аÑпан көк",slateblue:"грифель көк",slategray:"көкшіл Ñұры",slategrey:"көкшіл Ñұры",snow:"қар",springgreen:"көктем жаÑыл",steelblue:"көкшіл Ñұрғылт",tan:"Ñарғыш қоңыр",teal:"шүрегей",thistle:"артишок",tomato:"қызанақ",transparent:"мөлдір",turquoise:"көгілдір",violet:"күлгін",wheat:"бидай",white:"ақ",whitesmoke:"ақ түтін",yellow:"Ñары",yellowgreen:"Ñарғыш жаÑыл"})); \ No newline at end of file diff --git a/lib/dojo/nls/ko/colors.js b/lib/dojo/nls/ko/colors.js new file mode 100644 index 0000000000..2b5d4e2165 --- /dev/null +++ b/lib/dojo/nls/ko/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/ko/colors",({aliceblue:"앨리스 블루(alice blue)",antiquewhite:"앤틱 í™”ì´íЏ(antique white)",aqua:"ì•„ì¿ ì•„(aqua)",aquamarine:"아쿠아마린(aquamarine)",azure:"애쥬어(azure)",beige:"ë² ì´ì§€(beige)",bisque:"비스í¬(bisque)",black:"블랙(black)",blanchedalmond:"블랜치 아몬드(blanched almond)",blue:"블루(blue)",blueviolet:"블루 ë°”ì´ì˜¬ë ›(blue-violet)",brown:"브ë¼ìš´(brown)",burlywood:"벌리우드(burlywood)",cadetblue:"카뎃 블루(cadet blue)",chartreuse:"샤르트뢰즈(chartreuse)",chocolate:"초콜렛(chocolate)",coral:"코랄(coral)",cornflowerblue:"콘플ë¼ì›Œ 블루(cornflower blue)",cornsilk:"콘실í¬(cornsilk)",crimson:"í¬ë¦¼ìЍ(crimson)",cyan:"시안(cyan)",darkblue:"ë‹¤í¬ ë¸”ë£¨(dark blue)",darkcyan:"ë‹¤í¬ ì‹œì•ˆ(dark cyan)",darkgoldenrod:"ë‹¤í¬ ê³¨ë“ ë¡œë“œ(dark goldenrod)",darkgray:"ë‹¤í¬ ê·¸ë ˆì´(dark gray)",darkgreen:"ë‹¤í¬ ê·¸ë¦°(dark green)",darkgrey:"ë‹¤í¬ ê·¸ë ˆì´(dark gray)",darkkhaki:"ë‹¤í¬ ì¹´í‚¤(dark khaki)",darkmagenta:"ë‹¤í¬ ë§ˆì  íƒ€(dark magenta)",darkolivegreen:"ë‹¤í¬ ì˜¬ë¦¬ë¸Œ 그린(dark olive green)",darkorange:"ë‹¤í¬ ì˜¤ë Œì§€(dark orange)",darkorchid:"ë‹¤í¬ ì˜¤í‚¤ë“œ(dark orchid)",darkred:"ë‹¤í¬ ë ˆë“œ(dark red)",darksalmon:"ë‹¤í¬ ìƒëª¬(dark salmon)",darkseagreen:"ë‹¤í¬ ì”¨ 그린(dark sea green)",darkslateblue:"ë‹¤í¬ ìŠ¬ë ˆì´íЏ 블루(dark slate blue)",darkslategray:"ë‹¤í¬ ìŠ¬ë ˆì´íЏ 그레ì´(dark slate gray)",darkslategrey:"ë‹¤í¬ ìŠ¬ë ˆì´íЏ 그레ì´(dark slate gray)",darkturquoise:"ë‹¤í¬ í„°ì½°ì¦ˆ(dark turquoise)",darkviolet:"ë‹¤í¬ ë°”ì´ì˜¬ë ›(dark violet)",deeppink:"딥 í•‘í¬(deep pink)",deepskyblue:"딥 ìŠ¤ì¹´ì´ ë¸”ë£¨(deep sky blue)",dimgray:"딤 그레ì´(dim gray)",dimgrey:"딤 그레ì´(dim gray)",dodgerblue:"다저 블루(dodger blue)",firebrick:"파ì´ì–´ 브릭(fire brick)",floralwhite:"플로랄 í™”ì´íЏ(floral white)",forestgreen:"í¬ë ˆìŠ¤íŠ¸ 그린(forest green)",fuchsia:"후í¬ìƒ¤(fuchsia)",gainsboro:"게ì¸ìŠ¤ë¸Œë¡œ(gainsboro)",ghostwhite:"고스트 í™”ì´íЏ(ghost white)",gold:"골드(gold)",goldenrod:"골든로드(goldenrod)",gray:"그레ì´(gray)",green:"그린(green)",greenyellow:"그린 ì˜ë¡œìš°(green-yellow)",grey:"그레ì´(gray)",honeydew:"허니듀(honeydew)",hotpink:"í•« í•‘í¬(hot pink)",indianred:"ì¸ë””안 레드(indian red)",indigo:"ì¸ë””ê³ (indigo)",ivory:"ì•„ì´ë³´ë¦¬(ivory)",khaki:"카키(khaki)",lavender:"ë¼ë²¤ë”(lavender)",lavenderblush:"ë¼ë²¤ë” 블러쉬(lavender blush)",lawngreen:"ë¡  그린(lawn green)",lemonchiffon:"레몬 쉬í°(lemon chiffon)",lightblue:"ë¼ì´íЏ 블루(light blue)",lightcoral:"ë¼ì´íЏ 코랄(light coral)",lightcyan:"ë¼ì´íЏ 시안(light cyan)",lightgoldenrodyellow:"ë¼ì´íЏ 골든로드 ì˜ë¡œìš°(light goldenrod yellow)",lightgray:"ë¼ì´íЏ 그레ì´(light gray)",lightgreen:"ë¼ì´íЏ 그린(light green)",lightgrey:"ë¼ì´íЏ 그레ì´(light gray)",lightpink:"ë¼ì´íЏ í•‘í¬(light pink)",lightsalmon:"ë¼ì´íЏ ìƒëª¬(light salmon)",lightseagreen:"ë¼ì´íЏ 씨 그린(light sea green)",lightskyblue:"ë¼ì´íЏ ìŠ¤ì¹´ì´ ë¸”ë£¨(light sky blue)",lightslategray:"ë¼ì´íЏ 슬레ì´íЏ 그레ì´(light slate gray)",lightslategrey:"ë¼ì´íЏ 슬레ì´íЏ 그레ì´(light slate gray)",lightsteelblue:"ë¼ì´íЏ 스틸 블루(light steel blue)",lightyellow:"ë¼ì´íЏ ì˜ë¡œìš°(light yellow)",lime:"ë¼ìž„(lime)",limegreen:"ë¼ìž„ 그린(lime green)",linen:"리넨(linen)",magenta:"마젠타(magenta)",maroon:"마룬(maroon)",mediumaquamarine:"미디엄 아쿠아마린(medium aquamarine)",mediumblue:"미디엄 블루(medium blue)",mediumorchid:"미디엄 오키드(medium orchid)",mediumpurple:"미디엄 í¼í”Œ(medium purple)",mediumseagreen:"미디엄 씨 그린(medium sea green)",mediumslateblue:"미디엄 슬레ì´íЏ 블루(medium slate blue)",mediumspringgreen:"미디엄 ìŠ¤í”„ë§ ê·¸ë¦°(medium spring green)",mediumturquoise:"미디엄 터콰즈(medium turquoise)",mediumvioletred:"미디엄 ë°”ì´ì˜¬ë › 레드(medium violet-red)",midnightblue:"미드나잇 블루(midnight blue)",mintcream:"민트 í¬ë¦¼(mint cream)",mistyrose:"미스티 로즈(misty rose)",moccasin:"모카신(moccasin)",navajowhite:"나바호 í™”ì´íЏ(navajo white)",navy:"네ì´ë¹„(navy)",oldlace:"올드 ë ˆì´ìФ(old lace)",olive:"올리브(olive)",olivedrab:"올리브 드랩(olive drab)",orange:"오렌지(orange)",orangered:"오렌지 레드(orange red)",orchid:"오키드(orchid)",palegoldenrod:"íŽ˜ì¼ ê³¨ë“ ë¡œë“œ(pale goldenrod)",palegreen:"íŽ˜ì¼ ê·¸ë¦°(pale green)",paleturquoise:"íŽ˜ì¼ í„°ì½°ì¦ˆ(pale turquoise)",palevioletred:"íŽ˜ì¼ ë°”ì´ì˜¬ë › 레드(pale violet-red)",papayawhip:"파파야 휩(papaya whip)",peachpuff:"피치 í¼í”„(peach puff)",peru:"페루(peru)",pink:"í•‘í¬(pink)",plum:"플럼(plum)",powderblue:"íŒŒìš°ë” ë¸”ë£¨(powder blue)",purple:"í¼í”Œ(purple)",red:"레드(red)",rosybrown:"로지 브ë¼ìš´(rosy brown)",royalblue:"로얄 블루(royal blue)",saddlebrown:"새들 브ë¼ìš´(saddle brown)",salmon:"ìƒëª¬(salmon)",sandybrown:"샌디 브ë¼ìš´(sandy brown)",seagreen:"씨 그린(sea green)",seashell:"씨쉘(seashell)",sienna:"시ì—나(sienna)",silver:"실버(silver)",skyblue:"ìŠ¤ì¹´ì´ ë¸”ë£¨(sky blue)",slateblue:"슬레ì´íЏ 블루(slate blue)",slategray:"슬레ì´íЏ 그레ì´(slate gray)",slategrey:"슬레ì´íЏ 그레ì´(slate gray)",snow:"스노우(snow)",springgreen:"ìŠ¤í”„ë§ ê·¸ë¦°(spring green)",steelblue:"스틸 블루(steel blue)",tan:"탠(tan)",teal:"틸(teal)",thistle:"시슬(thistle)",tomato:"토마토(tomato)",transparent:"투명(transparent)",turquoise:"터콰즈(turquoise)",violet:"ë°”ì´ì˜¬ë ›(violet)",wheat:"휘트(wheat)",white:"í™”ì´íЏ(white)",whitesmoke:"í™”ì´íЏ 스모í¬(white smoke)",yellow:"ì˜ë¡œìš°(yellow)",yellowgreen:"ì˜ë¡œìš° 그린(yellow green)"})); \ No newline at end of file diff --git a/lib/dojo/nls/nb/colors.js b/lib/dojo/nls/nb/colors.js new file mode 100644 index 0000000000..eeccd67b8e --- /dev/null +++ b/lib/dojo/nls/nb/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/nb/colors",({aliceblue:"blÃ¥hvit",antiquewhite:"antikk hvit",aqua:"akva",aquamarine:"akvamarin",azure:"asur",beige:"beige",bisque:"gulrosa",black:"svart",blanchedalmond:"lys mandel",blue:"blÃ¥",blueviolet:"blÃ¥fiolett",brown:"brun",burlywood:"matt mellombrun",cadetblue:"mørk grønnblÃ¥",chartreuse:"løvgrønn",chocolate:"sjokolade",coral:"korall",cornflowerblue:"kornblÃ¥",cornsilk:"cornsilk",crimson:"karmosinrødt",cyan:"cyan",darkblue:"mørk blÃ¥",darkcyan:"mørk cyan",darkgoldenrod:"mørk gyldenris",darkgray:"mørk grÃ¥",darkgreen:"mørk grønn",darkgrey:"mørk grÃ¥",darkkhaki:"mørk khaki",darkmagenta:"mørk magenta",darkolivegreen:"mørk olivengrønn",darkorange:"mørk oransje",darkorchid:"mørk orkide",darkred:"mørk rød",darksalmon:"mørk lakserosa",darkseagreen:"mørk sjøgrønn",darkslateblue:"mørk skiferblÃ¥",darkslategray:"mørk skifergrÃ¥",darkslategrey:"mørk skifergrÃ¥",darkturquoise:"mørk turkis",darkviolet:"mørk fiolett",deeppink:"dyp rosa",deepskyblue:"dyp himmelblÃ¥",dimgray:"mørk mørkegrÃ¥",dimgrey:"mørk mørkegrÃ¥",dodgerblue:"lys havblÃ¥",firebrick:"mursteinsrød",floralwhite:"blomsterhvit",forestgreen:"skoggrønn",fuchsia:"fuksia",gainsboro:"lys lys grÃ¥",ghostwhite:"egghvit",gold:"gull",goldenrod:"gyldenris",gray:"grÃ¥",green:"grønn",greenyellow:"gulgrønn",grey:"grÃ¥",honeydew:"grønnhvit",hotpink:"halvmørk rosa",indianred:"rustrød",indigo:"indigo",ivory:"elfenbenshvit",khaki:"khaki",lavender:"lavendel",lavenderblush:"lillahvit",lawngreen:"plengrønn",lemonchiffon:"ferskenfarget",lightblue:"lys blÃ¥",lightcoral:"lys korall",lightcyan:"lys cyan",lightgoldenrodyellow:"lys gyldenrisgul",lightgray:"lys grÃ¥",lightgreen:"lys grønn",lightgrey:"lys grÃ¥",lightpink:"lys rosa",lightsalmon:"lys lakserosa",lightseagreen:"lys sjøgrønn",lightskyblue:"lys himmelblÃ¥",lightslategray:"lys skifergrÃ¥",lightslategrey:"lys skifergrÃ¥",lightsteelblue:"lys stÃ¥lblÃ¥",lightyellow:"lys gul",lime:"lime",limegreen:"limegrønn",linen:"lin",magenta:"magenta",maroon:"rødbrun",mediumaquamarine:"middels akvamarin",mediumblue:"mellomblÃ¥",mediumorchid:"middels orkide",mediumpurple:"middels purpur",mediumseagreen:"middels sjøgrønn",mediumslateblue:"middels skiferblÃ¥",mediumspringgreen:"middels vÃ¥rgrønn",mediumturquoise:"middels turkis",mediumvioletred:"middels fiolettrød",midnightblue:"midnattsblÃ¥",mintcream:"mintkrem",mistyrose:"lys rosenrød",moccasin:"lys gulbrun",navajowhite:"gulbrun",navy:"marineblÃ¥",oldlace:"kniplingshvit",olive:"oliven",olivedrab:"middels olivengrønn",orange:"oransje",orangered:"rødoransje",orchid:"orkide",palegoldenrod:"svak gyldenris",palegreen:"svak grønn",paleturquoise:"svak turkis",palevioletred:"svak fiolettrød",papayawhip:"lys papaya",peachpuff:"brunrosa",peru:"lys nøttebrun",pink:"rosa",plum:"plommefarget",powderblue:"lys grønnblÃ¥",purple:"purpur",red:"rød",rosybrown:"brunlilla",royalblue:"kongeblÃ¥",saddlebrown:"mørk nøttebrun",salmon:"lakserosa",sandybrown:"sandbrun",seagreen:"sjøgrønn",seashell:"skjellhvit",sienna:"nøttebrun",silver:"sølvfarget",skyblue:"himmelblÃ¥",slateblue:"skiferblÃ¥",slategray:"skifergrÃ¥",slategrey:"skifergrÃ¥",snow:"snøhvit",springgreen:"vÃ¥rgrønn",steelblue:"stÃ¥lblÃ¥",tan:"matt mellombrun",teal:"mørk grønnblÃ¥",thistle:"lys grÃ¥lilla",tomato:"tomatrød",transparent:"gjennomsiktig",turquoise:"turkis",violet:"fiolett",wheat:"varm sienna",white:"hvit",whitesmoke:"røykhvit",yellow:"gul",yellowgreen:"gulgrønn"})); \ No newline at end of file diff --git a/lib/dojo/nls/nl/colors.js b/lib/dojo/nls/nl/colors.js new file mode 100644 index 0000000000..e88fc32801 --- /dev/null +++ b/lib/dojo/nls/nl/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/nl/colors",({aliceblue:"lichtblauw",antiquewhite:"antiekwit",aqua:"aqua",aquamarine:"aquamarijn",azure:"azuur",beige:"beige",bisque:"oranjegeel",black:"zwart",blanchedalmond:"amandel",blue:"blauw",blueviolet:"violet",brown:"bruin",burlywood:"lichtbruin",cadetblue:"donkerstaalblauw",chartreuse:"groengeel",chocolate:"chocoladebruin",coral:"koraalrood",cornflowerblue:"korenbloemblauw",cornsilk:"maïsgeel",crimson:"karmozijnrood",cyan:"cyaan",darkblue:"donkerblauw",darkcyan:"donkercyaan",darkgoldenrod:"donkergoud",darkgray:"donkergrijs",darkgreen:"donkergroen",darkgrey:"donkergrijs",darkkhaki:"donkerkaki",darkmagenta:"donkermagenta",darkolivegreen:"donkerolijfgroen",darkorange:"donkeroranje",darkorchid:"donkerorchidee",darkred:"donkerrood",darksalmon:"donkerzalm",darkseagreen:"donkerzeegroen",darkslateblue:"donkergrijsblauw",darkslategray:"donkerblauwgrijs",darkslategrey:"donkerblauwgrijs",darkturquoise:"donkerturquoise",darkviolet:"donkerviolet",deeppink:"donkerroze",deepskyblue:"diephemelblauw",dimgray:"dofgrijs",dimgrey:"dofgrijs",dodgerblue:"helderblauw",firebrick:"vuursteenrood",floralwhite:"rozewit",forestgreen:"bosgroen",fuchsia:"fuchsia",gainsboro:"lichtblauwgrijs",ghostwhite:"spierwit",gold:"goud",goldenrod:"goudbruin",gray:"grijs",green:"groen",greenyellow:"groengeel",grey:"grijs",honeydew:"meloen",hotpink:"acaciaroze",indianred:"indisch rood",indigo:"indigo",ivory:"ivoorwit",khaki:"kaki",lavender:"lavendelblauw",lavenderblush:"lavendelblos",lawngreen:"grasgroen",lemonchiffon:"citroengeel",lightblue:"lichtblauw",lightcoral:"lichtkoraal",lightcyan:"lichtcyaan",lightgoldenrodyellow:"lichtgoudgeel",lightgray:"lichtgrijs",lightgreen:"lichtgroen",lightgrey:"lichtgrijs",lightpink:"lichtroze",lightsalmon:"lichtzalm",lightseagreen:"lichtzeegroen",lightskyblue:"lichthemelsblauw",lightslategray:"lichtblauwgrijs",lightslategrey:"lichtblauwgrijs",lightsteelblue:"lichtstaalblauw",lightyellow:"lichtgeel",lime:"limoen",limegreen:"limoengroen",linen:"linnen",magenta:"magenta",maroon:"kastanjebruin",mediumaquamarine:"midaquamarijn",mediumblue:"midblauw",mediumorchid:"midorchidee",mediumpurple:"midpurper",mediumseagreen:"midzeegroen",mediumslateblue:"midgrijsblauw",mediumspringgreen:"midlentegroen",mediumturquoise:"midturquoise",mediumvioletred:"midvioletrood",midnightblue:"nachtblauw",mintcream:"mintroomgeel",mistyrose:"matroze",moccasin:"moccasin",navajowhite:"navajowit",navy:"marineblauw",oldlace:"kant",olive:"olijfgroen",olivedrab:"grijsbruin",orange:"oranje",orangered:"oranjerood",orchid:"orchidee",palegoldenrod:"bleekgeel",palegreen:"bleekgroen",paleturquoise:"bleekturquoise",palevioletred:"bleekvioletrood",papayawhip:"papajaroze",peachpuff:"perzikroze",peru:"bruin",pink:"roze",plum:"pruim",powderblue:"lichtblauw-wit",purple:"purper",red:"rood",rosybrown:"roodbruin",royalblue:"koningsblauw",saddlebrown:"leerbruin",salmon:"zalm",sandybrown:"zandbruin",seagreen:"zeegroen",seashell:"schelp",sienna:"sienna",silver:"zilvergrijs",skyblue:"hemelsblauw",slateblue:"leiblauw",slategray:"leigrijs",slategrey:"leigrijs",snow:"sneeuwwit",springgreen:"lentegroen",steelblue:"staalblauw",tan:"geelbruin",teal:"grijsblauw",thistle:"distel",tomato:"tomaat",transparent:"transparant",turquoise:"turquoise",violet:"violet",wheat:"tarwebruin",white:"wit",whitesmoke:"rookwit",yellow:"geel",yellowgreen:"geelgroen"})); \ No newline at end of file diff --git a/lib/dojo/nls/pl/colors.js b/lib/dojo/nls/pl/colors.js new file mode 100644 index 0000000000..5e777b1869 --- /dev/null +++ b/lib/dojo/nls/pl/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/pl/colors",({aliceblue:"bladoniebieski",antiquewhite:"biel antyczna",aqua:"morski",aquamarine:"akwamaryna",azure:"lazurowy",beige:"beżowy",bisque:"cielistobeżowy",black:"czarny",blanchedalmond:"obrany migdaÅ‚",blue:"niebieski",blueviolet:"błękitnofioÅ‚kowy",brown:"brÄ…zowy",burlywood:"piaskowobeżowy",cadetblue:"szaroniebieski",chartreuse:"żółtooliwkowy",chocolate:"czekoladowy",coral:"koralowy",cornflowerblue:"niebieskochabrowy",cornsilk:"biaÅ‚ożółty",crimson:"karmazynowy",cyan:"niebieskozielony",darkblue:"ciemnoniebieski",darkcyan:"ciemnoniebieskozielony",darkgoldenrod:"ciemne stare zÅ‚oto",darkgray:"ciemnoszary",darkgreen:"ciemnozielony",darkgrey:"ciemnoszary",darkkhaki:"ciemny khaki",darkmagenta:"ciemnoamarantowy",darkolivegreen:"ciemnooliwkowozielony",darkorange:"ciemnopomaraÅ„czowy",darkorchid:"ciemna orchidea",darkred:"ciemnoczerwony",darksalmon:"ciemnoÅ‚ososiowy",darkseagreen:"ciemna zieleÅ„ morska",darkslateblue:"ciemny gołębi",darkslategray:"ciemny mysi",darkslategrey:"ciemny mysi",darkturquoise:"ciemnoturkusowy",darkviolet:"ciemnofioÅ‚kowy",deeppink:"głęboki róż",deepskyblue:"intensywny błękit nieba",dimgray:"przyciemniony szary",dimgrey:"przyciemniony szary",dodgerblue:"niebieski Dodgersów",firebrick:"podpalana cegÅ‚a",floralwhite:"zÅ‚amana biel",forestgreen:"leÅ›na zieleÅ„",fuchsia:"fuksjowy",gainsboro:"jasnoniebieskawoszary",ghostwhite:"sina biel",gold:"zÅ‚oty",goldenrod:"stare zÅ‚oto",gray:"szary",green:"zielony",greenyellow:"zielonożółty",grey:"szary",honeydew:"miodowy",hotpink:"odblaskoworóżowy",indianred:"kasztanowy",indigo:"indygo",ivory:"kość sÅ‚oniowa",khaki:"khaki",lavender:"lawendowy",lavenderblush:"lawendoworóżowy",lawngreen:"trawiasty",lemonchiffon:"babka cytrynowa",lightblue:"jasnoniebieski",lightcoral:"jasnokoralowy",lightcyan:"jasnoniebieskozielony",lightgoldenrodyellow:"jasne stare zÅ‚oto",lightgray:"jasnoszary",lightgreen:"jasnozielony",lightgrey:"jasnoszary",lightpink:"jasnoróżowy",lightsalmon:"jasnoÅ‚ososiowy",lightseagreen:"jasna zieleÅ„ morska",lightskyblue:"jasny błękit nieba",lightslategray:"jasny mysi",lightslategrey:"jasny mysi",lightsteelblue:"jasnostalowoniebieski",lightyellow:"jasnożółty",lime:"limonkowy",limegreen:"limonkowozielony",linen:"lniany",magenta:"amarantowy",maroon:"rdzawoczerwony",mediumaquamarine:"Å›rednia akwamaryna",mediumblue:"Å›redni niebieski",mediumorchid:"Å›rednia orchidea",mediumpurple:"Å›redni fioletowy",mediumseagreen:"Å›rednia zieleÅ„ morska",mediumslateblue:"Å›redni gołębi",mediumspringgreen:"Å›rednia wiosenna zieleÅ„",mediumturquoise:"Å›redni turkusowy",mediumvioletred:"Å›redni fioÅ‚kowowoczerwony",midnightblue:"atramentowoniebieski",mintcream:"miÄ™towokremowy",mistyrose:"mglistoróżany",moccasin:"mokasynowy",navajowhite:"biel Nawaho",navy:"granatowy",oldlace:"ecru",olive:"oliwkowy",olivedrab:"oliwkowozielony",orange:"pomaraÅ„czowy",orangered:"czerwona pomaraÅ„cza",orchid:"orchidea",palegoldenrod:"blade stare zÅ‚oto",palegreen:"bladozielony",paleturquoise:"bladoturkusowy",palevioletred:"bladofioÅ‚kowoczerwony",papayawhip:"kremowa papaja",peachpuff:"cielisty brzoskwiniowy",peru:"palona glina",pink:"różowy",plum:"Å›liwkowy",powderblue:"jasnobladobłękitny",purple:"fioletowy",red:"czerwony",rosybrown:"różanobrÄ…zowy",royalblue:"królewska purpura",saddlebrown:"brÄ…z skórzany",salmon:"Å‚ososiowy",sandybrown:"piaskowobrÄ…zowy",seagreen:"zieleÅ„ morska",seashell:"matowoliliowy",sienna:"sjena",silver:"srebrny",skyblue:"błękit nieba",slateblue:"gołębi",slategray:"mysi",slategrey:"mysi",snow:"Å›nieżny",springgreen:"wiosenna zieleÅ„",steelblue:"stalowoniebieski",tan:"Å›niady",teal:"zielonomodry",thistle:"kwiat ostu",tomato:"pomidorowy",transparent:"przezroczysty",turquoise:"turkusowy",violet:"fioÅ‚kowy",wheat:"pszeniczny",white:"biaÅ‚y",whitesmoke:"siwy",yellow:"żółty",yellowgreen:"żółtozielony"})); \ No newline at end of file diff --git a/lib/dojo/nls/pt-pt/colors.js b/lib/dojo/nls/pt-pt/colors.js new file mode 100644 index 0000000000..9d81a4b71a --- /dev/null +++ b/lib/dojo/nls/pt-pt/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/pt-pt/colors",({aliceblue:"azul alice",antiquewhite:"branco antigo",aqua:"verde-água",aquamarine:"verde-azulado",azure:"azul-celeste",beige:"bege",bisque:"rosa-velho",black:"preto",blanchedalmond:"amêndoa claro",blue:"azul",blueviolet:"azul violeta",brown:"castanho",burlywood:"castanho pinho",cadetblue:"azul cadete",chartreuse:"amarelo esverdeado",chocolate:"chocolate",coral:"coral",cornflowerblue:"azul-violáceo",cornsilk:"branco seda",crimson:"carmesim",cyan:"ciano",darkblue:"azul escuro",darkcyan:"ciano escuro",darkgoldenrod:"ouro velho escuro",darkgray:"cinzento escuro",darkgreen:"verde escuro",darkgrey:"cinzento escuro",darkkhaki:"caqui escuro",darkmagenta:"magenta escuro",darkolivegreen:"verde-azeitona escuro",darkorange:"laranja escuro",darkorchid:"orquídea escuro",darkred:"vermelho escuro",darksalmon:"salmão escuro",darkseagreen:"verde marinho escuro",darkslateblue:"azul ardósia escuro",darkslategray:"cinzento ardósia escuro",darkslategrey:"cinzento ardósia escuro",darkturquoise:"turquesa escuro",darkviolet:"violeta escuro",deeppink:"rosa profundo",deepskyblue:"azul céu profundo",dimgray:"cinzento esbatido",dimgrey:"cinzento esbatido",dodgerblue:"azul furtivo",firebrick:"tijolo fogo",floralwhite:"branco floral",forestgreen:"verde floresta",fuchsia:"fúcsia",gainsboro:"cinzento azulado claro",ghostwhite:"branco sombreado",gold:"dourado",goldenrod:"ouro velho",gray:"cinzento",green:"verde",greenyellow:"amarelo esverdeado",grey:"cinzento",honeydew:"mel",hotpink:"rosa forte",indianred:"almagre",indigo:"índigo",ivory:"marfim",khaki:"caqui",lavender:"alfazema",lavenderblush:"alfazema rosado",lawngreen:"verde relva",lemonchiffon:"limão chiffon",lightblue:"azul claro",lightcoral:"coral claro",lightcyan:"ciano claro",lightgoldenrodyellow:"ouro velho amarelado claro",lightgray:"cinzento claro",lightgreen:"verde claro",lightgrey:"cinzento claro",lightpink:"rosa claro",lightsalmon:"salmão claro",lightseagreen:"verde marinho claro",lightskyblue:"azul céu claro",lightslategray:"cinzento ardósia claro",lightslategrey:"cinzento ardósia claro",lightsteelblue:"azul-aço claro",lightyellow:"amarelo claro",lime:"lima",limegreen:"verde-lima",linen:"linho",magenta:"magenta",maroon:"bordeaux",mediumaquamarine:"verde-azulado médio",mediumblue:"azul médio",mediumorchid:"orquídea médio",mediumpurple:"roxo médio",mediumseagreen:"verde marinho médio",mediumslateblue:"azul ardósia médio",mediumspringgreen:"verde primavera médio",mediumturquoise:"turquesa médio",mediumvioletred:"violeta avermelhado médio",midnightblue:"azul meia-noite",mintcream:"creme de menta",mistyrose:"rosa pálido",moccasin:"mocassim",navajowhite:"branco navajo",navy:"azul marinho",oldlace:"renda antiga",olive:"azeitona",olivedrab:"azeitona claro",orange:"laranja",orangered:"vermelho alaranjado",orchid:"orquídea",palegoldenrod:"ouro velho pálido",palegreen:"verde pálido",paleturquoise:"turquesa pálido",palevioletred:"violeta avermelhado pálido",papayawhip:"creme de papaia",peachpuff:"pêssego",peru:"peru",pink:"rosa",plum:"cor-de-ameixa",powderblue:"azul de esmalte",purple:"roxo",red:"vermelho",rosybrown:"castanho rosado",royalblue:"azul real",saddlebrown:"castanho sela",salmon:"salmão",sandybrown:"castanho areia",seagreen:"verde marinho",seashell:"concha",sienna:"castanho-avermelhado",silver:"prateado",skyblue:"azul céu",slateblue:"azul ardósia",slategray:"cinzento ardósia",slategrey:"cinzento ardósia",snow:"branco-neve",springgreen:"verde primavera",steelblue:"azul-aço",tan:"castanho claro",teal:"verde-azulado",thistle:"cardo",tomato:"vermelho tomate",transparent:"transparente",turquoise:"turquesa",violet:"violeta",wheat:"trigo",white:"branco",whitesmoke:"fumo branco",yellow:"amarelo",yellowgreen:"verde amarelado"})); \ No newline at end of file diff --git a/lib/dojo/nls/pt/colors.js b/lib/dojo/nls/pt/colors.js new file mode 100644 index 0000000000..cc9ada678e --- /dev/null +++ b/lib/dojo/nls/pt/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/pt/colors",({aliceblue:"azul alice",antiquewhite:"branco antigo",aqua:"aqua",aquamarine:"água marinha",azure:"azul celeste",beige:"bege",bisque:"bisque",black:"preto",blanchedalmond:"amêndoa pelada",blue:"azul",blueviolet:"azul violeta",brown:"marrom",burlywood:"burlywood",cadetblue:"azul cadet",chartreuse:"chartreuse",chocolate:"chocolate",coral:"coral",cornflowerblue:"azul centaurea",cornsilk:"cornsilk",crimson:"carmesim",cyan:"ciano",darkblue:"azul escuro",darkcyan:"ciano escuro",darkgoldenrod:"goldenrod escuro",darkgray:"cinza escuro",darkgreen:"verde escuro",darkgrey:"cinza escuro",darkkhaki:"cáqui escuro",darkmagenta:"magenta escuro",darkolivegreen:"verde oliva escuro",darkorange:"laranja escuro",darkorchid:"orquídea escuro",darkred:"vermelho escuro",darksalmon:"salmão escuro",darkseagreen:"verde marinho escuro",darkslateblue:"azul ardósia escuro",darkslategray:"cinza ardósia escuro",darkslategrey:"cinza ardósia escuro",darkturquoise:"turquesa escuro",darkviolet:"violeta escuro",deeppink:"rosa profundo",deepskyblue:"azul céu intenso",dimgray:"cinza turvo",dimgrey:"cinza turvo",dodgerblue:"azul dodger",firebrick:"firebrick",floralwhite:"branco floral",forestgreen:"verde floresta",fuchsia:"fúcsia",gainsboro:"gainsboro",ghostwhite:"branco ghost",gold:"dourado",goldenrod:"goldenrod",gray:"cinza",green:"verde",greenyellow:"amarelo esverdeado",grey:"cinza",honeydew:"honeydew",hotpink:"rosa quente",indianred:"vermelho indiano",indigo:"índigo",ivory:"marfim",khaki:"cáqui",lavender:"lavanda",lavenderblush:"lavanda avermelhada",lawngreen:"verde grama",lemonchiffon:"limão chiffon",lightblue:"azul claro",lightcoral:"coral claro",lightcyan:"ciano claro",lightgoldenrodyellow:"amarelo goldenrod claro",lightgray:"cinza claro",lightgreen:"verde claro",lightgrey:"cinza claro",lightpink:"rosa claro",lightsalmon:"salmão claro",lightseagreen:"verde marinho claro",lightskyblue:"azul céu claro",lightslategray:"cinza ardósia claro",lightslategrey:"cinza ardósia claro",lightsteelblue:"azul aço claro",lightyellow:"amarelo claro",lime:"lima",limegreen:"verde lima",linen:"linho",magenta:"magenta",maroon:"castanho",mediumaquamarine:"água marinha médio",mediumblue:"azul médio",mediumorchid:"orquídea médio",mediumpurple:"roxo médio",mediumseagreen:"verde marinho médio",mediumslateblue:"azul ardósia médio",mediumspringgreen:"verde primavera médio",mediumturquoise:"turquesa médio",mediumvioletred:"vermelho violeta médio",midnightblue:"azul meia-noite",mintcream:"creme de menta",mistyrose:"rosa enevoado",moccasin:"moccasin",navajowhite:"branco navajo",navy:"marinho",oldlace:"cadarço velho",olive:"oliva",olivedrab:"verde oliva",orange:"laranja",orangered:"vermelho alaranjado",orchid:"orquídea",palegoldenrod:"goldenrod esbranquiçado",palegreen:"verde esbranquiçado",paleturquoise:"turquesa esbranquiçado",palevioletred:"vermelho violeta esbranquiçado",papayawhip:"creme de papaya",peachpuff:"peach puff",peru:"peru",pink:"rosa",plum:"ameixa",powderblue:"azul talco",purple:"roxo",red:"vermelho",rosybrown:"marrom rosado",royalblue:"azul royal",saddlebrown:"marrom saddle",salmon:"salmão",sandybrown:"marrom cor de areia",seagreen:"verde marinho",seashell:"seashell",sienna:"sienna",silver:"prateado",skyblue:"azul céu",slateblue:"azul ardósia",slategray:"cinza ardósia",slategrey:"cinza ardósia",snow:"branco neve",springgreen:"verde primavera",steelblue:"azul aço",tan:"tan",teal:"azul esverdeado",thistle:"thistle",tomato:"tomate",transparent:"transparente",turquoise:"turquesa",violet:"violeta",wheat:"trigo",white:"branco",whitesmoke:"fumaça branca",yellow:"amarelo",yellowgreen:"verde amarelado"})); \ No newline at end of file diff --git a/lib/dojo/nls/ro/colors.js b/lib/dojo/nls/ro/colors.js new file mode 100644 index 0000000000..f2b177c2a5 --- /dev/null +++ b/lib/dojo/nls/ro/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/ro/colors",({aliceblue:"alice blue",antiquewhite:"antique white",aqua:"aqua",aquamarine:"aquamarine",azure:"azuriu",beige:"bej",bisque:"bisque",black:"negru",blanchedalmond:"blanched almond",blue:"albastru",blueviolet:"albastru-violet",brown:"brun",burlywood:"burlywood",cadetblue:"albastru cadet",chartreuse:"chartreuse",chocolate:"ciocolată",coral:"coral",cornflowerblue:"cornflower blue",cornsilk:"cornsilk",crimson:"stacojiu",cyan:"cyan",darkblue:"albastru închis",darkcyan:"cyan închis",darkgoldenrod:"goldenrod închis",darkgray:"gri închis",darkgreen:"verde închis",darkgrey:"gri închis",darkkhaki:"kaki închis",darkmagenta:"magenta închis",darkolivegreen:"verde măslină închis",darkorange:"portocaliu închis",darkorchid:"orchid închis",darkred:"roÅŸu închis",darksalmon:"somon închis",darkseagreen:"verde marin închis",darkslateblue:"albastru ardezie închis",darkslategray:"gri ardezie închis",darkslategrey:"gri ardezie închis",darkturquoise:"turcoaz închis",darkviolet:"violet închis",deeppink:"roz profund",deepskyblue:"albastru cer profund",dimgray:"dim gray",dimgrey:"dim gray",dodgerblue:"dodger blue",firebrick:"cărămiziu aprins",floralwhite:"floral white",forestgreen:"forest green",fuchsia:"fuchsia",gainsboro:"gainsboro",ghostwhite:"ghost white",gold:"auriu",goldenrod:"goldenrod",gray:"gri",green:"verde",greenyellow:"verde-gălbui",grey:"gri",honeydew:"honeydew",hotpink:"roz aprins",indianred:"roÅŸu indian",indigo:"indigo",ivory:"ivoriu",khaki:"kaki",lavender:"lavandă",lavenderblush:"lavender blush",lawngreen:"lawn green",lemonchiffon:"lemon chiffon",lightblue:"albastru deschis",lightcoral:"coral deschis",lightcyan:"cyan deschis",lightgoldenrodyellow:"goldenrod gălbui deschis",lightgray:"gri deschis",lightgreen:"verde dschis",lightgrey:"gri deschis",lightpink:"roz deschis",lightsalmon:"somon deschis",lightseagreen:"verde marin deschis",lightskyblue:"albastru cer deschis",lightslategray:"gri ardezie deschis",lightslategrey:"gri ardezie deschis",lightsteelblue:"albastru metalic deschis",lightyellow:"galben deschis",lime:"lime",limegreen:"verde lime",linen:"linen",magenta:"magenta",maroon:"maro",mediumaquamarine:"aquamarin mediu",mediumblue:"albastru mediu",mediumorchid:"orchid mediu",mediumpurple:"purpuriu mediu",mediumseagreen:"verde marin mediu",mediumslateblue:"albastru ardezie mediu",mediumspringgreen:"verde primăvară mediu",mediumturquoise:"turcoaz mediu",mediumvioletred:"roÅŸu-violet mediu",midnightblue:"midnight blue",mintcream:"mint cream",mistyrose:"misty rose",moccasin:"moccasin",navajowhite:"navajo white",navy:"navy",oldlace:"old lace",olive:"oliv",olivedrab:"oliv ÅŸters",orange:"portocaliu",orangered:"roÅŸu portocaliu",orchid:"orchid",palegoldenrod:"goldenrod pal",palegreen:"verde pal",paleturquoise:"turcoaz pal",palevioletred:"roÅŸu-violet pal",papayawhip:"papaya whip",peachpuff:"peach puff",peru:"peru",pink:"roz",plum:"plum",powderblue:"powder blue",purple:"purpuriu",red:"roÅŸu",rosybrown:"rosy brown",royalblue:"albastru regal",saddlebrown:"saddle brown",salmon:"somon",sandybrown:"sandy brown",seagreen:"verde marin",seashell:"seashell",sienna:"sienna",silver:"argintiu",skyblue:"albastru cer",slateblue:"albastru ardezie",slategray:"gri ardezie",slategrey:"gri ardezie",snow:"zăpadă",springgreen:"verde primăvară",steelblue:"albastru metalic",tan:"tan",teal:"teal",thistle:"thistle",tomato:"tomato",transparent:"transparent",turquoise:"turcoaz",violet:"violet",wheat:"wheat",white:"alb",whitesmoke:"white smoke",yellow:"galben",yellowgreen:"verde gălbui"})); \ No newline at end of file diff --git a/lib/dojo/nls/ru/colors.js b/lib/dojo/nls/ru/colors.js new file mode 100644 index 0000000000..72d0b7c650 --- /dev/null +++ b/lib/dojo/nls/ru/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/ru/colors",({aliceblue:"Ñеро-голубой",antiquewhite:"белый антик",aqua:"зеленовато-голубой",aquamarine:"аквамарин",azure:"лазурный",beige:"бежевый",bisque:"биÑквитный",black:"черный",blanchedalmond:"Ñветло-миндальный",blue:"Ñиний",blueviolet:"Ñине-фиолетовый",brown:"коричневый",burlywood:"Ñветло-коричневый",cadetblue:"Ñеро-Ñиний",chartreuse:"желто-Ñалатный",chocolate:"шоколадный",coral:"коралловый",cornflowerblue:"фиолетово-Ñиний",cornsilk:"шелковый оттенок",crimson:"малиновый",cyan:"циан",darkblue:"темно-Ñиний",darkcyan:"темный циан",darkgoldenrod:"темно-золотиÑтый",darkgray:"темно-Ñерый",darkgreen:"темно-зеленый",darkgrey:"темно-Ñерый",darkkhaki:"темный хаки",darkmagenta:"темно-пурпурный",darkolivegreen:"темно-оливковый",darkorange:"темно-оранжевый",darkorchid:"темный орÑель",darkred:"темно-краÑный",darksalmon:"темно-лоÑоÑевый",darkseagreen:"темный морÑкой волны",darkslateblue:"темный грифельно-Ñиний",darkslategray:"темный грифельно-Ñерый",darkslategrey:"темный грифельно-Ñерый",darkturquoise:"темный бирюзовый",darkviolet:"темно-фиолетовый",deeppink:"темно-розовый",deepskyblue:"темный небеÑно-голубой",dimgray:"туÑкло-Ñерый",dimgrey:"туÑкло-Ñерый",dodgerblue:"бледно-Ñиний",firebrick:"кирпичный",floralwhite:"цветочно-белый",forestgreen:"зеленый леÑной",fuchsia:"фукÑин",gainsboro:"бледно-Ñерый",ghostwhite:"призрачно-белый",gold:"золотой",goldenrod:"золотиÑтый",gray:"Ñерый",green:"зеленый",greenyellow:"зелено-желтый",grey:"Ñерый",honeydew:"медовый",hotpink:"краÑно-розовый",indianred:"индийÑкий краÑный",indigo:"индиго",ivory:"Ñлоновой коÑти",khaki:"хаки",lavender:"бледно-лиловый",lavenderblush:"розовато-лиловый",lawngreen:"Ð·ÐµÐ»ÐµÐ½Ð°Ñ Ð»ÑƒÐ¶Ð°Ð¹ÐºÐ°",lemonchiffon:"бледно-лимонный",lightblue:"Ñветло-Ñиний",lightcoral:"Ñветло-коралловый",lightcyan:"Ñветлый циан",lightgoldenrodyellow:"Ñветло-золотиÑтый",lightgray:"Ñветло-Ñерый",lightgreen:"Ñветло-зеленый",lightgrey:"Ñветло-Ñерый",lightpink:"Ñветло-розовый",lightsalmon:"Ñветло-лоÑоÑевый",lightseagreen:"Ñветлый морÑкой волны",lightskyblue:"Ñветлый небеÑно-голубой",lightslategray:"Ñветлый грифельно-Ñерый",lightslategrey:"Ñветлый грифельно-Ñерый",lightsteelblue:"Ñветлый Ñтальной",lightyellow:"Ñветло-желтый",lime:"лайм",limegreen:"зеленый лайм",linen:"хлопковый",magenta:"пурпурный",maroon:"темно-бордовый",mediumaquamarine:"нейтральный аквамарин",mediumblue:"нейтральный Ñиний",mediumorchid:"нейтральный орÑель",mediumpurple:"нейтральный фиолетовый",mediumseagreen:"нейтральный морÑкой волны",mediumslateblue:"нейтральный грифельно-Ñиний",mediumspringgreen:"нейтральный веÑенне-зеленый",mediumturquoise:"нейтральный бирюзовый",mediumvioletred:"нейтральный фиолетово-краÑный",midnightblue:"полуночно-Ñиний",mintcream:"мÑтно-кремовый",mistyrose:"блекло-розовый",moccasin:"мокаÑин",navajowhite:"белый навахо",navy:"темно-Ñиний",oldlace:"матово-белый",olive:"оливковый",olivedrab:"желтовато-Ñерый",orange:"оранжевый",orangered:"оранжево-краÑный",orchid:"орÑель",palegoldenrod:"бледно-золотиÑтый",palegreen:"бледно-зеленый",paleturquoise:"бледно-бирюзовый",palevioletred:"бледный фиолетово-краÑный",papayawhip:"черенок папайи",peachpuff:"перÑиковый",peru:"перу",pink:"розовый",plum:"Ñливовый",powderblue:"пороховой",purple:"фиолетовый",red:"краÑный",rosybrown:"розово-коричневый",royalblue:"королевÑкий голубой",saddlebrown:"кожано-коричневый",salmon:"лоÑоÑевый",sandybrown:"коричнево-пеÑчаный",seagreen:"морÑкой волны",seashell:"морÑÐºÐ°Ñ Ñ€Ð°ÐºÐ¾Ð²Ð¸Ð½Ð°",sienna:"охра",silver:"ÑеребриÑтый",skyblue:"небеÑно-голубой",slateblue:"грифельно-Ñиний",slategray:"грифельно-Ñерый",slategrey:"грифельно-Ñерый",snow:"белоÑнежный",springgreen:"веÑенний зеленый",steelblue:"Ñтальной",tan:"рыжевато-коричневый",teal:"чирок",thistle:"чертополох",tomato:"помидор",transparent:"прозрачный",turquoise:"бирюзовый",violet:"фиолетовый",wheat:"пшеница",white:"белый",whitesmoke:"дымчато-белый",yellow:"желтый",yellowgreen:"желто-зеленый"})); \ No newline at end of file diff --git a/lib/dojo/nls/sk/colors.js b/lib/dojo/nls/sk/colors.js new file mode 100644 index 0000000000..73a47f0e80 --- /dev/null +++ b/lib/dojo/nls/sk/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/sk/colors",({aliceblue:"modrá (alice)",antiquewhite:"antická biela",aqua:"vodová",aquamarine:"akvamarínová",azure:"azúrová",beige:"béžová",bisque:"porcelánová",black:"Äierna",blanchedalmond:"bledá mandľová",blue:"modrá",blueviolet:"modro-fialová",brown:"hnedá",burlywood:"drevená hnedá",cadetblue:"Äerveno modrá",chartreuse:"kartúzska",chocolate:"Äokoládová",coral:"koralová",cornflowerblue:"nevädzová modrá",cornsilk:"ôstie kukurice",crimson:"karmínová",cyan:"zelenomodrá",darkblue:"tmavomodrá",darkcyan:"tmavá zelenomodrá",darkgoldenrod:"tmavá zlatobyľ",darkgray:"tmavosivá",darkgreen:"tmavozelená",darkgrey:"tmavosivá",darkkhaki:"tmavá žltohnedá",darkmagenta:"tmavá purpurová",darkolivegreen:"tmavá olivovo zelená",darkorange:"tmavá oranžová",darkorchid:"tmavá orchidea",darkred:"tmavoÄervená",darksalmon:"tmavá lososová",darkseagreen:"tmavá morská zelená",darkslateblue:"tmavá bridlicová modrá",darkslategray:"tmavá bridlicová sivá",darkslategrey:"tmavá bridlicová sivá",darkturquoise:"tmavá tyrkysová",darkviolet:"tmavofialová",deeppink:"hlboká ružová",deepskyblue:"hlboká modrá obloha",dimgray:"matná sivá",dimgrey:"matná sivá",dodgerblue:"modrá (dodger)",firebrick:"pálená tehla",floralwhite:"biely kvet",forestgreen:"lesná zelená",fuchsia:"fuchsia",gainsboro:"sivá - gainsboro",ghostwhite:"biela (ghost white)",gold:"zlatá",goldenrod:"zlatobyľ",gray:"sivá",green:"zelená",greenyellow:"zelenožltá",grey:"sivá",honeydew:"ambrózia",hotpink:"horúca ružová",indianred:"indiánska Äervená",indigo:"indigo",ivory:"slonovina",khaki:"kaki",lavender:"levanduľa",lavenderblush:"rumencová levanduľa",lawngreen:"trávová zelená",lemonchiffon:"citrónový Å¡ifón",lightblue:"svetlomodrá",lightcoral:"svetlá koralová",lightcyan:"svetlá zelenomodrá",lightgoldenrodyellow:"svetlá zlatobyľová žltá",lightgray:"svetlosivá",lightgreen:"svetlozelená",lightgrey:"svetlosivá",lightpink:"svetloružová",lightsalmon:"svetlá lososová",lightseagreen:"svetlá morská zelená",lightskyblue:"svetlá modrá obloha",lightslategray:"svetlá bridlicová sivá",lightslategrey:"svetlá bridlicová sivá",lightsteelblue:"svetlá oceľovomodrá",lightyellow:"svetložltá",lime:"limetková",limegreen:"limetková zelená",linen:"ľan",magenta:"purpurová",maroon:"gaÅ¡tanová hnedá",mediumaquamarine:"stredná akvamarínová",mediumblue:"stredná modrá",mediumorchid:"stredná orchideová",mediumpurple:"stredná purpurová",mediumseagreen:"stredná morská zelená",mediumslateblue:"stredná bridlicová modrá",mediumspringgreen:"stredná jarná zelená",mediumturquoise:"stredná tyrkysová",mediumvioletred:"stredná fialovoÄervená",midnightblue:"polnoÄná modrá",mintcream:"mätová krémová",mistyrose:"zahmlená ruža",moccasin:"mokasínová",navajowhite:"navajská biela",navy:"námornícka",oldlace:"stará Äipka",olive:"olivová",olivedrab:"fádna olivová",orange:"oranžová",orangered:"oranžovo Äervená",orchid:"orchideová",palegoldenrod:"bledá zlatobyľová",palegreen:"bledá zelená",paleturquoise:"bledá tyrkysová",palevioletred:"bledá fialovo Äervená",papayawhip:"papájový krém",peachpuff:"broskyňový nádych",peru:"peru",pink:"ružová",plum:"slivková",powderblue:"prášková modrá",purple:"purpurová",red:"Äervená",rosybrown:"ružovo hnedá",royalblue:"kráľovská modrá",saddlebrown:"sedlová hnedá",salmon:"lososová",sandybrown:"piesková hnedá",seagreen:"morská zelená",seashell:"lastúrová",sienna:"sienská",silver:"strieborná",skyblue:"modré nebo",slateblue:"bridlicová modrá",slategray:"bridlicová sivá",slategrey:"bridlicová sivá",snow:"snehová",springgreen:"jarná zelená",steelblue:"oceľovomodrá",tan:"žltohnedá",teal:"zelenomodrá",thistle:"bodliaková",tomato:"paradajková",transparent:"priesvitná",turquoise:"tyrkysová",violet:"fialová",wheat:"pÅ¡eniÄná",white:"biela",whitesmoke:"biely dym",yellow:"žltá",yellowgreen:"žltozelená"})); \ No newline at end of file diff --git a/lib/dojo/nls/sl/colors.js b/lib/dojo/nls/sl/colors.js new file mode 100644 index 0000000000..2460d12c5d --- /dev/null +++ b/lib/dojo/nls/sl/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/sl/colors",({aliceblue:"alice blue modra",antiquewhite:"antiÄno bela",aqua:"svetlo modra",aquamarine:"akvamarin",azure:"azurno modra",beige:"bež",bisque:"porcelanasta",black:"Ärna",blanchedalmond:"obledelo mandljeva",blue:"modra",blueviolet:"modro vijoliÄna",brown:"rjava",burlywood:"peÅ¡Äeno sivo-rjava",cadetblue:"kadetsko modra",chartreuse:"chartreuse",chocolate:"Äokoladna",coral:"koralna",cornflowerblue:"plaviÄasto modra",cornsilk:"koruzna",crimson:"karminasta",cyan:"cijan",darkblue:"temno modra",darkcyan:"temno cijan",darkgoldenrod:"temna zlata rozga",darkgray:"temno siva",darkgreen:"temno zelena",darkgrey:"temno siva",darkkhaki:"temno kaki",darkmagenta:"temna magenta",darkolivegreen:"temna olivno zelena",darkorange:"temno oranžna",darkorchid:"temno orhidejasta",darkred:"temno rdeÄa",darksalmon:"temno lososova",darkseagreen:"temno morsko zelena",darkslateblue:"temno skrilasto modra",darkslategray:"temno skrilasto siva",darkslategrey:"temno skrilasto siva",darkturquoise:"temno turkizna",darkviolet:"temno vijoliÄna",deeppink:"temno rožnata",deepskyblue:"temno nebeÅ¡ko modra",dimgray:"pepelnato siva",dimgrey:"pepelnato siva",dodgerblue:"dodgersko modra",firebrick:"opeÄnata",floralwhite:"cvetno bela",forestgreen:"gozdno zelena",fuchsia:"roza",gainsboro:"gainsboro",ghostwhite:"senÄnato bela",gold:"zlata",goldenrod:"zlata rozga",gray:"siva",green:"zelena",greenyellow:"zeleno-rumena",grey:"siva",honeydew:"medena rosa",hotpink:"kriÄeÄe rožnata",indianred:"indijansko rdeÄa",indigo:"indigo",ivory:"slonokoÅ¡Äena",khaki:"kaki",lavender:"sivka",lavenderblush:"rožnato sivka",lawngreen:"travniÅ¡ko zelena",lemonchiffon:"limonast Å¡ifon",lightblue:"svetlo modra",lightcoral:"svetlo koralna",lightcyan:"svetlo cijan",lightgoldenrodyellow:"svetlo rumena zlata rozga",lightgray:"svetlo siva",lightgreen:"svetlo zelena",lightgrey:"svetlo siva",lightpink:"svetlo rožnata",lightsalmon:"svetlo lososova",lightseagreen:"svetlo morsko zelena",lightskyblue:"svetlo nebeÅ¡ko modra",lightslategray:"svetlo skrilasto siva",lightslategrey:"svetlo skrilasto siva",lightsteelblue:"svetlo kovinsko modra",lightyellow:"svetlo rumena",lime:"svetlo zelena",limegreen:"apneno zelena",linen:"lanena",magenta:"magenta",maroon:"kostanjeva",mediumaquamarine:"srednji akvamarin",mediumblue:"srednje modra",mediumorchid:"srednje orhidejasta",mediumpurple:"srednje Å¡krlatna",mediumseagreen:"srednje morsko zelena",mediumslateblue:"srednje skrilasto modra",mediumspringgreen:"srednje pomladno zelena",mediumturquoise:"srednje turkizna",mediumvioletred:"srednje vijoliÄno rdeÄa",midnightblue:"polnoÄno modra",mintcream:"metina krema",mistyrose:"megleno rožnata",moccasin:"mokasinasta",navajowhite:"navajo bela",navy:"mornarsko modra",oldlace:"stara Äipka",olive:"olivno zelena",olivedrab:"umazano olivna",orange:"oranžna",orangered:"oranžno-rdeÄa",orchid:"orhidejasta",palegoldenrod:"bleda zlata rozga",palegreen:"bledo zelena",paleturquoise:"bledo turkizna",palevioletred:"bledo vijoliÄno-rdeÄa",papayawhip:"papaja",peachpuff:"breskova",peru:"perujska",pink:"rožnata",plum:"slivova",powderblue:"kobaltovo modra",purple:"Å¡krlatna",red:"rdeÄa",rosybrown:"rožnato rjava",royalblue:"kraljevsko modra",saddlebrown:"sedlasto rjava",salmon:"lososova",sandybrown:"peÅ¡Äeno rjava",seagreen:"morsko zelena",seashell:"morska lupina",sienna:"sienna",silver:"srebrna",skyblue:"nebeÅ¡ko modra",slateblue:"skrilasto modra",slategray:"skrilasto siva",slategrey:"skrilasto siva",snow:"snežena",springgreen:"pomladno zelena",steelblue:"kovinsko modra",tan:"rumeno-rjava",teal:"modrozelena",thistle:"osatna",tomato:"paradižnikova",transparent:"prosojno",turquoise:"turkizna",violet:"vijoliÄna",wheat:"pÅ¡eniÄna",white:"bela",whitesmoke:"megleno bela",yellow:"rumena",yellowgreen:"rumeno-zelena"})); \ No newline at end of file diff --git a/lib/dojo/nls/sv/colors.js b/lib/dojo/nls/sv/colors.js new file mode 100644 index 0000000000..6d700cfd04 --- /dev/null +++ b/lib/dojo/nls/sv/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/sv/colors",({aliceblue:"aliceblÃ¥",antiquewhite:"antikvitt",aqua:"akvamarin",aquamarine:"akvamarin",azure:"azurblÃ¥tt",beige:"beige",bisque:"biskvi",black:"svart",blanchedalmond:"skÃ¥llad mandel",blue:"blÃ¥tt",blueviolet:"blÃ¥violett",brown:"brunt",burlywood:"träfärgat",cadetblue:"kadettblÃ¥tt",chartreuse:"chartreuse",chocolate:"choklad",coral:"korall",cornflowerblue:"kornblÃ¥tt",cornsilk:"gulvitt",crimson:"karmosinrött",cyan:"cyan",darkblue:"mörkblÃ¥tt",darkcyan:"mörkt cyan",darkgoldenrod:"mörkt gullris",darkgray:"mörkgrÃ¥tt",darkgreen:"mörkgrönt",darkgrey:"mörkgrÃ¥tt",darkkhaki:"mörkt kaki",darkmagenta:"mörk magenta",darkolivegreen:"mörkt olivgrönt",darkorange:"mörkorange",darkorchid:"mörkt orkidé",darkred:"mörkrött",darksalmon:"mörkt laxfärgat",darkseagreen:"mörkt havsgrönt",darkslateblue:"mörkt skifferblÃ¥tt",darkslategray:"mörkt skiffergrÃ¥tt",darkslategrey:"mörkt skiffergrÃ¥tt",darkturquoise:"mörkturkost",darkviolet:"mörkviolett",deeppink:"djuprosa",deepskyblue:"mörkt himmelsblÃ¥tt",dimgray:"smutsgrÃ¥tt",dimgrey:"smutsgrÃ¥tt",dodgerblue:"dodgerblÃ¥tt",firebrick:"tegelstensrött",floralwhite:"blomvitt",forestgreen:"skogsgrönt",fuchsia:"fuchsia",gainsboro:"gainsboro",ghostwhite:"spökvitt",gold:"guld",goldenrod:"gullris",gray:"grÃ¥tt",green:"grönt",greenyellow:"gröngult",grey:"grÃ¥tt",honeydew:"honungsdagg",hotpink:"varmrosa",indianred:"indianrött",indigo:"indigo",ivory:"elfenbensvitt",khaki:"kaki",lavender:"lavendel",lavenderblush:"lavendelskimrande",lawngreen:"gräsmattegrönt",lemonchiffon:"citronchiffong",lightblue:"ljusblÃ¥tt",lightcoral:"ljuskorall",lightcyan:"ljust cyan",lightgoldenrodyellow:"ljust gullrisgult",lightgray:"ljusgrÃ¥tt",lightgreen:"ljusgrönt",lightgrey:"ljusgrÃ¥tt",lightpink:"ljusrosa",lightsalmon:"ljust laxfärgat",lightseagreen:"ljust havsgrönt",lightskyblue:"ljust himmelsblÃ¥tt",lightslategray:"ljust skiffergrÃ¥tt",lightslategrey:"ljust skiffergrÃ¥tt",lightsteelblue:"ljust stÃ¥lblÃ¥tt",lightyellow:"ljusgult",lime:"lime",limegreen:"limegrönt",linen:"linne",magenta:"magenta",maroon:"rödbrunt",mediumaquamarine:"mellanakvamarin",mediumblue:"mellanblÃ¥tt",mediumorchid:"mellanorkidé",mediumpurple:"mellanlila",mediumseagreen:"mellanhavsgrönt",mediumslateblue:"mellanskifferblÃ¥tt",mediumspringgreen:"mellanvÃ¥rgrönt",mediumturquoise:"mellanturkost",mediumvioletred:"mellanviolettrött",midnightblue:"midnattsblÃ¥tt",mintcream:"mintgrädde",mistyrose:"dunkelrosa",moccasin:"mockasin",navajowhite:"navajovitt",navy:"marinblÃ¥tt",oldlace:"spetsvitt",olive:"olivfärgat",olivedrab:"olivsmutsgult",orange:"orange",orangered:"orangerött",orchid:"orkidé",palegoldenrod:"blekt gullris",palegreen:"blekgrönt",paleturquoise:"blekturkost",palevioletred:"blekviolettrött",papayawhip:"papayaröra",peachpuff:"persika",peru:"peru",pink:"rosa",plum:"plommon",powderblue:"pulverblÃ¥tt",purple:"lila",red:"rött",rosybrown:"rosenbrunt",royalblue:"kungligt blÃ¥tt",saddlebrown:"sadelbrunt",salmon:"laxfärgat",sandybrown:"sandbrunt",seagreen:"havsgrönt",seashell:"snäckskal",sienna:"sienna",silver:"silver",skyblue:"himmelsblÃ¥tt",slateblue:"skifferblÃ¥tt",slategray:"skiffergrÃ¥tt",slategrey:"skiffergrÃ¥tt",snow:"snö",springgreen:"vÃ¥rgrönt",steelblue:"stÃ¥lblÃ¥tt",tan:"mellanbrunt",teal:"blÃ¥grönt",thistle:"tistel",tomato:"tomatrött",transparent:"transparent",turquoise:"turkost",violet:"violett",wheat:"vete",white:"vitt",whitesmoke:"vit rök",yellow:"gult",yellowgreen:"gulgrönt"})); \ No newline at end of file diff --git a/lib/dojo/nls/th/colors.js b/lib/dojo/nls/th/colors.js new file mode 100644 index 0000000000..a0cd64da68 --- /dev/null +++ b/lib/dojo/nls/th/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/th/colors",({aliceblue:"ฟ้าจาง",antiquewhite:"สีเนื้อ",aqua:"ฟ้าน้ำทะเล",aquamarine:"อะความารีน",azure:"น้ำเงินฟ้า",beige:"น้ำตาลเบจ",bisque:"ขาวข้าวสาร",black:"ดำ",blanchedalmond:"เนื้ออ่อน",blue:"น้ำเงิน",blueviolet:"น้ำเงินม่วง",brown:"น้ำตาล",burlywood:"น้ำตาลอ่อน",cadetblue:"เขียวน้ำเงินหม่น",chartreuse:"เขียวสะท้อนà¹à¸ªà¸‡",chocolate:"ช็อà¸à¹‚à¸à¹à¸¥à¸•",coral:"à¹à¸ªà¸”เข้มนวล",cornflowerblue:"สีคอร์นฟลาวเวอร์บลู",cornsilk:"cornsilk",crimson:"à¹à¸”งเลือดหมู",cyan:"เขียวà¹à¸à¸¡à¸™à¹‰à¸³à¹€à¸‡à¸´à¸™",darkblue:"น้ำเงินเข้ม",darkcyan:"เขียวà¹à¸à¸¡à¸™à¹‰à¸³à¹€à¸‡à¸´à¸™à¹€à¸‚้ม",darkgoldenrod:"ทองเหลืองเข้ม",darkgray:"เทาเข้ม",darkgreen:"เขียวเข้ม",darkgrey:"เทาเข้ม",darkkhaki:"à¸à¸²à¸à¸µà¹€à¸‚้ม",darkmagenta:"à¹à¸”งà¹à¸à¸¡à¸¡à¹ˆà¸§à¸‡à¹€à¸‚้ม",darkolivegreen:"เขียวโอลีฟเข้ม",darkorange:"ส้มเข้ม",darkorchid:"สีม่วงà¸à¸¥à¹‰à¸§à¸¢à¹„ม้เข้ม",darkred:"à¹à¸”งเข้ม",darksalmon:"ส้มเข้ม",darkseagreen:"เขียวทะเลเข้ม",darkslateblue:"น้ำเงินนวลเข้ม",darkslategray:"เทานวลเข้ม",darkslategrey:"เทานวลเข้ม",darkturquoise:"ฟ้าขี้นà¸à¸à¸²à¸£à¹€à¸§à¸à¹€à¸‚้ม",darkviolet:"ม่วงเข้ม",deeppink:"ชมพูเข้ม",deepskyblue:"ฟ้าสด",dimgray:"เทาทึม",dimgrey:"เทาทึม",dodgerblue:"ฟ้าสะท้อนà¹à¸ªà¸‡",firebrick:"สีอิà¸",floralwhite:"ขาวà¹à¸à¸¡à¸Šà¸¡à¸žà¸¹",forestgreen:"หยà¸",fuchsia:"บานเย็น",gainsboro:"เทานวล",ghostwhite:"น้ำข้าว",gold:"ทอง",goldenrod:"ทองเหลือง",gray:"เทา",green:"เขียว",greenyellow:"เขียวà¹à¸à¸¡à¹€à¸«à¸¥à¸·à¸­à¸‡",grey:"เทา",honeydew:"ขาวà¹à¸à¸¡à¹€à¸‚ียว",hotpink:"ชมพูจัด",indianred:"à¹à¸”งอมเหลือง",indigo:"คราม",ivory:"งาช้าง",khaki:"à¸à¸²à¸à¸µ",lavender:"ม่วงลาเวนเดอร์",lavenderblush:"นมเย็น",lawngreen:"เขียวหà¸à¹‰à¸²à¸­à¹ˆà¸­à¸™",lemonchiffon:"lemon chiffon",lightblue:"น้ำเงินอ่อน",lightcoral:"ชมพูอมà¹à¸”ง",lightcyan:"เขียวà¹à¸à¸¡à¸™à¹‰à¸³à¹€à¸‡à¸´à¸™à¸­à¹ˆà¸­à¸™",lightgoldenrodyellow:"ทองเหลืองอ่อน",lightgray:"เทาอ่อน",lightgreen:"เขียวอ่อน",lightgrey:"เทาอ่อน",lightpink:"ชมพูอ่อน",lightsalmon:"ส้มจาง",lightseagreen:"เขียวทะเลอ่อน",lightskyblue:"ฟ้าอ่อน",lightslategray:"เทานวลอ่อน",lightslategrey:"เทานวลอ่อน",lightsteelblue:"น้ำเงินนวลอ่อน",lightyellow:"เหลืองอ่อน",lime:"เหลืองมะนาว",limegreen:"เขียวมะนาว",linen:"ลินนิน",magenta:"à¹à¸”งà¹à¸à¸¡à¸¡à¹ˆà¸§à¸‡",maroon:"น้ำตาลà¹à¸”ง",mediumaquamarine:"อะความารีนà¸à¸¥à¸²à¸‡à¹†",mediumblue:"น้ำเงินà¸à¸¥à¸²à¸‡à¹†",mediumorchid:"ม่วงà¸à¸¥à¹‰à¸§à¸¢à¹„ม้à¸à¸¥à¸²à¸‡à¹†",mediumpurple:"ม่วงอัà¸à¸Šà¸±à¸",mediumseagreen:" เขียวทะเลà¸à¸¥à¸²à¸‡à¹†",mediumslateblue:"น้ำเงินนวลà¸à¸¥à¸²à¸‡à¹†",mediumspringgreen:"สีเขียวนวลà¸à¸¥à¸²à¸‡à¹†",mediumturquoise:"ฟ้าขี้นà¸à¸à¸²à¸£à¹€à¸§à¸à¸à¸¥à¸²à¸‡à¹†",mediumvioletred:"à¹à¸”งอมม่วงà¸à¸¥à¸²à¸‡à¹†",midnightblue:"น้ำเงินทึบ",mintcream:"ขาวà¸à¸°à¸—ิ",mistyrose:"ชมพูหม่น",moccasin:"ม็อคค่า",navajowhite:"ส้มหนังà¸à¸¥à¸±à¸š",navy:"น้ำเงินเข้ม",oldlace:"ขาวนวล",olive:"โอลีฟ",olivedrab:"เขียวมะà¸à¸­à¸à¹à¸à¹ˆ",orange:"ส้ม",orangered:"ส้มà¹à¸à¸¡à¹à¸”ง",orchid:"สีà¸à¸¥à¹‰à¸§à¸¢à¹„ม้",palegoldenrod:"ทองเหลืองจาง",palegreen:"เขียวจาง",paleturquoise:"ฟ้าขี้นà¸à¸à¸²à¸£à¹€à¸§à¸à¸ˆà¸²à¸‡",palevioletred:"à¹à¸”งอมม่วงจาง",papayawhip:"ชมพูจาง",peachpuff:" สีพีช",peru:"ส้มดินเผา",pink:"ชมพู",plum:"ม่วงอ่อน",powderblue:"ฟ้าหม่น",purple:"ม่วง",red:"à¹à¸”ง",rosybrown:"à¸à¸°à¸›à¸´",royalblue:"น้ำเงินเข้ม",saddlebrown:"น้ำตาล",salmon:"ส้มอ่อน",sandybrown:"น้ำตาลลูà¸à¸£à¸±à¸‡",seagreen:"เขียวทะเล",seashell:"สีขาวหอยทะเล",sienna:"น้ำตาลอมà¹à¸”ง",silver:"เงิน",skyblue:"ฟ้า",slateblue:"น้ำเงินนวล",slategray:"เทาอมน้ำเงินนวล",slategrey:"เทาอมน้ำเงินนวล",snow:"ขาวหิมะ",springgreen:"เขียว",steelblue:"น้ำเงินด้าน",tan:"à¹à¸—น",teal:"เขียวหัวเป็ด",thistle:"ม่วงจาง",tomato:"à¹à¸ªà¸”",transparent:"สีใส",turquoise:"ฟ้าขี้นà¸à¸à¸²à¸£à¹€à¸§à¸",violet:"ม่วง",wheat:"เหลืองรำข้าว",white:"ขาว",whitesmoke:"ขาวควัน",yellow:"เหลือง",yellowgreen:"เหลืองà¹à¸à¸¡à¹€à¸‚ียว"})); \ No newline at end of file diff --git a/lib/dojo/nls/tr/colors.js b/lib/dojo/nls/tr/colors.js new file mode 100644 index 0000000000..10af7796e0 --- /dev/null +++ b/lib/dojo/nls/tr/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tr/colors",({aliceblue:"alice mavisi",antiquewhite:"antik beyaz",aqua:"deniz mavisi",aquamarine:"akuamarin",azure:"azur mavisi",beige:"bej",bisque:"bisküvi",black:"siyah",blanchedalmond:"soluk badem",blue:"mavi",blueviolet:"mavi-mor",brown:"kahverengi",burlywood:"sarımsı kahverengi",cadetblue:"denizci mavisi",chartreuse:"chartreuse",chocolate:"çikolata",coral:"mercan",cornflowerblue:"peygamber çiçeÄŸi mavisi",cornsilk:"mısır rengi",crimson:"crimson",cyan:"camgöbeÄŸi",darkblue:"koyu mavi",darkcyan:"koyu camgöbeÄŸi",darkgoldenrod:"koyu sarı",darkgray:"koyu gri",darkgreen:"koyu yeÅŸil",darkgrey:"koyu gri",darkkhaki:"koyu haki",darkmagenta:"koyu mor",darkolivegreen:"koyu zeytin yeÅŸili",darkorange:"koyu turuncu",darkorchid:"koyu orkide",darkred:"koyu kırmızı",darksalmon:"koyu somon",darkseagreen:"koyu deniz yeÅŸili",darkslateblue:"koyu arduvaz mavisi",darkslategray:"koyu arduvaz grisi",darkslategrey:"koyu arduvaz grisi",darkturquoise:"koyu turkuaz",darkviolet:"koyu eflatun",deeppink:"koyu pembe",deepskyblue:"koyu gök mavisi",dimgray:"soluk gri",dimgrey:"soluk gri",dodgerblue:"toz mavisi",firebrick:"canlı kiremit",floralwhite:"çiçek beyazı",forestgreen:"koyu deniz yeÅŸili",fuchsia:"fuÅŸya",gainsboro:"gainsboro",ghostwhite:"silik beyaz",gold:"altın",goldenrod:"sarısabır",gray:"gri",green:"yeÅŸil",greenyellow:"yeÅŸil-sarı",grey:"gri",honeydew:"çam sakızı",hotpink:"sıcak pembe",indianred:"kızılderili kırmızısı",indigo:"çivit mavisi",ivory:"fildiÅŸi",khaki:"haki",lavender:"lavanta",lavenderblush:"lavanta pembesi",lawngreen:"çimen yeÅŸili",lemonchiffon:"limoni",lightblue:"açık mavi",lightcoral:"açık mercan",lightcyan:"açık camgöbeÄŸi",lightgoldenrodyellow:"açık sarısabır",lightgray:"açık gri",lightgreen:"açık yeÅŸil",lightgrey:"açık gri",lightpink:"açık pembe",lightsalmon:"açık somon",lightseagreen:"açık deniz yeÅŸili",lightskyblue:"açık gök mavisi",lightslategray:"açık arduvaz grisi",lightslategrey:"açık arduvaz grisi",lightsteelblue:"açık metalik mavi",lightyellow:"açık sarı",lime:"limon yeÅŸili",limegreen:"küf yeÅŸili",linen:"keten",magenta:"macenta",maroon:"kestane",mediumaquamarine:"orta akuamarin",mediumblue:"orta mavi",mediumorchid:"orta orkide",mediumpurple:"orta mor",mediumseagreen:"orta deniz yeÅŸili",mediumslateblue:"orta arduvaz mavisi",mediumspringgreen:"orta bahar yeÅŸili",mediumturquoise:"orta turkuaz",mediumvioletred:"orta menekÅŸe kırmızısı",midnightblue:"gece mavisi",mintcream:"naneli krem",mistyrose:"gülkurusu",moccasin:"mokosen",navajowhite:"navajo beyazı",navy:"lacivert",oldlace:"eski dantel",olive:"zeytin",olivedrab:"asker yeÅŸili",orange:"turuncu",orangered:"turuncu kırmızı",orchid:"orkide",palegoldenrod:"soluk sarısabır",palegreen:"soluk yeÅŸil",paleturquoise:"soluk turkuaz",palevioletred:"soluk menekÅŸe kırmızısı",papayawhip:"papaya sapı",peachpuff:"açık ÅŸeftali",peru:"peru",pink:"pembe",plum:"erik",powderblue:"pudra mavisi",purple:"mor",red:"kırmızı",rosybrown:"pembemsi kahverengi",royalblue:"parlak koyu mavi",saddlebrown:"açık kahve",salmon:"somon",sandybrown:"kum rengi",seagreen:"deniz yeÅŸili",seashell:"deniz kabuÄŸu",sienna:"koyu kahve",silver:"gümüş",skyblue:"gök mavisi",slateblue:"arduvaz mavisi",slategray:"arduvaz grisi",slategrey:"arduvaz grisi",snow:"kar",springgreen:"bahar yeÅŸili",steelblue:"metalik mavi",tan:"güneÅŸ yanığı",teal:"Teal mavi",thistle:"devedikeni",tomato:"domates",transparent:"saydam",turquoise:"turkuaz",violet:"eflatun",wheat:"buÄŸday",white:"beyaz",whitesmoke:"beyaz duman",yellow:"sarı",yellowgreen:"sarı yeÅŸil"})); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_ROOT.js b/lib/dojo/nls/tt-rss-layer_ROOT.js new file mode 100644 index 0000000000..1c18f11bd5 --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_ROOT.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_ROOT",{"dojo/nls/colors":{"aliceblue":"alice blue","antiquewhite":"antique white","aqua":"aqua","aquamarine":"aquamarine","azure":"azure","beige":"beige","bisque":"bisque","black":"black","blanchedalmond":"blanched almond","blue":"blue","blueviolet":"blue-violet","brown":"brown","burlywood":"burlywood","cadetblue":"cadet blue","chartreuse":"chartreuse","chocolate":"chocolate","coral":"coral","cornflowerblue":"cornflower blue","cornsilk":"cornsilk","crimson":"crimson","cyan":"cyan","darkblue":"dark blue","darkcyan":"dark cyan","darkgoldenrod":"dark goldenrod","darkgray":"dark gray","darkgreen":"dark green","darkgrey":"dark gray","darkkhaki":"dark khaki","darkmagenta":"dark magenta","darkolivegreen":"dark olive green","darkorange":"dark orange","darkorchid":"dark orchid","darkred":"dark red","darksalmon":"dark salmon","darkseagreen":"dark sea green","darkslateblue":"dark slate blue","darkslategray":"dark slate gray","darkslategrey":"dark slate gray","darkturquoise":"dark turquoise","darkviolet":"dark violet","deeppink":"deep pink","deepskyblue":"deep sky blue","dimgray":"dim gray","dimgrey":"dim gray","dodgerblue":"dodger blue","firebrick":"fire brick","floralwhite":"floral white","forestgreen":"forest green","fuchsia":"fuchsia","gainsboro":"gainsboro","ghostwhite":"ghost white","gold":"gold","goldenrod":"goldenrod","gray":"gray","green":"green","greenyellow":"green-yellow","grey":"gray","honeydew":"honeydew","hotpink":"hot pink","indianred":"indian red","indigo":"indigo","ivory":"ivory","khaki":"khaki","lavender":"lavender","lavenderblush":"lavender blush","lawngreen":"lawn green","lemonchiffon":"lemon chiffon","lightblue":"light blue","lightcoral":"light coral","lightcyan":"light cyan","lightgoldenrodyellow":"light goldenrod yellow","lightgray":"light gray","lightgreen":"light green","lightgrey":"light gray","lightpink":"light pink","lightsalmon":"light salmon","lightseagreen":"light sea green","lightskyblue":"light sky blue","lightslategray":"light slate gray","lightslategrey":"light slate gray","lightsteelblue":"light steel blue","lightyellow":"light yellow","lime":"lime","limegreen":"lime green","linen":"linen","magenta":"magenta","maroon":"maroon","mediumaquamarine":"medium aquamarine","mediumblue":"medium blue","mediumorchid":"medium orchid","mediumpurple":"medium purple","mediumseagreen":"medium sea green","mediumslateblue":"medium slate blue","mediumspringgreen":"medium spring green","mediumturquoise":"medium turquoise","mediumvioletred":"medium violet-red","midnightblue":"midnight blue","mintcream":"mint cream","mistyrose":"misty rose","moccasin":"moccasin","navajowhite":"navajo white","navy":"navy","oldlace":"old lace","olive":"olive","olivedrab":"olive drab","orange":"orange","orangered":"orange red","orchid":"orchid","palegoldenrod":"pale goldenrod","palegreen":"pale green","paleturquoise":"pale turquoise","palevioletred":"pale violet-red","papayawhip":"papaya whip","peachpuff":"peach puff","peru":"peru","pink":"pink","plum":"plum","powderblue":"powder blue","purple":"purple","red":"red","rosybrown":"rosy brown","royalblue":"royal blue","saddlebrown":"saddle brown","salmon":"salmon","sandybrown":"sandy brown","seagreen":"sea green","seashell":"seashell","sienna":"sienna","silver":"silver","skyblue":"sky blue","slateblue":"slate blue","slategray":"slate gray","slategrey":"slate gray","snow":"snow","springgreen":"spring green","steelblue":"steel blue","tan":"tan","teal":"teal","thistle":"thistle","tomato":"tomato","transparent":"transparent","turquoise":"turquoise","violet":"violet","wheat":"wheat","white":"white","whitesmoke":"white smoke","yellow":"yellow","yellowgreen":"yellow green"},"dijit/nls/loading":{"loadingState":"Loading...","errorState":"Sorry, an error occurred"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Cancel","buttonSave":"Save","itemClose":"Close"},"dijit/form/nls/validate":{"invalidMessage":"The value entered is not valid.","missingMessage":"This value is required.","rangeMessage":"This value is out of range."},"dijit/form/nls/ComboBox":{"previousMessage":"Previous choices","nextMessage":"More choices"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"¤ #,##0.00","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000T","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_ar.js b/lib/dojo/nls/tt-rss-layer_ar.js new file mode 100644 index 0000000000..6626880651 --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_ar.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_ar",{"dojo/nls/colors":{"aliceblue":"أزرق ÙØ§ØªØ­","antiquewhite":"أبيض عتيق","aqua":"أزرق مائي","aquamarine":"أزرق مائل للأخضر (زبرجد)","azure":"أزرق سماوي","beige":"بيج","bisque":"Ø£ØµÙØ± برتقالي الى رمادي Ù…ØµÙØ±","black":"أسود","blanchedalmond":"أخضر مائل للبياض","blue":"أزرق","blueviolet":"أزرق-Ø¨Ù†ÙØ³Ø¬ÙŠ","brown":"بني","burlywood":"خشبي","cadetblue":"أزرق ملون بالرمادي","chartreuse":"أخضر مائل Ù„Ù„ØµÙØ±Ø©","chocolate":"بني غامق","coral":"مرجاني","cornflowerblue":"أزرق عنبري","cornsilk":"حريري","crimson":"قرمزي","cyan":"أزرق سماوي","darkblue":"أزرق داكن","darkcyan":"أزرق سماوي داكن","darkgoldenrod":"Ø£ØµÙØ± ذهبي داكن","darkgray":"رمادي داكن","darkgreen":"أخضر داكن","darkgrey":"رمادي داكن","darkkhaki":"كاكي داكن","darkmagenta":"قرمزي داكن","darkolivegreen":"أخضر زيتوني داكن","darkorange":"برتقالي داكن","darkorchid":"أرجواني داكن","darkred":"أحمر داكن","darksalmon":"ÙØ¶ÙŠ Ø¯Ø§ÙƒÙ†","darkseagreen":"أخضر مائل للأزرق داكن","darkslateblue":"أزرق اردوازي داكن","darkslategray":"رمادي اردوازي داكن","darkslategrey":"رمادي اردوازي داكن","darkturquoise":"تركواز داكن","darkviolet":"Ø¨Ù†ÙØ³Ø¬ÙŠ Ø¯Ø§ÙƒÙ†","deeppink":"أحمر وردي غامق","deepskyblue":"أزرق سماوي غامق","dimgray":"رمادي شاحب","dimgrey":"رمادي شاحب","dodgerblue":"أزرق عنبري","firebrick":"Ø£ØµÙØ± زاهي","floralwhite":"أبيض زهري","forestgreen":"أخضر بلون أشجار الغابات","fuchsia":"Ùوشيا","gainsboro":"رمادي مائل للأزرق ÙØ§ØªØ­","ghostwhite":"أبيض Ø´ÙØ§Ù","gold":"ذهبي","goldenrod":"Ø£ØµÙØ± ذهبي","gray":"رمادي","green":"أخضر","greenyellow":"أخضر مائل Ù„Ù„Ø£ØµÙØ±","grey":"رمادي","honeydew":"أبيض مائل للأخضر","hotpink":"أحمر وردي زاهي","indianred":"أحمر هندي","indigo":"نيلي","ivory":"عاجي","khaki":"كاكي","lavender":"أرجواني شاحب","lavenderblush":"أحمر أرجواني","lawngreen":"أخضر بلون العشب","lemonchiffon":"Ø£ØµÙØ± Ø´ÙØ§Ù","lightblue":"أزرق ÙØ§ØªØ­","lightcoral":"مرجاني ÙØ§ØªØ­","lightcyan":"سماوي ÙØ§ØªØ­","lightgoldenrodyellow":"Ø£ØµÙØ± ذهبي ÙØ§ØªØ­","lightgray":"رمادي ÙØ§ØªØ­","lightgreen":"أخضر ÙØ§ØªØ­","lightgrey":"رمادي ÙØ§ØªØ­","lightpink":"وردي ÙØ§ØªØ­","lightsalmon":"ÙØ¶ÙŠ ÙØ§ØªØ­","lightseagreen":"أخضر مائل للأزرق ÙØ§ØªØ­","lightskyblue":"أزرق سماوي ÙØ§ØªØ­","lightslategray":"رمادي اردوازي ÙØ§ØªØ­","lightslategrey":"رمادي اردوازي ÙØ§ØªØ­","lightsteelblue":"أزرق معدني ÙØ§ØªØ­","lightyellow":"Ø£ØµÙØ± ÙØ§ØªØ­","lime":"ليموني","limegreen":"أخضر ليموني","linen":"كتاني","magenta":"أحمر قرمزي","maroon":"أحمر داكن","mediumaquamarine":"أزرق مائل للأخضر (زبرجد) متوسط","mediumblue":"أزرق متوسط","mediumorchid":"أرجواني متوسط","mediumpurple":"قرمزي متوسط","mediumseagreen":"أخضر مائل للأزرق متوسط","mediumslateblue":"أزرق اردوازي متوسط","mediumspringgreen":"أخضر ربيعي متوسط","mediumturquoise":"تركواز متوسط","mediumvioletred":"أحمر-Ø¨Ù†ÙØ³Ø¬ÙŠ Ù…ØªÙˆØ³Ø·","midnightblue":"أزرق بحري","mintcream":"Ø£ØµÙØ± شاحب مائل للأخضر الزرعي","mistyrose":"وردي","moccasin":"نحاسي أحمر","navajowhite":"أبيض ملاحي","navy":"أزرق داكن","oldlace":"برتقالي مائل Ù„Ù„Ø£ØµÙØ± شاحب","olive":"أخضر زيتوني داكن","olivedrab":"أسود ÙØ§ØªØ­","orange":"برتقالي","orangered":"أحمر مائل للبرتقالي","orchid":"أرجواني ÙØ§ØªØ­","palegoldenrod":"Ø£ØµÙØ± ذهبي شاحب","palegreen":"أخضر شاحب","paleturquoise":"تركواز شاحب","palevioletred":"أحمر-Ø¨Ù†ÙØ³Ø¬ÙŠ Ø´Ø§Ø­Ø¨","papayawhip":"خوخي ÙØ§ØªØ­","peachpuff":"خوخي مائل Ù„Ù„Ø£ØµÙØ±","peru":"بني جملي","pink":"وردي","plum":"أرجواني داكن","powderblue":"أزرق مائل Ù„Ù„Ø£ØµÙØ±","purple":"ارجواني","red":"أحمر","rosybrown":"بني وردي","royalblue":"أزرق ملكي","saddlebrown":"بني ÙØ§ØªØ­","salmon":"برتقالي وردي شاحب","sandybrown":"بني مائل Ù„Ù„ØµÙØ±Ø©","seagreen":"أخضر مائل للأزرق","seashell":"أبيض مائل Ù„Ù„Ø£ØµÙØ± ÙØ§ØªØ­","sienna":"بني محروق","silver":"ÙØ¶ÙŠ","skyblue":"أزرق سماوي","slateblue":"أزرق اردوازي","slategray":"رمادي اردوازي","slategrey":"رمادي اردوازي","snow":"أبيض ثلجي","springgreen":"أخضر ربيعي","steelblue":"أزرق معدني","tan":"خمري","teal":"بترولي","thistle":"ارجواني شاحب","tomato":"أحمر مائل Ù„Ù„Ø£ØµÙØ±","transparent":"Ø´ÙØ§Ù","turquoise":"تركواز","violet":"Ø¨Ù†ÙØ³Ø¬ÙŠ","wheat":"أخضر قمحي","white":"أبيض","whitesmoke":"دخان أبيض","yellow":"Ø£ØµÙØ±","yellowgreen":"أخضر مائل Ù„Ù„Ø£ØµÙØ±"},"dijit/nls/loading":{"loadingState":"جاري التحميل...","errorState":"عÙوا، حدث خطأ"},"dijit/nls/common":{"buttonOk":"حسنا","buttonCancel":"الغاء","buttonSave":"Ø­ÙØ¸","itemClose":"اغلاق"},"dijit/form/nls/validate":{"invalidMessage":"القيمة التي تم ادخالها غير صحيحة.","missingMessage":"يجب ادخال هذه القيمة.","rangeMessage":"هذه القيمة ليس بالمدى الصحيح."},"dijit/form/nls/ComboBox":{"previousMessage":"الاختيارات السابقة","nextMessage":"مزيد من الاختيارات"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 ترليو","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"¤ #,##0.00;¤ #,##0.00-","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 تريليون","decimalFormat":"#,##0.###;#,##0.###-","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_ca.js b/lib/dojo/nls/tt-rss-layer_ca.js new file mode 100644 index 0000000000..b5a369d2bd --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_ca.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_ca",{"dojo/nls/colors":{"aliceblue":"blau cian clar","antiquewhite":"blanc antic","aqua":"aigua","aquamarine":"aiguamarina","azure":"atzur","beige":"beix","bisque":"crema","black":"negre","blanchedalmond":"ametlla pàl·lid","blue":"blau","blueviolet":"blau violeta","brown":"marró","burlywood":"marró arenós","cadetblue":"blau marí","chartreuse":"Llimona pàl·lid","chocolate":"xocolata","coral":"corall","cornflowerblue":"blau blauet","cornsilk":"cru","crimson":"carmesí","cyan":"cian","darkblue":"blau fosc","darkcyan":"cian fosc","darkgoldenrod":"ocre fosc","darkgray":"gris fosc","darkgreen":"verd fosc","darkgrey":"gris fosc","darkkhaki":"caqui fosc","darkmagenta":"magenta fosc","darkolivegreen":"verd oliva fosc","darkorange":"taronja fosc","darkorchid":"orquídia fosc","darkred":"vermell fosc","darksalmon":"salmó fosc","darkseagreen":"verd marí fosc","darkslateblue":"blau pissarra fosc","darkslategray":"gris pissarra fosc","darkslategrey":"gris pissarra fosc","darkturquoise":"turquesa fosc","darkviolet":"violeta fosc","deeppink":"rosa profund","deepskyblue":"blau cel profund","dimgray":"gris fosc","dimgrey":"gris fosc","dodgerblue":"blau Dodger","firebrick":"maó refractari","floralwhite":"blanc floral","forestgreen":"verd bosc","fuchsia":"fúcsia","gainsboro":"gainsboro","ghostwhite":"blanc fantasma","gold":"daurat","goldenrod":"ocre","gray":"gris","green":"verd","greenyellow":"verd grogós","grey":"gris","honeydew":"rosada de mel","hotpink":"rosa fúcsia","indianred":"vermell indi","indigo":"índigo","ivory":"marbre","khaki":"caqui","lavender":"lavanda","lavenderblush":"lavanda vermellosa","lawngreen":"verd gespa","lemonchiffon":"groc brisa","lightblue":"blau clar","lightcoral":"corall clar","lightcyan":"cian clar","lightgoldenrodyellow":"groc ocre clar","lightgray":"gris clar","lightgreen":"verd clar","lightgrey":"gris clar","lightpink":"rosa clar","lightsalmon":"salmó clar","lightseagreen":"verd marí clar","lightskyblue":"blau cel clar","lightslategray":"gris pissarra clar","lightslategrey":"gris pissarra clar","lightsteelblue":"blau acer clar","lightyellow":"groc clar","lime":"verd llimona","limegreen":"verd llimona verda","linen":"lli","magenta":"magenta","maroon":"marró vermellós","mediumaquamarine":"aiguamarina mitjana","mediumblue":"blau mitjà","mediumorchid":"orquídia mitjana","mediumpurple":"porpra mitjana","mediumseagreen":"verd marí mitjà","mediumslateblue":"blau pissarra mitjà","mediumspringgreen":"verd primavera mitjà","mediumturquoise":"turquesa mitjana","mediumvioletred":"vermell violeta mitjà","midnightblue":"blau mitjanit","mintcream":"menta pàl·lid","mistyrose":"rosa dens","moccasin":"mocassí","navajowhite":"blanc Navajo","navy":"blau marí","oldlace":"rosa cremós","olive":"oliva","olivedrab":"gris oliva","orange":"taronja","orangered":"taronja vermellós","orchid":"orquídia","palegoldenrod":"ocre pàl·lid","palegreen":"verd pàl·lid","paleturquoise":"turquesa pàl·lid","palevioletred":"vermell porpra pàl·lid","papayawhip":"préssec pastel","peachpuff":"préssec","peru":"Perú","pink":"rosa","plum":"pruna","powderblue":"blau grisós","purple":"porpra","red":"vermell","rosybrown":"marró rosat","royalblue":"blau marí intens","saddlebrown":"marró mitjà","salmon":"salmó","sandybrown":"marró arenós","seagreen":"verd marí","seashell":"petxina marina","sienna":"siena","silver":"argent","skyblue":"blau cel","slateblue":"blau pissarra","slategray":"gris pissarra","slategrey":"gris pissarra","snow":"neu","springgreen":"verd de primavera","steelblue":"blau acer","tan":"tan","teal":"verd blavós","thistle":"card","tomato":"tomàquet","transparent":"transparent","turquoise":"turquesa","violet":"violeta","wheat":"blat","white":"blanc","whitesmoke":"blanc fumat","yellow":"groc","yellowgreen":"verd grogós"},"dijit/nls/loading":{"loadingState":"S'està carregant...","errorState":"Ens sap greu. S'ha produït un error."},"dijit/nls/common":{"buttonOk":"D'acord","buttonCancel":"Cancel·la","buttonSave":"Desa","itemClose":"Tanca"},"dijit/form/nls/validate":{"invalidMessage":"El valor introduït no és vàlid","missingMessage":"Aquest valor és necessari","rangeMessage":"Aquest valor és fora de l'interval"},"dijit/form/nls/ComboBox":{"previousMessage":"Opcions anteriors","nextMessage":"Més opcions"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 B","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 bilions","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_cs.js b/lib/dojo/nls/tt-rss-layer_cs.js new file mode 100644 index 0000000000..5e6009bf6a --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_cs.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_cs",{"dojo/nls/colors":{"aliceblue":"modravá","antiquewhite":"krémovÄ› bílá","aqua":"azurová","aquamarine":"akvamarínová","azure":"bledÄ› azurová","beige":"bledÄ› béžová","bisque":"bledÄ› oranžová","black":"Äerná","blanchedalmond":"mandlová","blue":"modrá","blueviolet":"modrofialová","brown":"ÄervenohnÄ›dá","burlywood":"krémová","cadetblue":"Å¡edomodrá","chartreuse":"chartreuska","chocolate":"hnÄ›dobéžová","coral":"korálová Äervená","cornflowerblue":"chrpovÄ› modrá","cornsilk":"režná","crimson":"karmínová","cyan":"azurová","darkblue":"tmavÄ› modrá","darkcyan":"tmavÄ› azurová","darkgoldenrod":"tmavÄ› béžová","darkgray":"tmavÄ› Å¡edá","darkgreen":"tmavÄ› zelená","darkgrey":"tmavÄ› Å¡edá","darkkhaki":"pískovÄ› hnÄ›dá","darkmagenta":"tmavÄ› purpurová","darkolivegreen":"tmavÄ› olivová","darkorange":"tmavÄ› oranžová","darkorchid":"tmavÄ› orchidejová","darkred":"tmavÄ› Äervená","darksalmon":"tmavÄ› lososová","darkseagreen":"tmavá moÅ™ská zelená","darkslateblue":"tmavá bÅ™idlicová modrá","darkslategray":"tmavá bÅ™idlicová Å¡edá","darkslategrey":"tmavá bÅ™idlicová Å¡edá","darkturquoise":"tmavÄ› tyrkysová","darkviolet":"tmavÄ› fialová","deeppink":"sytÄ› růžová","deepskyblue":"sytá nebeská modrá","dimgray":"kouÅ™ovÄ› Å¡edá","dimgrey":"kouÅ™ovÄ› Å¡edá","dodgerblue":"jasnÄ› modrá","firebrick":"cihlová","floralwhite":"kvÄ›tinovÄ› bílá","forestgreen":"lesní zelená","fuchsia":"fuchsiová","gainsboro":"bledÄ› Å¡edá","ghostwhite":"modravÄ› bílá","gold":"zlatá","goldenrod":"béžová","gray":"Å¡edá","green":"zelená","greenyellow":"zelenožlutá","grey":"Å¡edá","honeydew":"nazelenalá","hotpink":"jasnÄ› růžová","indianred":"indiánská Äervená","indigo":"indigovÄ› modrá","ivory":"slonovinová","khaki":"písková","lavender":"levandulová","lavenderblush":"levandulová růžová","lawngreen":"jasnÄ› zelená","lemonchiffon":"svÄ›tle citrónová","lightblue":"svÄ›tle modrá","lightcoral":"svÄ›tle korálová","lightcyan":"svÄ›tle azurová","lightgoldenrodyellow":"svÄ›tle žlutá","lightgray":"svÄ›tle Å¡edá","lightgreen":"svÄ›tle zelená","lightgrey":"svÄ›tle Å¡edá","lightpink":"svÄ›tle růžová","lightsalmon":"svÄ›tle lososová","lightseagreen":"svÄ›tlá moÅ™ská zelená","lightskyblue":"svÄ›tlá nebeská modrá","lightslategray":"svÄ›tlá bÅ™idlicová Å¡edá","lightslategrey":"svÄ›tlá bÅ™idlicová Å¡edá","lightsteelblue":"svÄ›tlá ocelová modrá","lightyellow":"bledÄ› žlutá","lime":"limetková","limegreen":"limetkovÄ› zelená","linen":"bledÄ› Å¡edobéžová","magenta":"purpurová","maroon":"kaÅ¡tanová","mediumaquamarine":"stÅ™ední akvamarínová","mediumblue":"stÅ™ednÄ› modrá","mediumorchid":"stÅ™ednÄ› orchidejová","mediumpurple":"stÅ™ednÄ› nachová","mediumseagreen":"stÅ™ední moÅ™ská zelená","mediumslateblue":"stÅ™ední bÅ™idlicová modrá","mediumspringgreen":"stÅ™ední jarní zelená","mediumturquoise":"stÅ™ednÄ› tyrkysová","mediumvioletred":"stÅ™ednÄ› fialovoÄervená","midnightblue":"temnÄ› modrá","mintcream":"mentolová","mistyrose":"růžovobílá","moccasin":"bledÄ› krémová","navajowhite":"svÄ›tle krémová","navy":"námoÅ™nická modrá","oldlace":"svÄ›tle béžová","olive":"olivová","olivedrab":"khaki","orange":"oranžová","orangered":"oranžovoÄervená","orchid":"orchidejová","palegoldenrod":"bledÄ› písková","palegreen":"bledÄ› zelená","paleturquoise":"bledÄ› tyrkysová","palevioletred":"bledÄ› fialovoÄervená","papayawhip":"papájová","peachpuff":"broskvová","peru":"karamelová","pink":"růžová","plum":"Å¡vestková","powderblue":"bledÄ› modrá","purple":"nachová","red":"Äervená","rosybrown":"růžovohnÄ›dá","royalblue":"královská modrá","saddlebrown":"hnÄ›dá","salmon":"lososová","sandybrown":"oranžovohnÄ›dá","seagreen":"moÅ™ská zelená","seashell":"lasturová","sienna":"siena","silver":"stříbrná","skyblue":"nebeská modrá","slateblue":"bÅ™idlicová modrá","slategray":"bÅ™idlicová Å¡edá","slategrey":"bÅ™idlicová Å¡edá","snow":"snÄ›hobílá","springgreen":"jarní zelená","steelblue":"ocelová modrá","tan":"Å¡edobéžová","teal":"Å¡edozelená","thistle":"bodláková","tomato":"tomatová","transparent":"průhledná","turquoise":"tyrkysová","violet":"fialová","wheat":"zlatohnÄ›dá","white":"bílá","whitesmoke":"kouÅ™ovÄ› bílá","yellow":"žlutá","yellowgreen":"žlutozelená"},"dijit/nls/loading":{"loadingState":"Probíhá naÄítání...","errorState":"Omlouváme se, doÅ¡lo k chybÄ›"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Storno","buttonSave":"Uložit","itemClose":"Zavřít"},"dijit/form/nls/validate":{"invalidMessage":"Zadaná hodnota není platná.","missingMessage":"Tato hodnota je vyžadována.","rangeMessage":"Tato hodnota je mimo rozsah."},"dijit/form/nls/ComboBox":{"previousMessage":"PÅ™edchozí volby","nextMessage":"Další volby"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bil'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 bilionů","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_da.js b/lib/dojo/nls/tt-rss-layer_da.js new file mode 100644 index 0000000000..486bcbcafc --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_da.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_da",{"dojo/nls/colors":{"aliceblue":"babyblÃ¥","antiquewhite":"antikhvid","aqua":"akvablÃ¥","aquamarine":"akvamarin","azure":"azurblÃ¥","beige":"beige","bisque":"gulgrÃ¥","black":"sort","blanchedalmond":"blanceret mandel","blue":"blÃ¥","blueviolet":"blÃ¥violet","brown":"brun","burlywood":"tobak","cadetblue":"kadetblÃ¥","chartreuse":"chartreuse","chocolate":"rust","coral":"koralrød","cornflowerblue":"kornblomstblÃ¥","cornsilk":"majs","crimson":"blodrød","cyan":"cyan","darkblue":"mørkeblÃ¥","darkcyan":"mørk cyan","darkgoldenrod":"mørk gyldenris","darkgray":"mørkegrÃ¥","darkgreen":"mørkegrøn","darkgrey":"mørkegrÃ¥","darkkhaki":"mørk khaki","darkmagenta":"mørk magenta","darkolivegreen":"mørk olivengrøn","darkorange":"mørk orange","darkorchid":"mørk orkide","darkred":"mørkerød","darksalmon":"mørk laksefarvet","darkseagreen":"mørk havgrøn","darkslateblue":"mørk skiferblÃ¥","darkslategray":"mørk skifergrÃ¥","darkslategrey":"mørk skifergrÃ¥","darkturquoise":"mørk turkis","darkviolet":"mørkelilla","deeppink":"dyb pink","deepskyblue":"dyb himmelblÃ¥","dimgray":"svag grÃ¥","dimgrey":"svag grÃ¥","dodgerblue":"dodgerblÃ¥","firebrick":"chamottesten","floralwhite":"blomsterhvid","forestgreen":"skovgrøn","fuchsia":"lyslilla","gainsboro":"gainsboro","ghostwhite":"spøgelseshvid","gold":"guld","goldenrod":"gyldenris","gray":"grÃ¥","green":"grøn","greenyellow":"grøngul","grey":"grÃ¥","honeydew":"honningdug","hotpink":"mørk rosa","indianred":"lys rødbrun","indigo":"indigo","ivory":"elfenben","khaki":"khaki","lavender":"lysviolet","lavenderblush":"lavendelrød","lawngreen":"græsgrøn","lemonchiffon":"citronfromage","lightblue":"lyseblÃ¥","lightcoral":"lys koralrød","lightcyan":"lys cyan","lightgoldenrodyellow":"lys gyldenrisgul","lightgray":"lysegrÃ¥","lightgreen":"lysegrøn","lightgrey":"lysegrÃ¥","lightpink":"lys pink","lightsalmon":"lys laksefarvet","lightseagreen":"lys havgrøn","lightskyblue":"lys himmelblÃ¥","lightslategray":"lys skifergrÃ¥","lightslategrey":"lys skifergrÃ¥","lightsteelblue":"lys stÃ¥lblÃ¥","lightyellow":"lysegul","lime":"lime","limegreen":"limegrøn","linen":"lærred","magenta":"magenta","maroon":"rødbrun","mediumaquamarine":"mellem akvamarin","mediumblue":"mellemblÃ¥","mediumorchid":"mellem orkide","mediumpurple":"mellemlilla","mediumseagreen":"mellemhavgrøn","mediumslateblue":"mellemskiferblÃ¥","mediumspringgreen":"mellemforÃ¥rsgrøn","mediumturquoise":"mellemturkis","mediumvioletred":"mellemviolet","midnightblue":"midnatsblÃ¥","mintcream":"pebermyntecreme","mistyrose":"blegrosa","moccasin":"fruesko","navajowhite":"navajo-hvid","navy":"marineblÃ¥","oldlace":"kniplingshvid","olive":"olivengrøn","olivedrab":"brungrøn","orange":"orange","orangered":"orangerød","orchid":"orkide","palegoldenrod":"bleg gyldenris","palegreen":"bleggrøn","paleturquoise":"bleg turkis","palevioletred":"blegviolet","papayawhip":"papaya","peachpuff":"fersken","peru":"peru","pink":"pink","plum":"blomme","powderblue":"pudderblÃ¥","purple":"lilla","red":"rød","rosybrown":"rosabrun","royalblue":"kongeblÃ¥","saddlebrown":"saddelbrun","salmon":"laksefarvet","sandybrown":"sandbrun","seagreen":"havgrøn","seashell":"muslingeskal","sienna":"sienna","silver":"sølv","skyblue":"himmelblÃ¥","slateblue":"skiferblÃ¥","slategray":"skifergrÃ¥","slategrey":"skifergrÃ¥","snow":"sne","springgreen":"forÃ¥rsgrøn","steelblue":"metalblÃ¥","tan":"tan","teal":"blÃ¥grøn","thistle":"tidsel","tomato":"tomat","transparent":"transparent","turquoise":"turkis","violet":"lilla","wheat":"korngul","white":"hvid","whitesmoke":"hvid røg","yellow":"gul","yellowgreen":"gulgrøn"},"dijit/nls/loading":{"loadingState":"Indlæser...","errorState":"Der er opstÃ¥et en fejl"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Annullér","buttonSave":"Gem","itemClose":"Luk"},"dijit/form/nls/validate":{"invalidMessage":"Den angivne værdi er ugyldig.","missingMessage":"Værdien er pÃ¥krævet.","rangeMessage":"Værdien er uden for intervallet."},"dijit/form/nls/ComboBox":{"previousMessage":"Forrige valg","nextMessage":"Flere valg"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":",","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bill","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 billioner","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_de.js b/lib/dojo/nls/tt-rss-layer_de.js new file mode 100644 index 0000000000..b39517c73e --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_de.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_de",{"dojo/nls/colors":{"aliceblue":"Alice-blau","antiquewhite":"Antikweiß","aqua":"Wasserblau","aquamarine":"Aquamarin","azure":"Azur","beige":"Beige","bisque":"Bisquit","black":"Schwarz","blanchedalmond":"Mandelweiß","blue":"Blau","blueviolet":"Blauviolett","brown":"Braun","burlywood":"Burlywood","cadetblue":"Kadettenblau","chartreuse":"Helles Gelbgrün","chocolate":"Schokoladenbraun","coral":"Koralle","cornflowerblue":"Kornblumenblau","cornsilk":"Kornseide","crimson":"Karmesinrot","cyan":"Zyan","darkblue":"Dunkelblau","darkcyan":"Dunkelzyan","darkgoldenrod":"Dunkelgoldgelb","darkgray":"Dunkelgrau","darkgreen":"Dunkelgrün","darkgrey":"Dunkelgrau","darkkhaki":"Dunkelkhaki","darkmagenta":"Dunkelmagenta","darkolivegreen":"Dunkelolivgrün","darkorange":"Dunkelorange","darkorchid":"Dunkelorchidee","darkred":"Dunkelrot","darksalmon":"Dunkellachs","darkseagreen":"Dunkles Meergrün","darkslateblue":"Dunkelschieferblau","darkslategray":"Dunkelschiefergrau","darkslategrey":"Dunkelschiefergrau","darkturquoise":"Dunkeltürkis","darkviolet":"Dunkelviolett","deeppink":"Tiefrosa","deepskyblue":"Dunkles Himmelblau","dimgray":"Blassgrau","dimgrey":"Blassgrau","dodgerblue":"Dodger-blau","firebrick":"Schamottestein","floralwhite":"Blütenweiß","forestgreen":"Forstgrün","fuchsia":"Fuchsia","gainsboro":"Gainsboro","ghostwhite":"Geisterweiß","gold":"Gold","goldenrod":"Goldgelb","gray":"Grau","green":"Grün","greenyellow":"Grüngelb","grey":"Grau","honeydew":"Honigtau","hotpink":"Knallrosa","indianred":"Indischrot","indigo":"Indigoblau","ivory":"Elfenbein","khaki":"Khaki","lavender":"Lavendelblau","lavenderblush":"Lavendelhauch","lawngreen":"Grasgrün","lemonchiffon":"Zitronenchiffon","lightblue":"Hellblau","lightcoral":"Hellkoralle","lightcyan":"Hellzyan","lightgoldenrodyellow":"Hellgoldgelb","lightgray":"Hellgrau","lightgreen":"Hellgrün","lightgrey":"Hellgrau","lightpink":"Hellrosa","lightsalmon":"Helllachs","lightseagreen":"Helles Meergrün","lightskyblue":"Helles Himmelblau","lightslategray":"Helles Schiefergrau","lightslategrey":"Helles Schiefergrau","lightsteelblue":"Helles Stahlblau","lightyellow":"Hellgelb","lime":"Limone","limegreen":"Limonengrün","linen":"Leinen","magenta":"Magenta","maroon":"Kastanienbraun","mediumaquamarine":"Mittelaquamarin","mediumblue":"Mittelblau","mediumorchid":"Mittelorchidee","mediumpurple":"Mittelpurpur","mediumseagreen":"Mittelmeeresgrün","mediumslateblue":"Mittelschieferblau ","mediumspringgreen":"Mittelfrühlingsgrün","mediumturquoise":"Mitteltürkis ","mediumvioletred":"Mittelviolettrot ","midnightblue":"Mitternachtblau","mintcream":"Mintcreme","mistyrose":"Blassrose","moccasin":"Mokassin","navajowhite":"Navajo-weiß","navy":"Marineblau","oldlace":"Alte Spitze","olive":"Oliv","olivedrab":"Olivgrau","orange":"Orange","orangered":"Orangerot","orchid":"Orchidee","palegoldenrod":"Blassgoldgelb","palegreen":"Blassgrün","paleturquoise":"Blasstürkis","palevioletred":"Blassviolettrot ","papayawhip":"Papayacreme","peachpuff":"Pfirsich","peru":"Peru","pink":"Rosa","plum":"Pflaume","powderblue":"Pulverblau","purple":"Purpurrot","red":"Rot","rosybrown":"Rosigbraun","royalblue":"Königsblau","saddlebrown":"Sattelbraun","salmon":"Lachs","sandybrown":"Sandbraun","seagreen":"Meeresgrün","seashell":"Muschelweiß","sienna":"Sienna","silver":"Silbergrau","skyblue":"Himmelblau","slateblue":"Schieferblau","slategray":"Schiefergrau","slategrey":"Schiefergrau","snow":"Schneeweiß","springgreen":"Frühlingsgrün","steelblue":"Stahlblau","tan":"Hautfarben","teal":"Smaragdgrün","thistle":"Distel","tomato":"Tomatenrot","transparent":"Transparent","turquoise":"Türkis","violet":"Violett","wheat":"Weizen","white":"Weiß","whitesmoke":"Rauchweiß","yellow":"Gelb","yellowgreen":"Gelbgrün"},"dijit/nls/loading":{"loadingState":"Wird geladen...","errorState":"Es ist ein Fehler aufgetreten."},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Abbrechen","buttonSave":"Speichern","itemClose":"Schließen"},"dijit/form/nls/validate":{"invalidMessage":"Der eingegebene Wert ist ungültig. ","missingMessage":"Dieser Wert ist erforderlich.","rangeMessage":"Dieser Wert liegt außerhalb des gültigen Bereichs. "},"dijit/form/nls/ComboBox":{"previousMessage":"Vorherige Auswahl","nextMessage":"Weitere Auswahlmöglichkeiten"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 Bio","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 Billionen","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_el.js b/lib/dojo/nls/tt-rss-layer_el.js new file mode 100644 index 0000000000..884c486622 --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_el.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_el",{"dojo/nls/colors":{"aliceblue":"σιέλ","antiquewhite":"ξεθωÏιασμένο λευκό","aqua":"γαλάζιο","aquamarine":"γαλαζοπÏάσινο","azure":"μπλε του ουÏανοÏ","beige":"μπεζ","bisque":"σκοÏÏο κÏεμ","black":"μαÏÏο","blanchedalmond":"ζαχαÏί","blue":"μπλε","blueviolet":"βιολετί","brown":"καφέ","burlywood":"καφέ του ξÏλου","cadetblue":"μπλε του στÏατοÏ","chartreuse":"φωτεινό κιτÏινοπÏάσινο","chocolate":"σοκολατί","coral":"κοÏαλί","cornflowerblue":"μεσαίο μπλε","cornsilk":"ασημί του καλαμποκιοÏ","crimson":"Î²Î±Î¸Ï ÎºÏŒÎºÎºÎ¹Î½Î¿","cyan":"κυανό","darkblue":"σκοÏÏο μπλε","darkcyan":"σκοÏÏο κυανό","darkgoldenrod":"σκοÏÏο χÏυσοκίτÏινο","darkgray":"σκοÏÏο γκÏι","darkgreen":"σκοÏÏο Ï€Ïάσινο","darkgrey":"σκοÏÏο γκÏι","darkkhaki":"σκοÏÏο χακί","darkmagenta":"σκοÏÏο ματζέντα","darkolivegreen":"σκοÏÏο Ï€Ïάσινο λαδί","darkorange":"σκοÏÏο ποÏτοκαλί","darkorchid":"σκοÏÏα οÏχιδέα","darkred":"σκοÏÏο κόκκινο","darksalmon":"σκοÏÏο σομόν","darkseagreen":"σκοÏÏο Ï€Ïάσινο της θάλασσας","darkslateblue":"σκοÏÏο μεταλλικό μπλε","darkslategray":"σκοÏÏο μεταλλικό γκÏι","darkslategrey":"σκοÏÏο μεταλλικό γκÏι","darkturquoise":"σκοÏÏο τυÏκουάζ","darkviolet":"σκοÏÏο βιολετί","deeppink":"Î²Î±Î¸Ï Ïοζ","deepskyblue":"Î²Î±Î¸Ï Î¼Ï€Î»Îµ το ουÏανοÏ","dimgray":"αχνό γκÏι","dimgrey":"αχνό γκÏι","dodgerblue":"σκοÏÏο ελεκτÏίκ","firebrick":"κεÏαμιδί","floralwhite":"λευκό των ανθών","forestgreen":"Ï€Ïάσινο του δάσους","fuchsia":"φοÏξια","gainsboro":"γκÏι σιέλ","ghostwhite":"άσπÏο","gold":"χÏυσαφί","goldenrod":"χÏυσοκίτÏινο","gray":"γκÏι","green":"Ï€Ïάσινο","greenyellow":"Ï€ÏασινοκίτÏινο","grey":"γκÏι","honeydew":"μελί","hotpink":"έντονο Ïοζ","indianred":"ινδικό κόκκινο","indigo":"λουλακί","ivory":"ιβουάÏ","khaki":"χακί","lavender":"λίλα","lavenderblush":"μωβ λεβάντας","lawngreen":"σκοÏÏο Ï€Ïάσινο","lemonchiffon":"λεμονί","lightblue":"ανοιχτό μπλε","lightcoral":"ανοιχτό κοÏαλί","lightcyan":"ανοιχτό κυανό","lightgoldenrodyellow":"ανοιχτό χÏυσοκίτÏινο","lightgray":"ανοιχτό γκÏι","lightgreen":"ανοιχτό Ï€Ïάσινο","lightgrey":"ανοιχτό γκÏι","lightpink":"ανοιχτό Ïοζ","lightsalmon":"ανοιχτό σομόν","lightseagreen":"ανοιχτό Ï€Ïάσινο της θάλασσας","lightskyblue":"ανοιχτό μπλε το ουÏανοÏ","lightslategray":"ανοιχτό μεταλλικό γκÏι","lightslategrey":"ανοιχτό μεταλλικό γκÏι","lightsteelblue":"ανοιχτό μπλε ατσαλιοÏ","lightyellow":"ανοιχτό κίτÏινο","lime":"λαχανί","limegreen":"Ï€Ïάσινο λαχανί","linen":"σπαγγί","magenta":"ματζέντα","maroon":"βυσσινί","mediumaquamarine":"μεσαίο γαλαζοπÏάσινο","mediumblue":"μεσαίο μπλε","mediumorchid":"μεσαία οÏχιδέα","mediumpurple":"μεσαίο μωβ","mediumseagreen":"μεσαίο Ï€Ïάσινο της θάλασσας","mediumslateblue":"μεσαίο μεταλλικό μπλε","mediumspringgreen":"μεσαίο Ï€Ïάσινο της άνοιξης","mediumturquoise":"μεσαίο τυÏκουάζ","mediumvioletred":"μεσαίο κόκκινο βιολετί","midnightblue":"Ï€Î¿Î»Ï ÏƒÎºÎ¿ÏÏο μπλε","mintcream":"βεÏαμάν","mistyrose":"Ï„Ïιανταφυλλί","moccasin":"μόκα","navajowhite":"άσπÏο Îαβάχο","navy":"μπλε του ναυτικοÏ","oldlace":"εκÏοÏ","olive":"Ï€Ïάσινο λαδί","olivedrab":"λαδί","orange":"ποÏτοκαλί","orangered":"ποÏτοκαλοκόκκινο","orchid":"οÏχιδέα","palegoldenrod":"αχνό χÏυσοκίτÏινο","palegreen":"αχνό Ï€Ïάσινο","paleturquoise":"αχνό τυÏκουάζ","palevioletred":"αχνό κόκκινο βιολετί","papayawhip":"αχνό Ïοζ","peachpuff":"Ïοδακινί","peru":"πεÏοÏ","pink":"Ïοζ","plum":"δαμασκηνί","powderblue":"αχνό μπλε","purple":"μωβ","red":"κόκκινο","rosybrown":"καστανό","royalblue":"έντονο μπλε","saddlebrown":"Î²Î±Î¸Ï ÎºÎ±Ï†Î­","salmon":"σομόν","sandybrown":"μπεζ της άμμου","seagreen":"Ï€Ïάσινο της θάλασσας","seashell":"κοχÏλι","sienna":"καφεκίτÏινο","silver":"ασημί","skyblue":"μπλε του ουÏανοÏ","slateblue":"μεταλλικό μπλε","slategray":"μεταλλικό γκÏι","slategrey":"μεταλλικό γκÏι","snow":"χιονί","springgreen":"Ï€Ïάσινο της άνοιξης","steelblue":"μπλε ατσαλιοÏ","tan":"ώχÏα","teal":"πετÏόλ","thistle":"μωβ βιολετί","tomato":"κόκκινο της ντομάτας","transparent":"διαφανές","turquoise":"τυÏκουάζ","violet":"βιολετί","wheat":"σταÏένιο","white":"λευκό","whitesmoke":"λευκός καπνός","yellow":"κίτÏινο","yellowgreen":"κιτÏινοπÏάσινο"},"dijit/nls/loading":{"loadingState":"ΦόÏτωση...","errorState":"Σας ζητοÏμε συγνώμη, παÏουσιάστηκε σφάλμα"},"dijit/nls/common":{"buttonOk":"ΟΚ","buttonCancel":"ΑκÏÏωση","buttonSave":"Αποθήκευση","itemClose":"Κλείσιμο"},"dijit/form/nls/validate":{"invalidMessage":"Η τιμή που καταχωÏήσατε δεν είναι έγκυÏη.","missingMessage":"Η τιμή αυτή Ï€Ïέπει απαÏαίτητα να καθοÏιστεί.","rangeMessage":"Η τιμή αυτή δεν ανήκει στο εÏÏος έγκυÏων τιμών."},"dijit/form/nls/ComboBox":{"previousMessage":"ΠÏοηγοÏμενες επιλογές","nextMessage":"ΠεÏισσότεÏες επιλογές"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":",","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 τÏις","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 Ï„ÏισεκατομμÏÏια","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"e"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_en-gb.js b/lib/dojo/nls/tt-rss-layer_en-gb.js new file mode 100644 index 0000000000..66c4639f2a --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_en-gb.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_en-gb",{"dojo/nls/colors":{"aliceblue":"alice blue","antiquewhite":"antique white","aqua":"aqua","aquamarine":"aquamarine","azure":"azure","beige":"beige","bisque":"bisque","black":"black","blanchedalmond":"blanched almond","blue":"blue","blueviolet":"blue-violet","brown":"brown","burlywood":"burlywood","cadetblue":"cadet blue","chartreuse":"chartreuse","chocolate":"chocolate","coral":"coral","cornflowerblue":"cornflower blue","cornsilk":"cornsilk","crimson":"crimson","cyan":"cyan","darkblue":"dark blue","darkcyan":"dark cyan","darkgoldenrod":"dark goldenrod","darkgray":"dark gray","darkgreen":"dark green","darkgrey":"dark gray","darkkhaki":"dark khaki","darkmagenta":"dark magenta","darkolivegreen":"dark olive green","darkorange":"dark orange","darkorchid":"dark orchid","darkred":"dark red","darksalmon":"dark salmon","darkseagreen":"dark sea green","darkslateblue":"dark slate blue","darkslategray":"dark slate gray","darkslategrey":"dark slate gray","darkturquoise":"dark turquoise","darkviolet":"dark violet","deeppink":"deep pink","deepskyblue":"deep sky blue","dimgray":"dim gray","dimgrey":"dim gray","dodgerblue":"dodger blue","firebrick":"fire brick","floralwhite":"floral white","forestgreen":"forest green","fuchsia":"fuchsia","gainsboro":"gainsboro","ghostwhite":"ghost white","gold":"gold","goldenrod":"goldenrod","gray":"gray","green":"green","greenyellow":"green-yellow","grey":"gray","honeydew":"honeydew","hotpink":"hot pink","indianred":"indian red","indigo":"indigo","ivory":"ivory","khaki":"khaki","lavender":"lavender","lavenderblush":"lavender blush","lawngreen":"lawn green","lemonchiffon":"lemon chiffon","lightblue":"light blue","lightcoral":"light coral","lightcyan":"light cyan","lightgoldenrodyellow":"light goldenrod yellow","lightgray":"light gray","lightgreen":"light green","lightgrey":"light gray","lightpink":"light pink","lightsalmon":"light salmon","lightseagreen":"light sea green","lightskyblue":"light sky blue","lightslategray":"light slate gray","lightslategrey":"light slate gray","lightsteelblue":"light steel blue","lightyellow":"light yellow","lime":"lime","limegreen":"lime green","linen":"linen","magenta":"magenta","maroon":"maroon","mediumaquamarine":"medium aquamarine","mediumblue":"medium blue","mediumorchid":"medium orchid","mediumpurple":"medium purple","mediumseagreen":"medium sea green","mediumslateblue":"medium slate blue","mediumspringgreen":"medium spring green","mediumturquoise":"medium turquoise","mediumvioletred":"medium violet-red","midnightblue":"midnight blue","mintcream":"mint cream","mistyrose":"misty rose","moccasin":"moccasin","navajowhite":"navajo white","navy":"navy","oldlace":"old lace","olive":"olive","olivedrab":"olive drab","orange":"orange","orangered":"orange red","orchid":"orchid","palegoldenrod":"pale goldenrod","palegreen":"pale green","paleturquoise":"pale turquoise","palevioletred":"pale violet-red","papayawhip":"papaya whip","peachpuff":"peach puff","peru":"peru","pink":"pink","plum":"plum","powderblue":"powder blue","purple":"purple","red":"red","rosybrown":"rosy brown","royalblue":"royal blue","saddlebrown":"saddle brown","salmon":"salmon","sandybrown":"sandy brown","seagreen":"sea green","seashell":"seashell","sienna":"sienna","silver":"silver","skyblue":"sky blue","slateblue":"slate blue","slategray":"slate gray","slategrey":"slate gray","snow":"snow","springgreen":"spring green","steelblue":"steel blue","tan":"tan","teal":"teal","thistle":"thistle","tomato":"tomato","transparent":"transparent","turquoise":"turquoise","violet":"violet","wheat":"wheat","white":"white","whitesmoke":"white smoke","yellow":"yellow","yellowgreen":"yellow green"},"dijit/nls/loading":{"loadingState":"Loading...","errorState":"Sorry, an error occurred"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Cancel","buttonSave":"Save","itemClose":"Close"},"dijit/form/nls/validate":{"invalidMessage":"The value entered is not valid.","missingMessage":"This value is required.","rangeMessage":"This value is out of range."},"dijit/form/nls/ComboBox":{"previousMessage":"Previous choices","nextMessage":"More choices"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"¤#,##0.00","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 trillion","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_en-us.js b/lib/dojo/nls/tt-rss-layer_en-us.js new file mode 100644 index 0000000000..a651ee78e9 --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_en-us.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_en-us",{"dojo/nls/colors":{"aliceblue":"alice blue","antiquewhite":"antique white","aqua":"aqua","aquamarine":"aquamarine","azure":"azure","beige":"beige","bisque":"bisque","black":"black","blanchedalmond":"blanched almond","blue":"blue","blueviolet":"blue-violet","brown":"brown","burlywood":"burlywood","cadetblue":"cadet blue","chartreuse":"chartreuse","chocolate":"chocolate","coral":"coral","cornflowerblue":"cornflower blue","cornsilk":"cornsilk","crimson":"crimson","cyan":"cyan","darkblue":"dark blue","darkcyan":"dark cyan","darkgoldenrod":"dark goldenrod","darkgray":"dark gray","darkgreen":"dark green","darkgrey":"dark gray","darkkhaki":"dark khaki","darkmagenta":"dark magenta","darkolivegreen":"dark olive green","darkorange":"dark orange","darkorchid":"dark orchid","darkred":"dark red","darksalmon":"dark salmon","darkseagreen":"dark sea green","darkslateblue":"dark slate blue","darkslategray":"dark slate gray","darkslategrey":"dark slate gray","darkturquoise":"dark turquoise","darkviolet":"dark violet","deeppink":"deep pink","deepskyblue":"deep sky blue","dimgray":"dim gray","dimgrey":"dim gray","dodgerblue":"dodger blue","firebrick":"fire brick","floralwhite":"floral white","forestgreen":"forest green","fuchsia":"fuchsia","gainsboro":"gainsboro","ghostwhite":"ghost white","gold":"gold","goldenrod":"goldenrod","gray":"gray","green":"green","greenyellow":"green-yellow","grey":"gray","honeydew":"honeydew","hotpink":"hot pink","indianred":"indian red","indigo":"indigo","ivory":"ivory","khaki":"khaki","lavender":"lavender","lavenderblush":"lavender blush","lawngreen":"lawn green","lemonchiffon":"lemon chiffon","lightblue":"light blue","lightcoral":"light coral","lightcyan":"light cyan","lightgoldenrodyellow":"light goldenrod yellow","lightgray":"light gray","lightgreen":"light green","lightgrey":"light gray","lightpink":"light pink","lightsalmon":"light salmon","lightseagreen":"light sea green","lightskyblue":"light sky blue","lightslategray":"light slate gray","lightslategrey":"light slate gray","lightsteelblue":"light steel blue","lightyellow":"light yellow","lime":"lime","limegreen":"lime green","linen":"linen","magenta":"magenta","maroon":"maroon","mediumaquamarine":"medium aquamarine","mediumblue":"medium blue","mediumorchid":"medium orchid","mediumpurple":"medium purple","mediumseagreen":"medium sea green","mediumslateblue":"medium slate blue","mediumspringgreen":"medium spring green","mediumturquoise":"medium turquoise","mediumvioletred":"medium violet-red","midnightblue":"midnight blue","mintcream":"mint cream","mistyrose":"misty rose","moccasin":"moccasin","navajowhite":"navajo white","navy":"navy","oldlace":"old lace","olive":"olive","olivedrab":"olive drab","orange":"orange","orangered":"orange red","orchid":"orchid","palegoldenrod":"pale goldenrod","palegreen":"pale green","paleturquoise":"pale turquoise","palevioletred":"pale violet-red","papayawhip":"papaya whip","peachpuff":"peach puff","peru":"peru","pink":"pink","plum":"plum","powderblue":"powder blue","purple":"purple","red":"red","rosybrown":"rosy brown","royalblue":"royal blue","saddlebrown":"saddle brown","salmon":"salmon","sandybrown":"sandy brown","seagreen":"sea green","seashell":"seashell","sienna":"sienna","silver":"silver","skyblue":"sky blue","slateblue":"slate blue","slategray":"slate gray","slategrey":"slate gray","snow":"snow","springgreen":"spring green","steelblue":"steel blue","tan":"tan","teal":"teal","thistle":"thistle","tomato":"tomato","transparent":"transparent","turquoise":"turquoise","violet":"violet","wheat":"wheat","white":"white","whitesmoke":"white smoke","yellow":"yellow","yellowgreen":"yellow green"},"dijit/nls/loading":{"loadingState":"Loading...","errorState":"Sorry, an error occurred"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Cancel","buttonSave":"Save","itemClose":"Close"},"dijit/form/nls/validate":{"invalidMessage":"The value entered is not valid.","missingMessage":"This value is required.","rangeMessage":"This value is out of range."},"dijit/form/nls/ComboBox":{"previousMessage":"Previous choices","nextMessage":"More choices"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 trillion","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_es-es.js b/lib/dojo/nls/tt-rss-layer_es-es.js new file mode 100644 index 0000000000..5ef4c5ea7a --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_es-es.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_es-es",{"dojo/nls/colors":{"aliceblue":"blanco azulado","antiquewhite":"blanco antiguo","aqua":"aguamarina","aquamarine":"aguamarina 2","azure":"blanco cielo","beige":"beige","bisque":"miel","black":"negro","blanchedalmond":"almendra pálido","blue":"azul","blueviolet":"azul violáceo","brown":"marrón","burlywood":"madera","cadetblue":"azul cadete","chartreuse":"verde pálido 2","chocolate":"chocolate","coral":"coral","cornflowerblue":"azul aciano","cornsilk":"crudo","crimson":"carmesí","cyan":"cian","darkblue":"azul oscuro","darkcyan":"cian oscuro","darkgoldenrod":"ocre oscuro","darkgray":"gris oscuro","darkgreen":"verde oscuro","darkgrey":"gris oscuro","darkkhaki":"caqui oscuro","darkmagenta":"magenta oscuro","darkolivegreen":"verde oliva oscuro","darkorange":"naranja oscuro","darkorchid":"orquídea oscuro","darkred":"rojo oscuro","darksalmon":"salmón oscuro","darkseagreen":"verde mar oscuro","darkslateblue":"azul pizarra oscuro","darkslategray":"gris pizarra oscuro","darkslategrey":"gris pizarra oscuro","darkturquoise":"turquesa oscuro","darkviolet":"violeta oscuro","deeppink":"rosa fuerte","deepskyblue":"azul cielo fuerte","dimgray":"gris marengo","dimgrey":"gris marengo","dodgerblue":"azul fuerte","firebrick":"teja","floralwhite":"blanco manteca","forestgreen":"verde pino","fuchsia":"fucsia","gainsboro":"azul gainsboro","ghostwhite":"blanco ligero","gold":"oro","goldenrod":"ocre","gray":"gris","green":"verde","greenyellow":"amarillo verdoso","grey":"gris","honeydew":"flor de rocío","hotpink":"rosa oscuro","indianred":"rojo teja","indigo":"añil","ivory":"marfil","khaki":"caqui","lavender":"lavanda","lavenderblush":"lavanda rosácea","lawngreen":"verde césped","lemonchiffon":"amarillo pastel","lightblue":"azul claro","lightcoral":"coral claro","lightcyan":"cian claro","lightgoldenrodyellow":"ocre claro","lightgray":"gris claro","lightgreen":"verde claro","lightgrey":"gris claro","lightpink":"rosa claro","lightsalmon":"salmón claro","lightseagreen":"verde mar claro","lightskyblue":"azul cielo claro","lightslategray":"gris pizarra claro","lightslategrey":"gris pizarra claro","lightsteelblue":"azul acero claro","lightyellow":"amarillo claro","lime":"lima","limegreen":"lima limón","linen":"blanco arena","magenta":"magenta","maroon":"granate","mediumaquamarine":"aguamarina medio","mediumblue":"azul medio","mediumorchid":"orquídea medio","mediumpurple":"púrpura medio","mediumseagreen":"verde mar medio","mediumslateblue":"azul pizarra medio","mediumspringgreen":"verde primavera medio","mediumturquoise":"turquesa medio","mediumvioletred":"rojo violáceo medio","midnightblue":"azul medianoche","mintcream":"crema menta","mistyrose":"rosa difuminado","moccasin":"arena","navajowhite":"blanco navajo","navy":"azul marino","oldlace":"encaje antiguo","olive":"verde oliva","olivedrab":"verde oliva pardusco","orange":"naranja","orangered":"rojo anaranjado","orchid":"orquídea","palegoldenrod":"ocre pálido","palegreen":"verde pálido","paleturquoise":"turquesa pálido","palevioletred":"rojo violáceo pálido","papayawhip":"papaya claro","peachpuff":"melocotón","peru":"perú","pink":"rosa","plum":"ciruela","powderblue":"azul suave","purple":"púrpura","red":"rojo","rosybrown":"marrón rosáceo","royalblue":"azul real","saddlebrown":"cuero","salmon":"salmón","sandybrown":"marrón arcilla","seagreen":"verde mar","seashell":"blanco marfil","sienna":"siena","silver":"plateado","skyblue":"azul cielo","slateblue":"azul pizarra","slategray":"gris pizarra","slategrey":"gris pizarra","snow":"nieve","springgreen":"verde fuerte","steelblue":"azul acero","tan":"canela","teal":"verde azulado","thistle":"cardo","tomato":"tomate","transparent":"transparente","turquoise":"turquesa","violet":"violeta","wheat":"trigo","white":"blanco","whitesmoke":"blanco ahumado","yellow":"amarillo","yellowgreen":"verde amarillento"},"dijit/nls/loading":{"loadingState":"Cargando...","errorState":"Lo siento, se ha producido un error"},"dijit/nls/common":{"buttonOk":"Aceptar","buttonCancel":"Cancelar","buttonSave":"Guardar","itemClose":"Cerrar"},"dijit/form/nls/validate":{"invalidMessage":"El valor especificado no es válido.","missingMessage":"Este valor es necesario.","rangeMessage":"Este valor está fuera del intervalo."},"dijit/form/nls/ComboBox":{"previousMessage":"Opciones anteriores","nextMessage":"Más opciones"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 B","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 billones","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_fi-fi.js b/lib/dojo/nls/tt-rss-layer_fi-fi.js new file mode 100644 index 0000000000..422ac34046 --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_fi-fi.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_fi-fi",{"dojo/nls/colors":{"aliceblue":"vaaleanharmaansininen","antiquewhite":"antiikinvalkoinen","aqua":"sinivihreä","aquamarine":"vedenvihreä","azure":"taivaansininen","beige":"vaaleanruskea","bisque":"vaaleanruskea","black":"musta","blanchedalmond":"kuorittu manteli","blue":"sininen","blueviolet":"sinivioletti","brown":"ruskea","burlywood":"puunruskea","cadetblue":"meren vihreä","chartreuse":"kellanvihreä","chocolate":"suklaanruskea","coral":"koralli","cornflowerblue":"syvänsininen","cornsilk":"maissinkeltainen","crimson":"karmiininpunainen","cyan":"syaani","darkblue":"tummansininen","darkcyan":"tumma turkoosi","darkgoldenrod":"tumma kultapiisku","darkgray":"tummanharmaa","darkgreen":"tummanvihreä","darkgrey":"tummanharmaa","darkkhaki":"tumma khaki","darkmagenta":"tumma magenta","darkolivegreen":"tummanoliivinvihreä","darkorange":"tummanoranssi","darkorchid":"tumma orkidea","darkred":"tummanpunainen","darksalmon":"tumma lohenpunainen","darkseagreen":"tumma merenvihreä","darkslateblue":"tumma siniharmaa","darkslategray":"tummanharmaa","darkslategrey":"tummanharmaa","darkturquoise":"tumma turkoosi","darkviolet":"tummanvioletti","deeppink":"syvä vaaleanpunainen","deepskyblue":"tumma taivaansininen","dimgray":"himmeänharmaa","dimgrey":"himmeänharmaa","dodgerblue":"Dodger-sininen","firebrick":"poltetun tiilen punainen","floralwhite":"kukanvalkoinen","forestgreen":"metsänvihreä","fuchsia":"purppura","gainsboro":"gainsboro","ghostwhite":"lakananvalkoinen","gold":"kulta","goldenrod":"kullanruskea","gray":"harmaa","green":"vihreä","greenyellow":"vihreänkeltainen","grey":"harmaa","honeydew":"hunajameloninvihreä","hotpink":"pinkki","indianred":"kirkkaanpunainen","indigo":"indigo","ivory":"norsunluu","khaki":"khaki","lavender":"laventeli","lavenderblush":"laventelinpunainen","lawngreen":"ruohonvihreä","lemonchiffon":"sitruunankeltainen","lightblue":"vaaleansininen","lightcoral":"vaalea koralli","lightcyan":"vaalea syaani","lightgoldenrodyellow":"vaalea kultapiiskunkeltainen","lightgray":"vaaleanharmaa","lightgreen":"vaaleanvihreä","lightgrey":"vaaleanharmaa","lightpink":"vaaleanpunainen","lightsalmon":"vaalea lohenpunainen","lightseagreen":"vaalea merenvihreä","lightskyblue":"vaalea taivaansininen","lightslategray":"vaaleanharmaa","lightslategrey":"vaaleanharmaa","lightsteelblue":"vaalea teräksensininen","lightyellow":"vaaleankeltainen","lime":"vaaleanvihreä","limegreen":"limetinvihreä","linen":"pellavanvaalea","magenta":"magenta","maroon":"kastanjanruskea","mediumaquamarine":"keskivaalea vedenvihreä","mediumblue":"keskisininen","mediumorchid":"keskivaalea orkidea","mediumpurple":"keskivaalea violetti","mediumseagreen":"keskivaalea merenvihreä","mediumslateblue":"keskivaalea siniharmaa","mediumspringgreen":"keskivaalea keväänvihreä","mediumturquoise":"keskivaalea turkoosi","mediumvioletred":"keskivaalea lila","midnightblue":"yönsininen","mintcream":"minttukreemi","mistyrose":"utuinen ruusu","moccasin":"nahanruskea","navajowhite":"navajonvalkoinen","navy":"laivastonsininen","oldlace":"vanha pitsi","olive":"oliivinvihreä","olivedrab":"oliivinruskea","orange":"oranssi","orangered":"oranssinpunainen","orchid":"orkidea","palegoldenrod":"haalea kultapiisku","palegreen":"haalea vihreä","paleturquoise":"haalea turkoosi","palevioletred":"haalea lila","papayawhip":"papaijavaahto","peachpuff":"persikka","peru":"peru","pink":"vaaleanpunainen","plum":"luumunpunainen","powderblue":"harmaansininen","purple":"violetti","red":"punainen","rosybrown":"punertavanruskea","royalblue":"syvänsininen","saddlebrown":"satulanruskea","salmon":"lohenpunainen","sandybrown":"hiekanruskea","seagreen":"merenvihreä","seashell":"simpukankuori","sienna":"siena","silver":"hopea","skyblue":"taivaansininen","slateblue":"savensininen","slategray":"savenharmaa","slategrey":"savenharmaa","snow":"lumivalkoinen","springgreen":"keväänvihreä","steelblue":"teräksensininen","tan":"kellanruskea","teal":"sinivihreä","thistle":"ohdake","tomato":"tomaatinpunainen","transparent":"läpinäkyvä","turquoise":"turkoosi","violet":"violetti","wheat":"vehnänkeltainen","white":"valkoinen","whitesmoke":"savunvalkea","yellow":"keltainen","yellowgreen":"kellanvihreä"},"dijit/nls/loading":{"loadingState":"Lataus on meneillään...","errorState":"On ilmennyt virhe."},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Peruuta","buttonSave":"Tallenna","itemClose":"Sulje"},"dijit/form/nls/validate":{"invalidMessage":"Annettu arvo ei kelpaa.","missingMessage":"Tämä arvo on pakollinen.","rangeMessage":"Tämä arvo on sallitun alueen ulkopuolella."},"dijit/form/nls/ComboBox":{"previousMessage":"Edelliset valinnat","nextMessage":"Lisää valintoja"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bilj'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"epäluku","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 biljoonaa","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_fr-fr.js b/lib/dojo/nls/tt-rss-layer_fr-fr.js new file mode 100644 index 0000000000..8244efb336 --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_fr-fr.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_fr-fr",{"dojo/nls/colors":{"aliceblue":"bleu gris","antiquewhite":"blanc antique","aqua":"bleu-vert","aquamarine":"aigue-marine","azure":"bleu azur","beige":"beige","bisque":"beige rosé","black":"noir","blanchedalmond":"coquille d'Å“uf","blue":"bleu","blueviolet":"bleu-violet","brown":"brun","burlywood":"bois précieux","cadetblue":"bleu pétrole","chartreuse":"vert vif","chocolate":"chocolat","coral":"corail","cornflowerblue":"bleuet","cornsilk":"vanille","crimson":"cramoisi","cyan":"cyan","darkblue":"bleu foncé","darkcyan":"cyan foncé","darkgoldenrod":"jaune paille foncé","darkgray":"gris foncé","darkgreen":"vert foncé","darkgrey":"gris foncé","darkkhaki":"kaki foncé","darkmagenta":"magenta foncé","darkolivegreen":"olive foncé","darkorange":"orange foncé","darkorchid":"lilas foncé","darkred":"rouge foncé","darksalmon":"saumon foncé","darkseagreen":"vert d'eau foncé","darkslateblue":"bleu ardoise foncé","darkslategray":"gris ardoise foncé","darkslategrey":"gris ardoise foncé","darkturquoise":"turquoise foncé","darkviolet":"violet foncé","deeppink":"rose soutenu","deepskyblue":"bleu ciel soutenu","dimgray":"gris soutenu","dimgrey":"gris soutenu","dodgerblue":"bleu France","firebrick":"rouge brique","floralwhite":"lys","forestgreen":"vert sapin","fuchsia":"fuchsia","gainsboro":"gris souris","ghostwhite":"blanc laiteux","gold":"or","goldenrod":"jaune paille","gray":"gris","green":"vert","greenyellow":"vert-jaune","grey":"gris","honeydew":"opalin","hotpink":"rose intense","indianred":"rose indien","indigo":"indigo","ivory":"ivoire","khaki":"kaki","lavender":"lavande","lavenderblush":"lavandin","lawngreen":"vert prairie","lemonchiffon":"mousse de citron","lightblue":"bleu clair","lightcoral":"corail clair","lightcyan":"cyan clair","lightgoldenrodyellow":"jaune paille clair","lightgray":"gris clair","lightgreen":"vert clair","lightgrey":"gris clair","lightpink":"rose clair","lightsalmon":"saumon clair","lightseagreen":"vert d'eau clair","lightskyblue":"bleu ciel clair","lightslategray":"gris ardoise clair","lightslategrey":"gris ardoise clair","lightsteelblue":"bleu acier clair","lightyellow":"jaune clair","lime":"vert citron","limegreen":"citron vert","linen":"écru","magenta":"magenta","maroon":"marron","mediumaquamarine":"aigue-marine moyen","mediumblue":"bleu moyen","mediumorchid":"lilas moyen","mediumpurple":"pourpre moyen","mediumseagreen":"vert d'eau moyen","mediumslateblue":"bleu ardoise moyen","mediumspringgreen":"vert printemps moyen","mediumturquoise":"turquoise moyen","mediumvioletred":"rouge violacé moyen","midnightblue":"bleu nuit","mintcream":"crème de menthe","mistyrose":"rose pâle","moccasin":"chamois","navajowhite":"chair","navy":"bleu marine","oldlace":"blanc cassé","olive":"olive","olivedrab":"brun verdâtre","orange":"orange","orangered":"rouge orangé","orchid":"lilas","palegoldenrod":"jaune paille pâle","palegreen":"vert pâle","paleturquoise":"turquoise pâle","palevioletred":"rouge violacé pâle","papayawhip":"crème de papaye","peachpuff":"pêche","peru":"caramel","pink":"rose","plum":"prune","powderblue":"bleu de smalt","purple":"pourpre","red":"rouge","rosybrown":"vieux rose","royalblue":"bleu roi","saddlebrown":"brun cuir","salmon":"saumon","sandybrown":"sable","seagreen":"vert d'eau","seashell":"coquillage","sienna":"terre de sienne","silver":"argent","skyblue":"bleu ciel","slateblue":"bleu ardoise","slategray":"gris ardoise","slategrey":"gris ardoise","snow":"neige","springgreen":"vert printemps","steelblue":"bleu acier","tan":"grège","teal":"sarcelle","thistle":"chardon","tomato":"tomate","transparent":"transparent","turquoise":"turquoise","violet":"violet","wheat":"blé","white":"blanc","whitesmoke":"blanc cendré","yellow":"jaune","yellowgreen":"vert jaunâtre"},"dijit/nls/loading":{"loadingState":"Chargement...","errorState":"Une erreur est survenue"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Annuler","buttonSave":"Enregistrer","itemClose":"Fermer"},"dijit/form/nls/validate":{"invalidMessage":"La valeur indiquée n'est pas correcte.","missingMessage":"Cette valeur est requise.","rangeMessage":"Cette valeur n'est pas comprise dans la plage autorisée."},"dijit/form/nls/ComboBox":{"previousMessage":"Choix précédents","nextMessage":"Plus de choix"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 Bn","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 billions","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_he-il.js b/lib/dojo/nls/tt-rss-layer_he-il.js new file mode 100644 index 0000000000..26275126ea --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_he-il.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_he-il",{"dojo/nls/colors":{"aliceblue":"כחול פלדה","antiquewhite":"לבן עתיק","aqua":"×קווה","aquamarine":"×קוומ×רין","azure":"תכלת ×¢×–","beige":"בז'","bisque":"לבן שקד","black":"שחור","blanchedalmond":"שקד","blue":"כחול","blueviolet":"כחול-סגול","brown":"חו×","burlywood":"×—×•× ×“×”×•×™","cadetblue":"כחול ×™×","chartreuse":"ירוק-צהוב","chocolate":"שוקולד","coral":"×למוג","cornflowerblue":"כחול דרדר","cornsilk":"צהבהב","crimson":"×רגמן","cyan":"טורקיז","darkblue":"כחול ×›×”×”","darkcyan":"טורקיז ×›×”×”","darkgoldenrod":"זהוב ×›×”×”","darkgray":"×פור ×›×”×”","darkgreen":"ירוק ×›×”×”","darkgrey":"×פור ×›×”×”","darkkhaki":"×—××§×™ ×›×”×”","darkmagenta":"בורדו ×›×”×”","darkolivegreen":"ירוק זית ×›×”×”","darkorange":"×›×ª×•× ×›×”×”","darkorchid":"סחלב ×›×”×”","darkred":"××“×•× ×›×”×”","darksalmon":"סלמון ×›×”×”","darkseagreen":"ירוק ×™× ×›×”×”","darkslateblue":"כחול צפחה ×›×”×”","darkslategray":"×פור צפחה ×›×”×”","darkslategrey":"×פור צפחה ×›×”×”","darkturquoise":"טורקיז ×›×”×”","darkviolet":"סגול ×›×”×”","deeppink":"ורוד עמוק","deepskyblue":"כחול ×©×ž×™×™× ×¢×ž×•×§","dimgray":"×פור עמו×","dimgrey":"×פור עמו×","dodgerblue":"כחול","firebrick":"לבנה שרופה","floralwhite":"לבן פרחוני","forestgreen":"ירוק יער","fuchsia":"ורוד בהיר","gainsboro":"גיינסבורו","ghostwhite":"לבן רפ××™×","gold":"זהב","goldenrod":"זהוב","gray":"×פור","green":"ירוק","greenyellow":"ירוק-צהוב","grey":"×פור","honeydew":"ירקרק","hotpink":"ורוד לוהט","indianred":"××“×•× ×“×”×•×™","indigo":"×ינדיגו","ivory":"שנהב","khaki":"×—××§×™","lavender":"לבנדר","lavenderblush":"סומק לבנדר","lawngreen":"ירוק דש×","lemonchiffon":"ירוק לימון","lightblue":"תכלת","lightcoral":"×למוג בהיר","lightcyan":"טורקיז בהיר","lightgoldenrodyellow":"צהוב בהיר","lightgray":"×פור בהיר","lightgreen":"ירוק בהיר","lightgrey":"×פור בהיר","lightpink":"ורוד בהיר","lightsalmon":"סלמון בהיר","lightseagreen":"ירוק ×™× ×‘×”×™×¨","lightskyblue":"כחול ×©×ž×™×™× ×‘×”×™×¨","lightslategray":"×פור צפחה בהיר","lightslategrey":"×פור צפחה בהיר","lightsteelblue":"כחול פלדה בהיר","lightyellow":"צהוב בהיר","lime":"לימון","limegreen":"ירוק לימוני","linen":"פשתן","magenta":"בורדו","maroon":"×—×•× ×דמד×","mediumaquamarine":"כחול בינוני","mediumblue":"תכלת בינוני","mediumorchid":"סחלב בינוני","mediumpurple":"סגול בינוני","mediumseagreen":"ירוק ×™× ×‘×™× ×•× ×™","mediumslateblue":"כחול צפחה בינוני","mediumspringgreen":"ירוק ×ביב בינוני","mediumturquoise":"טורקיז בינוני","mediumvioletred":"סגול-××“×•× ×‘×™× ×•× ×™","midnightblue":"כחול ×›×”×”","mintcream":"×§×¨× ×ž× ×˜×”","mistyrose":"ורוד מעורפל","moccasin":"מוקסין","navajowhite":"לבן נוו×חו","navy":"כחול ×›×”×”","oldlace":"תחרה עתיקה","olive":"זית","olivedrab":"זית עמו×","orange":"כתו×","orangered":"×›×ª×•× ×דו×","orchid":"סחלב","palegoldenrod":"זהוב בהיר","palegreen":"ירוק בהיר","paleturquoise":"טורקיז בהיר","palevioletred":"סגול-××“×•× ×‘×”×™×¨","papayawhip":"פפ××™×”","peachpuff":"קציפת ×פרסק","peru":"פרו","pink":"ורוד","plum":"שזיף","powderblue":"כחול חיוור","purple":"סגול","red":"×דו×","rosybrown":"×—×•× ×•×¨×“×¨×“","royalblue":"כחול מלכותי","saddlebrown":"×—×•× ×“×”×•×™","salmon":"סלמון","sandybrown":"×—×•× ×—×•×œ×™","seagreen":"ירוק ×™×","seashell":"צדף","sienna":"סיינה","silver":"כסף","skyblue":"כחול שמיי×","slateblue":"כחול צפחה","slategray":"×פור צפחה","slategrey":"×פור צפחה","snow":"שלג","springgreen":"ירוק ×ביב","steelblue":"כחול פלדה","tan":"×—×•× ×דמד×","teal":"כחול-ירוק ×›×”×”","thistle":"דרדר","tomato":"עגבניה","transparent":"שקוף","turquoise":"טורקיז","violet":"סגול","wheat":"חיוט","white":"לבן","whitesmoke":"עשן לבן","yellow":"צהוב","yellowgreen":"ירוק צהוב"},"dijit/nls/loading":{"loadingState":"טעינה...","errorState":"×ירעה שגי××”"},"dijit/nls/common":{"buttonOk":"×ישור","buttonCancel":"ביטול","buttonSave":"שמירה","itemClose":"סגירה"},"dijit/form/nls/validate":{"invalidMessage":"הערך שצוין ×ינו חוקי.","missingMessage":"זהו ערך דרוש.","rangeMessage":"הערך מחוץ לטווח."},"dijit/form/nls/ComboBox":{"previousMessage":"×”×פשרויות הקודמות","nextMessage":"×פשרויות נוספות"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 טריליון","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_hu.js b/lib/dojo/nls/tt-rss-layer_hu.js new file mode 100644 index 0000000000..2bed72168c --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_hu.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_hu",{"dojo/nls/colors":{"aliceblue":"Alice kék","antiquewhite":"antik fehér","aqua":"vízszín","aquamarine":"akvamarin","azure":"azúrkék","beige":"bézs","bisque":"porcelán","black":"fekete","blanchedalmond":"hámozott mandula","blue":"kék","blueviolet":"ibolyakék","brown":"barna","burlywood":"nyersfa","cadetblue":"kadétkék","chartreuse":"chartreuse","chocolate":"csokoládé","coral":"korall","cornflowerblue":"búzavirágkék","cornsilk":"kukoricahaj","crimson":"karmazsinvörös","cyan":"ciánkék","darkblue":"sötétkék","darkcyan":"sötét ciánkék","darkgoldenrod":"sötét aranyvesszÅ‘","darkgray":"sötétszürke","darkgreen":"sötétzöld","darkgrey":"sötétszürke","darkkhaki":"sötét khakiszín","darkmagenta":"sötétbíbor","darkolivegreen":"sötét olajzöld","darkorange":"sötét narancssárga","darkorchid":"sötét orchidea","darkred":"sötétvörös","darksalmon":"sötét lazacszín","darkseagreen":"sötét tengerzöld","darkslateblue":"sötét palakék","darkslategray":"sötét palaszürke","darkslategrey":"sötét palaszürke","darkturquoise":"sötét türkizkék","darkviolet":"sötét ibolyaszín","deeppink":"sötétrózsaszín","deepskyblue":"sötét égszínkék","dimgray":"halványszürke","dimgrey":"halványszürke","dodgerblue":"dodger kék","firebrick":"téglavörös","floralwhite":"virágfehér","forestgreen":"erdÅ‘zöld","fuchsia":"fukszia","gainsboro":"gainsboro","ghostwhite":"szellemfehér","gold":"arany","goldenrod":"aranyvesszÅ‘","gray":"szürke","green":"zöld","greenyellow":"zöldessárga","grey":"szürke","honeydew":"mézharmat","hotpink":"meleg rózsaszín","indianred":"indiánvörös","indigo":"indigó","ivory":"elefántcsont","khaki":"khakiszín","lavender":"levendula","lavenderblush":"pirosas levendula","lawngreen":"fűzöld","lemonchiffon":"sárga műselyem","lightblue":"világoskék","lightcoral":"világos korall","lightcyan":"világos ciánkék","lightgoldenrodyellow":"világos aranyvesszÅ‘ sárga","lightgray":"világosszürke","lightgreen":"világoszöld","lightgrey":"világosszürke","lightpink":"világos rózsaszín","lightsalmon":"világos lazacszín","lightseagreen":"világos tengerzöld","lightskyblue":"világos égszínkék","lightslategray":"világos palaszürke","lightslategrey":"világos palaszürke","lightsteelblue":"világos acélkék","lightyellow":"világossárga","lime":"lime","limegreen":"limezöld","linen":"vászonfehér","magenta":"bíbor","maroon":"gesztenyebarna","mediumaquamarine":"közepes akvamarin","mediumblue":"közepes kék","mediumorchid":"közepes orchidea","mediumpurple":"közepes lila","mediumseagreen":"közepes tengerzöld","mediumslateblue":"közepes palakék","mediumspringgreen":"közepes tavaszzöld","mediumturquoise":"közepes türkizkék","mediumvioletred":"közepes ibolyavörös","midnightblue":"éjkék","mintcream":"mentaszósz","mistyrose":"halvány rózsaszín","moccasin":"mokkaszín","navajowhite":"navajo fehér","navy":"tengerészkék","oldlace":"régi csipke","olive":"olajzöld","olivedrab":"olajzöld drapp","orange":"narancssárga","orangered":"narancsvörös","orchid":"orchidea","palegoldenrod":"halvány aranyvesszÅ‘","palegreen":"halványzöld","paleturquoise":"halvány türkizkék","palevioletred":"halvány ibolyavörös","papayawhip":"papayahab","peachpuff":"barackszín","peru":"peru","pink":"rózsaszín","plum":"szilvakék","powderblue":"púderkék","purple":"lila","red":"vörös","rosybrown":"barnásrózsaszín","royalblue":"királykék","saddlebrown":"nyeregbarna","salmon":"lazacszín","sandybrown":"homokbarna","seagreen":"tengerzöld","seashell":"kagyló","sienna":"vörösesbarna","silver":"ezüst","skyblue":"égszínkék","slateblue":"palakék","slategray":"palaszürke","slategrey":"palaszürke","snow":"hó","springgreen":"tavaszzöld","steelblue":"acélkék","tan":"rozsdabarna","teal":"pávakék","thistle":"bogáncs","tomato":"paradicsom","transparent":"átlátszó","turquoise":"türkizkék","violet":"ibolyaszín","wheat":"búza","white":"fehér","whitesmoke":"fehér füst","yellow":"sárga","yellowgreen":"sárgászöld"},"dijit/nls/loading":{"loadingState":"Betöltés...","errorState":"Sajnálom, hiba történt"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Mégse","buttonSave":"Mentés","itemClose":"Bezárás"},"dijit/form/nls/validate":{"invalidMessage":"A megadott érték érvénytelen.","missingMessage":"Meg kell adni egy értéket.","rangeMessage":"Az érték kívül van a megengedett tartományon."},"dijit/form/nls/ComboBox":{"previousMessage":"ElÅ‘zÅ‘ menüpontok","nextMessage":"További menüpontok"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 B","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":" ","percentFormat":"#,##0%","decimalFormat-long":"000 billió","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_it-it.js b/lib/dojo/nls/tt-rss-layer_it-it.js new file mode 100644 index 0000000000..d50b94d556 --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_it-it.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_it-it",{"dojo/nls/colors":{"aliceblue":"bianco ghiaccio","antiquewhite":"rosa antico","aqua":"verde acqua","aquamarine":"acquamarina","azure":"azure","beige":"beige","bisque":"terracotta","black":"nero","blanchedalmond":"beige 2","blue":"blu","blueviolet":"violetto bluastro","brown":"marrone","burlywood":"legno massiccio","cadetblue":"verde petrolio","chartreuse":"verde brillante","chocolate":"cioccolato","coral":"corallo","cornflowerblue":"blu fiordaliso","cornsilk":"crema","crimson":"rosso scarlatto","cyan":"ciano","darkblue":"blu scuro","darkcyan":"celeste scuro","darkgoldenrod":"ocra scuro","darkgray":"grigio scuro","darkgreen":"verde scuro","darkgrey":"grigio scuro","darkkhaki":"cachi scuro","darkmagenta":"magenta scuro","darkolivegreen":"verde oliva scuro","darkorange":"arancione scuro","darkorchid":"orchidea scuro","darkred":"rosso scuro","darksalmon":"salmone scuro","darkseagreen":"verde acqua scuro","darkslateblue":"blu ardesia scuro","darkslategray":"grigio ardesia scuro","darkslategrey":"grigio ardesia scuro","darkturquoise":"turchese scuro","darkviolet":"viola scuro","deeppink":"ciclamino","deepskyblue":"azzurro intenso","dimgray":"grigio tenue","dimgrey":"grigio tenue","dodgerblue":"dodger blue","firebrick":"mattone","floralwhite":"bianco grigio","forestgreen":"verde pino scuro","fuchsia":"fucsia","gainsboro":"gainsboro","ghostwhite":"bianco gesso","gold":"oro","goldenrod":"dorato","gray":"grigio","green":"verde","greenyellow":"verde-giallo","grey":"grigio","honeydew":"miele","hotpink":"rosa acceso","indianred":"terra indiana","indigo":"indaco","ivory":"avorio","khaki":"cachi","lavender":"lavanda","lavenderblush":"lavanda rosa","lawngreen":"verde brillante chiaro","lemonchiffon":"lemon chiffon","lightblue":"blu chiaro","lightcoral":"corallo chiaro","lightcyan":"ciano chiaro","lightgoldenrodyellow":"giallo dorato chiaro","lightgray":"grigio chiaro","lightgreen":"verde chiaro","lightgrey":"grigio chiaro","lightpink":"rosa chiaro","lightsalmon":"salmone chiaro","lightseagreen":"verde acqua chiaro","lightskyblue":"azzurro chiaro","lightslategray":"grigio ardesia chiaro","lightslategrey":"grigio ardesia chiaro","lightsteelblue":"blu acciaio chiaro","lightyellow":"giallo chiaro","lime":"lime","limegreen":"verde lime","linen":"lino","magenta":"magenta","maroon":"Bordeaux","mediumaquamarine":"acquamarina medio","mediumblue":"blu medio","mediumorchid":"orchidea medio","mediumpurple":"viola medio","mediumseagreen":"verde acqua medio","mediumslateblue":"blu ardesia medio","mediumspringgreen":"verde brillante medio","mediumturquoise":"turchese medio","mediumvioletred":"violetto rosso medio","midnightblue":"blu notte","mintcream":"bianco nuvola","mistyrose":"rosa pallido","moccasin":"mocassino","navajowhite":"sabbia","navy":"blu scuro","oldlace":"mandorla","olive":"verde oliva","olivedrab":"verde bottiglia","orange":"arancione","orangered":"vermiglio","orchid":"orchidea","palegoldenrod":"dorato pallido","palegreen":"verde pallido","paleturquoise":"turchese pallido","palevioletred":"violetto rosso pallido","papayawhip":"papaya","peachpuff":"pesche","peru":"perù","pink":"rosa","plum":"prugna","powderblue":"azzurro polvere","purple":"viola","red":"rosso","rosybrown":"caffè latte","royalblue":"royal blue","saddlebrown":"cacao","salmon":"salmone","sandybrown":"argilla","seagreen":"verde acqua","seashell":"sabbia rosa","sienna":"terra di siena","silver":"argento","skyblue":"azzurro","slateblue":"blu ardesia","slategray":"grigio ardesia","slategrey":"grigio ardesia","snow":"neve","springgreen":"verde brillante","steelblue":"blu brillante","tan":"tan","teal":"verde acqua","thistle":"rosa cenere","tomato":"pomodoro","transparent":"trasparente","turquoise":"turchese","violet":"violetto","wheat":"tabacco","white":"bianco","whitesmoke":"bianco fumo","yellow":"giallo","yellowgreen":"giallo verde"},"dijit/nls/loading":{"loadingState":"Caricamento in corso...","errorState":"Si è verificato un errore"},"dijit/nls/common":{"buttonOk":"Ok","buttonCancel":"Annulla","buttonSave":"Salva","itemClose":"Chiudi"},"dijit/form/nls/validate":{"invalidMessage":"Il valore immesso non è valido.","missingMessage":"Questo valore è obbligatorio.","rangeMessage":"Questo valore è fuori dall'intervallo consentito."},"dijit/form/nls/ComboBox":{"previousMessage":"Scelte precedenti","nextMessage":"Scelte successive"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 B","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"¤ #,##0.00","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 bilioni","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_ja-jp.js b/lib/dojo/nls/tt-rss-layer_ja-jp.js new file mode 100644 index 0000000000..57734cfc12 --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_ja-jp.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_ja-jp",{"dojo/nls/colors":{"aliceblue":"アリスブルー","antiquewhite":"アンティークホワイト","aqua":"アクア","aquamarine":"碧緑","azure":"è–„ã„空色","beige":"ベージュ","bisque":"ビスク","black":"é»’","blanchedalmond":"çš®ãªã—アーモンド","blue":"é’","blueviolet":"é’ç´«","brown":"茶","burlywood":"ãƒãƒ¼ãƒªãƒ¼ã‚¦ãƒƒãƒ‰","cadetblue":"ãã™ã‚“ã é’","chartreuse":"淡黄緑","chocolate":"ãƒãƒ§ã‚³ãƒ¬ãƒ¼ãƒˆ","coral":"çŠç‘š","cornflowerblue":"コーンフラワーブルー","cornsilk":"コーンシルク","crimson":"深紅","cyan":"シアンブルー","darkblue":"ダークブルー","darkcyan":"ダークシアンブルー","darkgoldenrod":"ダークゴールデンロッド","darkgray":"ダークグレイ","darkgreen":"ダークグリーン","darkgrey":"ダークグレイ","darkkhaki":"ダークカーキ","darkmagenta":"ダークマジェンタ","darkolivegreen":"ダークオリーブグリーン","darkorange":"ダークオレンジ","darkorchid":"ダークオーキッド","darkred":"ダークレッド","darksalmon":"ダークサーモン","darkseagreen":"ダークシーグリーン","darkslateblue":"ダークスレートブルー","darkslategray":"ダークスレートグレイ","darkslategrey":"ダークスレートグレイ","darkturquoise":"ダークターコイズ","darkviolet":"ダークãƒã‚¤ã‚ªãƒ¬ãƒƒãƒˆ","deeppink":"濃ã„ピンク","deepskyblue":"濃ã„空色","dimgray":"ãã™ã‚“ã ã‚°ãƒ¬ã‚¤","dimgrey":"ãã™ã‚“ã ã‚°ãƒ¬ã‚¤","dodgerblue":"ドッジャーブルー","firebrick":"赤煉瓦色","floralwhite":"フローラルホワイト","forestgreen":"フォレストグリーン","fuchsia":"紫紅色","gainsboro":"ゲインズボーロ","ghostwhite":"ゴーストホワイト","gold":"金","goldenrod":"ゴールデンロッド","gray":"グレイ","green":"ç·‘","greenyellow":"緑黄色","grey":"グレイ","honeydew":"ãƒãƒ‹ãƒ¼ãƒ‡ãƒ¥ãƒ¼","hotpink":"ホットピンク","indianred":"インディアンレッド","indigo":"è—色","ivory":"アイボリー","khaki":"カーキ","lavender":"ラベンダー","lavenderblush":"ラベンダーブラッシ","lawngreen":"ローングリーン","lemonchiffon":"レモンシフォン","lightblue":"ライトブルー","lightcoral":"ライトコーラル","lightcyan":"ライトシアン","lightgoldenrodyellow":"ライトゴールデンロッドイエロー","lightgray":"ライトグレイ","lightgreen":"ライトグリーン","lightgrey":"ライトグレイ","lightpink":"ライトピンク","lightsalmon":"ライトサーモン","lightseagreen":"ライトシーグリーン","lightskyblue":"ライトスカイブルー","lightslategray":"ライトスレートグレイ","lightslategrey":"ライトスレートグレイ","lightsteelblue":"ライトスãƒãƒ¼ãƒ«ãƒ–ルー","lightyellow":"ライトイエロー","lime":"ライム","limegreen":"ライムグリーン","linen":"亜麻色","magenta":"赤紫","maroon":"ãˆã³èŒ¶","mediumaquamarine":"ミディアムアクアマリーン","mediumblue":"ミディアムブルー","mediumorchid":"ミディアムオーキッド","mediumpurple":"ミディアムパープル","mediumseagreen":"ミディアムシーグリーン","mediumslateblue":"ミディアムスレートブルー","mediumspringgreen":"ミディアムスプリンググリーン","mediumturquoise":"ミディアムターコイズ","mediumvioletred":"ミディアムãƒã‚¤ã‚ªãƒ¬ãƒƒãƒˆãƒ¬ãƒƒãƒ‰","midnightblue":"ミッドナイトブルー","mintcream":"ミントクリーム","mistyrose":"ミスティローズ","moccasin":"モカシン","navajowhite":"ナãƒãƒ›ãƒ›ãƒ¯ã‚¤ãƒˆ","navy":"濃紺","oldlace":"オールドレイス","olive":"オリーブ","olivedrab":"濃黄緑","orange":"オレンジ","orangered":"オレンジレッド","orchid":"è–„ç´«","palegoldenrod":"ペイルゴールデンロッド","palegreen":"ペイルグリーン","paleturquoise":"ペイルターコイズ","palevioletred":"ペイルãƒã‚¤ã‚ªãƒ¬ãƒƒãƒˆãƒ¬ãƒƒãƒ‰","papayawhip":"パパイアホイップ","peachpuff":"ピーãƒãƒ‘フ","peru":"ペルー","pink":"ピンク","plum":"深紫","powderblue":"æ·¡é’","purple":"ç´«","red":"赤","rosybrown":"ロージーブラウン","royalblue":"藤色","saddlebrown":"サドルブラウン","salmon":"サーモン","sandybrown":"ç ‚è¤è‰²","seagreen":"シーグリーン","seashell":"シーシェル","sienna":"黄è¤è‰²","silver":"銀","skyblue":"スカイブルー","slateblue":"スレートブルー","slategray":"スレートグレイ","slategrey":"スレートグレイ","snow":"雪色","springgreen":"スプリンググリーン","steelblue":"鋼色","tan":"茶è¤è‰²","teal":"ティール","thistle":"シスル","tomato":"トマト色","transparent":"逿˜Ž","turquoise":"ターコイズ","violet":"ã™ã¿ã‚Œè‰²","wheat":"å°éº¦è‰²","white":"白","whitesmoke":"ホワイトスモーク","yellow":"黄","yellowgreen":"黄緑"},"dijit/nls/loading":{"loadingState":"ロード中...","errorState":"エラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"キャンセル","buttonSave":"ä¿å­˜","itemClose":"é–‰ã˜ã‚‹"},"dijit/form/nls/validate":{"invalidMessage":"入力ã—ãŸå€¤ã¯ç„¡åйã§ã™ã€‚","missingMessage":"ã“ã®å€¤ã¯å¿…é ˆã§ã™ã€‚","rangeMessage":"ã“ã®å€¤ã¯ç¯„囲外ã§ã™ã€‚"},"dijit/form/nls/ComboBox":{"previousMessage":"以å‰ã®é¸æŠžé …ç›®","nextMessage":"追加ã®é¸æŠžé …ç›®"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000å…†","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"¤#,##0.00","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000å…†","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_ko-kr.js b/lib/dojo/nls/tt-rss-layer_ko-kr.js new file mode 100644 index 0000000000..42533c15e7 --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_ko-kr.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_ko-kr",{"dojo/nls/colors":{"aliceblue":"앨리스 블루(alice blue)","antiquewhite":"앤틱 í™”ì´íЏ(antique white)","aqua":"ì•„ì¿ ì•„(aqua)","aquamarine":"아쿠아마린(aquamarine)","azure":"애쥬어(azure)","beige":"ë² ì´ì§€(beige)","bisque":"비스í¬(bisque)","black":"블랙(black)","blanchedalmond":"블랜치 아몬드(blanched almond)","blue":"블루(blue)","blueviolet":"블루 ë°”ì´ì˜¬ë ›(blue-violet)","brown":"브ë¼ìš´(brown)","burlywood":"벌리우드(burlywood)","cadetblue":"카뎃 블루(cadet blue)","chartreuse":"샤르트뢰즈(chartreuse)","chocolate":"초콜렛(chocolate)","coral":"코랄(coral)","cornflowerblue":"콘플ë¼ì›Œ 블루(cornflower blue)","cornsilk":"콘실í¬(cornsilk)","crimson":"í¬ë¦¼ìЍ(crimson)","cyan":"시안(cyan)","darkblue":"ë‹¤í¬ ë¸”ë£¨(dark blue)","darkcyan":"ë‹¤í¬ ì‹œì•ˆ(dark cyan)","darkgoldenrod":"ë‹¤í¬ ê³¨ë“ ë¡œë“œ(dark goldenrod)","darkgray":"ë‹¤í¬ ê·¸ë ˆì´(dark gray)","darkgreen":"ë‹¤í¬ ê·¸ë¦°(dark green)","darkgrey":"ë‹¤í¬ ê·¸ë ˆì´(dark gray)","darkkhaki":"ë‹¤í¬ ì¹´í‚¤(dark khaki)","darkmagenta":"ë‹¤í¬ ë§ˆì  íƒ€(dark magenta)","darkolivegreen":"ë‹¤í¬ ì˜¬ë¦¬ë¸Œ 그린(dark olive green)","darkorange":"ë‹¤í¬ ì˜¤ë Œì§€(dark orange)","darkorchid":"ë‹¤í¬ ì˜¤í‚¤ë“œ(dark orchid)","darkred":"ë‹¤í¬ ë ˆë“œ(dark red)","darksalmon":"ë‹¤í¬ ìƒëª¬(dark salmon)","darkseagreen":"ë‹¤í¬ ì”¨ 그린(dark sea green)","darkslateblue":"ë‹¤í¬ ìŠ¬ë ˆì´íЏ 블루(dark slate blue)","darkslategray":"ë‹¤í¬ ìŠ¬ë ˆì´íЏ 그레ì´(dark slate gray)","darkslategrey":"ë‹¤í¬ ìŠ¬ë ˆì´íЏ 그레ì´(dark slate gray)","darkturquoise":"ë‹¤í¬ í„°ì½°ì¦ˆ(dark turquoise)","darkviolet":"ë‹¤í¬ ë°”ì´ì˜¬ë ›(dark violet)","deeppink":"딥 í•‘í¬(deep pink)","deepskyblue":"딥 ìŠ¤ì¹´ì´ ë¸”ë£¨(deep sky blue)","dimgray":"딤 그레ì´(dim gray)","dimgrey":"딤 그레ì´(dim gray)","dodgerblue":"다저 블루(dodger blue)","firebrick":"파ì´ì–´ 브릭(fire brick)","floralwhite":"플로랄 í™”ì´íЏ(floral white)","forestgreen":"í¬ë ˆìŠ¤íŠ¸ 그린(forest green)","fuchsia":"후í¬ìƒ¤(fuchsia)","gainsboro":"게ì¸ìŠ¤ë¸Œë¡œ(gainsboro)","ghostwhite":"고스트 í™”ì´íЏ(ghost white)","gold":"골드(gold)","goldenrod":"골든로드(goldenrod)","gray":"그레ì´(gray)","green":"그린(green)","greenyellow":"그린 ì˜ë¡œìš°(green-yellow)","grey":"그레ì´(gray)","honeydew":"허니듀(honeydew)","hotpink":"í•« í•‘í¬(hot pink)","indianred":"ì¸ë””안 레드(indian red)","indigo":"ì¸ë””ê³ (indigo)","ivory":"ì•„ì´ë³´ë¦¬(ivory)","khaki":"카키(khaki)","lavender":"ë¼ë²¤ë”(lavender)","lavenderblush":"ë¼ë²¤ë” 블러쉬(lavender blush)","lawngreen":"ë¡  그린(lawn green)","lemonchiffon":"레몬 쉬í°(lemon chiffon)","lightblue":"ë¼ì´íЏ 블루(light blue)","lightcoral":"ë¼ì´íЏ 코랄(light coral)","lightcyan":"ë¼ì´íЏ 시안(light cyan)","lightgoldenrodyellow":"ë¼ì´íЏ 골든로드 ì˜ë¡œìš°(light goldenrod yellow)","lightgray":"ë¼ì´íЏ 그레ì´(light gray)","lightgreen":"ë¼ì´íЏ 그린(light green)","lightgrey":"ë¼ì´íЏ 그레ì´(light gray)","lightpink":"ë¼ì´íЏ í•‘í¬(light pink)","lightsalmon":"ë¼ì´íЏ ìƒëª¬(light salmon)","lightseagreen":"ë¼ì´íЏ 씨 그린(light sea green)","lightskyblue":"ë¼ì´íЏ ìŠ¤ì¹´ì´ ë¸”ë£¨(light sky blue)","lightslategray":"ë¼ì´íЏ 슬레ì´íЏ 그레ì´(light slate gray)","lightslategrey":"ë¼ì´íЏ 슬레ì´íЏ 그레ì´(light slate gray)","lightsteelblue":"ë¼ì´íЏ 스틸 블루(light steel blue)","lightyellow":"ë¼ì´íЏ ì˜ë¡œìš°(light yellow)","lime":"ë¼ìž„(lime)","limegreen":"ë¼ìž„ 그린(lime green)","linen":"리넨(linen)","magenta":"마젠타(magenta)","maroon":"마룬(maroon)","mediumaquamarine":"미디엄 아쿠아마린(medium aquamarine)","mediumblue":"미디엄 블루(medium blue)","mediumorchid":"미디엄 오키드(medium orchid)","mediumpurple":"미디엄 í¼í”Œ(medium purple)","mediumseagreen":"미디엄 씨 그린(medium sea green)","mediumslateblue":"미디엄 슬레ì´íЏ 블루(medium slate blue)","mediumspringgreen":"미디엄 ìŠ¤í”„ë§ ê·¸ë¦°(medium spring green)","mediumturquoise":"미디엄 터콰즈(medium turquoise)","mediumvioletred":"미디엄 ë°”ì´ì˜¬ë › 레드(medium violet-red)","midnightblue":"미드나잇 블루(midnight blue)","mintcream":"민트 í¬ë¦¼(mint cream)","mistyrose":"미스티 로즈(misty rose)","moccasin":"모카신(moccasin)","navajowhite":"나바호 í™”ì´íЏ(navajo white)","navy":"네ì´ë¹„(navy)","oldlace":"올드 ë ˆì´ìФ(old lace)","olive":"올리브(olive)","olivedrab":"올리브 드랩(olive drab)","orange":"오렌지(orange)","orangered":"오렌지 레드(orange red)","orchid":"오키드(orchid)","palegoldenrod":"íŽ˜ì¼ ê³¨ë“ ë¡œë“œ(pale goldenrod)","palegreen":"íŽ˜ì¼ ê·¸ë¦°(pale green)","paleturquoise":"íŽ˜ì¼ í„°ì½°ì¦ˆ(pale turquoise)","palevioletred":"íŽ˜ì¼ ë°”ì´ì˜¬ë › 레드(pale violet-red)","papayawhip":"파파야 휩(papaya whip)","peachpuff":"피치 í¼í”„(peach puff)","peru":"페루(peru)","pink":"í•‘í¬(pink)","plum":"플럼(plum)","powderblue":"íŒŒìš°ë” ë¸”ë£¨(powder blue)","purple":"í¼í”Œ(purple)","red":"레드(red)","rosybrown":"로지 브ë¼ìš´(rosy brown)","royalblue":"로얄 블루(royal blue)","saddlebrown":"새들 브ë¼ìš´(saddle brown)","salmon":"ìƒëª¬(salmon)","sandybrown":"샌디 브ë¼ìš´(sandy brown)","seagreen":"씨 그린(sea green)","seashell":"씨쉘(seashell)","sienna":"시ì—나(sienna)","silver":"실버(silver)","skyblue":"ìŠ¤ì¹´ì´ ë¸”ë£¨(sky blue)","slateblue":"슬레ì´íЏ 블루(slate blue)","slategray":"슬레ì´íЏ 그레ì´(slate gray)","slategrey":"슬레ì´íЏ 그레ì´(slate gray)","snow":"스노우(snow)","springgreen":"ìŠ¤í”„ë§ ê·¸ë¦°(spring green)","steelblue":"스틸 블루(steel blue)","tan":"탠(tan)","teal":"틸(teal)","thistle":"시슬(thistle)","tomato":"토마토(tomato)","transparent":"투명(transparent)","turquoise":"터콰즈(turquoise)","violet":"ë°”ì´ì˜¬ë ›(violet)","wheat":"휘트(wheat)","white":"í™”ì´íЏ(white)","whitesmoke":"í™”ì´íЏ 스모í¬(white smoke)","yellow":"ì˜ë¡œìš°(yellow)","yellowgreen":"ì˜ë¡œìš° 그린(yellow green)"},"dijit/nls/loading":{"loadingState":"로드 중...","errorState":"죄송합니다. 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤."},"dijit/nls/common":{"buttonOk":"확ì¸","buttonCancel":"취소","buttonSave":"저장","itemClose":"닫기"},"dijit/form/nls/validate":{"invalidMessage":"ìž…ë ¥ëœ ê°’ì´ ì˜¬ë°”ë¥´ì§€ 않습니다.","missingMessage":"ì´ ê°’ì€ í•„ìˆ˜ìž…ë‹ˆë‹¤.","rangeMessage":"ì´ ê°’ì€ ë²”ìœ„ë¥¼ 벗어납니다."},"dijit/form/nls/ComboBox":{"previousMessage":"ì´ì „ ì„ íƒì‚¬í•­","nextMessage":"기타 ì„ íƒì‚¬í•­"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000ì¡°","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000ì¡°","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_nb.js b/lib/dojo/nls/tt-rss-layer_nb.js new file mode 100644 index 0000000000..16d347c804 --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_nb.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_nb",{"dojo/nls/colors":{"aliceblue":"blÃ¥hvit","antiquewhite":"antikk hvit","aqua":"akva","aquamarine":"akvamarin","azure":"asur","beige":"beige","bisque":"gulrosa","black":"svart","blanchedalmond":"lys mandel","blue":"blÃ¥","blueviolet":"blÃ¥fiolett","brown":"brun","burlywood":"matt mellombrun","cadetblue":"mørk grønnblÃ¥","chartreuse":"løvgrønn","chocolate":"sjokolade","coral":"korall","cornflowerblue":"kornblÃ¥","cornsilk":"cornsilk","crimson":"karmosinrødt","cyan":"cyan","darkblue":"mørk blÃ¥","darkcyan":"mørk cyan","darkgoldenrod":"mørk gyldenris","darkgray":"mørk grÃ¥","darkgreen":"mørk grønn","darkgrey":"mørk grÃ¥","darkkhaki":"mørk khaki","darkmagenta":"mørk magenta","darkolivegreen":"mørk olivengrønn","darkorange":"mørk oransje","darkorchid":"mørk orkide","darkred":"mørk rød","darksalmon":"mørk lakserosa","darkseagreen":"mørk sjøgrønn","darkslateblue":"mørk skiferblÃ¥","darkslategray":"mørk skifergrÃ¥","darkslategrey":"mørk skifergrÃ¥","darkturquoise":"mørk turkis","darkviolet":"mørk fiolett","deeppink":"dyp rosa","deepskyblue":"dyp himmelblÃ¥","dimgray":"mørk mørkegrÃ¥","dimgrey":"mørk mørkegrÃ¥","dodgerblue":"lys havblÃ¥","firebrick":"mursteinsrød","floralwhite":"blomsterhvit","forestgreen":"skoggrønn","fuchsia":"fuksia","gainsboro":"lys lys grÃ¥","ghostwhite":"egghvit","gold":"gull","goldenrod":"gyldenris","gray":"grÃ¥","green":"grønn","greenyellow":"gulgrønn","grey":"grÃ¥","honeydew":"grønnhvit","hotpink":"halvmørk rosa","indianred":"rustrød","indigo":"indigo","ivory":"elfenbenshvit","khaki":"khaki","lavender":"lavendel","lavenderblush":"lillahvit","lawngreen":"plengrønn","lemonchiffon":"ferskenfarget","lightblue":"lys blÃ¥","lightcoral":"lys korall","lightcyan":"lys cyan","lightgoldenrodyellow":"lys gyldenrisgul","lightgray":"lys grÃ¥","lightgreen":"lys grønn","lightgrey":"lys grÃ¥","lightpink":"lys rosa","lightsalmon":"lys lakserosa","lightseagreen":"lys sjøgrønn","lightskyblue":"lys himmelblÃ¥","lightslategray":"lys skifergrÃ¥","lightslategrey":"lys skifergrÃ¥","lightsteelblue":"lys stÃ¥lblÃ¥","lightyellow":"lys gul","lime":"lime","limegreen":"limegrønn","linen":"lin","magenta":"magenta","maroon":"rødbrun","mediumaquamarine":"middels akvamarin","mediumblue":"mellomblÃ¥","mediumorchid":"middels orkide","mediumpurple":"middels purpur","mediumseagreen":"middels sjøgrønn","mediumslateblue":"middels skiferblÃ¥","mediumspringgreen":"middels vÃ¥rgrønn","mediumturquoise":"middels turkis","mediumvioletred":"middels fiolettrød","midnightblue":"midnattsblÃ¥","mintcream":"mintkrem","mistyrose":"lys rosenrød","moccasin":"lys gulbrun","navajowhite":"gulbrun","navy":"marineblÃ¥","oldlace":"kniplingshvit","olive":"oliven","olivedrab":"middels olivengrønn","orange":"oransje","orangered":"rødoransje","orchid":"orkide","palegoldenrod":"svak gyldenris","palegreen":"svak grønn","paleturquoise":"svak turkis","palevioletred":"svak fiolettrød","papayawhip":"lys papaya","peachpuff":"brunrosa","peru":"lys nøttebrun","pink":"rosa","plum":"plommefarget","powderblue":"lys grønnblÃ¥","purple":"purpur","red":"rød","rosybrown":"brunlilla","royalblue":"kongeblÃ¥","saddlebrown":"mørk nøttebrun","salmon":"lakserosa","sandybrown":"sandbrun","seagreen":"sjøgrønn","seashell":"skjellhvit","sienna":"nøttebrun","silver":"sølvfarget","skyblue":"himmelblÃ¥","slateblue":"skiferblÃ¥","slategray":"skifergrÃ¥","slategrey":"skifergrÃ¥","snow":"snøhvit","springgreen":"vÃ¥rgrønn","steelblue":"stÃ¥lblÃ¥","tan":"matt mellombrun","teal":"mørk grønnblÃ¥","thistle":"lys grÃ¥lilla","tomato":"tomatrød","transparent":"gjennomsiktig","turquoise":"turkis","violet":"fiolett","wheat":"varm sienna","white":"hvit","whitesmoke":"røykhvit","yellow":"gul","yellowgreen":"gulgrønn"},"dijit/nls/loading":{"loadingState":"Laster inn...","errorState":"Det oppsto en feil"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Avbryt","buttonSave":"Lagre","itemClose":"Lukk"},"dijit/form/nls/validate":{"invalidMessage":"Den angitte verdien er ikke gyldig.","missingMessage":"Denne verdien er obligatorisk.","rangeMessage":"Denne verdien er utenfor gyldig omrÃ¥de."},"dijit/form/nls/ComboBox":{"previousMessage":"Tidligere valg","nextMessage":"Flere valg"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bill","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"¤ #,##0.00","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 billioner","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_nl-nl.js b/lib/dojo/nls/tt-rss-layer_nl-nl.js new file mode 100644 index 0000000000..37f81f5dbd --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_nl-nl.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_nl-nl",{"dojo/nls/colors":{"aliceblue":"lichtblauw","antiquewhite":"antiekwit","aqua":"aqua","aquamarine":"aquamarijn","azure":"azuur","beige":"beige","bisque":"oranjegeel","black":"zwart","blanchedalmond":"amandel","blue":"blauw","blueviolet":"violet","brown":"bruin","burlywood":"lichtbruin","cadetblue":"donkerstaalblauw","chartreuse":"groengeel","chocolate":"chocoladebruin","coral":"koraalrood","cornflowerblue":"korenbloemblauw","cornsilk":"maïsgeel","crimson":"karmozijnrood","cyan":"cyaan","darkblue":"donkerblauw","darkcyan":"donkercyaan","darkgoldenrod":"donkergoud","darkgray":"donkergrijs","darkgreen":"donkergroen","darkgrey":"donkergrijs","darkkhaki":"donkerkaki","darkmagenta":"donkermagenta","darkolivegreen":"donkerolijfgroen","darkorange":"donkeroranje","darkorchid":"donkerorchidee","darkred":"donkerrood","darksalmon":"donkerzalm","darkseagreen":"donkerzeegroen","darkslateblue":"donkergrijsblauw","darkslategray":"donkerblauwgrijs","darkslategrey":"donkerblauwgrijs","darkturquoise":"donkerturquoise","darkviolet":"donkerviolet","deeppink":"donkerroze","deepskyblue":"diephemelblauw","dimgray":"dofgrijs","dimgrey":"dofgrijs","dodgerblue":"helderblauw","firebrick":"vuursteenrood","floralwhite":"rozewit","forestgreen":"bosgroen","fuchsia":"fuchsia","gainsboro":"lichtblauwgrijs","ghostwhite":"spierwit","gold":"goud","goldenrod":"goudbruin","gray":"grijs","green":"groen","greenyellow":"groengeel","grey":"grijs","honeydew":"meloen","hotpink":"acaciaroze","indianred":"indisch rood","indigo":"indigo","ivory":"ivoorwit","khaki":"kaki","lavender":"lavendelblauw","lavenderblush":"lavendelblos","lawngreen":"grasgroen","lemonchiffon":"citroengeel","lightblue":"lichtblauw","lightcoral":"lichtkoraal","lightcyan":"lichtcyaan","lightgoldenrodyellow":"lichtgoudgeel","lightgray":"lichtgrijs","lightgreen":"lichtgroen","lightgrey":"lichtgrijs","lightpink":"lichtroze","lightsalmon":"lichtzalm","lightseagreen":"lichtzeegroen","lightskyblue":"lichthemelsblauw","lightslategray":"lichtblauwgrijs","lightslategrey":"lichtblauwgrijs","lightsteelblue":"lichtstaalblauw","lightyellow":"lichtgeel","lime":"limoen","limegreen":"limoengroen","linen":"linnen","magenta":"magenta","maroon":"kastanjebruin","mediumaquamarine":"midaquamarijn","mediumblue":"midblauw","mediumorchid":"midorchidee","mediumpurple":"midpurper","mediumseagreen":"midzeegroen","mediumslateblue":"midgrijsblauw","mediumspringgreen":"midlentegroen","mediumturquoise":"midturquoise","mediumvioletred":"midvioletrood","midnightblue":"nachtblauw","mintcream":"mintroomgeel","mistyrose":"matroze","moccasin":"moccasin","navajowhite":"navajowit","navy":"marineblauw","oldlace":"kant","olive":"olijfgroen","olivedrab":"grijsbruin","orange":"oranje","orangered":"oranjerood","orchid":"orchidee","palegoldenrod":"bleekgeel","palegreen":"bleekgroen","paleturquoise":"bleekturquoise","palevioletred":"bleekvioletrood","papayawhip":"papajaroze","peachpuff":"perzikroze","peru":"bruin","pink":"roze","plum":"pruim","powderblue":"lichtblauw-wit","purple":"purper","red":"rood","rosybrown":"roodbruin","royalblue":"koningsblauw","saddlebrown":"leerbruin","salmon":"zalm","sandybrown":"zandbruin","seagreen":"zeegroen","seashell":"schelp","sienna":"sienna","silver":"zilvergrijs","skyblue":"hemelsblauw","slateblue":"leiblauw","slategray":"leigrijs","slategrey":"leigrijs","snow":"sneeuwwit","springgreen":"lentegroen","steelblue":"staalblauw","tan":"geelbruin","teal":"grijsblauw","thistle":"distel","tomato":"tomaat","transparent":"transparant","turquoise":"turquoise","violet":"violet","wheat":"tarwebruin","white":"wit","whitesmoke":"rookwit","yellow":"geel","yellowgreen":"geelgroen"},"dijit/nls/loading":{"loadingState":"Bezig met laden...","errorState":"Er is een fout opgetreden"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Annuleren","buttonSave":"Opslaan","itemClose":"Sluiten"},"dijit/form/nls/validate":{"invalidMessage":"De opgegeven waarde is ongeldig.","missingMessage":"Deze waarde is verplicht.","rangeMessage":"Deze waarde is niet toegestaan."},"dijit/form/nls/ComboBox":{"previousMessage":"Eerdere opties","nextMessage":"Meer opties"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bln'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"¤ #,##0.00;¤ #,##0.00-","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 biljoen","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_pl.js b/lib/dojo/nls/tt-rss-layer_pl.js new file mode 100644 index 0000000000..ffa581ce9c --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_pl.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_pl",{"dojo/nls/colors":{"aliceblue":"bladoniebieski","antiquewhite":"biel antyczna","aqua":"morski","aquamarine":"akwamaryna","azure":"lazurowy","beige":"beżowy","bisque":"cielistobeżowy","black":"czarny","blanchedalmond":"obrany migdaÅ‚","blue":"niebieski","blueviolet":"błękitnofioÅ‚kowy","brown":"brÄ…zowy","burlywood":"piaskowobeżowy","cadetblue":"szaroniebieski","chartreuse":"żółtooliwkowy","chocolate":"czekoladowy","coral":"koralowy","cornflowerblue":"niebieskochabrowy","cornsilk":"biaÅ‚ożółty","crimson":"karmazynowy","cyan":"niebieskozielony","darkblue":"ciemnoniebieski","darkcyan":"ciemnoniebieskozielony","darkgoldenrod":"ciemne stare zÅ‚oto","darkgray":"ciemnoszary","darkgreen":"ciemnozielony","darkgrey":"ciemnoszary","darkkhaki":"ciemny khaki","darkmagenta":"ciemnoamarantowy","darkolivegreen":"ciemnooliwkowozielony","darkorange":"ciemnopomaraÅ„czowy","darkorchid":"ciemna orchidea","darkred":"ciemnoczerwony","darksalmon":"ciemnoÅ‚ososiowy","darkseagreen":"ciemna zieleÅ„ morska","darkslateblue":"ciemny gołębi","darkslategray":"ciemny mysi","darkslategrey":"ciemny mysi","darkturquoise":"ciemnoturkusowy","darkviolet":"ciemnofioÅ‚kowy","deeppink":"głęboki róż","deepskyblue":"intensywny błękit nieba","dimgray":"przyciemniony szary","dimgrey":"przyciemniony szary","dodgerblue":"niebieski Dodgersów","firebrick":"podpalana cegÅ‚a","floralwhite":"zÅ‚amana biel","forestgreen":"leÅ›na zieleÅ„","fuchsia":"fuksjowy","gainsboro":"jasnoniebieskawoszary","ghostwhite":"sina biel","gold":"zÅ‚oty","goldenrod":"stare zÅ‚oto","gray":"szary","green":"zielony","greenyellow":"zielonożółty","grey":"szary","honeydew":"miodowy","hotpink":"odblaskoworóżowy","indianred":"kasztanowy","indigo":"indygo","ivory":"kość sÅ‚oniowa","khaki":"khaki","lavender":"lawendowy","lavenderblush":"lawendoworóżowy","lawngreen":"trawiasty","lemonchiffon":"babka cytrynowa","lightblue":"jasnoniebieski","lightcoral":"jasnokoralowy","lightcyan":"jasnoniebieskozielony","lightgoldenrodyellow":"jasne stare zÅ‚oto","lightgray":"jasnoszary","lightgreen":"jasnozielony","lightgrey":"jasnoszary","lightpink":"jasnoróżowy","lightsalmon":"jasnoÅ‚ososiowy","lightseagreen":"jasna zieleÅ„ morska","lightskyblue":"jasny błękit nieba","lightslategray":"jasny mysi","lightslategrey":"jasny mysi","lightsteelblue":"jasnostalowoniebieski","lightyellow":"jasnożółty","lime":"limonkowy","limegreen":"limonkowozielony","linen":"lniany","magenta":"amarantowy","maroon":"rdzawoczerwony","mediumaquamarine":"Å›rednia akwamaryna","mediumblue":"Å›redni niebieski","mediumorchid":"Å›rednia orchidea","mediumpurple":"Å›redni fioletowy","mediumseagreen":"Å›rednia zieleÅ„ morska","mediumslateblue":"Å›redni gołębi","mediumspringgreen":"Å›rednia wiosenna zieleÅ„","mediumturquoise":"Å›redni turkusowy","mediumvioletred":"Å›redni fioÅ‚kowowoczerwony","midnightblue":"atramentowoniebieski","mintcream":"miÄ™towokremowy","mistyrose":"mglistoróżany","moccasin":"mokasynowy","navajowhite":"biel Nawaho","navy":"granatowy","oldlace":"ecru","olive":"oliwkowy","olivedrab":"oliwkowozielony","orange":"pomaraÅ„czowy","orangered":"czerwona pomaraÅ„cza","orchid":"orchidea","palegoldenrod":"blade stare zÅ‚oto","palegreen":"bladozielony","paleturquoise":"bladoturkusowy","palevioletred":"bladofioÅ‚kowoczerwony","papayawhip":"kremowa papaja","peachpuff":"cielisty brzoskwiniowy","peru":"palona glina","pink":"różowy","plum":"Å›liwkowy","powderblue":"jasnobladobłękitny","purple":"fioletowy","red":"czerwony","rosybrown":"różanobrÄ…zowy","royalblue":"królewska purpura","saddlebrown":"brÄ…z skórzany","salmon":"Å‚ososiowy","sandybrown":"piaskowobrÄ…zowy","seagreen":"zieleÅ„ morska","seashell":"matowoliliowy","sienna":"sjena","silver":"srebrny","skyblue":"błękit nieba","slateblue":"gołębi","slategray":"mysi","slategrey":"mysi","snow":"Å›nieżny","springgreen":"wiosenna zieleÅ„","steelblue":"stalowoniebieski","tan":"Å›niady","teal":"zielonomodry","thistle":"kwiat ostu","tomato":"pomidorowy","transparent":"przezroczysty","turquoise":"turkusowy","violet":"fioÅ‚kowy","wheat":"pszeniczny","white":"biaÅ‚y","whitesmoke":"siwy","yellow":"żółty","yellowgreen":"żółtozielony"},"dijit/nls/loading":{"loadingState":"Åadowanie...","errorState":"Niestety, wystÄ…piÅ‚ błąd"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Anuluj","buttonSave":"Zapisz","itemClose":"Zamknij"},"dijit/form/nls/validate":{"invalidMessage":"Wprowadzona wartość jest nieprawidÅ‚owa.","missingMessage":"Ta wartość jest wymagana.","rangeMessage":"Ta wartość jest spoza zakresu."},"dijit/form/nls/ComboBox":{"previousMessage":"Poprzednie wybory","nextMessage":"WiÄ™cej wyborów"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bln","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","perMille":"‰","group":" ","percentFormat":"#,##0%","decimalFormat-long":"000 biliona","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_pt-br.js b/lib/dojo/nls/tt-rss-layer_pt-br.js new file mode 100644 index 0000000000..1b0d43ffa0 --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_pt-br.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_pt-br",{"dojo/nls/colors":{"aliceblue":"azul alice","antiquewhite":"branco antigo","aqua":"aqua","aquamarine":"água marinha","azure":"azul celeste","beige":"bege","bisque":"bisque","black":"preto","blanchedalmond":"amêndoa pelada","blue":"azul","blueviolet":"azul violeta","brown":"marrom","burlywood":"burlywood","cadetblue":"azul cadet","chartreuse":"chartreuse","chocolate":"chocolate","coral":"coral","cornflowerblue":"azul centaurea","cornsilk":"cornsilk","crimson":"carmesim","cyan":"ciano","darkblue":"azul escuro","darkcyan":"ciano escuro","darkgoldenrod":"goldenrod escuro","darkgray":"cinza escuro","darkgreen":"verde escuro","darkgrey":"cinza escuro","darkkhaki":"cáqui escuro","darkmagenta":"magenta escuro","darkolivegreen":"verde oliva escuro","darkorange":"laranja escuro","darkorchid":"orquídea escuro","darkred":"vermelho escuro","darksalmon":"salmão escuro","darkseagreen":"verde marinho escuro","darkslateblue":"azul ardósia escuro","darkslategray":"cinza ardósia escuro","darkslategrey":"cinza ardósia escuro","darkturquoise":"turquesa escuro","darkviolet":"violeta escuro","deeppink":"rosa profundo","deepskyblue":"azul céu intenso","dimgray":"cinza turvo","dimgrey":"cinza turvo","dodgerblue":"azul dodger","firebrick":"firebrick","floralwhite":"branco floral","forestgreen":"verde floresta","fuchsia":"fúcsia","gainsboro":"gainsboro","ghostwhite":"branco ghost","gold":"dourado","goldenrod":"goldenrod","gray":"cinza","green":"verde","greenyellow":"amarelo esverdeado","grey":"cinza","honeydew":"honeydew","hotpink":"rosa quente","indianred":"vermelho indiano","indigo":"índigo","ivory":"marfim","khaki":"cáqui","lavender":"lavanda","lavenderblush":"lavanda avermelhada","lawngreen":"verde grama","lemonchiffon":"limão chiffon","lightblue":"azul claro","lightcoral":"coral claro","lightcyan":"ciano claro","lightgoldenrodyellow":"amarelo goldenrod claro","lightgray":"cinza claro","lightgreen":"verde claro","lightgrey":"cinza claro","lightpink":"rosa claro","lightsalmon":"salmão claro","lightseagreen":"verde marinho claro","lightskyblue":"azul céu claro","lightslategray":"cinza ardósia claro","lightslategrey":"cinza ardósia claro","lightsteelblue":"azul aço claro","lightyellow":"amarelo claro","lime":"lima","limegreen":"verde lima","linen":"linho","magenta":"magenta","maroon":"castanho","mediumaquamarine":"água marinha médio","mediumblue":"azul médio","mediumorchid":"orquídea médio","mediumpurple":"roxo médio","mediumseagreen":"verde marinho médio","mediumslateblue":"azul ardósia médio","mediumspringgreen":"verde primavera médio","mediumturquoise":"turquesa médio","mediumvioletred":"vermelho violeta médio","midnightblue":"azul meia-noite","mintcream":"creme de menta","mistyrose":"rosa enevoado","moccasin":"moccasin","navajowhite":"branco navajo","navy":"marinho","oldlace":"cadarço velho","olive":"oliva","olivedrab":"verde oliva","orange":"laranja","orangered":"vermelho alaranjado","orchid":"orquídea","palegoldenrod":"goldenrod esbranquiçado","palegreen":"verde esbranquiçado","paleturquoise":"turquesa esbranquiçado","palevioletred":"vermelho violeta esbranquiçado","papayawhip":"creme de papaya","peachpuff":"peach puff","peru":"peru","pink":"rosa","plum":"ameixa","powderblue":"azul talco","purple":"roxo","red":"vermelho","rosybrown":"marrom rosado","royalblue":"azul royal","saddlebrown":"marrom saddle","salmon":"salmão","sandybrown":"marrom cor de areia","seagreen":"verde marinho","seashell":"seashell","sienna":"sienna","silver":"prateado","skyblue":"azul céu","slateblue":"azul ardósia","slategray":"cinza ardósia","slategrey":"cinza ardósia","snow":"branco neve","springgreen":"verde primavera","steelblue":"azul aço","tan":"tan","teal":"azul esverdeado","thistle":"thistle","tomato":"tomate","transparent":"transparente","turquoise":"turquesa","violet":"violeta","wheat":"trigo","white":"branco","whitesmoke":"fumaça branca","yellow":"amarelo","yellowgreen":"verde amarelado"},"dijit/nls/loading":{"loadingState":"Carregando...","errorState":"Desculpe, ocorreu um erro"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Cancelar","buttonSave":"Salvar","itemClose":"Fechar"},"dijit/form/nls/validate":{"invalidMessage":"O valor inserido não é válido.","missingMessage":"Este valor é necessário.","rangeMessage":"Este valor está fora do intervalo. "},"dijit/form/nls/ComboBox":{"previousMessage":"Opções anteriores","nextMessage":"Mais opções"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 tri","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 trilhões","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_pt-pt.js b/lib/dojo/nls/tt-rss-layer_pt-pt.js new file mode 100644 index 0000000000..86d041af72 --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_pt-pt.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_pt-pt",{"dojo/nls/colors":{"aliceblue":"azul alice","antiquewhite":"branco antigo","aqua":"verde-água","aquamarine":"verde-azulado","azure":"azul-celeste","beige":"bege","bisque":"rosa-velho","black":"preto","blanchedalmond":"amêndoa claro","blue":"azul","blueviolet":"azul violeta","brown":"castanho","burlywood":"castanho pinho","cadetblue":"azul cadete","chartreuse":"amarelo esverdeado","chocolate":"chocolate","coral":"coral","cornflowerblue":"azul-violáceo","cornsilk":"branco seda","crimson":"carmesim","cyan":"ciano","darkblue":"azul escuro","darkcyan":"ciano escuro","darkgoldenrod":"ouro velho escuro","darkgray":"cinzento escuro","darkgreen":"verde escuro","darkgrey":"cinzento escuro","darkkhaki":"caqui escuro","darkmagenta":"magenta escuro","darkolivegreen":"verde-azeitona escuro","darkorange":"laranja escuro","darkorchid":"orquídea escuro","darkred":"vermelho escuro","darksalmon":"salmão escuro","darkseagreen":"verde marinho escuro","darkslateblue":"azul ardósia escuro","darkslategray":"cinzento ardósia escuro","darkslategrey":"cinzento ardósia escuro","darkturquoise":"turquesa escuro","darkviolet":"violeta escuro","deeppink":"rosa profundo","deepskyblue":"azul céu profundo","dimgray":"cinzento esbatido","dimgrey":"cinzento esbatido","dodgerblue":"azul furtivo","firebrick":"tijolo fogo","floralwhite":"branco floral","forestgreen":"verde floresta","fuchsia":"fúcsia","gainsboro":"cinzento azulado claro","ghostwhite":"branco sombreado","gold":"dourado","goldenrod":"ouro velho","gray":"cinzento","green":"verde","greenyellow":"amarelo esverdeado","grey":"cinzento","honeydew":"mel","hotpink":"rosa forte","indianred":"almagre","indigo":"índigo","ivory":"marfim","khaki":"caqui","lavender":"alfazema","lavenderblush":"alfazema rosado","lawngreen":"verde relva","lemonchiffon":"limão chiffon","lightblue":"azul claro","lightcoral":"coral claro","lightcyan":"ciano claro","lightgoldenrodyellow":"ouro velho amarelado claro","lightgray":"cinzento claro","lightgreen":"verde claro","lightgrey":"cinzento claro","lightpink":"rosa claro","lightsalmon":"salmão claro","lightseagreen":"verde marinho claro","lightskyblue":"azul céu claro","lightslategray":"cinzento ardósia claro","lightslategrey":"cinzento ardósia claro","lightsteelblue":"azul-aço claro","lightyellow":"amarelo claro","lime":"lima","limegreen":"verde-lima","linen":"linho","magenta":"magenta","maroon":"bordeaux","mediumaquamarine":"verde-azulado médio","mediumblue":"azul médio","mediumorchid":"orquídea médio","mediumpurple":"roxo médio","mediumseagreen":"verde marinho médio","mediumslateblue":"azul ardósia médio","mediumspringgreen":"verde primavera médio","mediumturquoise":"turquesa médio","mediumvioletred":"violeta avermelhado médio","midnightblue":"azul meia-noite","mintcream":"creme de menta","mistyrose":"rosa pálido","moccasin":"mocassim","navajowhite":"branco navajo","navy":"azul marinho","oldlace":"renda antiga","olive":"azeitona","olivedrab":"azeitona claro","orange":"laranja","orangered":"vermelho alaranjado","orchid":"orquídea","palegoldenrod":"ouro velho pálido","palegreen":"verde pálido","paleturquoise":"turquesa pálido","palevioletred":"violeta avermelhado pálido","papayawhip":"creme de papaia","peachpuff":"pêssego","peru":"peru","pink":"rosa","plum":"cor-de-ameixa","powderblue":"azul de esmalte","purple":"roxo","red":"vermelho","rosybrown":"castanho rosado","royalblue":"azul real","saddlebrown":"castanho sela","salmon":"salmão","sandybrown":"castanho areia","seagreen":"verde marinho","seashell":"concha","sienna":"castanho-avermelhado","silver":"prateado","skyblue":"azul céu","slateblue":"azul ardósia","slategray":"cinzento ardósia","slategrey":"cinzento ardósia","snow":"branco-neve","springgreen":"verde primavera","steelblue":"azul-aço","tan":"castanho claro","teal":"verde-azulado","thistle":"cardo","tomato":"vermelho tomate","transparent":"transparente","turquoise":"turquesa","violet":"violeta","wheat":"trigo","white":"branco","whitesmoke":"fumo branco","yellow":"amarelo","yellowgreen":"verde amarelado"},"dijit/nls/loading":{"loadingState":"A carregar...","errorState":"Lamentamos, mas ocorreu um erro"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Cancelar","buttonSave":"Guardar","itemClose":"Fechar"},"dijit/form/nls/validate":{"invalidMessage":"O valor introduzido não é válido.","missingMessage":"Este valor é requerido.","rangeMessage":"Este valor encontra-se fora do intervalo."},"dijit/form/nls/ComboBox":{"previousMessage":"Opções anteriores","nextMessage":"Mais opções"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 Bi","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":" ","percentFormat":"#,##0%","decimalFormat-long":"000 biliões","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_ru.js b/lib/dojo/nls/tt-rss-layer_ru.js new file mode 100644 index 0000000000..a397e1e3e2 --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_ru.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_ru",{"dojo/nls/colors":{"aliceblue":"Ñеро-голубой","antiquewhite":"белый антик","aqua":"зеленовато-голубой","aquamarine":"аквамарин","azure":"лазурный","beige":"бежевый","bisque":"биÑквитный","black":"черный","blanchedalmond":"Ñветло-миндальный","blue":"Ñиний","blueviolet":"Ñине-фиолетовый","brown":"коричневый","burlywood":"Ñветло-коричневый","cadetblue":"Ñеро-Ñиний","chartreuse":"желто-Ñалатный","chocolate":"шоколадный","coral":"коралловый","cornflowerblue":"фиолетово-Ñиний","cornsilk":"шелковый оттенок","crimson":"малиновый","cyan":"циан","darkblue":"темно-Ñиний","darkcyan":"темный циан","darkgoldenrod":"темно-золотиÑтый","darkgray":"темно-Ñерый","darkgreen":"темно-зеленый","darkgrey":"темно-Ñерый","darkkhaki":"темный хаки","darkmagenta":"темно-пурпурный","darkolivegreen":"темно-оливковый","darkorange":"темно-оранжевый","darkorchid":"темный орÑель","darkred":"темно-краÑный","darksalmon":"темно-лоÑоÑевый","darkseagreen":"темный морÑкой волны","darkslateblue":"темный грифельно-Ñиний","darkslategray":"темный грифельно-Ñерый","darkslategrey":"темный грифельно-Ñерый","darkturquoise":"темный бирюзовый","darkviolet":"темно-фиолетовый","deeppink":"темно-розовый","deepskyblue":"темный небеÑно-голубой","dimgray":"туÑкло-Ñерый","dimgrey":"туÑкло-Ñерый","dodgerblue":"бледно-Ñиний","firebrick":"кирпичный","floralwhite":"цветочно-белый","forestgreen":"зеленый леÑной","fuchsia":"фукÑин","gainsboro":"бледно-Ñерый","ghostwhite":"призрачно-белый","gold":"золотой","goldenrod":"золотиÑтый","gray":"Ñерый","green":"зеленый","greenyellow":"зелено-желтый","grey":"Ñерый","honeydew":"медовый","hotpink":"краÑно-розовый","indianred":"индийÑкий краÑный","indigo":"индиго","ivory":"Ñлоновой коÑти","khaki":"хаки","lavender":"бледно-лиловый","lavenderblush":"розовато-лиловый","lawngreen":"Ð·ÐµÐ»ÐµÐ½Ð°Ñ Ð»ÑƒÐ¶Ð°Ð¹ÐºÐ°","lemonchiffon":"бледно-лимонный","lightblue":"Ñветло-Ñиний","lightcoral":"Ñветло-коралловый","lightcyan":"Ñветлый циан","lightgoldenrodyellow":"Ñветло-золотиÑтый","lightgray":"Ñветло-Ñерый","lightgreen":"Ñветло-зеленый","lightgrey":"Ñветло-Ñерый","lightpink":"Ñветло-розовый","lightsalmon":"Ñветло-лоÑоÑевый","lightseagreen":"Ñветлый морÑкой волны","lightskyblue":"Ñветлый небеÑно-голубой","lightslategray":"Ñветлый грифельно-Ñерый","lightslategrey":"Ñветлый грифельно-Ñерый","lightsteelblue":"Ñветлый Ñтальной","lightyellow":"Ñветло-желтый","lime":"лайм","limegreen":"зеленый лайм","linen":"хлопковый","magenta":"пурпурный","maroon":"темно-бордовый","mediumaquamarine":"нейтральный аквамарин","mediumblue":"нейтральный Ñиний","mediumorchid":"нейтральный орÑель","mediumpurple":"нейтральный фиолетовый","mediumseagreen":"нейтральный морÑкой волны","mediumslateblue":"нейтральный грифельно-Ñиний","mediumspringgreen":"нейтральный веÑенне-зеленый","mediumturquoise":"нейтральный бирюзовый","mediumvioletred":"нейтральный фиолетово-краÑный","midnightblue":"полуночно-Ñиний","mintcream":"мÑтно-кремовый","mistyrose":"блекло-розовый","moccasin":"мокаÑин","navajowhite":"белый навахо","navy":"темно-Ñиний","oldlace":"матово-белый","olive":"оливковый","olivedrab":"желтовато-Ñерый","orange":"оранжевый","orangered":"оранжево-краÑный","orchid":"орÑель","palegoldenrod":"бледно-золотиÑтый","palegreen":"бледно-зеленый","paleturquoise":"бледно-бирюзовый","palevioletred":"бледный фиолетово-краÑный","papayawhip":"черенок папайи","peachpuff":"перÑиковый","peru":"перу","pink":"розовый","plum":"Ñливовый","powderblue":"пороховой","purple":"фиолетовый","red":"краÑный","rosybrown":"розово-коричневый","royalblue":"королевÑкий голубой","saddlebrown":"кожано-коричневый","salmon":"лоÑоÑевый","sandybrown":"коричнево-пеÑчаный","seagreen":"морÑкой волны","seashell":"морÑÐºÐ°Ñ Ñ€Ð°ÐºÐ¾Ð²Ð¸Ð½Ð°","sienna":"охра","silver":"ÑеребриÑтый","skyblue":"небеÑно-голубой","slateblue":"грифельно-Ñиний","slategray":"грифельно-Ñерый","slategrey":"грифельно-Ñерый","snow":"белоÑнежный","springgreen":"веÑенний зеленый","steelblue":"Ñтальной","tan":"рыжевато-коричневый","teal":"чирок","thistle":"чертополох","tomato":"помидор","transparent":"прозрачный","turquoise":"бирюзовый","violet":"фиолетовый","wheat":"пшеница","white":"белый","whitesmoke":"дымчато-белый","yellow":"желтый","yellowgreen":"желто-зеленый"},"dijit/nls/loading":{"loadingState":"Загрузка...","errorState":"Извините, возникла ошибка"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Отмена","buttonSave":"Сохранить","itemClose":"Закрыть"},"dijit/form/nls/validate":{"invalidMessage":"Указано недопуÑтимое значение.","missingMessage":"Это обÑзательное значение.","rangeMessage":"Это значение вне диапазона."},"dijit/form/nls/ComboBox":{"previousMessage":"Предыдущие варианты","nextMessage":"Следующие варианты"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 трлн","currencySpacing-afterCurrency-insertBetween":" ","nan":"не чиÑло","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 триллиона","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_sk.js b/lib/dojo/nls/tt-rss-layer_sk.js new file mode 100644 index 0000000000..c7254732e6 --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_sk.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_sk",{"dojo/nls/colors":{"aliceblue":"modrá (alice)","antiquewhite":"antická biela","aqua":"vodová","aquamarine":"akvamarínová","azure":"azúrová","beige":"béžová","bisque":"porcelánová","black":"Äierna","blanchedalmond":"bledá mandľová","blue":"modrá","blueviolet":"modro-fialová","brown":"hnedá","burlywood":"drevená hnedá","cadetblue":"Äerveno modrá","chartreuse":"kartúzska","chocolate":"Äokoládová","coral":"koralová","cornflowerblue":"nevädzová modrá","cornsilk":"ôstie kukurice","crimson":"karmínová","cyan":"zelenomodrá","darkblue":"tmavomodrá","darkcyan":"tmavá zelenomodrá","darkgoldenrod":"tmavá zlatobyľ","darkgray":"tmavosivá","darkgreen":"tmavozelená","darkgrey":"tmavosivá","darkkhaki":"tmavá žltohnedá","darkmagenta":"tmavá purpurová","darkolivegreen":"tmavá olivovo zelená","darkorange":"tmavá oranžová","darkorchid":"tmavá orchidea","darkred":"tmavoÄervená","darksalmon":"tmavá lososová","darkseagreen":"tmavá morská zelená","darkslateblue":"tmavá bridlicová modrá","darkslategray":"tmavá bridlicová sivá","darkslategrey":"tmavá bridlicová sivá","darkturquoise":"tmavá tyrkysová","darkviolet":"tmavofialová","deeppink":"hlboká ružová","deepskyblue":"hlboká modrá obloha","dimgray":"matná sivá","dimgrey":"matná sivá","dodgerblue":"modrá (dodger)","firebrick":"pálená tehla","floralwhite":"biely kvet","forestgreen":"lesná zelená","fuchsia":"fuchsia","gainsboro":"sivá - gainsboro","ghostwhite":"biela (ghost white)","gold":"zlatá","goldenrod":"zlatobyľ","gray":"sivá","green":"zelená","greenyellow":"zelenožltá","grey":"sivá","honeydew":"ambrózia","hotpink":"horúca ružová","indianred":"indiánska Äervená","indigo":"indigo","ivory":"slonovina","khaki":"kaki","lavender":"levanduľa","lavenderblush":"rumencová levanduľa","lawngreen":"trávová zelená","lemonchiffon":"citrónový Å¡ifón","lightblue":"svetlomodrá","lightcoral":"svetlá koralová","lightcyan":"svetlá zelenomodrá","lightgoldenrodyellow":"svetlá zlatobyľová žltá","lightgray":"svetlosivá","lightgreen":"svetlozelená","lightgrey":"svetlosivá","lightpink":"svetloružová","lightsalmon":"svetlá lososová","lightseagreen":"svetlá morská zelená","lightskyblue":"svetlá modrá obloha","lightslategray":"svetlá bridlicová sivá","lightslategrey":"svetlá bridlicová sivá","lightsteelblue":"svetlá oceľovomodrá","lightyellow":"svetložltá","lime":"limetková","limegreen":"limetková zelená","linen":"ľan","magenta":"purpurová","maroon":"gaÅ¡tanová hnedá","mediumaquamarine":"stredná akvamarínová","mediumblue":"stredná modrá","mediumorchid":"stredná orchideová","mediumpurple":"stredná purpurová","mediumseagreen":"stredná morská zelená","mediumslateblue":"stredná bridlicová modrá","mediumspringgreen":"stredná jarná zelená","mediumturquoise":"stredná tyrkysová","mediumvioletred":"stredná fialovoÄervená","midnightblue":"polnoÄná modrá","mintcream":"mätová krémová","mistyrose":"zahmlená ruža","moccasin":"mokasínová","navajowhite":"navajská biela","navy":"námornícka","oldlace":"stará Äipka","olive":"olivová","olivedrab":"fádna olivová","orange":"oranžová","orangered":"oranžovo Äervená","orchid":"orchideová","palegoldenrod":"bledá zlatobyľová","palegreen":"bledá zelená","paleturquoise":"bledá tyrkysová","palevioletred":"bledá fialovo Äervená","papayawhip":"papájový krém","peachpuff":"broskyňový nádych","peru":"peru","pink":"ružová","plum":"slivková","powderblue":"prášková modrá","purple":"purpurová","red":"Äervená","rosybrown":"ružovo hnedá","royalblue":"kráľovská modrá","saddlebrown":"sedlová hnedá","salmon":"lososová","sandybrown":"piesková hnedá","seagreen":"morská zelená","seashell":"lastúrová","sienna":"sienská","silver":"strieborná","skyblue":"modré nebo","slateblue":"bridlicová modrá","slategray":"bridlicová sivá","slategrey":"bridlicová sivá","snow":"snehová","springgreen":"jarná zelená","steelblue":"oceľovomodrá","tan":"žltohnedá","teal":"zelenomodrá","thistle":"bodliaková","tomato":"paradajková","transparent":"priesvitná","turquoise":"tyrkysová","violet":"fialová","wheat":"pÅ¡eniÄná","white":"biela","whitesmoke":"biely dym","yellow":"žltá","yellowgreen":"žltozelená"},"dijit/nls/loading":{"loadingState":"Zavádza sa...","errorState":"Ľutujeme, ale vyskytla sa chyba"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"ZruÅ¡iÅ¥","buttonSave":"UložiÅ¥","itemClose":"ZatvoriÅ¥"},"dijit/form/nls/validate":{"invalidMessage":"Zadaná hodnota nie je platná.","missingMessage":"Táto hodnota je povinná.","rangeMessage":"Táto hodnota je mimo rozsah."},"dijit/form/nls/ComboBox":{"previousMessage":"Predchádzajúce možnosti","nextMessage":"Viac možností"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bil'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 biliónov","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_sl.js b/lib/dojo/nls/tt-rss-layer_sl.js new file mode 100644 index 0000000000..3f23d6440d --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_sl.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_sl",{"dojo/nls/colors":{"aliceblue":"alice blue modra","antiquewhite":"antiÄno bela","aqua":"svetlo modra","aquamarine":"akvamarin","azure":"azurno modra","beige":"bež","bisque":"porcelanasta","black":"Ärna","blanchedalmond":"obledelo mandljeva","blue":"modra","blueviolet":"modro vijoliÄna","brown":"rjava","burlywood":"peÅ¡Äeno sivo-rjava","cadetblue":"kadetsko modra","chartreuse":"chartreuse","chocolate":"Äokoladna","coral":"koralna","cornflowerblue":"plaviÄasto modra","cornsilk":"koruzna","crimson":"karminasta","cyan":"cijan","darkblue":"temno modra","darkcyan":"temno cijan","darkgoldenrod":"temna zlata rozga","darkgray":"temno siva","darkgreen":"temno zelena","darkgrey":"temno siva","darkkhaki":"temno kaki","darkmagenta":"temna magenta","darkolivegreen":"temna olivno zelena","darkorange":"temno oranžna","darkorchid":"temno orhidejasta","darkred":"temno rdeÄa","darksalmon":"temno lososova","darkseagreen":"temno morsko zelena","darkslateblue":"temno skrilasto modra","darkslategray":"temno skrilasto siva","darkslategrey":"temno skrilasto siva","darkturquoise":"temno turkizna","darkviolet":"temno vijoliÄna","deeppink":"temno rožnata","deepskyblue":"temno nebeÅ¡ko modra","dimgray":"pepelnato siva","dimgrey":"pepelnato siva","dodgerblue":"dodgersko modra","firebrick":"opeÄnata","floralwhite":"cvetno bela","forestgreen":"gozdno zelena","fuchsia":"roza","gainsboro":"gainsboro","ghostwhite":"senÄnato bela","gold":"zlata","goldenrod":"zlata rozga","gray":"siva","green":"zelena","greenyellow":"zeleno-rumena","grey":"siva","honeydew":"medena rosa","hotpink":"kriÄeÄe rožnata","indianred":"indijansko rdeÄa","indigo":"indigo","ivory":"slonokoÅ¡Äena","khaki":"kaki","lavender":"sivka","lavenderblush":"rožnato sivka","lawngreen":"travniÅ¡ko zelena","lemonchiffon":"limonast Å¡ifon","lightblue":"svetlo modra","lightcoral":"svetlo koralna","lightcyan":"svetlo cijan","lightgoldenrodyellow":"svetlo rumena zlata rozga","lightgray":"svetlo siva","lightgreen":"svetlo zelena","lightgrey":"svetlo siva","lightpink":"svetlo rožnata","lightsalmon":"svetlo lososova","lightseagreen":"svetlo morsko zelena","lightskyblue":"svetlo nebeÅ¡ko modra","lightslategray":"svetlo skrilasto siva","lightslategrey":"svetlo skrilasto siva","lightsteelblue":"svetlo kovinsko modra","lightyellow":"svetlo rumena","lime":"svetlo zelena","limegreen":"apneno zelena","linen":"lanena","magenta":"magenta","maroon":"kostanjeva","mediumaquamarine":"srednji akvamarin","mediumblue":"srednje modra","mediumorchid":"srednje orhidejasta","mediumpurple":"srednje Å¡krlatna","mediumseagreen":"srednje morsko zelena","mediumslateblue":"srednje skrilasto modra","mediumspringgreen":"srednje pomladno zelena","mediumturquoise":"srednje turkizna","mediumvioletred":"srednje vijoliÄno rdeÄa","midnightblue":"polnoÄno modra","mintcream":"metina krema","mistyrose":"megleno rožnata","moccasin":"mokasinasta","navajowhite":"navajo bela","navy":"mornarsko modra","oldlace":"stara Äipka","olive":"olivno zelena","olivedrab":"umazano olivna","orange":"oranžna","orangered":"oranžno-rdeÄa","orchid":"orhidejasta","palegoldenrod":"bleda zlata rozga","palegreen":"bledo zelena","paleturquoise":"bledo turkizna","palevioletred":"bledo vijoliÄno-rdeÄa","papayawhip":"papaja","peachpuff":"breskova","peru":"perujska","pink":"rožnata","plum":"slivova","powderblue":"kobaltovo modra","purple":"Å¡krlatna","red":"rdeÄa","rosybrown":"rožnato rjava","royalblue":"kraljevsko modra","saddlebrown":"sedlasto rjava","salmon":"lososova","sandybrown":"peÅ¡Äeno rjava","seagreen":"morsko zelena","seashell":"morska lupina","sienna":"sienna","silver":"srebrna","skyblue":"nebeÅ¡ko modra","slateblue":"skrilasto modra","slategray":"skrilasto siva","slategrey":"skrilasto siva","snow":"snežena","springgreen":"pomladno zelena","steelblue":"kovinsko modra","tan":"rumeno-rjava","teal":"modrozelena","thistle":"osatna","tomato":"paradižnikova","transparent":"prosojno","turquoise":"turkizna","violet":"vijoliÄna","wheat":"pÅ¡eniÄna","white":"bela","whitesmoke":"megleno bela","yellow":"rumena","yellowgreen":"rumeno-zelena"},"dijit/nls/loading":{"loadingState":"Nalaganje ...","errorState":"Oprostite, priÅ¡lo je do napake."},"dijit/nls/common":{"buttonOk":"V redu","buttonCancel":"PrekliÄi","buttonSave":"Shrani","itemClose":"Zapri"},"dijit/form/nls/validate":{"invalidMessage":"Vnesena vrednost ni veljavna.","missingMessage":"Ta vrednost je zahtevana.","rangeMessage":"Ta vrednost je izven obmoÄja."},"dijit/form/nls/ComboBox":{"previousMessage":"PrejÅ¡nje izbire","nextMessage":"Dodatne izbire"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bil'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 bilijona","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"e"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_sv.js b/lib/dojo/nls/tt-rss-layer_sv.js new file mode 100644 index 0000000000..abee028f85 --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_sv.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_sv",{"dojo/nls/colors":{"aliceblue":"aliceblÃ¥","antiquewhite":"antikvitt","aqua":"akvamarin","aquamarine":"akvamarin","azure":"azurblÃ¥tt","beige":"beige","bisque":"biskvi","black":"svart","blanchedalmond":"skÃ¥llad mandel","blue":"blÃ¥tt","blueviolet":"blÃ¥violett","brown":"brunt","burlywood":"träfärgat","cadetblue":"kadettblÃ¥tt","chartreuse":"chartreuse","chocolate":"choklad","coral":"korall","cornflowerblue":"kornblÃ¥tt","cornsilk":"gulvitt","crimson":"karmosinrött","cyan":"cyan","darkblue":"mörkblÃ¥tt","darkcyan":"mörkt cyan","darkgoldenrod":"mörkt gullris","darkgray":"mörkgrÃ¥tt","darkgreen":"mörkgrönt","darkgrey":"mörkgrÃ¥tt","darkkhaki":"mörkt kaki","darkmagenta":"mörk magenta","darkolivegreen":"mörkt olivgrönt","darkorange":"mörkorange","darkorchid":"mörkt orkidé","darkred":"mörkrött","darksalmon":"mörkt laxfärgat","darkseagreen":"mörkt havsgrönt","darkslateblue":"mörkt skifferblÃ¥tt","darkslategray":"mörkt skiffergrÃ¥tt","darkslategrey":"mörkt skiffergrÃ¥tt","darkturquoise":"mörkturkost","darkviolet":"mörkviolett","deeppink":"djuprosa","deepskyblue":"mörkt himmelsblÃ¥tt","dimgray":"smutsgrÃ¥tt","dimgrey":"smutsgrÃ¥tt","dodgerblue":"dodgerblÃ¥tt","firebrick":"tegelstensrött","floralwhite":"blomvitt","forestgreen":"skogsgrönt","fuchsia":"fuchsia","gainsboro":"gainsboro","ghostwhite":"spökvitt","gold":"guld","goldenrod":"gullris","gray":"grÃ¥tt","green":"grönt","greenyellow":"gröngult","grey":"grÃ¥tt","honeydew":"honungsdagg","hotpink":"varmrosa","indianred":"indianrött","indigo":"indigo","ivory":"elfenbensvitt","khaki":"kaki","lavender":"lavendel","lavenderblush":"lavendelskimrande","lawngreen":"gräsmattegrönt","lemonchiffon":"citronchiffong","lightblue":"ljusblÃ¥tt","lightcoral":"ljuskorall","lightcyan":"ljust cyan","lightgoldenrodyellow":"ljust gullrisgult","lightgray":"ljusgrÃ¥tt","lightgreen":"ljusgrönt","lightgrey":"ljusgrÃ¥tt","lightpink":"ljusrosa","lightsalmon":"ljust laxfärgat","lightseagreen":"ljust havsgrönt","lightskyblue":"ljust himmelsblÃ¥tt","lightslategray":"ljust skiffergrÃ¥tt","lightslategrey":"ljust skiffergrÃ¥tt","lightsteelblue":"ljust stÃ¥lblÃ¥tt","lightyellow":"ljusgult","lime":"lime","limegreen":"limegrönt","linen":"linne","magenta":"magenta","maroon":"rödbrunt","mediumaquamarine":"mellanakvamarin","mediumblue":"mellanblÃ¥tt","mediumorchid":"mellanorkidé","mediumpurple":"mellanlila","mediumseagreen":"mellanhavsgrönt","mediumslateblue":"mellanskifferblÃ¥tt","mediumspringgreen":"mellanvÃ¥rgrönt","mediumturquoise":"mellanturkost","mediumvioletred":"mellanviolettrött","midnightblue":"midnattsblÃ¥tt","mintcream":"mintgrädde","mistyrose":"dunkelrosa","moccasin":"mockasin","navajowhite":"navajovitt","navy":"marinblÃ¥tt","oldlace":"spetsvitt","olive":"olivfärgat","olivedrab":"olivsmutsgult","orange":"orange","orangered":"orangerött","orchid":"orkidé","palegoldenrod":"blekt gullris","palegreen":"blekgrönt","paleturquoise":"blekturkost","palevioletred":"blekviolettrött","papayawhip":"papayaröra","peachpuff":"persika","peru":"peru","pink":"rosa","plum":"plommon","powderblue":"pulverblÃ¥tt","purple":"lila","red":"rött","rosybrown":"rosenbrunt","royalblue":"kungligt blÃ¥tt","saddlebrown":"sadelbrunt","salmon":"laxfärgat","sandybrown":"sandbrunt","seagreen":"havsgrönt","seashell":"snäckskal","sienna":"sienna","silver":"silver","skyblue":"himmelsblÃ¥tt","slateblue":"skifferblÃ¥tt","slategray":"skiffergrÃ¥tt","slategrey":"skiffergrÃ¥tt","snow":"snö","springgreen":"vÃ¥rgrönt","steelblue":"stÃ¥lblÃ¥tt","tan":"mellanbrunt","teal":"blÃ¥grönt","thistle":"tistel","tomato":"tomatrött","transparent":"transparent","turquoise":"turkost","violet":"violett","wheat":"vete","white":"vitt","whitesmoke":"vit rök","yellow":"gult","yellowgreen":"gulgrönt"},"dijit/nls/loading":{"loadingState":"Läser in...","errorState":"Det har inträffat ett fel."},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Avbryt","buttonSave":"Spara","itemClose":"Stäng"},"dijit/form/nls/validate":{"invalidMessage":"Angivet värde är inte giltigt.","missingMessage":"Värdet krävs.","rangeMessage":"Värdet ligger utanför intervallet."},"dijit/form/nls/ComboBox":{"previousMessage":"Tidigare val","nextMessage":"Fler val"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"−","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bn","currencySpacing-afterCurrency-insertBetween":" ","nan":"¤¤¤","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 biljoner","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"×10^","currencyDecimal":":","currencyGroup":"."}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_th.js b/lib/dojo/nls/tt-rss-layer_th.js new file mode 100644 index 0000000000..f6b8f46a80 --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_th.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_th",{"dojo/nls/colors":{"aliceblue":"ฟ้าจาง","antiquewhite":"สีเนื้อ","aqua":"ฟ้าน้ำทะเล","aquamarine":"อะความารีน","azure":"น้ำเงินฟ้า","beige":"น้ำตาลเบจ","bisque":"ขาวข้าวสาร","black":"ดำ","blanchedalmond":"เนื้ออ่อน","blue":"น้ำเงิน","blueviolet":"น้ำเงินม่วง","brown":"น้ำตาล","burlywood":"น้ำตาลอ่อน","cadetblue":"เขียวน้ำเงินหม่น","chartreuse":"เขียวสะท้อนà¹à¸ªà¸‡","chocolate":"ช็อà¸à¹‚à¸à¹à¸¥à¸•","coral":"à¹à¸ªà¸”เข้มนวล","cornflowerblue":"สีคอร์นฟลาวเวอร์บลู","cornsilk":"cornsilk","crimson":"à¹à¸”งเลือดหมู","cyan":"เขียวà¹à¸à¸¡à¸™à¹‰à¸³à¹€à¸‡à¸´à¸™","darkblue":"น้ำเงินเข้ม","darkcyan":"เขียวà¹à¸à¸¡à¸™à¹‰à¸³à¹€à¸‡à¸´à¸™à¹€à¸‚้ม","darkgoldenrod":"ทองเหลืองเข้ม","darkgray":"เทาเข้ม","darkgreen":"เขียวเข้ม","darkgrey":"เทาเข้ม","darkkhaki":"à¸à¸²à¸à¸µà¹€à¸‚้ม","darkmagenta":"à¹à¸”งà¹à¸à¸¡à¸¡à¹ˆà¸§à¸‡à¹€à¸‚้ม","darkolivegreen":"เขียวโอลีฟเข้ม","darkorange":"ส้มเข้ม","darkorchid":"สีม่วงà¸à¸¥à¹‰à¸§à¸¢à¹„ม้เข้ม","darkred":"à¹à¸”งเข้ม","darksalmon":"ส้มเข้ม","darkseagreen":"เขียวทะเลเข้ม","darkslateblue":"น้ำเงินนวลเข้ม","darkslategray":"เทานวลเข้ม","darkslategrey":"เทานวลเข้ม","darkturquoise":"ฟ้าขี้นà¸à¸à¸²à¸£à¹€à¸§à¸à¹€à¸‚้ม","darkviolet":"ม่วงเข้ม","deeppink":"ชมพูเข้ม","deepskyblue":"ฟ้าสด","dimgray":"เทาทึม","dimgrey":"เทาทึม","dodgerblue":"ฟ้าสะท้อนà¹à¸ªà¸‡","firebrick":"สีอิà¸","floralwhite":"ขาวà¹à¸à¸¡à¸Šà¸¡à¸žà¸¹","forestgreen":"หยà¸","fuchsia":"บานเย็น","gainsboro":"เทานวล","ghostwhite":"น้ำข้าว","gold":"ทอง","goldenrod":"ทองเหลือง","gray":"เทา","green":"เขียว","greenyellow":"เขียวà¹à¸à¸¡à¹€à¸«à¸¥à¸·à¸­à¸‡","grey":"เทา","honeydew":"ขาวà¹à¸à¸¡à¹€à¸‚ียว","hotpink":"ชมพูจัด","indianred":"à¹à¸”งอมเหลือง","indigo":"คราม","ivory":"งาช้าง","khaki":"à¸à¸²à¸à¸µ","lavender":"ม่วงลาเวนเดอร์","lavenderblush":"นมเย็น","lawngreen":"เขียวหà¸à¹‰à¸²à¸­à¹ˆà¸­à¸™","lemonchiffon":"lemon chiffon","lightblue":"น้ำเงินอ่อน","lightcoral":"ชมพูอมà¹à¸”ง","lightcyan":"เขียวà¹à¸à¸¡à¸™à¹‰à¸³à¹€à¸‡à¸´à¸™à¸­à¹ˆà¸­à¸™","lightgoldenrodyellow":"ทองเหลืองอ่อน","lightgray":"เทาอ่อน","lightgreen":"เขียวอ่อน","lightgrey":"เทาอ่อน","lightpink":"ชมพูอ่อน","lightsalmon":"ส้มจาง","lightseagreen":"เขียวทะเลอ่อน","lightskyblue":"ฟ้าอ่อน","lightslategray":"เทานวลอ่อน","lightslategrey":"เทานวลอ่อน","lightsteelblue":"น้ำเงินนวลอ่อน","lightyellow":"เหลืองอ่อน","lime":"เหลืองมะนาว","limegreen":"เขียวมะนาว","linen":"ลินนิน","magenta":"à¹à¸”งà¹à¸à¸¡à¸¡à¹ˆà¸§à¸‡","maroon":"น้ำตาลà¹à¸”ง","mediumaquamarine":"อะความารีนà¸à¸¥à¸²à¸‡à¹†","mediumblue":"น้ำเงินà¸à¸¥à¸²à¸‡à¹†","mediumorchid":"ม่วงà¸à¸¥à¹‰à¸§à¸¢à¹„ม้à¸à¸¥à¸²à¸‡à¹†","mediumpurple":"ม่วงอัà¸à¸Šà¸±à¸","mediumseagreen":" เขียวทะเลà¸à¸¥à¸²à¸‡à¹†","mediumslateblue":"น้ำเงินนวลà¸à¸¥à¸²à¸‡à¹†","mediumspringgreen":"สีเขียวนวลà¸à¸¥à¸²à¸‡à¹†","mediumturquoise":"ฟ้าขี้นà¸à¸à¸²à¸£à¹€à¸§à¸à¸à¸¥à¸²à¸‡à¹†","mediumvioletred":"à¹à¸”งอมม่วงà¸à¸¥à¸²à¸‡à¹†","midnightblue":"น้ำเงินทึบ","mintcream":"ขาวà¸à¸°à¸—ิ","mistyrose":"ชมพูหม่น","moccasin":"ม็อคค่า","navajowhite":"ส้มหนังà¸à¸¥à¸±à¸š","navy":"น้ำเงินเข้ม","oldlace":"ขาวนวล","olive":"โอลีฟ","olivedrab":"เขียวมะà¸à¸­à¸à¹à¸à¹ˆ","orange":"ส้ม","orangered":"ส้มà¹à¸à¸¡à¹à¸”ง","orchid":"สีà¸à¸¥à¹‰à¸§à¸¢à¹„ม้","palegoldenrod":"ทองเหลืองจาง","palegreen":"เขียวจาง","paleturquoise":"ฟ้าขี้นà¸à¸à¸²à¸£à¹€à¸§à¸à¸ˆà¸²à¸‡","palevioletred":"à¹à¸”งอมม่วงจาง","papayawhip":"ชมพูจาง","peachpuff":" สีพีช","peru":"ส้มดินเผา","pink":"ชมพู","plum":"ม่วงอ่อน","powderblue":"ฟ้าหม่น","purple":"ม่วง","red":"à¹à¸”ง","rosybrown":"à¸à¸°à¸›à¸´","royalblue":"น้ำเงินเข้ม","saddlebrown":"น้ำตาล","salmon":"ส้มอ่อน","sandybrown":"น้ำตาลลูà¸à¸£à¸±à¸‡","seagreen":"เขียวทะเล","seashell":"สีขาวหอยทะเล","sienna":"น้ำตาลอมà¹à¸”ง","silver":"เงิน","skyblue":"ฟ้า","slateblue":"น้ำเงินนวล","slategray":"เทาอมน้ำเงินนวล","slategrey":"เทาอมน้ำเงินนวล","snow":"ขาวหิมะ","springgreen":"เขียว","steelblue":"น้ำเงินด้าน","tan":"à¹à¸—น","teal":"เขียวหัวเป็ด","thistle":"ม่วงจาง","tomato":"à¹à¸ªà¸”","transparent":"สีใส","turquoise":"ฟ้าขี้นà¸à¸à¸²à¸£à¹€à¸§à¸","violet":"ม่วง","wheat":"เหลืองรำข้าว","white":"ขาว","whitesmoke":"ขาวควัน","yellow":"เหลือง","yellowgreen":"เหลืองà¹à¸à¸¡à¹€à¸‚ียว"},"dijit/nls/loading":{"loadingState":"à¸à¸³à¸¥à¸±à¸‡à¹‚หลด...","errorState":"ขออภัย เà¸à¸´à¸”ข้อผิดพลาด"},"dijit/nls/common":{"buttonOk":"ตà¸à¸¥à¸‡","buttonCancel":"ยà¸à¹€à¸¥à¸´à¸","buttonSave":"บันทึà¸","itemClose":"ปิด"},"dijit/form/nls/validate":{"invalidMessage":"ค่าที่ป้อนไม่ถูà¸à¸•้อง","missingMessage":"จำเป็นต้องมีค่านี้","rangeMessage":"ค่านี้เà¸à¸´à¸™à¸Šà¹ˆà¸§à¸‡"},"dijit/form/nls/ComboBox":{"previousMessage":"à¸à¸²à¸£à¹€à¸¥à¸·à¸­à¸à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²","nextMessage":"à¸à¸²à¸£à¹€à¸¥à¸·à¸­à¸à¹€à¸žà¸´à¹ˆà¸¡à¹€à¸•ิม"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 ล'.'ล'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 ล้านล้าน","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_tr.js b/lib/dojo/nls/tt-rss-layer_tr.js new file mode 100644 index 0000000000..3f41399a2f --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_tr.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_tr",{"dojo/nls/colors":{"aliceblue":"alice mavisi","antiquewhite":"antik beyaz","aqua":"deniz mavisi","aquamarine":"akuamarin","azure":"azur mavisi","beige":"bej","bisque":"bisküvi","black":"siyah","blanchedalmond":"soluk badem","blue":"mavi","blueviolet":"mavi-mor","brown":"kahverengi","burlywood":"sarımsı kahverengi","cadetblue":"denizci mavisi","chartreuse":"chartreuse","chocolate":"çikolata","coral":"mercan","cornflowerblue":"peygamber çiçeÄŸi mavisi","cornsilk":"mısır rengi","crimson":"crimson","cyan":"camgöbeÄŸi","darkblue":"koyu mavi","darkcyan":"koyu camgöbeÄŸi","darkgoldenrod":"koyu sarı","darkgray":"koyu gri","darkgreen":"koyu yeÅŸil","darkgrey":"koyu gri","darkkhaki":"koyu haki","darkmagenta":"koyu mor","darkolivegreen":"koyu zeytin yeÅŸili","darkorange":"koyu turuncu","darkorchid":"koyu orkide","darkred":"koyu kırmızı","darksalmon":"koyu somon","darkseagreen":"koyu deniz yeÅŸili","darkslateblue":"koyu arduvaz mavisi","darkslategray":"koyu arduvaz grisi","darkslategrey":"koyu arduvaz grisi","darkturquoise":"koyu turkuaz","darkviolet":"koyu eflatun","deeppink":"koyu pembe","deepskyblue":"koyu gök mavisi","dimgray":"soluk gri","dimgrey":"soluk gri","dodgerblue":"toz mavisi","firebrick":"canlı kiremit","floralwhite":"çiçek beyazı","forestgreen":"koyu deniz yeÅŸili","fuchsia":"fuÅŸya","gainsboro":"gainsboro","ghostwhite":"silik beyaz","gold":"altın","goldenrod":"sarısabır","gray":"gri","green":"yeÅŸil","greenyellow":"yeÅŸil-sarı","grey":"gri","honeydew":"çam sakızı","hotpink":"sıcak pembe","indianred":"kızılderili kırmızısı","indigo":"çivit mavisi","ivory":"fildiÅŸi","khaki":"haki","lavender":"lavanta","lavenderblush":"lavanta pembesi","lawngreen":"çimen yeÅŸili","lemonchiffon":"limoni","lightblue":"açık mavi","lightcoral":"açık mercan","lightcyan":"açık camgöbeÄŸi","lightgoldenrodyellow":"açık sarısabır","lightgray":"açık gri","lightgreen":"açık yeÅŸil","lightgrey":"açık gri","lightpink":"açık pembe","lightsalmon":"açık somon","lightseagreen":"açık deniz yeÅŸili","lightskyblue":"açık gök mavisi","lightslategray":"açık arduvaz grisi","lightslategrey":"açık arduvaz grisi","lightsteelblue":"açık metalik mavi","lightyellow":"açık sarı","lime":"limon yeÅŸili","limegreen":"küf yeÅŸili","linen":"keten","magenta":"macenta","maroon":"kestane","mediumaquamarine":"orta akuamarin","mediumblue":"orta mavi","mediumorchid":"orta orkide","mediumpurple":"orta mor","mediumseagreen":"orta deniz yeÅŸili","mediumslateblue":"orta arduvaz mavisi","mediumspringgreen":"orta bahar yeÅŸili","mediumturquoise":"orta turkuaz","mediumvioletred":"orta menekÅŸe kırmızısı","midnightblue":"gece mavisi","mintcream":"naneli krem","mistyrose":"gülkurusu","moccasin":"mokosen","navajowhite":"navajo beyazı","navy":"lacivert","oldlace":"eski dantel","olive":"zeytin","olivedrab":"asker yeÅŸili","orange":"turuncu","orangered":"turuncu kırmızı","orchid":"orkide","palegoldenrod":"soluk sarısabır","palegreen":"soluk yeÅŸil","paleturquoise":"soluk turkuaz","palevioletred":"soluk menekÅŸe kırmızısı","papayawhip":"papaya sapı","peachpuff":"açık ÅŸeftali","peru":"peru","pink":"pembe","plum":"erik","powderblue":"pudra mavisi","purple":"mor","red":"kırmızı","rosybrown":"pembemsi kahverengi","royalblue":"parlak koyu mavi","saddlebrown":"açık kahve","salmon":"somon","sandybrown":"kum rengi","seagreen":"deniz yeÅŸili","seashell":"deniz kabuÄŸu","sienna":"koyu kahve","silver":"gümüş","skyblue":"gök mavisi","slateblue":"arduvaz mavisi","slategray":"arduvaz grisi","slategrey":"arduvaz grisi","snow":"kar","springgreen":"bahar yeÅŸili","steelblue":"metalik mavi","tan":"güneÅŸ yanığı","teal":"Teal mavi","thistle":"devedikeni","tomato":"domates","transparent":"saydam","turquoise":"turkuaz","violet":"eflatun","wheat":"buÄŸday","white":"beyaz","whitesmoke":"beyaz duman","yellow":"sarı","yellowgreen":"sarı yeÅŸil"},"dijit/nls/loading":{"loadingState":"Yükleniyor...","errorState":"Üzgünüz, bir hata oluÅŸtu"},"dijit/nls/common":{"buttonOk":"Tamam","buttonCancel":"İptal","buttonSave":"Kaydet","itemClose":"Kapat"},"dijit/form/nls/validate":{"invalidMessage":"Girilen deÄŸer geçersiz.","missingMessage":"Bu deÄŸer gerekli.","rangeMessage":"Bu deÄŸer aralık dışında."},"dijit/form/nls/ComboBox":{"previousMessage":"Önceki seçenekler","nextMessage":"DiÄŸer seçenekler"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":".","percentFormat":"%#,##0","decimalFormat-long":"000 trilyon","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_zh-cn.js b/lib/dojo/nls/tt-rss-layer_zh-cn.js new file mode 100644 index 0000000000..b247269d77 --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_zh-cn.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_zh-cn",{"dojo/nls/colors":{"aliceblue":"爱丽ä¸è“","antiquewhite":"å¤è‘£ç™½","aqua":"浅绿色","aquamarine":"碧绿色","azure":"天è“色","beige":"米色","bisque":"桔黄色","black":"黑色","blanchedalmond":"白æè‰²","blue":"è“色","blueviolet":"è“紫色","brown":"棕色","burlywood":"实木色","cadetblue":"ç°è“色","chartreuse":"黄绿色","chocolate":"巧克力色","coral":"çŠç‘šè‰²","cornflowerblue":"æµ…è“色","cornsilk":"米绸色","crimson":"绯红色","cyan":"é’è“色","darkblue":"æ·±è“","darkcyan":"æ·±é’绿","darkgoldenrod":"深金黄","darkgray":"æ·±ç°è‰²","darkgreen":"深绿色","darkgrey":"æ·±ç°è‰²","darkkhaki":"æ·±å¡å…¶è‰²","darkmagenta":"深洋红色","darkolivegreen":"深橄榄绿","darkorange":"深橙色","darkorchid":"深紫色","darkred":"深红色","darksalmon":"深橙红","darkseagreen":"深海藻绿","darkslateblue":"æ·±é’è“","darkslategray":"æ·±é’ç°","darkslategrey":"æ·±é’ç°","darkturquoise":"深粉è“","darkviolet":"深紫色","deeppink":"深粉红色","deepskyblue":"深天è“色","dimgray":"æš—ç°è‰²","dimgrey":"æš—ç°è‰²","dodgerblue":"é—ªè“色","firebrick":"砖红","floralwhite":"花白色","forestgreen":"森林绿","fuchsia":"紫红色","gainsboro":"æ·¡ç°è‰²","ghostwhite":"è‹ç™½","gold":"金黄色","goldenrod":"金麒麟色","gray":"ç°è‰²","green":"绿色","greenyellow":"绿黄色","grey":"ç°è‰²","honeydew":"蜜æ±è‰²","hotpink":"深粉红","indianred":"å°åº¦çº¢","indigo":"é›é’","ivory":"象牙色","khaki":"å¡å…¶è‰²","lavender":"淡紫色","lavenderblush":"淡紫红","lawngreen":"è‰ç»¿è‰²","lemonchiffon":"柠檬绸色","lightblue":"æ·¡è“色","lightcoral":"æµ…çŠç‘šè‰²","lightcyan":"æµ…é’色","lightgoldenrodyellow":"浅金黄色","lightgray":"æµ…ç°è‰²","lightgreen":"浅绿色","lightgrey":"æµ…ç°è‰²","lightpink":"浅粉红色","lightsalmon":"淡橙色","lightseagreen":"浅海藻绿","lightskyblue":"浅天è“色","lightslategray":"æµ…é’ç°","lightslategrey":"æµ…é’ç°","lightsteelblue":"æµ…é’¢è“色","lightyellow":"浅黄色","lime":"淡黄绿色","limegreen":"橙绿色","linen":"亚麻色","magenta":"洋红色","maroon":"栗色","mediumaquamarine":"间绿色","mediumblue":"é—´è“色","mediumorchid":"间紫色","mediumpurple":"间紫色","mediumseagreen":"é—´æµ·è“色","mediumslateblue":"é—´æš—è“色","mediumspringgreen":"间春绿色","mediumturquoise":"间绿å®çŸ³è‰²","mediumvioletred":"间紫罗兰色","midnightblue":"æ·±è“色","mintcream":"è–„è·è‰²","mistyrose":"浅玫瑰色","moccasin":"鹿皮色","navajowhite":"纳瓦白","navy":"è—é’色","oldlace":"è€ç™½è‰²","olive":"橄榄绿","olivedrab":"è‰ç»¿è‰²","orange":"橙色","orangered":"橙红色","orchid":"紫色","palegoldenrod":"淡金黄色","palegreen":"淡绿色","paleturquoise":"è‹ç»¿è‰²","palevioletred":"è‹ç´«ç½—兰色","papayawhip":"木瓜色","peachpuff":"桃色","peru":"秘é²è‰²","pink":"粉红色","plum":"æ¨æŽè‰²","powderblue":"é“è“","purple":"紫色","red":"红色","rosybrown":"è¤çŽ«ç‘°çº¢","royalblue":"å“è“","saddlebrown":"é‡è¤è‰²","salmon":"橙红","sandybrown":"æ²™è¤è‰²","seagreen":"海绿色","seashell":"æµ·è´è‰²","sienna":"赭色","silver":"银白色","skyblue":"天è“色","slateblue":"石è“色","slategray":"ç°çŸ³è‰²","slategrey":"ç°çŸ³è‰²","snow":"雪白色","springgreen":"春绿色","steelblue":"é’¢è“色","tan":"棕è¤è‰²","teal":"水鸭色","thistle":"蓟色","tomato":"西红柿色","transparent":"逿˜Žçš„","turquoise":"绿å®çŸ³è‰²","violet":"紫色","wheat":"浅黄色","white":"白色","whitesmoke":"烟白色","yellow":"黄色","yellowgreen":"黄绿色"},"dijit/nls/loading":{"loadingState":"正在加载...","errorState":"对ä¸èµ·ï¼Œå‘生了错误"},"dijit/nls/common":{"buttonOk":"确定","buttonCancel":"å–æ¶ˆ","buttonSave":"ä¿å­˜","itemClose":"关闭"},"dijit/form/nls/validate":{"invalidMessage":"输入的值无效。","missingMessage":"该值是必需的。","rangeMessage":"此值超出范围。"},"dijit/form/nls/ComboBox":{"previousMessage":"å…ˆå‰é€‰é¡¹","nextMessage":"更多选项"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000å…†","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000å…†","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_zh-tw.js b/lib/dojo/nls/tt-rss-layer_zh-tw.js new file mode 100644 index 0000000000..1b4d7263c3 --- /dev/null +++ b/lib/dojo/nls/tt-rss-layer_zh-tw.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/tt-rss-layer_zh-tw",{"dojo/nls/colors":{"aliceblue":"愛麗絲è—","antiquewhite":"米白色","aqua":"水色","aquamarine":"碧綠色","azure":"天è—色","beige":"ç°æ£•色","bisque":"橘黃色","black":"黑色","blanchedalmond":"æä»ç™½","blue":"è—色","blueviolet":"è—紫色","brown":"è¤è‰²","burlywood":"實木色","cadetblue":"è»æœè—","chartreuse":"淡黃綠色","chocolate":"巧克力色","coral":"çŠç‘šç´…","cornflowerblue":"矢車èŠè—","cornsilk":"玉米黃","crimson":"暗深紅色","cyan":"é’色","darkblue":"æš—è—色","darkcyan":"æš—é’色","darkgoldenrod":"暗金èŠè‰²","darkgray":"æš—ç°è‰²","darkgreen":"暗綠色","darkgrey":"æš—ç°è‰²","darkkhaki":"æš—å¡å…¶è‰²","darkmagenta":"暗紫紅色","darkolivegreen":"暗橄欖綠","darkorange":"暗橙色","darkorchid":"暗蘭花色","darkred":"暗紅色","darksalmon":"æš—é®­ç´…","darkseagreen":"暗海綠色","darkslateblue":"暗岩è—色","darkslategray":"暗岩ç°è‰²","darkslategrey":"暗岩ç°è‰²","darkturquoise":"æš—æ¾çŸ³ç¶ ","darkviolet":"暗紫羅蘭色","deeppink":"深粉紅色","deepskyblue":"深天è—色","dimgray":"æ˜ç°è‰²","dimgrey":"æ˜ç°è‰²","dodgerblue":"é“奇è—","firebrick":"紅磚色","floralwhite":"花å‰ç™½","forestgreen":"森綠色","fuchsia":"海棠紅","gainsboro":"石æ¿ç°","ghostwhite":"å¹½éˆè‰²","gold":"金色","goldenrod":"金èŠè‰²","gray":"ç°è‰²","green":"綠色","greenyellow":"綠黃色","grey":"ç°è‰²","honeydew":"密瓜色","hotpink":"暖粉紅色","indianred":"å°åº¦ç´…","indigo":"é›è—色","ivory":"象牙色","khaki":"å¡å…¶è‰²","lavender":"è–°è¡£è‰ç´«","lavenderblush":"è–°è¡£è‰ç´«ç´…","lawngreen":"è‰ç¶ è‰²","lemonchiffon":"奶油黃","lightblue":"æ·¡è—色","lightcoral":"æ·¡çŠç‘šç´…","lightcyan":"æ·¡é’色","lightgoldenrodyellow":"淡金èŠé»ƒ","lightgray":"æ·¡ç°è‰²","lightgreen":"淡綠色","lightgrey":"æ·¡ç°è‰²","lightpink":"淡粉紅色","lightsalmon":"æ·¡é®­ç´…","lightseagreen":"淡海綠色","lightskyblue":"淡天è—色","lightslategray":"淡岩ç°è‰²","lightslategrey":"淡岩ç°è‰²","lightsteelblue":"æ·¡éµè—色","lightyellow":"淡黃色","lime":"檸檬色","limegreen":"檸檬綠","linen":"亞麻色","magenta":"紫紅色","maroon":"栗色","mediumaquamarine":"中碧綠色","mediumblue":"中è—色","mediumorchid":"中蘭紫色","mediumpurple":"中紫色","mediumseagreen":"中海綠色","mediumslateblue":"中岩è—色","mediumspringgreen":"中春綠色","mediumturquoise":"中æ¾çŸ³ç¶ ","mediumvioletred":"中紫羅蘭紅","midnightblue":"åˆå¤œè—","mintcream":"è–„è·ä¹³ç™½è‰²","mistyrose":"霧玫瑰色","moccasin":"鹿皮黃色","navajowhite":"å°åœ°å®‰é»ƒè‰²","navy":"æµ·è»è—","oldlace":"舊蕾絲色","olive":"橄欖色","olivedrab":"橄欖綠","orange":"橙色","orangered":"橙紅色","orchid":"蘭花色","palegoldenrod":"ç°é‡‘èŠè‰²","palegreen":"ç°ç¶ è‰²","paleturquoise":"ç°æ¾çŸ³ç¶ ","palevioletred":"ç°ç´«ç¾…蘭紅","papayawhip":"番木瓜色","peachpuff":"粉撲桃色","peru":"祕魯色","pink":"粉紅色","plum":"æŽç´«è‰²","powderblue":"粉è—色","purple":"紫色","red":"紅色","rosybrown":"玫瑰è¤","royalblue":"å“è—色","saddlebrown":"éžè¤è‰²","salmon":"鮭紅色","sandybrown":"æ²™è¤è‰²","seagreen":"海綠色","seashell":"æµ·è²è‰²","sienna":"黃土赭色","silver":"銀色","skyblue":"天è—色","slateblue":"岩è—色","slategray":"岩ç°è‰²","slategrey":"岩ç°è‰²","snow":"雪白色","springgreen":"春綠色","steelblue":"éµè—色","tan":"çš®é©è‰²","teal":"æ·±è—綠色","thistle":"薊色","tomato":"蕃茄紅","transparent":"逿˜Ž","turquoise":"æ¾çŸ³ç¶ ","violet":"紫羅蘭色","wheat":"å°éº¥è‰²","white":"白色","whitesmoke":"白煙色","yellow":"黃色","yellowgreen":"黃綠色"},"dijit/nls/loading":{"loadingState":"載入中...","errorState":"抱歉,發生錯誤"},"dijit/nls/common":{"buttonOk":"確定","buttonCancel":"å–æ¶ˆ","buttonSave":"儲存","itemClose":"關閉"},"dijit/form/nls/validate":{"invalidMessage":"輸入的值無效。","missingMessage":"å¿…é ˆæä¾›æ­¤å€¼ã€‚","rangeMessage":"此值超出範åœã€‚"},"dijit/form/nls/ComboBox":{"previousMessage":"å‰ä¸€å€‹é¸æ“‡é …","nextMessage":"其他鏿“‡é …"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"éžæ•¸å€¼","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencyFormat":"¤#,##0.00","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000å…†","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"}}); \ No newline at end of file diff --git a/lib/dojo/nls/zh-tw/colors.js b/lib/dojo/nls/zh-tw/colors.js new file mode 100644 index 0000000000..822e8ac93a --- /dev/null +++ b/lib/dojo/nls/zh-tw/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/zh-tw/colors",({aliceblue:"愛麗絲è—",antiquewhite:"米白色",aqua:"水色",aquamarine:"碧綠色",azure:"天è—色",beige:"ç°æ£•色",bisque:"橘黃色",black:"黑色",blanchedalmond:"æä»ç™½",blue:"è—色",blueviolet:"è—紫色",brown:"è¤è‰²",burlywood:"實木色",cadetblue:"è»æœè—",chartreuse:"淡黃綠色",chocolate:"巧克力色",coral:"çŠç‘šç´…",cornflowerblue:"矢車èŠè—",cornsilk:"玉米黃",crimson:"暗深紅色",cyan:"é’色",darkblue:"æš—è—色",darkcyan:"æš—é’色",darkgoldenrod:"暗金èŠè‰²",darkgray:"æš—ç°è‰²",darkgreen:"暗綠色",darkgrey:"æš—ç°è‰²",darkkhaki:"æš—å¡å…¶è‰²",darkmagenta:"暗紫紅色",darkolivegreen:"暗橄欖綠",darkorange:"暗橙色",darkorchid:"暗蘭花色",darkred:"暗紅色",darksalmon:"æš—é®­ç´…",darkseagreen:"暗海綠色",darkslateblue:"暗岩è—色",darkslategray:"暗岩ç°è‰²",darkslategrey:"暗岩ç°è‰²",darkturquoise:"æš—æ¾çŸ³ç¶ ",darkviolet:"暗紫羅蘭色",deeppink:"深粉紅色",deepskyblue:"深天è—色",dimgray:"æ˜ç°è‰²",dimgrey:"æ˜ç°è‰²",dodgerblue:"é“奇è—",firebrick:"紅磚色",floralwhite:"花å‰ç™½",forestgreen:"森綠色",fuchsia:"海棠紅",gainsboro:"石æ¿ç°",ghostwhite:"å¹½éˆè‰²",gold:"金色",goldenrod:"金èŠè‰²",gray:"ç°è‰²",green:"綠色",greenyellow:"綠黃色",grey:"ç°è‰²",honeydew:"密瓜色",hotpink:"暖粉紅色",indianred:"å°åº¦ç´…",indigo:"é›è—色",ivory:"象牙色",khaki:"å¡å…¶è‰²",lavender:"è–°è¡£è‰ç´«",lavenderblush:"è–°è¡£è‰ç´«ç´…",lawngreen:"è‰ç¶ è‰²",lemonchiffon:"奶油黃",lightblue:"æ·¡è—色",lightcoral:"æ·¡çŠç‘šç´…",lightcyan:"æ·¡é’色",lightgoldenrodyellow:"淡金èŠé»ƒ",lightgray:"æ·¡ç°è‰²",lightgreen:"淡綠色",lightgrey:"æ·¡ç°è‰²",lightpink:"淡粉紅色",lightsalmon:"æ·¡é®­ç´…",lightseagreen:"淡海綠色",lightskyblue:"淡天è—色",lightslategray:"淡岩ç°è‰²",lightslategrey:"淡岩ç°è‰²",lightsteelblue:"æ·¡éµè—色",lightyellow:"淡黃色",lime:"檸檬色",limegreen:"檸檬綠",linen:"亞麻色",magenta:"紫紅色",maroon:"栗色",mediumaquamarine:"中碧綠色",mediumblue:"中è—色",mediumorchid:"中蘭紫色",mediumpurple:"中紫色",mediumseagreen:"中海綠色",mediumslateblue:"中岩è—色",mediumspringgreen:"中春綠色",mediumturquoise:"中æ¾çŸ³ç¶ ",mediumvioletred:"中紫羅蘭紅",midnightblue:"åˆå¤œè—",mintcream:"è–„è·ä¹³ç™½è‰²",mistyrose:"霧玫瑰色",moccasin:"鹿皮黃色",navajowhite:"å°åœ°å®‰é»ƒè‰²",navy:"æµ·è»è—",oldlace:"舊蕾絲色",olive:"橄欖色",olivedrab:"橄欖綠",orange:"橙色",orangered:"橙紅色",orchid:"蘭花色",palegoldenrod:"ç°é‡‘èŠè‰²",palegreen:"ç°ç¶ è‰²",paleturquoise:"ç°æ¾çŸ³ç¶ ",palevioletred:"ç°ç´«ç¾…蘭紅",papayawhip:"番木瓜色",peachpuff:"粉撲桃色",peru:"祕魯色",pink:"粉紅色",plum:"æŽç´«è‰²",powderblue:"粉è—色",purple:"紫色",red:"紅色",rosybrown:"玫瑰è¤",royalblue:"å“è—色",saddlebrown:"éžè¤è‰²",salmon:"鮭紅色",sandybrown:"æ²™è¤è‰²",seagreen:"海綠色",seashell:"æµ·è²è‰²",sienna:"黃土赭色",silver:"銀色",skyblue:"天è—色",slateblue:"岩è—色",slategray:"岩ç°è‰²",slategrey:"岩ç°è‰²",snow:"雪白色",springgreen:"春綠色",steelblue:"éµè—色",tan:"çš®é©è‰²",teal:"æ·±è—綠色",thistle:"薊色",tomato:"蕃茄紅",transparent:"逿˜Ž",turquoise:"æ¾çŸ³ç¶ ",violet:"紫羅蘭色",wheat:"å°éº¥è‰²",white:"白色",whitesmoke:"白煙色",yellow:"黃色",yellowgreen:"黃綠色"})); \ No newline at end of file diff --git a/lib/dojo/nls/zh/colors.js b/lib/dojo/nls/zh/colors.js new file mode 100644 index 0000000000..5792e8188d --- /dev/null +++ b/lib/dojo/nls/zh/colors.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/nls/zh/colors",({aliceblue:"爱丽ä¸è“",antiquewhite:"å¤è‘£ç™½",aqua:"浅绿色",aquamarine:"碧绿色",azure:"天è“色",beige:"米色",bisque:"桔黄色",black:"黑色",blanchedalmond:"白æè‰²",blue:"è“色",blueviolet:"è“紫色",brown:"棕色",burlywood:"实木色",cadetblue:"ç°è“色",chartreuse:"黄绿色",chocolate:"巧克力色",coral:"çŠç‘šè‰²",cornflowerblue:"æµ…è“色",cornsilk:"米绸色",crimson:"绯红色",cyan:"é’è“色",darkblue:"æ·±è“",darkcyan:"æ·±é’绿",darkgoldenrod:"深金黄",darkgray:"æ·±ç°è‰²",darkgreen:"深绿色",darkgrey:"æ·±ç°è‰²",darkkhaki:"æ·±å¡å…¶è‰²",darkmagenta:"深洋红色",darkolivegreen:"深橄榄绿",darkorange:"深橙色",darkorchid:"深紫色",darkred:"深红色",darksalmon:"深橙红",darkseagreen:"深海藻绿",darkslateblue:"æ·±é’è“",darkslategray:"æ·±é’ç°",darkslategrey:"æ·±é’ç°",darkturquoise:"深粉è“",darkviolet:"深紫色",deeppink:"深粉红色",deepskyblue:"深天è“色",dimgray:"æš—ç°è‰²",dimgrey:"æš—ç°è‰²",dodgerblue:"é—ªè“色",firebrick:"砖红",floralwhite:"花白色",forestgreen:"森林绿",fuchsia:"紫红色",gainsboro:"æ·¡ç°è‰²",ghostwhite:"è‹ç™½",gold:"金黄色",goldenrod:"金麒麟色",gray:"ç°è‰²",green:"绿色",greenyellow:"绿黄色",grey:"ç°è‰²",honeydew:"蜜æ±è‰²",hotpink:"深粉红",indianred:"å°åº¦çº¢",indigo:"é›é’",ivory:"象牙色",khaki:"å¡å…¶è‰²",lavender:"淡紫色",lavenderblush:"淡紫红",lawngreen:"è‰ç»¿è‰²",lemonchiffon:"柠檬绸色",lightblue:"æ·¡è“色",lightcoral:"æµ…çŠç‘šè‰²",lightcyan:"æµ…é’色",lightgoldenrodyellow:"浅金黄色",lightgray:"æµ…ç°è‰²",lightgreen:"浅绿色",lightgrey:"æµ…ç°è‰²",lightpink:"浅粉红色",lightsalmon:"淡橙色",lightseagreen:"浅海藻绿",lightskyblue:"浅天è“色",lightslategray:"æµ…é’ç°",lightslategrey:"æµ…é’ç°",lightsteelblue:"æµ…é’¢è“色",lightyellow:"浅黄色",lime:"淡黄绿色",limegreen:"橙绿色",linen:"亚麻色",magenta:"洋红色",maroon:"栗色",mediumaquamarine:"间绿色",mediumblue:"é—´è“色",mediumorchid:"间紫色",mediumpurple:"间紫色",mediumseagreen:"é—´æµ·è“色",mediumslateblue:"é—´æš—è“色",mediumspringgreen:"间春绿色",mediumturquoise:"间绿å®çŸ³è‰²",mediumvioletred:"间紫罗兰色",midnightblue:"æ·±è“色",mintcream:"è–„è·è‰²",mistyrose:"浅玫瑰色",moccasin:"鹿皮色",navajowhite:"纳瓦白",navy:"è—é’色",oldlace:"è€ç™½è‰²",olive:"橄榄绿",olivedrab:"è‰ç»¿è‰²",orange:"橙色",orangered:"橙红色",orchid:"紫色",palegoldenrod:"淡金黄色",palegreen:"淡绿色",paleturquoise:"è‹ç»¿è‰²",palevioletred:"è‹ç´«ç½—兰色",papayawhip:"木瓜色",peachpuff:"桃色",peru:"秘é²è‰²",pink:"粉红色",plum:"æ¨æŽè‰²",powderblue:"é“è“",purple:"紫色",red:"红色",rosybrown:"è¤çŽ«ç‘°çº¢",royalblue:"å“è“",saddlebrown:"é‡è¤è‰²",salmon:"橙红",sandybrown:"æ²™è¤è‰²",seagreen:"海绿色",seashell:"æµ·è´è‰²",sienna:"赭色",silver:"银白色",skyblue:"天è“色",slateblue:"石è“色",slategray:"ç°çŸ³è‰²",slategrey:"ç°çŸ³è‰²",snow:"雪白色",springgreen:"春绿色",steelblue:"é’¢è“色",tan:"棕è¤è‰²",teal:"水鸭色",thistle:"蓟色",tomato:"西红柿色",transparent:"逿˜Žçš„",turquoise:"绿å®çŸ³è‰²",violet:"紫色",wheat:"浅黄色",white:"白色",whitesmoke:"烟白色",yellow:"黄色",yellowgreen:"黄绿色"})); \ No newline at end of file diff --git a/lib/dojo/node.js b/lib/dojo/node.js new file mode 100644 index 0000000000..df9a2bcfca --- /dev/null +++ b/lib/dojo/node.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/node",["dojo/has"],function(_1){if(!0){throw new Error("node plugin failed to load because environment is not Node.js");}return {load:function(id,_2,_3){if(!_2.nodeRequire){throw new Error("Cannot find native require function");}_3(_2.nodeRequire(id));}};}); \ No newline at end of file diff --git a/lib/dojo/number.js b/lib/dojo/number.js new file mode 100644 index 0000000000..b01775097d --- /dev/null +++ b/lib/dojo/number.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/number",["./_base/lang","./i18n","./i18n!./cldr/nls/number","./string","./regexp"],function(_1,_2,_3,_4,_5){var _6={};_1.setObject("dojo.number",_6);_6.format=function(_7,_8){_8=_1.mixin({},_8||{});var _9=_2.normalizeLocale(_8.locale),_a=_2.getLocalization("dojo.cldr","number",_9);_8.customs=_a;var _b=_8.pattern||_a[(_8.type||"decimal")+"Format"];if(isNaN(_7)||Math.abs(_7)==Infinity){return null;}return _6._applyPattern(_7,_b,_8);};_6._numberPatternRE=/[#0,]*[#0](?:\.0*#*)?/;_6._applyPattern=function(_c,_d,_e){_e=_e||{};var _f=_e.customs.group,_10=_e.customs.decimal,_11=_d.split(";"),_12=_11[0];_d=_11[(_c<0)?1:0]||("-"+_12);if(_d.indexOf("%")!=-1){_c*=100;}else{if(_d.indexOf("‰")!=-1){_c*=1000;}else{if(_d.indexOf("¤")!=-1){_f=_e.customs.currencyGroup||_f;_10=_e.customs.currencyDecimal||_10;_d=_d.replace(/\u00a4{1,3}/,function(_13){var _14=["symbol","currency","displayName"][_13.length-1];return _e[_14]||_e.currency||"";});}else{if(_d.indexOf("E")!=-1){throw new Error("exponential notation not supported");}}}}var _15=_6._numberPatternRE;var _16=_12.match(_15);if(!_16){throw new Error("unable to find a number expression in pattern: "+_d);}if(_e.fractional===false){_e.places=0;}return _d.replace(_15,_6._formatAbsolute(_c,_16[0],{decimal:_10,group:_f,places:_e.places,round:_e.round}));};_6.round=function(_17,_18,_19){var _1a=10/(_19||10);return (_1a*+_17).toFixed(_18)/_1a;};if((0.9).toFixed()==0){var _1b=_6.round;_6.round=function(v,p,m){var d=Math.pow(10,-p||0),a=Math.abs(v);if(!v||a>=d){d=0;}else{a/=d;if(a<0.5||a>=0.95){d=0;}}return _1b(v,p,m)+(v>0?d:-d);};}_6._formatAbsolute=function(_1c,_1d,_1e){_1e=_1e||{};if(_1e.places===true){_1e.places=0;}if(_1e.places===Infinity){_1e.places=6;}var _1f=_1d.split("."),_20=typeof _1e.places=="string"&&_1e.places.indexOf(","),_21=_1e.places;if(_20){_21=_1e.places.substring(_20+1);}else{if(!(_21>=0)){_21=(_1f[1]||[]).length;}}if(!(_1e.round<0)){_1c=_6.round(_1c,_21,_1e.round);}var _22=String(Math.abs(_1c)).split("."),_23=_22[1]||"";if(_1f[1]||_1e.places){if(_20){_1e.places=_1e.places.substring(0,_20);}var pad=_1e.places!==undefined?_1e.places:(_1f[1]&&_1f[1].lastIndexOf("0")+1);if(pad>_23.length){_22[1]=_4.pad(_23,pad,"0",true);}if(_21<_23.length){_22[1]=_23.substr(0,_21);}}else{if(_22[1]){_22.pop();}}var _24=_1f[0].replace(",","");pad=_24.indexOf("0");if(pad!=-1){pad=_24.length-pad;if(pad>_22[0].length){_22[0]=_4.pad(_22[0],pad);}if(_24.indexOf("#")==-1){_22[0]=_22[0].substr(_22[0].length-pad);}}var _25=_1f[0].lastIndexOf(","),_26,_27;if(_25!=-1){_26=_1f[0].length-_25-1;var _28=_1f[0].substr(0,_25);_25=_28.lastIndexOf(",");if(_25!=-1){_27=_28.length-_25-1;}}var _29=[];for(var _2a=_22[0];_2a;){var off=_2a.length-_26;_29.push((off>0)?_2a.substr(off):_2a);_2a=(off>0)?_2a.slice(0,off):"";if(_27){_26=_27;delete _27;}}_22[0]=_29.reverse().join(_1e.group||",");return _22.join(_1e.decimal||".");};_6.regexp=function(_2b){return _6._parseInfo(_2b).regexp;};_6._parseInfo=function(_2c){_2c=_2c||{};var _2d=_2.normalizeLocale(_2c.locale),_2e=_2.getLocalization("dojo.cldr","number",_2d),_2f=_2c.pattern||_2e[(_2c.type||"decimal")+"Format"],_30=_2e.group,_31=_2e.decimal,_32=1;if(_2f.indexOf("%")!=-1){_32/=100;}else{if(_2f.indexOf("‰")!=-1){_32/=1000;}else{var _33=_2f.indexOf("¤")!=-1;if(_33){_30=_2e.currencyGroup||_30;_31=_2e.currencyDecimal||_31;}}}var _34=_2f.split(";");if(_34.length==1){_34.push("-"+_34[0]);}var re=_5.buildGroupRE(_34,function(_35){_35="(?:"+_5.escapeString(_35,".")+")";return _35.replace(_6._numberPatternRE,function(_36){var _37={signed:false,separator:_2c.strict?_30:[_30,""],fractional:_2c.fractional,decimal:_31,exponent:false},_38=_36.split("."),_39=_2c.places;if(_38.length==1&&_32!=1){_38[1]="###";}if(_38.length==1||_39===0){_37.fractional=false;}else{if(_39===undefined){_39=_2c.pattern?_38[1].lastIndexOf("0")+1:Infinity;}if(_39&&_2c.fractional==undefined){_37.fractional=true;}if(!_2c.places&&(_39<_38[1].length)){_39+=","+_38[1].length;}_37.places=_39;}var _3a=_38[0].split(",");if(_3a.length>1){_37.groupSize=_3a.pop().length;if(_3a.length>1){_37.groupSize2=_3a.pop().length;}}return "("+_6._realNumberRegexp(_37)+")";});},true);if(_33){re=re.replace(/([\s\xa0]*)(\u00a4{1,3})([\s\xa0]*)/g,function(_3b,_3c,_3d,_3e){var _3f=["symbol","currency","displayName"][_3d.length-1],_40=_5.escapeString(_2c[_3f]||_2c.currency||"");_3c=_3c?"[\\s\\xa0]":"";_3e=_3e?"[\\s\\xa0]":"";if(!_2c.strict){if(_3c){_3c+="*";}if(_3e){_3e+="*";}return "(?:"+_3c+_40+_3e+")?";}return _3c+_40+_3e;});}return {regexp:re.replace(/[\xa0 ]/g,"[\\s\\xa0]"),group:_30,decimal:_31,factor:_32};};_6.parse=function(_41,_42){var _43=_6._parseInfo(_42),_44=(new RegExp("^"+_43.regexp+"$")).exec(_41);if(!_44){return NaN;}var _45=_44[1];if(!_44[1]){if(!_44[2]){return NaN;}_45=_44[2];_43.factor*=-1;}_45=_45.replace(new RegExp("["+_43.group+"\\s\\xa0"+"]","g"),"").replace(_43.decimal,".");return _45*_43.factor;};_6._realNumberRegexp=function(_46){_46=_46||{};if(!("places" in _46)){_46.places=Infinity;}if(typeof _46.decimal!="string"){_46.decimal=".";}if(!("fractional" in _46)||/^0/.test(_46.places)){_46.fractional=[true,false];}if(!("exponent" in _46)){_46.exponent=[true,false];}if(!("eSigned" in _46)){_46.eSigned=[true,false];}var _47=_6._integerRegexp(_46),_48=_5.buildGroupRE(_46.fractional,function(q){var re="";if(q&&(_46.places!==0)){re="\\"+_46.decimal;if(_46.places==Infinity){re="(?:"+re+"\\d+)?";}else{re+="\\d{"+_46.places+"}";}}return re;},true);var _49=_5.buildGroupRE(_46.exponent,function(q){if(q){return "([eE]"+_6._integerRegexp({signed:_46.eSigned})+")";}return "";});var _4a=_47+_48;if(_48){_4a="(?:(?:"+_4a+")|(?:"+_48+"))";}return _4a+_49;};_6._integerRegexp=function(_4b){_4b=_4b||{};if(!("signed" in _4b)){_4b.signed=[true,false];}if(!("separator" in _4b)){_4b.separator="";}else{if(!("groupSize" in _4b)){_4b.groupSize=3;}}var _4c=_5.buildGroupRE(_4b.signed,function(q){return q?"[-+]":"";},true);var _4d=_5.buildGroupRE(_4b.separator,function(sep){if(!sep){return "(?:\\d+)";}sep=_5.escapeString(sep);if(sep==" "){sep="\\s";}else{if(sep==" "){sep="\\s\\xa0";}}var grp=_4b.groupSize,_4e=_4b.groupSize2;if(_4e){var _4f="(?:0|[1-9]\\d{0,"+(_4e-1)+"}(?:["+sep+"]\\d{"+_4e+"})*["+sep+"]\\d{"+grp+"})";return ((grp-_4e)>0)?"(?:"+_4f+"|(?:0|[1-9]\\d{0,"+(grp-1)+"}))":_4f;}return "(?:0|[1-9]\\d{0,"+(grp-1)+"}(?:["+sep+"]\\d{"+grp+"})*)";},true);return _4c+_4d;};return _6;}); \ No newline at end of file diff --git a/lib/dojo/on.js b/lib/dojo/on.js new file mode 100644 index 0000000000..a5ccc9c94a --- /dev/null +++ b/lib/dojo/on.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/on",["./has!dom-addeventlistener?:./aspect","./_base/kernel","./has"],function(_1,_2,_3){"use strict";if(1){var _4=window.ScriptEngineMajorVersion;_3.add("jscript",_4&&(_4()+ScriptEngineMinorVersion()/10));_3.add("event-orientationchange",_3("touch")&&!_3("android"));_3.add("event-stopimmediatepropagation",window.Event&&!!window.Event.prototype&&!!window.Event.prototype.stopImmediatePropagation);}var on=function(_5,_6,_7,_8){if(typeof _5.on=="function"&&typeof _6!="function"){return _5.on(_6,_7);}return on.parse(_5,_6,_7,_9,_8,this);};on.pausable=function(_a,_b,_c,_d){var _e;var _f=on(_a,_b,function(){if(!_e){return _c.apply(this,arguments);}},_d);_f.pause=function(){_e=true;};_f.resume=function(){_e=false;};return _f;};on.once=function(_10,_11,_12,_13){var _14=on(_10,_11,function(){_14.remove();return _12.apply(this,arguments);});return _14;};on.parse=function(_15,_16,_17,_18,_19,_1a){if(_16.call){return _16.call(_1a,_15,_17);}if(_16.indexOf(",")>-1){var _1b=_16.split(/\s*,\s*/);var _1c=[];var i=0;var _1d;while(_1d=_1b[i++]){_1c.push(_18(_15,_1d,_17,_19,_1a));}_1c.remove=function(){for(var i=0;i<_1c.length;i++){_1c[i].remove();}};return _1c;}return _18(_15,_16,_17,_19,_1a);};var _1e=/^touch/;function _9(_1f,_20,_21,_22,_23){var _24=_20.match(/(.*):(.*)/);if(_24){_20=_24[2];_24=_24[1];return on.selector(_24,_20).call(_23,_1f,_21);}if(_3("touch")){if(_1e.test(_20)){_21=_25(_21);}if(!_3("event-orientationchange")&&(_20=="orientationchange")){_20="resize";_1f=window;_21=_25(_21);}}if(_26){_21=_26(_21);}if(_1f.addEventListener){var _27=_20 in _28,_29=_27?_28[_20]:_20;_1f.addEventListener(_29,_21,_27);return {remove:function(){_1f.removeEventListener(_29,_21,_27);}};}_20="on"+_20;if(_2a&&_1f.attachEvent){return _2a(_1f,_20,_21);}throw new Error("Target must be an event emitter");};on.selector=function(_2b,_2c,_2d){return function(_2e,_2f){var _30=typeof _2b=="function"?{matches:_2b}:this,_31=_2c.bubble;function _32(_33){_30=_30&&_30.matches?_30:_2.query;while(!_30.matches(_33,_2b,_2e)){if(_33==_2e||_2d===false||!(_33=_33.parentNode)||_33.nodeType!=1){return;}}return _33;};if(_31){return on(_2e,_31(_32),_2f);}return on(_2e,_2c,function(_34){var _35=_32(_34.target);return _35&&_2f.call(_35,_34);});};};function _36(){this.cancelable=false;};function _37(){this.bubbles=false;};var _38=[].slice,_39=on.emit=function(_3a,_3b,_3c){var _3d=_38.call(arguments,2);var _3e="on"+_3b;if("parentNode" in _3a){var _3f=_3d[0]={};for(var i in _3c){_3f[i]=_3c[i];}_3f.preventDefault=_36;_3f.stopPropagation=_37;_3f.target=_3a;_3f.type=_3b;_3c=_3f;}do{_3a[_3e]&&_3a[_3e].apply(_3a,_3d);}while(_3c&&_3c.bubbles&&(_3a=_3a.parentNode));return _3c&&_3c.cancelable&&_3c;};var _28={};if(!_3("event-stopimmediatepropagation")){var _40=function(){this.immediatelyStopped=true;this.modified=true;};var _26=function(_41){return function(_42){if(!_42.immediatelyStopped){_42.stopImmediatePropagation=_40;return _41.apply(this,arguments);}};};}if(_3("dom-addeventlistener")){_28={focusin:"focus",focusout:"blur"};on.emit=function(_43,_44,_45){if(_43.dispatchEvent&&document.createEvent){var _46=_43.ownerDocument.createEvent("HTMLEvents");_46.initEvent(_44,!!_45.bubbles,!!_45.cancelable);for(var i in _45){var _47=_45[i];if(!(i in _46)){_46[i]=_45[i];}}return _43.dispatchEvent(_46)&&_46;}return _39.apply(on,arguments);};}else{on._fixEvent=function(evt,_48){if(!evt){var w=_48&&(_48.ownerDocument||_48.document||_48).parentWindow||window;evt=w.event;}if(!evt){return evt;}if(_49&&evt.type==_49.type){evt=_49;}if(!evt.target){evt.target=evt.srcElement;evt.currentTarget=(_48||evt.srcElement);if(evt.type=="mouseover"){evt.relatedTarget=evt.fromElement;}if(evt.type=="mouseout"){evt.relatedTarget=evt.toElement;}if(!evt.stopPropagation){evt.stopPropagation=_4a;evt.preventDefault=_4b;}switch(evt.type){case "keypress":var c=("charCode" in evt?evt.charCode:evt.keyCode);if(c==10){c=0;evt.keyCode=13;}else{if(c==13||c==27){c=0;}else{if(c==3){c=99;}}}evt.charCode=c;_4c(evt);break;}}return evt;};var _49,_4d=function(_4e){this.handle=_4e;};_4d.prototype.remove=function(){delete _dojoIEListeners_[this.handle];};var _4f=function(_50){return function(evt){evt=on._fixEvent(evt,this);var _51=_50.call(this,evt);if(evt.modified){if(!_49){setTimeout(function(){_49=null;});}_49=evt;}return _51;};};var _2a=function(_52,_53,_54){_54=_4f(_54);if(((_52.ownerDocument?_52.ownerDocument.parentWindow:_52.parentWindow||_52.window||window)!=top||_3("jscript")<5.8)&&!_3("config-_allow_leaks")){if(typeof _dojoIEListeners_=="undefined"){_dojoIEListeners_=[];}var _55=_52[_53];if(!_55||!_55.listeners){var _56=_55;_55=Function("event","var callee = arguments.callee; for(var i = 0; i= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/parser",["require","./_base/kernel","./_base/lang","./_base/array","./_base/config","./_base/html","./_base/window","./_base/url","./_base/json","./aspect","./date/stamp","./Deferred","./has","./query","./on","./ready"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,_c,_d,_e,_f,_10){new Date("X");var _11=0;_a.after(_3,"extend",function(){_11++;},true);function _12(_13){var map=_13._nameCaseMap,_14=_13.prototype;if(!map||map._extendCnt<_11){map=_13._nameCaseMap={};for(var _15 in _14){if(_15.charAt(0)==="_"){continue;}map[_15.toLowerCase()]=_15;}map._extendCnt=_11;}return map;};var _16={};function _17(_18){var ts=_18.join();if(!_16[ts]){var _19=[];for(var i=0,l=_18.length;i.*$/,"");_3e=_4.map(_40.split(/\s+/),function(_41){var _42=_41.toLowerCase();return {name:_41,value:(_37.nodeName=="LI"&&_41=="value")||_42=="enctype"?_37.getAttribute(_42):_37.getAttributeNode(_42).value};});}}var _43=_39.scope||_2._scopeName,_44="data-"+_43+"-",_45={};if(_43!=="dojo"){_45[_44+"props"]="data-dojo-props";_45[_44+"type"]="data-dojo-type";_45[_44+"mixins"]="data-dojo-mixins";_45[_43+"type"]="dojoType";_45[_44+"id"]="data-dojo-id";}var i=0,_46,_47=[],_48,_49;while(_46=_3e[i++]){var _4a=_46.name,_4b=_4a.toLowerCase(),_4c=_46.value;switch(_45[_4b]||_4b){case "data-dojo-type":case "dojotype":case "data-dojo-mixins":break;case "data-dojo-props":_49=_4c;break;case "data-dojo-id":case "jsid":_48=_4c;break;case "data-dojo-attach-point":case "dojoattachpoint":_3d.dojoAttachPoint=_4c;break;case "data-dojo-attach-event":case "dojoattachevent":_3d.dojoAttachEvent=_4c;break;case "class":_3d["class"]=_37.className;break;case "style":_3d["style"]=_37.style&&_37.style.cssText;break;default:if(!(_4a in _3c)){var map=_12(_36);_4a=map[_4b]||_4a;}if(_4a in _3c){switch(typeof _3c[_4a]){case "string":_3d[_4a]=_4c;break;case "number":_3d[_4a]=_4c.length?Number(_4c):NaN;break;case "boolean":_3d[_4a]=_4c.toLowerCase()!="false";break;case "function":if(_4c===""||_4c.search(/[^\w\.]+/i)!=-1){_3d[_4a]=new Function(_4c);}else{_3d[_4a]=_3.getObject(_4c,false)||new Function(_4c);}_47.push(_4a);break;default:var _4d=_3c[_4a];_3d[_4a]=(_4d&&"length" in _4d)?(_4c?_4c.split(/\s*,\s*/):[]):(_4d instanceof Date)?(_4c==""?new Date(""):_4c=="now"?new Date():_b.fromISOString(_4c)):(_4d instanceof _8)?(_2.baseUrl+_4c):_9.fromJson(_4c);}}else{_3d[_4a]=_4c;}}}for(var j=0;j<_47.length;j++){var _4e=_47[j].toLowerCase();_37.removeAttribute(_4e);_37[_4e]=null;}if(_49){try{_49=_9.fromJson.call(_39.propsThis,"{"+_49+"}");_3.mixin(_3d,_49);}catch(e){throw new Error(e.toString()+" in data-dojo-props='"+_49+"'");}}_3.mixin(_3d,_38);if(!_3a){_3a=(_36&&(_36._noScript||_3c._noScript)?[]:_e("> script[type^='dojo/']",_37));}var _4f=[],_50=[],_51=[],ons=[];if(_3a){for(i=0;i<_3a.length;i++){var _52=_3a[i];_37.removeChild(_52);var _53=(_52.getAttribute(_44+"event")||_52.getAttribute("event")),_54=_52.getAttribute(_44+"prop"),_55=_52.getAttribute(_44+"method"),_56=_52.getAttribute(_44+"advice"),_57=_52.getAttribute("type"),nf=this._functionFromScript(_52,_44);if(_53){if(_57=="dojo/connect"){_4f.push({method:_53,func:nf});}else{if(_57=="dojo/on"){ons.push({event:_53,func:nf});}else{_3d[_53]=nf;}}}else{if(_57=="dojo/aspect"){_4f.push({method:_55,advice:_56,func:nf});}else{if(_57=="dojo/watch"){_51.push({prop:_54,func:nf});}else{_50.push(nf);}}}}}var _58=_36.markupFactory||_3c.markupFactory;var _59=_58?_58(_3d,_37,_36):new _36(_3d,_37);if(_48){_3.setObject(_48,_59);}for(i=0;i<_4f.length;i++){_a[_4f[i].advice||"after"](_59,_4f[i].method,_3.hitch(_59,_4f[i].func),true);}for(i=0;i<_50.length;i++){_50[i].call(_59);}for(i=0;i<_51.length;i++){_59.watch(_51[i].prop,_51[i].func);}for(i=0;i= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/promise/Promise",["../_base/lang"],function(_1){"use strict";function _2(){throw new TypeError("abstract");};return _1.extend(function Promise(){},{then:function(_3,_4,_5){_2();},cancel:function(_6,_7){_2();},isResolved:function(){_2();},isRejected:function(){_2();},isFulfilled:function(){_2();},isCanceled:function(){_2();},always:function(_8){return this.then(_8,_8);},otherwise:function(_9){return this.then(null,_9);},trace:function(){return this;},traceRejected:function(){return this;},toString:function(){return "[object Promise]";}});}); \ No newline at end of file diff --git a/lib/dojo/promise/all.js b/lib/dojo/promise/all.js new file mode 100644 index 0000000000..928c63bec9 --- /dev/null +++ b/lib/dojo/promise/all.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/promise/all",["../_base/array","../Deferred","../when"],function(_1,_2,_3){"use strict";var _4=_1.some;return function all(_5){var _6,_1;if(_5 instanceof Array){_1=_5;}else{if(_5&&typeof _5==="object"){_6=_5;}}var _7;var _8=[];if(_6){_1=[];for(var _9 in _6){if(Object.hasOwnProperty.call(_6,_9)){_8.push(_9);_1.push(_6[_9]);}}_7={};}else{if(_1){_7=[];}}if(!_1||!_1.length){return new _2().resolve(_7);}var _a=new _2();_a.promise.always(function(){_7=_8=null;});var _b=_1.length;_4(_1,function(_c,_d){if(!_6){_8.push(_d);}_3(_c,function(_e){if(!_a.isFulfilled()){_7[_8[_d]]=_e;if(--_b===0){_a.resolve(_7);}}},_a.reject);return _a.isFulfilled();});return _a.promise;};}); \ No newline at end of file diff --git a/lib/dojo/promise/first.js b/lib/dojo/promise/first.js new file mode 100644 index 0000000000..9a06ac2fcc --- /dev/null +++ b/lib/dojo/promise/first.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/promise/first",["../_base/array","../Deferred","../when"],function(_1,_2,_3){"use strict";var _4=_1.forEach;return function first(_5){var _6;if(_5 instanceof Array){_6=_5;}else{if(_5&&typeof _5==="object"){_6=[];for(var _7 in _5){if(Object.hasOwnProperty.call(_5,_7)){_6.push(_5[_7]);}}}}if(!_6||!_6.length){return new _2().resolve();}var _8=new _2();_4(_6,function(_9){_3(_9,_8.resolve,_8.reject);});return _8.promise;};}); \ No newline at end of file diff --git a/lib/dojo/promise/instrumentation.js b/lib/dojo/promise/instrumentation.js new file mode 100644 index 0000000000..086b49a25c --- /dev/null +++ b/lib/dojo/promise/instrumentation.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/promise/instrumentation",["./tracer","../has","../_base/lang","../_base/array"],function(_1,_2,_3,_4){function _5(_6,_7,_8){var _9="";if(_6&&_6.stack){_9+=_6.stack;}if(_7&&_7.stack){_9+="\n ----------------------------------------\n rejected"+_7.stack.split("\n").slice(1).join("\n").replace(/^\s+/," ");}if(_8&&_8.stack){_9+="\n ----------------------------------------\n"+_8.stack;}console.error(_6,_9);};function _a(_b,_c,_d,_e){if(!_c){_5(_b,_d,_e);}};var _f=[];var _10=false;var _11=1000;function _12(_13,_14,_15,_16){if(_14){_4.some(_f,function(obj,ix){if(obj.error===_13){_f.splice(ix,1);return true;}});}else{if(!_4.some(_f,function(obj){return obj.error===_13;})){_f.push({error:_13,rejection:_15,deferred:_16,timestamp:new Date().getTime()});}}if(!_10){_10=setTimeout(_17,_11);}};function _17(){var now=new Date().getTime();var _18=now-_11;_f=_4.filter(_f,function(obj){if(obj.timestamp<_18){_5(obj.error,obj.rejection,obj.deferred);return false;}return true;});if(_f.length){_10=setTimeout(_17,_f[0].timestamp+_11-now);}else{_10=false;}};return function(_19){var _1a=_2("config-useDeferredInstrumentation");if(_1a){_1.on("resolved",_3.hitch(console,"log","resolved"));_1.on("rejected",_3.hitch(console,"log","rejected"));_1.on("progress",_3.hitch(console,"log","progress"));var _1b=[];if(typeof _1a==="string"){_1b=_1a.split(",");_1a=_1b.shift();}if(_1a==="report-rejections"){_19.instrumentRejected=_a;}else{if(_1a==="report-unhandled-rejections"||_1a===true||_1a===1){_19.instrumentRejected=_12;_11=parseInt(_1b[0],10)||_11;}else{throw new Error("Unsupported instrumentation usage <"+_1a+">");}}}};}); \ No newline at end of file diff --git a/lib/dojo/promise/tracer.js b/lib/dojo/promise/tracer.js new file mode 100644 index 0000000000..906b9452d0 --- /dev/null +++ b/lib/dojo/promise/tracer.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/promise/tracer",["../_base/lang","./Promise","../Evented"],function(_1,_2,_3){"use strict";var _4=new _3;var _5=_4.emit;_4.emit=null;function _6(_7){setTimeout(function(){_5.apply(_4,_7);},0);};_2.prototype.trace=function(){var _8=_1._toArray(arguments);this.then(function(_9){_6(["resolved",_9].concat(_8));},function(_a){_6(["rejected",_a].concat(_8));},function(_b){_6(["progress",_b].concat(_8));});return this;};_2.prototype.traceRejected=function(){var _c=_1._toArray(arguments);this.otherwise(function(_d){_6(["rejected",_d].concat(_c));});return this;};return _4;}); \ No newline at end of file diff --git a/lib/dojo/query.js b/lib/dojo/query.js new file mode 100644 index 0000000000..8af9399296 --- /dev/null +++ b/lib/dojo/query.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/query",["./_base/kernel","./has","./dom","./on","./_base/array","./_base/lang","./selector/_loader","./selector/_loader!default"],function(_1,_2,_3,on,_4,_5,_6,_7){"use strict";_2.add("array-extensible",function(){return _5.delegate([],{length:1}).length==1&&!_2("bug-for-in-skips-shadowed");});var ap=Array.prototype,_8=ap.slice,_9=ap.concat,_a=_4.forEach;var _b=function(a,_c,_d){var _e=new (_d||this._NodeListCtor||nl)(a);return _c?_e._stash(_c):_e;};var _f=function(f,a,o){a=[0].concat(_8.call(a,0));o=o||_1.global;return function(_10){a[0]=_10;return f.apply(o,a);};};var _11=function(f,o){return function(){this.forEach(_f(f,arguments,o));return this;};};var _12=function(f,o){return function(){return this.map(_f(f,arguments,o));};};var _13=function(f,o){return function(){return this.filter(_f(f,arguments,o));};};var _14=function(f,g,o){return function(){var a=arguments,_15=_f(f,a,o);if(g.call(o||_1.global,a)){return this.map(_15);}this.forEach(_15);return this;};};var _16=function(_17){var _18=this instanceof nl&&_2("array-extensible");if(typeof _17=="number"){_17=Array(_17);}var _19=(_17&&"length" in _17)?_17:arguments;if(_18||!_19.sort){var _1a=_18?this:[],l=_1a.length=_19.length;for(var i=0;i0;};_31.filter=_2f.filter||function(_38,_39,_3a){return _31(_39,_3a).filter(function(_3b){return _4.indexOf(_38,_3b)>-1;});};if(typeof _2f!="function"){var _3c=_2f.search;_2f=function(_3d,_3e){return _3c(_3e||document,_3d);};}return _31;};var _2a=_2e(_7,_16);_1.query=_2e(_7,function(_3f){return _16(_3f);});_2a.load=function(id,_40,_41){_6.load(id,_40,function(_42){_41(_2e(_42,_16));});};_1._filterQueryResult=_2a._filterResult=function(_43,_44,_45){return new _16(_2a.filter(_43,_44,_45));};_1.NodeList=_2a.NodeList=_16;return _2a;}); \ No newline at end of file diff --git a/lib/dojo/ready.js b/lib/dojo/ready.js new file mode 100644 index 0000000000..e627d9f766 --- /dev/null +++ b/lib/dojo/ready.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/ready",["./_base/kernel","./has","require","./domReady","./_base/lang"],function(_1,_2,_3,_4,_5){var _6=0,_7,_8=[],_9=0,_a=function(){_6=1;_1._postLoad=_1.config.afterOnLoad=true;if(_8.length){_7(_b);}},_b=function(){if(_6&&!_9&&_8.length){_9=1;var f=_8.shift();try{f();}finally{_9=0;}_9=0;if(_8.length){_7(_b);}}};_3.on("idle",_b);_7=function(){if(_3.idle()){_b();}};var _c=_1.ready=_1.addOnLoad=function(_d,_e,_f){var _10=_5._toArray(arguments);if(typeof _d!="number"){_f=_e;_e=_d;_d=1000;}else{_10.shift();}_f=_f?_5.hitch.apply(_1,_10):function(){_e();};_f.priority=_d;for(var i=0;i<_8.length&&_d>=_8[i].priority;i++){}_8.splice(i,0,_f);_7();};1||_2.add("dojo-config-addOnLoad",1);if(1){var dca=_1.config.addOnLoad;if(dca){_c[(_5.isArray(dca)?"apply":"call")](_1,dca);}}if(1&&_1.config.parseOnLoad&&!_1.isAsync){_c(99,function(){if(!_1.parser){_1.deprecated("Add explicit require(['dojo/parser']);","","2.0");_3(["dojo/parser"]);}});}if(1){_4(_a);}else{_a();}return _c;}); \ No newline at end of file diff --git a/lib/dojo/regexp.js b/lib/dojo/regexp.js new file mode 100644 index 0000000000..e46f70fec4 --- /dev/null +++ b/lib/dojo/regexp.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/regexp",["./_base/kernel","./_base/lang"],function(_1,_2){var _3={};_2.setObject("dojo.regexp",_3);_3.escapeString=function(_4,_5){return _4.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,function(ch){if(_5&&_5.indexOf(ch)!=-1){return ch;}return "\\"+ch;});};_3.buildGroupRE=function(_6,re,_7){if(!(_6 instanceof Array)){return re(_6);}var b=[];for(var i=0;i<_6.length;i++){b.push(re(_6[i]));}return _3.group(b.join("|"),_7);};_3.group=function(_8,_9){return "("+(_9?"?:":"")+_8+")";};return _3;}); \ No newline at end of file diff --git a/lib/dojo/request.js b/lib/dojo/request.js new file mode 100644 index 0000000000..d6b3be0fc0 --- /dev/null +++ b/lib/dojo/request.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/request",["./request/default!"],function(_1){return _1;}); \ No newline at end of file diff --git a/lib/dojo/request/default.js b/lib/dojo/request/default.js new file mode 100644 index 0000000000..ee379608ad --- /dev/null +++ b/lib/dojo/request/default.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/request/default",["exports","require","../has"],function(_1,_2,_3){var _4=_3("config-requestProvider"),_5;if(1){_5="./xhr";}else{if(0){_5="./node";}}if(!_4){_4=_5;}_1.getPlatformDefaultId=function(){return _5;};_1.load=function(id,_6,_7,_8){_2([id=="platform"?_5:_4],function(_9){_7(_9);});};}); \ No newline at end of file diff --git a/lib/dojo/request/handlers.js b/lib/dojo/request/handlers.js new file mode 100644 index 0000000000..6718c461bd --- /dev/null +++ b/lib/dojo/request/handlers.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/request/handlers",["../json","../_base/kernel","../_base/array","../has"],function(_1,_2,_3,_4){_4.add("activex",typeof ActiveXObject!=="undefined");var _5;if(_4("activex")){var dp=["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML.DOMDocument"];_5=function(_6){var _7=_6.data;if(!_7||!_7.documentElement){var _8=_6.text;_3.some(dp,function(p){try{var _9=new ActiveXObject(p);_9.async=false;_9.loadXML(_8);_7=_9;}catch(e){return false;}return true;});}return _7;};}var _a={"javascript":function(_b){return _2.eval(_b.text||"");},"json":function(_c){return _1.parse(_c.text||null);},"xml":_5};function _d(_e){var _f=_a[_e.options.handleAs];_e.data=_f?_f(_e):(_e.data||_e.text);return _e;};_d.register=function(_10,_11){_a[_10]=_11;};return _d;}); \ No newline at end of file diff --git a/lib/dojo/request/iframe.js b/lib/dojo/request/iframe.js new file mode 100644 index 0000000000..875b311c49 --- /dev/null +++ b/lib/dojo/request/iframe.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + +//>>built +define("dojo/request/iframe",["module","require","./watch","./util","./handlers","../_base/lang","../io-query","../query","../has","../dom","../dom-construct","../_base/window"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,_c){var _d=_1.id.replace(/[\/\.\-]/g,"_"),_e=_d+"_onload";if(!_c.global[_e]){_c.global[_e]=function(){var _f=_10._currentDfd;if(!_f){_10._fireNextRequest();return;}var _11=_f.response,_12=_11.options,_13=_a.byId(_12.form)||_f._tmpForm;if(_13){var _14=_f._contentToClean;for(var i=0;i<_14.length;i++){var key=_14[i];for(var j=0;j<_13.childNodes.length;j++){var _15=_13.childNodes[j];if(_15.name===key){_b.destroy(_15);break;}}}_f._originalAction&&_13.setAttribute("action",_f._originalAction);if(_f._originalMethod){_13.setAttribute("method",_f._originalMethod);_13.method=_f._originalMethod;}if(_f._originalTarget){_13.setAttribute("target",_f._originalTarget);_13.target=_f._originalTarget;}}if(_f._tmpForm){_b.destroy(_f._tmpForm);delete _f._tmpForm;}_f._finished=true;};}function _16(_17,_18,uri){if(_c.global[_17]){return _c.global[_17];}if(_c.global.frames[_17]){return _c.global.frames[_17];}if(!uri){if(_9("config-useXDomain")&&!_9("config-dojoBlankHtmlUrl")){console.warn("dojo/request/iframe: When using cross-domain Dojo builds,"+" please save dojo/resources/blank.html to your domain and set dojoConfig.dojoBlankHtmlUrl"+" to the path on your domain to blank.html");}uri=(_9("config-dojoBlankHtmlUrl")||_2.toUrl("dojo/resources/blank.html"));}var _19=_b.place("'); @@ -104,7 +104,7 @@ Autocompleter.Base = Class.create({ } if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50); }, - + fixIEOverlapping: function() { Position.clone(this.update, this.iefix, {setTop:(!this.update.style.height)}); this.iefix.style.zIndex = 1; @@ -152,15 +152,15 @@ Autocompleter.Base = Class.create({ Event.stop(event); return; } - else - if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN || + else + if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN || (Prototype.Browser.WebKit > 0 && event.keyCode == 0)) return; this.changed = true; this.hasFocus = true; if(this.observer) clearTimeout(this.observer); - this.observer = + this.observer = setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000); }, @@ -172,35 +172,35 @@ Autocompleter.Base = Class.create({ onHover: function(event) { var element = Event.findElement(event, 'LI'); - if(this.index != element.autocompleteIndex) + if(this.index != element.autocompleteIndex) { this.index = element.autocompleteIndex; this.render(); } Event.stop(event); }, - + onClick: function(event) { var element = Event.findElement(event, 'LI'); this.index = element.autocompleteIndex; this.selectEntry(); this.hide(); }, - + onBlur: function(event) { // needed to make click events working setTimeout(this.hide.bind(this), 250); this.hasFocus = false; - this.active = false; - }, - + this.active = false; + }, + render: function() { if(this.entryCount > 0) { for (var i = 0; i < this.entryCount; i++) - this.index==i ? - Element.addClassName(this.getEntry(i),"selected") : + this.index==i ? + Element.addClassName(this.getEntry(i),"selected") : Element.removeClassName(this.getEntry(i),"selected"); - if(this.hasFocus) { + if(this.hasFocus) { this.show(); this.active = true; } @@ -209,27 +209,27 @@ Autocompleter.Base = Class.create({ this.hide(); } }, - + markPrevious: function() { - if(this.index > 0) this.index-- + if(this.index > 0) this.index--; else this.index = this.entryCount-1; this.getEntry(this.index).scrollIntoView(true); }, - + markNext: function() { - if(this.index < this.entryCount-1) this.index++ + if(this.index < this.entryCount-1) this.index++; else this.index = 0; this.getEntry(this.index).scrollIntoView(false); }, - + getEntry: function(index) { return this.update.firstChild.childNodes[index]; }, - + getCurrentEntry: function() { return this.getEntry(this.index); }, - + selectEntry: function() { this.active = false; this.updateElement(this.getCurrentEntry()); @@ -246,7 +246,7 @@ Autocompleter.Base = Class.create({ if(nodes.length>0) value = Element.collectTextNodes(nodes[0], this.options.select); } else value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal'); - + var bounds = this.getTokenBounds(); if (bounds[0] != -1) { var newValue = this.element.value.substr(0, bounds[0]); @@ -259,7 +259,7 @@ Autocompleter.Base = Class.create({ } this.oldElementValue = this.element.value; this.element.focus(); - + if (this.options.afterUpdateElement) this.options.afterUpdateElement(this.element, selectedElement); }, @@ -271,20 +271,20 @@ Autocompleter.Base = Class.create({ Element.cleanWhitespace(this.update.down()); if(this.update.firstChild && this.update.down().childNodes) { - this.entryCount = + this.entryCount = this.update.down().childNodes.length; for (var i = 0; i < this.entryCount; i++) { var entry = this.getEntry(i); entry.autocompleteIndex = i; this.addObservers(entry); } - } else { + } else { this.entryCount = 0; } this.stopIndicator(); this.index = 0; - + if(this.entryCount==1 && this.options.autoSelect) { this.selectEntry(); this.hide(); @@ -300,7 +300,7 @@ Autocompleter.Base = Class.create({ }, onObserverEvent: function() { - this.changed = false; + this.changed = false; this.tokenBounds = null; if(this.getToken().length>=this.options.minChars) { this.getUpdatedChoices(); @@ -353,16 +353,16 @@ Ajax.Autocompleter = Class.create(Autocompleter.Base, { getUpdatedChoices: function() { this.startIndicator(); - - var entry = encodeURIComponent(this.options.paramName) + '=' + + + var entry = encodeURIComponent(this.options.paramName) + '=' + encodeURIComponent(this.getToken()); this.options.parameters = this.options.callback ? this.options.callback(this.element, entry) : entry; - if(this.options.defaultParams) + if(this.options.defaultParams) this.options.parameters += '&' + this.options.defaultParams; - + new Ajax.Request(this.url, this.options); }, @@ -384,7 +384,7 @@ Ajax.Autocompleter = Class.create(Autocompleter.Base, { // - choices - How many autocompletion choices to offer // // - partialSearch - If false, the autocompleter will match entered -// text only at the beginning of strings in the +// text only at the beginning of strings in the // autocomplete array. Defaults to true, which will // match text at the beginning of any *word* in the // strings in the autocomplete array. If you want to @@ -401,7 +401,7 @@ Ajax.Autocompleter = Class.create(Autocompleter.Base, { // - ignoreCase - Whether to ignore case when autocompleting. // Defaults to true. // -// It's possible to pass in a custom function as the 'selector' +// It's possible to pass in a custom function as the 'selector' // option, if you prefer to write your own autocompletion logic. // In that case, the other options above will not apply unless // you support them. @@ -429,20 +429,20 @@ Autocompleter.Local = Class.create(Autocompleter.Base, { var entry = instance.getToken(); var count = 0; - for (var i = 0; i < instance.options.array.length && - ret.length < instance.options.choices ; i++) { + for (var i = 0; i < instance.options.array.length && + ret.length < instance.options.choices ; i++) { var elem = instance.options.array[i]; - var foundPos = instance.options.ignoreCase ? - elem.toLowerCase().indexOf(entry.toLowerCase()) : + var foundPos = instance.options.ignoreCase ? + elem.toLowerCase().indexOf(entry.toLowerCase()) : elem.indexOf(entry); while (foundPos != -1) { - if (foundPos == 0 && elem.length != entry.length) { - ret.push("
  • " + elem.substr(0, entry.length) + "" + + if (foundPos == 0 && elem.length != entry.length) { + ret.push("
  • " + elem.substr(0, entry.length) + "" + elem.substr(entry.length) + "
  • "); break; - } else if (entry.length >= instance.options.partialChars && + } else if (entry.length >= instance.options.partialChars && instance.options.partialSearch && foundPos != -1) { if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) { partial.push("
  • " + elem.substr(0, foundPos) + "" + @@ -452,14 +452,14 @@ Autocompleter.Local = Class.create(Autocompleter.Base, { } } - foundPos = instance.options.ignoreCase ? - elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) : + foundPos = instance.options.ignoreCase ? + elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) : elem.indexOf(entry, foundPos + 1); } } if (partial.length) - ret = ret.concat(partial.slice(0, instance.options.choices - ret.length)) + ret = ret.concat(partial.slice(0, instance.options.choices - ret.length)); return "
      " + ret.join('') + "
    "; } }, options || { }); @@ -476,7 +476,7 @@ Field.scrollFreeActivate = function(field) { setTimeout(function() { Field.activate(field); }, 1); -} +}; Ajax.InPlaceEditor = Class.create({ initialize: function(element, url, options) { @@ -606,7 +606,7 @@ Ajax.InPlaceEditor = Class.create({ this.triggerCallback('onEnterHover'); }, getText: function() { - return this.element.innerHTML; + return this.element.innerHTML.unescapeHTML(); }, handleAJAXFailure: function(transport) { this.triggerCallback('onFailure', transport); @@ -782,7 +782,7 @@ Ajax.InPlaceCollectionEditor = Class.create(Ajax.InPlaceEditor, { onSuccess: function(transport) { var js = transport.responseText.strip(); if (!/^\[.*\]$/.test(js)) // TODO: improve sanity check - throw 'Server returned an invalid collection representation.'; + throw('Server returned an invalid collection representation.'); this._collection = eval(js); this.checkForExternalText(); }.bind(this), @@ -939,7 +939,7 @@ Ajax.InPlaceCollectionEditor.DefaultOptions = { loadingCollectionText: 'Loading options...' }; -// Delayed observer, like Form.Element.Observer, +// Delayed observer, like Form.Element.Observer, // but waits for delay after last key input // Ideal for live-search fields @@ -949,7 +949,7 @@ Form.Element.DelayedObserver = Class.create({ this.element = $(element); this.callback = callback; this.timer = null; - this.lastValue = $F(this.element); + this.lastValue = $F(this.element); Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this)); }, delayedListener: function(event) { @@ -962,4 +962,4 @@ Form.Element.DelayedObserver = Class.create({ this.timer = null; this.callback(this.element, $F(this.element)); } -}); +}); \ No newline at end of file diff --git a/lib/scriptaculous/dragdrop.js b/lib/scriptaculous/dragdrop.js deleted file mode 100644 index bf429c2616..0000000000 --- a/lib/scriptaculous/dragdrop.js +++ /dev/null @@ -1,974 +0,0 @@ -// script.aculo.us dragdrop.js v1.8.1, Thu Jan 03 22:07:12 -0500 2008 - -// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) -// (c) 2005-2007 Sammi Williams (http://www.oriontransfer.co.nz, sammi@oriontransfer.co.nz) -// -// script.aculo.us is freely distributable under the terms of an MIT-style license. -// For details, see the script.aculo.us web site: http://script.aculo.us/ - -if(Object.isUndefined(Effect)) - throw("dragdrop.js requires including script.aculo.us' effects.js library"); - -var Droppables = { - drops: [], - - remove: function(element) { - this.drops = this.drops.reject(function(d) { return d.element==$(element) }); - }, - - add: function(element) { - element = $(element); - var options = Object.extend({ - greedy: true, - hoverclass: null, - tree: false - }, arguments[1] || { }); - - // cache containers - if(options.containment) { - options._containers = []; - var containment = options.containment; - if(Object.isArray(containment)) { - containment.each( function(c) { options._containers.push($(c)) }); - } else { - options._containers.push($(containment)); - } - } - - if(options.accept) options.accept = [options.accept].flatten(); - - Element.makePositioned(element); // fix IE - options.element = element; - - this.drops.push(options); - }, - - findDeepestChild: function(drops) { - deepest = drops[0]; - - for (i = 1; i < drops.length; ++i) - if (Element.isParent(drops[i].element, deepest.element)) - deepest = drops[i]; - - return deepest; - }, - - isContained: function(element, drop) { - var containmentNode; - if(drop.tree) { - containmentNode = element.treeNode; - } else { - containmentNode = element.parentNode; - } - return drop._containers.detect(function(c) { return containmentNode == c }); - }, - - isAffected: function(point, element, drop) { - return ( - (drop.element!=element) && - ((!drop._containers) || - this.isContained(element, drop)) && - ((!drop.accept) || - (Element.classNames(element).detect( - function(v) { return drop.accept.include(v) } ) )) && - Position.within(drop.element, point[0], point[1]) ); - }, - - deactivate: function(drop) { - if(drop.hoverclass) - Element.removeClassName(drop.element, drop.hoverclass); - this.last_active = null; - }, - - activate: function(drop) { - if(drop.hoverclass) - Element.addClassName(drop.element, drop.hoverclass); - this.last_active = drop; - }, - - show: function(point, element) { - if(!this.drops.length) return; - var drop, affected = []; - - this.drops.each( function(drop) { - if(Droppables.isAffected(point, element, drop)) - affected.push(drop); - }); - - if(affected.length>0) - drop = Droppables.findDeepestChild(affected); - - if(this.last_active && this.last_active != drop) this.deactivate(this.last_active); - if (drop) { - Position.within(drop.element, point[0], point[1]); - if(drop.onHover) - drop.onHover(element, drop.element, Position.overlap(drop.overlap, drop.element)); - - if (drop != this.last_active) Droppables.activate(drop); - } - }, - - fire: function(event, element) { - if(!this.last_active) return; - Position.prepare(); - - if (this.isAffected([Event.pointerX(event), Event.pointerY(event)], element, this.last_active)) - if (this.last_active.onDrop) { - this.last_active.onDrop(element, this.last_active.element, event); - return true; - } - }, - - reset: function() { - if(this.last_active) - this.deactivate(this.last_active); - } -} - -var Draggables = { - drags: [], - observers: [], - - register: function(draggable) { - if(this.drags.length == 0) { - this.eventMouseUp = this.endDrag.bindAsEventListener(this); - this.eventMouseMove = this.updateDrag.bindAsEventListener(this); - this.eventKeypress = this.keyPress.bindAsEventListener(this); - - Event.observe(document, "mouseup", this.eventMouseUp); - Event.observe(document, "mousemove", this.eventMouseMove); - Event.observe(document, "keypress", this.eventKeypress); - } - this.drags.push(draggable); - }, - - unregister: function(draggable) { - this.drags = this.drags.reject(function(d) { return d==draggable }); - if(this.drags.length == 0) { - Event.stopObserving(document, "mouseup", this.eventMouseUp); - Event.stopObserving(document, "mousemove", this.eventMouseMove); - Event.stopObserving(document, "keypress", this.eventKeypress); - } - }, - - activate: function(draggable) { - if(draggable.options.delay) { - this._timeout = setTimeout(function() { - Draggables._timeout = null; - window.focus(); - Draggables.activeDraggable = draggable; - }.bind(this), draggable.options.delay); - } else { - window.focus(); // allows keypress events if window isn't currently focused, fails for Safari - this.activeDraggable = draggable; - } - }, - - deactivate: function() { - this.activeDraggable = null; - }, - - updateDrag: function(event) { - if(!this.activeDraggable) return; - var pointer = [Event.pointerX(event), Event.pointerY(event)]; - // Mozilla-based browsers fire successive mousemove events with - // the same coordinates, prevent needless redrawing (moz bug?) - if(this._lastPointer && (this._lastPointer.inspect() == pointer.inspect())) return; - this._lastPointer = pointer; - - this.activeDraggable.updateDrag(event, pointer); - }, - - endDrag: function(event) { - if(this._timeout) { - clearTimeout(this._timeout); - this._timeout = null; - } - if(!this.activeDraggable) return; - this._lastPointer = null; - this.activeDraggable.endDrag(event); - this.activeDraggable = null; - }, - - keyPress: function(event) { - if(this.activeDraggable) - this.activeDraggable.keyPress(event); - }, - - addObserver: function(observer) { - this.observers.push(observer); - this._cacheObserverCallbacks(); - }, - - removeObserver: function(element) { // element instead of observer fixes mem leaks - this.observers = this.observers.reject( function(o) { return o.element==element }); - this._cacheObserverCallbacks(); - }, - - notify: function(eventName, draggable, event) { // 'onStart', 'onEnd', 'onDrag' - if(this[eventName+'Count'] > 0) - this.observers.each( function(o) { - if(o[eventName]) o[eventName](eventName, draggable, event); - }); - if(draggable.options[eventName]) draggable.options[eventName](draggable, event); - }, - - _cacheObserverCallbacks: function() { - ['onStart','onEnd','onDrag'].each( function(eventName) { - Draggables[eventName+'Count'] = Draggables.observers.select( - function(o) { return o[eventName]; } - ).length; - }); - } -} - -/*--------------------------------------------------------------------------*/ - -var Draggable = Class.create({ - initialize: function(element) { - var defaults = { - handle: false, - reverteffect: function(element, top_offset, left_offset) { - var dur = Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02; - new Effect.Move(element, { x: -left_offset, y: -top_offset, duration: dur, - queue: {scope:'_draggable', position:'end'} - }); - }, - endeffect: function(element) { - var toOpacity = Object.isNumber(element._opacity) ? element._opacity : 1.0; - new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity, - queue: {scope:'_draggable', position:'end'}, - afterFinish: function(){ - Draggable._dragging[element] = false - } - }); - }, - zindex: 1000, - revert: false, - quiet: false, - scroll: false, - scrollSensitivity: 20, - scrollSpeed: 15, - snap: false, // false, or xy or [x,y] or function(x,y){ return [x,y] } - delay: 0 - }; - - if(!arguments[1] || Object.isUndefined(arguments[1].endeffect)) - Object.extend(defaults, { - starteffect: function(element) { - element._opacity = Element.getOpacity(element); - Draggable._dragging[element] = true; - new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7}); - } - }); - - var options = Object.extend(defaults, arguments[1] || { }); - - this.element = $(element); - - if(options.handle && Object.isString(options.handle)) - this.handle = this.element.down('.'+options.handle, 0); - - if(!this.handle) this.handle = $(options.handle); - if(!this.handle) this.handle = this.element; - - if(options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) { - options.scroll = $(options.scroll); - this._isScrollChild = Element.childOf(this.element, options.scroll); - } - - Element.makePositioned(this.element); // fix IE - - this.options = options; - this.dragging = false; - - this.eventMouseDown = this.initDrag.bindAsEventListener(this); - Event.observe(this.handle, "mousedown", this.eventMouseDown); - - Draggables.register(this); - }, - - destroy: function() { - Event.stopObserving(this.handle, "mousedown", this.eventMouseDown); - Draggables.unregister(this); - }, - - currentDelta: function() { - return([ - parseInt(Element.getStyle(this.element,'left') || '0'), - parseInt(Element.getStyle(this.element,'top') || '0')]); - }, - - initDrag: function(event) { - if(!Object.isUndefined(Draggable._dragging[this.element]) && - Draggable._dragging[this.element]) return; - if(Event.isLeftClick(event)) { - // abort on form elements, fixes a Firefox issue - var src = Event.element(event); - if((tag_name = src.tagName.toUpperCase()) && ( - tag_name=='INPUT' || - tag_name=='SELECT' || - tag_name=='OPTION' || - tag_name=='BUTTON' || - tag_name=='TEXTAREA')) return; - - var pointer = [Event.pointerX(event), Event.pointerY(event)]; - var pos = Position.cumulativeOffset(this.element); - this.offset = [0,1].map( function(i) { return (pointer[i] - pos[i]) }); - - Draggables.activate(this); - Event.stop(event); - } - }, - - startDrag: function(event) { - this.dragging = true; - if(!this.delta) - this.delta = this.currentDelta(); - - if(this.options.zindex) { - this.originalZ = parseInt(Element.getStyle(this.element,'z-index') || 0); - this.element.style.zIndex = this.options.zindex; - } - - if(this.options.ghosting) { - this._clone = this.element.cloneNode(true); - this.element._originallyAbsolute = (this.element.getStyle('position') == 'absolute'); - if (!this.element._originallyAbsolute) - Position.absolutize(this.element); - this.element.parentNode.insertBefore(this._clone, this.element); - } - - if(this.options.scroll) { - if (this.options.scroll == window) { - var where = this._getWindowScroll(this.options.scroll); - this.originalScrollLeft = where.left; - this.originalScrollTop = where.top; - } else { - this.originalScrollLeft = this.options.scroll.scrollLeft; - this.originalScrollTop = this.options.scroll.scrollTop; - } - } - - Draggables.notify('onStart', this, event); - - if(this.options.starteffect) this.options.starteffect(this.element); - }, - - updateDrag: function(event, pointer) { - if(!this.dragging) this.startDrag(event); - - if(!this.options.quiet){ - Position.prepare(); - Droppables.show(pointer, this.element); - } - - Draggables.notify('onDrag', this, event); - - this.draw(pointer); - if(this.options.change) this.options.change(this); - - if(this.options.scroll) { - this.stopScrolling(); - - var p; - if (this.options.scroll == window) { - with(this._getWindowScroll(this.options.scroll)) { p = [ left, top, left+width, top+height ]; } - } else { - p = Position.page(this.options.scroll); - p[0] += this.options.scroll.scrollLeft + Position.deltaX; - p[1] += this.options.scroll.scrollTop + Position.deltaY; - p.push(p[0]+this.options.scroll.offsetWidth); - p.push(p[1]+this.options.scroll.offsetHeight); - } - var speed = [0,0]; - if(pointer[0] < (p[0]+this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[0]+this.options.scrollSensitivity); - if(pointer[1] < (p[1]+this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[1]+this.options.scrollSensitivity); - if(pointer[0] > (p[2]-this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[2]-this.options.scrollSensitivity); - if(pointer[1] > (p[3]-this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[3]-this.options.scrollSensitivity); - this.startScrolling(speed); - } - - // fix AppleWebKit rendering - if(Prototype.Browser.WebKit) window.scrollBy(0,0); - - Event.stop(event); - }, - - finishDrag: function(event, success) { - this.dragging = false; - - if(this.options.quiet){ - Position.prepare(); - var pointer = [Event.pointerX(event), Event.pointerY(event)]; - Droppables.show(pointer, this.element); - } - - if(this.options.ghosting) { - if (!this.element._originallyAbsolute) - Position.relativize(this.element); - delete this.element._originallyAbsolute; - Element.remove(this._clone); - this._clone = null; - } - - var dropped = false; - if(success) { - dropped = Droppables.fire(event, this.element); - if (!dropped) dropped = false; - } - if(dropped && this.options.onDropped) this.options.onDropped(this.element); - Draggables.notify('onEnd', this, event); - - var revert = this.options.revert; - if(revert && Object.isFunction(revert)) revert = revert(this.element); - - var d = this.currentDelta(); - if(revert && this.options.reverteffect) { - if (dropped == 0 || revert != 'failure') - this.options.reverteffect(this.element, - d[1]-this.delta[1], d[0]-this.delta[0]); - } else { - this.delta = d; - } - - if(this.options.zindex) - this.element.style.zIndex = this.originalZ; - - if(this.options.endeffect) - this.options.endeffect(this.element); - - Draggables.deactivate(this); - Droppables.reset(); - }, - - keyPress: function(event) { - if(event.keyCode!=Event.KEY_ESC) return; - this.finishDrag(event, false); - Event.stop(event); - }, - - endDrag: function(event) { - if(!this.dragging) return; - this.stopScrolling(); - this.finishDrag(event, true); - Event.stop(event); - }, - - draw: function(point) { - var pos = Position.cumulativeOffset(this.element); - if(this.options.ghosting) { - var r = Position.realOffset(this.element); - pos[0] += r[0] - Position.deltaX; pos[1] += r[1] - Position.deltaY; - } - - var d = this.currentDelta(); - pos[0] -= d[0]; pos[1] -= d[1]; - - if(this.options.scroll && (this.options.scroll != window && this._isScrollChild)) { - pos[0] -= this.options.scroll.scrollLeft-this.originalScrollLeft; - pos[1] -= this.options.scroll.scrollTop-this.originalScrollTop; - } - - var p = [0,1].map(function(i){ - return (point[i]-pos[i]-this.offset[i]) - }.bind(this)); - - if(this.options.snap) { - if(Object.isFunction(this.options.snap)) { - p = this.options.snap(p[0],p[1],this); - } else { - if(Object.isArray(this.options.snap)) { - p = p.map( function(v, i) { - return (v/this.options.snap[i]).round()*this.options.snap[i] }.bind(this)) - } else { - p = p.map( function(v) { - return (v/this.options.snap).round()*this.options.snap }.bind(this)) - } - }} - - var style = this.element.style; - if((!this.options.constraint) || (this.options.constraint=='horizontal')) - style.left = p[0] + "px"; - if((!this.options.constraint) || (this.options.constraint=='vertical')) - style.top = p[1] + "px"; - - if(style.visibility=="hidden") style.visibility = ""; // fix gecko rendering - }, - - stopScrolling: function() { - if(this.scrollInterval) { - clearInterval(this.scrollInterval); - this.scrollInterval = null; - Draggables._lastScrollPointer = null; - } - }, - - startScrolling: function(speed) { - if(!(speed[0] || speed[1])) return; - this.scrollSpeed = [speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed]; - this.lastScrolled = new Date(); - this.scrollInterval = setInterval(this.scroll.bind(this), 10); - }, - - scroll: function() { - var current = new Date(); - var delta = current - this.lastScrolled; - this.lastScrolled = current; - if(this.options.scroll == window) { - with (this._getWindowScroll(this.options.scroll)) { - if (this.scrollSpeed[0] || this.scrollSpeed[1]) { - var d = delta / 1000; - this.options.scroll.scrollTo( left + d*this.scrollSpeed[0], top + d*this.scrollSpeed[1] ); - } - } - } else { - this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000; - this.options.scroll.scrollTop += this.scrollSpeed[1] * delta / 1000; - } - - Position.prepare(); - Droppables.show(Draggables._lastPointer, this.element); - Draggables.notify('onDrag', this); - if (this._isScrollChild) { - Draggables._lastScrollPointer = Draggables._lastScrollPointer || $A(Draggables._lastPointer); - Draggables._lastScrollPointer[0] += this.scrollSpeed[0] * delta / 1000; - Draggables._lastScrollPointer[1] += this.scrollSpeed[1] * delta / 1000; - if (Draggables._lastScrollPointer[0] < 0) - Draggables._lastScrollPointer[0] = 0; - if (Draggables._lastScrollPointer[1] < 0) - Draggables._lastScrollPointer[1] = 0; - this.draw(Draggables._lastScrollPointer); - } - - if(this.options.change) this.options.change(this); - }, - - _getWindowScroll: function(w) { - var T, L, W, H; - with (w.document) { - if (w.document.documentElement && documentElement.scrollTop) { - T = documentElement.scrollTop; - L = documentElement.scrollLeft; - } else if (w.document.body) { - T = body.scrollTop; - L = body.scrollLeft; - } - if (w.innerWidth) { - W = w.innerWidth; - H = w.innerHeight; - } else if (w.document.documentElement && documentElement.clientWidth) { - W = documentElement.clientWidth; - H = documentElement.clientHeight; - } else { - W = body.offsetWidth; - H = body.offsetHeight - } - } - return { top: T, left: L, width: W, height: H }; - } -}); - -Draggable._dragging = { }; - -/*--------------------------------------------------------------------------*/ - -var SortableObserver = Class.create({ - initialize: function(element, observer) { - this.element = $(element); - this.observer = observer; - this.lastValue = Sortable.serialize(this.element); - }, - - onStart: function() { - this.lastValue = Sortable.serialize(this.element); - }, - - onEnd: function() { - Sortable.unmark(); - if(this.lastValue != Sortable.serialize(this.element)) - this.observer(this.element) - } -}); - -var Sortable = { - SERIALIZE_RULE: /^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/, - - sortables: { }, - - _findRootElement: function(element) { - while (element.tagName.toUpperCase() != "BODY") { - if(element.id && Sortable.sortables[element.id]) return element; - element = element.parentNode; - } - }, - - options: function(element) { - element = Sortable._findRootElement($(element)); - if(!element) return; - return Sortable.sortables[element.id]; - }, - - destroy: function(element){ - var s = Sortable.options(element); - - if(s) { - Draggables.removeObserver(s.element); - s.droppables.each(function(d){ Droppables.remove(d) }); - s.draggables.invoke('destroy'); - - delete Sortable.sortables[s.element.id]; - } - }, - - create: function(element) { - element = $(element); - var options = Object.extend({ - element: element, - tag: 'li', // assumes li children, override with tag: 'tagname' - dropOnEmpty: false, - tree: false, - treeTag: 'ul', - overlap: 'vertical', // one of 'vertical', 'horizontal' - constraint: 'vertical', // one of 'vertical', 'horizontal', false - containment: element, // also takes array of elements (or id's); or false - handle: false, // or a CSS class - only: false, - delay: 0, - hoverclass: null, - ghosting: false, - quiet: false, - scroll: false, - scrollSensitivity: 20, - scrollSpeed: 15, - format: this.SERIALIZE_RULE, - - // these take arrays of elements or ids and can be - // used for better initialization performance - elements: false, - handles: false, - - onChange: Prototype.emptyFunction, - onUpdate: Prototype.emptyFunction - }, arguments[1] || { }); - - // clear any old sortable with same element - this.destroy(element); - - // build options for the draggables - var options_for_draggable = { - revert: true, - quiet: options.quiet, - scroll: options.scroll, - scrollSpeed: options.scrollSpeed, - scrollSensitivity: options.scrollSensitivity, - delay: options.delay, - ghosting: options.ghosting, - constraint: options.constraint, - handle: options.handle }; - - if(options.starteffect) - options_for_draggable.starteffect = options.starteffect; - - if(options.reverteffect) - options_for_draggable.reverteffect = options.reverteffect; - else - if(options.ghosting) options_for_draggable.reverteffect = function(element) { - element.style.top = 0; - element.style.left = 0; - }; - - if(options.endeffect) - options_for_draggable.endeffect = options.endeffect; - - if(options.zindex) - options_for_draggable.zindex = options.zindex; - - // build options for the droppables - var options_for_droppable = { - overlap: options.overlap, - containment: options.containment, - tree: options.tree, - hoverclass: options.hoverclass, - onHover: Sortable.onHover - } - - var options_for_tree = { - onHover: Sortable.onEmptyHover, - overlap: options.overlap, - containment: options.containment, - hoverclass: options.hoverclass - } - - // fix for gecko engine - Element.cleanWhitespace(element); - - options.draggables = []; - options.droppables = []; - - // drop on empty handling - if(options.dropOnEmpty || options.tree) { - Droppables.add(element, options_for_tree); - options.droppables.push(element); - } - - (options.elements || this.findElements(element, options) || []).each( function(e,i) { - var handle = options.handles ? $(options.handles[i]) : - (options.handle ? $(e).select('.' + options.handle)[0] : e); - options.draggables.push( - new Draggable(e, Object.extend(options_for_draggable, { handle: handle }))); - Droppables.add(e, options_for_droppable); - if(options.tree) e.treeNode = element; - options.droppables.push(e); - }); - - if(options.tree) { - (Sortable.findTreeElements(element, options) || []).each( function(e) { - Droppables.add(e, options_for_tree); - e.treeNode = element; - options.droppables.push(e); - }); - } - - // keep reference - this.sortables[element.id] = options; - - // for onupdate - Draggables.addObserver(new SortableObserver(element, options.onUpdate)); - - }, - - // return all suitable-for-sortable elements in a guaranteed order - findElements: function(element, options) { - return Element.findChildren( - element, options.only, options.tree ? true : false, options.tag); - }, - - findTreeElements: function(element, options) { - return Element.findChildren( - element, options.only, options.tree ? true : false, options.treeTag); - }, - - onHover: function(element, dropon, overlap) { - if(Element.isParent(dropon, element)) return; - - if(overlap > .33 && overlap < .66 && Sortable.options(dropon).tree) { - return; - } else if(overlap>0.5) { - Sortable.mark(dropon, 'before'); - if(dropon.previousSibling != element) { - var oldParentNode = element.parentNode; - element.style.visibility = "hidden"; // fix gecko rendering - dropon.parentNode.insertBefore(element, dropon); - if(dropon.parentNode!=oldParentNode) - Sortable.options(oldParentNode).onChange(element); - Sortable.options(dropon.parentNode).onChange(element); - } - } else { - Sortable.mark(dropon, 'after'); - var nextElement = dropon.nextSibling || null; - if(nextElement != element) { - var oldParentNode = element.parentNode; - element.style.visibility = "hidden"; // fix gecko rendering - dropon.parentNode.insertBefore(element, nextElement); - if(dropon.parentNode!=oldParentNode) - Sortable.options(oldParentNode).onChange(element); - Sortable.options(dropon.parentNode).onChange(element); - } - } - }, - - onEmptyHover: function(element, dropon, overlap) { - var oldParentNode = element.parentNode; - var droponOptions = Sortable.options(dropon); - - if(!Element.isParent(dropon, element)) { - var index; - - var children = Sortable.findElements(dropon, {tag: droponOptions.tag, only: droponOptions.only}); - var child = null; - - if(children) { - var offset = Element.offsetSize(dropon, droponOptions.overlap) * (1.0 - overlap); - - for (index = 0; index < children.length; index += 1) { - if (offset - Element.offsetSize (children[index], droponOptions.overlap) >= 0) { - offset -= Element.offsetSize (children[index], droponOptions.overlap); - } else if (offset - (Element.offsetSize (children[index], droponOptions.overlap) / 2) >= 0) { - child = index + 1 < children.length ? children[index + 1] : null; - break; - } else { - child = children[index]; - break; - } - } - } - - dropon.insertBefore(element, child); - - Sortable.options(oldParentNode).onChange(element); - droponOptions.onChange(element); - } - }, - - unmark: function() { - if(Sortable._marker) Sortable._marker.hide(); - }, - - mark: function(dropon, position) { - // mark on ghosting only - var sortable = Sortable.options(dropon.parentNode); - if(sortable && !sortable.ghosting) return; - - if(!Sortable._marker) { - Sortable._marker = - ($('dropmarker') || Element.extend(document.createElement('DIV'))). - hide().addClassName('dropmarker').setStyle({position:'absolute'}); - document.getElementsByTagName("body").item(0).appendChild(Sortable._marker); - } - var offsets = Position.cumulativeOffset(dropon); - Sortable._marker.setStyle({left: offsets[0]+'px', top: offsets[1] + 'px'}); - - if(position=='after') - if(sortable.overlap == 'horizontal') - Sortable._marker.setStyle({left: (offsets[0]+dropon.clientWidth) + 'px'}); - else - Sortable._marker.setStyle({top: (offsets[1]+dropon.clientHeight) + 'px'}); - - Sortable._marker.show(); - }, - - _tree: function(element, options, parent) { - var children = Sortable.findElements(element, options) || []; - - for (var i = 0; i < children.length; ++i) { - var match = children[i].id.match(options.format); - - if (!match) continue; - - var child = { - id: encodeURIComponent(match ? match[1] : null), - element: element, - parent: parent, - children: [], - position: parent.children.length, - container: $(children[i]).down(options.treeTag) - } - - /* Get the element containing the children and recurse over it */ - if (child.container) - this._tree(child.container, options, child) - - parent.children.push (child); - } - - return parent; - }, - - tree: function(element) { - element = $(element); - var sortableOptions = this.options(element); - var options = Object.extend({ - tag: sortableOptions.tag, - treeTag: sortableOptions.treeTag, - only: sortableOptions.only, - name: element.id, - format: sortableOptions.format - }, arguments[1] || { }); - - var root = { - id: null, - parent: null, - children: [], - container: element, - position: 0 - } - - return Sortable._tree(element, options, root); - }, - - /* Construct a [i] index for a particular node */ - _constructIndex: function(node) { - var index = ''; - do { - if (node.id) index = '[' + node.position + ']' + index; - } while ((node = node.parent) != null); - return index; - }, - - sequence: function(element) { - element = $(element); - var options = Object.extend(this.options(element), arguments[1] || { }); - - return $(this.findElements(element, options) || []).map( function(item) { - return item.id.match(options.format) ? item.id.match(options.format)[1] : ''; - }); - }, - - setSequence: function(element, new_sequence) { - element = $(element); - var options = Object.extend(this.options(element), arguments[2] || { }); - - var nodeMap = { }; - this.findElements(element, options).each( function(n) { - if (n.id.match(options.format)) - nodeMap[n.id.match(options.format)[1]] = [n, n.parentNode]; - n.parentNode.removeChild(n); - }); - - new_sequence.each(function(ident) { - var n = nodeMap[ident]; - if (n) { - n[1].appendChild(n[0]); - delete nodeMap[ident]; - } - }); - }, - - serialize: function(element) { - element = $(element); - var options = Object.extend(Sortable.options(element), arguments[1] || { }); - var name = encodeURIComponent( - (arguments[1] && arguments[1].name) ? arguments[1].name : element.id); - - if (options.tree) { - return Sortable.tree(element, arguments[1]).children.map( function (item) { - return [name + Sortable._constructIndex(item) + "[id]=" + - encodeURIComponent(item.id)].concat(item.children.map(arguments.callee)); - }).flatten().join('&'); - } else { - return Sortable.sequence(element, arguments[1]).map( function(item) { - return name + "[]=" + encodeURIComponent(item); - }).join('&'); - } - } -} - -// Returns true if child is contained within element -Element.isParent = function(child, element) { - if (!child.parentNode || child == element) return false; - if (child.parentNode == element) return true; - return Element.isParent(child.parentNode, element); -} - -Element.findChildren = function(element, only, recursive, tagName) { - if(!element.hasChildNodes()) return null; - tagName = tagName.toUpperCase(); - if(only) only = [only].flatten(); - var elements = []; - $A(element.childNodes).each( function(e) { - if(e.tagName && e.tagName.toUpperCase()==tagName && - (!only || (Element.classNames(e).detect(function(v) { return only.include(v) })))) - elements.push(e); - if(recursive) { - var grandchildren = Element.findChildren(e, only, recursive, tagName); - if(grandchildren) elements.push(grandchildren); - } - }); - - return (elements.length>0 ? elements.flatten() : []); -} - -Element.offsetSize = function (element, type) { - return element['offset' + ((type=='vertical' || type=='height') ? 'Height' : 'Width')]; -} diff --git a/lib/scriptaculous/effects.js b/lib/scriptaculous/effects.js index b8c0259f55..066ee5909c 100644 --- a/lib/scriptaculous/effects.js +++ b/lib/scriptaculous/effects.js @@ -1,50 +1,50 @@ -// script.aculo.us effects.js v1.8.1, Thu Jan 03 22:07:12 -0500 2008 +// script.aculo.us effects.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009 -// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // Contributors: // Justin Palmer (http://encytemedia.com/) // Mark Pilgrim (http://diveintomark.org/) // Martin Bialasinki -// +// // script.aculo.us is freely distributable under the terms of an MIT-style license. -// For details, see the script.aculo.us web site: http://script.aculo.us/ +// For details, see the script.aculo.us web site: http://script.aculo.us/ -// converts rgb() and #xxx to #xxxxxx format, -// returns self (or first argument) if not convertable -String.prototype.parseColor = function() { +// converts rgb() and #xxx to #xxxxxx format, +// returns self (or first argument) if not convertable +String.prototype.parseColor = function() { var color = '#'; - if (this.slice(0,4) == 'rgb(') { - var cols = this.slice(4,this.length-1).split(','); - var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3); - } else { - if (this.slice(0,1) == '#') { - if (this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase(); - if (this.length==7) color = this.toLowerCase(); - } - } - return (color.length==7 ? color : (arguments[0] || this)); + if (this.slice(0,4) == 'rgb(') { + var cols = this.slice(4,this.length-1).split(','); + var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3); + } else { + if (this.slice(0,1) == '#') { + if (this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase(); + if (this.length==7) color = this.toLowerCase(); + } + } + return (color.length==7 ? color : (arguments[0] || this)); }; /*--------------------------------------------------------------------------*/ -Element.collectTextNodes = function(element) { +Element.collectTextNodes = function(element) { return $A($(element).childNodes).collect( function(node) { - return (node.nodeType==3 ? node.nodeValue : + return (node.nodeType==3 ? node.nodeValue : (node.hasChildNodes() ? Element.collectTextNodes(node) : '')); }).flatten().join(''); }; -Element.collectTextNodesIgnoreClass = function(element, className) { +Element.collectTextNodesIgnoreClass = function(element, className) { return $A($(element).childNodes).collect( function(node) { - return (node.nodeType==3 ? node.nodeValue : - ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? + return (node.nodeType==3 ? node.nodeValue : + ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? Element.collectTextNodesIgnoreClass(node, className) : '')); }).flatten().join(''); }; Element.setContentZoom = function(element, percent) { - element = $(element); - element.setStyle({fontSize: (percent/100) + 'em'}); + element = $(element); + element.setStyle({fontSize: (percent/100) + 'em'}); if (Prototype.Browser.WebKit) window.scrollBy(0,0); return element; }; @@ -72,28 +72,23 @@ var Effect = { Transitions: { linear: Prototype.K, sinoidal: function(pos) { - return (-Math.cos(pos*Math.PI)/2) + 0.5; + return (-Math.cos(pos*Math.PI)/2) + .5; }, reverse: function(pos) { return 1-pos; }, flicker: function(pos) { - var pos = ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4; + var pos = ((-Math.cos(pos*Math.PI)/4) + .75) + Math.random()/4; return pos > 1 ? 1 : pos; }, wobble: function(pos) { - return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5; + return (-Math.cos(pos*Math.PI*(9*pos))/2) + .5; }, - pulse: function(pos, pulses) { - pulses = pulses || 5; - return ( - ((pos % (1/pulses)) * pulses).round() == 0 ? - ((pos * pulses * 2) - (pos * pulses * 2).floor()) : - 1 - ((pos * pulses * 2) - (pos * pulses * 2).floor()) - ); + pulse: function(pos, pulses) { + return (-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2) + .5; }, - spring: function(pos) { - return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6)); + spring: function(pos) { + return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6)); }, none: function(pos) { return 0; @@ -114,14 +109,14 @@ var Effect = { tagifyText: function(element) { var tagifyStyle = 'position:relative'; if (Prototype.Browser.IE) tagifyStyle += ';zoom:1'; - + element = $(element); $A(element.childNodes).each( function(child) { if (child.nodeType==3) { child.nodeValue.toArray().each( function(character) { element.insertBefore( new Element('span', {style: tagifyStyle}).update( - character == ' ' ? String.fromCharCode(160) : character), + character == ' ' ? String.fromCharCode(160) : character), child); }); Element.remove(child); @@ -130,13 +125,13 @@ var Effect = { }, multiple: function(element, effect) { var elements; - if (((typeof element == 'object') || - Object.isFunction(element)) && + if (((typeof element == 'object') || + Object.isFunction(element)) && (element.length)) elements = element; else elements = $(element).childNodes; - + var options = Object.extend({ speed: 0.1, delay: 0.0 @@ -152,14 +147,13 @@ var Effect = { 'blind': ['BlindDown','BlindUp'], 'appear': ['Appear','Fade'] }, - toggle: function(element, effect) { + toggle: function(element, effect, options) { element = $(element); - effect = (effect || 'appear').toLowerCase(); - var options = Object.extend({ + effect = (effect || 'appear').toLowerCase(); + + return Effect[ Effect.PAIRS[ effect ][ element.visible() ? 1 : 0 ] ](element, Object.extend({ queue: { position:'end', scope:(element.id || 'global'), limit: 1 } - }, arguments[2] || { }); - Effect[element.visible() ? - Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options); + }, options || {})); } }; @@ -170,20 +164,20 @@ Effect.DefaultOptions.transition = Effect.Transitions.sinoidal; Effect.ScopedQueue = Class.create(Enumerable, { initialize: function() { this.effects = []; - this.interval = null; + this.interval = null; }, _each: function(iterator) { this.effects._each(iterator); }, add: function(effect) { var timestamp = new Date().getTime(); - - var position = Object.isString(effect.options.queue) ? + + var position = Object.isString(effect.options.queue) ? effect.options.queue : effect.options.queue.position; - + switch(position) { case 'front': - // move unstarted effects after this effect + // move unstarted effects after this effect this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) { e.startOn += effect.finishOn; e.finishOn += effect.finishOn; @@ -197,13 +191,13 @@ Effect.ScopedQueue = Class.create(Enumerable, { timestamp = this.effects.pluck('finishOn').max() || timestamp; break; } - + effect.startOn += timestamp; effect.finishOn += timestamp; if (!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit)) this.effects.push(effect); - + if (!this.interval) this.interval = setInterval(this.loop.bind(this), 15); }, @@ -216,7 +210,7 @@ Effect.ScopedQueue = Class.create(Enumerable, { }, loop: function() { var timePos = new Date().getTime(); - for(var i=0, len=this.effects.length;i0) { @@ -432,9 +432,9 @@ Effect.Scale = Class.create(Effect.Base, { this.fontSizeType = fontSizeType; } }.bind(this)); - + this.factor = (this.options.scaleTo - this.options.scaleFrom)/100; - + this.dims = null; if (this.options.scaleMode=='box') this.dims = [this.element.offsetHeight, this.element.offsetWidth]; @@ -509,17 +509,16 @@ Effect.Highlight = Class.create(Effect.Base, { Effect.ScrollTo = function(element) { var options = arguments[1] || { }, - scrollOffsets = document.viewport.getScrollOffsets(), - elementOffsets = $(element).cumulativeOffset(), - max = (window.height || document.body.scrollHeight) - document.viewport.getHeight(); + scrollOffsets = document.viewport.getScrollOffsets(), + elementOffsets = $(element).cumulativeOffset(); if (options.offset) elementOffsets[1] += options.offset; return new Effect.Tween(null, scrollOffsets.top, - elementOffsets[1] > max ? max : elementOffsets[1], + elementOffsets[1], options, - function(p){ scrollTo(scrollOffsets.left, p.round()) } + function(p){ scrollTo(scrollOffsets.left, p.round()); } ); }; @@ -531,9 +530,9 @@ Effect.Fade = function(element) { var options = Object.extend({ from: element.getOpacity() || 1.0, to: 0.0, - afterFinishInternal: function(effect) { + afterFinishInternal: function(effect) { if (effect.options.to!=0) return; - effect.element.hide().setStyle({opacity: oldOpacity}); + effect.element.hide().setStyle({opacity: oldOpacity}); } }, arguments[1] || { }); return new Effect.Opacity(element,options); @@ -549,15 +548,15 @@ Effect.Appear = function(element) { effect.element.forceRerendering(); }, beforeSetup: function(effect) { - effect.element.setOpacity(effect.options.from).show(); + effect.element.setOpacity(effect.options.from).show(); }}, arguments[1] || { }); return new Effect.Opacity(element,options); }; Effect.Puff = function(element) { element = $(element); - var oldStyle = { - opacity: element.getInlineOpacity(), + var oldStyle = { + opacity: element.getInlineOpacity(), position: element.getStyle('position'), top: element.style.top, left: element.style.left, @@ -565,12 +564,12 @@ Effect.Puff = function(element) { height: element.style.height }; return new Effect.Parallel( - [ new Effect.Scale(element, 200, - { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), - new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], - Object.extend({ duration: 1.0, + [ new Effect.Scale(element, 200, + { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), + new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], + Object.extend({ duration: 1.0, beforeSetupInternal: function(effect) { - Position.absolutize(effect.effects[0].element) + Position.absolutize(effect.effects[0].element); }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().setStyle(oldStyle); } @@ -582,12 +581,12 @@ Effect.BlindUp = function(element) { element = $(element); element.makeClipping(); return new Effect.Scale(element, 0, - Object.extend({ scaleContent: false, - scaleX: false, + Object.extend({ scaleContent: false, + scaleX: false, restoreAfterFinish: true, afterFinishInternal: function(effect) { effect.element.hide().undoClipping(); - } + } }, arguments[1] || { }) ); }; @@ -595,15 +594,15 @@ Effect.BlindUp = function(element) { Effect.BlindDown = function(element) { element = $(element); var elementDimensions = element.getDimensions(); - return new Effect.Scale(element, 100, Object.extend({ - scaleContent: false, + return new Effect.Scale(element, 100, Object.extend({ + scaleContent: false, scaleX: false, scaleFrom: 0, scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, restoreAfterFinish: true, afterSetup: function(effect) { - effect.element.makeClipping().setStyle({height: '0px'}).show(); - }, + effect.element.makeClipping().setStyle({height: '0px'}).show(); + }, afterFinishInternal: function(effect) { effect.element.undoClipping(); } @@ -618,16 +617,16 @@ Effect.SwitchOff = function(element) { from: 0, transition: Effect.Transitions.flicker, afterFinishInternal: function(effect) { - new Effect.Scale(effect.element, 1, { + new Effect.Scale(effect.element, 1, { duration: 0.3, scaleFromCenter: true, scaleX: false, scaleContent: false, restoreAfterFinish: true, - beforeSetup: function(effect) { + beforeSetup: function(effect) { effect.element.makePositioned().makeClipping(); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity}); } - }) + }); } }, arguments[1] || { })); }; @@ -639,16 +638,16 @@ Effect.DropOut = function(element) { left: element.getStyle('left'), opacity: element.getInlineOpacity() }; return new Effect.Parallel( - [ new Effect.Move(element, {x: 0, y: 100, sync: true }), + [ new Effect.Move(element, {x: 0, y: 100, sync: true }), new Effect.Opacity(element, { sync: true, to: 0.0 }) ], Object.extend( { duration: 0.5, beforeSetup: function(effect) { - effect.effects[0].element.makePositioned(); + effect.effects[0].element.makePositioned(); }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle); - } + } }, arguments[1] || { })); }; @@ -676,7 +675,7 @@ Effect.Shake = function(element) { new Effect.Move(effect.element, { x: -distance, y: 0, duration: split, afterFinishInternal: function(effect) { effect.element.undoPositioned().setStyle(oldStyle); - }}) }}) }}) }}) }}) }}); + }}); }}); }}); }}); }}); }}); }; Effect.SlideDown = function(element) { @@ -684,9 +683,9 @@ Effect.SlideDown = function(element) { // SlideDown need to have the content of the element wrapped in a container element with fixed height! var oldInnerBottom = element.down().getStyle('bottom'); var elementDimensions = element.getDimensions(); - return new Effect.Scale(element, 100, Object.extend({ - scaleContent: false, - scaleX: false, + return new Effect.Scale(element, 100, Object.extend({ + scaleContent: false, + scaleX: false, scaleFrom: window.opera ? 0 : 1, scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, restoreAfterFinish: true, @@ -694,11 +693,11 @@ Effect.SlideDown = function(element) { effect.element.makePositioned(); effect.element.down().makePositioned(); if (window.opera) effect.element.setStyle({top: ''}); - effect.element.makeClipping().setStyle({height: '0px'}).show(); + effect.element.makeClipping().setStyle({height: '0px'}).show(); }, afterUpdateInternal: function(effect) { effect.element.down().setStyle({bottom: - (effect.dims[0] - effect.element.clientHeight) + 'px' }); + (effect.dims[0] - effect.element.clientHeight) + 'px' }); }, afterFinishInternal: function(effect) { effect.element.undoClipping().undoPositioned(); @@ -712,8 +711,8 @@ Effect.SlideUp = function(element) { var oldInnerBottom = element.down().getStyle('bottom'); var elementDimensions = element.getDimensions(); return new Effect.Scale(element, window.opera ? 0 : 1, - Object.extend({ scaleContent: false, - scaleX: false, + Object.extend({ scaleContent: false, + scaleX: false, scaleMode: 'box', scaleFrom: 100, scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, @@ -723,7 +722,7 @@ Effect.SlideUp = function(element) { effect.element.down().makePositioned(); if (window.opera) effect.element.setStyle({top: ''}); effect.element.makeClipping().show(); - }, + }, afterUpdateInternal: function(effect) { effect.element.down().setStyle({bottom: (effect.dims[0] - effect.element.clientHeight) + 'px' }); @@ -736,15 +735,15 @@ Effect.SlideUp = function(element) { ); }; -// Bug in opera makes the TD containing this element expand for a instance after finish +// Bug in opera makes the TD containing this element expand for a instance after finish Effect.Squish = function(element) { - return new Effect.Scale(element, window.opera ? 1 : 0, { + return new Effect.Scale(element, window.opera ? 1 : 0, { restoreAfterFinish: true, beforeSetup: function(effect) { - effect.element.makeClipping(); - }, + effect.element.makeClipping(); + }, afterFinishInternal: function(effect) { - effect.element.hide().undoClipping(); + effect.element.hide().undoClipping(); } }); }; @@ -764,13 +763,13 @@ Effect.Grow = function(element) { width: element.style.width, opacity: element.getInlineOpacity() }; - var dims = element.getDimensions(); + var dims = element.getDimensions(); var initialMoveX, initialMoveY; var moveX, moveY; - + switch (options.direction) { case 'top-left': - initialMoveX = initialMoveY = moveX = moveY = 0; + initialMoveX = initialMoveY = moveX = moveY = 0; break; case 'top-right': initialMoveX = dims.width; @@ -795,11 +794,11 @@ Effect.Grow = function(element) { moveY = -dims.height / 2; break; } - + return new Effect.Move(element, { x: initialMoveX, y: initialMoveY, - duration: 0.01, + duration: 0.01, beforeSetup: function(effect) { effect.element.hide().makeClipping().makePositioned(); }, @@ -808,17 +807,17 @@ Effect.Grow = function(element) { [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }), new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }), new Effect.Scale(effect.element, 100, { - scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, + scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true}) ], Object.extend({ beforeSetup: function(effect) { - effect.effects[0].element.setStyle({height: '0px'}).show(); + effect.effects[0].element.setStyle({height: '0px'}).show(); }, afterFinishInternal: function(effect) { - effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle); + effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle); } }, options) - ) + ); } }); }; @@ -840,7 +839,7 @@ Effect.Shrink = function(element) { var dims = element.getDimensions(); var moveX, moveY; - + switch (options.direction) { case 'top-left': moveX = moveY = 0; @@ -857,19 +856,19 @@ Effect.Shrink = function(element) { moveX = dims.width; moveY = dims.height; break; - case 'center': + case 'center': moveX = dims.width / 2; moveY = dims.height / 2; break; } - + return new Effect.Parallel( [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }), new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}), new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }) - ], Object.extend({ + ], Object.extend({ beforeStartInternal: function(effect) { - effect.effects[0].element.makePositioned().makeClipping(); + effect.effects[0].element.makePositioned().makeClipping(); }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); } @@ -879,12 +878,14 @@ Effect.Shrink = function(element) { Effect.Pulsate = function(element) { element = $(element); - var options = arguments[1] || { }; - var oldOpacity = element.getInlineOpacity(); - var transition = options.transition || Effect.Transitions.sinoidal; - var reverser = function(pos){ return transition(1-Effect.Transitions.pulse(pos, options.pulses)) }; - reverser.bind(transition); - return new Effect.Opacity(element, + var options = arguments[1] || { }, + oldOpacity = element.getInlineOpacity(), + transition = options.transition || Effect.Transitions.linear, + reverser = function(pos){ + return 1 - transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2) + .5); + }; + + return new Effect.Opacity(element, Object.extend(Object.extend({ duration: 2.0, from: 0, afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); } }, options), {transition: reverser})); @@ -898,12 +899,12 @@ Effect.Fold = function(element) { width: element.style.width, height: element.style.height }; element.makeClipping(); - return new Effect.Scale(element, 5, Object.extend({ + return new Effect.Scale(element, 5, Object.extend({ scaleContent: false, scaleX: false, afterFinishInternal: function(effect) { - new Effect.Scale(element, 1, { - scaleContent: false, + new Effect.Scale(element, 1, { + scaleContent: false, scaleY: false, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().setStyle(oldStyle); @@ -918,7 +919,7 @@ Effect.Morph = Class.create(Effect.Base, { var options = Object.extend({ style: { } }, arguments[1] || { }); - + if (!Object.isString(options.style)) this.style = $H(options.style); else { if (options.style.include(':')) @@ -936,18 +937,18 @@ Effect.Morph = Class.create(Effect.Base, { effect.transforms.each(function(transform) { effect.element.style[transform.style] = ''; }); - } + }; } } this.start(options); }, - + setup: function(){ function parseColor(color){ if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff'; color = color.parseColor(); return $R(0,2).map(function(i){ - return parseInt( color.slice(i*2+1,i*2+3), 16 ) + return parseInt( color.slice(i*2+1,i*2+3), 16 ); }); } this.transforms = this.style.map(function(pair){ @@ -967,9 +968,9 @@ Effect.Morph = Class.create(Effect.Base, { } var originalValue = this.element.getStyle(property); - return { - style: property.camelize(), - originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0), + return { + style: property.camelize(), + originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0), targetValue: unit=='color' ? parseColor(value) : value, unit: unit }; @@ -980,13 +981,13 @@ Effect.Morph = Class.create(Effect.Base, { transform.unit != 'color' && (isNaN(transform.originalValue) || isNaN(transform.targetValue)) ) - ) + ); }); }, update: function(position) { var style = { }, transform, i = this.transforms.length; while(i--) - style[(transform = this.transforms[i]).style] = + style[(transform = this.transforms[i]).style] = transform.unit=='color' ? '#'+ (Math.round(transform.originalValue[0]+ (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() + @@ -995,7 +996,7 @@ Effect.Morph = Class.create(Effect.Base, { (Math.round(transform.originalValue[2]+ (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() : (transform.originalValue + - (transform.targetValue - transform.originalValue) * position).toFixed(3) + + (transform.targetValue - transform.originalValue) * position).toFixed(3) + (transform.unit === null ? '' : transform.unit); this.element.setStyle(style, true); } @@ -1032,7 +1033,7 @@ Effect.Transform = Class.create({ }); Element.CSS_PROPERTIES = $w( - 'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' + + 'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' + 'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' + 'borderRightColor borderRightStyle borderRightWidth borderSpacing ' + 'borderTopColor borderTopStyle borderTopWidth bottom clip color ' + @@ -1041,7 +1042,7 @@ Element.CSS_PROPERTIES = $w( 'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' + 'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' + 'right textIndent top width wordSpacing zIndex'); - + Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/; String.__parseStyleElement = document.createElement('div'); @@ -1053,11 +1054,11 @@ String.prototype.parseStyle = function(){ String.__parseStyleElement.innerHTML = '
    '; style = String.__parseStyleElement.childNodes[0].style; } - + Element.CSS_PROPERTIES.each(function(property){ - if (style[property]) styleRules.set(property, style[property]); + if (style[property]) styleRules.set(property, style[property]); }); - + if (Prototype.Browser.IE && this.include('opacity')) styleRules.set('opacity', this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]); @@ -1083,7 +1084,7 @@ if (document.defaultView && document.defaultView.getComputedStyle) { if (!styles.opacity) styles.opacity = element.getOpacity(); return styles; }; -}; +} Effect.Methods = { morph: function(element, style) { @@ -1092,7 +1093,7 @@ Effect.Methods = { return element; }, visualEffect: function(element, effect, options) { - element = $(element) + element = $(element); var s = effect.dasherize().camelize(), klass = s.charAt(0).toUpperCase() + s.substring(1); new Effect[klass](element, options); return element; @@ -1106,17 +1107,17 @@ Effect.Methods = { $w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+ 'pulsate shake puff squish switchOff dropOut').each( - function(effect) { + function(effect) { Effect.Methods[effect] = function(element, options){ element = $(element); Effect[effect.charAt(0).toUpperCase() + effect.substring(1)](element, options); return element; - } + }; } ); -$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each( +$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each( function(f) { Effect.Methods[f] = Element[f]; } ); -Element.addMethods(Effect.Methods); +Element.addMethods(Effect.Methods); \ No newline at end of file diff --git a/lib/scriptaculous/scriptaculous.js b/lib/scriptaculous/scriptaculous.js index 6cfe36e8d5..6bf437acc4 100644 --- a/lib/scriptaculous/scriptaculous.js +++ b/lib/scriptaculous/scriptaculous.js @@ -1,7 +1,7 @@ -// script.aculo.us scriptaculous.js v1.8.1, Thu Jan 03 22:07:12 -0500 2008 +// script.aculo.us scriptaculous.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009 -// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) -// +// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including @@ -9,7 +9,7 @@ // distribute, sublicense, and/or sell copies of the Software, and to // permit persons to whom the Software is furnished to do so, subject to // the following conditions: -// +// // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // @@ -24,35 +24,45 @@ // For details, see the script.aculo.us web site: http://script.aculo.us/ var Scriptaculous = { - Version: '1.8.1', + Version: '1.8.3', require: function(libraryName) { - // inserting via DOM fails in Safari 2.0, so brute force approach - document.write(''; - $javascript_outputted = true; - } - } - - // Odeo Feed MP3's - if ($handler == 'odeo') - { - if ($native) - { - $embed .= ''; - } - else - { - $embed .= ''; - } - } - - // Flash - elseif ($handler == 'flash') - { - if ($native) - { - $embed .= "get_link() . "\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"$type\" quality=\"high\" width=\"$width\" height=\"$height\" bgcolor=\"$bgcolor\" loop=\"$loop\">"; - } - else - { - $embed .= ""; - } - } - - // Flash Media Player file types. - // Preferred handler for MP3 file types. - elseif ($handler == 'fmedia' || ($handler == 'mp3' && $mediaplayer != '')) - { - $height += 20; - if ($native) - { - $embed .= "get_link().'?file_extension=.'.$this->get_extension()) . "&autostart=false&repeat=$loop&showdigits=true&showfsbutton=false\">"; - } - else - { - $embed .= ""; - } - } - - // QuickTime 7 file types. Need to test with QuickTime 6. - // Only handle MP3's if the Flash Media Player is not present. - elseif ($handler == 'quicktime' || ($handler == 'mp3' && $mediaplayer == '')) - { - $height += 16; - if ($native) - { - if ($placeholder != ""){ - $embed .= "get_link() . "\" src=\"$placeholder\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"false\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\">"; - } - else { - $embed .= "get_link() . "\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"true\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\">"; - } - } - else - { - $embed .= ""; - } - } - - // Windows Media - elseif ($handler == 'wmedia') - { - $height += 45; - if ($native) - { - $embed .= "get_link() . "\" autosize=\"1\" width=\"$width\" height=\"$height\" showcontrols=\"1\" showstatusbar=\"0\" showdisplay=\"0\" autostart=\"0\">"; - } - else - { - $embed .= ""; - } - } - - // Everything else - else $embed .= '' . $alt . ''; - - return $embed; - } - - function get_real_type($find_handler = false) - { - // If it's Odeo, let's get it out of the way. - if (substr(strtolower($this->get_link()), 0, 15) == 'http://odeo.com') - { - return 'odeo'; - } - - // Mime-types by handler. - $types_flash = array('application/x-shockwave-flash', 'application/futuresplash'); // Flash - $types_fmedia = array('video/flv', 'video/x-flv','flv-application/octet-stream'); // Flash Media Player - $types_quicktime = array('audio/3gpp', 'audio/3gpp2', 'audio/aac', 'audio/x-aac', 'audio/aiff', 'audio/x-aiff', 'audio/mid', 'audio/midi', 'audio/x-midi', 'audio/mp4', 'audio/m4a', 'audio/x-m4a', 'audio/wav', 'audio/x-wav', 'video/3gpp', 'video/3gpp2', 'video/m4v', 'video/x-m4v', 'video/mp4', 'video/mpeg', 'video/x-mpeg', 'video/quicktime', 'video/sd-video'); // QuickTime - $types_wmedia = array('application/asx', 'application/x-mplayer2', 'audio/x-ms-wma', 'audio/x-ms-wax', 'video/x-ms-asf-plugin', 'video/x-ms-asf', 'video/x-ms-wm', 'video/x-ms-wmv', 'video/x-ms-wvx'); // Windows Media - $types_mp3 = array('audio/mp3', 'audio/x-mp3', 'audio/mpeg', 'audio/x-mpeg'); // MP3 - - if ($this->get_type() !== null) - { - $type = strtolower($this->type); - } - else - { - $type = null; - } - - // If we encounter an unsupported mime-type, check the file extension and guess intelligently. - if (!in_array($type, array_merge($types_flash, $types_fmedia, $types_quicktime, $types_wmedia, $types_mp3))) - { - switch (strtolower($this->get_extension())) - { - // Audio mime-types - case 'aac': - case 'adts': - $type = 'audio/acc'; - break; - - case 'aif': - case 'aifc': - case 'aiff': - case 'cdda': - $type = 'audio/aiff'; - break; - - case 'bwf': - $type = 'audio/wav'; - break; - - case 'kar': - case 'mid': - case 'midi': - case 'smf': - $type = 'audio/midi'; - break; - - case 'm4a': - $type = 'audio/x-m4a'; - break; - - case 'mp3': - case 'swa': - $type = 'audio/mp3'; - break; - - case 'wav': - $type = 'audio/wav'; - break; - - case 'wax': - $type = 'audio/x-ms-wax'; - break; - - case 'wma': - $type = 'audio/x-ms-wma'; - break; - - // Video mime-types - case '3gp': - case '3gpp': - $type = 'video/3gpp'; - break; - - case '3g2': - case '3gp2': - $type = 'video/3gpp2'; - break; - - case 'asf': - $type = 'video/x-ms-asf'; - break; - - case 'flv': - $type = 'video/x-flv'; - break; - - case 'm1a': - case 'm1s': - case 'm1v': - case 'm15': - case 'm75': - case 'mp2': - case 'mpa': - case 'mpeg': - case 'mpg': - case 'mpm': - case 'mpv': - $type = 'video/mpeg'; - break; - - case 'm4v': - $type = 'video/x-m4v'; - break; - - case 'mov': - case 'qt': - $type = 'video/quicktime'; - break; - - case 'mp4': - case 'mpg4': - $type = 'video/mp4'; - break; - - case 'sdv': - $type = 'video/sd-video'; - break; - - case 'wm': - $type = 'video/x-ms-wm'; - break; - - case 'wmv': - $type = 'video/x-ms-wmv'; - break; - - case 'wvx': - $type = 'video/x-ms-wvx'; - break; - - // Flash mime-types - case 'spl': - $type = 'application/futuresplash'; - break; - - case 'swf': - $type = 'application/x-shockwave-flash'; - break; - } - } - - if ($find_handler) - { - if (in_array($type, $types_flash)) - { - return 'flash'; - } - elseif (in_array($type, $types_fmedia)) - { - return 'fmedia'; - } - elseif (in_array($type, $types_quicktime)) - { - return 'quicktime'; - } - elseif (in_array($type, $types_wmedia)) - { - return 'wmedia'; - } - elseif (in_array($type, $types_mp3)) - { - return 'mp3'; - } - else - { - return null; - } - } - else - { - return $type; - } - } -} - -class SimplePie_Caption -{ - var $type; - var $lang; - var $startTime; - var $endTime; - var $text; - - // Constructor, used to input the data - function SimplePie_Caption($type = null, $lang = null, $startTime = null, $endTime = null, $text = null) - { - $this->type = $type; - $this->lang = $lang; - $this->startTime = $startTime; - $this->endTime = $endTime; - $this->text = $text; - } - - function __toString() - { - // There is no $this->data here - return md5(serialize($this)); - } - - function get_endtime() - { - if ($this->endTime !== null) - { - return $this->endTime; - } - else - { - return null; - } - } - - function get_language() - { - if ($this->lang !== null) - { - return $this->lang; - } - else - { - return null; - } - } - - function get_starttime() - { - if ($this->startTime !== null) - { - return $this->startTime; - } - else - { - return null; - } - } - - function get_text() - { - if ($this->text !== null) - { - return $this->text; - } - else - { - return null; - } - } - - function get_type() - { - if ($this->type !== null) - { - return $this->type; - } - else - { - return null; - } - } -} - -class SimplePie_Credit -{ - var $role; - var $scheme; - var $name; - - // Constructor, used to input the data - function SimplePie_Credit($role = null, $scheme = null, $name = null) - { - $this->role = $role; - $this->scheme = $scheme; - $this->name = $name; - } - - function __toString() - { - // There is no $this->data here - return md5(serialize($this)); - } - - function get_role() - { - if ($this->role !== null) - { - return $this->role; - } - else - { - return null; - } - } - - function get_scheme() - { - if ($this->scheme !== null) - { - return $this->scheme; - } - else - { - return null; - } - } - - function get_name() - { - if ($this->name !== null) - { - return $this->name; - } - else - { - return null; - } - } -} - -class SimplePie_Copyright -{ - var $url; - var $label; - - // Constructor, used to input the data - function SimplePie_Copyright($url = null, $label = null) - { - $this->url = $url; - $this->label = $label; - } - - function __toString() - { - // There is no $this->data here - return md5(serialize($this)); - } - - function get_url() - { - if ($this->url !== null) - { - return $this->url; - } - else - { - return null; - } - } - - function get_attribution() - { - if ($this->label !== null) - { - return $this->label; - } - else - { - return null; - } - } -} - -class SimplePie_Rating -{ - var $scheme; - var $value; - - // Constructor, used to input the data - function SimplePie_Rating($scheme = null, $value = null) - { - $this->scheme = $scheme; - $this->value = $value; - } - - function __toString() - { - // There is no $this->data here - return md5(serialize($this)); - } - - function get_scheme() - { - if ($this->scheme !== null) - { - return $this->scheme; - } - else - { - return null; - } - } - - function get_value() - { - if ($this->value !== null) - { - return $this->value; - } - else - { - return null; - } - } -} - -class SimplePie_Restriction -{ - var $relationship; - var $type; - var $value; - - // Constructor, used to input the data - function SimplePie_Restriction($relationship = null, $type = null, $value = null) - { - $this->relationship = $relationship; - $this->type = $type; - $this->value = $value; - } - - function __toString() - { - // There is no $this->data here - return md5(serialize($this)); - } - - function get_relationship() - { - if ($this->relationship !== null) - { - return $this->relationship; - } - else - { - return null; - } - } - - function get_type() - { - if ($this->type !== null) - { - return $this->type; - } - else - { - return null; - } - } - - function get_value() - { - if ($this->value !== null) - { - return $this->value; - } - else - { - return null; - } - } -} - -/** - * @todo Move to properly supporting RFC2616 (HTTP/1.1) - */ -class SimplePie_File -{ - var $url; - var $useragent; - var $success = true; - var $headers = array(); - var $body; - var $status_code; - var $redirects = 0; - var $error; - var $method = SIMPLEPIE_FILE_SOURCE_NONE; - - function SimplePie_File($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false) - { - if (class_exists('idna_convert')) - { - $idn =& new idna_convert; - $parsed = SimplePie_Misc::parse_url($url); - $url = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']); - } - $this->url = $url; - $this->useragent = $useragent; - if (preg_match('/^http(s)?:\/\//i', $url)) - { - if ($useragent === null) - { - $useragent = ini_get('user_agent'); - $this->useragent = $useragent; - } - if (!is_array($headers)) - { - $headers = array(); - } - if (!$force_fsockopen && function_exists('curl_exec')) - { - $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_CURL; - $fp = curl_init(); - $headers2 = array(); - foreach ($headers as $key => $value) - { - $headers2[] = "$key: $value"; - } - if (version_compare(SimplePie_Misc::get_curl_version(), '7.10.5', '>=')) - { - curl_setopt($fp, CURLOPT_ENCODING, ''); - } - curl_setopt($fp, CURLOPT_URL, $url); - curl_setopt($fp, CURLOPT_HEADER, 1); - curl_setopt($fp, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($fp, CURLOPT_TIMEOUT, $timeout); - curl_setopt($fp, CURLOPT_CONNECTTIMEOUT, $timeout); - curl_setopt($fp, CURLOPT_REFERER, $url); - curl_setopt($fp, CURLOPT_USERAGENT, $useragent); - curl_setopt($fp, CURLOPT_HTTPHEADER, $headers2); - if (!ini_get('open_basedir') && !ini_get('safe_mode') && version_compare(SimplePie_Misc::get_curl_version(), '7.15.2', '>=')) - { - curl_setopt($fp, CURLOPT_FOLLOWLOCATION, 1); - curl_setopt($fp, CURLOPT_MAXREDIRS, $redirects); - } - - /* Enable Digest authentication and SSL -fox */ - curl_setopt($fp, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($fp, CURLOPT_HTTPAUTH, CURLAUTH_ANY); - - $this->headers = curl_exec($fp); - if (curl_errno($fp) == 23 || curl_errno($fp) == 61) - { - curl_setopt($fp, CURLOPT_ENCODING, 'none'); - $this->headers = curl_exec($fp); - } - if (curl_errno($fp)) - { - $this->error = 'cURL error ' . curl_errno($fp) . ': ' . curl_error($fp); - $this->success = false; - } - else - { - $info = curl_getinfo($fp); - curl_close($fp); - $this->headers = explode("\r\n\r\n", $this->headers, $info['redirect_count'] + 1); - $this->headers = array_pop($this->headers); - $parser =& new SimplePie_HTTP_Parser($this->headers); - if ($parser->parse()) - { - $this->headers = $parser->headers; - $this->body = $parser->body; - $this->status_code = $parser->status_code; - if (($this->status_code == 300 || $this->status_code == 301 || $this->status_code == 302 || $this->status_code == 303 || $this->status_code == 307 || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects) - { - $this->redirects++; - $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url); - return $this->SimplePie_File($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen); - } - } - } - } - else - { - $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_FSOCKOPEN; - $url_parts = parse_url($url); - if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) == 'https') - { - $url_parts['host'] = "ssl://$url_parts[host]"; - $url_parts['port'] = 443; - } - if (!isset($url_parts['port'])) - { - $url_parts['port'] = 80; - } - $fp = @fsockopen($url_parts['host'], $url_parts['port'], $errno, $errstr, $timeout); - if (!$fp) - { - $this->error = 'fsockopen error: ' . $errstr; - $this->success = false; - } - else - { - stream_set_timeout($fp, $timeout); - if (isset($url_parts['path'])) - { - if (isset($url_parts['query'])) - { - $get = "$url_parts[path]?$url_parts[query]"; - } - else - { - $get = $url_parts['path']; - } - } - else - { - $get = '/'; - } - $out = "GET $get HTTP/1.0\r\n"; - $out .= "Host: $url_parts[host]\r\n"; - $out .= "User-Agent: $useragent\r\n"; - if (extension_loaded('zlib')) - { - $out .= "Accept-Encoding: x-gzip,gzip,deflate\r\n"; - } - - if (isset($url_parts['user']) && isset($url_parts['pass'])) - { - $out .= "Authorization: Basic " . base64_encode("$url_parts[user]:$url_parts[pass]") . "\r\n"; - } - foreach ($headers as $key => $value) - { - $out .= "$key: $value\r\n"; - } - $out .= "Connection: Close\r\n\r\n"; - fwrite($fp, $out); - - $info = stream_get_meta_data($fp); - - $this->headers = ''; - while (!$info['eof'] && !$info['timed_out']) - { - $this->headers .= fread($fp, 1160); - $info = stream_get_meta_data($fp); - } - if (!$info['timed_out']) - { - $parser =& new SimplePie_HTTP_Parser($this->headers); - if ($parser->parse()) - { - $this->headers = $parser->headers; - $this->body = $parser->body; - $this->status_code = $parser->status_code; - if (($this->status_code == 300 || $this->status_code == 301 || $this->status_code == 302 || $this->status_code == 303 || $this->status_code == 307 || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects) - { - $this->redirects++; - $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url); - return $this->SimplePie_File($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen); - } - if (isset($this->headers['content-encoding'])) - { - // Hey, we act dumb elsewhere, so let's do that here too - switch (strtolower(trim($this->headers['content-encoding'], "\x09\x0A\x0D\x20"))) - { - case 'gzip': - case 'x-gzip': - $decoder = new SimplePie_gzdecode($this->body); - if (!$decoder->parse()) - { - $this->error = 'Unable to decode HTTP "gzip" stream'; - $this->success = false; - } - else - { - $this->body = $decoder->data; - } - break; - - case 'deflate': - if (($body = gzuncompress($this->body)) === false) - { - if (($body = gzinflate($this->body)) === false) - { - $this->error = 'Unable to decode HTTP "deflate" stream'; - $this->success = false; - } - } - $this->body = $body; - break; - - default: - $this->error = 'Unknown content coding'; - $this->success = false; - } - } - } - } - else - { - $this->error = 'fsocket timed out'; - $this->success = false; - } - fclose($fp); - } - } - } - else - { - $this->method = SIMPLEPIE_FILE_SOURCE_LOCAL | SIMPLEPIE_FILE_SOURCE_FILE_GET_CONTENTS; - if (!$this->body = file_get_contents($url)) - { - $this->error = 'file_get_contents could not read the file'; - $this->success = false; - } - } - } -} - -/** - * HTTP Response Parser - * - * @package SimplePie - */ -class SimplePie_HTTP_Parser -{ - /** - * HTTP Version - * - * @access public - * @var float - */ - var $http_version = 0.0; - - /** - * Status code - * - * @access public - * @var int - */ - var $status_code = 0; - - /** - * Reason phrase - * - * @access public - * @var string - */ - var $reason = ''; - - /** - * Key/value pairs of the headers - * - * @access public - * @var array - */ - var $headers = array(); - - /** - * Body of the response - * - * @access public - * @var string - */ - var $body = ''; - - /** - * Current state of the state machine - * - * @access private - * @var string - */ - var $state = 'http_version'; - - /** - * Input data - * - * @access private - * @var string - */ - var $data = ''; - - /** - * Input data length (to avoid calling strlen() everytime this is needed) - * - * @access private - * @var int - */ - var $data_length = 0; - - /** - * Current position of the pointer - * - * @var int - * @access private - */ - var $position = 0; - - /** - * Name of the hedaer currently being parsed - * - * @access private - * @var string - */ - var $name = ''; - - /** - * Value of the hedaer currently being parsed - * - * @access private - * @var string - */ - var $value = ''; - - /** - * Create an instance of the class with the input data - * - * @access public - * @param string $data Input data - */ - function SimplePie_HTTP_Parser($data) - { - $this->data = $data; - $this->data_length = strlen($this->data); - } - - /** - * Parse the input data - * - * @access public - * @return bool true on success, false on failure - */ - function parse() - { - while ($this->state && $this->state !== 'emit' && $this->has_data()) - { - $state = $this->state; - $this->$state(); - } - $this->data = ''; - if ($this->state === 'emit' || $this->state === 'body') - { - return true; - } - else - { - $this->http_version = ''; - $this->status_code = ''; - $this->reason = ''; - $this->headers = array(); - $this->body = ''; - return false; - } - } - - /** - * Check whether there is data beyond the pointer - * - * @access private - * @return bool true if there is further data, false if not - */ - function has_data() - { - return (bool) ($this->position < $this->data_length); - } - - /** - * See if the next character is LWS - * - * @access private - * @return bool true if the next character is LWS, false if not - */ - function is_linear_whitespace() - { - return (bool) ($this->data[$this->position] === "\x09" - || $this->data[$this->position] === "\x20" - || ($this->data[$this->position] === "\x0A" - && isset($this->data[$this->position + 1]) - && ($this->data[$this->position + 1] === "\x09" || $this->data[$this->position + 1] === "\x20"))); - } - - /** - * Parse the HTTP version - * - * @access private - */ - function http_version() - { - if (strpos($this->data, "\x0A") !== false && strtoupper(substr($this->data, 0, 5)) === 'HTTP/') - { - $len = strspn($this->data, '0123456789.', 5); - $this->http_version = substr($this->data, 5, $len); - $this->position += 5 + $len; - if (substr_count($this->http_version, '.') <= 1) - { - $this->http_version = (float) $this->http_version; - $this->position += strspn($this->data, "\x09\x20", $this->position); - $this->state = 'status'; - } - else - { - $this->state = false; - } - } - else - { - $this->state = false; - } - } - - /** - * Parse the status code - * - * @access private - */ - function status() - { - if ($len = strspn($this->data, '0123456789', $this->position)) - { - $this->status_code = (int) substr($this->data, $this->position, $len); - $this->position += $len; - $this->state = 'reason'; - } - else - { - $this->state = false; - } - } - - /** - * Parse the reason phrase - * - * @access private - */ - function reason() - { - $len = strcspn($this->data, "\x0A", $this->position); - $this->reason = trim(substr($this->data, $this->position, $len), "\x09\x0D\x20"); - $this->position += $len + 1; - $this->state = 'new_line'; - } - - /** - * Deal with a new line, shifting data around as needed - * - * @access private - */ - function new_line() - { - $this->value = trim($this->value, "\x0D\x20"); - if ($this->name !== '' && $this->value !== '') - { - $this->name = strtolower($this->name); - if (isset($this->headers[$this->name])) - { - $this->headers[$this->name] .= ', ' . $this->value; - } - else - { - $this->headers[$this->name] = $this->value; - } - } - $this->name = ''; - $this->value = ''; - if (substr($this->data[$this->position], 0, 2) === "\x0D\x0A") - { - $this->position += 2; - $this->state = 'body'; - } - elseif ($this->data[$this->position] === "\x0A") - { - $this->position++; - $this->state = 'body'; - } - else - { - $this->state = 'name'; - } - } - - /** - * Parse a header name - * - * @access private - */ - function name() - { - $len = strcspn($this->data, "\x0A:", $this->position); - if (isset($this->data[$this->position + $len])) - { - if ($this->data[$this->position + $len] === "\x0A") - { - $this->position += $len; - $this->state = 'new_line'; - } - else - { - $this->name = substr($this->data, $this->position, $len); - $this->position += $len + 1; - $this->state = 'value'; - } - } - else - { - $this->state = false; - } - } - - /** - * Parse LWS, replacing consecutive LWS characters with a single space - * - * @access private - */ - function linear_whitespace() - { - do - { - if (substr($this->data, $this->position, 2) === "\x0D\x0A") - { - $this->position += 2; - } - elseif ($this->data[$this->position] === "\x0A") - { - $this->position++; - } - $this->position += strspn($this->data, "\x09\x20", $this->position); - } while ($this->has_data() && $this->is_linear_whitespace()); - $this->value .= "\x20"; - } - - /** - * See what state to move to while within non-quoted header values - * - * @access private - */ - function value() - { - if ($this->is_linear_whitespace()) - { - $this->linear_whitespace(); - } - else - { - switch ($this->data[$this->position]) - { - case '"': - $this->position++; - $this->state = 'quote'; - break; - - case "\x0A": - $this->position++; - $this->state = 'new_line'; - break; - - default: - $this->state = 'value_char'; - break; - } - } - } - - /** - * Parse a header value while outside quotes - * - * @access private - */ - function value_char() - { - $len = strcspn($this->data, "\x09\x20\x0A\"", $this->position); - $this->value .= substr($this->data, $this->position, $len); - $this->position += $len; - $this->state = 'value'; - } - - /** - * See what state to move to while within quoted header values - * - * @access private - */ - function quote() - { - if ($this->is_linear_whitespace()) - { - $this->linear_whitespace(); - } - else - { - switch ($this->data[$this->position]) - { - case '"': - $this->position++; - $this->state = 'value'; - break; - - case "\x0A": - $this->position++; - $this->state = 'new_line'; - break; - - case '\\': - $this->position++; - $this->state = 'quote_escaped'; - break; - - default: - $this->state = 'quote_char'; - break; - } - } - } - - /** - * Parse a header value while within quotes - * - * @access private - */ - function quote_char() - { - $len = strcspn($this->data, "\x09\x20\x0A\"\\", $this->position); - $this->value .= substr($this->data, $this->position, $len); - $this->position += $len; - $this->state = 'value'; - } - - /** - * Parse an escaped character within quotes - * - * @access private - */ - function quote_escaped() - { - $this->value .= $this->data[$this->position]; - $this->position++; - $this->state = 'quote'; - } - - /** - * Parse the body - * - * @access private - */ - function body() - { - $this->body = substr($this->data, $this->position); - $this->state = 'emit'; - } -} - -/** - * gzdecode - * - * @package SimplePie - */ -class SimplePie_gzdecode -{ - /** - * Compressed data - * - * @access private - * @see gzdecode::$data - */ - var $compressed_data; - - /** - * Size of compressed data - * - * @access private - */ - var $compressed_size; - - /** - * Minimum size of a valid gzip string - * - * @access private - */ - var $min_compressed_size = 18; - - /** - * Current position of pointer - * - * @access private - */ - var $position = 0; - - /** - * Flags (FLG) - * - * @access private - */ - var $flags; - - /** - * Uncompressed data - * - * @access public - * @see gzdecode::$compressed_data - */ - var $data; - - /** - * Modified time - * - * @access public - */ - var $MTIME; - - /** - * Extra Flags - * - * @access public - */ - var $XFL; - - /** - * Operating System - * - * @access public - */ - var $OS; - - /** - * Subfield ID 1 - * - * @access public - * @see gzdecode::$extra_field - * @see gzdecode::$SI2 - */ - var $SI1; - - /** - * Subfield ID 2 - * - * @access public - * @see gzdecode::$extra_field - * @see gzdecode::$SI1 - */ - var $SI2; - - /** - * Extra field content - * - * @access public - * @see gzdecode::$SI1 - * @see gzdecode::$SI2 - */ - var $extra_field; - - /** - * Original filename - * - * @access public - */ - var $filename; - - /** - * Human readable comment - * - * @access public - */ - var $comment; - - /** - * Don't allow anything to be set - * - * @access public - */ - function __set($name, $value) - { - trigger_error("Cannot write property $name", E_USER_ERROR); - } - - /** - * Set the compressed string and related properties - * - * @access public - */ - function SimplePie_gzdecode($data) - { - $this->compressed_data = $data; - $this->compressed_size = strlen($data); - } - - /** - * Decode the GZIP stream - * - * @access public - */ - function parse() - { - if ($this->compressed_size >= $this->min_compressed_size) - { - // Check ID1, ID2, and CM - if (substr($this->compressed_data, 0, 3) !== "\x1F\x8B\x08") - { - return false; - } - - // Get the FLG (FLaGs) - $this->flags = ord($this->compressed_data[3]); - - // FLG bits above (1 << 4) are reserved - if ($this->flags > 0x1F) - { - return false; - } - - // Advance the pointer after the above - $this->position += 4; - - // MTIME - $mtime = substr($this->compressed_data, $this->position, 4); - // Reverse the string if we're on a big-endian arch because l is the only signed long and is machine endianness - if (current(unpack('S', "\x00\x01")) === 1) - { - $mtime = strrev($mtime); - } - $this->MTIME = current(unpack('l', $mtime)); - $this->position += 4; - - // Get the XFL (eXtra FLags) - $this->XFL = ord($this->compressed_data[$this->position++]); - - // Get the OS (Operating System) - $this->OS = ord($this->compressed_data[$this->position++]); - - // Parse the FEXTRA - if ($this->flags & 4) - { - // Read subfield IDs - $this->SI1 = $this->compressed_data[$this->position++]; - $this->SI2 = $this->compressed_data[$this->position++]; - - // SI2 set to zero is reserved for future use - if ($this->SI2 === "\x00") - { - return false; - } - - // Get the length of the extra field - $len = current(unpack('v', substr($this->compressed_data, $this->position, 2))); - $position += 2; - - // Check the length of the string is still valid - $this->min_compressed_size += $len + 4; - if ($this->compressed_size >= $this->min_compressed_size) - { - // Set the extra field to the given data - $this->extra_field = substr($this->compressed_data, $this->position, $len); - $this->position += $len; - } - else - { - return false; - } - } - - // Parse the FNAME - if ($this->flags & 8) - { - // Get the length of the filename - $len = strspn($this->compressed_data, "\x00", $this->position); - - // Check the length of the string is still valid - $this->min_compressed_size += $len + 1; - if ($this->compressed_size >= $this->min_compressed_size) - { - // Set the original filename to the given string - $this->filename = substr($this->compressed_data, $this->position, $len); - $this->position += $len + 1; - } - else - { - return false; - } - } - - // Parse the FCOMMENT - if ($this->flags & 16) - { - // Get the length of the comment - $len = strspn($this->compressed_data, "\x00", $this->position); - - // Check the length of the string is still valid - $this->min_compressed_size += $len + 1; - if ($this->compressed_size >= $this->min_compressed_size) - { - // Set the original comment to the given string - $this->comment = substr($this->compressed_data, $this->position, $len); - $this->position += $len + 1; - } - else - { - return false; - } - } - - // Parse the FHCRC - if ($this->flags & 2) - { - // Check the length of the string is still valid - $this->min_compressed_size += $len + 2; - if ($this->compressed_size >= $this->min_compressed_size) - { - // Read the CRC - $crc = current(unpack('v', substr($this->compressed_data, $this->position, 2))); - - // Check the CRC matches - if ((crc32(substr($this->compressed_data, 0, $this->position)) & 0xFFFF) === $crc) - { - $this->position += 2; - } - else - { - return false; - } - } - else - { - return false; - } - } - - // Decompress the actual data - if (($this->data = gzinflate(substr($this->compressed_data, $this->position, -8))) === false) - { - return false; - } - else - { - $this->position = $this->compressed_size - 8; - } - - // Check CRC of data - $crc = current(unpack('V', substr($this->compressed_data, $this->position, 4))); - $this->position += 4; - /*if (extension_loaded('hash') && sprintf('%u', current(unpack('V', hash('crc32b', $this->data)))) !== sprintf('%u', $crc)) - { - return false; - }*/ - - // Check ISIZE of data - $isize = current(unpack('V', substr($this->compressed_data, $this->position, 4))); - $this->position += 4; - if (sprintf('%u', strlen($this->data) & 0xFFFFFFFF) !== sprintf('%u', $isize)) - { - return false; - } - - // Wow, against all odds, we've actually got a valid gzip string - return true; - } - else - { - return false; - } - } -} - -class SimplePie_Cache -{ - /** - * Don't call the constructor. Please. - * - * @access private - */ - function SimplePie_Cache() - { - trigger_error('Please call SimplePie_Cache::create() instead of the constructor', E_USER_ERROR); - } - - /** - * Create a new SimplePie_Cache object - * - * @static - * @access public - */ - function create($location, $filename, $extension) - { - return new SimplePie_Cache_File($location, $filename, $extension); - } -} - -class SimplePie_Cache_File -{ - var $location; - var $filename; - var $extension; - var $name; - - function SimplePie_Cache_File($location, $filename, $extension) - { - $this->location = $location; - $this->filename = rawurlencode($filename); - $this->extension = rawurlencode($extension); - $this->name = "$location/$this->filename.$this->extension"; - } - - function save($data) - { - if (file_exists($this->name) && is_writeable($this->name) || file_exists($this->location) && is_writeable($this->location)) - { - if (is_a($data, 'SimplePie')) - { - $data = $data->data; - } - - $data = serialize($data); - - if (function_exists('file_put_contents')) - { - return (bool) file_put_contents($this->name, $data); - } - else - { - $fp = fopen($this->name, 'wb'); - if ($fp) - { - fwrite($fp, $data); - fclose($fp); - return true; - } - } - } - return false; - } - - function load() - { - if (file_exists($this->name) && is_readable($this->name)) - { - return unserialize(file_get_contents($this->name)); - } - return false; - } - - function mtime() - { - if (file_exists($this->name)) - { - return filemtime($this->name); - } - return false; - } - - function touch() - { - if (file_exists($this->name)) - { - return touch($this->name); - } - return false; - } - - function unlink() - { - if (file_exists($this->name)) - { - return unlink($this->name); - } - return false; - } -} - -class SimplePie_Misc -{ - function time_hms($seconds) - { - $time = ''; - - $hours = floor($seconds / 3600); - $remainder = $seconds % 3600; - if ($hours > 0) - { - $time .= $hours.':'; - } - - $minutes = floor($remainder / 60); - $seconds = $remainder % 60; - if ($minutes < 10 && $hours > 0) - { - $minutes = '0' . $minutes; - } - if ($seconds < 10) - { - $seconds = '0' . $seconds; - } - - $time .= $minutes.':'; - $time .= $seconds; - - return $time; - } - - function absolutize_url($relative, $base) - { - if ($relative !== '') - { - $relative = SimplePie_Misc::parse_url($relative); - if ($relative['scheme'] !== '') - { - $target = $relative; - } - elseif ($base !== '') - { - $base = SimplePie_Misc::parse_url($base); - $target = SimplePie_Misc::parse_url(''); - if ($relative['authority'] !== '') - { - $target = $relative; - $target['scheme'] = $base['scheme']; - } - else - { - $target['scheme'] = $base['scheme']; - $target['authority'] = $base['authority']; - if ($relative['path'] !== '') - { - if (strpos($relative['path'], '/') === 0) - { - $target['path'] = $relative['path']; - } - elseif ($base['authority'] !== '' && $base['path'] === '') - { - $target['path'] = '/' . $relative['path']; - } - elseif (($last_segment = strrpos($base['path'], '/')) !== false) - { - $target['path'] = substr($base['path'], 0, $last_segment + 1) . $relative['path']; - } - else - { - $target['path'] = $relative['path']; - } - $target['query'] = $relative['query']; - } - else - { - $target['path'] = $base['path']; - if ($relative['query'] !== '') - { - $target['query'] = $relative['query']; - } - elseif ($base['query'] !== '') - { - $target['query'] = $base['query']; - } - } - } - $target['fragment'] = $relative['fragment']; - } - else - { - // No base URL, just return the relative URL - $target = $relative; - } - $return = SimplePie_Misc::compress_parse_url($target['scheme'], $target['authority'], $target['path'], $target['query'], $target['fragment']); - } - else - { - $return = $base; - } - $return = SimplePie_Misc::normalize_url($return); - return $return; - } - - function remove_dot_segments($input) - { - $output = ''; - while (strpos($input, './') !== false || strpos($input, '/.') !== false || $input == '.' || $input == '..') - { - // A: If the input buffer begins with a prefix of "../" or "./", then remove that prefix from the input buffer; otherwise, - if (strpos($input, '../') === 0) - { - $input = substr($input, 3); - } - elseif (strpos($input, './') === 0) - { - $input = substr($input, 2); - } - // B: if the input buffer begins with a prefix of "/./" or "/.", where "." is a complete path segment, then replace that prefix with "/" in the input buffer; otherwise, - elseif (strpos($input, '/./') === 0) - { - $input = substr_replace($input, '/', 0, 3); - } - elseif ($input == '/.') - { - $input = '/'; - } - // C: if the input buffer begins with a prefix of "/../" or "/..", where ".." is a complete path segment, then replace that prefix with "/" in the input buffer and remove the last segment and its preceding "/" (if any) from the output buffer; otherwise, - elseif (strpos($input, '/../') === 0) - { - $input = substr_replace($input, '/', 0, 4); - $output = substr_replace($output, '', strrpos($output, '/')); - } - elseif ($input == '/..') - { - $input = '/'; - $output = substr_replace($output, '', strrpos($output, '/')); - } - // D: if the input buffer consists only of "." or "..", then remove that from the input buffer; otherwise, - elseif ($input == '.' || $input == '..') - { - $input = ''; - } - // E: move the first path segment in the input buffer to the end of the output buffer, including the initial "/" character (if any) and any subsequent characters up to, but not including, the next "/" character or the end of the input buffer - elseif (($pos = strpos($input, '/', 1)) !== false) - { - $output .= substr($input, 0, $pos); - $input = substr_replace($input, '', 0, $pos); - } - else - { - $output .= $input; - $input = ''; - } - } - return $output . $input; - } - - function get_element($realname, $string) - { - $return = array(); - $name = preg_quote($realname, '/'); - if (preg_match_all("/<($name)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$name>|(\/)?>)/siU", $string, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) - { - for ($i = 0, $total_matches = count($matches); $i < $total_matches; $i++) - { - $return[$i]['tag'] = $realname; - $return[$i]['full'] = $matches[$i][0][0]; - $return[$i]['offset'] = $matches[$i][0][1]; - if (strlen($matches[$i][3][0]) <= 2) - { - $return[$i]['self_closing'] = true; - } - else - { - $return[$i]['self_closing'] = false; - $return[$i]['content'] = $matches[$i][4][0]; - } - $return[$i]['attribs'] = array(); - if (isset($matches[$i][2][0]) && preg_match_all('/[\x09\x0A\x0B\x0C\x0D\x20]+([^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3D\x3E]*)(?:[\x09\x0A\x0B\x0C\x0D\x20]*=[\x09\x0A\x0B\x0C\x0D\x20]*(?:"([^"]*)"|\'([^\']*)\'|([^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?/', ' ' . $matches[$i][2][0] . ' ', $attribs, PREG_SET_ORDER)) - { - for ($j = 0, $total_attribs = count($attribs); $j < $total_attribs; $j++) - { - if (count($attribs[$j]) == 2) - { - $attribs[$j][2] = $attribs[$j][1]; - } - $return[$i]['attribs'][strtolower($attribs[$j][1])]['data'] = SimplePie_Misc::entities_decode(end($attribs[$j]), 'UTF-8'); - } - } - } - } - return $return; - } - - function element_implode($element) - { - $full = "<$element[tag]"; - foreach ($element['attribs'] as $key => $value) - { - $key = strtolower($key); - $full .= " $key=\"" . htmlspecialchars($value['data']) . '"'; - } - if ($element['self_closing']) - { - $full .= ' />'; - } - else - { - $full .= ">$element[content]"; - } - return $full; - } - - function error($message, $level, $file, $line) - { - switch ($level) - { - case E_USER_ERROR: - $note = 'PHP Error'; - break; - case E_USER_WARNING: - $note = 'PHP Warning'; - break; - case E_USER_NOTICE: - $note = 'PHP Notice'; - break; - default: - $note = 'Unknown Error'; - break; - } - error_log("$note: $message in $file on line $line", 0); - return $message; - } - - /** - * If a file has been cached, retrieve and display it. - * - * This is most useful for caching images (get_favicon(), etc.), - * however it works for all cached files. This WILL NOT display ANY - * file/image/page/whatever, but rather only display what has already - * been cached by SimplePie. - * - * @access public - * @see SimplePie::get_favicon() - * @param str $identifier_url URL that is used to identify the content. - * This may or may not be the actual URL of the live content. - * @param str $cache_location Location of SimplePie's cache. Defaults - * to './cache'. - * @param str $cache_extension The file extension that the file was - * cached with. Defaults to 'spc'. - * @param str $cache_class Name of the cache-handling class being used - * in SimplePie. Defaults to 'SimplePie_Cache', and should be left - * as-is unless you've overloaded the class. - * @param str $cache_name_function Obsolete. Exists for backwards - * compatibility reasons only. - */ - function display_cached_file($identifier_url, $cache_location = './cache', $cache_extension = 'spc', $cache_class = 'SimplePie_Cache', $cache_name_function = 'md5') - { - $cache = call_user_func(array($cache_class, 'create'), $cache_location, $identifier_url, $cache_extension); - - if ($file = $cache->load()) - { - if (isset($file['headers']['content-type'])) - { - header('Content-type:' . $file['headers']['content-type']); - } - else - { - header('Content-type: application/octet-stream'); - } - header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days - echo $file['body']; - exit; - } - - die('Cached file for ' . $identifier_url . ' cannot be found.'); - } - - function fix_protocol($url, $http = 1) - { - $url = SimplePie_Misc::normalize_url($url); - $parsed = SimplePie_Misc::parse_url($url); - if ($parsed['scheme'] !== '' && $parsed['scheme'] != 'http' && $parsed['scheme'] != 'https') - { - return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['authority'], $parsed['path'], $parsed['query'], $parsed['fragment']), $http); - } - - if ($parsed['scheme'] === '' && $parsed['authority'] === '' && !file_exists($url)) - { - return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['path'], '', $parsed['query'], $parsed['fragment']), $http); - } - - if ($http == 2 && $parsed['scheme'] !== '') - { - return "feed:$url"; - } - elseif ($http == 3 && strtolower($parsed['scheme']) == 'http') - { - return substr_replace($url, 'podcast', 0, 4); - } - elseif ($http == 4 && strtolower($parsed['scheme']) == 'http') - { - return substr_replace($url, 'itpc', 0, 4); - } - else - { - return $url; - } - } - - function parse_url($url) - { - static $cache = array(); - if (isset($cache[$url])) - { - return $cache[$url]; - } - elseif (preg_match('/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/', $url, $match)) - { - for ($i = count($match); $i <= 9; $i++) - { - $match[$i] = ''; - } - return $cache[$url] = array('scheme' => $match[2], 'authority' => $match[4], 'path' => $match[5], 'query' => $match[7], 'fragment' => $match[9]); - } - else - { - return $cache[$url] = array('scheme' => '', 'authority' => '', 'path' => '', 'query' => '', 'fragment' => ''); - } - } - - function compress_parse_url($scheme = '', $authority = '', $path = '', $query = '', $fragment = '') - { - $return = ''; - if ($scheme !== '') - { - $return .= "$scheme:"; - } - if ($authority !== '') - { - $return .= "//$authority"; - } - if ($path !== '') - { - $return .= $path; - } - if ($query !== '') - { - $return .= "?$query"; - } - if ($fragment !== '') - { - $return .= "#$fragment"; - } - return $return; - } - - function normalize_url($url) - { - $url = preg_replace_callback('/%([0-9A-Fa-f]{2})/', array('SimplePie_Misc', 'percent_encoding_normalization'), $url); - $url = SimplePie_Misc::parse_url($url); - $url['scheme'] = strtolower($url['scheme']); - if ($url['authority'] !== '') - { -// $url['authority'] = strtolower($url['authority']); (tt-rss: remove as per #238) - $url['path'] = SimplePie_Misc::remove_dot_segments($url['path']); - } - return SimplePie_Misc::compress_parse_url($url['scheme'], $url['authority'], $url['path'], $url['query'], $url['fragment']); - } - - function percent_encoding_normalization($match) - { - $integer = hexdec($match[1]); - if ($integer >= 0x41 && $integer <= 0x5A || $integer >= 0x61 && $integer <= 0x7A || $integer >= 0x30 && $integer <= 0x39 || $integer == 0x2D || $integer == 0x2E || $integer == 0x5F || $integer == 0x7E) - { - return chr($integer); - } - else - { - return strtoupper($match[0]); - } - } - - /** - * Remove bad UTF-8 bytes - * - * PCRE Pattern to locate bad bytes in a UTF-8 string comes from W3C - * FAQ: Multilingual Forms (modified to include full ASCII range) - * - * @author Geoffrey Sneddon - * @see http://www.w3.org/International/questions/qa-forms-utf-8 - * @param string $str String to remove bad UTF-8 bytes from - * @return string UTF-8 string - */ - function utf8_bad_replace($str) - { - if (function_exists('iconv') && ($return = @iconv('UTF-8', 'UTF-8//IGNORE', $str))) - { - return $return; - } - elseif (function_exists('mb_convert_encoding') && ($return = @mb_convert_encoding($str, 'UTF-8', 'UTF-8'))) - { - return $return; - } - elseif (preg_match_all('/(?:[\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})+/', $str, $matches)) - { - return implode("\xEF\xBF\xBD", $matches[0]); - } - elseif ($str !== '') - { - return "\xEF\xBF\xBD"; - } - else - { - return ''; - } - } - - /** - * Converts a Windows-1252 encoded string to a UTF-8 encoded string - * - * @static - * @access public - * @param string $string Windows-1252 encoded string - * @return string UTF-8 encoded string - */ - function windows_1252_to_utf8($string) - { - static $convert_table = array("\x80" => "\xE2\x82\xAC", "\x81" => "\xEF\xBF\xBD", "\x82" => "\xE2\x80\x9A", "\x83" => "\xC6\x92", "\x84" => "\xE2\x80\x9E", "\x85" => "\xE2\x80\xA6", "\x86" => "\xE2\x80\xA0", "\x87" => "\xE2\x80\xA1", "\x88" => "\xCB\x86", "\x89" => "\xE2\x80\xB0", "\x8A" => "\xC5\xA0", "\x8B" => "\xE2\x80\xB9", "\x8C" => "\xC5\x92", "\x8D" => "\xEF\xBF\xBD", "\x8E" => "\xC5\xBD", "\x8F" => "\xEF\xBF\xBD", "\x90" => "\xEF\xBF\xBD", "\x91" => "\xE2\x80\x98", "\x92" => "\xE2\x80\x99", "\x93" => "\xE2\x80\x9C", "\x94" => "\xE2\x80\x9D", "\x95" => "\xE2\x80\xA2", "\x96" => "\xE2\x80\x93", "\x97" => "\xE2\x80\x94", "\x98" => "\xCB\x9C", "\x99" => "\xE2\x84\xA2", "\x9A" => "\xC5\xA1", "\x9B" => "\xE2\x80\xBA", "\x9C" => "\xC5\x93", "\x9D" => "\xEF\xBF\xBD", "\x9E" => "\xC5\xBE", "\x9F" => "\xC5\xB8", "\xA0" => "\xC2\xA0", "\xA1" => "\xC2\xA1", "\xA2" => "\xC2\xA2", "\xA3" => "\xC2\xA3", "\xA4" => "\xC2\xA4", "\xA5" => "\xC2\xA5", "\xA6" => "\xC2\xA6", "\xA7" => "\xC2\xA7", "\xA8" => "\xC2\xA8", "\xA9" => "\xC2\xA9", "\xAA" => "\xC2\xAA", "\xAB" => "\xC2\xAB", "\xAC" => "\xC2\xAC", "\xAD" => "\xC2\xAD", "\xAE" => "\xC2\xAE", "\xAF" => "\xC2\xAF", "\xB0" => "\xC2\xB0", "\xB1" => "\xC2\xB1", "\xB2" => "\xC2\xB2", "\xB3" => "\xC2\xB3", "\xB4" => "\xC2\xB4", "\xB5" => "\xC2\xB5", "\xB6" => "\xC2\xB6", "\xB7" => "\xC2\xB7", "\xB8" => "\xC2\xB8", "\xB9" => "\xC2\xB9", "\xBA" => "\xC2\xBA", "\xBB" => "\xC2\xBB", "\xBC" => "\xC2\xBC", "\xBD" => "\xC2\xBD", "\xBE" => "\xC2\xBE", "\xBF" => "\xC2\xBF", "\xC0" => "\xC3\x80", "\xC1" => "\xC3\x81", "\xC2" => "\xC3\x82", "\xC3" => "\xC3\x83", "\xC4" => "\xC3\x84", "\xC5" => "\xC3\x85", "\xC6" => "\xC3\x86", "\xC7" => "\xC3\x87", "\xC8" => "\xC3\x88", "\xC9" => "\xC3\x89", "\xCA" => "\xC3\x8A", "\xCB" => "\xC3\x8B", "\xCC" => "\xC3\x8C", "\xCD" => "\xC3\x8D", "\xCE" => "\xC3\x8E", "\xCF" => "\xC3\x8F", "\xD0" => "\xC3\x90", "\xD1" => "\xC3\x91", "\xD2" => "\xC3\x92", "\xD3" => "\xC3\x93", "\xD4" => "\xC3\x94", "\xD5" => "\xC3\x95", "\xD6" => "\xC3\x96", "\xD7" => "\xC3\x97", "\xD8" => "\xC3\x98", "\xD9" => "\xC3\x99", "\xDA" => "\xC3\x9A", "\xDB" => "\xC3\x9B", "\xDC" => "\xC3\x9C", "\xDD" => "\xC3\x9D", "\xDE" => "\xC3\x9E", "\xDF" => "\xC3\x9F", "\xE0" => "\xC3\xA0", "\xE1" => "\xC3\xA1", "\xE2" => "\xC3\xA2", "\xE3" => "\xC3\xA3", "\xE4" => "\xC3\xA4", "\xE5" => "\xC3\xA5", "\xE6" => "\xC3\xA6", "\xE7" => "\xC3\xA7", "\xE8" => "\xC3\xA8", "\xE9" => "\xC3\xA9", "\xEA" => "\xC3\xAA", "\xEB" => "\xC3\xAB", "\xEC" => "\xC3\xAC", "\xED" => "\xC3\xAD", "\xEE" => "\xC3\xAE", "\xEF" => "\xC3\xAF", "\xF0" => "\xC3\xB0", "\xF1" => "\xC3\xB1", "\xF2" => "\xC3\xB2", "\xF3" => "\xC3\xB3", "\xF4" => "\xC3\xB4", "\xF5" => "\xC3\xB5", "\xF6" => "\xC3\xB6", "\xF7" => "\xC3\xB7", "\xF8" => "\xC3\xB8", "\xF9" => "\xC3\xB9", "\xFA" => "\xC3\xBA", "\xFB" => "\xC3\xBB", "\xFC" => "\xC3\xBC", "\xFD" => "\xC3\xBD", "\xFE" => "\xC3\xBE", "\xFF" => "\xC3\xBF"); - - return strtr($string, $convert_table); - } - - function change_encoding($data, $input, $output) - { - $input = SimplePie_Misc::encoding($input); - $output = SimplePie_Misc::encoding($output); - - // We fail to fail on non US-ASCII bytes - if ($input === 'US-ASCII') - { - static $non_ascii_octects = ''; - if (!$non_ascii_octects) - { - for ($i = 0x80; $i <= 0xFF; $i++) - { - $non_ascii_octects .= chr($i); - } - } - $data = substr($data, 0, strcspn($data, $non_ascii_octects)); - } - - // This is first, as behaviour of this is completely predictable - if ($input === 'Windows-1252' && $output === 'UTF-8') - { - return SimplePie_Misc::windows_1252_to_utf8($data); - } - // This is second, as behaviour of this varies only with PHP version - elseif (function_exists('mb_convert_encoding') && ($return = @mb_convert_encoding($data, $output, $input))) - { - return $return; - } - // This is last, as behaviour of this varies with OS userland and PHP version - elseif (function_exists('iconv') && ($return = @iconv($input, $output, $data))) - { - return $return; - } - // If we can't do anything, just fail - else - { - return false; - } - } - - function encoding($charset) - { - /* Character sets are case-insensitive, and also need some further - normalization in the real world (though we'll return them in the form given - in their registration). */ - switch (strtolower(preg_replace('/[\x09-\x0D\x20-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]/', '', $charset))) - { - case 'adobestandardencoding': - case 'csadobestandardencoding': - return 'Adobe-Standard-Encoding'; - - case 'adobesymbolencoding': - case 'cshppsmath': - return 'Adobe-Symbol-Encoding'; - - case 'ami1251': - case 'ami1251': - case 'amiga1251': - case 'amiga1251': - return 'Amiga-1251'; - - case 'ansix31101983': - case 'csat5001983': - case 'csiso99naplps': - case 'isoir99': - case 'naplps': - return 'ANSI_X3.110-1983'; - - case 'arabic7': - case 'asmo449': - case 'csiso89asmo449': - case 'isoir89': - case 'iso9036': - return 'ASMO_449'; - - case 'big5': - case 'csbig5': - case 'xxbig5': - return 'Big5'; - - case 'big5hkscs': - return 'Big5-HKSCS'; - - case 'bocu1': - case 'csbocu1': - return 'BOCU-1'; - - case 'brf': - case 'csbrf': - return 'BRF'; - - case 'bs4730': - case 'csiso4unitedkingdom': - case 'gb': - case 'isoir4': - case 'iso646gb': - case 'uk': - return 'BS_4730'; - - case 'bsviewdata': - case 'csiso47bsviewdata': - case 'isoir47': - return 'BS_viewdata'; - - case 'cesu8': - case 'cscesu8': - return 'CESU-8'; - - case 'ca': - case 'csa71': - case 'csaz243419851': - case 'csiso121canadian1': - case 'isoir121': - case 'iso646ca': - return 'CSA_Z243.4-1985-1'; - - case 'csa72': - case 'csaz243419852': - case 'csiso122canadian2': - case 'isoir122': - case 'iso646ca2': - return 'CSA_Z243.4-1985-2'; - - case 'csaz24341985gr': - case 'csiso123csaz24341985gr': - case 'isoir123': - return 'CSA_Z243.4-1985-gr'; - - case 'csiso139csn369103': - case 'csn369103': - case 'isoir139': - return 'CSN_369103'; - - case 'csdecmcs': - case 'dec': - case 'decmcs': - return 'DEC-MCS'; - - case 'csiso21german': - case 'de': - case 'din66003': - case 'isoir21': - case 'iso646de': - return 'DIN_66003'; - - case 'csdkus': - case 'dkus': - return 'dk-us'; - - case 'csiso646danish': - case 'dk': - case 'ds2089': - case 'ds2089': - case 'iso646dk': - return 'DS_2089'; - - case 'csibmebcdicatde': - case 'ebcdicatde': - return 'EBCDIC-AT-DE'; - - case 'csebcdicatdea': - case 'ebcdicatdea': - return 'EBCDIC-AT-DE-A'; - - case 'csebcdiccafr': - case 'ebcdiccafr': - return 'EBCDIC-CA-FR'; - - case 'csebcdicdkno': - case 'ebcdicdkno': - return 'EBCDIC-DK-NO'; - - case 'csebcdicdknoa': - case 'ebcdicdknoa': - return 'EBCDIC-DK-NO-A'; - - case 'csebcdices': - case 'ebcdices': - return 'EBCDIC-ES'; - - case 'csebcdicesa': - case 'ebcdicesa': - return 'EBCDIC-ES-A'; - - case 'csebcdicess': - case 'ebcdicess': - return 'EBCDIC-ES-S'; - - case 'csebcdicfise': - case 'ebcdicfise': - return 'EBCDIC-FI-SE'; - - case 'csebcdicfisea': - case 'ebcdicfisea': - return 'EBCDIC-FI-SE-A'; - - case 'csebcdicfr': - case 'ebcdicfr': - return 'EBCDIC-FR'; - - case 'csebcdicit': - case 'ebcdicit': - return 'EBCDIC-IT'; - - case 'csebcdicpt': - case 'ebcdicpt': - return 'EBCDIC-PT'; - - case 'csebcdicuk': - case 'ebcdicuk': - return 'EBCDIC-UK'; - - case 'csebcdicus': - case 'ebcdicus': - return 'EBCDIC-US'; - - case 'csiso111ecmacyrillic': - case 'ecmacyrillic': - case 'isoir111': - case 'koi8e': - return 'ECMA-cyrillic'; - - case 'csiso17spanish': - case 'es': - case 'isoir17': - case 'iso646es': - return 'ES'; - - case 'csiso85spanish2': - case 'es2': - case 'isoir85': - case 'iso646es2': - return 'ES2'; - - case 'cseucfixwidjapanese': - case 'extendedunixcodefixedwidthforjapanese': - return 'Extended_UNIX_Code_Fixed_Width_for_Japanese'; - - case 'cseucpkdfmtjapanese': - case 'eucjp': - case 'extendedunixcodepackedformatforjapanese': - return 'Extended_UNIX_Code_Packed_Format_for_Japanese'; - - case 'gb18030': - return 'GB18030'; - - case 'cp936': - case 'gbk': - case 'ms936': - case 'windows936': - case 'csgb2312': - case 'gb2312': - case 'chinese': - case 'csiso58gb231280': - case 'gb231280': - case 'isoir58': - return 'GBK'; - - case 'cn': - case 'csiso57gb1988': - case 'gb198880': - case 'isoir57': - case 'iso646cn': - return 'GB_1988-80'; - - case 'csiso153gost1976874': - case 'gost1976874': - case 'isoir153': - case 'stsev35888': - return 'GOST_19768-74'; - - case 'csiso150': - case 'csiso150greekccitt': - case 'greekccitt': - case 'isoir150': - return 'greek-ccitt'; - - case 'csiso88greek7': - case 'greek7': - case 'isoir88': - return 'greek7'; - - case 'csiso18greek7old': - case 'greek7old': - case 'isoir18': - return 'greek7-old'; - - case 'cshpdesktop': - case 'hpdesktop': - return 'HP-DeskTop'; - - case 'cshplegal': - case 'hplegal': - return 'HP-Legal'; - - case 'cshpmath8': - case 'hpmath8': - return 'HP-Math8'; - - case 'cshppifont': - case 'hppifont': - return 'HP-Pi-font'; - - case 'cshproman8': - case 'hproman8': - case 'r8': - case 'roman8': - return 'hp-roman8'; - - case 'hzgb2312': - return 'HZ-GB-2312'; - - case 'csibmsymbols': - case 'ibmsymbols': - return 'IBM-Symbols'; - - case 'csibmthai': - case 'ibmthai': - return 'IBM-Thai'; - - case 'ccsid00858': - case 'cp00858': - case 'ibm00858': - case 'pcmultilingual850euro': - return 'IBM00858'; - - case 'ccsid00924': - case 'cp00924': - case 'ebcdiclatin9euro': - case 'ibm00924': - return 'IBM00924'; - - case 'ccsid01140': - case 'cp01140': - case 'ebcdicus37euro': - case 'ibm01140': - return 'IBM01140'; - - case 'ccsid01141': - case 'cp01141': - case 'ebcdicde273euro': - case 'ibm01141': - return 'IBM01141'; - - case 'ccsid01142': - case 'cp01142': - case 'ebcdicdk277euro': - case 'ebcdicno277euro': - case 'ibm01142': - return 'IBM01142'; - - case 'ccsid01143': - case 'cp01143': - case 'ebcdicfi278euro': - case 'ebcdicse278euro': - case 'ibm01143': - return 'IBM01143'; - - case 'ccsid01144': - case 'cp01144': - case 'ebcdicit280euro': - case 'ibm01144': - return 'IBM01144'; - - case 'ccsid01145': - case 'cp01145': - case 'ebcdices284euro': - case 'ibm01145': - return 'IBM01145'; - - case 'ccsid01146': - case 'cp01146': - case 'ebcdicgb285euro': - case 'ibm01146': - return 'IBM01146'; - - case 'ccsid01147': - case 'cp01147': - case 'ebcdicfr297euro': - case 'ibm01147': - return 'IBM01147'; - - case 'ccsid01148': - case 'cp01148': - case 'ebcdicinternational500euro': - case 'ibm01148': - return 'IBM01148'; - - case 'ccsid01149': - case 'cp01149': - case 'ebcdicis871euro': - case 'ibm01149': - return 'IBM01149'; - - case 'cp037': - case 'csibm037': - case 'ebcdiccpca': - case 'ebcdiccpnl': - case 'ebcdiccpus': - case 'ebcdiccpwt': - case 'ibm037': - return 'IBM037'; - - case 'cp038': - case 'csibm038': - case 'ebcdicint': - case 'ibm038': - return 'IBM038'; - - case 'cp273': - case 'csibm273': - case 'ibm273': - return 'IBM273'; - - case 'cp274': - case 'csibm274': - case 'ebcdicbe': - case 'ibm274': - return 'IBM274'; - - case 'cp275': - case 'csibm275': - case 'ebcdicbr': - case 'ibm275': - return 'IBM275'; - - case 'csibm277': - case 'ebcdiccpdk': - case 'ebcdiccpno': - case 'ibm277': - return 'IBM277'; - - case 'cp278': - case 'csibm278': - case 'ebcdiccpfi': - case 'ebcdiccpse': - case 'ibm278': - return 'IBM278'; - - case 'cp280': - case 'csibm280': - case 'ebcdiccpit': - case 'ibm280': - return 'IBM280'; - - case 'cp281': - case 'csibm281': - case 'ebcdicjpe': - case 'ibm281': - return 'IBM281'; - - case 'cp284': - case 'csibm284': - case 'ebcdiccpes': - case 'ibm284': - return 'IBM284'; - - case 'cp285': - case 'csibm285': - case 'ebcdiccpgb': - case 'ibm285': - return 'IBM285'; - - case 'cp290': - case 'csibm290': - case 'ebcdicjpkana': - case 'ibm290': - return 'IBM290'; - - case 'cp297': - case 'csibm297': - case 'ebcdiccpfr': - case 'ibm297': - return 'IBM297'; - - case 'cp420': - case 'csibm420': - case 'ebcdiccpar1': - case 'ibm420': - return 'IBM420'; - - case 'cp423': - case 'csibm423': - case 'ebcdiccpgr': - case 'ibm423': - return 'IBM423'; - - case 'cp424': - case 'csibm424': - case 'ebcdiccphe': - case 'ibm424': - return 'IBM424'; - - case '437': - case 'cp437': - case 'cspc8codepage437': - case 'ibm437': - return 'IBM437'; - - case 'cp500': - case 'csibm500': - case 'ebcdiccpbe': - case 'ebcdiccpch': - case 'ibm500': - return 'IBM500'; - - case 'cp775': - case 'cspc775baltic': - case 'ibm775': - return 'IBM775'; - - case '850': - case 'cp850': - case 'cspc850multilingual': - case 'ibm850': - return 'IBM850'; - - case '851': - case 'cp851': - case 'csibm851': - case 'ibm851': - return 'IBM851'; - - case '852': - case 'cp852': - case 'cspcp852': - case 'ibm852': - return 'IBM852'; - - case '855': - case 'cp855': - case 'csibm855': - case 'ibm855': - return 'IBM855'; - - case '857': - case 'cp857': - case 'csibm857': - case 'ibm857': - return 'IBM857'; - - case '860': - case 'cp860': - case 'csibm860': - case 'ibm860': - return 'IBM860'; - - case '861': - case 'cpis': - case 'cp861': - case 'csibm861': - case 'ibm861': - return 'IBM861'; - - case '862': - case 'cp862': - case 'cspc862latinhebrew': - case 'ibm862': - return 'IBM862'; - - case '863': - case 'cp863': - case 'csibm863': - case 'ibm863': - return 'IBM863'; - - case 'cp864': - case 'csibm864': - case 'ibm864': - return 'IBM864'; - - case '865': - case 'cp865': - case 'csibm865': - case 'ibm865': - return 'IBM865'; - - case '866': - case 'cp866': - case 'csibm866': - case 'ibm866': - return 'IBM866'; - - case 'cpar': - case 'cp868': - case 'csibm868': - case 'ibm868': - return 'IBM868'; - - case '869': - case 'cpgr': - case 'cp869': - case 'csibm869': - case 'ibm869': - return 'IBM869'; - - case 'cp870': - case 'csibm870': - case 'ebcdiccproece': - case 'ebcdiccpyu': - case 'ibm870': - return 'IBM870'; - - case 'cp871': - case 'csibm871': - case 'ebcdiccpis': - case 'ibm871': - return 'IBM871'; - - case 'cp880': - case 'csibm880': - case 'ebcdiccyrillic': - case 'ibm880': - return 'IBM880'; - - case 'cp891': - case 'csibm891': - case 'ibm891': - return 'IBM891'; - - case 'cp903': - case 'csibm903': - case 'ibm903': - return 'IBM903'; - - case '904': - case 'cp904': - case 'csibbm904': - case 'ibm904': - return 'IBM904'; - - case 'cp905': - case 'csibm905': - case 'ebcdiccptr': - case 'ibm905': - return 'IBM905'; - - case 'cp918': - case 'csibm918': - case 'ebcdiccpar2': - case 'ibm918': - return 'IBM918'; - - case 'cp1026': - case 'csibm1026': - case 'ibm1026': - return 'IBM1026'; - - case 'ibm1047': - case 'ibm1047': - return 'IBM1047'; - - case 'csiso143iecp271': - case 'iecp271': - case 'isoir143': - return 'IEC_P27-1'; - - case 'csiso49inis': - case 'inis': - case 'isoir49': - return 'INIS'; - - case 'csiso50inis8': - case 'inis8': - case 'isoir50': - return 'INIS-8'; - - case 'csiso51iniscyrillic': - case 'iniscyrillic': - case 'isoir51': - return 'INIS-cyrillic'; - - case 'csinvariant': - case 'invariant': - return 'INVARIANT'; - - case 'iso2022cn': - return 'ISO-2022-CN'; - - case 'iso2022cnext': - return 'ISO-2022-CN-EXT'; - - case 'csiso2022jp': - case 'iso2022jp': - return 'ISO-2022-JP'; - - case 'csiso2022jp2': - case 'iso2022jp2': - return 'ISO-2022-JP-2'; - - case 'csiso2022kr': - case 'iso2022kr': - return 'ISO-2022-KR'; - - case 'cswindows30latin1': - case 'iso88591windows30latin1': - return 'ISO-8859-1-Windows-3.0-Latin-1'; - - case 'cswindows31latin1': - case 'iso88591windows31latin1': - return 'ISO-8859-1-Windows-3.1-Latin-1'; - - case 'csisolatin2': - case 'iso88592': - case 'isoir101': - case 'iso88592': - case 'iso885921987': - case 'l2': - case 'latin2': - return 'ISO-8859-2'; - - case 'cswindows31latin2': - case 'iso88592windowslatin2': - return 'ISO-8859-2-Windows-Latin-2'; - - case 'csisolatin3': - case 'iso88593': - case 'isoir109': - case 'iso88593': - case 'iso885931988': - case 'l3': - case 'latin3': - return 'ISO-8859-3'; - - case 'csisolatin4': - case 'iso88594': - case 'isoir110': - case 'iso88594': - case 'iso885941988': - case 'l4': - case 'latin4': - return 'ISO-8859-4'; - - case 'csisolatincyrillic': - case 'cyrillic': - case 'iso88595': - case 'isoir144': - case 'iso88595': - case 'iso885951988': - return 'ISO-8859-5'; - - case 'arabic': - case 'asmo708': - case 'csisolatinarabic': - case 'ecma114': - case 'iso88596': - case 'isoir127': - case 'iso88596': - case 'iso885961987': - return 'ISO-8859-6'; - - case 'csiso88596e': - case 'iso88596e': - case 'iso88596e': - return 'ISO-8859-6-E'; - - case 'csiso88596i': - case 'iso88596i': - case 'iso88596i': - return 'ISO-8859-6-I'; - - case 'csisolatingreek': - case 'ecma118': - case 'elot928': - case 'greek': - case 'greek8': - case 'iso88597': - case 'isoir126': - case 'iso88597': - case 'iso885971987': - return 'ISO-8859-7'; - - case 'csisolatinhebrew': - case 'hebrew': - case 'iso88598': - case 'isoir138': - case 'iso88598': - case 'iso885981988': - return 'ISO-8859-8'; - - case 'csiso88598e': - case 'iso88598e': - case 'iso88598e': - return 'ISO-8859-8-E'; - - case 'csiso88598i': - case 'iso88598i': - case 'iso88598i': - return 'ISO-8859-8-I'; - - case 'cswindows31latin5': - case 'iso88599windowslatin5': - return 'ISO-8859-9-Windows-Latin-5'; - - case 'csisolatin6': - case 'iso885910': - case 'isoir157': - case 'iso8859101992': - case 'l6': - case 'latin6': - return 'ISO-8859-10'; - - case 'iso885913': - return 'ISO-8859-13'; - - case 'iso885914': - case 'isoceltic': - case 'isoir199': - case 'iso885914': - case 'iso8859141998': - case 'l8': - case 'latin8': - return 'ISO-8859-14'; - - case 'iso885915': - case 'iso885915': - case 'latin9': - return 'ISO-8859-15'; - - case 'iso885916': - case 'isoir226': - case 'iso885916': - case 'iso8859162001': - case 'l10': - case 'latin10': - return 'ISO-8859-16'; - - case 'iso10646j1': - return 'ISO-10646-J-1'; - - case 'csunicode': - case 'iso10646ucs2': - return 'ISO-10646-UCS-2'; - - case 'csucs4': - case 'iso10646ucs4': - return 'ISO-10646-UCS-4'; - - case 'csunicodeascii': - case 'iso10646ucsbasic': - return 'ISO-10646-UCS-Basic'; - - case 'csunicodelatin1': - case 'iso10646': - case 'iso10646unicodelatin1': - return 'ISO-10646-Unicode-Latin1'; - - case 'csiso10646utf1': - case 'iso10646utf1': - return 'ISO-10646-UTF-1'; - - case 'csiso115481': - case 'iso115481': - case 'iso115481': - case 'isotr115481': - return 'ISO-11548-1'; - - case 'csiso90': - case 'isoir90': - return 'iso-ir-90'; - - case 'csunicodeibm1261': - case 'isounicodeibm1261': - return 'ISO-Unicode-IBM-1261'; - - case 'csunicodeibm1264': - case 'isounicodeibm1264': - return 'ISO-Unicode-IBM-1264'; - - case 'csunicodeibm1265': - case 'isounicodeibm1265': - return 'ISO-Unicode-IBM-1265'; - - case 'csunicodeibm1268': - case 'isounicodeibm1268': - return 'ISO-Unicode-IBM-1268'; - - case 'csunicodeibm1276': - case 'isounicodeibm1276': - return 'ISO-Unicode-IBM-1276'; - - case 'csiso646basic1983': - case 'iso646basic1983': - case 'ref': - return 'ISO_646.basic:1983'; - - case 'csiso2intlrefversion': - case 'irv': - case 'isoir2': - case 'iso646irv1983': - return 'ISO_646.irv:1983'; - - case 'csiso2033': - case 'e13b': - case 'isoir98': - case 'iso20331983': - return 'ISO_2033-1983'; - - case 'csiso5427cyrillic': - case 'isoir37': - case 'iso5427': - return 'ISO_5427'; - - case 'isoir54': - case 'iso5427cyrillic1981': - case 'iso54271981': - return 'ISO_5427:1981'; - - case 'csiso5428greek': - case 'isoir55': - case 'iso54281980': - return 'ISO_5428:1980'; - - case 'csiso6937add': - case 'isoir152': - case 'iso6937225': - return 'ISO_6937-2-25'; - - case 'csisotextcomm': - case 'isoir142': - case 'iso69372add': - return 'ISO_6937-2-add'; - - case 'csiso8859supp': - case 'isoir154': - case 'iso8859supp': - case 'latin125': - return 'ISO_8859-supp'; - - case 'csiso10367box': - case 'isoir155': - case 'iso10367box': - return 'ISO_10367-box'; - - case 'csiso15italian': - case 'isoir15': - case 'iso646it': - case 'it': - return 'IT'; - - case 'csiso13jisc6220jp': - case 'isoir13': - case 'jisc62201969': - case 'jisc62201969jp': - case 'katakana': - case 'x02017': - return 'JIS_C6220-1969-jp'; - - case 'csiso14jisc6220ro': - case 'isoir14': - case 'iso646jp': - case 'jisc62201969ro': - case 'jp': - return 'JIS_C6220-1969-ro'; - - case 'csiso42jisc62261978': - case 'isoir42': - case 'jisc62261978': - return 'JIS_C6226-1978'; - - case 'csiso87jisx0208': - case 'isoir87': - case 'jisc62261983': - case 'jisx02081983': - case 'x0208': - return 'JIS_C6226-1983'; - - case 'csiso91jisc62291984a': - case 'isoir91': - case 'jisc62291984a': - case 'jpocra': - return 'JIS_C6229-1984-a'; - - case 'csiso92jisc62991984b': - case 'isoir92': - case 'iso646jpocrb': - case 'jisc62291984b': - case 'jpocrb': - return 'JIS_C6229-1984-b'; - - case 'csiso93jis62291984badd': - case 'isoir93': - case 'jisc62291984badd': - case 'jpocrbadd': - return 'JIS_C6229-1984-b-add'; - - case 'csiso94jis62291984hand': - case 'isoir94': - case 'jisc62291984hand': - case 'jpocrhand': - return 'JIS_C6229-1984-hand'; - - case 'csiso95jis62291984handadd': - case 'isoir95': - case 'jisc62291984handadd': - case 'jpocrhandadd': - return 'JIS_C6229-1984-hand-add'; - - case 'csiso96jisc62291984kana': - case 'isoir96': - case 'jisc62291984kana': - return 'JIS_C6229-1984-kana'; - - case 'csjisencoding': - case 'jisencoding': - return 'JIS_Encoding'; - - case 'cshalfwidthkatakana': - case 'jisx0201': - case 'x0201': - return 'JIS_X0201'; - - case 'csiso159jisx02121990': - case 'isoir159': - case 'jisx02121990': - case 'x0212': - return 'JIS_X0212-1990'; - - case 'csiso141jusib1002': - case 'isoir141': - case 'iso646yu': - case 'js': - case 'jusib1002': - case 'yu': - return 'JUS_I.B1.002'; - - case 'csiso147macedonian': - case 'isoir147': - case 'jusib1003mac': - case 'macedonian': - return 'JUS_I.B1.003-mac'; - - case 'csiso146serbian': - case 'isoir146': - case 'jusib1003serb': - case 'serbian': - return 'JUS_I.B1.003-serb'; - - case 'koi7switched': - return 'KOI7-switched'; - - case 'cskoi8r': - case 'koi8r': - return 'KOI8-R'; - - case 'koi8u': - return 'KOI8-U'; - - case 'csksc5636': - case 'iso646kr': - case 'ksc5636': - return 'KSC5636'; - - case 'cskz1048': - case 'kz1048': - case 'rk1048': - case 'strk10482002': - return 'KZ-1048'; - - case 'csiso19latingreek': - case 'isoir19': - case 'latingreek': - return 'latin-greek'; - - case 'csiso27latingreek1': - case 'isoir27': - case 'latingreek1': - return 'Latin-greek-1'; - - case 'csiso158lap': - case 'isoir158': - case 'lap': - case 'latinlap': - return 'latin-lap'; - - case 'csmacintosh': - case 'mac': - case 'macintosh': - return 'macintosh'; - - case 'csmicrosoftpublishing': - case 'microsoftpublishing': - return 'Microsoft-Publishing'; - - case 'csmnem': - case 'mnem': - return 'MNEM'; - - case 'csmnemonic': - case 'mnemonic': - return 'MNEMONIC'; - - case 'csiso86hungarian': - case 'hu': - case 'isoir86': - case 'iso646hu': - case 'msz77953': - return 'MSZ_7795.3'; - - case 'csnatsdano': - case 'isoir91': - case 'natsdano': - return 'NATS-DANO'; - - case 'csnatsdanoadd': - case 'isoir92': - case 'natsdanoadd': - return 'NATS-DANO-ADD'; - - case 'csnatssefi': - case 'isoir81': - case 'natssefi': - return 'NATS-SEFI'; - - case 'csnatssefiadd': - case 'isoir82': - case 'natssefiadd': - return 'NATS-SEFI-ADD'; - - case 'csiso151cuba': - case 'cuba': - case 'isoir151': - case 'iso646cu': - case 'ncnc001081': - return 'NC_NC00-10:81'; - - case 'csiso69french': - case 'fr': - case 'isoir69': - case 'iso646fr': - case 'nfz62010': - return 'NF_Z_62-010'; - - case 'csiso25french': - case 'isoir25': - case 'iso646fr1': - case 'nfz620101973': - return 'NF_Z_62-010_(1973)'; - - case 'csiso60danishnorwegian': - case 'csiso60norwegian1': - case 'isoir60': - case 'iso646no': - case 'no': - case 'ns45511': - return 'NS_4551-1'; - - case 'csiso61norwegian2': - case 'isoir61': - case 'iso646no2': - case 'no2': - case 'ns45512': - return 'NS_4551-2'; - - case 'osdebcdicdf03irv': - return 'OSD_EBCDIC_DF03_IRV'; - - case 'osdebcdicdf041': - return 'OSD_EBCDIC_DF04_1'; - - case 'osdebcdicdf0415': - return 'OSD_EBCDIC_DF04_15'; - - case 'cspc8danishnorwegian': - case 'pc8danishnorwegian': - return 'PC8-Danish-Norwegian'; - - case 'cspc8turkish': - case 'pc8turkish': - return 'PC8-Turkish'; - - case 'csiso16portuguese': - case 'isoir16': - case 'iso646pt': - case 'pt': - return 'PT'; - - case 'csiso84portuguese2': - case 'isoir84': - case 'iso646pt2': - case 'pt2': - return 'PT2'; - - case 'cp154': - case 'csptcp154': - case 'cyrillicasian': - case 'pt154': - case 'ptcp154': - return 'PTCP154'; - - case 'scsu': - return 'SCSU'; - - case 'csiso10swedish': - case 'fi': - case 'isoir10': - case 'iso646fi': - case 'iso646se': - case 'se': - case 'sen850200b': - return 'SEN_850200_B'; - - case 'csiso11swedishfornames': - case 'isoir11': - case 'iso646se2': - case 'se2': - case 'sen850200c': - return 'SEN_850200_C'; - - case 'csshiftjis': - case 'mskanji': - case 'shiftjis': - return 'Shift_JIS'; - - case 'csiso102t617bit': - case 'isoir102': - case 't617bit': - return 'T.61-7bit'; - - case 'csiso103t618bit': - case 'isoir103': - case 't61': - case 't618bit': - return 'T.61-8bit'; - - case 'csiso128t101g2': - case 'isoir128': - case 't101g2': - return 'T.101-G2'; - - case 'cstscii': - case 'tscii': - return 'TSCII'; - - case 'csunicode11': - case 'unicode11': - return 'UNICODE-1-1'; - - case 'csunicode11utf7': - case 'unicode11utf7': - return 'UNICODE-1-1-UTF-7'; - - case 'csunknown8bit': - case 'unknown8bit': - return 'UNKNOWN-8BIT'; - - case 'ansix341968': - case 'ansix341986': - case 'ascii': - case 'cp367': - case 'csascii': - case 'ibm367': - case 'isoir6': - case 'iso646us': - case 'iso646irv1991': - case 'us': - case 'usascii': - return 'US-ASCII'; - - case 'csusdk': - case 'usdk': - return 'us-dk'; - - case 'utf7': - return 'UTF-7'; - - case 'utf8': - return 'UTF-8'; - - case 'utf16': - return 'UTF-16'; - - case 'utf16be': - return 'UTF-16BE'; - - case 'utf16le': - return 'UTF-16LE'; - - case 'utf32': - return 'UTF-32'; - - case 'utf32be': - return 'UTF-32BE'; - - case 'utf32le': - return 'UTF-32LE'; - - case 'csventurainternational': - case 'venturainternational': - return 'Ventura-International'; - - case 'csventuramath': - case 'venturamath': - return 'Ventura-Math'; - - case 'csventuraus': - case 'venturaus': - return 'Ventura-US'; - - case 'csiso70videotexsupp1': - case 'isoir70': - case 'videotexsuppl': - return 'videotex-suppl'; - - case 'csviqr': - case 'viqr': - return 'VIQR'; - - case 'csviscii': - case 'viscii': - return 'VISCII'; - - case 'cswindows31j': - case 'windows31j': - return 'Windows-31J'; - - case 'iso885911': - case 'tis620': - return 'Windows-874'; - - case 'cseuckr': - case 'euckr': - case 'windows949': - case 'csksc56011987': - case 'isoir149': - case 'korean': - case 'ksc5601': - case 'ksc56011987': - case 'ksc56011989': - return 'Windows-949'; - - case 'windows1250': - return 'windows-1250'; - - case 'windows1251': - return 'windows-1251'; - - case 'cp819': - case 'csisolatin1': - case 'ibm819': - case 'iso88591': - case 'isoir100': - case 'iso885911987': - case 'l1': - case 'latin1': - case 'windows1252': - return 'Windows-1252'; - - case 'windows1252': - return 'windows-1252'; - - case 'windows1253': - return 'windows-1253'; - - case 'csisolatin5': - case 'iso88599': - case 'isoir148': - case 'iso885991989': - case 'l5': - case 'latin5': - case 'windows1254': - return 'Windows-1254'; - - case 'windows1254': - return 'windows-1254'; - - case 'windows1255': - return 'windows-1255'; - - case 'windows1256': - return 'windows-1256'; - - case 'windows1257': - return 'windows-1257'; - - case 'windows1258': - return 'windows-1258'; - - default: - return $charset; - } - } - - function get_curl_version() - { - if (is_array($curl = curl_version())) - { - $curl = $curl['version']; - } - elseif (substr($curl, 0, 5) == 'curl/') - { - $curl = substr($curl, 5, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 5)); - } - elseif (substr($curl, 0, 8) == 'libcurl/') - { - $curl = substr($curl, 8, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 8)); - } - else - { - $curl = 0; - } - return $curl; - } - - function is_subclass_of($class1, $class2) - { - if (func_num_args() != 2) - { - trigger_error('Wrong parameter count for SimplePie_Misc::is_subclass_of()', E_USER_WARNING); - } - elseif (version_compare(PHP_VERSION, '5.0.3', '>=') || is_object($class1)) - { - return is_subclass_of($class1, $class2); - } - elseif (is_string($class1) && is_string($class2)) - { - if (class_exists($class1)) - { - if (class_exists($class2)) - { - $class2 = strtolower($class2); - while ($class1 = strtolower(get_parent_class($class1))) - { - if ($class1 == $class2) - { - return true; - } - } - } - } - else - { - trigger_error('Unknown class passed as parameter', E_USER_WARNNG); - } - } - return false; - } - - /** - * Strip HTML comments - * - * @access public - * @param string $data Data to strip comments from - * @return string Comment stripped string - */ - function strip_comments($data) - { - $output = ''; - while (($start = strpos($data, '', $start)) !== false) - { - $data = substr_replace($data, '', 0, $end + 3); - } - else - { - $data = ''; - } - } - return $output . $data; - } - - function parse_date($dt) - { - $parser = SimplePie_Parse_Date::get(); - return $parser->parse($dt); - } - - /** - * Decode HTML entities - * - * @static - * @access public - * @param string $data Input data - * @return string Output data - */ - function entities_decode($data) - { - $decoder = new SimplePie_Decode_HTML_Entities($data); - return $decoder->parse(); - } - - /** - * Remove RFC822 comments - * - * @access public - * @param string $data Data to strip comments from - * @return string Comment stripped string - */ - function uncomment_rfc822($string) - { - $string = (string) $string; - $position = 0; - $length = strlen($string); - $depth = 0; - - $output = ''; - - while ($position < $length && ($pos = strpos($string, '(', $position)) !== false) - { - $output .= substr($string, $position, $pos - $position); - $position = $pos + 1; - if ($string[$pos - 1] !== '\\') - { - $depth++; - while ($depth && $position < $length) - { - $position += strcspn($string, '()', $position); - if ($string[$position - 1] === '\\') - { - $position++; - continue; - } - elseif (isset($string[$position])) - { - switch ($string[$position]) - { - case '(': - $depth++; - break; - - case ')': - $depth--; - break; - } - $position++; - } - else - { - break; - } - } - } - else - { - $output .= '('; - } - } - $output .= substr($string, $position); - - return $output; - } - - function parse_mime($mime) - { - if (($pos = strpos($mime, ';')) === false) - { - return trim($mime); - } - else - { - return trim(substr($mime, 0, $pos)); - } - } - - function htmlspecialchars_decode($string, $quote_style) - { - if (function_exists('htmlspecialchars_decode')) - { - return htmlspecialchars_decode($string, $quote_style); - } - else - { - return strtr($string, array_flip(get_html_translation_table(HTML_SPECIALCHARS, $quote_style))); - } - } - - function atom_03_construct_type($attribs) - { - if (isset($attribs['']['mode']) && strtolower(trim($attribs['']['mode']) == 'base64')) - { - $mode = SIMPLEPIE_CONSTRUCT_BASE64; - } - else - { - $mode = SIMPLEPIE_CONSTRUCT_NONE; - } - if (isset($attribs['']['type'])) - { - switch (strtolower(trim($attribs['']['type']))) - { - case 'text': - case 'text/plain': - return SIMPLEPIE_CONSTRUCT_TEXT | $mode; - - case 'html': - case 'text/html': - return SIMPLEPIE_CONSTRUCT_HTML | $mode; - - case 'xhtml': - case 'application/xhtml+xml': - return SIMPLEPIE_CONSTRUCT_XHTML | $mode; - - default: - return SIMPLEPIE_CONSTRUCT_NONE | $mode; - } - } - else - { - return SIMPLEPIE_CONSTRUCT_TEXT | $mode; - } - } - - function atom_10_construct_type($attribs) - { - if (isset($attribs['']['type'])) - { - switch (strtolower(trim($attribs['']['type']))) - { - case 'text': - return SIMPLEPIE_CONSTRUCT_TEXT; - - case 'html': - return SIMPLEPIE_CONSTRUCT_HTML; - - case 'xhtml': - return SIMPLEPIE_CONSTRUCT_XHTML; - - default: - return SIMPLEPIE_CONSTRUCT_NONE; - } - } - return SIMPLEPIE_CONSTRUCT_TEXT; - } - - function atom_10_content_construct_type($attribs) - { - if (isset($attribs['']['type'])) - { - $type = strtolower(trim($attribs['']['type'])); - switch ($type) - { - case 'text': - return SIMPLEPIE_CONSTRUCT_TEXT; - - case 'html': - return SIMPLEPIE_CONSTRUCT_HTML; - - case 'xhtml': - return SIMPLEPIE_CONSTRUCT_XHTML; - } - if (in_array(substr($type, -4), array('+xml', '/xml')) || substr($type, 0, 5) == 'text/') - { - return SIMPLEPIE_CONSTRUCT_NONE; - } - else - { - return SIMPLEPIE_CONSTRUCT_BASE64; - } - } - else - { - return SIMPLEPIE_CONSTRUCT_TEXT; - } - } - - function is_isegment_nz_nc($string) - { - return (bool) preg_match('/^([A-Za-z0-9\-._~\x{A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}\x{10000}-\x{1FFFD}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}\x{40000}-\x{4FFFD}\x{50000}-\x{5FFFD}\x{60000}-\x{6FFFD}\x{70000}-\x{7FFFD}\x{80000}-\x{8FFFD}\x{90000}-\x{9FFFD}\x{A0000}-\x{AFFFD}\x{B0000}-\x{BFFFD}\x{C0000}-\x{CFFFD}\x{D0000}-\x{DFFFD}\x{E1000}-\x{EFFFD}!$&\'()*+,;=@]|(%[0-9ABCDEF]{2}))+$/u', $string); - } - - function space_seperated_tokens($string) - { - $space_characters = "\x20\x09\x0A\x0B\x0C\x0D"; - $string_length = strlen($string); - - $position = strspn($string, $space_characters); - $tokens = array(); - - while ($position < $string_length) - { - $len = strcspn($string, $space_characters, $position); - $tokens[] = substr($string, $position, $len); - $position += $len; - $position += strspn($string, $space_characters, $position); - } - - return $tokens; - } - - function array_unique($array) - { - if (version_compare(PHP_VERSION, '5.2', '>=')) - { - return array_unique($array); - } - else - { - $array = (array) $array; - $new_array = array(); - $new_array_strings = array(); - foreach ($array as $key => $value) - { - if (is_object($value)) - { - if (method_exists($value, '__toString')) - { - $cmp = $value->__toString(); - } - else - { - trigger_error('Object of class ' . get_class($value) . ' could not be converted to string', E_USER_ERROR); - } - } - elseif (is_array($value)) - { - $cmp = (string) reset($value); - } - else - { - $cmp = (string) $value; - } - if (!in_array($cmp, $new_array_strings)) - { - $new_array[$key] = $value; - $new_array_strings[] = $cmp; - } - } - return $new_array; - } - } - - /** - * Converts a unicode codepoint to a UTF-8 character - * - * @static - * @access public - * @param int $codepoint Unicode codepoint - * @return string UTF-8 character - */ - function codepoint_to_utf8($codepoint) - { - static $cache = array(); - $codepoint = (int) $codepoint; - if (isset($cache[$codepoint])) - { - return $cache[$codepoint]; - } - elseif ($codepoint < 0) - { - return $cache[$codepoint] = false; - } - else if ($codepoint <= 0x7f) - { - return $cache[$codepoint] = chr($codepoint); - } - else if ($codepoint <= 0x7ff) - { - return $cache[$codepoint] = chr(0xc0 | ($codepoint >> 6)) . chr(0x80 | ($codepoint & 0x3f)); - } - else if ($codepoint <= 0xffff) - { - return $cache[$codepoint] = chr(0xe0 | ($codepoint >> 12)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f)); - } - else if ($codepoint <= 0x10ffff) - { - return $cache[$codepoint] = chr(0xf0 | ($codepoint >> 18)) . chr(0x80 | (($codepoint >> 12) & 0x3f)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f)); - } - else - { - // U+FFFD REPLACEMENT CHARACTER - return $cache[$codepoint] = "\xEF\xBF\xBD"; - } - } - - /** - * Re-implementation of PHP 5's stripos() - * - * Returns the numeric position of the first occurrence of needle in the - * haystack string. - * - * @static - * @access string - * @param object $haystack - * @param string $needle Note that the needle may be a string of one or more - * characters. If needle is not a string, it is converted to an integer - * and applied as the ordinal value of a character. - * @param int $offset The optional offset parameter allows you to specify which - * character in haystack to start searching. The position returned is still - * relative to the beginning of haystack. - * @return bool If needle is not found, stripos() will return boolean false. - */ - function stripos($haystack, $needle, $offset = 0) - { - if (function_exists('stripos')) - { - return stripos($haystack, $needle, $offset); - } - else - { - if (is_string($needle)) - { - $needle = strtolower($needle); - } - elseif (is_int($needle) || is_bool($needle) || is_double($needle)) - { - $needle = strtolower(chr($needle)); - } - else - { - trigger_error('needle is not a string or an integer', E_USER_WARNING); - return false; - } - - return strpos(strtolower($haystack), $needle, $offset); - } - } - - /** - * Similar to parse_str() - * - * Returns an associative array of name/value pairs, where the value is an - * array of values that have used the same name - * - * @static - * @access string - * @param string $str The input string. - * @return array - */ - function parse_str($str) - { - $return = array(); - $str = explode('&', $str); - - foreach ($str as $section) - { - if (strpos($section, '=') !== false) - { - list($name, $value) = explode('=', $section, 2); - $return[urldecode($name)][] = urldecode($value); - } - else - { - $return[urldecode($section)][] = null; - } - } - - return $return; - } - - /** - * Detect XML encoding, as per XML 1.0 Appendix F.1 - * - * @todo Add support for EBCDIC - * @param string $data XML data - * @return array Possible encodings - */ - function xml_encoding($data) - { - // UTF-32 Big Endian BOM - if (substr($data, 0, 4) === "\x00\x00\xFE\xFF") - { - $encoding[] = 'UTF-32BE'; - } - // UTF-32 Little Endian BOM - elseif (substr($data, 0, 4) === "\xFF\xFE\x00\x00") - { - $encoding[] = 'UTF-32LE'; - } - // UTF-16 Big Endian BOM - elseif (substr($data, 0, 2) === "\xFE\xFF") - { - $encoding[] = 'UTF-16BE'; - } - // UTF-16 Little Endian BOM - elseif (substr($data, 0, 2) === "\xFF\xFE") - { - $encoding[] = 'UTF-16LE'; - } - // UTF-8 BOM - elseif (substr($data, 0, 3) === "\xEF\xBB\xBF") - { - $encoding[] = 'UTF-8'; - } - // UTF-32 Big Endian Without BOM - elseif (substr($data, 0, 20) === "\x00\x00\x00\x3C\x00\x00\x00\x3F\x00\x00\x00\x78\x00\x00\x00\x6D\x00\x00\x00\x6C") - { - if ($pos = strpos($data, "\x00\x00\x00\x3F\x00\x00\x00\x3E")) - { - $parser = new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 20), 'UTF-32BE', 'UTF-8')); - if ($parser->parse()) - { - $encoding[] = $parser->encoding; - } - } - $encoding[] = 'UTF-32BE'; - } - // UTF-32 Little Endian Without BOM - elseif (substr($data, 0, 20) === "\x3C\x00\x00\x00\x3F\x00\x00\x00\x78\x00\x00\x00\x6D\x00\x00\x00\x6C\x00\x00\x00") - { - if ($pos = strpos($data, "\x3F\x00\x00\x00\x3E\x00\x00\x00")) - { - $parser = new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 20), 'UTF-32LE', 'UTF-8')); - if ($parser->parse()) - { - $encoding[] = $parser->encoding; - } - } - $encoding[] = 'UTF-32LE'; - } - // UTF-16 Big Endian Without BOM - elseif (substr($data, 0, 10) === "\x00\x3C\x00\x3F\x00\x78\x00\x6D\x00\x6C") - { - if ($pos = strpos($data, "\x00\x3F\x00\x3E")) - { - $parser = new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 10), 'UTF-16BE', 'UTF-8')); - if ($parser->parse()) - { - $encoding[] = $parser->encoding; - } - } - $encoding[] = 'UTF-16BE'; - } - // UTF-16 Little Endian Without BOM - elseif (substr($data, 0, 10) === "\x3C\x00\x3F\x00\x78\x00\x6D\x00\x6C\x00") - { - if ($pos = strpos($data, "\x3F\x00\x3E\x00")) - { - $parser = new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 10), 'UTF-16LE', 'UTF-8')); - if ($parser->parse()) - { - $encoding[] = $parser->encoding; - } - } - $encoding[] = 'UTF-16LE'; - } - // US-ASCII (or superset) - elseif (substr($data, 0, 5) === "\x3C\x3F\x78\x6D\x6C") - { - if ($pos = strpos($data, "\x3F\x3E")) - { - $parser = new SimplePie_XML_Declaration_Parser(substr($data, 5, $pos - 5)); - if ($parser->parse()) - { - $encoding[] = $parser->encoding; - } - } - $encoding[] = 'UTF-8'; - } - // Fallback to UTF-8 - else - { - $encoding[] = 'UTF-8'; - } - return $encoding; - } -} - -/** - * Decode HTML Entities - * - * This implements HTML5 as of revision 967 (2007-06-28) - * - * @package SimplePie - */ -class SimplePie_Decode_HTML_Entities -{ - /** - * Data to be parsed - * - * @access private - * @var string - */ - var $data = ''; - - /** - * Currently consumed bytes - * - * @access private - * @var string - */ - var $consumed = ''; - - /** - * Position of the current byte being parsed - * - * @access private - * @var int - */ - var $position = 0; - - /** - * Create an instance of the class with the input data - * - * @access public - * @param string $data Input data - */ - function SimplePie_Decode_HTML_Entities($data) - { - $this->data = $data; - } - - /** - * Parse the input data - * - * @access public - * @return string Output data - */ - function parse() - { - while (($this->position = strpos($this->data, '&', $this->position)) !== false) - { - $this->consume(); - $this->entity(); - $this->consumed = ''; - } - return $this->data; - } - - /** - * Consume the next byte - * - * @access private - * @return mixed The next byte, or false, if there is no more data - */ - function consume() - { - if (isset($this->data[$this->position])) - { - $this->consumed .= $this->data[$this->position]; - return $this->data[$this->position++]; - } - else - { - $this->consumed = false; - return false; - } - } - - /** - * Consume a range of characters - * - * @access private - * @param string $chars Characters to consume - * @return mixed A series of characters that match the range, or false - */ - function consume_range($chars) - { - if ($len = strspn($this->data, $chars, $this->position)) - { - $data = substr($this->data, $this->position, $len); - $this->consumed .= $data; - $this->position += $len; - return $data; - } - else - { - $this->consumed = false; - return false; - } - } - - /** - * Unconsume one byte - * - * @access private - */ - function unconsume() - { - $this->consumed = substr($this->consumed, 0, -1); - $this->position--; - } - - /** - * Decode an entity - * - * @access private - */ - function entity() - { - switch ($this->consume()) - { - case "\x09": - case "\x0A": - case "\x0B": - case "\x0B": - case "\x0C": - case "\x20": - case "\x3C": - case "\x26": - case false: - break; - - case "\x23": - switch ($this->consume()) - { - case "\x78": - case "\x58": - $range = '0123456789ABCDEFabcdef'; - $hex = true; - break; - - default: - $range = '0123456789'; - $hex = false; - $this->unconsume(); - break; - } - - if ($codepoint = $this->consume_range($range)) - { - static $windows_1252_specials = array(0x0D => "\x0A", 0x80 => "\xE2\x82\xAC", 0x81 => "\xEF\xBF\xBD", 0x82 => "\xE2\x80\x9A", 0x83 => "\xC6\x92", 0x84 => "\xE2\x80\x9E", 0x85 => "\xE2\x80\xA6", 0x86 => "\xE2\x80\xA0", 0x87 => "\xE2\x80\xA1", 0x88 => "\xCB\x86", 0x89 => "\xE2\x80\xB0", 0x8A => "\xC5\xA0", 0x8B => "\xE2\x80\xB9", 0x8C => "\xC5\x92", 0x8D => "\xEF\xBF\xBD", 0x8E => "\xC5\xBD", 0x8F => "\xEF\xBF\xBD", 0x90 => "\xEF\xBF\xBD", 0x91 => "\xE2\x80\x98", 0x92 => "\xE2\x80\x99", 0x93 => "\xE2\x80\x9C", 0x94 => "\xE2\x80\x9D", 0x95 => "\xE2\x80\xA2", 0x96 => "\xE2\x80\x93", 0x97 => "\xE2\x80\x94", 0x98 => "\xCB\x9C", 0x99 => "\xE2\x84\xA2", 0x9A => "\xC5\xA1", 0x9B => "\xE2\x80\xBA", 0x9C => "\xC5\x93", 0x9D => "\xEF\xBF\xBD", 0x9E => "\xC5\xBE", 0x9F => "\xC5\xB8"); - - if ($hex) - { - $codepoint = hexdec($codepoint); - } - else - { - $codepoint = intval($codepoint); - } - - if (isset($windows_1252_specials[$codepoint])) - { - $replacement = $windows_1252_specials[$codepoint]; - } - else - { - $replacement = SimplePie_Misc::codepoint_to_utf8($codepoint); - } - - if ($this->consume() != ';') - { - $this->unconsume(); - } - - $consumed_length = strlen($this->consumed); - $this->data = substr_replace($this->data, $replacement, $this->position - $consumed_length, $consumed_length); - $this->position += strlen($replacement) - $consumed_length; - } - break; - - default: - static $entities = array('Aacute' => "\xC3\x81", 'aacute' => "\xC3\xA1", 'Aacute;' => "\xC3\x81", 'aacute;' => "\xC3\xA1", 'Acirc' => "\xC3\x82", 'acirc' => "\xC3\xA2", 'Acirc;' => "\xC3\x82", 'acirc;' => "\xC3\xA2", 'acute' => "\xC2\xB4", 'acute;' => "\xC2\xB4", 'AElig' => "\xC3\x86", 'aelig' => "\xC3\xA6", 'AElig;' => "\xC3\x86", 'aelig;' => "\xC3\xA6", 'Agrave' => "\xC3\x80", 'agrave' => "\xC3\xA0", 'Agrave;' => "\xC3\x80", 'agrave;' => "\xC3\xA0", 'alefsym;' => "\xE2\x84\xB5", 'Alpha;' => "\xCE\x91", 'alpha;' => "\xCE\xB1", 'AMP' => "\x26", 'amp' => "\x26", 'AMP;' => "\x26", 'amp;' => "\x26", 'and;' => "\xE2\x88\xA7", 'ang;' => "\xE2\x88\xA0", 'apos;' => "\x27", 'Aring' => "\xC3\x85", 'aring' => "\xC3\xA5", 'Aring;' => "\xC3\x85", 'aring;' => "\xC3\xA5", 'asymp;' => "\xE2\x89\x88", 'Atilde' => "\xC3\x83", 'atilde' => "\xC3\xA3", 'Atilde;' => "\xC3\x83", 'atilde;' => "\xC3\xA3", 'Auml' => "\xC3\x84", 'auml' => "\xC3\xA4", 'Auml;' => "\xC3\x84", 'auml;' => "\xC3\xA4", 'bdquo;' => "\xE2\x80\x9E", 'Beta;' => "\xCE\x92", 'beta;' => "\xCE\xB2", 'brvbar' => "\xC2\xA6", 'brvbar;' => "\xC2\xA6", 'bull;' => "\xE2\x80\xA2", 'cap;' => "\xE2\x88\xA9", 'Ccedil' => "\xC3\x87", 'ccedil' => "\xC3\xA7", 'Ccedil;' => "\xC3\x87", 'ccedil;' => "\xC3\xA7", 'cedil' => "\xC2\xB8", 'cedil;' => "\xC2\xB8", 'cent' => "\xC2\xA2", 'cent;' => "\xC2\xA2", 'Chi;' => "\xCE\xA7", 'chi;' => "\xCF\x87", 'circ;' => "\xCB\x86", 'clubs;' => "\xE2\x99\xA3", 'cong;' => "\xE2\x89\x85", 'COPY' => "\xC2\xA9", 'copy' => "\xC2\xA9", 'COPY;' => "\xC2\xA9", 'copy;' => "\xC2\xA9", 'crarr;' => "\xE2\x86\xB5", 'cup;' => "\xE2\x88\xAA", 'curren' => "\xC2\xA4", 'curren;' => "\xC2\xA4", 'Dagger;' => "\xE2\x80\xA1", 'dagger;' => "\xE2\x80\xA0", 'dArr;' => "\xE2\x87\x93", 'darr;' => "\xE2\x86\x93", 'deg' => "\xC2\xB0", 'deg;' => "\xC2\xB0", 'Delta;' => "\xCE\x94", 'delta;' => "\xCE\xB4", 'diams;' => "\xE2\x99\xA6", 'divide' => "\xC3\xB7", 'divide;' => "\xC3\xB7", 'Eacute' => "\xC3\x89", 'eacute' => "\xC3\xA9", 'Eacute;' => "\xC3\x89", 'eacute;' => "\xC3\xA9", 'Ecirc' => "\xC3\x8A", 'ecirc' => "\xC3\xAA", 'Ecirc;' => "\xC3\x8A", 'ecirc;' => "\xC3\xAA", 'Egrave' => "\xC3\x88", 'egrave' => "\xC3\xA8", 'Egrave;' => "\xC3\x88", 'egrave;' => "\xC3\xA8", 'empty;' => "\xE2\x88\x85", 'emsp;' => "\xE2\x80\x83", 'ensp;' => "\xE2\x80\x82", 'Epsilon;' => "\xCE\x95", 'epsilon;' => "\xCE\xB5", 'equiv;' => "\xE2\x89\xA1", 'Eta;' => "\xCE\x97", 'eta;' => "\xCE\xB7", 'ETH' => "\xC3\x90", 'eth' => "\xC3\xB0", 'ETH;' => "\xC3\x90", 'eth;' => "\xC3\xB0", 'Euml' => "\xC3\x8B", 'euml' => "\xC3\xAB", 'Euml;' => "\xC3\x8B", 'euml;' => "\xC3\xAB", 'euro;' => "\xE2\x82\xAC", 'exist;' => "\xE2\x88\x83", 'fnof;' => "\xC6\x92", 'forall;' => "\xE2\x88\x80", 'frac12' => "\xC2\xBD", 'frac12;' => "\xC2\xBD", 'frac14' => "\xC2\xBC", 'frac14;' => "\xC2\xBC", 'frac34' => "\xC2\xBE", 'frac34;' => "\xC2\xBE", 'frasl;' => "\xE2\x81\x84", 'Gamma;' => "\xCE\x93", 'gamma;' => "\xCE\xB3", 'ge;' => "\xE2\x89\xA5", 'GT' => "\x3E", 'gt' => "\x3E", 'GT;' => "\x3E", 'gt;' => "\x3E", 'hArr;' => "\xE2\x87\x94", 'harr;' => "\xE2\x86\x94", 'hearts;' => "\xE2\x99\xA5", 'hellip;' => "\xE2\x80\xA6", 'Iacute' => "\xC3\x8D", 'iacute' => "\xC3\xAD", 'Iacute;' => "\xC3\x8D", 'iacute;' => "\xC3\xAD", 'Icirc' => "\xC3\x8E", 'icirc' => "\xC3\xAE", 'Icirc;' => "\xC3\x8E", 'icirc;' => "\xC3\xAE", 'iexcl' => "\xC2\xA1", 'iexcl;' => "\xC2\xA1", 'Igrave' => "\xC3\x8C", 'igrave' => "\xC3\xAC", 'Igrave;' => "\xC3\x8C", 'igrave;' => "\xC3\xAC", 'image;' => "\xE2\x84\x91", 'infin;' => "\xE2\x88\x9E", 'int;' => "\xE2\x88\xAB", 'Iota;' => "\xCE\x99", 'iota;' => "\xCE\xB9", 'iquest' => "\xC2\xBF", 'iquest;' => "\xC2\xBF", 'isin;' => "\xE2\x88\x88", 'Iuml' => "\xC3\x8F", 'iuml' => "\xC3\xAF", 'Iuml;' => "\xC3\x8F", 'iuml;' => "\xC3\xAF", 'Kappa;' => "\xCE\x9A", 'kappa;' => "\xCE\xBA", 'Lambda;' => "\xCE\x9B", 'lambda;' => "\xCE\xBB", 'lang;' => "\xE3\x80\x88", 'laquo' => "\xC2\xAB", 'laquo;' => "\xC2\xAB", 'lArr;' => "\xE2\x87\x90", 'larr;' => "\xE2\x86\x90", 'lceil;' => "\xE2\x8C\x88", 'ldquo;' => "\xE2\x80\x9C", 'le;' => "\xE2\x89\xA4", 'lfloor;' => "\xE2\x8C\x8A", 'lowast;' => "\xE2\x88\x97", 'loz;' => "\xE2\x97\x8A", 'lrm;' => "\xE2\x80\x8E", 'lsaquo;' => "\xE2\x80\xB9", 'lsquo;' => "\xE2\x80\x98", 'LT' => "\x3C", 'lt' => "\x3C", 'LT;' => "\x3C", 'lt;' => "\x3C", 'macr' => "\xC2\xAF", 'macr;' => "\xC2\xAF", 'mdash;' => "\xE2\x80\x94", 'micro' => "\xC2\xB5", 'micro;' => "\xC2\xB5", 'middot' => "\xC2\xB7", 'middot;' => "\xC2\xB7", 'minus;' => "\xE2\x88\x92", 'Mu;' => "\xCE\x9C", 'mu;' => "\xCE\xBC", 'nabla;' => "\xE2\x88\x87", 'nbsp' => "\xC2\xA0", 'nbsp;' => "\xC2\xA0", 'ndash;' => "\xE2\x80\x93", 'ne;' => "\xE2\x89\xA0", 'ni;' => "\xE2\x88\x8B", 'not' => "\xC2\xAC", 'not;' => "\xC2\xAC", 'notin;' => "\xE2\x88\x89", 'nsub;' => "\xE2\x8A\x84", 'Ntilde' => "\xC3\x91", 'ntilde' => "\xC3\xB1", 'Ntilde;' => "\xC3\x91", 'ntilde;' => "\xC3\xB1", 'Nu;' => "\xCE\x9D", 'nu;' => "\xCE\xBD", 'Oacute' => "\xC3\x93", 'oacute' => "\xC3\xB3", 'Oacute;' => "\xC3\x93", 'oacute;' => "\xC3\xB3", 'Ocirc' => "\xC3\x94", 'ocirc' => "\xC3\xB4", 'Ocirc;' => "\xC3\x94", 'ocirc;' => "\xC3\xB4", 'OElig;' => "\xC5\x92", 'oelig;' => "\xC5\x93", 'Ograve' => "\xC3\x92", 'ograve' => "\xC3\xB2", 'Ograve;' => "\xC3\x92", 'ograve;' => "\xC3\xB2", 'oline;' => "\xE2\x80\xBE", 'Omega;' => "\xCE\xA9", 'omega;' => "\xCF\x89", 'Omicron;' => "\xCE\x9F", 'omicron;' => "\xCE\xBF", 'oplus;' => "\xE2\x8A\x95", 'or;' => "\xE2\x88\xA8", 'ordf' => "\xC2\xAA", 'ordf;' => "\xC2\xAA", 'ordm' => "\xC2\xBA", 'ordm;' => "\xC2\xBA", 'Oslash' => "\xC3\x98", 'oslash' => "\xC3\xB8", 'Oslash;' => "\xC3\x98", 'oslash;' => "\xC3\xB8", 'Otilde' => "\xC3\x95", 'otilde' => "\xC3\xB5", 'Otilde;' => "\xC3\x95", 'otilde;' => "\xC3\xB5", 'otimes;' => "\xE2\x8A\x97", 'Ouml' => "\xC3\x96", 'ouml' => "\xC3\xB6", 'Ouml;' => "\xC3\x96", 'ouml;' => "\xC3\xB6", 'para' => "\xC2\xB6", 'para;' => "\xC2\xB6", 'part;' => "\xE2\x88\x82", 'permil;' => "\xE2\x80\xB0", 'perp;' => "\xE2\x8A\xA5", 'Phi;' => "\xCE\xA6", 'phi;' => "\xCF\x86", 'Pi;' => "\xCE\xA0", 'pi;' => "\xCF\x80", 'piv;' => "\xCF\x96", 'plusmn' => "\xC2\xB1", 'plusmn;' => "\xC2\xB1", 'pound' => "\xC2\xA3", 'pound;' => "\xC2\xA3", 'Prime;' => "\xE2\x80\xB3", 'prime;' => "\xE2\x80\xB2", 'prod;' => "\xE2\x88\x8F", 'prop;' => "\xE2\x88\x9D", 'Psi;' => "\xCE\xA8", 'psi;' => "\xCF\x88", 'QUOT' => "\x22", 'quot' => "\x22", 'QUOT;' => "\x22", 'quot;' => "\x22", 'radic;' => "\xE2\x88\x9A", 'rang;' => "\xE3\x80\x89", 'raquo' => "\xC2\xBB", 'raquo;' => "\xC2\xBB", 'rArr;' => "\xE2\x87\x92", 'rarr;' => "\xE2\x86\x92", 'rceil;' => "\xE2\x8C\x89", 'rdquo;' => "\xE2\x80\x9D", 'real;' => "\xE2\x84\x9C", 'REG' => "\xC2\xAE", 'reg' => "\xC2\xAE", 'REG;' => "\xC2\xAE", 'reg;' => "\xC2\xAE", 'rfloor;' => "\xE2\x8C\x8B", 'Rho;' => "\xCE\xA1", 'rho;' => "\xCF\x81", 'rlm;' => "\xE2\x80\x8F", 'rsaquo;' => "\xE2\x80\xBA", 'rsquo;' => "\xE2\x80\x99", 'sbquo;' => "\xE2\x80\x9A", 'Scaron;' => "\xC5\xA0", 'scaron;' => "\xC5\xA1", 'sdot;' => "\xE2\x8B\x85", 'sect' => "\xC2\xA7", 'sect;' => "\xC2\xA7", 'shy' => "\xC2\xAD", 'shy;' => "\xC2\xAD", 'Sigma;' => "\xCE\xA3", 'sigma;' => "\xCF\x83", 'sigmaf;' => "\xCF\x82", 'sim;' => "\xE2\x88\xBC", 'spades;' => "\xE2\x99\xA0", 'sub;' => "\xE2\x8A\x82", 'sube;' => "\xE2\x8A\x86", 'sum;' => "\xE2\x88\x91", 'sup;' => "\xE2\x8A\x83", 'sup1' => "\xC2\xB9", 'sup1;' => "\xC2\xB9", 'sup2' => "\xC2\xB2", 'sup2;' => "\xC2\xB2", 'sup3' => "\xC2\xB3", 'sup3;' => "\xC2\xB3", 'supe;' => "\xE2\x8A\x87", 'szlig' => "\xC3\x9F", 'szlig;' => "\xC3\x9F", 'Tau;' => "\xCE\xA4", 'tau;' => "\xCF\x84", 'there4;' => "\xE2\x88\xB4", 'Theta;' => "\xCE\x98", 'theta;' => "\xCE\xB8", 'thetasym;' => "\xCF\x91", 'thinsp;' => "\xE2\x80\x89", 'THORN' => "\xC3\x9E", 'thorn' => "\xC3\xBE", 'THORN;' => "\xC3\x9E", 'thorn;' => "\xC3\xBE", 'tilde;' => "\xCB\x9C", 'times' => "\xC3\x97", 'times;' => "\xC3\x97", 'TRADE;' => "\xE2\x84\xA2", 'trade;' => "\xE2\x84\xA2", 'Uacute' => "\xC3\x9A", 'uacute' => "\xC3\xBA", 'Uacute;' => "\xC3\x9A", 'uacute;' => "\xC3\xBA", 'uArr;' => "\xE2\x87\x91", 'uarr;' => "\xE2\x86\x91", 'Ucirc' => "\xC3\x9B", 'ucirc' => "\xC3\xBB", 'Ucirc;' => "\xC3\x9B", 'ucirc;' => "\xC3\xBB", 'Ugrave' => "\xC3\x99", 'ugrave' => "\xC3\xB9", 'Ugrave;' => "\xC3\x99", 'ugrave;' => "\xC3\xB9", 'uml' => "\xC2\xA8", 'uml;' => "\xC2\xA8", 'upsih;' => "\xCF\x92", 'Upsilon;' => "\xCE\xA5", 'upsilon;' => "\xCF\x85", 'Uuml' => "\xC3\x9C", 'uuml' => "\xC3\xBC", 'Uuml;' => "\xC3\x9C", 'uuml;' => "\xC3\xBC", 'weierp;' => "\xE2\x84\x98", 'Xi;' => "\xCE\x9E", 'xi;' => "\xCE\xBE", 'Yacute' => "\xC3\x9D", 'yacute' => "\xC3\xBD", 'Yacute;' => "\xC3\x9D", 'yacute;' => "\xC3\xBD", 'yen' => "\xC2\xA5", 'yen;' => "\xC2\xA5", 'yuml' => "\xC3\xBF", 'Yuml;' => "\xC5\xB8", 'yuml;' => "\xC3\xBF", 'Zeta;' => "\xCE\x96", 'zeta;' => "\xCE\xB6", 'zwj;' => "\xE2\x80\x8D", 'zwnj;' => "\xE2\x80\x8C"); - - for ($i = 0, $match = null; $i < 9 && $this->consume() !== false; $i++) - { - $consumed = substr($this->consumed, 1); - if (isset($entities[$consumed])) - { - $match = $consumed; - } - } - - if ($match !== null) - { - $this->data = substr_replace($this->data, $entities[$match], $this->position - strlen($consumed) - 1, strlen($match) + 1); - $this->position += strlen($entities[$match]) - strlen($consumed) - 1; - } - break; - } - } -} - -/** - * Date Parser - * - * @package SimplePie - */ -class SimplePie_Parse_Date -{ - /** - * Input data - * - * @access protected - * @var string - */ - var $date; - - /** - * List of days, calendar day name => ordinal day number in the week - * - * @access protected - * @var array - */ - var $day = array( - // English - 'mon' => 1, - 'monday' => 1, - 'tue' => 2, - 'tuesday' => 2, - 'wed' => 3, - 'wednesday' => 3, - 'thu' => 4, - 'thursday' => 4, - 'fri' => 5, - 'friday' => 5, - 'sat' => 6, - 'saturday' => 6, - 'sun' => 7, - 'sunday' => 7, - // Dutch - 'maandag' => 1, - 'dinsdag' => 2, - 'woensdag' => 3, - 'donderdag' => 4, - 'vrijdag' => 5, - 'zaterdag' => 6, - 'zondag' => 7, - // French - 'lundi' => 1, - 'mardi' => 2, - 'mercredi' => 3, - 'jeudi' => 4, - 'vendredi' => 5, - 'samedi' => 6, - 'dimanche' => 7, - // German - 'montag' => 1, - 'dienstag' => 2, - 'mittwoch' => 3, - 'donnerstag' => 4, - 'freitag' => 5, - 'samstag' => 6, - 'sonnabend' => 6, - 'sonntag' => 7, - // Italian - 'lunedì' => 1, - 'martedì' => 2, - 'mercoledì' => 3, - 'giovedì' => 4, - 'venerdì' => 5, - 'sabato' => 6, - 'domenica' => 7, - // Spanish - 'lunes' => 1, - 'martes' => 2, - 'miércoles' => 3, - 'jueves' => 4, - 'viernes' => 5, - 'sábado' => 6, - 'domingo' => 7, - // Finnish - 'maanantai' => 1, - 'tiistai' => 2, - 'keskiviikko' => 3, - 'torstai' => 4, - 'perjantai' => 5, - 'lauantai' => 6, - 'sunnuntai' => 7, - // Hungarian - 'hétfÅ‘' => 1, - 'kedd' => 2, - 'szerda' => 3, - 'csütörtok' => 4, - 'péntek' => 5, - 'szombat' => 6, - 'vasárnap' => 7, - // Greek - 'Δευ' => 1, - 'ΤÏι' => 2, - 'Τετ' => 3, - 'Πεμ' => 4, - 'ΠαÏ' => 5, - 'Σαβ' => 6, - 'ΚυÏ' => 7, - ); - - /** - * List of months, calendar month name => calendar month number - * - * @access protected - * @var array - */ - var $month = array( - // English - 'jan' => 1, - 'january' => 1, - 'feb' => 2, - 'february' => 2, - 'mar' => 3, - 'march' => 3, - 'apr' => 4, - 'april' => 4, - 'may' => 5, - // No long form of May - 'jun' => 6, - 'june' => 6, - 'jul' => 7, - 'july' => 7, - 'aug' => 8, - 'august' => 8, - 'sep' => 9, - 'september' => 8, - 'oct' => 10, - 'october' => 10, - 'nov' => 11, - 'november' => 11, - 'dec' => 12, - 'december' => 12, - // Dutch - 'januari' => 1, - 'februari' => 2, - 'maart' => 3, - 'april' => 4, - 'mei' => 5, - 'juni' => 6, - 'juli' => 7, - 'augustus' => 8, - 'september' => 9, - 'oktober' => 10, - 'november' => 11, - 'december' => 12, - // French - 'janvier' => 1, - 'février' => 2, - 'mars' => 3, - 'avril' => 4, - 'mai' => 5, - 'juin' => 6, - 'juillet' => 7, - 'août' => 8, - 'septembre' => 9, - 'octobre' => 10, - 'novembre' => 11, - 'décembre' => 12, - // German - 'januar' => 1, - 'februar' => 2, - 'märz' => 3, - 'april' => 4, - 'mai' => 5, - 'juni' => 6, - 'juli' => 7, - 'august' => 8, - 'september' => 9, - 'oktober' => 10, - 'november' => 11, - 'dezember' => 12, - // Italian - 'gennaio' => 1, - 'febbraio' => 2, - 'marzo' => 3, - 'aprile' => 4, - 'maggio' => 5, - 'giugno' => 6, - 'luglio' => 7, - 'agosto' => 8, - 'settembre' => 9, - 'ottobre' => 10, - 'novembre' => 11, - 'dicembre' => 12, - // Spanish - 'enero' => 1, - 'febrero' => 2, - 'marzo' => 3, - 'abril' => 4, - 'mayo' => 5, - 'junio' => 6, - 'julio' => 7, - 'agosto' => 8, - 'septiembre' => 9, - 'setiembre' => 9, - 'octubre' => 10, - 'noviembre' => 11, - 'diciembre' => 12, - // Finnish - 'tammikuu' => 1, - 'helmikuu' => 2, - 'maaliskuu' => 3, - 'huhtikuu' => 4, - 'toukokuu' => 5, - 'kesäkuu' => 6, - 'heinäkuu' => 7, - 'elokuu' => 8, - 'suuskuu' => 9, - 'lokakuu' => 10, - 'marras' => 11, - 'joulukuu' => 12, - // Hungarian - 'január' => 1, - 'február' => 2, - 'március' => 3, - 'április' => 4, - 'május' => 5, - 'június' => 6, - 'július' => 7, - 'augusztus' => 8, - 'szeptember' => 9, - 'október' => 10, - 'november' => 11, - 'december' => 12, - // Greek - 'Ιαν' => 1, - 'Φεβ' => 2, - 'Μάώ' => 3, - 'Μαώ' => 3, - 'ΑπÏ' => 4, - 'Μάι' => 5, - 'Μαϊ' => 5, - 'Μαι' => 5, - 'ΙοÏν' => 6, - 'Ιον' => 6, - 'ΙοÏλ' => 7, - 'Ιολ' => 7, - 'ΑÏγ' => 8, - 'Αυγ' => 8, - 'Σεπ' => 9, - 'Οκτ' => 10, - 'Îοέ' => 11, - 'Δεκ' => 12, - ); - - /** - * List of timezones, abbreviation => offset from UTC - * - * @access protected - * @var array - */ - var $timezone = array( - 'ACDT' => 37800, - 'ACIT' => 28800, - 'ACST' => 34200, - 'ACT' => -18000, - 'ACWDT' => 35100, - 'ACWST' => 31500, - 'AEDT' => 39600, - 'AEST' => 36000, - 'AFT' => 16200, - 'AKDT' => -28800, - 'AKST' => -32400, - 'AMDT' => 18000, - 'AMT' => -14400, - 'ANAST' => 46800, - 'ANAT' => 43200, - 'ART' => -10800, - 'AZOST' => -3600, - 'AZST' => 18000, - 'AZT' => 14400, - 'BIOT' => 21600, - 'BIT' => -43200, - 'BOT' => -14400, - 'BRST' => -7200, - 'BRT' => -10800, - 'BST' => 3600, - 'BTT' => 21600, - 'CAST' => 18000, - 'CAT' => 7200, - 'CCT' => 23400, - 'CDT' => -18000, - 'CEDT' => 7200, - 'CET' => 3600, - 'CGST' => -7200, - 'CGT' => -10800, - 'CHADT' => 49500, - 'CHAST' => 45900, - 'CIST' => -28800, - 'CKT' => -36000, - 'CLDT' => -10800, - 'CLST' => -14400, - 'COT' => -18000, - 'CST' => -21600, - 'CVT' => -3600, - 'CXT' => 25200, - 'DAVT' => 25200, - 'DTAT' => 36000, - 'EADT' => -18000, - 'EAST' => -21600, - 'EAT' => 10800, - 'ECT' => -18000, - 'EDT' => -14400, - 'EEST' => 10800, - 'EET' => 7200, - 'EGT' => -3600, - 'EKST' => 21600, - 'EST' => -18000, - 'FJT' => 43200, - 'FKDT' => -10800, - 'FKST' => -14400, - 'FNT' => -7200, - 'GALT' => -21600, - 'GEDT' => 14400, - 'GEST' => 10800, - 'GFT' => -10800, - 'GILT' => 43200, - 'GIT' => -32400, - 'GST' => 14400, - 'GST' => -7200, - 'GYT' => -14400, - 'HAA' => -10800, - 'HAC' => -18000, - 'HADT' => -32400, - 'HAE' => -14400, - 'HAP' => -25200, - 'HAR' => -21600, - 'HAST' => -36000, - 'HAT' => -9000, - 'HAY' => -28800, - 'HKST' => 28800, - 'HMT' => 18000, - 'HNA' => -14400, - 'HNC' => -21600, - 'HNE' => -18000, - 'HNP' => -28800, - 'HNR' => -25200, - 'HNT' => -12600, - 'HNY' => -32400, - 'IRDT' => 16200, - 'IRKST' => 32400, - 'IRKT' => 28800, - 'IRST' => 12600, - 'JFDT' => -10800, - 'JFST' => -14400, - 'JST' => 32400, - 'KGST' => 21600, - 'KGT' => 18000, - 'KOST' => 39600, - 'KOVST' => 28800, - 'KOVT' => 25200, - 'KRAST' => 28800, - 'KRAT' => 25200, - 'KST' => 32400, - 'LHDT' => 39600, - 'LHST' => 37800, - 'LINT' => 50400, - 'LKT' => 21600, - 'MAGST' => 43200, - 'MAGT' => 39600, - 'MAWT' => 21600, - 'MDT' => -21600, - 'MESZ' => 7200, - 'MEZ' => 3600, - 'MHT' => 43200, - 'MIT' => -34200, - 'MNST' => 32400, - 'MSDT' => 14400, - 'MSST' => 10800, - 'MST' => -25200, - 'MUT' => 14400, - 'MVT' => 18000, - 'MYT' => 28800, - 'NCT' => 39600, - 'NDT' => -9000, - 'NFT' => 41400, - 'NMIT' => 36000, - 'NOVST' => 25200, - 'NOVT' => 21600, - 'NPT' => 20700, - 'NRT' => 43200, - 'NST' => -12600, - 'NUT' => -39600, - 'NZDT' => 46800, - 'NZST' => 43200, - 'OMSST' => 25200, - 'OMST' => 21600, - 'PDT' => -25200, - 'PET' => -18000, - 'PETST' => 46800, - 'PETT' => 43200, - 'PGT' => 36000, - 'PHOT' => 46800, - 'PHT' => 28800, - 'PKT' => 18000, - 'PMDT' => -7200, - 'PMST' => -10800, - 'PONT' => 39600, - 'PST' => -28800, - 'PWT' => 32400, - 'PYST' => -10800, - 'PYT' => -14400, - 'RET' => 14400, - 'ROTT' => -10800, - 'SAMST' => 18000, - 'SAMT' => 14400, - 'SAST' => 7200, - 'SBT' => 39600, - 'SCDT' => 46800, - 'SCST' => 43200, - 'SCT' => 14400, - 'SEST' => 3600, - 'SGT' => 28800, - 'SIT' => 28800, - 'SRT' => -10800, - 'SST' => -39600, - 'SYST' => 10800, - 'SYT' => 7200, - 'TFT' => 18000, - 'THAT' => -36000, - 'TJT' => 18000, - 'TKT' => -36000, - 'TMT' => 18000, - 'TOT' => 46800, - 'TPT' => 32400, - 'TRUT' => 36000, - 'TVT' => 43200, - 'TWT' => 28800, - 'UYST' => -7200, - 'UYT' => -10800, - 'UZT' => 18000, - 'VET' => -14400, - 'VLAST' => 39600, - 'VLAT' => 36000, - 'VOST' => 21600, - 'VUT' => 39600, - 'WAST' => 7200, - 'WAT' => 3600, - 'WDT' => 32400, - 'WEST' => 3600, - 'WFT' => 43200, - 'WIB' => 25200, - 'WIT' => 32400, - 'WITA' => 28800, - 'WKST' => 18000, - 'WST' => 28800, - 'YAKST' => 36000, - 'YAKT' => 32400, - 'YAPT' => 36000, - 'YEKST' => 21600, - 'YEKT' => 18000, - ); - - /** - * Cached PCRE for SimplePie_Parse_Date::$day - * - * @access protected - * @var string - */ - var $day_pcre; - - /** - * Cached PCRE for SimplePie_Parse_Date::$month - * - * @access protected - * @var string - */ - var $month_pcre; - - /** - * Array of user-added callback methods - * - * @access private - * @var array - */ - var $built_in = array(); - - /** - * Array of user-added callback methods - * - * @access private - * @var array - */ - var $user = array(); - - /** - * Create new SimplePie_Parse_Date object, and set self::day_pcre, - * self::month_pcre, and self::built_in - * - * @access private - */ - function SimplePie_Parse_Date() - { - $this->day_pcre = '(' . implode(array_keys($this->day), '|') . ')'; - $this->month_pcre = '(' . implode(array_keys($this->month), '|') . ')'; - - static $cache; - if (!isset($cache[get_class($this)])) - { - if (extension_loaded('Reflection')) - { - $class = new ReflectionClass(get_class($this)); - $methods = $class->getMethods(); - $all_methods = array(); - foreach ($methods as $method) - { - $all_methods[] = $method->getName(); - } - } - else - { - $all_methods = get_class_methods($this); - } - - foreach ($all_methods as $method) - { - if (strtolower(substr($method, 0, 5)) === 'date_') - { - $cache[get_class($this)][] = $method; - } - } - } - - foreach ($cache[get_class($this)] as $method) - { - $this->built_in[] = $method; - } - } - - /** - * Get the object - * - * @access public - */ - function get() - { - static $object; - if (!$object) - { - $object = new SimplePie_Parse_Date; - } - return $object; - } - - /** - * Parse a date - * - * @final - * @access public - * @param string $date Date to parse - * @return int Timestamp corresponding to date string, or false on failure - */ - function parse($date) - { - foreach ($this->user as $method) - { - if (($returned = call_user_func($method, $date)) !== false) - { - return $returned; - } - } - - foreach ($this->built_in as $method) - { - if (($returned = call_user_func(array(&$this, $method), $date)) !== false) - { - return $returned; - } - } - - return false; - } - - /** - * Add a callback method to parse a date - * - * @final - * @access public - * @param callback $callback - */ - function add_callback($callback) - { - if (is_callable($callback)) - { - $this->user[] = $callback; - } - else - { - trigger_error('User-supplied function must be a valid callback', E_USER_WARNING); - } - } - - /** - * Parse a superset of W3C-DTF (allows hyphens and colons to be omitted, as - * well as allowing any of upper or lower case "T", horizontal tabs, or - * spaces to be used as the time seperator (including more than one)) - * - * @access protected - * @return int Timestamp - */ - function date_w3cdtf($date) - { - static $pcre; - if (!$pcre) - { - $year = '([0-9]{4})'; - $month = $day = $hour = $minute = $second = '([0-9]{2})'; - $decimal = '([0-9]*)'; - $zone = '(?:(Z)|([+\-])([0-9]{1,2}):?([0-9]{1,2}))'; - $pcre = '/^' . $year . '(?:-?' . $month . '(?:-?' . $day . '(?:[Tt\x09\x20]+' . $hour . '(?::?' . $minute . '(?::?' . $second . '(?:.' . $decimal . ')?)?)?' . $zone . ')?)?)?$/'; - } - if (preg_match($pcre, $date, $match)) - { - /* - Capturing subpatterns: - 1: Year - 2: Month - 3: Day - 4: Hour - 5: Minute - 6: Second - 7: Decimal fraction of a second - 8: Zulu - 9: Timezone ± - 10: Timezone hours - 11: Timezone minutes - */ - - // Fill in empty matches - for ($i = count($match); $i <= 3; $i++) - { - $match[$i] = '1'; - } - - for ($i = count($match); $i <= 7; $i++) - { - $match[$i] = '0'; - } - - // Numeric timezone - if (isset($match[9]) && $match[9] !== '') - { - $timezone = $match[10] * 3600; - $timezone += $match[11] * 60; - if ($match[9] === '-') - { - $timezone = 0 - $timezone; - } - } - else - { - $timezone = 0; - } - - // Convert the number of seconds to an integer, taking decimals into account - $second = round($match[6] + $match[7] / pow(10, strlen($match[7]))); - - return gmmktime($match[4], $match[5], $second, $match[2], $match[3], $match[1]) - $timezone; - } - else - { - return false; - } - } - - /** - * Remove RFC822 comments - * - * @access protected - * @param string $data Data to strip comments from - * @return string Comment stripped string - */ - function remove_rfc2822_comments($string) - { - $string = (string) $string; - $position = 0; - $length = strlen($string); - $depth = 0; - - $output = ''; - - while ($position < $length && ($pos = strpos($string, '(', $position)) !== false) - { - $output .= substr($string, $position, $pos - $position); - $position = $pos + 1; - if ($string[$pos - 1] !== '\\') - { - $depth++; - while ($depth && $position < $length) - { - $position += strcspn($string, '()', $position); - if ($string[$position - 1] === '\\') - { - $position++; - continue; - } - elseif (isset($string[$position])) - { - switch ($string[$position]) - { - case '(': - $depth++; - break; - - case ')': - $depth--; - break; - } - $position++; - } - else - { - break; - } - } - } - else - { - $output .= '('; - } - } - $output .= substr($string, $position); - - return $output; - } - - /** - * Parse RFC2822's date format - * - * @access protected - * @return int Timestamp - */ - function date_rfc2822($date) - { - static $pcre; - if (!$pcre) - { - $wsp = '[\x09\x20]'; - $fws = '(?:' . $wsp . '+|' . $wsp . '*(?:\x0D\x0A' . $wsp . '+)+)'; - $optional_fws = $fws . '?'; - $day_name = $this->day_pcre; - $month = $this->month_pcre; - $day = '([0-9]{1,2})'; - $hour = $minute = $second = '([0-9]{2})'; - $year = '([0-9]{2,4})'; - $num_zone = '([+\-])([0-9]{2})([0-9]{2})'; - $character_zone = '([A-Z]{1,5})'; - $zone = '(?:' . $num_zone . '|' . $character_zone . ')'; - $pcre = '/(?:' . $optional_fws . $day_name . $optional_fws . ',)?' . $optional_fws . $day . $fws . $month . $fws . $year . $fws . $hour . $optional_fws . ':' . $optional_fws . $minute . '(?:' . $optional_fws . ':' . $optional_fws . $second . ')?' . $fws . $zone . '/i'; - } - if (preg_match($pcre, $this->remove_rfc2822_comments($date), $match)) - { - /* - Capturing subpatterns: - 1: Day name - 2: Day - 3: Month - 4: Year - 5: Hour - 6: Minute - 7: Second - 8: Timezone ± - 9: Timezone hours - 10: Timezone minutes - 11: Alphabetic timezone - */ - - // Find the month number - $month = $this->month[strtolower($match[3])]; - - // Numeric timezone - if ($match[8] !== '') - { - $timezone = $match[9] * 3600; - $timezone += $match[10] * 60; - if ($match[8] === '-') - { - $timezone = 0 - $timezone; - } - } - // Character timezone - elseif (isset($this->timezone[strtoupper($match[11])])) - { - $timezone = $this->timezone[strtoupper($match[11])]; - } - // Assume everything else to be -0000 - else - { - $timezone = 0; - } - - // Deal with 2/3 digit years - if ($match[4] < 50) - { - $match[4] += 2000; - } - elseif ($match[4] < 1000) - { - $match[4] += 1900; - } - - // Second is optional, if it is empty set it to zero - if ($match[7] !== '') - { - $second = $match[7]; - } - else - { - $second = 0; - } - - return gmmktime($match[5], $match[6], $second, $month, $match[2], $match[4]) - $timezone; - } - else - { - return false; - } - } - - /** - * Parse RFC850's date format - * - * @access protected - * @return int Timestamp - */ - function date_rfc850($date) - { - static $pcre; - if (!$pcre) - { - $space = '[\x09\x20]+'; - $day_name = $this->day_pcre; - $month = $this->month_pcre; - $day = '([0-9]{1,2})'; - $year = $hour = $minute = $second = '([0-9]{2})'; - $zone = '([A-Z]{1,5})'; - $pcre = '/^' . $day_name . ',' . $space . $day . '-' . $month . '-' . $year . $space . $hour . ':' . $minute . ':' . $second . $space . $zone . '$/i'; - } - if (preg_match($pcre, $date, $match)) - { - /* - Capturing subpatterns: - 1: Day name - 2: Day - 3: Month - 4: Year - 5: Hour - 6: Minute - 7: Second - 8: Timezone - */ - - // Month - $month = $this->month[strtolower($match[3])]; - - // Character timezone - if (isset($this->timezone[strtoupper($match[8])])) - { - $timezone = $this->timezone[strtoupper($match[8])]; - } - // Assume everything else to be -0000 - else - { - $timezone = 0; - } - - // Deal with 2 digit year - if ($match[4] < 50) - { - $match[4] += 2000; - } - else - { - $match[4] += 1900; - } - - return gmmktime($match[5], $match[6], $match[7], $month, $match[2], $match[4]) - $timezone; - } - else - { - return false; - } - } - - /** - * Parse C99's asctime()'s date format - * - * @access protected - * @return int Timestamp - */ - function date_asctime($date) - { - static $pcre; - if (!$pcre) - { - $space = '[\x09\x20]+'; - $wday_name = $this->day_pcre; - $mon_name = $this->month_pcre; - $day = '([0-9]{1,2})'; - $hour = $sec = $min = '([0-9]{2})'; - $year = '([0-9]{4})'; - $terminator = '\x0A?\x00?'; - $pcre = '/^' . $wday_name . $space . $mon_name . $space . $day . $space . $hour . ':' . $min . ':' . $sec . $space . $year . $terminator . '$/i'; - } - if (preg_match($pcre, $date, $match)) - { - /* - Capturing subpatterns: - 1: Day name - 2: Month - 3: Day - 4: Hour - 5: Minute - 6: Second - 7: Year - */ - - $month = $this->month[strtolower($match[2])]; - return gmmktime($match[4], $match[5], $match[6], $month, $match[3], $match[7]); - } - else - { - return false; - } - } - - /** - * Parse dates using strtotime() - * - * @access protected - * @return int Timestamp - */ - function date_strtotime($date) - { - $strtotime = strtotime($date); - if ($strtotime === -1 || $strtotime === false) - { - return false; - } - else - { - return $strtotime; - } - } -} - -/** - * Content-type sniffing - * - * @package SimplePie - */ -class SimplePie_Content_Type_Sniffer -{ - /** - * File object - * - * @var SimplePie_File - * @access private - */ - var $file; - - /** - * Create an instance of the class with the input file - * - * @access public - * @param SimplePie_Content_Type_Sniffer $file Input file - */ - function SimplePie_Content_Type_Sniffer($file) - { - $this->file = $file; - } - - /** - * Get the Content-Type of the specified file - * - * @access public - * @return string Actual Content-Type - */ - function get_type() - { - if (isset($this->file->headers['content-type'])) - { - if (!isset($this->file->headers['content-encoding']) - && ($this->file->headers['content-type'] === 'text/plain' - || $this->file->headers['content-type'] === 'text/plain; charset=ISO-8859-1' - || $this->file->headers['content-type'] === 'text/plain; charset=iso-8859-1')) - { - return $this->text_or_binary(); - } - - if (($pos = strpos($this->file->headers['content-type'], ';')) !== false) - { - $official = substr($this->file->headers['content-type'], 0, $pos); - } - else - { - $official = $this->file->headers['content-type']; - } - $official = strtolower($official); - - if ($official === 'unknown/unknown' - || $official === 'application/unknown') - { - return $this->unknown(); - } - elseif (substr($official, -4) === '+xml' - || $official === 'text/xml' - || $official === 'application/xml') - { - return $official; - } - elseif (substr($official, 0, 6) === 'image/') - { - if ($return = $this->image()) - { - return $return; - } - else - { - return $official; - } - } - elseif ($official === 'text/html') - { - return $this->feed_or_html(); - } - else - { - return $official; - } - } - else - { - return $this->unknown(); - } - } - - /** - * Sniff text or binary - * - * @access private - * @return string Actual Content-Type - */ - function text_or_binary() - { - if (substr($this->file->body, 0, 2) === "\xFE\xFF" - || substr($this->file->body, 0, 2) === "\xFF\xFE" - || substr($this->file->body, 0, 4) === "\x00\x00\xFE\xFF" - || substr($this->file->body, 0, 3) === "\xEF\xBB\xBF") - { - return 'text/plain'; - } - elseif (preg_match('/[\x00-\x08\x0E-\x1A\x1C-\x1F]/', $this->file->body)) - { - return 'application/octect-stream'; - } - else - { - return 'text/plain'; - } - } - - /** - * Sniff unknown - * - * @access private - * @return string Actual Content-Type - */ - function unknown() - { - $ws = strspn($this->file->body, "\x09\x0A\x0B\x0C\x0D\x20"); - if (strtolower(substr($this->file->body, $ws, 14)) === 'file->body, $ws, 5)) === 'file->body, $ws, 7)) === 'file->body, 0, 5) === '%PDF-') - { - return 'application/pdf'; - } - elseif (substr($this->file->body, 0, 11) === '%!PS-Adobe-') - { - return 'application/postscript'; - } - elseif (substr($this->file->body, 0, 6) === 'GIF87a' - || substr($this->file->body, 0, 6) === 'GIF89a') - { - return 'image/gif'; - } - elseif (substr($this->file->body, 0, 8) === "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A") - { - return 'image/png'; - } - elseif (substr($this->file->body, 0, 3) === "\xFF\xD8\xFF") - { - return 'image/jpeg'; - } - elseif (substr($this->file->body, 0, 2) === "\x42\x4D") - { - return 'image/bmp'; - } - else - { - return $this->text_or_binary(); - } - } - - /** - * Sniff images - * - * @access private - * @return string Actual Content-Type - */ - function image() - { - if (substr($this->file->body, 0, 6) === 'GIF87a' - || substr($this->file->body, 0, 6) === 'GIF89a') - { - return 'image/gif'; - } - elseif (substr($this->file->body, 0, 8) === "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A") - { - return 'image/png'; - } - elseif (substr($this->file->body, 0, 3) === "\xFF\xD8\xFF") - { - return 'image/jpeg'; - } - elseif (substr($this->file->body, 0, 2) === "\x42\x4D") - { - return 'image/bmp'; - } - else - { - return false; - } - } - - /** - * Sniff HTML - * - * @access private - * @return string Actual Content-Type - */ - function feed_or_html() - { - $len = strlen($this->file->body); - $pos = strspn($this->file->body, "\x09\x0A\x0D\x20"); - - while ($pos < $len) - { - switch ($this->file->body[$pos]) - { - case "\x09": - case "\x0A": - case "\x0D": - case "\x20": - $pos += strspn($this->file->body, "\x09\x0A\x0D\x20", $pos); - continue 2; - - case '<': - $pos++; - break; - - default: - return 'text/html'; - } - - if (substr($this->file->body, $pos, 3) === '!--') - { - $pos += 3; - if ($pos < $len && ($pos = strpos($this->file->body, '-->', $pos)) !== false) - { - $pos += 3; - } - else - { - return 'text/html'; - } - } - elseif (substr($this->file->body, $pos, 1) === '!') - { - if ($pos < $len && ($pos = strpos($this->file->body, '>', $pos)) !== false) - { - $pos++; - } - else - { - return 'text/html'; - } - } - elseif (substr($this->file->body, $pos, 1) === '?') - { - if ($pos < $len && ($pos = strpos($this->file->body, '?>', $pos)) !== false) - { - $pos += 2; - } - else - { - return 'text/html'; - } - } - elseif (substr($this->file->body, $pos, 3) === 'rss' - || substr($this->file->body, $pos, 7) === 'rdf:RDF') - { - return 'application/rss+xml'; - } - elseif (substr($this->file->body, $pos, 4) === 'feed') - { - return 'application/atom+xml'; - } - else - { - return 'text/html'; - } - } - - return 'text/html'; - } -} - -/** - * Parses the XML Declaration - * - * @package SimplePie - */ -class SimplePie_XML_Declaration_Parser -{ - /** - * XML Version - * - * @access public - * @var string - */ - var $version = '1.0'; - - /** - * Encoding - * - * @access public - * @var string - */ - var $encoding = 'UTF-8'; - - /** - * Standalone - * - * @access public - * @var bool - */ - var $standalone = false; - - /** - * Current state of the state machine - * - * @access private - * @var string - */ - var $state = 'before_version_name'; - - /** - * Input data - * - * @access private - * @var string - */ - var $data = ''; - - /** - * Input data length (to avoid calling strlen() everytime this is needed) - * - * @access private - * @var int - */ - var $data_length = 0; - - /** - * Current position of the pointer - * - * @var int - * @access private - */ - var $position = 0; - - /** - * Create an instance of the class with the input data - * - * @access public - * @param string $data Input data - */ - function SimplePie_XML_Declaration_Parser($data) - { - $this->data = $data; - $this->data_length = strlen($this->data); - } - - /** - * Parse the input data - * - * @access public - * @return bool true on success, false on failure - */ - function parse() - { - while ($this->state && $this->state !== 'emit' && $this->has_data()) - { - $state = $this->state; - $this->$state(); - } - $this->data = ''; - if ($this->state === 'emit') - { - return true; - } - else - { - $this->version = ''; - $this->encoding = ''; - $this->standalone = ''; - return false; - } - } - - /** - * Check whether there is data beyond the pointer - * - * @access private - * @return bool true if there is further data, false if not - */ - function has_data() - { - return (bool) ($this->position < $this->data_length); - } - - /** - * Advance past any whitespace - * - * @return int Number of whitespace characters passed - */ - function skip_whitespace() - { - $whitespace = strspn($this->data, "\x09\x0A\x0D\x20", $this->position); - $this->position += $whitespace; - return $whitespace; - } - - /** - * Read value - */ - function get_value() - { - $quote = substr($this->data, $this->position, 1); - if ($quote === '"' || $quote === "'") - { - $this->position++; - $len = strcspn($this->data, $quote, $this->position); - if ($this->has_data()) - { - $value = substr($this->data, $this->position, $len); - $this->position += $len + 1; - return $value; - } - } - return false; - } - - function before_version_name() - { - if ($this->skip_whitespace()) - { - $this->state = 'version_name'; - } - else - { - $this->state = false; - } - } - - function version_name() - { - if (substr($this->data, $this->position, 7) === 'version') - { - $this->position += 7; - $this->skip_whitespace(); - $this->state = 'version_equals'; - } - else - { - $this->state = false; - } - } - - function version_equals() - { - if (substr($this->data, $this->position, 1) === '=') - { - $this->position++; - $this->skip_whitespace(); - $this->state = 'version_value'; - } - else - { - $this->state = false; - } - } - - function version_value() - { - if ($this->version = $this->get_value()) - { - $this->skip_whitespace(); - if ($this->has_data()) - { - $this->state = 'encoding_name'; - } - else - { - $this->state = 'emit'; - } - } - else - { - $this->state = 'standalone_name'; - } - } - - function encoding_name() - { - if (substr($this->data, $this->position, 8) === 'encoding') - { - $this->position += 8; - $this->skip_whitespace(); - $this->state = 'encoding_equals'; - } - else - { - $this->state = false; - } - } - - function encoding_equals() - { - if (substr($this->data, $this->position, 1) === '=') - { - $this->position++; - $this->skip_whitespace(); - $this->state = 'encoding_value'; - } - else - { - $this->state = false; - } - } - - function encoding_value() - { - if ($this->encoding = $this->get_value()) - { - $this->skip_whitespace(); - if ($this->has_data()) - { - $this->state = 'standalone_name'; - } - else - { - $this->state = 'emit'; - } - } - else - { - $this->state = false; - } - } - - function standalone_name() - { - if (substr($this->data, $this->position, 10) === 'standalone') - { - $this->position += 10; - $this->skip_whitespace(); - $this->state = 'standalone_equals'; - } - else - { - $this->state = false; - } - } - - function standalone_equals() - { - if (substr($this->data, $this->position, 1) === '=') - { - $this->position++; - $this->skip_whitespace(); - $this->state = 'standalone_value'; - } - else - { - $this->state = false; - } - } - - function standalone_value() - { - if ($standalone = $this->get_value()) - { - switch ($standalone) - { - case 'yes': - $this->standalone = true; - break; - - case 'no': - $this->standalone = false; - break; - - default: - $this->state = false; - return; - } - - $this->skip_whitespace(); - if ($this->has_data()) - { - $this->state = false; - } - else - { - $this->state = 'emit'; - } - } - else - { - $this->state = false; - } - } -} - -class SimplePie_Locator -{ - var $useragent; - var $timeout; - var $file; - var $local = array(); - var $elsewhere = array(); - var $file_class = 'SimplePie_File'; - var $cached_entities = array(); - var $http_base; - var $base; - var $base_location = 0; - var $checked_feeds = 0; - var $max_checked_feeds = 10; - var $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer'; - - function SimplePie_Locator(&$file, $timeout = 10, $useragent = null, $file_class = 'SimplePie_File', $max_checked_feeds = 10, $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer') - { - $this->file =& $file; - $this->file_class = $file_class; - $this->useragent = $useragent; - $this->timeout = $timeout; - $this->max_checked_feeds = $max_checked_feeds; - $this->content_type_sniffer_class = $content_type_sniffer_class; - } - - function find($type = SIMPLEPIE_LOCATOR_ALL) - { - if ($this->is_feed($this->file)) - { - return $this->file; - } - - if ($this->file->method & SIMPLEPIE_FILE_SOURCE_REMOTE) - { - $sniffer = new $this->content_type_sniffer_class($this->file); - if ($sniffer->get_type() !== 'text/html') - { - return null; - } - } - - if ($type & ~SIMPLEPIE_LOCATOR_NONE) - { - $this->get_base(); - } - - if ($type & SIMPLEPIE_LOCATOR_AUTODISCOVERY && $working = $this->autodiscovery()) - { - return $working; - } - - if ($type & (SIMPLEPIE_LOCATOR_LOCAL_EXTENSION | SIMPLEPIE_LOCATOR_LOCAL_BODY | SIMPLEPIE_LOCATOR_REMOTE_EXTENSION | SIMPLEPIE_LOCATOR_REMOTE_BODY) && $this->get_links()) - { - if ($type & SIMPLEPIE_LOCATOR_LOCAL_EXTENSION && $working = $this->extension($this->local)) - { - return $working; - } - - if ($type & SIMPLEPIE_LOCATOR_LOCAL_BODY && $working = $this->body($this->local)) - { - return $working; - } - - if ($type & SIMPLEPIE_LOCATOR_REMOTE_EXTENSION && $working = $this->extension($this->elsewhere)) - { - return $working; - } - - if ($type & SIMPLEPIE_LOCATOR_REMOTE_BODY && $working = $this->body($this->elsewhere)) - { - return $working; - } - } - return null; - } - - function is_feed(&$file) - { - if ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE) - { - $sniffer = new $this->content_type_sniffer_class($file); - $sniffed = $sniffer->get_type(); - if (in_array($sniffed, array('application/rss+xml', 'application/rdf+xml', 'text/rdf', 'application/atom+xml', 'text/xml', 'application/xml'))) - { - return true; - } - else - { - return false; - } - } - elseif ($file->method & SIMPLEPIE_FILE_SOURCE_LOCAL) - { - return true; - } - else - { - return false; - } - } - - function get_base() - { - $this->http_base = $this->file->url; - $this->base = $this->http_base; - $elements = SimplePie_Misc::get_element('base', $this->file->body); - foreach ($elements as $element) - { - if ($element['attribs']['href']['data'] !== '') - { - $this->base = SimplePie_Misc::absolutize_url(trim($element['attribs']['href']['data']), $this->http_base); - $this->base_location = $element['offset']; - break; - } - } - } - - function autodiscovery() - { - $links = array_merge(SimplePie_Misc::get_element('link', $this->file->body), SimplePie_Misc::get_element('a', $this->file->body), SimplePie_Misc::get_element('area', $this->file->body)); - $done = array(); - foreach ($links as $link) - { - if ($this->checked_feeds == $this->max_checked_feeds) - { - break; - } - if (isset($link['attribs']['href']['data']) && isset($link['attribs']['rel']['data'])) - { - $rel = array_unique(SimplePie_Misc::space_seperated_tokens(strtolower($link['attribs']['rel']['data']))); - - if ($this->base_location < $link['offset']) - { - $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base); - } - else - { - $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base); - } - - if (!in_array($href, $done) && in_array('feed', $rel) || (in_array('alternate', $rel) && !empty($link['attribs']['type']['data']) && in_array(strtolower(SimplePie_Misc::parse_mime($link['attribs']['type']['data'])), array('application/rss+xml', 'application/atom+xml')))) - { - $this->checked_feeds++; - $feed =& new $this->file_class($href, $this->timeout, 5, null, $this->useragent); - if ($this->is_feed($feed)) - { - return $feed; - } - } - $done[] = $href; - } - } - return null; - } - - function get_links() - { - $links = SimplePie_Misc::get_element('a', $this->file->body); - foreach ($links as $link) - { - if (isset($link['attribs']['href']['data'])) - { - $href = trim($link['attribs']['href']['data']); - $parsed = SimplePie_Misc::parse_url($href); - if ($parsed['scheme'] === '' || preg_match('/^(http(s)|feed)?$/i', $parsed['scheme'])) - { - if ($this->base_location < $link['offset']) - { - $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base); - } - else - { - $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base); - } - - $current = SimplePie_Misc::parse_url($this->file->url); - - if ($parsed['authority'] === '' || $parsed['authority'] == $current['authority']) - { - $this->local[] = $href; - } - else - { - $this->elsewhere[] = $href; - } - } - } - } - $this->local = array_unique($this->local); - $this->elsewhere = array_unique($this->elsewhere); - if (!empty($this->local) || !empty($this->elsewhere)) - { - return true; - } - return null; - } - - function extension(&$array) - { - foreach ($array as $key => $value) - { - if ($this->checked_feeds == $this->max_checked_feeds) - { - break; - } - if (in_array(strtolower(strrchr($value, '.')), array('.rss', '.rdf', '.atom', '.xml'))) - { - $this->checked_feeds++; - $feed =& new $this->file_class($value, $this->timeout, 5, null, $this->useragent); - if ($this->is_feed($feed)) - { - return $feed; - } - else - { - unset($array[$key]); - } - } - } - return null; - } - - function body(&$array) - { - foreach ($array as $key => $value) - { - if ($this->checked_feeds == $this->max_checked_feeds) - { - break; - } - if (preg_match('/(rss|rdf|atom|xml)/i', $value)) - { - $this->checked_feeds++; - $feed =& new $this->file_class($value, $this->timeout, 5, null, $this->useragent); - if ($this->is_feed($feed)) - { - return $feed; - } - else - { - unset($array[$key]); - } - } - } - return null; - } -} - -class SimplePie_Parser -{ - var $error_code; - var $error_string; - var $current_line; - var $current_column; - var $current_byte; - var $separator = ' '; - var $feed = false; - var $namespace = array(''); - var $element = array(''); - var $xml_base = array(''); - var $xml_base_explicit = array(false); - var $xml_lang = array(''); - var $data = array(); - var $datas = array(array()); - var $current_xhtml_construct = -1; - var $encoding; - - function parse(&$data, $encoding) - { - // Use UTF-8 if we get passed US-ASCII, as every US-ASCII character is a UTF-8 character - if (strtoupper($encoding) == 'US-ASCII') - { - $this->encoding = 'UTF-8'; - } - else - { - $this->encoding = $encoding; - } - - // Strip BOM: - // UTF-32 Big Endian BOM - if (substr($data, 0, 4) === "\x00\x00\xFE\xFF") - { - $data = substr($data, 4); - } - // UTF-32 Little Endian BOM - elseif (substr($data, 0, 4) === "\xFF\xFE\x00\x00") - { - $data = substr($data, 4); - } - // UTF-16 Big Endian BOM - elseif (substr($data, 0, 2) === "\xFE\xFF") - { - $data = substr($data, 2); - } - // UTF-16 Little Endian BOM - elseif (substr($data, 0, 2) === "\xFF\xFE") - { - $data = substr($data, 2); - } - // UTF-8 BOM - elseif (substr($data, 0, 3) === "\xEF\xBB\xBF") - { - $data = substr($data, 3); - } - - if (substr($data, 0, 5) === '')) !== false) - { - $declaration = new SimplePie_XML_Declaration_Parser(substr($data, 5, $pos - 5)); - if ($declaration->parse()) - { - $data = substr($data, $pos + 2); - $data = 'version . '" encoding="' . $encoding . '" standalone="' . (($declaration->standalone) ? 'yes' : 'no') . '"?>' . $data; - } - else - { - $this->error_string = 'SimplePie bug! Please report this!'; - return false; - } - } - - // Work around libxml bug - $data = str_replace('<', '<', $data); - $data = str_replace('>', '>', $data); - $data = str_replace('&', '&', $data); - $data = str_replace(''', ''', $data); - $data = str_replace('"', '"', $data); - - $return = true; - - // Create the parser - $xml = xml_parser_create_ns($this->encoding, $this->separator); - xml_parser_set_option($xml, XML_OPTION_SKIP_WHITE, 1); - xml_parser_set_option($xml, XML_OPTION_CASE_FOLDING, 0); - xml_set_object($xml, $this); - xml_set_character_data_handler($xml, 'cdata'); - xml_set_element_handler($xml, 'tag_open', 'tag_close'); - - // Parse! - if (!xml_parse($xml, $data, true)) - { - $this->error_code = xml_get_error_code($xml); - $this->error_string = xml_error_string($this->error_code); - $return = false; - } - $this->current_line = xml_get_current_line_number($xml); - $this->current_column = xml_get_current_column_number($xml); - $this->current_byte = xml_get_current_byte_index($xml); - xml_parser_free($xml); - return $return; - } - - function get_error_code() - { - return $this->error_code; - } - - function get_error_string() - { - return $this->error_string; - } - - function get_current_line() - { - return $this->current_line; - } - - function get_current_column() - { - return $this->current_column; - } - - function get_current_byte() - { - return $this->current_byte; - } - - function get_data() - { - return $this->data; - } - - function tag_open($parser, $tag, $attributes) - { - if ($this->feed === 0) - { - return; - } - elseif ($this->feed == false) - { - if (in_array($tag, array( - SIMPLEPIE_NAMESPACE_ATOM_10 . $this->separator . 'feed', - SIMPLEPIE_NAMESPACE_ATOM_03 . $this->separator . 'feed', - 'rss', - SIMPLEPIE_NAMESPACE_RDF . $this->separator . 'RDF' - ))) - { - $this->feed = 1; - } - } - else - { - $this->feed++; - } - - list($this->namespace[], $this->element[]) = $this->split_ns($tag); - - $attribs = array(); - foreach ($attributes as $name => $value) - { - list($attrib_namespace, $attribute) = $this->split_ns($name); - $attribs[$attrib_namespace][$attribute] = $value; - } - - if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['base'])) - { - $this->xml_base[] = SimplePie_Misc::absolutize_url($attribs[SIMPLEPIE_NAMESPACE_XML]['base'], end($this->xml_base)); - $this->xml_base_explicit[] = true; - } - else - { - $this->xml_base[] = end($this->xml_base); - $this->xml_base_explicit[] = end($this->xml_base_explicit); - } - - if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['lang'])) - { - $this->xml_lang[] = $attribs[SIMPLEPIE_NAMESPACE_XML]['lang']; - } - else - { - $this->xml_lang[] = end($this->xml_lang); - } - - if ($this->current_xhtml_construct >= 0) - { - $this->current_xhtml_construct++; - if (end($this->namespace) == SIMPLEPIE_NAMESPACE_XHTML) - { - $this->data['data'] .= '<' . end($this->element); - if (isset($attribs[''])) - { - foreach ($attribs[''] as $name => $value) - { - $this->data['data'] .= ' ' . $name . '="' . htmlspecialchars($value, ENT_COMPAT, $this->encoding) . '"'; - } - } - $this->data['data'] .= '>'; - } - } - else - { - $this->datas[] =& $this->data; - $this->data =& $this->data['child'][end($this->namespace)][end($this->element)][]; - $this->data = array('data' => '', 'attribs' => $attribs, 'xml_base' => end($this->xml_base), 'xml_base_explicit' => end($this->xml_base_explicit), 'xml_lang' => end($this->xml_lang)); - if ((end($this->namespace) == SIMPLEPIE_NAMESPACE_ATOM_03 && in_array(end($this->element), array('title', 'tagline', 'copyright', 'info', 'summary', 'content')) && isset($attribs['']['mode']) && $attribs['']['mode'] == 'xml') - || (end($this->namespace) == SIMPLEPIE_NAMESPACE_ATOM_10 && in_array(end($this->element), array('rights', 'subtitle', 'summary', 'info', 'title', 'content')) && isset($attribs['']['type']) && $attribs['']['type'] == 'xhtml')) - { - $this->current_xhtml_construct = 0; - } - } - } - - function cdata($parser, $cdata) - { - if ($this->current_xhtml_construct >= 0) - { - $this->data['data'] .= htmlspecialchars($cdata, ENT_QUOTES, $this->encoding); - } - elseif ($this->feed > 1) - { - $this->data['data'] .= $cdata; - } - } - - function tag_close($parser, $tag) - { - if (!$this->feed) - { - return; - } - - if ($this->current_xhtml_construct >= 0) - { - $this->current_xhtml_construct--; - if (end($this->namespace) == SIMPLEPIE_NAMESPACE_XHTML && !in_array(end($this->element), array('area', 'base', 'basefont', 'br', 'col', 'frame', 'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param'))) - { - $this->data['data'] .= 'element) . '>'; - } - } - if ($this->current_xhtml_construct == -1) - { - $this->data =& $this->datas[$this->feed]; - array_pop($this->datas); - } - - array_pop($this->element); - array_pop($this->namespace); - array_pop($this->xml_base); - array_pop($this->xml_base_explicit); - array_pop($this->xml_lang); - $this->feed--; - } - - function split_ns($string) - { - static $cache = array(); - if (!isset($cache[$string])) - { - if ($pos = strpos($string, $this->separator)) - { - static $separator_length; - if (!$separator_length) - { - $separator_length = strlen($this->separator); - } - $namespace = substr($string, 0, $pos); - $local_name = substr($string, $pos + $separator_length); - if (strtolower($namespace) === SIMPLEPIE_NAMESPACE_ITUNES) - { - $namespace = SIMPLEPIE_NAMESPACE_ITUNES; - } - - // Normalize the Media RSS namespaces - if ($namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG) - { - $namespace = SIMPLEPIE_NAMESPACE_MEDIARSS; - } - $cache[$string] = array($namespace, $local_name); - } - else - { - $cache[$string] = array('', $string); - } - } - return $cache[$string]; - } -} - -/** - * @todo Move to using an actual HTML parser (this will allow tags to be properly stripped, and to switch between HTML and XHTML), this will also make it easier to shorten a string while preserving HTML tags - */ -class SimplePie_Sanitize -{ - // Private vars - var $base; - - // Options - var $remove_div = true; - var $image_handler = ''; - var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'); - var $encode_instead_of_strip = false; - var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'); - var $strip_comments = false; - var $output_encoding = 'UTF-8'; - var $enable_cache = true; - var $cache_location = './cache'; - var $cache_name_function = 'md5'; - var $cache_class = 'SimplePie_Cache'; - var $file_class = 'SimplePie_File'; - var $timeout = 10; - var $useragent = ''; - var $force_fsockopen = false; - - var $replace_url_attributes = array( - 'a' => 'href', - 'area' => 'href', - 'blockquote' => 'cite', - 'del' => 'cite', - 'form' => 'action', - 'img' => array('longdesc', 'src'), - 'input' => 'src', - 'ins' => 'cite', - 'q' => 'cite' - ); - - function remove_div($enable = true) - { - $this->remove_div = (bool) $enable; - } - - function set_image_handler($page = false) - { - if ($page) - { - $this->image_handler = (string) $page; - } - else - { - $this->image_handler = false; - } - } - - function pass_cache_data($enable_cache = true, $cache_location = './cache', $cache_name_function = 'md5', $cache_class = 'SimplePie_Cache') - { - if (isset($enable_cache)) - { - $this->enable_cache = (bool) $enable_cache; - } - - if ($cache_location) - { - $this->cache_location = (string) $cache_location; - } - - if ($cache_name_function) - { - $this->cache_name_function = (string) $cache_name_function; - } - - if ($cache_class) - { - $this->cache_class = (string) $cache_class; - } - } - - function pass_file_data($file_class = 'SimplePie_File', $timeout = 10, $useragent = '', $force_fsockopen = false) - { - if ($file_class) - { - $this->file_class = (string) $file_class; - } - - if ($timeout) - { - $this->timeout = (string) $timeout; - } - - if ($useragent) - { - $this->useragent = (string) $useragent; - } - - if ($force_fsockopen) - { - $this->force_fsockopen = (string) $force_fsockopen; - } - } - - function strip_htmltags($tags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style')) - { - if ($tags) - { - if (is_array($tags)) - { - $this->strip_htmltags = $tags; - } - else - { - $this->strip_htmltags = explode(',', $tags); - } - } - else - { - $this->strip_htmltags = false; - } - } - - function encode_instead_of_strip($encode = false) - { - $this->encode_instead_of_strip = (bool) $encode; - } - - function strip_attributes($attribs = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc')) - { - if ($attribs) - { - if (is_array($attribs)) - { - $this->strip_attributes = $attribs; - } - else - { - $this->strip_attributes = explode(',', $attribs); - } - } - else - { - $this->strip_attributes = false; - } - } - - function strip_comments($strip = false) - { - $this->strip_comments = (bool) $strip; - } - - function set_output_encoding($encoding = 'UTF-8') - { - $this->output_encoding = (string) $encoding; - } - - /** - * Set element/attribute key/value pairs of HTML attributes - * containing URLs that need to be resolved relative to the feed - * - * @access public - * @since 1.0 - * @param array $element_attribute Element/attribute key/value pairs - */ - function set_url_replacements($element_attribute = array('a' => 'href', 'area' => 'href', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', 'img' => array('longdesc', 'src'), 'input' => 'src', 'ins' => 'cite', 'q' => 'cite')) - { - $this->replace_url_attributes = (array) $element_attribute; - } - - function sanitize($data, $type, $base = '') - { - $data = trim($data); - if ($data !== '' || $type & SIMPLEPIE_CONSTRUCT_IRI) - { - if ($type & SIMPLEPIE_CONSTRUCT_MAYBE_HTML) - { - if (preg_match('/(&(#(x[0-9a-fA-F]+|[0-9]+)|[a-zA-Z0-9]+)|<\/[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>)/', $data)) - { - $type |= SIMPLEPIE_CONSTRUCT_HTML; - } - else - { - $type |= SIMPLEPIE_CONSTRUCT_TEXT; - } - } - - if ($type & SIMPLEPIE_CONSTRUCT_BASE64) - { - $data = base64_decode($data); - } - - if ($type & SIMPLEPIE_CONSTRUCT_XHTML) - { - if ($this->remove_div) - { - $data = preg_replace('/^/', '', $data); - $data = preg_replace('/<\/div>$/', '', $data); - } - else - { - $data = preg_replace('/^/', '
    ', $data); - } - } - - if ($type & (SIMPLEPIE_CONSTRUCT_HTML | SIMPLEPIE_CONSTRUCT_XHTML)) - { - // Strip comments - if ($this->strip_comments) - { - $data = SimplePie_Misc::strip_comments($data); - } - - // Strip out HTML tags and attributes that might cause various security problems. - // Based on recommendations by Mark Pilgrim at: - // http://diveintomark.org/archives/2003/06/12/how_to_consume_rss_safely - if ($this->strip_htmltags) - { - foreach ($this->strip_htmltags as $tag) - { - $pcre = "/<($tag)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$tag" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>|(\/)?>)/siU'; - while (preg_match($pcre, $data)) - { - $data = preg_replace_callback($pcre, array(&$this, 'do_strip_htmltags'), $data); - } - } - } - - if ($this->strip_attributes) - { - foreach ($this->strip_attributes as $attrib) - { - $data = preg_replace('/(<[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*)' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . trim($attrib) . '(?:\s*=\s*(?:"(?:[^"]*)"|\'(?:[^\']*)\'|(?:[^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>/', '\1\2\3>', $data); - } - } - - // Replace relative URLs - $this->base = $base; - foreach ($this->replace_url_attributes as $element => $attributes) - { - $data = $this->replace_urls($data, $element, $attributes); - } - - // If image handling (caching, etc.) is enabled, cache and rewrite all the image tags. - if (isset($this->image_handler) && ((string) $this->image_handler) !== '' && $this->enable_cache) - { - $images = SimplePie_Misc::get_element('img', $data); - foreach ($images as $img) - { - if (isset($img['attribs']['src']['data'])) - { - $image_url = call_user_func($this->cache_name_function, $img['attribs']['src']['data']); - $cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, $image_url, 'spi'); - - if ($cache->load()) - { - $img['attribs']['src']['data'] = $this->image_handler . $image_url; - $data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data); - } - else - { - $file =& new $this->file_class($img['attribs']['src']['data'], $this->timeout, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen); - $headers = $file->headers; - - if ($file->success && ($file->status_code == 200 || ($file->status_code > 206 && $file->status_code < 300))) - { - if ($cache->save(array('headers' => $file->headers, 'body' => $file->body))) - { - $img['attribs']['src']['data'] = $this->image_handler . $image_url; - $data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data); - } - else - { - trigger_error("$cache->name is not writeable", E_USER_WARNING); - } - } - } - } - } - } - - // Having (possibly) taken stuff out, there may now be whitespace at the beginning/end of the data - $data = trim($data); - } - - if ($type & SIMPLEPIE_CONSTRUCT_IRI) - { - $data = SimplePie_Misc::absolutize_url($data, $base); - } - - if ($type & (SIMPLEPIE_CONSTRUCT_TEXT | SIMPLEPIE_CONSTRUCT_IRI)) - { - $data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8'); - } - - if ($this->output_encoding != 'UTF-8') - { - $data = SimplePie_Misc::change_encoding($data, 'UTF-8', $this->output_encoding); - } - } - return $data; - } - - function replace_urls($data, $tag, $attributes) - { - if (!is_array($this->strip_htmltags) || !in_array($tag, $this->strip_htmltags)) - { - $elements = SimplePie_Misc::get_element($tag, $data); - foreach ($elements as $element) - { - if (is_array($attributes)) - { - foreach ($attributes as $attribute) - { - if (isset($element['attribs'][$attribute]['data'])) - { - $element['attribs'][$attribute]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attribute]['data'], $this->base); - $new_element = SimplePie_Misc::element_implode($element); - $data = str_replace($element['full'], $new_element, $data); - $element['full'] = $new_element; - } - } - } - elseif (isset($element['attribs'][$attributes]['data'])) - { - $element['attribs'][$attributes]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attributes]['data'], $this->base); - $data = str_replace($element['full'], SimplePie_Misc::element_implode($element), $data); - } - } - } - return $data; - } - - function do_strip_htmltags($match) - { - if ($this->encode_instead_of_strip) - { - if (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style'))) - { - $match[1] = htmlspecialchars($match[1], ENT_COMPAT, 'UTF-8'); - $match[2] = htmlspecialchars($match[2], ENT_COMPAT, 'UTF-8'); - return "<$match[1]$match[2]>$match[3]</$match[1]>"; - } - else - { - return htmlspecialchars($match[0], ENT_COMPAT, 'UTF-8'); - } - } - elseif (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style'))) - { - return $match[4]; - } - else - { - return ''; - } - } -} - -?> diff --git a/lib/timezones.txt b/lib/timezones.txt new file mode 100644 index 0000000000..58108f031e --- /dev/null +++ b/lib/timezones.txt @@ -0,0 +1,568 @@ +Automatic +Africa/Abidjan +Africa/Accra +Africa/Addis_Ababa +Africa/Algiers +Africa/Asmara +Africa/Asmera +Africa/Bamako +Africa/Bangui +Africa/Banjul +Africa/Bissau +Africa/Blantyre +Africa/Brazzaville +Africa/Bujumbura +Africa/Cairo +Africa/Casablanca +Africa/Ceuta +Africa/Conakry +Africa/Dakar +Africa/Dar_es_Salaam +Africa/Djibouti +Africa/Douala +Africa/El_Aaiun +Africa/Freetown +Africa/Gaborone +Africa/Harare +Africa/Johannesburg +Africa/Kampala +Africa/Khartoum +Africa/Kigali +Africa/Kinshasa +Africa/Lagos +Africa/Libreville +Africa/Lome +Africa/Luanda +Africa/Lubumbashi +Africa/Lusaka +Africa/Malabo +Africa/Maputo +Africa/Maseru +Africa/Mbabane +Africa/Mogadishu +Africa/Monrovia +Africa/Nairobi +Africa/Ndjamena +Africa/Niamey +Africa/Nouakchott +Africa/Ouagadougou +Africa/Porto-Novo +Africa/Sao_Tome +Africa/Timbuktu +Africa/Tripoli +Africa/Tunis +Africa/Windhoek +America/Adak +America/Anchorage +America/Anguilla +America/Antigua +America/Araguaina +America/Argentina/Buenos_Aires +America/Argentina/Catamarca +America/Argentina/ComodRivadavia +America/Argentina/Cordoba +America/Argentina/Jujuy +America/Argentina/La_Rioja +America/Argentina/Mendoza +America/Argentina/Rio_Gallegos +America/Argentina/Salta +America/Argentina/San_Juan +America/Argentina/San_Luis +America/Argentina/Tucuman +America/Argentina/Ushuaia +America/Aruba +America/Asuncion +America/Atikokan +America/Atka +America/Bahia +America/Bahia_Banderas +America/Barbados +America/Belem +America/Belize +America/Blanc-Sablon +America/Boa_Vista +America/Bogota +America/Boise +America/Buenos_Aires +America/Cambridge_Bay +America/Campo_Grande +America/Cancun +America/Caracas +America/Catamarca +America/Cayenne +America/Cayman +America/Chicago +America/Chihuahua +America/Coral_Harbour +America/Cordoba +America/Costa_Rica +America/Cuiaba +America/Curacao +America/Danmarkshavn +America/Dawson +America/Dawson_Creek +America/Denver +America/Detroit +America/Dominica +America/Edmonton +America/Eirunepe +America/El_Salvador +America/Ensenada +America/Fort_Wayne +America/Fortaleza +America/Glace_Bay +America/Godthab +America/Goose_Bay +America/Grand_Turk +America/Grenada +America/Guadeloupe +America/Guatemala +America/Guayaquil +America/Guyana +America/Halifax +America/Havana +America/Hermosillo +America/Indiana/Indianapolis +America/Indiana/Knox +America/Indiana/Marengo +America/Indiana/Petersburg +America/Indiana/Tell_City +America/Indiana/Vevay +America/Indiana/Vincennes +America/Indiana/Winamac +America/Indianapolis +America/Inuvik +America/Iqaluit +America/Jamaica +America/Jujuy +America/Juneau +America/Kentucky/Louisville +America/Kentucky/Monticello +America/Knox_IN +America/La_Paz +America/Lima +America/Los_Angeles +America/Louisville +America/Maceio +America/Managua +America/Manaus +America/Marigot +America/Martinique +America/Matamoros +America/Mazatlan +America/Mendoza +America/Menominee +America/Merida +America/Mexico_City +America/Miquelon +America/Moncton +America/Monterrey +America/Montevideo +America/Montreal +America/Montserrat +America/Nassau +America/New_York +America/Nipigon +America/Nome +America/Noronha +America/North_Dakota/Center +America/North_Dakota/New_Salem +America/Ojinaga +America/Panama +America/Pangnirtung +America/Paramaribo +America/Phoenix +America/Port-au-Prince +America/Port_of_Spain +America/Porto_Acre +America/Porto_Velho +America/Puerto_Rico +America/Rainy_River +America/Rankin_Inlet +America/Recife +America/Regina +America/Resolute +America/Rio_Branco +America/Rosario +America/Santa_Isabel +America/Santarem +America/Santiago +America/Santo_Domingo +America/Sao_Paulo +America/Scoresbysund +America/Shiprock +America/St_Barthelemy +America/St_Johns +America/St_Kitts +America/St_Lucia +America/St_Thomas +America/St_Vincent +America/Swift_Current +America/Tegucigalpa +America/Thule +America/Thunder_Bay +America/Tijuana +America/Toronto +America/Tortola +America/Vancouver +America/Virgin +America/Whitehorse +America/Winnipeg +America/Yakutat +America/Yellowknife +Antarctica/Casey +Antarctica/Davis +Antarctica/DumontDUrville +Antarctica/Macquarie +Antarctica/Mawson +Antarctica/McMurdo +Antarctica/Palmer +Antarctica/Rothera +Antarctica/South_Pole +Antarctica/Syowa +Antarctica/Vostok +Arctic/Longyearbyen +Asia/Aden +Asia/Almaty +Asia/Amman +Asia/Anadyr +Asia/Aqtau +Asia/Aqtobe +Asia/Ashgabat +Asia/Ashkhabad +Asia/Baghdad +Asia/Bahrain +Asia/Baku +Asia/Bangkok +Asia/Beirut +Asia/Bishkek +Asia/Brunei +Asia/Calcutta +Asia/Choibalsan +Asia/Chongqing +Asia/Chungking +Asia/Colombo +Asia/Dacca +Asia/Damascus +Asia/Dhaka +Asia/Dili +Asia/Dubai +Asia/Dushanbe +Asia/Gaza +Asia/Harbin +Asia/Ho_Chi_Minh +Asia/Hong_Kong +Asia/Hovd +Asia/Irkutsk +Asia/Istanbul +Asia/Jakarta +Asia/Jayapura +Asia/Jerusalem +Asia/Kabul +Asia/Kamchatka +Asia/Karachi +Asia/Kashgar +Asia/Kathmandu +Asia/Katmandu +Asia/Kolkata +Asia/Krasnoyarsk +Asia/Kuala_Lumpur +Asia/Kuching +Asia/Kuwait +Asia/Macao +Asia/Macau +Asia/Magadan +Asia/Makassar +Asia/Manila +Asia/Muscat +Asia/Nicosia +Asia/Novokuznetsk +Asia/Novosibirsk +Asia/Omsk +Asia/Oral +Asia/Phnom_Penh +Asia/Pontianak +Asia/Pyongyang +Asia/Qatar +Asia/Qyzylorda +Asia/Rangoon +Asia/Riyadh +Asia/Saigon +Asia/Sakhalin +Asia/Samarkand +Asia/Seoul +Asia/Shanghai +Asia/Singapore +Asia/Taipei +Asia/Tashkent +Asia/Tbilisi +Asia/Tehran +Asia/Tel_Aviv +Asia/Thimbu +Asia/Thimphu +Asia/Tokyo +Asia/Ujung_Pandang +Asia/Ulaanbaatar +Asia/Ulan_Bator +Asia/Urumqi +Asia/Vientiane +Asia/Vladivostok +Asia/Yakutsk +Asia/Yekaterinburg +Asia/Yerevan +Atlantic/Azores +Atlantic/Bermuda +Atlantic/Canary +Atlantic/Cape_Verde +Atlantic/Faeroe +Atlantic/Faroe +Atlantic/Jan_Mayen +Atlantic/Madeira +Atlantic/Reykjavik +Atlantic/South_Georgia +Atlantic/St_Helena +Atlantic/Stanley +Australia/ACT +Australia/Adelaide +Australia/Brisbane +Australia/Broken_Hill +Australia/Canberra +Australia/Currie +Australia/Darwin +Australia/Eucla +Australia/Hobart +Australia/LHI +Australia/Lindeman +Australia/Lord_Howe +Australia/Melbourne +Australia/North +Australia/NSW +Australia/Perth +Australia/Queensland +Australia/South +Australia/Sydney +Australia/Tasmania +Australia/Victoria +Australia/West +Australia/Yancowinna +Brazil/Acre +Brazil/DeNoronha +Brazil/East +Brazil/West +Canada/Atlantic +Canada/Central +Canada/East-Saskatchewan +Canada/Eastern +Canada/Mountain +Canada/Newfoundland +Canada/Pacific +Canada/Saskatchewan +Canada/Yukon +CET +Chile/Continental +Chile/EasterIsland +CST6CDT +Cuba +EET +Egypt +Eire +EST +EST5EDT +Etc/GMT +Etc/GMT+0 +Etc/GMT+1 +Etc/GMT+10 +Etc/GMT+11 +Etc/GMT+12 +Etc/GMT+2 +Etc/GMT+3 +Etc/GMT+4 +Etc/GMT+5 +Etc/GMT+6 +Etc/GMT+7 +Etc/GMT+8 +Etc/GMT+9 +Etc/GMT-0 +Etc/GMT-1 +Etc/GMT-10 +Etc/GMT-11 +Etc/GMT-12 +Etc/GMT-13 +Etc/GMT-14 +Etc/GMT-2 +Etc/GMT-3 +Etc/GMT-4 +Etc/GMT-5 +Etc/GMT-6 +Etc/GMT-7 +Etc/GMT-8 +Etc/GMT-9 +Etc/GMT0 +Etc/Greenwich +Etc/UCT +Etc/Universal +Etc/UTC +Etc/Zulu +Europe/Amsterdam +Europe/Andorra +Europe/Athens +Europe/Belfast +Europe/Belgrade +Europe/Berlin +Europe/Bratislava +Europe/Brussels +Europe/Bucharest +Europe/Budapest +Europe/Chisinau +Europe/Copenhagen +Europe/Dublin +Europe/Gibraltar +Europe/Guernsey +Europe/Helsinki +Europe/Isle_of_Man +Europe/Istanbul +Europe/Jersey +Europe/Kaliningrad +Europe/Kiev +Europe/Lisbon +Europe/Ljubljana +Europe/London +Europe/Luxembourg +Europe/Madrid +Europe/Malta +Europe/Mariehamn +Europe/Minsk +Europe/Monaco +Europe/Moscow +Europe/Nicosia +Europe/Oslo +Europe/Paris +Europe/Podgorica +Europe/Prague +Europe/Riga +Europe/Rome +Europe/Samara +Europe/San_Marino +Europe/Sarajevo +Europe/Simferopol +Europe/Skopje +Europe/Sofia +Europe/Stockholm +Europe/Tallinn +Europe/Tirane +Europe/Tiraspol +Europe/Uzhgorod +Europe/Vaduz +Europe/Vatican +Europe/Vienna +Europe/Vilnius +Europe/Volgograd +Europe/Warsaw +Europe/Zagreb +Europe/Zaporozhye +Europe/Zurich +Factory +GB +GB-Eire +GMT +GMT+0 +GMT-0 +GMT0 +Greenwich +Hongkong +HST +Iceland +Indian/Antananarivo +Indian/Chagos +Indian/Christmas +Indian/Cocos +Indian/Comoro +Indian/Kerguelen +Indian/Mahe +Indian/Maldives +Indian/Mauritius +Indian/Mayotte +Indian/Reunion +Iran +Israel +Jamaica +Japan +Kwajalein +Libya +MET +Mexico/BajaNorte +Mexico/BajaSur +Mexico/General +MST +MST7MDT +Navajo +NZ +NZ-CHAT +Pacific/Apia +Pacific/Auckland +Pacific/Chatham +Pacific/Chuuk +Pacific/Easter +Pacific/Efate +Pacific/Enderbury +Pacific/Fakaofo +Pacific/Fiji +Pacific/Funafuti +Pacific/Galapagos +Pacific/Gambier +Pacific/Guadalcanal +Pacific/Guam +Pacific/Honolulu +Pacific/Johnston +Pacific/Kiritimati +Pacific/Kosrae +Pacific/Kwajalein +Pacific/Majuro +Pacific/Marquesas +Pacific/Midway +Pacific/Nauru +Pacific/Niue +Pacific/Norfolk +Pacific/Noumea +Pacific/Pago_Pago +Pacific/Palau +Pacific/Pitcairn +Pacific/Pohnpei +Pacific/Ponape +Pacific/Port_Moresby +Pacific/Rarotonga +Pacific/Saipan +Pacific/Samoa +Pacific/Tahiti +Pacific/Tarawa +Pacific/Tongatapu +Pacific/Truk +Pacific/Wake +Pacific/Wallis +Pacific/Yap +Poland +Portugal +PRC +PST8PDT +ROC +ROK +Singapore +Turkey +UCT +Universal +US/Alaska +US/Aleutian +US/Arizona +US/Central +US/East-Indiana +US/Eastern +US/Hawaii +US/Indiana-Starke +US/Michigan +US/Mountain +US/Pacific +US/Pacific-New +US/Samoa +UTC +W-SU +WET diff --git a/lib/xmlrpc/README b/lib/xmlrpc/README deleted file mode 100644 index 2c90683bf6..0000000000 --- a/lib/xmlrpc/README +++ /dev/null @@ -1,11 +0,0 @@ -Place lib folder from xmlrpc-2.0 here like this: - -lib -lib/compat -lib/compat/array_key_exists.php -lib/compat/is_a.php -lib/compat/is_scalar.php -lib/compat/var_export.php -lib/compat/version_compare.php -lib/xmlrpc.inc -lib/xmlrpcs.inc diff --git a/lib/xmlrpc/filelist.txt b/lib/xmlrpc/filelist.txt deleted file mode 100644 index c4d634a8a6..0000000000 --- a/lib/xmlrpc/filelist.txt +++ /dev/null @@ -1,14 +0,0 @@ -. -./lib -./lib/compat -./lib/compat/array_key_exists.php -./lib/compat/is_a.php -./lib/compat/is_scalar.php -./lib/compat/var_export.php -./lib/compat/version_compare.php -./lib/xmlrpc.inc -./lib/xmlrpcs.inc -./NEWS -./README -./.empty -./filelist.txt diff --git a/locale/.htaccess b/locale/.htaccess new file mode 100644 index 0000000000..93169e4eb4 --- /dev/null +++ b/locale/.htaccess @@ -0,0 +1,2 @@ +Order deny,allow +Deny from all diff --git a/locale/ar_SA/LC_MESSAGES/messages.mo b/locale/ar_SA/LC_MESSAGES/messages.mo new file mode 100755 index 0000000000..2e4ad22c8b Binary files /dev/null and b/locale/ar_SA/LC_MESSAGES/messages.mo differ diff --git a/locale/ar_SA/LC_MESSAGES/messages.po b/locale/ar_SA/LC_MESSAGES/messages.po new file mode 100755 index 0000000000..45015732af --- /dev/null +++ b/locale/ar_SA/LC_MESSAGES/messages.po @@ -0,0 +1,3738 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: TinyTinyRSS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2014-08-13 19:15+0300\n" +"Last-Translator: عبد الناصر سعيد الثبيتي \n" +"Language-Team: Arabic \n" +"Language: ar_SA\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.6.7\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: backend.php:73 +msgid "Use default" +msgstr "استخدم Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ" + +#: backend.php:74 +msgid "Never purge" +msgstr "لاتنظ٠أبداً" + +#: backend.php:75 +msgid "1 week old" +msgstr "منذ أسبوع" + +#: backend.php:76 +msgid "2 weeks old" +msgstr "منذ أسبوعين" + +#: backend.php:77 +msgid "1 month old" +msgstr "منذ شهر" + +#: backend.php:78 +msgid "2 months old" +msgstr "منذ شهرين" + +#: backend.php:79 +msgid "3 months old" +msgstr "منذ Ù£ أشهر" + +#: backend.php:82 +msgid "Default interval" +msgstr "المدة Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠØ©" + +#: backend.php:83 +#: backend.php:93 +msgid "Disable updates" +msgstr "عطّل التحديثات" + +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" +msgstr "كل ١٥ دقيقة" + +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" +msgstr "كل ٣٠ دقيقة" + +#: backend.php:86 +#: backend.php:96 +msgid "Hourly" +msgstr "كل ساعة" + +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" +msgstr "كل Ù¤ ساعات" + +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" +msgstr "كل ١٢ ساعة" + +#: backend.php:89 +#: backend.php:99 +msgid "Daily" +msgstr "يومياً" + +#: backend.php:90 +#: backend.php:100 +msgid "Weekly" +msgstr "أسبوعياً" + +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 +msgid "User" +msgstr "المستخدم" + +#: backend.php:104 +msgid "Power User" +msgstr "المستخدم الضليع" + +#: backend.php:105 +msgid "Administrator" +msgstr "المسؤول" + +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "يتطلب هذا البرنامج XmlHttpRequest ليعمل بشكل صحيح. يبدو أن المستعرض لديك لايدعم XmlHttpRequest." + +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "يتطلب هذا البرنامج Ù…Ù„ÙØ§Øª تعري٠الارتباط (الكوكيز) ليعمل بشكل صحيح. يبدو أن المستعرض لديك لايدعمها." + +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "ÙØ´Ù„ ÙØ­Øµ السلامة ÙÙŠ الخلÙية" + +#: errors.php:17 +msgid "Frontend sanity check failed." +msgstr "ÙØ´Ù„ ÙØ­Øµ السلامة الأمامي" + +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "إصدار مختطة قاعدة البيانات غير صحيح. <a href='db-updater.php'>يرجى التحديث</a>." + +#: errors.php:21 +msgid "Request not authorized." +msgstr "الطلب غير مخوَّل." + +#: errors.php:23 +msgid "No operation to perform." +msgstr "لاتوجد عملية للتنÙيذ." + +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "لم يمكن عرض الخلاصة: ÙØ´Ù„ الاستعلام. ÙØ¶Ù„اً Ø§ÙØ­Øµ قواعد مطابقة التسمية أو الإعدادات المحليّة." + +#: errors.php:27 +msgid "Denied. Your access level is insufficient to access this page." +msgstr "مرÙوض. مستوى الوصول الخاص بك غير كاÙ٠للوصول إلى هذه Ø§Ù„ØµÙØ­Ø©." + +#: errors.php:29 +msgid "Configuration check failed" +msgstr "ÙØ´Ù„ ÙØ­Øµ الإعدادات" + +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "إصدار الـ MySQL الموجود لديك غير مدعوم حالياً. ÙØ¶Ù„اً أنظر الموقع الرسمي للمزيد من المعلومات." + +#: errors.php:35 +msgid "SQL escaping test failed, check your database and PHP configuration" +msgstr "ÙØ´Ù„ ÙØ­Øµ هروب Ø´ÙØ±Ø© SQL ØŒ تحقق من إعدادات قاعدة البيانات Ùˆ PHP لديك." + +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "لم أجد الخلاصة." + +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "مستخدم غير موجود" + +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "التحميل جارÙ. ÙØ¶Ù„اً انتظر..." + +#: index.php:167 +msgid "Collapse feedlist" +msgstr "طيّ قائمة الخلاصات" + +#: index.php:170 +msgid "Show articles" +msgstr "إعرض البنود" + +#: index.php:173 +msgid "Adaptive" +msgstr "العرض التكيÙÙ‘ÙÙŠ/الأمثل" + +#: index.php:174 +msgid "All Articles" +msgstr "كل البنود" + +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "معلَّم بنجمة" + +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "منشور" + +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 +msgid "Unread" +msgstr "لم ÙŠÙقرأ" + +#: index.php:178 +msgid "With Note" +msgstr "مع ملاحظة" + +#: index.php:179 +msgid "Ignore Scoring" +msgstr "تجاهل النقاط" + +#: index.php:182 +msgid "Sort articles" +msgstr "رتÙّب البنود" + +#: index.php:185 +msgid "Default" +msgstr "Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ" + +#: index.php:186 +msgid "Newest first" +msgstr "الأحدث أولاً" + +#: index.php:187 +msgid "Oldest first" +msgstr "الأقدم أولاً" + +#: index.php:188 +msgid "Title" +msgstr "العنوان" + +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 +msgid "Mark as read" +msgstr "ضع علامة مقروء" + +#: index.php:195 +msgid "Older than one day" +msgstr "أقدم من يوم" + +#: index.php:198 +msgid "Older than one week" +msgstr "أقدم من أسبوع" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "أقدم من أسبوعين" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "مشكلة ÙÙŠ الاتصال بالخادم" + +#: index.php:223 +msgid "Actions..." +msgstr "إجراءات..." + +#: index.php:225 +msgid "Preferences..." +msgstr "خيارات..." + +#: index.php:226 +msgid "Search..." +msgstr "بحث..." + +#: index.php:227 +msgid "Feed actions:" +msgstr "إجراءات الخلاصة:" + +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "إشترك ÙÙŠ الخلاصة..." + +#: index.php:229 +msgid "Edit this feed..." +msgstr "تحرير هذه الخلاصة..." + +#: index.php:230 +msgid "Rescore feed" +msgstr "إعادة حساب نقاط الخلاصة" + +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "إلغاء الاشتراك" + +#: index.php:232 +msgid "All feeds:" +msgstr "كل الخلاصات:" + +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "إظهار/Ø¥Ø®ÙØ§Ø¡ الخلاصات المقروءة" + +#: index.php:235 +msgid "Other actions:" +msgstr "إجراءات أخرى:" + +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "بدÙّل وضع الشاشة العريضة" + +#: index.php:237 +msgid "Create label..." +msgstr "أنشئ تسميةً..." + +#: index.php:238 +msgid "Create filter..." +msgstr "أنشئ مرشحاً..." + +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "مساعدة اختصارات لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­" + +#: index.php:248 +msgid "Logout" +msgstr "الخروج" + +#: index.php:254 +msgid "Updates are available from Git." +msgstr "" + +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "خيارات" + +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "اختصارات لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­" + +#: prefs.php:112 +msgid "Exit preferences" +msgstr "أخرج من الخيارات" + +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "الخلاصات" + +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "المرشÙّحات" + +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "الأسماء" + +#: prefs.php:133 +msgid "Users" +msgstr "المستخدمون" + +#: prefs.php:136 +msgid "System" +msgstr "النظام" + +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "أنشئ حساباً جديداً" + +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "عطَّل المسؤول إنشاء حسابات مستخدمين جدد" + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Ø¹ÙØ¯ إلى Tiny Tiny RSS" + +#: register.php:218 +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 "كلمة المرور المؤقتة الخاصة بك Ø³ØªÙØ±Ø³Ù„ إلى البريد المحدَّد. الحسابات التي لم ÙŠÙØ¯Ø®ÙŽÙ„ إليها Ùˆ لا مرة واحدة يتم حذÙها آليّاً بعد ٢٤ ساعة من إرسال كلمة المرور المؤقتة." + +#: register.php:224 +msgid "Desired login:" +msgstr "اسم الدخول المرغوب:" + +#: register.php:227 +msgid "Check availability" +msgstr "تحقق من التوÙÙّر" + +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "بريد إلكتروني:" + +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "كم حاصل إثنان زائد إثنان:" + +#: register.php:235 +msgid "Submit registration" +msgstr "أرسل التسجيل" + +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "معلومات تسجيلك غير مكتملة." + +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "آسÙ. اسم المستخدم هذا تم تسجيله مسبقاً." + +#: register.php:287 +msgid "Registration failed." +msgstr "ÙØ´ÙÙ„ التسجيل." + +#: register.php:334 +msgid "Account created successfully." +msgstr "نجح إنشاء الحساب." + +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "تسجيل المستخدمين الجدد مقÙÙ„ حالياً." + +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "برنامج تحديث بيانات Tiny Tiny RSS" + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "غير Ù…ØµÙ†ÙŽÙ‘ÙØ©" + +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d بند محÙوظ" +msgstr[1] "%d بنود محÙوظة" + +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "لم أجد خلاصة." + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "التنقÙّل" + +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "Ø¥ÙØªØ­ الخلاصة التالية" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "Ø¥ÙØªØ­ الخلاصة السابقة" + +#: include/functions2.php:55 +msgid "Open next article" +msgstr "Ø¥ÙØªØ­ البند التالي" + +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "Ø¥ÙØªØ­ البند السابق" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "Ø¥ÙØªØ­ البند التالي (لاتمرÙّر البنود الطويلة)" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "Ø¥ÙØªØ­ البند السابق (لاتمرÙّر البنود الطويلة)" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "إنتقل للبند التالي (لاتوسÙّعه أو تعلمه مقروءاً)" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "إنتقل للبند السابق (لاتوسÙّعه أو تعلمه مقروءاً)" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "إعرض مربَّع البحث" + +#: include/functions2.php:62 +msgid "Article" +msgstr "بَنْد" + +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "إقلب المعلَّم بنجمة" + +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "إقلب المنشور" + +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "إقلب غير المقروء" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "حرÙّر العلامات" + +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "شطب المختار" + +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "شطب المقروء" + +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "ÙØªØ­ ÙÙŠ Ù†Ø§ÙØ°Ø© جديدة" + +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "علÙّم أسÙله مقروءاً" + +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "علÙّم أعلاه مقروءاً" + +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "تمرير نازل" + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "تمرير طالع" + +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "إختر البند تحت المؤشÙّر" + +#: include/functions2.php:75 +msgid "Email article" +msgstr "أرسل البند بالبريد" + +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "أغلق/إطو٠البند" + +#: include/functions2.php:77 +msgid "Toggle article expansion (combined mode)" +msgstr "بدّل توسيع البند (وضع المجموع)" + +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "بدÙّل تضمين الأصل" + +#: include/functions2.php:80 +msgid "Article selection" +msgstr "إختيار البند" + +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "إختر كل البنود" + +#: include/functions2.php:82 +msgid "Select unread" +msgstr "إختر غير المقروء" + +#: include/functions2.php:83 +msgid "Select starred" +msgstr "إختر المعلَّم بنجمة" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "إختر المنشور" + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "إعكس الاختيار" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "ألغ اختيار الكل" + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "الخلاصة" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "تحديث الخلاصة الحاليَّة" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "إعرض/أخÙ٠الخلاصات المقروءة" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "إشترك ÙÙŠ خلاصة" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "حرÙّر خلاصة" + +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "إقلب العناوين" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "تصحيح أخطاء تحديث الخلاصة" + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "علÙّم كل الخلاصات مقروءة" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "طيّ/بسط التصني٠الحالي" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "تبديل وضع التجميع" + +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "إقلب حالة التوسيع التلقائي ÙÙŠ وضع التجميع" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "إذهب إلى" + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "كل البنود" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "طازج" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "سحابة العلامات" + +#: include/functions2.php:106 +msgid "Other" +msgstr "أخرى" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "أنشئ تسمية" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "أنشئ مرشÙّح" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "طيّ/بَسْط الشريط الجانبي" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "إعرض Ù†Ø§ÙØ°Ø© المساعدة" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "نتائج البحث: %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +msgid "comment" +msgid_plural "comments" +msgstr[0] "تعليق" +msgstr[1] "تعليقات" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +msgid "comments" +msgstr "تعليقات" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "لا علامات" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "حرÙّر علامات هذا البند" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "أصله من:" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "عنوان URL للخلاصة" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "أغلق هذه Ø§Ù„Ù†Ø§ÙØ°Ø©" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(حرÙّر ملاحظة)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "نوع غير معروÙ" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "مرÙقات" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "خاص" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "كل الخلاصات" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "البنود بنجمة" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "البنود المنشورة" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "البنود الطازجة" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "البنود المحÙوظة" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "Ù‚ÙØ±Ùأَت حديثاً" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "الدخول:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "كلمة المرور:" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "نسيت كلمة المرور" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "المل٠الشخصي:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "المل٠الشخصي Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "حركة بيانات أقل" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "لا يعرض الصور ÙÙŠ البنود ØŒ Ùˆ يقلّل التحديثات الآلية." + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "تذكَّرني" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "الدخول" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "ÙØ´Ù„ تحقق الجلسة (عنوان IP خاطئ)" + +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "ÙØ´Ù„ تحقق الجلسة (تغير إصدار مختطة قاعدة البيانات)" + +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "ÙØ´Ù„ تحقق الجلسة (المستخدم غير موجود)" + +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "ÙØ´Ù„ تحقق الجلسة (تغير كلمة المرور)" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "توجد تلميحات أخرى عن الواجهة على ويكي Tiny Tiny RSS." + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "إختصارات لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "Ù…ÙØªØ§Ø­ عالي" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ù…ÙØªØ§Ø­ تحكم" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "موضوع مساعدة غير موجود." + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "شارك مع/عبر Tiny Tiny RSS" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "العنوان:" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "عنوان URL:" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "المحتوى:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "الأسماء:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "سيظهر البند الذي شاركت ÙÙŠ خلاصة \"منشور\"" + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "شارÙÙƒ" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "ألغ" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "لم يسجÙّل الدخول" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "خطأ ÙÙŠ اسم المستخدم أو كلمة المرور" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "الإشتراك ÙÙŠ %s موجود مسبقاً." + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "مشترÙÙƒ ÙÙŠ %s." + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "لم أتمكن من الإشتراك ÙÙŠ %s." + +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "لم أجد خلاصات ÙÙŠ %s." + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "وجدت عدة عناوين URL للخلاصة." + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "لم أتمكن من الإشتراك ÙÙŠ %s.
    لايمكن تنزيل عنوان URL للخلاصة." + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "إشترك ÙÙŠ الخلاصة المختارة" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "عدّل خيارات الإشتراك" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "إستعادة كلمة المرور" + +#: classes/handler/public.php:805 +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "ستحتاج إلى إدخال اسم مستخدم وبريد إلكتروني صحيحين. سيتم إرسال رابط إعادة تعيين كلمة المرور إلى عنوان بريدك الإلكتروني." + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "إعادة تعيين كلمة المرور" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "بعض وسائط النموذج اللازمة Ù…Ùقودة أو غير صحيحة." + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "الرجوع للخلÙ" + +#: classes/handler/public.php:878 +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] طلب إعادة تعيين كلمة المرور" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "آس٠، هذا المستخدم والبريد معاً غير موجودين." + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "مستوى الوصول الخاص بك غير كاÙ٠لتشغيل هذا البرنامج." + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "محدÙّث قاعدة البيانات" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "ثبÙّت التحديثات" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "إعرض كخلاصة RSS" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "إعرض كـ RSS" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "آخر تحديث : %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "الكل" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "إعكس" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "لاشيء" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "المزيد..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "تبديل الاختيار:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "الاختيار:" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "Ø­Ø¯Ù‘ÙØ¯ نقطة" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "محÙوظات" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "العودة للخلÙ" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "إحذÙ" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "أعد التوجيه بالبريد" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "خلاصة:" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "لم أجد الخلاصة." + +#: classes/feeds.php:268 +msgid "Never" +msgstr "أبداً" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "تم استيراده ÙÙŠ %s" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +msgid "mark feed as read" +msgstr "علÙّم الخلاصة مقروءة" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "طيّ البند" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "لم أجد بنوداً غير مقروءة لأعرضها." + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "لم أجد بنوداً محدَّثة لأعرضها." + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "لم أجد بنوداً معلَّمة بنجمة لأعرضها." + +#: classes/feeds.php:778 +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 "لم أجد بنوداً للعرض. يمكنك إسناد بنود للتسميات يدوياً من قائمة سياق ترويسة البند (هذا ينطبق على جميع البنود المختارة) أو استخدام مرشÙّح." + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "لم أجد بنوداًلأعرضها." + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "آخر تحديث للخلاصات ÙÙŠ %s" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "توجد أخطاء ÙÙŠ تحديث بعض الخلاصات (أنقر Ù„Ù„ØªÙØ§ØµÙŠÙ„)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "لم تختر خلاصة." + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "عنوان URL للخلاصة أو الموقع" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "ضعه ÙÙŠ التصنيÙ:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "الخلاصات المتوÙّرة" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "الإستيثاق" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "الدخول" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "كلمة المرور" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "هذه الخلاصة تتطلب الإستيثاق." + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "إشترك" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "المزيد من الخلاصات" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "إبحث" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "الخلاصات الشعبيَّة" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "محÙوظات الخلاصة" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "حدّ:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "إحذÙ" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "إبحث عن" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +msgid "Search syntax" +msgstr "نحو البحث" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "البند غير موجود" + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "العلامات لهذا البند (Ù…ÙØµÙˆÙ„Ø© بÙواصل)" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Ø¥Ø­ÙØ¸" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "أداة OPML" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "إستيراد OPML..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "العودة Ù„Ù„ØªÙØ¶ÙŠÙ„ات" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "Ø¥Ø¶Ø§ÙØ© الخلاصة: %s" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "خلاصة مكرَّرة: %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "Ø¥Ø¶Ø§ÙØ© التسمية %s" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "تسمية مكرَّرة: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "ضبط Ù…ÙØªØ§Ø­ Ø§Ù„ØªÙØ¶ÙŠÙ„ %s ليصبح %s" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "تجري Ø¥Ø¶Ø§ÙØ© المرشÙّح..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "معالجة التصنيÙ: %s" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "ÙØ´ÙÙ„ Ø§Ù„Ø±ÙØ¹ Ùˆ ظهر رمز الخطأ %d" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "لم أتمكن من نقل المل٠المرÙوع." + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "خطأ: ÙØ¶Ù„اً Ø¥Ø±ÙØ¹ (حمÙّل) مل٠OPML." + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "خطأ: لم أعثر على مل٠الـ OPML المنقول." + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "خطأ أثناء ØªÙØ³ÙŠØ± المستند." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "مستوى الوصول الخاص بك غير كاÙÙ Ù„ÙØªØ­ هذا التبويب." + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "قيد الأخطاء" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "تحديث" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "إمسح السجل" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "خطأ" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "اسم الملÙ" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "الرسالة" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "التاريخ" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "مستخدم غير موجود" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "مسجَّل" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "آخر دخول للنظام" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "عدد الخلاصات المشتَرَك بها" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "الخلاصات المشتَرَك بها" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "مستوى الوصول:" + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "خيارات" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "تمت Ø¥Ø¶Ø§ÙØ© المستخدم %s بكلمة المرور %s" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "لم أتمكن من إنشاء المستخدم %s" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "المستخدم %s موجود مسبقاً." + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "تم تغيير كلمة مرور المستخدم %s إلى %s" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "يجري إرسال كلمة المرور الجديدة للمستخدم %s إلى العنوان %s" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] إشعار تغيÙّر كلمة المرور" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "إختر" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "أنشئ مستخدم" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "ØªÙØ§ØµÙŠÙ„" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "حرÙّر" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "مستوى الوصول" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "آخر دخول" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "أنقر للتحرير" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "لايوجد مستخدمين معرَّÙين." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "لم يتم العثور على مستخدمين مطابقين" + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "ضع علامة اختيار Ù„ØªÙØ¹ÙŠÙ„ الحقل" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "(الخلاصة %d)" +msgstr[1] "(الخلاصات %d)" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "عنوان الخلاصة" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "تحديث" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "تنظي٠البند:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "تلميح: لابد من تعبئة معلومات الدخول إذا كانت الخلاصة المرغوبة تتطلب الاستيثاق ØŒ إلا لخلاصات تويتر." + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "خبئها من بين الخلاصات الشَّعبية" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "ضمÙّن هذا ÙÙŠ رسالة الموجز" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "إعرض الصور المرÙقة دائماً" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "لا تضمÙّن الصور" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "خبئ الصور محلياً" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "علÙّم البنود المحدَّثة بـ غير مقروءة" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "أيقونة" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "إستبدال" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "إعادة الإشتراك ÙÙŠ تحديثات Ø§Ù„Ø¯ÙØ¹" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "إعادة تعيين حالة اشتراك PubSubHubbub للخلاصات المÙÙØ¹ÙŽÙ‘Ù„ Ø¯ÙØ¹Ù‡Ø§." + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "انتهى العمل." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "الخلاصات ذات الأخطاء" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "الخلاصات الخاملة" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "حرّر الخلاصات المختارة" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "أعد تعيين ترتيب Ø§Ù„ÙØ±Ø²" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "إشتراك بالجملة" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "Ø§Ù„ØªØµÙ†ÙŠÙØ§Øª" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "Ø£Ø¶Ù ØªØµÙ†ÙŠÙØ§Ù‹" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "إحذ٠المختارة" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "إجراءات أكثر..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "تنظي٠يدوي" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "مسح بيانات الخلاصة" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "إعادة حساب نقاط البنود" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "باستخدام لغة تأشير معالجة المخططات (OPML) يمكنك تصدير واستيراد خلاصاتك ØŒ مرشحاتك ØŒ أسماءك وإعدادات Tiny Tiny RSS أيضاً." + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "المل٠الشخصي الأساسي للإعدادات Ùقط هو الذي يمكن ترحيله باستخدام OPML." + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "إستورد OMPL الخاصة بي" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "اسم الملÙ:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "ضمÙّن الإعدادات" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "تصدير OPML" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "يمكن نشر OPML الخاص بك للعامة ØŒ كما يمكن لأي أحد الإشتراك Ùيه إذا كان عنوان URL أدناه Ù…Ø¹Ø±ÙˆÙØ§Ù‹." + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "الـ OPML المنشورة لاتتضمن إعدادات Tiny Tiny RSS الخاصة بك ØŒ ولا الخلاصات التي تتطلب الإستيثاق أو الخلاصات المخÙية من الخلاصات الشعبية." + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "عنوان URL لـ OPML المتاح للعامة " + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "إعرض عنوان URL المنشور لـ OPML" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "التكامل مع ÙيرÙوكس" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "يمكن استخدام موقع Tiny Tiny RSS هذا ÙÙŠ ÙيرÙوكس كقارئ خلاصات بالنقر على الرابط أدناه." + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "أنقر هنا لتسجيل هذا الموقع كقارئ خلاصات." + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "البنود المنشورة والمشارَكة / الخلاصات المولَّدة" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "البنود المنشورة يتم تصديرها كخلاصة RSS متاحة للعامة يمكن الإشتراك بها لأي أحد يعر٠عنوان URL المحدد أدناه." + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "إعرض عنوان URL" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "مسح كل عناوين URL المولَّدة" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "هذه الخلاصات لم تحدَّث بمحتوى جديد منذ Ù£ أشهر (الأقدم أولاً):" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "أنقر لتحرير الخلاصة" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "إلغاء الإشتراك ÙÙŠ الخلاصات المختارة" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "ضع خلاصة RSS واحدة صحيحة على السطر (لن يجري اكتشا٠الخلاصة)" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "الخلاصات المرغوب الاشتراك Ùيها ØŒ واحدة لكل سطر" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "الخلاصات تتطلب الاستيثاق." + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "البنود المطابقة لهذا المرشÙّح:" + +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "لم أجد بنوداً أخيرة/قريبة تطابق هذا المرشÙّح." + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(إعكس)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "%s على %s ÙÙŠ %s %s" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "تسمية توضيحية" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "ÙŠÙØ·Ø§Ø¨ÙÙ‚" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "أضÙÙ" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "تطبيق الإجراءات" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "ممكَّن" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "طابق أي قاعدة" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "مطابقة عكسيَّة" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "إختبر" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "جمÙّع" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "أنشئ" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "إعكس مطابقة التعبير العادي" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "ÙÙŠ الحقل" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "ÙÙŠ" + +#: classes/pref/filters.php:947 +msgid "Wiki: Filters" +msgstr "ويكي:المرشحات" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "Ø¥Ø­ÙØ¸ القاعدة" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "أض٠قاعدة" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "القيام بإجراء" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "بالموسÙّطات:" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "Ø¥Ø­ÙØ¸ الإجراء" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "أض٠إجراء" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[دون تسمية توضيحية]" + +#: classes/pref/filters.php:1044 +#, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "%s (القاعدة %d)" +msgstr[1] "%s (القواعد %d)" + +#: classes/pref/filters.php:1059 +#, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "%s (+%d إجراء)" +msgstr[1] "%s (+%d إجراءات)" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "الألوان" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "العرض ÙÙŠ الأمام:" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "العرض ÙÙŠ الخلÙيَّة:" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "تم إنشاء التسمية %s" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "إمسح الألوان" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "عام" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "واجهة" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "متقدÙّم" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "موجز" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "السماح بتكرار البنود" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "علامات القائمة السوداء" + +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "عند الاكتشا٠التلقائي للعلامات ÙÙŠ البنود ÙØ¥Ù† العلامات التالية لن يتم تطبيقها (قائمة Ù…ÙØµÙˆÙ„Ø© بÙواصل)." + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "علÙّم البنود مقروءة تلقائياً" + +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "هذا الخيار يتيح تعليم البنود مقروءة تلقائياً أثناء تمريرك ÙÙŠ قائمة البنود." + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "تلقائياً إبسط البنود ÙÙŠ وضع التجميع" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "عرض الخلاصات مجمَّعة" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "إعرض قائمة موسَّعة لبنود الخلاصات عوضاً عن عرض العناوين مستقلة عن محتوى البنود" + +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "تأكيد تعليم الخلاصة مقروءة" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "عدد البنود التي تعرض ÙÙŠ المرة الواحدة" + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "المدة Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ© لتحديث الخلاصة" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "أقصر مدة يتم Ùيها/بعدها ÙØ­Øµ تحديثات الخلاصة أياً كانت طريقة التحديث" + +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "علÙّم البنود المذكورة ÙÙŠ موجز البريد مقروءة" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "تمكين رسالة موجز عبر البريد الإلكتروني" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "يتيح هذا الخيار إرسال موجز يوميّ بالعناوين الجديدة (وغير المقروءة) إلى عنوان بريد إلكتروني تدخله ÙÙŠ النظام." + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "حاول إرسال الموجز عند الوقت المحدد" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "إستخدم منطقة التوقيت العالمي المنسق (UTC)" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "تمكين الوصول عبر واجهة برمجة التطبيقات (API)" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "السماح لبرامج قراءة خارج النظام بالوصول لهذا الحساب عبر واجهة التطبيقات (API)" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "تمكين ØªØµÙ†ÙŠÙØ§Øª الخلاصات" + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "رتب الخلاصات حسب عدد البنود غير المقروءة" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "أقصى عمر للبنود الطازجة (بالساعة)" + +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "أخÙ٠الخلاصات التي كل بنودها مقروءة" + +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "أظهر الخلاصات الخاصة عند Ø¥Ø®ÙØ§Ø¡ الخلاصات المقروءة" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "الصيغة الطويلة للتاريخ" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "النحو المستخدم مماثل لدالة PHP date() ." + +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "عند اللَّحَاق إعرض الخلاصة التالية" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "ÙØªØ­ الخلاصة التالية ذات البنود غير المقروءة تلقائياً بعد تعليم خلاصة ما مقروءة" + +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "نظÙّ٠البنود بعد عدد الأيام هذا (Ù  - بلا تنظيÙ)" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "نظÙّ٠البنود غير المقروءة" + +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "إعكس ترتيب العناوين (الأقدم أولاً)" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "الصيغة القصيرة للتاريخ" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "إعرض لمحة من المحتوى ÙÙŠ قائمة العناوين/الترويسات" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "رتب العناوين حسب تاريخ الخلاصة" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "استخدم التاريخ المحدد للخلاصة لترتيب العناوين بدلاً عن التاريخ المحلّي للاستيراد" + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "الدخول بشهادة SSL" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "أنقر لتسجيل شهادة زبون SSL الخاصة بك لدى tt-rss" + +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "لا تضمÙّن الصور ÙÙŠ البنود" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "نزع الوسوم غير الآمنة من البنود" + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "نزع كل وسوم HTML عدا الشائع منها عند قراءة البنود." + +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "تخصيص ØµÙØ­Ø§Øª الطÙÙ‘Ø±ÙØ²" + +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "خصÙّص ØµÙØ­Ø§Øª الطÙÙ‘Ø±ÙØ² كما تشاء هنا" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "المنطقة الزمنية" + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "جمع العناوين ÙÙŠ خلاصات ظاهرية" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "يتم جمع الخلاصات الخاصة Ùˆ التسميات ÙˆØ§Ù„ØªØµÙ†ÙŠÙØ§Øª من مصدرها من الخلاصات المصدرية" + +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "اللغة" + +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "السمة" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "إختر واحدة من سمات CSS Ø§Ù„Ù…ØªÙˆÙØ±Ø©" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "تم Ø­ÙØ¸ الإعداد." + +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "تم Ø­ÙØ¸ بياناتك الشخصية." + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "تم ضبط ØªÙØ¶ÙŠÙ„اتك الآن على القيم Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠØ©." + +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "البيانات الشخصية / الإستيثاق" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "البيانات الشخصية" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "الاسم الكامل" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "البريد الإلكتروني" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "مستوى الوصول" + +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Ø¥Ø­ÙØ¸ البيانات" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "كلمة المرور لديك على قيمتها Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠØ© ØŒ ÙØ¶Ù„اً غيّرها." + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "تغيير كلمة المرور الحالية سيعطّل كلمة المرور ذات الإستخدام الواحد (OTP)." + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "كلمة المرور السابقة" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "كلمة المرور الجديدة" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "أكÙّد كلمة المرور" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "غيÙّر كلمة المرور" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "كلمات المرور لمرة واحدة / Ø§Ù„Ù…ÙØµØ¯Ùّق" + +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "كلمات المرور ذات الاستخدام الواح Ù…ÙØ¹ÙŽÙ‘لة حالياً. أدخل كلمة المرور الحالية أدناه للتعطيل." + +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "أدخل كلمة المرور" + +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "عطÙّل OTP" + +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "ستحتاج إلى برنامج مصدÙّق متواÙÙ‚ لاستخدام هذه الخاصية. تغيير كلمة المرور الخاصة بك سيعطÙّل تلقائياً خاصَّية كلمات المرور ذات الاستخدام الواحد (OTP)." + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "إمسح Ø§Ù„Ø´ÙØ±Ø© التالية بتطبيق Ø§Ù„Ù…ÙØµØ¯Ùّق:" + +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "أدخل كلمة المرور ذات الاستخدام الواحد التي تم توليدها" + +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "تمكين كلمات المرور ذات الاستخدام الواحد (OTP)" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "دوالّ PHP GD مطلوبة لدعم كلمات المرور ذات الاستخدام الواحد." + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "بعض Ø§Ù„ØªÙØ¶ÙŠÙ„ات Ù…ØªÙˆÙØ±Ø© ÙÙŠ المل٠الشخصي Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ Ùقط." + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "خصÙّص" + +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "سجÙّل" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "إمسح" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "الوقت الحالي للخادم: %s (UTC)" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Ø¥Ø­ÙØ¸ الإعدادات" + +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "Ø¥Ø­ÙØ¸ واخرج من Ø§Ù„ØªÙØ¶ÙŠÙ„ات" + +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "إدارة Ø§Ù„Ù…Ù„ÙØ§Øª الشخصية" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "إعادة التعيين إلى Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "Ø¥Ø¶Ø§ÙØ§Øª" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "ستحتاج إعادة تحميل Tiny Tiny RSS لتصبح تغييرات Ø§Ù„Ø¥Ø¶Ø§ÙØ§Øª Ù†Ø§ÙØ°Ø© Ø§Ù„Ù…ÙØ¹ÙˆÙ„." + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "يمكن تنزيل المزيد من Ø§Ù„Ø¥Ø¶Ø§ÙØ§Øª من منتدى أو ويكي tt-موقع rss.org ." + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "Ø¥Ø¶Ø§ÙØ§Øª النظام" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "Ø¥Ø¶Ø§ÙØ©" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "الوصÙ" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "الإصدار" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "المؤلÙ" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "معلومات إضاÙية" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "إمسح البيانات" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "Ø¥Ø¶Ø§ÙØ§Øª المستخدم" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "تمكين Ø§Ù„Ø¥Ø¶Ø§ÙØ§Øª المختارة" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "كلمة المرور ذات الاستخدام الواحد خاطئة" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "كلمة المرور خاطئة" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "إذا كتبت تعليمات CSS مخصصة هنا ÙØ³ÙŠÙ…كنك تجاوز ألوان وخطوط وتخطيط السمة المختارة حالياً. هذا الملÙيمكن استخدامه أساساً والتعديل كما تريد." + +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "أنشئ Ù…Ù„ÙØ§Ù‹ شخصياً" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(Ù†ÙŽØ´ÙØ·)" + +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "Ø­Ø°Ù Ø§Ù„Ù…Ù„ÙØ§Øª الشخصية المحدَّدة" + +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "تنشيط المل٠الشخصي" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "إذا كنت قد استوردت تسميات Ùˆ/أو مرشحات ØŒ قد تحتاج إلى إعادة تحميل Ø§Ù„ØªÙØ¶ÙŠÙ„ات لتشاهد بياناتك الجديدة." + +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "عنوان URL الظاهر للـ OPML هو :" + +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "توليد عنوان 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 "ناطر التحديث Ù…ÙØ¹ÙŽÙ‘Ù„ ÙÙŠ الإعدادات إلا أن مهمته ليست جارية ØŒ وهذا يمنع تحديث جميع الخلاصات. ÙØ¶Ù„اً إبدأ عملية الناطر أو اتصل بمالك المثيلة (البرنامج)." + +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "آخر تحديث:" + +#: 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 "ناطر التحديث يستغرق وقتاً طويلا جداً للقيام بتحديث الخلاصة. هذا قد يشير لمشكلة انهيار أو تعليق. ÙØ¶Ù„اً Ø¥ÙØ­Øµ عملية الناطر أو اتصل بمالك المثيلة(البرنامج)." + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "يمكنك عرض هذه الخلاصة كـ RSS باستخدام عنوان URL التالي:" + +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" + +#: plugins/af_psql_trgm/init.php:112 +#, fuzzy +msgid "Show related articles" +msgstr "البنود المشارَكة" + +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +#, fuzzy +msgid "Mark similar articles as read" +msgstr "أعلّم جميع البنود بـ مقروءة؟" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +#, fuzzy +msgid "Global settings" +msgstr "ضمÙّن الإعدادات" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "تمكين ØªØµÙ†ÙŠÙØ§Øª الخلاصات" + +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" + +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" + +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "الخلاصات التي تدعمها af_comics" + +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "الرسوم الهزلية التالية مدعومة حالياً :" + +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "حرّر ملاحظة للبند" + +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "لم يتم تحميل أي ملÙ." + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "أنجزت المهمّة. تم استيراد %d بنداً من %d ." + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "صيغة المستند غير صحيحة." + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "إستيراد البنود المعلّمة بنجمة أو المشارَكة من Google Reader" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "ألصق بيانات starred.json أو shared.json لديك ÙÙŠ النموذج أدناه." + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "إستورد بنودي المعلّمة بنجمة" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[إعادة توجيه]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "بنود متعددة" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "النقر على الرابط التالي لاستدعاء برنامج البريد الإلكتروني لديك:" + +#: plugins/mailto/init.php:75 +msgid "Forward selected article(s) by email." +msgstr "إعادة توجيه البنود المختارة عبر البريد." + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "ستتمكن من تحرير الرسالة ÙÙŠ برنامج البريد لديك قبل إرسالها." + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "أغلق مربع الحوار هذا" + +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "إستيراد وتصدير" + +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "بإمكانك تصدير واستيراد بنودك المعلّمة بنجمة Ùˆ المحÙوظة للإبقاء عليها أو حال ترحيل البيانات بين مثيلات tt-rss من الإصدار Ù†ÙØ³Ù‡." + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "صدّر بياناتي" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "إستيراد" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "لم أتمكن من الاستيراد: إصدار مختطة قاعدة البيانات غير صحيح." + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "لم أتمكن من الاستيراد: صيغة مستند غير Ù…Ø¹Ø±ÙˆÙØ©." + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "انتهى:" + +#: plugins/import_export/init.php:388 +#, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "تمت معالجة البند %d ØŒ" +msgstr[1] "تمت معالجة البنود %d ØŒ" + +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "تم استيراد %d ØŒ" +msgstr[1] "تم استيراد %d ØŒ" + +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "تم إنشاء الخلاصة %d." +msgstr[1] "تم إنشاء الخلاصات %d." + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "لم أتمكن من تحميل مستند XML." + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "جهّز البيانات" + +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "غير آمنة ÙÙŠ العمل (أنقر للقلب)" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "Ø¥Ø¶Ø§ÙØ© NSFW" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "العلامات المعتبرة غير آمنة ÙÙŠ العمل (NSFW) (Ù…ÙØµÙˆÙ„Ø© بÙواصل)" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "Ø­ÙÙØ¸Øª الإعدادات." + +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "ÙØ¶Ù„اً أدخل كلمة المرور ذات الاستخدام الواحد:" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "تم تغيير كلمة المرور." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "كلمة المرور القديمة غير صحيحة." + +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "أغلق البند" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "تم Ø­ÙØ¸ عنوان البريد." + +#: plugins/mail/init.php:34 +msgid "Mail plugin" +msgstr "Ø¥Ø¶Ø§ÙØ© البريد" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "يمكنك تحديد عناوين بريد معرَّ٠مسبقاً هنا (قائمة Ù…ÙØµÙˆÙ„Ø© بÙواصل):" + +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "إلى:" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "الموضوع:" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "أرسل بريد إلكتروني" + +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "مرتبط" + +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" +msgstr "مثيلة" + +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "عنوان URL للمثيلة" + +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "Ù…ÙØªØ§Ø­ الوصول:" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "Ù…ÙØªØ§Ø­ الوصول" + +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "إستخدم Ù…ÙØªØ§Ø­ وصول واحد لكلا المثيلتين المتصلتين." + +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "توليد Ù…ÙØªØ§Ø­ جديد" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "ربط مثيلة" + +#: 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 "يمكنك ربط مثيلات Tiny Tiny RSS أخرى للموجودة هنا لمشاركة الخلاصات الشعبية. إربط بمثيلة Tiny Tiny RSS باستخدام عنوان URL التالي:" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "آخر اتصال" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "الحالة" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "الخلاصات المخزَّنة" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "أنشئ رابط" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "Ø­ÙÙØ¸Øª الإعدادات." + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "تحقق من التوÙÙّر" + +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "حرّر ملاحظة للبند" + +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "البنود المشارَكة" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +#, fuzzy +msgid "Statistics" +msgstr "الحالة" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "البنود بنجمة" + +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "إمسح البيانات" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, fuzzy, php-format +msgid "Currently stored as: %s" +msgstr "الوقت الحالي للخادم: %s (UTC)" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "علامات مرجعية" + +#: 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 "إسحب الرابط أدناه إلى شريط أدوات مستعرضك ØŒ Ø¥ÙØªØ­ الخلاصة التي تقصدها ÙÙŠ المستعرض وانقر على الرابط للاشتراك Ùيها." + +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "أترغب الإشتراك ÙÙŠ %s عبر Tiny Tiny RSS ØŸ" + +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "إشترك ÙÙŠ Tiny Tiny RSS" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "استخدم العلامة المرجعية التالية لتنشر ØµÙØ­Ø§Øª عشوائية باستخدام Tiny Tiny RSS" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "يمكنك هنا تعطيل جميع البنود المشارَكة بعناوين URL ÙØ±ÙŠØ¯Ø©." + +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "إلغاء مشاركة جميع البنود" + +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "شارك عبر عنوان URL" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "يمكنك مشاركة هذا البند بعنوان URL Ø§Ù„ÙØ±ÙŠØ¯ التالي:" + +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "إلغاء مشاركة البند" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "سيتم Ø§Ù„Ø±ÙØ¹ بالتقرير لوجهة السجل المذكورة ÙÙŠ الإعدادات." + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "" + +#: js/functions.js:93 +msgid "Close" +msgstr "" + +#: js/functions.js:104 +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "هل أنت متأكد من رغبتك إرسال تقرير عن هذا الإستثناء لـ tt-rss.org ØŸ سيتضمن التقرير معلومات٠عن مستعرض الإنترنت لديك وإعدادات tt-rss . سيتم Ø­ÙØ¸ عنوان IP الخاص بك ÙÙŠ قاعدة البيانات." + +#: js/functions.js:224 +msgid "Click to close" +msgstr "أنقر للإغلاق" + +#: js/functions.js:1051 +msgid "Edit action" +msgstr "تحرير الإجراء" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "إنشاء مرشÙّح" + +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "إعادة تعيين الإشتراك ØŸ Tiny Tiny RSS سو٠يحاول الإشتراك ثانية لدى موزع الإشعارات عند التحديث القادم للخلاصة." + +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "إعادة تعيين الإشتراك." + +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "إلغاء الإشتراك ÙÙŠ %s ØŸ" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "جار٠حذ٠الخلاصة..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "ÙØ¶Ù„اً أدخÙÙ„ عنوان التصنيÙ:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "توليد عنوان " + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "محاولة تغيير العنوان..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "لم يتم اختيار خلاصة" + +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "هل ترغب حذ٠الخلاصات المختارة من المحÙوظات ØŸ لن تحذ٠الخلاصات ذات البنود المخزَّنة." + +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "الخلاصات التي حصلت أخطاء أثناء تحديثها" + +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "أحذ٠الخلاصات المختارة؟" + +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "يجري حذ٠الخلاصات المختارة..." + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "حرÙّر التصنيÙ" + +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "إحذ٠التصنيÙ" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "العكس" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "ÙØ¶Ù„اً أدخل اسم المستخدم:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "لايمكن إنشاء مستخدم:لم يتم تحديد اسم الدخول" + +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "تتم Ø¥Ø¶Ø§ÙØ© المستخدم..." + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "محرÙّر المستخدم" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "Ø£Ø­ÙØ¸Ù البيانات..." + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "حرÙّر المرشÙّح" + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "أحذ٠المرشÙّح؟" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "يجري حذ٠المرشÙّح..." + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "أحذÙ٠الأسماء المختارة؟" + +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "يجري حذ٠الأسماء المختارة..." + +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "لم يتم اختيار أسماء." + +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "أحذ٠المستخدمين المختارين؟ لن ÙŠÙØ­Ø°ÙŽÙ المسؤول Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ ÙˆÙ„Ø§ حسابك." + +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "يجري حذ٠المستخدمين المختارين..." + +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "لم يتم اختيار مستخدمين." + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "أحذÙ٠المرشÙّحات المختارة؟" + +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "يجري حذ٠المرشÙّحات المختارة..." + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "لم يتم اختيار مرشÙّحات." + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "ألغي الإشتراك ÙÙŠ الخلاصات المختارة؟" + +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "يجري إلغاء الاشتراك ÙÙŠ الخلاصات المختارة..." + +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "ÙØ¶Ù„اً إختر خلاصة واحدة Ùقط." + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "أمسح كل البنود غير المعلَّمة بنجمة ÙÙŠ الخلاصات المختارة؟" + +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "يجري مسح الخلاصة المختارة..." + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "كم مدة إبقاء البنود ( 0 - استخدم المدة Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠØ©) ØŸ" + +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "تنظي٠الخلاصة المختارة..." + +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "ÙØ¶Ù„اً إختر مستخدماً واحداً Ùقط." + +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "أعيد ضبط كلمة مرور المستخدم الذي اخترت؟" + +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "تجري إعادة ضبط كلمة مرور المستخدم الذي اخترت..." + +#: js/prefs.js:565 +msgid "User details" +msgstr "ØªÙØ§ØµÙŠÙ„ المستخدم" + +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "ÙØ¶Ù„اً إختر مرشÙّحاً واحداً Ùقط." + +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "أجمع المرشÙّحات المختارة؟" + +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "يجري دمج المرشÙّحات..." + +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "تحرير عدة خلاصات" + +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "Ø£Ø­ÙØ¸ التغييرات ÙÙŠ الخلاصات المختارة؟" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "إستيراد OPML" + +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "ÙØ¶Ù„اً إختر مل٠OPML أولاً." + +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "الإستيراد جار٠، يرجى الإنتظار..." + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "إعادة التعيين إلى الإعدادات Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ©ØŸ" + +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "يجري الاشتراك ÙÙŠ الخلاصات..." + +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "أمسح البيانات المخزنة لهذه Ø§Ù„Ø¥Ø¶Ø§ÙØ©ØŸ" + +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "أمسح كل الرسائل ÙÙŠ سجل الأخطاء؟" + +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "أعلّم جميع البنود بـ مقروءة؟" + +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "يجري تعليم جميع البنود مقروءة..." + +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "ÙØ¶Ù„اً ÙØ¹Ùّل Ø¥Ø¶Ø§ÙØ© البريد قبل البدء." + +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "لايمكنك تحرير هذا النوع من الخلاصات." + +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "ÙØ¶Ù„اً ÙØ¹Ùّل Ø¥Ø¶Ø§ÙØ© تضمين الأصل قبل البدء." + +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "" + +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "لا يمكنك إعادة حساب نقاط هذا النوع من الخلاصات." + +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "ÙØ¶Ù„اً إختر أي خلاصة ÙÙŠ البداية." + +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "إعادة حساب نقاط البنود ÙÙŠ %sØŸ" + +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "إعادة حساب نقاط البنود..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "لم يتم اختيار أي بند." + +#: js/viewfeed.js:1018 +#, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "أحذ٠%d البند المختار ÙÙŠ %s ØŸ" +msgstr[1] "أحذ٠%d البنود المختارة ÙÙŠ %s ØŸ" + +#: js/viewfeed.js:1020 +#, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "حذ٠البند %d المختار ØŸ" +msgstr[1] "حذ٠البنود %d المختارة ØŸ" + +#: js/viewfeed.js:1062 +#, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "Ø­ÙØ¸ البند %d الذي اخترته ÙÙŠ %s ØŸ" +msgstr[1] "Ø­ÙØ¸ البنود %d التي اخترتها ÙÙŠ %s ØŸ" + +#: js/viewfeed.js:1065 +#, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "استعادة البند المحÙوظ %d ØŸ" +msgstr[1] "استعادة البنود المحÙوظة %d ØŸ" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "يرجى ملاحظة أن البنود غير المعلّمة بنجمة قد يتم تنظيÙها ÙÙŠ تحديث الخلاصات القادم." + +#: js/viewfeed.js:1112 +#, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "تعليم البند %d المختار ÙÙŠ %s مقروءاً ØŸ" +msgstr[1] "تعليم البنود %d المختارة ÙÙŠ %s مقروءة ØŸ" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "حرÙّر علامات البند" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "يجري Ø­ÙØ¸ علامات البند..." + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +#, fuzzy +msgid "Click to open next unread feed." +msgstr "أنقر لتحرير الخلاصة" + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "ÙØªØ­ البند الأصلي" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "أسند تسمية" + +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "إحذ٠التسمية" + +#: js/viewfeed.js:2159 +msgid "Select articles in group" +msgstr "إختر البنود ÙÙŠ مجموعة" + +#: js/viewfeed.js:2168 +msgid "Mark group as read" +msgstr "تعليم المجموعة مقروءة" + +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "علÙّم الخلاصة مقروءة" + +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "ÙØ¶Ù„اً أدخل نقطة جديدة للبنود المختارة:" + +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "ÙØ¶Ù„اً أدخل نقطة جديدة لهذا البند:" + +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "عنوان URL للبند:" + +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "Ø¢Ø³ÙØŒ مستعرضك لايدعم إطارات iframe ÙÙŠ صندوق الرمل." + +#: plugins/af_psql_trgm/init.js:11 +#, fuzzy +msgid "Related articles" +msgstr "البنود المشارَكة" + +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "Ø¬Ø§Ø±Ù Ø­ÙØ¸ البند..." + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "إستيراد من Google Reader" + +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "ÙØ¶Ù„اً إختر Ù…Ù„ÙØ§Ù‹ قبل البدء." + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "أعد توجيه البند بالبريد" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "صدÙّر البيانات" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "إنتهيت من تصدير البند %d . يمكنك تنزيل البيانات من هنا." +msgstr[1] "إنتهيت من تصدير البنود %d . يمكنك تنزيل البيانات من هنا." + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "إستيراد البيانات" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "ÙØ¶Ù„اً إختر المل٠أولاً." + +#: plugins/shorten_expanded/init.js:37 +msgid "Click to expand article" +msgstr "أنقر لتوسيع البند" + +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" + +#: plugins/mail/mail.js:38 +#, fuzzy +msgid "Your message has been sent." +msgstr "تم Ø­ÙØ¸ بياناتك الشخصية." + +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "أربط المثيلة" + +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "حرّر المثيلة" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "أحذ٠المثيلات المختارة؟" + +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "جار٠حذ٠المثيلات المختارة..." + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "لم يتم اختيار مثيلات." + +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "ÙØ¶Ù„اً إختر مثيلة واحدة Ùقط." + +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "مسح بيانات الخلاصة" + +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "" + +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "شارك البند عبر عنوان URL" + +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "إنشاء عنوان URL مشاركة جديد لهذا البند؟" + +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "المحاولة جارية لتغيير العنوان..." + +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "حذ٠مشاركة هذا البند؟" + +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "أحاول إلغاء المشاركة..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "هذا Ø³ÙŠÙØ¨Ø·Ù„ كل عناوين URL للبنود المشارَكة سابقاً. إستمرار ØŸ" + +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "يجري مسح عناوين URL..." + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "تم مسح عناوين URL المشارَكة." + +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "تعليم جميع البنود ÙÙŠ %s مقروءة؟" + +#: js/feedlist.js:435 +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "تعليم جميع البنود ÙÙŠ %s الأقدم من يوم واحد مقروءة؟" + +#: js/feedlist.js:438 +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "تعليم جميع البنود ÙÙŠ %s الأقدم من أسبوع مقروءة؟" + +#: js/feedlist.js:441 +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "تعليم جميع البنود ÙÙŠ %s الأقدم من أسبوعين مقروءة؟" + +#: js/functions.js:615 +msgid "Error explained" +msgstr "شرح الخطأ" + +#: js/functions.js:697 +msgid "Upload complete." +msgstr "إكتمل التحميل." + +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "أحذ٠رمز الخلاصة المخزَّن؟" + +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "جار٠حذ٠رمز الخلاصة..." + +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "حذ٠رمز الخلاصة." + +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "ÙØ¶Ù„اً إختر مل٠صورة للتحميل." + +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "تحميل رمز جديد لهذه الخلاصة؟" + +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "التحميل Ø¬Ø§Ø±ÙØŒÙضلاً إنتظر..." + +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "ÙØ¶Ù„اً أدخل عنوان التسمية:" + +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "لم أتمكن من إنشاء التسمية: التسمية التوضيحية Ù…Ùقودة." + +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "إشترك ÙÙŠ الخلاصة" + +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "ÙØ´Ù„ ØªÙØ³ÙŠØ± الخَرج. قد يشير هذا إلى انتهاء مهلة الخادم Ùˆ/أو مشكلة ÙÙŠ الشبكة. تم تسجيل خرج برنامج الخلÙية ÙÙŠ وحدة تحكّم المستعرض ( Ø§Ù„ØªÙØ¶ÙŠÙ„ات-> النظام -> سجل الأخطاء )." + +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "تم الإشتراك ÙÙŠ %s" + +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "يبدو أن عنوان URL المعطى غير صحيح." + +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "يبدو أن عنوان URL المعطى لايحوي أي خلاصة." + +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "وسÙّع لتختار الخلاصة" + +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "لم أتمكن من تنزيل عنوان URL المحدد: s" + +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "ÙØ´Ù„ اختبار صحة XML: %s" + +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "أنت مشترك Ø¨Ø§Ù„ÙØ¹Ù„ ÙÙŠ هذه الخلاصة." + +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "تحرير القاعدة" + +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "حرÙّر الخلاصة" + +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "خلاصات أكثر" + +#: js/functions.js:1878 +msgid "Help" +msgstr "مساعدة" + +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "أحذ٠التصني٠%s ØŸ ستوضع أي خلاصة ضمن هذا التصني٠ÙÙŠ \"غير مصنَّÙ\"" + +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "يجري حذ٠التصنيÙ..." + +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "Ø£Ø­Ø°Ù Ø§Ù„ØªØµÙ†ÙŠÙØ§Øª المختارة؟" + +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "يجري Ø­Ø°Ù Ø§Ù„ØªØµÙ†ÙŠÙØ§Øª المختارة..." + +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "لم يتم اختيار أي تصنيÙ." + +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "عنوان التصنيÙ:" + +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "إنشاء التصنيÙ..." + +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "الخلاصات بلا تحديثات مؤخراً" + +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "أستبدل عنوان النشر الحالي للـ OPML بعنوان جديد؟" + +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "يجري مسح الخلاصة..." + +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "هل تريد إعادة حساب نقاط البنود ÙÙŠ الخلاصات المختارة؟" + +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "إعادة حساب نقاط الخلاصات المختارة..." + +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "هل تريد حقاً إعادة حساب نقاط كل البنود؟ قد تستغرق هذه العملية وقتاً طويلاً." + +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "إعادة حساب نقاط الخلاصات..." + +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "أعيد تعيين الألوان Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ© للأسماء المختارة ØŸ" + +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "Ù…Ù„ÙØ§Øª شخصية للضبط" + +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "هل ترغب Ø­Ø°Ù Ø§Ù„Ù…Ù„ÙØ§Øª الشخصية المختارة ØŸ Ø§Ù„Ù…Ù„ÙØ§Øª Ø§Ù„ÙØ¹Ø§Ù„Ø© ÙˆØ§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ© لن تحذÙ." + +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "Ø­Ø°Ù Ø§Ù„Ù…Ù„ÙØ§Øª الشخصية المختارة..." + +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "لم ØªØ®ØªØ±Ù…Ù„ÙØ§Ù‹ شخصياً." + +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "ØªÙØ¹ÙŠÙ„ المل٠الشخصي المختار ØŸ" + +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "ÙØ¶Ù„اً إختر المل٠الشخصي Ù„Ù„ØªÙØ¹ÙŠÙ„." + +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "إنشاء المل٠الشخصي..." + +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "هذا Ø³ÙŠÙØ¨Ø·Ù„ كل عناوين URL للخلاصات المشارَكة سابقاً. إستمرار ØŸ" + +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "تم مسح عناوين الـ URL المولَّدة." + +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "محرر التسميات" + +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "لايمكنك إلغاء الإشتراك من التصنيÙ." + +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "ألغ البحث" + +#: js/viewfeed.js:174 +#, fuzzy +msgid "New articles found, reload feed to continue." +msgstr "لم أجد بنوداًلأعرضها." + +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "إحذ٠علامة النجمة" + +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "علّم بنجمة" + +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "ألغ نشر البند" + +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "أنشر البند" + +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "%d بند مختار" +msgstr[1] "%d بنود مختارة" + +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "لم يتم اختيار بند." + +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "لاتوجد بنود لأعلمها" + +#: js/viewfeed.js:1452 +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "تعليم البند %d مقروءاً ØŸ" +msgstr[1] "تعليم البنود %d مقروءة ØŸ" + +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "إعرض عنوان URL للبند" + +#~ msgid "Select by tags..." +#~ msgstr "اختر بالعلامات..." + +#~ msgid "Limit search to:" +#~ msgstr "ضيÙّق البحث إلى:" + +#~ msgid "This feed" +#~ msgstr "هذه الخلاصة" + +#~ msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation." +#~ msgstr "التعبيرات المعقدة قد Ù„Ø§ØªÙØ¸Ù‡Ø± نتائج أثناء الاختبار نظراً لبعض المشاكل ÙÙŠ برمجة التعبيرات العادية على خادم قواعد البيانات." + +#~ msgid "Old password cannot be blank." +#~ msgstr "كلمة المرور السابقة لا يمكن أن تكون ÙØ§Ø±ØºØ©." + +#~ msgid "New password cannot be blank." +#~ msgstr "كلمة المرور الجديدة لا يمكن أن تكون ÙØ§Ø±ØºØ©." + +#~ msgid "Entered passwords do not match." +#~ msgstr "كلمتا المرور المدخلتان لا تتطابقان." + +#~ msgid "Function not supported by authentication module." +#~ msgstr "بريمج المصدÙّق لايدعم هذه الدالّة." + +#~ msgid "Match:" +#~ msgstr "يطابق:" + +#~ msgid "Any" +#~ msgstr "أي" + +#~ msgid "All tags." +#~ msgstr "كل العلامات." + +#~ msgid "Which Tags?" +#~ msgstr "أي العلامات؟" + +#~ msgid "Display entries" +#~ msgstr "إعرض Ø§Ù„Ù…ÙØ¯Ø®ÙŽÙ„َات" + +#~ msgid "Select item(s) by tags" +#~ msgstr "إختر البند/البنود عبر العلامات" + +#~ msgid "Unread First" +#~ msgstr "غير المقروءة أولاً" + +#~ msgid "Unknown option: %s" +#~ msgstr "خيار مجهول: %s" + +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "يوجد إصدار Tiny Tiny RSS أحدث!" + +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "ÙØ´Ù„ تحقق الجلسة (تغير وكيل المستخدم)" + +#~ msgid "Assign articles to labels automatically" +#~ msgstr "إسناد البنود لتسميات آلياً" + +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "يوجد إصدار جديد لـ Tiny Tiny RSS (%s)." + +#~ msgid "You can update using built-in updater in the Preferences or by using update.php" +#~ msgstr "تستطيع التحديث عبر ÙˆØ¸ÙŠÙØ© التحديث المضمَّنة ÙÙŠ Ø§Ù„ØªÙØ¶ÙŠÙ„ات أو باستخدام update.php . " + +#~ msgid "See the release notes" +#~ msgstr "شاهد ملاحظات الإصدار" + +#~ msgid "Download" +#~ msgstr "تنزيل" + +#~ msgid "Error receiving version information or no new version available." +#~ msgstr "خطأ أثناء استقبال معلومات الإصدار أو لا ÙŠØªÙˆÙØ± إصدار جديد." + +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "تحديث Tiny Tiny RSS" + +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "إصدار Tiny Tiny RSS المثبت لديك هو الأحدث." + +#~ msgid "Force update" +#~ msgstr "إجبار التحديث" + +#~ msgid "Do not close this dialog until updating is finished." +#~ msgstr "لاتغلق هذه Ø§Ù„Ù†Ø§ÙØ°Ø© حتى يكتمل التحديث." + +#~ msgid "It is suggested to backup your tt-rss directory first." +#~ msgstr "نقترح قبل البدء أن تنشئ نسخة احتياطية من مجلد tt-rss." + +#~ msgid "Your database will not be modified." +#~ msgstr "لن يتم تعديل قاعدة البيانات." + +#~ 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 "لن يتم تعديل مجلد تثبيت tt-rss الحالي. ستتم إعادة تسميته ويوضع ÙÙŠ الدليل الأب (parent directory). ستتمكن من ترحيل كل Ù…Ù„ÙØ§ØªÙƒ المعدّلة بعد انتهاء التحديث." + +#~ msgid "Ready to update." +#~ msgstr "جاهز للتحديث." + +#~ msgid "Start update" +#~ msgstr "إبدأ التحديث" + +#~ msgid "Backup your tt-rss directory before continuing. Please type 'yes' to continue." +#~ msgstr "أنشئ نسخة احتياطية لمجلد tt-rss الخاص بك قبل التقدم. ÙØ¶Ù„اً أكتب 'yes' للإستمرار." + +#~ msgid "New version available!" +#~ msgstr "ÙŠØªÙˆÙØ± إصدار جديد!" + +#~ msgid "LibXML error %s at line %d (column %d): %s" +#~ msgstr "خطأ LibXML %s ÙÙŠ السطر %d (العمود %d(: %s" + +#~ msgid "From:" +#~ msgstr "من:" diff --git a/locale/bg_BG/LC_MESSAGES/messages.mo b/locale/bg_BG/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000..c6e80d7db0 Binary files /dev/null and b/locale/bg_BG/LC_MESSAGES/messages.mo differ diff --git a/locale/bg_BG/LC_MESSAGES/messages.po b/locale/bg_BG/LC_MESSAGES/messages.po new file mode 100644 index 0000000000..20db28c4ae --- /dev/null +++ b/locale/bg_BG/LC_MESSAGES/messages.po @@ -0,0 +1,3667 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR Neter , 2015. +# +# Neter , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2015-03-09 17:43+0200\n" +"Last-Translator: Neter \n" +"Language-Team: Bulgarian <>\n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: backend.php:73 +msgid "Use default" +msgstr "По подразбиране" + +#: backend.php:74 +msgid "Never purge" +msgstr "Без изтриване" + +#: backend.php:75 +msgid "1 week old" +msgstr "По-Ñтари от 1 Ñедмица" + +#: backend.php:76 +msgid "2 weeks old" +msgstr "По-Ñтари от 2 Ñедмици" + +#: backend.php:77 +msgid "1 month old" +msgstr "По-Ñтари от 1 меÑец" + +#: backend.php:78 +msgid "2 months old" +msgstr "По-Ñтари от 2 меÑеца" + +#: backend.php:79 +msgid "3 months old" +msgstr "По-Ñтари от 3 меÑеца" + +#: backend.php:82 +msgid "Default interval" +msgstr "Интервал по подразбиране" + +#: backend.php:83 +#: backend.php:93 +msgid "Disable updates" +msgstr "Забрана на обновÑваниÑта" + +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" +msgstr "Ðа вÑеки 15 минути" + +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" +msgstr "Ðа вÑеки 30 минути" + +#: backend.php:86 +#: backend.php:96 +msgid "Hourly" +msgstr "ЕжечаÑно" + +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" +msgstr "Ðа вÑеки 4 чаÑа" + +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" +msgstr "Ðа вÑеки 12 чаÑа" + +#: backend.php:89 +#: backend.php:99 +msgid "Daily" +msgstr "Ежедневно" + +#: backend.php:90 +#: backend.php:100 +msgid "Weekly" +msgstr "ЕжеÑедмично" + +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 +msgid "User" +msgstr "Потребител" + +#: backend.php:104 +msgid "Power User" +msgstr "Привилегирован потребител" + +#: backend.php:105 +msgid "Administrator" +msgstr "ÐдминиÑтратор" + +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "Тази програма изиÑква XmlHttpRequest, за да работи правилно. Изглежда, че ВашиÑÑ‚ браузър не го поддържа." + +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "Тази програма изиÑква биÑквитки, за да работи правилно. Изглежда, че ВашиÑÑ‚ браузър не ги поддържа." + +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "Проверката за здравина на бекенда Ñе провали." + +#: errors.php:17 +msgid "Frontend sanity check failed." +msgstr "Проверката за здравина на фронтенда Ñе провали." + +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "Ðекоректна верÑÐ¸Ñ Ð½Ð° Ñхемата на базата данни. <a href='db-updater.php'>МолÑ, обновете!</a>." + +#: errors.php:21 +msgid "Request not authorized." +msgstr "ЗаÑвката не е разрешена." + +#: errors.php:23 +msgid "No operation to perform." +msgstr "ÐÑма дейÑтвие за извършване." + +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "Хранилката не може да Ñе покаже: провалена заÑвка. МолÑ, проверете ÑинтакÑиÑа за Ñъвпадение на етикета или локалната конфигурациÑ." + +#: errors.php:27 +msgid "Denied. Your access level is insufficient to access this page." +msgstr "Отказано. Вашето ниво на доÑтъп е недоÑтатъчно за отварÑне на тази Ñтраница." + +#: errors.php:29 +msgid "Configuration check failed" +msgstr "Проверката на конфигурациÑта Ñе провали" + +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "Вашата верÑÐ¸Ñ Ð½Ð° MySQL текущо не Ñе поддържа. МолÑ, погледнете Ð¾Ñ„Ð¸Ñ†Ð¸Ð°Ð»Ð½Ð¸Ñ Ñайт за повече информациÑ!" + +#: errors.php:35 +msgid "SQL escaping test failed, check your database and PHP configuration" +msgstr "ТеÑтът за SQL escaping Ñе провали. Проверете базата данни и PHP конфигурациÑта!" + +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "Хранилката не е намерена." + +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "ПотребителÑÑ‚ не е намерен" + +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "Зареждане. МолÑ, изчакайте..." + +#: index.php:167 +msgid "Collapse feedlist" +msgstr "Свиване на ÑпиÑъка Ñ Ñ…Ñ€Ð°Ð½Ð¸Ð»ÐºÐ¸" + +#: index.php:170 +msgid "Show articles" +msgstr "Показване на Ñтатии" + +#: index.php:173 +msgid "Adaptive" +msgstr "Ðдаптивно" + +#: index.php:174 +msgid "All Articles" +msgstr "Ð’Ñички Ñтатии" + +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "Ð¡ÑŠÑ Ð·Ð²ÐµÐ·Ð´Ð°" + +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "Публикувани" + +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 +msgid "Unread" +msgstr "Ðечетени" + +#: index.php:178 +msgid "With Note" +msgstr "С бележка" + +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Ðезачитане на точкуване" + +#: index.php:182 +msgid "Sort articles" +msgstr "Подреждане на Ñтатии" + +#: index.php:185 +msgid "Default" +msgstr "По подразбиране" + +#: index.php:186 +msgid "Newest first" +msgstr "Ðовите отгоре" + +#: index.php:187 +msgid "Oldest first" +msgstr "Старите отгоре" + +#: index.php:188 +msgid "Title" +msgstr "По заглавие" + +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 +msgid "Mark as read" +msgstr "Прочетени" + +#: index.php:195 +msgid "Older than one day" +msgstr "По-Ñтаро от 1 ден" + +#: index.php:198 +msgid "Older than one week" +msgstr "По-Ñтаро от 1 Ñедмица" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "По-Ñтаро от 2 Ñедмици" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "Комуникационен проблем ÑÑŠÑ Ñървъра." + +#: index.php:223 +msgid "Actions..." +msgstr "ДейÑтвиÑ..." + +#: index.php:225 +msgid "Preferences..." +msgstr "ПредпочитаниÑ..." + +#: index.php:226 +msgid "Search..." +msgstr "ТърÑене..." + +#: index.php:227 +msgid "Feed actions:" +msgstr "ДейÑÑ‚Ð²Ð¸Ñ Ñ Ñ…Ñ€Ð°Ð½Ð¸Ð»ÐºÐ¸:" + +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "Ðбониране за хранилка..." + +#: index.php:229 +msgid "Edit this feed..." +msgstr "Редактиране на тази хранилка..." + +#: index.php:230 +msgid "Rescore feed" +msgstr "Преточкуване на хранилка" + +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "ОтпиÑване" + +#: index.php:232 +msgid "All feeds:" +msgstr "Ð’Ñички хранилки:" + +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Показване/Ñкриване на прочетените хранилки" + +#: index.php:235 +msgid "Other actions:" +msgstr "Други дейÑтвиÑ:" + +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "Превключване на широкоекранен режим" + +#: index.php:237 +msgid "Create label..." +msgstr "Създаване на етикет..." + +#: index.php:238 +msgid "Create filter..." +msgstr "Създаване на филтър..." + +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "Помощ за клавишни препратки" + +#: index.php:248 +msgid "Logout" +msgstr "Изход" + +#: index.php:254 +msgid "Updates are available from Git." +msgstr "Ðалични Ñа Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚ Git." + +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "ПредпочитаниÑ" + +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "Клавишни препратки" + +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Изход от предпочитаниÑ" + +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Хранилки" + +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "Филтри" + +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Етикети" + +#: prefs.php:133 +msgid "Users" +msgstr "Потребители" + +#: prefs.php:136 +msgid "System" +msgstr "СиÑтема" + +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "Създаване на нов акаунт" + +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "Ðовите потребителÑки региÑтрации Ñа забранени админиÑтративно." + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Ðазад към Tiny Tiny RSS" + +#: register.php:218 +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 "Временната ви парола ще бъде изпратена на ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ e-mail. Ðкаунти, в които не е влизано нито веднъж, Ñе изтриват автоматично 24 чаÑа Ñлед изпращане на временната парола." + +#: register.php:224 +msgid "Desired login:" +msgstr "Потребител:" + +#: register.php:227 +msgid "Check availability" +msgstr "Проверка за наличноÑÑ‚" + +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "E-mail:" + +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "Колко е две Ð¿Ð»ÑŽÑ Ð´Ð²Ðµ:" + +#: register.php:235 +msgid "Submit registration" +msgstr "Изпращане на региÑтрациÑта" + +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "РегиÑтрационната Ви Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ðµ непълна." + +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "СъжалÑвам, това потребителÑко име е заето." + +#: register.php:287 +msgid "Registration failed." +msgstr "РегиÑтрациÑта Ñе провали." + +#: register.php:334 +msgid "Account created successfully." +msgstr "Ðкаунтът е Ñъздаден уÑпешно." + +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "Текущо новите потребителÑки региÑтрации Ñа затворени." + +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "Tiny Tiny RSS Ñкрипт за обновÑване на данните." + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "Без категориÑ" + +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d архивирана ÑтатиÑ" +msgstr[1] "%d архивирани Ñтатии" + +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "ÐÑма намерени хранилки." + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "ÐавигациÑ" + +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "ОтварÑне на Ñледваща хранилка" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "ОтварÑне на предходна хранилка" + +#: include/functions2.php:55 +msgid "Open next article" +msgstr "ОтварÑне на Ñледваща ÑтатиÑ" + +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "ОтварÑне на предходна ÑтатиÑ" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "ОтварÑне на Ñледваща ÑÑ‚Ð°Ñ‚Ð¸Ñ (без Ñкролиране на дълги Ñтатии)" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "ОтварÑне на предходна ÑÑ‚Ð°Ñ‚Ð¸Ñ (без Ñкролиране на дълги Ñтатии)" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "ПремеÑтване към Ñледваща ÑÑ‚Ð°Ñ‚Ð¸Ñ (без разгръщане или отбелÑзване като прочетено)" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "ПремеÑтване към предходна ÑÑ‚Ð°Ñ‚Ð¸Ñ (без разгръщане или отбелÑзване като прочетено)" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Показване на диалога за търÑене" + +#: include/functions2.php:62 +msgid "Article" +msgstr "СтатиÑ" + +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "Превключване ÑÑŠÑ/без звезда" + +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "Превключване (не)публикувано" + +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "Превключване четено/нечетено" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Редактиране на тагове" + +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "ПропуÑкане на избраните" + +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "ПропуÑкане на прочетените" + +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "ОтварÑне в нов прозорец" + +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "ОтбелÑзване на по-долните като прочетени" + +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "ОтбелÑзване на по-горните като прочетени" + +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "Скролиране надолу" + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "Скролиране нагоре" + +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "Избиране на ÑтатиÑта под курÑора" + +#: include/functions2.php:75 +msgid "Email article" +msgstr "Изпращане на ÑÑ‚Ð°Ñ‚Ð¸Ñ Ð¿Ð¾ e-mail" + +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "ЗатварÑне/Ñвиване на ÑтатиÑ" + +#: include/functions2.php:77 +msgid "Toggle article expansion (combined mode)" +msgstr "Превключване разгръщането на ÑÑ‚Ð°Ñ‚Ð¸Ñ (комбиниран режим)" + +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "Превключване на вложен оригинал" + +#: include/functions2.php:80 +msgid "Article selection" +msgstr "Избор на ÑтатиÑ" + +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "Избор на вÑички Ñтатии" + +#: include/functions2.php:82 +msgid "Select unread" +msgstr "Избор на нечетени" + +#: include/functions2.php:83 +msgid "Select starred" +msgstr "Избор на тези ÑÑŠÑ Ð·Ð²ÐµÐ·Ð´Ð°" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "Избор на публикувани" + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "Обръщане на избора" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "ИзчиÑтване на избора" + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Хранилка" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "ОпреÑнÑване на текущата хранилка" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "Показване/Ñкриване на прочетените хранилки" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "Ðбониране за хранилка" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Редактиране на хранилка" + +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "Обръщане на подредбата" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "Дебъгване обновÑването на хранилка" + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "ОтбелÑзване на вÑички хранилки като прочетени" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "Свиване/разгъване на текущата категориÑ" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "Превключване на комбиниран режим" + +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "Превключване авто разтÑгане в комбиниран режим" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "Отиди до" + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "Ð’Ñички Ñтатии" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "ОпреÑнÑване" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Облак Ñ Ñ‚Ð°Ð³Ð¾Ð²Ðµ" + +#: include/functions2.php:106 +msgid "Other" +msgstr "Други" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "Създаване на етикет" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "Създаване на филтър" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "Прибиране/изваждане на ÑÑ‚Ñ€Ð°Ð½Ð¸Ñ‡Ð½Ð¸Ñ Ð¿Ð°Ð½ÐµÐ»" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "Показване на помощен диалог" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Резултати от търÑенето: %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +msgid "comment" +msgid_plural "comments" +msgstr[0] "коментар" +msgstr[1] "коментара" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +msgid "comments" +msgstr "коментари" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "нÑма тагове" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "Редактиране на таговете за тази ÑтатиÑ" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "Оригинално от:" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "URL на хранилка" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "ЗатварÑне на този прозорец" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(редактиране на бележка)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "незнаен вид" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "Прикачени" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "Специални" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Ð’Ñички хранилки" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Статии ÑÑŠÑ Ð·Ð²ÐµÐ·Ð´Ð°" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Публикувани Ñтатии" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "ПреÑни Ñтатии" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "Ðрхивирани Ñтатии" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "ÐаÑкоро четени" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "Потребител:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "Парола:" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "Забравих Ñи паролата" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "Профил:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "Профил по подразбиране" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "Използване на по-малко трафик" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "Да не Ñе показват Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² Ñтатии, ÑъкратÑва автоматичните опреÑнÑваниÑ." + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "Запомни ме" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "Вход" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "ВалидациÑта на ÑеÑиÑта Ñе провали (грешно IP)" + +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "ВалидациÑта на ÑеÑиÑта Ñе провали (верÑиÑта на Ñхемата е променена)" + +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "ВалидациÑта на ÑеÑиÑта Ñе провали (потребителÑÑ‚ не е намерен)" + +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "ВалидациÑта на ÑеÑиÑта Ñе провали (паролата е променена)" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "Още такива Ñъвети има в Tiny Tiny RSS wiki." + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Клавишни препратки" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "Shift" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Помощната тема не е намерена." + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "СподелÑне Ñ Tiny Tiny RSS" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Заглавие:" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "Съдържание:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "Етикети:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "Споделените Ñтатии ще Ñе поÑвÑÑ‚ в \"Публикувани Ñтатии\"." + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "СподелÑне" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "Отказ" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "Ðе Ñте влезли" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Грешен потребител или парола" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "Вече Ñте абонирани за %s." + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "Ðбонирани Ñте за %s." + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "Ðевъзможно абониране за %s." + +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "ÐÑма намерени хранилки в %s." + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "Ðамерени Ñа множеÑтво URL-и на хранилки." + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "Ðевъзможно абониране за %s.
    Ðе може да Ñе изтегли URL на хранилка." + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "Ðбониране за избраната хранилка" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Редактиране на абонаментните опции" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "ВъзÑтановÑване на парола" + +#: classes/handler/public.php:805 +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "Ðужно е да укажете валидни име на акаунт и e-mail. Връзка за ÑмÑна на парола ще бъде изпратена на Ð’Ð°ÑˆÐ¸Ñ e-mail адреÑ." + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "СмÑна на парола" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "ÐÑкои от задължителните параметри на формата липÑват или Ñа грешни." + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "Ðазад" + +#: classes/handler/public.php:878 +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] ЗаÑвка за ÑмÑна на парола" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "СъжалÑвам, комбинациÑта от потребител и e-mail не е намерена." + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "Вашето ниво на доÑтъп е недоÑтатъчно за изпълнението на този Ñкрипт." + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "ОбновÑване на базата данни" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Извършване на обновÑваниÑ" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "Преглед като RSS хранилка" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "Преглед като RSS" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "ПоÑледно обновÑване: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "Ð’Ñички" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Обръщане" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Ðищо" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "Още..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Превключване на избора:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Избрани:" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "Задаване на точки" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "Ðрхивиране" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "Ðазад" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "Изтриване" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "Препращане по e-mail" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Хранилка:" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "Хранилката не е намерена." + +#: classes/feeds.php:268 +msgid "Never" +msgstr "Ðикога" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "ВнеÑено в \"%s\"" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +msgid "mark feed as read" +msgstr "отбелÑзване на хранилката като прочетена" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "Свиване на ÑтатиÑ" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "Ðе Ñа намерени нечетени Ñтатии за показване." + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "Ðе Ñа намерени обновени Ñтатии за показване." + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "Ðе Ñа намерени Ñтатии ÑÑŠÑ Ð·Ð²ÐµÐ·Ð´Ð° за показване." + +#: classes/feeds.php:778 +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 "Ðе Ñа намерени Ñтатии за показване. Можете да приÑвоите Ñтатии към етикети ръчно от контекÑтното меню на заглавието на ÑтатиÑта (прилага Ñе към вÑички избрани Ñтатии) или да използвате филтър." + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "Ðе Ñа намерени Ñтатии за показване." + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "Хранилките Ñа обновени за поÑледно в %s" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "ÐÑкои хранилки имат грешки при обновÑването (клик за детайли)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "Ðе е избрана хранилка." + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "URL на хранилка/Ñайт" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "ПоÑтавÑне в категориÑ:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "Ðалични хранилки" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "ÐвтентикациÑ" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "Потребител" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "Парола" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Тази хранилка изиÑква автентикациÑ." + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "Ðбониране" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "Още хранилки" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "ТърÑене" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "ПопулÑрни хранилки" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "Ðрхив Ñ Ñ…Ñ€Ð°Ð½Ð¸Ð»ÐºÐ¸" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "лимит" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "Премахване" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "ТърÑене за" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +msgid "Search syntax" +msgstr "СинтакÑÐ¸Ñ Ð½Ð° търÑенето" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "СтатиÑта не е намерена." + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "Тагове за тази ÑÑ‚Ð°Ñ‚Ð¸Ñ (разделени ÑÑŠÑ Ð·Ð°Ð¿ÐµÑ‚Ð°Ð¸):" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Запазване" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "OPML инÑтрумент" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "ВнаÑÑне на OPML..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "Връщане към предпочитаниÑ" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "ДобавÑне на хранилка: %s" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "Дублирана хранилка: %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "ДобавÑне на етикет \"%s\"" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "Дублиран етикет: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "Задаване на ключ за Ð¿Ñ€ÐµÐ´Ð¿Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð¸Ñ \"%s\" към \"%s\"" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "ДобавÑне на филтър..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "Обработка на категориÑ: %s" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "Качването Ñе провали Ñ ÐºÐ¾Ð´ за грешка \"%d\"" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "ÐевъзможноÑÑ‚ за премеÑтване на ÐºÐ°Ñ‡ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»." + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "Грешка: молÑ, качете OPML файл!" + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "Грешка: не може да Ñе намери премеÑтениÑÑ‚ OPML файл." + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Грешка при разбора на документа." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "Вашето ниво на доÑтъп е недоÑтатъчно, за да отворите този раздел." + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "Журнал на грешките" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "ОпреÑнÑване" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "ИзчиÑтване на журнала" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Грешка" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "Име на файл" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Съобщение" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Дата" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "ПотребителÑÑ‚ не е намерен" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "РегиÑтриран" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "ПоÑледно влÑзъл" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "Бройка на абонираните хранилки" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Ðбонирани хранилки" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Ðиво на доÑтъп:" + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Опции" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "Добавен потребител %s Ñ Ð¿Ð°Ñ€Ð¾Ð»Ð° %s" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "Ðе може да Ñе Ñъздаде потребител %s" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "ПотребителÑÑ‚ %s вече ÑъщеÑтвува." + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "ПромÑна паролата на потребител %s към %s" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "Изпращане на нова парола на потребител %s към %s" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] ИзвеÑтие за ÑмÑна на парола" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "Избиране" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Създаване на потребител" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "Детайли" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Редактиране" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Ðиво на доÑтъп" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "ПоÑледен вход" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Клик за редактиране" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "Ðе е указан потребител." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "Ðе Ñа намерени Ñъвпадащи потребители." + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Отметка за активиране на полето" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "(%d хранилка)" +msgstr[1] "(%d хранилки)" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "Заглавие на хранилка" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "ОбновÑване" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Изтриване на ÑтатиÑ:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "Съвет: трÑбва да попълните информациÑта Ви за вход, ако хранилката изиÑква автентикациÑ, Ñ Ð¸Ð·ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ на Twitter хранилките." + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "Скриване от \"ПопулÑрни хранилки\"" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "Включване в e-mail Ñправката" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Винаги да Ñе показват прикачените изображениÑ" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "Да не Ñе влагат изображениÑ" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Локално кеширане на изображениÑта" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "ОтбелÑзване на обновените Ñтатии като нечетени" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "Икона" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "ЗамÑна" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "Преабониране за прокарване на обновлениÑ" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "Ðулиране ÑтатуÑа на PubSubHubbub абонамента за хранилки Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾ прокарване." + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Готово." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "Хранилки Ñ Ð³Ñ€ÐµÑˆÐºÐ¸" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "Ðеактивни хранилки" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "Редактиране на избраните хранилки" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "Ðулиране на подредбата" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "Партидно абониране" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "Категории" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "ДобавÑне на категориÑ" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "Премахване на избраното" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "Още дейÑтвиÑ..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "Ръчно изтриване" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "ИзчиÑтване данните на хранилката" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Преточкуване на Ñтатии" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "Чрез OPML можете да изнаÑÑте и внаÑÑте Вашите хранилки, филтри, етикети и Tiny Tiny RSS наÑтройки." + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "Само оÑновните наÑтройки на профила могат да Ñе мигрират чрез OPML." + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "ВнаÑÑне на мой OPML" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "Име на файл:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "Включително наÑтройките" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "ИзнаÑÑне на OPML" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "ВашиÑÑ‚ OPML може да Ñе публикува публично и вÑеки, който знае Ð´Ð¾Ð»Ð½Ð¸Ñ URL, може да Ñе абонира." + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "ПубликуваниÑÑ‚ OPML не Ñъдържа Вашите Tiny Tiny RSS наÑтройки, хранилки Ñ Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¸ Ñкрити хранилки от \"ПопулÑрни хранилки\"." + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "Публичен OPML URL" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "Показване на Ð¿ÑƒÐ±Ð»Ð¸ÐºÑƒÐ²Ð°Ð½Ð¸Ñ OPML URL" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Firefox интеграциÑ" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "Този Tiny Tiny RSS Ñайт може да Ñе използва като четец на хранилки във Firefox чрез избиране на връзката по-долу." + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "Кликнете тук, за да региÑтрирате този Ñайт като четец на хранилки." + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "Публикувани и Ñподелени Ñтатии / Генерирани хранилки" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "Публикуваните Ñтатии Ñа изнеÑени като публична RSS хранилка и вÑеки, който знае ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿Ð¾-долу URL, може да Ñе абонира." + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "Показване на URL" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "ИзчиÑтване на вÑички генерирани URL-и" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "Тези хранилки не Ñа обновÑвани Ñ Ð½Ð¾Ð²Ð¾ Ñъдържание от 3 меÑеца (най-Ñтарите отгоре):" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "Клик за редактиране на хранилка" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "ОтпиÑване от избраните хранилки" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "Добавете по една валидна RSS хранилка на ред (не Ñе прави заÑичане на хранилки)" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "Хранилки за абониране. По една на ред" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "Хранилките изиÑкват автентикациÑ." + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "Статии, Ñъвпадащи Ñ Ñ‚Ð¾Ð·Ð¸ филтър:" + +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "Ðе Ñа намерени Ñкорошни Ñтатии, Ñъвпадащи Ñ Ñ‚Ð¾Ð·Ð¸ филтър." + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(обратно)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "%s на %s в %s %s" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "ÐадпиÑ" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "Съвпадение" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "ДобавÑне" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "Прилагане на дейÑтвиÑта" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Ðктивирано" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "Съвпадение Ñ Ð½Ñкое правило" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "Обратно Ñъвпадение" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "Проба" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "Комбиниране" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Създаване" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "Обръщане на Ñъвпадението от регулÑрното уÑловие" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "върху поле" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "в" + +#: classes/pref/filters.php:947 +msgid "Wiki: Filters" +msgstr "Wiki: Филтри" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "Запазване на правило" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "ДобавÑне на правило" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Извършване на дейÑтвие" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¸:" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "Запазване на дейÑтвие" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "ДобавÑне на дейÑтвие" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[Без надпиÑ]" + +#: classes/pref/filters.php:1044 +#, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "%s (%d правило)" +msgstr[1] "%s (%d правила)" + +#: classes/pref/filters.php:1059 +#, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "%s (+%d дейÑтвие)" +msgstr[1] "%s (+%d дейÑтвиÑ)" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "Цветове" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "Преден план:" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "Фон:" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "Създаден етикет %s" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "ИзчиÑтване на цветове" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "ОÑновни" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "ИнтерфейÑ" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Разширени" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "Справка" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "ПозволÑване на дублирани Ñтатии" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Черен ÑпиÑък на тагове" + +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "При авто заÑичане на тагове в Ñтатиите тези тагове нÑма да Ñе прилагат (разделени ÑÑŠÑ Ð·Ð°Ð¿ÐµÑ‚Ð°Ð¸)." + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "Ðвтоматично отбелÑзване на Ñтатиите като прочетени" + +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "Тази Ð¾Ð¿Ñ†Ð¸Ñ Ð°ÐºÑ‚Ð¸Ð²Ð¸Ñ€Ð° автоматичното отбелÑзване на Ñтатиите като прочетени, докато разглеждате ÑпиÑъка ÑÑŠÑ Ñтатии." + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "Ðвтоматично разпъване на Ñтатиите в комбиниран режим" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "Комбинирано показване на хранилки" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Показване на разпънат ÑпиÑък от Ñтатии вмеÑто отделни изгледи за заглавиÑта и Ñъдържанието на Ñтатиите" + +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "Потвърждаване отбелÑзването на хранилки като прочетени" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "КоличеÑтво Ñтатии за показване наведнъж" + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "Интервал по подразбиране за обновÑване на хранилките" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "Ðай-кратък интервал, през който хранилките ще Ñе обновÑват, незавиÑимо от метода за обновÑване" + +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "ОтбелÑзване на Ñтатиите в e-mail Ñправката като прочетени" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "Ðктивиране на e-mail Ñправка" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Тази Ð¾Ð¿Ñ†Ð¸Ñ Ð°ÐºÑ‚Ð¸Ð²Ð¸Ñ€Ð° изпращането на ежедневна Ñправка Ñ Ð½Ð¾Ð²Ð¸ (и нечетени) Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ñ Ð½Ð° Ð’Ð°ÑˆÐ¸Ñ Ð·Ð°Ð´Ð°Ð´ÐµÐ½ e-mail адреÑ" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "Опит за изпращане на Ñправка около определен чаÑ" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "Използва UTC чаÑова зона" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "Ðктивиране на API доÑтъп" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "ПозволÑване външни клиенти да доÑтъпват този акаунт през API" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Ðктивиране на категории за хранилки" + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "Подреждане на хранилките по брой нечетени Ñтатии" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "МакÑимална възраÑÑ‚ на преÑните Ñтатии (в чаÑове)" + +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "Скриване на хранилки без нечетени Ñтатии" + +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "Показване на Ñпециалните хранилки при Ñкрити прочетени хранилки" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "Дълъг формат на дата" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "СинтакÑиÑÑŠÑ‚ е ÑъщиÑÑ‚ като на PHP функциÑта date()." + +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "При изчитане да Ñе показва Ñледващата хранилка" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Ðвтоматично отварÑне на Ñледващата хранилка Ñ Ð½ÐµÑ‡ÐµÑ‚ÐµÐ½Ð¸ Ñтатии при отбелÑзване на текущата като прочетена" + +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Изтриване на Ñтатии Ñлед този брой дни (0 - без изтриване)" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "Изтриване на нечетени Ñтатии" + +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "Обръщане подредбата на заглавиÑта (първо най-Ñтарите)" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "ÐšÑŠÑ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ на дата" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "Показване преглед на Ñъдържанието в ÑпиÑъка ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ñ" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "Подредба на заглавиÑта по дата на хранилка" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "Използване на датата от хранилката за подредба на заглавиÑта вмеÑто локалната дата на вмъкване." + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "Вход Ñ SSL Ñертификат" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "РегиÑтриране на клиентÑÐºÐ¸Ñ Ð’Ð¸ SSL Ñертификат в tt-rss" + +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "Без вграждане на Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² Ñтатиите" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "Премахване на опаÑните тагове от Ñтатиите" + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Премахване на HTML кодовете при показване на Ñтатиите, оÑвен най-оÑновните." + +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "ÐаглаÑÑване Ñтила на Ñтраницата" + +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "ÐаглаÑÑване CSS Ñтила на Ñтраницата по Ваше уÑмотрение" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "ЧаÑова зона" + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "Групиране на Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ñ Ð²ÑŠÐ² виртуални хранилки" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "Специални хранилки, етикети и категории Ñе групират по оригиналните хранилки" + +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "Език" + +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "Тема" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "Изберете една от наличните CSS теми" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "КонфигурациÑта е запазена." + +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "Личните Ви данни Ñа запазени." + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "ПредпочитаниÑта Ви Ñа зададени към ÑтойноÑти по подразбиране." + +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "Лични данни / ÐвтентикациÑ" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "Лични данни" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "Пълно име" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "E-mail" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Ðиво на доÑтъп" + +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Запазване на данните" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "Паролата Ви е ÑÑŠÑ ÑтойноÑÑ‚ по подразбиране. МолÑ, Ñменете Ñ!" + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "ПромÑната на текущата парола ще забрани еднократната парола." + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Стара парола" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Ðова парола" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Потвърждение на парола" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "ПромÑна на парола" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "Еднократни пароли / Authenticator" + +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "Еднократните пароли текущо Ñа активни. Въведете текущата Ви парола по-долу, за да ги забраните." + +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "Въведете Вашата парола" + +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "Забрана на еднократни пароли" + +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "Ðужен Ви е ÑъвмеÑтим Authenticator, за да използвате това. ПромÑната на паролата Ви автоматично забранÑва еднократната парола." + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "Сканиране на ÑÐ»ÐµÐ´Ð½Ð¸Ñ ÐºÐ¾Ð´ Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÑ‚Ð¾ Authenticator:" + +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "Въведете генерираната еднократна парола" + +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "Ðктивиране на еднократна парола" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "Ðеобходими Ñа PHP GD функции за поддръжка на еднократни пароли." + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "ÐÑкои Ð¿Ñ€ÐµÐ´Ð¿Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð¸Ñ Ñа налични Ñамо в профила по подразбиране." + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "ПерÑонализиране" + +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "РегиÑтриране" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "ИзчиÑтване" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "Текущо Ñървърно време: %s (UTC)" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Запазване на конфигурациÑта" + +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "Запазване и изход от предпочитаниÑта" + +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "Управление на профили" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "Връщане по подразбиране" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "Добавки" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "Ще трÑбва да презаредите Tiny Tiny RSS, за да влÑзат в Ñила промените по добавките." + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "Изтеглете още добавки от tt-rss.org форумите или wiki." + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "СиÑтемни добавки" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "Добавка" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "ОпиÑание" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "ВерÑиÑ" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "Ðвтор" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "още инфо" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "ИзчиÑтване на данни" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "ПотребителÑки добавки" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "Ðктивиране на избраните добавки" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "Грешна еднократна парола" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "Грешна парола" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "Тук можете да презапиÑвате цветове, шрифтове и Ñлоеве от текущо избраната тема Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñки CSS декларации. Този файл може да Ñе ползва като шаблон." + +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "Създаване на профил" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(активен)" + +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "Премахване на избраните профили" + +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "Ðктивиране на профил" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "Ðко имате внеÑени етикети и/или филтри, може да е нужно да презаредите предпочитаниÑта, за да видите новите Ви данни." + +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "ВашиÑÑ‚ публичен OPML URL е:" + +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "Генериране на нов 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 "ОбновÑващиÑÑ‚ демон е активиран в конфигурациÑта, но процеÑÑŠÑ‚ на демона не е включен, което пречи на вÑички хранилки да Ñе обновÑват. МолÑ, включете процеÑа на демона или Ñе Ñвържете ÑÑŠÑ ÑобÑтвеника на инÑталациÑта!" + +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "ПоÑледно обновÑване:" + +#: 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 "ОбновÑващиÑÑ‚ демон изиÑква твърде много време за обновÑване на хранилките. Това може да е знак за проблем като Ñрив или забиване. МолÑ, проверете процеÑа на демона или Ñе Ñвържете ÑÑŠÑ ÑобÑтвеника на инÑталациÑта!" + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "Можете да видите тази хранилка като RSS на ÑÐ»ÐµÐ´Ð½Ð¸Ñ URL:" + +#: plugins/af_psql_trgm/init.php:28 +#, fuzzy, php-format +msgid "Data saved (%s, %d)" +msgstr "Данните Ñа запазени (%s)" + +#: plugins/af_psql_trgm/init.php:112 +msgid "Show related articles" +msgstr "Показване на Ñвързани Ñтатии" + +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +msgid "Mark similar articles as read" +msgstr "ОтбелÑзване на подобни Ñтатии като прочетени" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +msgid "Global settings" +msgstr "Глобални наÑтройки" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "Минимална подобноÑÑ‚:" + +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "Минимална дължина на заглавие:" + +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "Ðктивиране на категории за хранилки" + +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "Текущо активирано за (клик за редактиране):" + +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "ПодобноÑÑ‚ (pg_trgm)" + +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "Хранилки, поддържани от af_comics" + +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "Текущо Ñе поддържат Ñледните комикÑи:" + +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "Редактиране бележка на ÑтатиÑ" + +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "ÐÑма качени файлове." + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "Готово. %d от %d Ñтатии Ñа внеÑени." + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "Документът има некоректен формат." + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "ВнаÑÑне на Ñподелени и ÑÑŠÑ Ð·Ð²ÐµÐ·Ð´Ð° елементи от Google Reader" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "ПоÑтавете Ð’Ð°ÑˆÐ¸Ñ starred.json или shared.json във формата по-долу!" + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "ВнаÑÑне на моите елементи ÑÑŠÑ Ð·Ð²ÐµÐ·Ð´Ð°" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[Препратено]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "МножеÑтво Ñтатии" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "Изберете ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð»Ð¸Ð½Ðº, за да извикате пощенÑÐºÐ¸Ñ Ð’Ð¸ клиент:" + +#: plugins/mailto/init.php:75 +msgid "Forward selected article(s) by email." +msgstr "Препращане на избраните Ñтатии по e-mail." + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "Ще имате възможноÑÑ‚ да редактирате Ñъобщението преди изпращане в пощенÑÐºÐ¸Ñ Ð’Ð¸ клиент." + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "ЗатварÑне на този диалог" + +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "ВнаÑÑне и изнаÑÑне" + +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "Можете да изнаÑÑте и внаÑÑте Вашите архивирани и ÑÑŠÑ Ð·Ð²ÐµÐ·Ð´Ð° Ñтатии като резервно копие или при Ð¼Ð¸Ð³Ñ€Ð°Ñ†Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ tt-rss инÑталации Ñ ÐµÐ´Ð½Ð° и Ñъща верÑиÑ." + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "ИзнаÑÑне на моите данни" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "ВнаÑÑне" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "ÐеуÑпешно внаÑÑне: грешна верÑÐ¸Ñ Ð½Ð° Ñхема." + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "ÐеуÑпешно внаÑÑне: непознат формат на документа." + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "Завършени:" + +#: plugins/import_export/init.php:388 +#, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "%d обработена ÑтатиÑ, " +msgstr[1] "%d обработени Ñтатии, " + +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "%d внеÑена, " +msgstr[1] "%d внеÑени, " + +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "%d Ñъздадена хранилка." +msgstr[1] "%d Ñъздадени хранилки." + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "ÐеуÑпех при зареждането на XML документ." + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "Подготовка на данни" + +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "Ðе Ñе работи безопаÑно (клик за превключване)" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "NSFW добавка" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "Тагове предвид NSFW (разделени ÑÑŠÑ Ð·Ð°Ð¿ÐµÑ‚Ð°Ð¸)" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "КонфигурациÑта е запазена." + +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "МолÑ, въведете еднократната Ви парола:" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "Паролата е Ñменена." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "Старата парола е грешна." + +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "ЗатварÑне на ÑтатиÑ" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "ПощенÑките адреÑи Ñа запазени." + +#: plugins/mail/init.php:34 +msgid "Mail plugin" +msgstr "Добавка за поща" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "Тук можете да зададете предефинирани e-mail адреÑи (разделени ÑÑŠÑ Ð·Ð°Ð¿ÐµÑ‚Ð°Ð¸):" + +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "До:" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "Заглавие:" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "Изпращане на e-mail" + +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "Свързана" + +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" +msgstr "ИнÑталациÑ" + +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "URL на инÑталациÑ" + +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "Ключ за доÑтъп:" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "Ключ за доÑтъп" + +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "Използване на един ключ за доÑтъп за двете Ñвързани инÑталации." + +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "Генериране на нов ключ" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "Свързване на инÑталациÑ" + +#: 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 "Можете да Ñвържете други инÑталации на Tiny Tiny RSS към тази, за да ÑподелÑте популÑрни хранилки. Свързване към тази инÑÑ‚Ð°Ð»Ð°Ñ†Ð¸Ñ Ð½Ð° Tiny Tiny RSS чрез този URL:" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "ПоÑледно Ñвързана" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "СтатуÑ" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "Съхранени хранилки" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "Създаване на връзка" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "КонфигурациÑта е запазена." + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "Проверка за наличноÑÑ‚" + +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "Редактиране бележка на ÑтатиÑ" + +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "Споделени Ñтатии" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +#, fuzzy +msgid "Statistics" +msgstr "СтатуÑ" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "Статии ÑÑŠÑ Ð·Ð²ÐµÐ·Ð´Ð°" + +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "ИзчиÑтване на данни" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, fuzzy, php-format +msgid "Currently stored as: %s" +msgstr "Текущо Ñървърно време: %s (UTC)" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "Отметки" + +#: 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 "Завлачете линка по-долу до лентата Ñ Ð¸Ð½Ñтрументи на браузъра Ви, отворете хранилката, коÑто Ви интереÑува, в браузъра и изберете линка, за да Ñе абонирате." + +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "Ðбониране за \"%s\" в Tiny Tiny RSS?" + +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Ðбониране в Tiny Tiny RSS?" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "Използвайте тази отметка за публикуване на произволни Ñтраници чрез Tiny Tiny RSS" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "Тук можете да деактивирате вÑички Ñтатии, Ñподелени чрез уникални URL-и." + +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "Премахване на ÑподелÑнето на вÑички Ñтатии" + +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "СподелÑне чрез URL" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "Можете да Ñподелите тази ÑÑ‚Ð°Ñ‚Ð¸Ñ Ñ‡Ñ€ÐµÐ· ÑÐ»ÐµÐ´Ð½Ð¸Ñ ÑƒÐ½Ð¸ÐºÐ°Ð»ÐµÐ½ URL:" + +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "Премахване на ÑподелÑнето на ÑтатиÑ" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "Грешката ще бъде запиÑана в указаното мÑÑто за журнал." + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "Рапорт към tt-rss.org" + +#: js/functions.js:93 +msgid "Close" +msgstr "ЗатварÑне" + +#: js/functions.js:104 +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "Сигурни ли Ñте за рапорта на този Ñлучай към tt-rss.org? Рапортът ще включва Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° браузъра Ви и tt-rss конфигурациÑта. Вашето IP ще бъде запазено в базата данни." + +#: js/functions.js:224 +msgid "Click to close" +msgstr "ЗатварÑне" + +#: js/functions.js:1051 +msgid "Edit action" +msgstr "Редактиране на дейÑтвие" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "Създаване на филтър" + +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "Ðулиране на абонамента? Tiny Tiny RSS ще опита да Ñе абонира към извеÑтиÑта отново при Ñледващото обновÑване на хранилките." + +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "Ðулиране на абонамент." + +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "ОтпиÑване от \"%s\"?" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "Премахване на хранилка..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "МолÑ, въведете име на категориÑ:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "Генериране на нов Ñиндикиращ Ð°Ð´Ñ€ÐµÑ Ð·Ð° тази хранилка?" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Опит за ÑмÑна на адреÑ..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "Ðе Ñа избрани хранилки." + +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "Премахване на избраните хранилки от архива? Хранилките ÑÑŠÑ Ñъхранени Ñтатии нÑма да бъдат премахнати." + +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "Хранилки Ñ Ð³Ñ€ÐµÑˆÐºÐ¸ при обновÑване" + +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "Премахване на избраните хранилки?" + +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "Премахване на избраните хранилки..." + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "Редактиране на категориÑ" + +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "Премахване на категориÑ" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "Обръщане" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "МолÑ, въведете потребител:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "Ðе може да Ñе Ñъздаде потребител: не е указано име." + +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "ДобавÑне на потребител..." + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Редактор на потребител" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "Запазване на данни..." + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "Редактиране на филтър" + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "Премахване на филтър?" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "Премахване на филтър..." + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "Премахване на избраните етикети?" + +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "Премахване на избраните етикети..." + +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "Ðе Ñа избрани етикети." + +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "Премахване на избраните потребители? ÐдминиÑтраторът по подразбиране и ВашиÑÑ‚ акаунт нÑма да бъдат премахнати." + +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "Премахване на избраните потребители..." + +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "Ðе Ñа избрани потребители." + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "Премахване на избраните филтри?" + +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "Премахване на избраните филтри..." + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "Ðе Ñа избрани филтри." + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "ОтпиÑване от избраните хранилки?" + +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "ОтпиÑване от избраните хранилки..." + +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "МолÑ, изберете Ñамо една хранилка!" + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "Изтриване на вÑички Ñтатии без звезда от избраната хранилка?" + +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "ИзчиÑтване на избраната хранилка..." + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "Статии на колко дни да Ñе запазÑÑ‚ (0 - по подразбиране)?" + +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "Изтриване на избраната хранилка..." + +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "МолÑ, изберете Ñамо един потребител!" + +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "СмÑна паролата на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»?" + +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "СмÑна паролата на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»..." + +#: js/prefs.js:565 +msgid "User details" +msgstr "Детайли на потребител" + +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "МолÑ, изберете Ñамо един филтър!" + +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "Комбиниране на избраните филтри?" + +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "СъединÑване на филтри..." + +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "Редактиране на множеÑтво хранилки" + +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "Запазване на промените в избраните хранилки?" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "ВнаÑÑне на OPML" + +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "МолÑ, първо изберете OPML файл!" + +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "ВнаÑÑне. МолÑ, изчакайте..." + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "Връщане по подразбиране?" + +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "Ðбониране за хранилки..." + +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "ИзчиÑтване на Ñъхранените данни за тази добавка?" + +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "ИзчиÑтване на вÑички ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚ журнала Ñ Ð³Ñ€ÐµÑˆÐºÐ¸?" + +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "ОтбелÑзване на вÑички Ñтатии като прочетени?" + +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "ОтбелÑзване на вÑички хранилки като прочетени..." + +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "МолÑ, първо активирайте добавката \"mail\"!" + +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "Ðе можете да редактирате този вид хранилка." + +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "МолÑ, първо активирайте добавката \"embed_original\"!" + +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "ÐÑма широк екран в комбиниран режим." + +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "Ðе можете да преточкувате този тип хранилка." + +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "МолÑ, първо изберете нÑÐºÐ¾Ñ Ñ…Ñ€Ð°Ð½Ð¸Ð»ÐºÐ°!" + +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "Преточкуване на Ñтатиите в \"%s\"?" + +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "Преточкуване на Ñтатии..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "Ðе Ñа избрани Ñтатии." + +#: js/viewfeed.js:1018 +#, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "Изтриване на %d избрана ÑÑ‚Ð°Ñ‚Ð¸Ñ Ð² \"%s\"?" +msgstr[1] "Изтриване на %d избрани Ñтатии в \"%s\"?" + +#: js/viewfeed.js:1020 +#, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "Изтриване на %d избрана ÑтатиÑ?" +msgstr[1] "Изтриване на %d избрани Ñтатии?" + +#: js/viewfeed.js:1062 +#, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "Ðрхивиране на %d избрана ÑÑ‚Ð°Ñ‚Ð¸Ñ Ð² \"%s\"?" +msgstr[1] "Ðрхивиране на %d избрани Ñтатии в \"%s\"?" + +#: js/viewfeed.js:1065 +#, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "Връщане на %d архивирана ÑтатиÑ?" +msgstr[1] "Връщане на %d архивирани Ñтатии?" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "ÐœÐ¾Ð»Ñ Ð¸Ð¼Ð°Ð¹Ñ‚Ðµ предвид, че Ñтатиите без звезда може да бъдат изтрити при Ñледващото обновÑване на хранилката." + +#: js/viewfeed.js:1112 +#, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "ОтбелÑзване на %d избрана ÑÑ‚Ð°Ñ‚Ð¸Ñ Ð² \"%s\" като прочетена?" +msgstr[1] "ОтбелÑзване на %d избрани Ñтатии в \"%s\" като прочетени?" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "Редактиране таговете на ÑтатиÑ" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "Запазване таговете на ÑтатиÑ..." + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +msgid "Click to open next unread feed." +msgstr "ОтварÑне на Ñледващата непрочетена хранилка." + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "ОтварÑне на оригиналната ÑтатиÑ" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "ПриÑвоÑване на етикет" + +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "Премахване на етикет" + +#: js/viewfeed.js:2159 +msgid "Select articles in group" +msgstr "Избиране на Ñтатии в група" + +#: js/viewfeed.js:2168 +msgid "Mark group as read" +msgstr "ОтбелÑзване на групата като прочетена" + +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "ОтбелÑзване на хранилката като прочетена" + +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "МолÑ, въведете нови точки за избраната ÑтатиÑ:" + +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "МолÑ, въведете нови точки за тази ÑтатиÑ:" + +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "URL на ÑтатиÑта:" + +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "СъжалÑвам, браузърът Ви не поддържа теÑтови iframe-ове." + +#: plugins/af_psql_trgm/init.js:11 +msgid "Related articles" +msgstr "Свързани Ñтатии" + +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "Запазване бележка на ÑтатиÑ..." + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "ВнаÑÑне от Google Reader" + +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "МолÑ, първо изберете файл!" + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "Препращане на ÑÑ‚Ð°Ñ‚Ð¸Ñ Ð¿Ð¾ e-mail" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "ИзнаÑÑне на данни" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "Готово, изнеÑена %d ÑтатиÑ. Можете да изтеглите данните тук." +msgstr[1] "Готово, изнеÑени %d Ñтатии. Можете да изтеглите данните тук." + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "ВнаÑÑне на данни" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "МолÑ, първо изберете файл!" + +#: plugins/shorten_expanded/init.js:37 +msgid "Click to expand article" +msgstr "Клик за разпъване на ÑтатиÑ" + +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "Грешка при изпращане на e-mail:" + +#: plugins/mail/mail.js:38 +msgid "Your message has been sent." +msgstr "Съобщението Ви е изпратено." + +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "Свързване на инÑталациÑ" + +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "Редактиране на инÑталациÑ" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "Премахване на избраните инÑталации?" + +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "Премахване на избраните инÑталации..." + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "Ðе Ñа избрани инÑталации." + +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "МолÑ, изберете Ñамо една инÑталациÑ!" + +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "ИзчиÑтване данните на хранилката" + +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "" + +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "СподелÑне на ÑÑ‚Ð°Ñ‚Ð¸Ñ Ñ‡Ñ€ÐµÐ· URL" + +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "Генериране на нов Ñподелен URL за тази ÑтатиÑ?" + +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "Опит за ÑмÑна на URL..." + +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "Премахване ÑподелÑнето на тази ÑтатиÑ?" + +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "Опит за премахване на ÑподелÑнето..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "Това ще отвалидира вÑички предходно Ñподелени URL-и на ÑтатиÑта. Продължаване?" + +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "ИзчиÑтване на URL-и..." + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "Споделените URL-и Ñа изчиÑтени." + +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "ОтбелÑзване на вÑички Ñтатии в \"%s\" като прочетени?" + +#: js/feedlist.js:435 +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "ОтбелÑзване на вÑички Ñтатии в \"%s\", по-Ñтари от 1 ден, като прочетени?" + +#: js/feedlist.js:438 +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "ОтбелÑзване на вÑички Ñтатии в \"%s\", по-Ñтари от 1 Ñедмица, като прочетени?" + +#: js/feedlist.js:441 +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "ОтбелÑзване на вÑички Ñтатии в \"%s\", по-Ñтари от 2 Ñедмици, като прочетени?" + +#: js/functions.js:615 +msgid "Error explained" +msgstr "ОбÑÑнение на грешка" + +#: js/functions.js:697 +msgid "Upload complete." +msgstr "Качването приключи." + +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "Премахване на Ñъхранената икона на хранилка?" + +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "Премахване икона на хранилка..." + +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "Иконата на хранилката е премахната." + +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "МолÑ, изберете файл Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ за качване!" + +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "Качване на нова икона за тази хранилка?" + +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "Качване. МолÑ, изчакайте..." + +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "МолÑ, въведете Ð½Ð°Ð´Ð¿Ð¸Ñ Ð½Ð° етикет:" + +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "Ðе може да Ñе Ñъздаде етикет: липÑва надпиÑ." + +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "Ðбониране за хранилка" + +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "Разборът на изхода Ñе провали. Това може да е знак за проÑрочено време на Ñървъра и/или мрежови проблеми. Бекенд изходът е запазен в конзолата на браузъра." + +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "Ðбониране за \"%s\"" + +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "УказаниÑÑ‚ URL изглежда невалиден." + +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "УказаниÑÑ‚ URL не изглежда да Ñъдържа хранилки." + +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "Разгъване за избор на хранилка" + +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "Ðе може да Ñе изтегли указаниÑÑ‚ URL: %s" + +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "XML проверката Ñе провали: %s" + +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "Вече Ñте абонирани за тази хранилка." + +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "Редактиране на правило" + +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "Редактиране на хранилка" + +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "Още хранилки" + +#: js/functions.js:1878 +msgid "Help" +msgstr "Помощ" + +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "Премахване на ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ \"%s\"? Ð’Ñички хранилки в Ð½ÐµÑ Ñ‰Ðµ бъдат Ñложени в \"Без категориÑ\"." + +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "Премахване на категориÑ..." + +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "Премахване на избраните категории?" + +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "Премахване на избраните категории..." + +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "Ðе Ñа избрани категории." + +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "Име на категориÑ:" + +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "Създаване на категориÑ..." + +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "Хранилки без Ñкорошни обновлениÑ" + +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "ЗамÑна на текущо Ð¿ÑƒÐ±Ð»Ð¸ÐºÑƒÐ²Ð°Ð½Ð¸Ñ OPML Ð°Ð´Ñ€ÐµÑ Ñ Ð½Ð¾Ð²?" + +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "ИзчиÑтване на хранилка..." + +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "Преточкуване на Ñтатиите в избраните хранилки?" + +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "Преточкуване на избраните хранилки..." + +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "Преточкуване на вÑички Ñтатии? Това може да отнеме много време." + +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "Преточкуване на хранилки..." + +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "Връщане на избраните етикети към цветове по подразбиране?" + +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "ÐаÑтройки на профили" + +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "Премахване на избраните профили? Ðктивните и подразбиращи профили нÑма да бъдат премахнати." + +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "Премахване на избраните профили..." + +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "Ðе Ñа избрани профили." + +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "Ðктивиране на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»?" + +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "МолÑ, изберете профил за активиране!" + +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "Създаване на профил..." + +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "Това ще отвалидира вÑички предходно генерирани URL-и за хранилката. Продължаване?" + +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "Генерираните URL-и Ñа изчиÑтени." + +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Редактор на етикети" + +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "Ðе можете да Ñе отпишете от тази категориÑ." + +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "ОтмÑна на търÑенето" + +#: js/viewfeed.js:174 +#, fuzzy +msgid "New articles found, reload feed to continue." +msgstr "Ðе Ñа намерени Ñтатии за показване." + +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Премахване на звезда на ÑтатиÑ" + +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "Слагане на звезда на ÑтатиÑ" + +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "Разпубликуване на ÑтатиÑ" + +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Публикуване на ÑтатиÑ" + +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "%d ÑÑ‚Ð°Ñ‚Ð¸Ñ Ðµ избрана" +msgstr[1] "%d Ñтатии Ñа избрани" + +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "Ðе е избрана ÑтатиÑ." + +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "Ðе Ñа намерени Ñтатии за отбелÑзване" + +#: js/viewfeed.js:1452 +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "ОтбелÑзване на %d ÑÑ‚Ð°Ñ‚Ð¸Ñ ÐºÐ°Ñ‚Ð¾ прочетена?" +msgstr[1] "ОтбелÑзване на %d Ñтатии като прочетени?" + +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "Показване URL-а на ÑтатиÑта" + +#~ msgid "Select by tags..." +#~ msgstr "Избор по тагове..." + +#~ msgid "Limit search to:" +#~ msgstr "Ограничаване търÑенето до:" + +#~ msgid "This feed" +#~ msgstr "Тази хранилка" + +#~ msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation." +#~ msgstr "КомплекÑни уÑÐ»Ð¾Ð²Ð¸Ñ Ð¼Ð¾Ð¶Ðµ да не дадат резултати при теÑтове, заради проблеми в regexp имплементациÑта на Ñървъра за бази данни." + +#~ msgid "Old password cannot be blank." +#~ msgstr "Старата парола не може да е празна." + +#~ msgid "New password cannot be blank." +#~ msgstr "Ðовата парола не може да е празна." + +#~ msgid "Entered passwords do not match." +#~ msgstr "Въведените пароли не Ñъвпадат." + +#~ msgid "Function not supported by authentication module." +#~ msgstr "ФункциÑта не Ñе поддържа от Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ð¾Ð½Ð½Ð¸Ñ Ð¼Ð¾Ð´ÑƒÐ»." + +#~ msgid "Match:" +#~ msgstr "Съвпадение:" + +#~ msgid "Any" +#~ msgstr "ÐÑкой" + +#~ msgid "All tags." +#~ msgstr "Ð’Ñички тагове." + +#~ msgid "Which Tags?" +#~ msgstr "Кои тагове?" + +#~ msgid "Display entries" +#~ msgstr "Показване на запиÑи" + +#~ msgid "Select item(s) by tags" +#~ msgstr "Избиране на елемент(и) по тагове" + +#~ msgid "Unread First" +#~ msgstr "Първо нечетени" + +#~ msgid "Unknown option: %s" +#~ msgstr "Ðезнайна опциÑ: %s" diff --git a/locale/ca_CA/LC_MESSAGES/messages.mo b/locale/ca_CA/LC_MESSAGES/messages.mo index a0cdfe12c1..428734d21e 100644 Binary files a/locale/ca_CA/LC_MESSAGES/messages.mo and b/locale/ca_CA/LC_MESSAGES/messages.mo differ diff --git a/locale/ca_CA/LC_MESSAGES/messages.po b/locale/ca_CA/LC_MESSAGES/messages.po index 9e3895334b..a20ef65ec4 100644 --- a/locale/ca_CA/LC_MESSAGES/messages.po +++ b/locale/ca_CA/LC_MESSAGES/messages.po @@ -6,2600 +6,4777 @@ msgid "" msgstr "" "Project-Id-Version: messages\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-22 22:16+0300\n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" "PO-Revision-Date: 2009-11-19 09:40+0100\n" "Last-Translator: Alfred Galitó \n" "Language-Team: Català \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "X-Poedit-Language: Catalan\n" -#: backend.php:107 +#: backend.php:73 msgid "Use default" msgstr "Valors per defecte" -#: backend.php:108 +#: backend.php:74 msgid "Never purge" msgstr "No ho purguis mai" -#: backend.php:109 +#: backend.php:75 msgid "1 week old" msgstr "Al cap d'1 setmana" -#: backend.php:110 +#: backend.php:76 msgid "2 weeks old" msgstr "Al cap de 2 setmanes" -#: backend.php:111 +#: backend.php:77 msgid "1 month old" msgstr "Al cap d'1 mes" -#: backend.php:112 +#: backend.php:78 msgid "2 months old" msgstr "Al cap de 2 mesos" -#: backend.php:113 +#: backend.php:79 msgid "3 months old" msgstr "Al cap de 3 mesos" -#: backend.php:116 +#: backend.php:82 msgid "Default interval" msgstr "Interval per defecte" -#: backend.php:117 backend.php:127 +#: backend.php:83 +#: backend.php:93 msgid "Disable updates" msgstr "Deshabilita les actualitzacions" -#: backend.php:118 backend.php:128 -msgid "Each 15 minutes" +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" msgstr "Cada 15 minuts" -#: backend.php:119 backend.php:129 -msgid "Each 30 minutes" +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" msgstr "cada 30 minuts" -#: backend.php:120 backend.php:130 +#: backend.php:86 +#: backend.php:96 msgid "Hourly" msgstr "Cada hora" -#: backend.php:121 backend.php:131 -msgid "Each 4 hours" +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" msgstr "Cada 4 hores" -#: backend.php:122 backend.php:132 -msgid "Each 12 hours" +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" msgstr "Cada 12 hores" -#: backend.php:123 backend.php:133 +#: backend.php:89 +#: backend.php:99 msgid "Daily" msgstr "Diàriament" -#: backend.php:124 backend.php:134 +#: backend.php:90 +#: backend.php:100 msgid "Weekly" msgstr "Setmanalment" -#: backend.php:137 tt-rss.php:220 modules/pref-prefs.php:329 -msgid "Default" -msgstr "Per defecte" - -#: backend.php:138 -msgid "Magpie" -msgstr "Magpie" - -#: backend.php:139 -msgid "SimplePie" -msgstr "SimplePie" - -#: backend.php:148 modules/pref-users.php:126 +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 msgid "User" msgstr "Usuari" -#: backend.php:149 +#: backend.php:104 msgid "Power User" msgstr "Súper usuari" -#: backend.php:150 +#: backend.php:105 msgid "Administrator" msgstr "Administrador" -#: backend.php:538 login_form.php:142 modules/backend-rpc.php:61 -#: modules/popup-dialog.php:106 -#, fuzzy -msgid "Default profile" -msgstr "Nombre maximal d'articles par défaut" - -#: errors.php:3 -msgid "Unknown error" -msgstr "Error desconegut" - -#: errors.php:5 -msgid "" -"This program requires XmlHttpRequest to function properly. Your browser " -"doesn't seem to support it." -msgstr "" -"Aquest programa necessita XmlHttpRequest per funcionar correctament. Sembla " -"que el vostre navegador no n'és compatible." +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "Aquest programa necessita XmlHttpRequest per funcionar correctament. Sembla que el vostre navegador no n'és compatible." -#: errors.php:8 -msgid "" -"This program requires cookies to function properly. Your browser doesn't " -"seem to support them." -msgstr "" -"Aquest programa necessita «cookies» per a funcionar correctament. Sembla que " -"el vostre navegador no les suporta." +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "Aquest programa necessita «cookies» per a funcionar correctament. Sembla que el vostre navegador no les suporta." -#: errors.php:11 -msgid "Backend sanity check failed" +#: errors.php:15 +#, fuzzy +msgid "Backend sanity check failed." msgstr "La comprovació del motor de l'administrador ha fallat." -#: errors.php:13 +#: errors.php:17 msgid "Frontend sanity check failed." msgstr "La revisió de la interfície ha fallat." -#: errors.php:15 -msgid "" -"Incorrect database schema version. <a href='update.php'>Please " -"update</a>." -msgstr "" -"Versió de l'esquema de la base de dades incorrecta. <a href='update." -"php'>Si us plau, actualitzeu-lo</a>." +#: errors.php:19 +#, fuzzy +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "Versió de l'esquema de la base de dades incorrecta. <a href='update.php'>Si us plau, actualitzeu-lo</a>." -#: errors.php:17 +#: errors.php:21 msgid "Request not authorized." msgstr "Sol·licitud no autoritzada." -#: errors.php:19 +#: errors.php:23 msgid "No operation to perform." msgstr "Cap operació per a fer." -#: errors.php:21 -msgid "" -"Could not display feed: query failed. Please check label match syntax or " -"local configuration." -msgstr "" -"No s'ha pogut mostrar el canal: ha fallat la consulta. Si us plau reviseu si " -"coincideix l'etiqueta o la configuració local." +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "No s'ha pogut mostrar el canal: ha fallat la consulta. Si us plau reviseu si coincideix l'etiqueta o la configuració local." -#: errors.php:23 +#: errors.php:27 msgid "Denied. Your access level is insufficient to access this page." msgstr "Denegat. No teniu prou permisos per accedir a aquesta pàgina." -#: errors.php:25 +#: errors.php:29 msgid "Configuration check failed" msgstr "La comprovació de la configuració ha fallat." -#: errors.php:27 -msgid "" -"Your version of MySQL is not currently supported. Please see \n" -"\t\tofficial site for more information." +#: errors.php:31 +#, fuzzy +msgid "Your version of MySQL is not currently supported. Please see official site for more information." msgstr "" -"Actualment no es pot gestionar la vostra versió de MySQL. Si us plau aneu " -"a \n" +"Actualment no es pot gestionar la vostra versió de MySQL. Si us plau aneu a \n" "\t\tla pàgina oficial per tenir-ne més informació." -#: errors.php:32 +#: errors.php:35 msgid "SQL escaping test failed, check your database and PHP configuration" -msgstr "" -"Ha fallat la sortida de prova de SQL, reviseu la base configuració de la " -"bases de dades i de PHP" - -#: functions.php:1928 -msgid "Session failed to validate (incorrect IP)" -msgstr "No s'ha pogut validar la sessió (IP incorrecta)" - -#: functions.php:1998 -msgid "Incorrect username or password" -msgstr "El nom d'usuari o la contrasenya és incorrecte" - -#: functions.php:2979 modules/popup-dialog.php:391 -#: modules/pref-filters.php:420 -msgid "All feeds" -msgstr "Tots els canals" - -#: functions.php:3011 functions.php:3050 functions.php:4447 functions.php:4475 -#: modules/backend-rpc.php:859 modules/pref-feeds.php:1333 -msgid "Uncategorized" -msgstr "Sense categoria" - -#: functions.php:3040 functions.php:3689 modules/backend-rpc.php:864 -#: mobile/functions.php:170 -msgid "Special" -msgstr "Especial" +msgstr "Ha fallat la sortida de prova de SQL, reviseu la base configuració de la bases de dades i de PHP" -#: functions.php:3042 functions.php:3691 prefs.php:114 -#: modules/backend-rpc.php:869 help/4.php:12 mobile/functions.php:197 -msgid "Labels" -msgstr "Etiquetes" - -#: functions.php:3087 help/3.php:60 offline.js:493 offline.js:1425 -msgid "Starred articles" -msgstr "Articles marcats" +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "No s'ha trobat el canal." -#: functions.php:3089 modules/pref-feeds.php:1492 help/3.php:61 -msgid "Published articles" -msgstr "Articles publicats" +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "No s'ha trobat l'usuari" -#: functions.php:3091 help/3.php:59 -msgid "Fresh articles" -msgstr "Articles nous" +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "S'està obrint, preneu paciència..." -#: functions.php:3093 help/3.php:58 offline.js:488 offline.js:1427 -msgid "All articles" -msgstr "Tots els articles" +#: index.php:167 +msgid "Collapse feedlist" +msgstr "Redueix la llista de canals" -#: functions.php:3095 +#: index.php:170 #, fuzzy -msgid "Archived articles" +msgid "Show articles" msgstr "Articles mémorisés" -#: functions.php:4200 -msgid "Generated feed" -msgstr "Canals generats" +#: index.php:173 +msgid "Adaptive" +msgstr "Adaptatiu" -#: functions.php:4205 functions.php:5553 modules/popup-dialog.php:82 -#: modules/pref-feeds.php:1087 modules/pref-feeds.php:1297 -#: modules/pref-filters.php:377 modules/pref-labels.php:183 -#: modules/pref-users.php:419 offline.js:408 -msgid "Select:" -msgstr "Selecciona:" +#: index.php:174 +msgid "All Articles" +msgstr "Tots els articles" -#: functions.php:4206 modules/popup-dialog.php:83 modules/pref-feeds.php:1088 -#: modules/pref-feeds.php:1298 modules/pref-filters.php:378 -#: modules/pref-labels.php:184 modules/pref-users.php:420 -msgid "All" -msgstr "Tot" +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "Marcats" + +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "Publicats" -#: functions.php:4207 functions.php:4224 tt-rss.php:213 +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 msgid "Unread" msgstr "Per llegir" -#: functions.php:4208 -msgid "Invert" -msgstr "Inverteix" +#: index.php:178 +msgid "With Note" +msgstr "" -#: functions.php:4209 modules/popup-dialog.php:84 modules/pref-feeds.php:1089 -#: modules/pref-feeds.php:1299 modules/pref-filters.php:379 -#: modules/pref-labels.php:185 modules/pref-users.php:421 -msgid "None" -msgstr "Cap" +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Ignora la puntuació" -#: functions.php:4217 tt-rss.php:178 offline.js:184 -msgid "Actions..." -msgstr "Accions..." +#: index.php:182 +#, fuzzy +msgid "Sort articles" +msgstr "Articles mémorisés" -#: functions.php:4223 -msgid "Selection toggle:" -msgstr "Commuta la selecció" +#: index.php:185 +msgid "Default" +msgstr "Per defecte" -#: functions.php:4225 tt-rss.php:212 -msgid "Starred" -msgstr "Marcats" +#: index.php:186 +msgid "Newest first" +msgstr "" -#: functions.php:4226 -msgid "Published" -msgstr "Publicats" +#: index.php:187 +msgid "Oldest first" +msgstr "" -#: functions.php:4227 -msgid "Selection:" -msgstr "Selecció:" +#: index.php:188 +msgid "Title" +msgstr "Títol" -#: functions.php:4228 localized_schema.php:16 tt-rss.php:187 tt-rss.php:230 +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 msgid "Mark as read" msgstr "Marca'l com a llegit" -#: functions.php:4234 -msgid "Archive" +#: index.php:195 +msgid "Older than one day" msgstr "" -#: functions.php:4236 -#, fuzzy -msgid "Move back" -msgstr "Vés enrere" +#: index.php:198 +msgid "Older than one week" +msgstr "" -#: functions.php:4237 -#, fuzzy -msgid "Delete" -msgstr "Per defecte" +#: index.php:201 +msgid "Older than two weeks" +msgstr "" -#: functions.php:4242 -msgid "Assign label:" -msgstr "Assigna-l'hi l'etiqueta:" +#: index.php:217 +msgid "Communication problem with server." +msgstr "" -#: functions.php:4283 -msgid "Click to collapse category" -msgstr "Clica-hi per a reduir la categoria" +#: index.php:223 +msgid "Actions..." +msgstr "Accions..." -#: functions.php:4493 -msgid "No feeds to display." -msgstr "No hi ha canals per a mostrar." +#: index.php:225 +#, fuzzy +msgid "Preferences..." +msgstr "Preferències" -#: functions.php:4510 -msgid "Tags" -msgstr "Etiqueta" +#: index.php:226 +msgid "Search..." +msgstr "Cerca..." -#: functions.php:4669 -msgid "audio/mpeg" -msgstr "àudio/mpeg" +#: index.php:227 +msgid "Feed actions:" +msgstr "Accions sobre els canals:" -#: functions.php:4795 -msgid " - " -msgstr " - " +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "Subscriviu-vos al canal" -#: functions.php:4820 functions.php:5580 -msgid "Edit tags for this article" -msgstr "Edita les etiquetes d'aquest article" +#: index.php:229 +msgid "Edit this feed..." +msgstr "Edita aquest canal..." -#: functions.php:4826 functions.php:5563 -msgid "Show article summary in new window" -msgstr "Obre els enllaços de l'article en una nova finestra" +#: index.php:230 +msgid "Rescore feed" +msgstr "Canvia la puntuació del canal" -#: functions.php:4833 functions.php:5570 -msgid "Publish article with a note" -msgstr "Publica l'article amb una nota" +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "Dóna't de baixa" -#: functions.php:4850 functions.php:5441 -msgid "Originally from:" -msgstr "" +#: index.php:232 +msgid "All feeds:" +msgstr "Tots els canals" -#: functions.php:4863 functions.php:5454 -#, fuzzy -msgid "Feed URL" -msgstr "Canal" +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Mostra/amaga els canals llegits" -#: functions.php:4903 functions.php:5484 -msgid "unknown type" -msgstr "tipus desconegut" +#: index.php:235 +msgid "Other actions:" +msgstr "Altres accions:" -#: functions.php:4943 functions.php:5527 -msgid "Attachment:" -msgstr "Adjunció:" +#: index.php:236 +#: include/functions2.php:78 +#, fuzzy +msgid "Toggle widescreen mode" +msgstr "Canvia al mode de reordenació de categories" -#: functions.php:4945 functions.php:5529 -msgid "Attachments:" -msgstr "Adjuncions:" +#: index.php:237 +msgid "Create label..." +msgstr "Crea una etiqueta" -#: functions.php:4965 prefs.php:142 tt-rss.php:101 modules/help.php:21 -#: modules/popup-dialog.php:53 modules/popup-dialog.php:154 -#: modules/popup-dialog.php:181 modules/popup-dialog.php:230 -#: modules/popup-dialog.php:575 modules/popup-dialog.php:634 -#: modules/pref-feeds.php:1140 modules/pref-users.php:96 -msgid "Close this window" -msgstr "Tanca la finestra" +#: index.php:238 +msgid "Create filter..." +msgstr "Crea un filtre..." -#: functions.php:5021 -msgid "Feed not found." -msgstr "No s'ha trobat el canal." +#: index.php:239 +#, fuzzy +msgid "Keyboard shortcuts help" +msgstr "Dreceres de teclat" -#: functions.php:5090 -msgid "" -"Could not display feed (query failed). Please check label match syntax or " -"local configuration." +#: index.php:248 +msgid "Logout" +msgstr "Surt" + +#: index.php:254 +msgid "Updates are available from Git." msgstr "" -"No s'ha pogut mostrar el fanal (la consulta ha fallat). Si us plau " -"seleccioneu reviseu que coincideixi la sintaxi o que la configuració local " -"sigui correcta." -#: functions.php:5254 functions.php:5341 -msgid "mark as read" -msgstr "Marca'l com a llegit" +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "Preferències" -#: functions.php:5417 functions.php:5424 -msgid "Click to expand article" -msgstr "Clica-hi per a veure el cos de l'article" +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "Dreceres de teclat" -#: functions.php:5587 -msgid "toggle unread" -msgstr "commuta els no llegits" +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Surt de les preferències" -#: functions.php:5606 -msgid "No unread articles found to display." -msgstr "No es poden mostrar els articles no llegits perquè no n'hi ha." +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Canals" -#: functions.php:5609 -msgid "No updated articles found to display." -msgstr "No hi ha cap article actualitzat." +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "Filtres" -#: functions.php:5612 -msgid "No starred articles found to display." -msgstr "No hi ha articles marcats per mostrar." +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Etiquetes" -#: functions.php:5616 -msgid "" -"No articles found to display. You can assign articles to labels manually " -"(see the Actions menu above) or use a filter." +#: prefs.php:133 +msgid "Users" +msgstr "Usuaris" + +#: prefs.php:136 +msgid "System" msgstr "" -"No s'han trobat articles per a mostrar. Podeu assignar articles a etiquetes " -"manualment (mireu el menú Accions) o utilitzeu un filtre." -#: functions.php:5618 offline.js:443 -msgid "No articles found to display." -msgstr "No s'han trobat articles per a mostrar." +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "Creeu un compte nou" -#: functions.php:6362 tt-rss.php:192 -msgid "Create label..." -msgstr "Crea una etiqueta" +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "L'administrador ha deshabilitat els registres de nous usuaris." -#: functions.php:6375 -msgid "(remove)" -msgstr "Elimina" +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Torna a Tiny Tiny RSS" -#: functions.php:6427 -msgid "no tags" -msgstr "sense etiqueta" +#: register.php:218 +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 "La vostra contrasenya temporal s'enviarà a l'adreça electrònica especificada. Els comptes en els quals no s'hagi entrat almenys un cop s'eliminaran passades 24 hores des de l'enviament de la contrasenya." -#: functions.php:6456 -msgid "edit note" -msgstr "edita la nota" +#: register.php:224 +msgid "Desired login:" +msgstr "Usuari desitjat:" -#: localized_schema.php:9 tt-rss.php:222 modules/popup-dialog.php:381 -#: modules/pref-feeds.php:1310 modules/pref-feeds.php:1369 -msgid "Title" -msgstr "Títol" +#: register.php:227 +msgid "Check availability" +msgstr "Comprova la disponibilitat" -#: localized_schema.php:10 -msgid "Title or Content" -msgstr "Títol o contingut" +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "Adreça electrònica:" -#: localized_schema.php:11 -msgid "Link" -msgstr "Enllaç" +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "Quant és dos més dos:" -#: localized_schema.php:12 modules/popup-dialog.php:382 -msgid "Content" -msgstr "Contingut" +#: register.php:235 +msgid "Submit registration" +msgstr "Envia el registre" -#: localized_schema.php:13 -msgid "Article Date" -msgstr "Data de l'article" +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "La vostra informació de registre és incompleta." -#: localized_schema.php:15 -msgid "Filter article" -msgstr "Filtra l'article" +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "Aquest nom d'usuari ja existeix." -#: localized_schema.php:17 -msgid "Set starred" -msgstr "Marca'l com a destacat" +#: register.php:287 +msgid "Registration failed." +msgstr "Ha fallat el regsitre" -#: localized_schema.php:18 viewfeed.js:545 viewfeed.js:659 -msgid "Publish article" -msgstr "Publica l'article" +#: register.php:334 +msgid "Account created successfully." +msgstr "S'ha creat el compte." -#: localized_schema.php:19 -msgid "Assign tags" -msgstr "Assigna etiquetes" +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "Actualment no es permet el registre de nous usuaris." -#: localized_schema.php:20 -msgid "Assign label" -msgstr "Assigna-li l'etiqueta" +#: update.php:62 +#, fuzzy +msgid "Tiny Tiny RSS data update script." +msgstr "La base de dades de Tiny Tiny RSS està actualitzada." -#: localized_schema.php:24 -msgid "General" -msgstr "General" +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "Sense categoria" -#: localized_schema.php:26 -msgid "Allow duplicate posts" -msgstr "Permet la duplicació d'articles" +#: include/feedbrowser.php:84 +#, fuzzy, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "Articles marcats" +msgstr[1] "Articles marcats" -#: localized_schema.php:27 -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." +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "No s'ha trobat cap canal." + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "Navegació" + +#: include/functions2.php:53 +#, fuzzy +msgid "Open next feed" +msgstr "Canals generats" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "" + +#: include/functions2.php:55 +#, fuzzy +msgid "Open next article" +msgstr "Mostra el contingut original de l'article" + +#: include/functions2.php:56 +#, fuzzy +msgid "Open previous article" +msgstr "Mostra el contingut original de l'article" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Mostra el diàleg de cerca" + +#: include/functions2.php:62 +#, fuzzy +msgid "Article" +msgstr "Tots els articles" + +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "Commuta els marcats" + +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "Commuta els publicats" + +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "Commuta els no llegits" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Edita les etiquetes" + +#: include/functions2.php:67 +#, fuzzy +msgid "Dismiss selected" +msgstr "Esteu segur que voleu eliminar els articles seleccionats de l'etiqueta?" + +#: include/functions2.php:68 +#, fuzzy +msgid "Dismiss read" +msgstr "Publica l'article" + +#: include/functions2.php:69 +#, fuzzy +msgid "Open in new window" +msgstr "Obre l'article en una finestra nova" + +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +#, fuzzy +msgid "Mark below as read" +msgstr "Marca'l com a llegit" + +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +#, fuzzy +msgid "Mark above as read" +msgstr "Marca'l com a llegit" + +#: include/functions2.php:72 +#, fuzzy +msgid "Scroll down" +msgstr "Fet!" + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "" + +#: include/functions2.php:74 +#, fuzzy +msgid "Select article under cursor" +msgstr "Seleccioneu un article mitjançant el ratolí." + +#: include/functions2.php:75 +#, fuzzy +msgid "Email article" +msgstr "Tots els articles" + +#: include/functions2.php:76 +#, fuzzy +msgid "Close/collapse article" +msgstr "Buida els articles" + +#: include/functions2.php:77 +#, fuzzy +msgid "Toggle article expansion (combined mode)" +msgstr "Canvia al mode de reordenació de categories" + +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +#, fuzzy +msgid "Toggle embed original" +msgstr "Canvia al mode de reordenació de categories" + +#: include/functions2.php:80 +#, fuzzy +msgid "Article selection" +msgstr "Accions actives de l'article" + +#: include/functions2.php:81 +#, fuzzy +msgid "Select all articles" +msgstr "Buida els articles" + +#: include/functions2.php:82 +#, fuzzy +msgid "Select unread" +msgstr "Purga els articles per llegir" + +#: include/functions2.php:83 +#, fuzzy +msgid "Select starred" +msgstr "Marca'l com a destacat" + +#: include/functions2.php:84 +#, fuzzy +msgid "Select published" +msgstr "Purga els articles per llegir" + +#: include/functions2.php:85 +#, fuzzy +msgid "Invert selection" +msgstr "Accions actives de l'article" + +#: include/functions2.php:86 +#, fuzzy +msgid "Deselect everything" +msgstr "Buida els articles" + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Canal" + +#: include/functions2.php:88 +#, fuzzy +msgid "Refresh current feed" +msgstr "Actualitza els canals actius" + +#: include/functions2.php:89 +#, fuzzy +msgid "Un/hide read feeds" +msgstr "Mostra/amaga els canals llegits" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "Subscriu-te al canal" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Edita el canal" + +#: include/functions2.php:93 +#, fuzzy +msgid "Reverse headlines" +msgstr "Inverteix l'ordre de les capçaleres (les més antigues les primeres)" + +#: include/functions2.php:94 +#, fuzzy +msgid "Debug feed update" +msgstr "S'ha acabat l'actualització dels canals." + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "Marca tots els canals com a llegits" + +#: include/functions2.php:96 +#, fuzzy +msgid "Un/collapse current category" +msgstr "Clica-hi per a reduir la categoria" + +#: include/functions2.php:97 +#, fuzzy +msgid "Toggle combined mode" +msgstr "Canvia al mode de reordenació de categories" + +#: include/functions2.php:98 +#, fuzzy +msgid "Toggle auto expand in combined mode" +msgstr "Canvia al mode de reordenació de categories" + +#: include/functions2.php:99 +#, fuzzy +msgid "Go to" +msgstr "Vés a..." + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "Tots els articles" + +#: include/functions2.php:101 +#, fuzzy +msgid "Fresh" +msgstr "Actualitza" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Núvol d'etiquetes" + +#: include/functions2.php:106 +#, fuzzy +msgid "Other" +msgstr "Altres:" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "Crea una etiqueta" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "Crea un filtre" + +#: include/functions2.php:109 +#, fuzzy +msgid "Un/collapse sidebar" +msgstr "Redueix la barra lateral" + +#: include/functions2.php:110 +#, fuzzy +msgid "Show help dialog" +msgstr "Mostra el diàleg de cerca" + +#: include/functions2.php:636 +#, fuzzy, php-format +msgid "Search results: %s" +msgstr "Resultats de la cerca" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +#, fuzzy +msgid "comment" +msgid_plural "comments" +msgstr[0] "comentaris" +msgstr[1] "comentaris" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +msgid "comments" +msgstr "comentaris" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "sense etiqueta" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "Edita les etiquetes d'aquest article" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +#, fuzzy +msgid "Originally from:" +msgstr "Mostra el contingut original de l'article" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +#, fuzzy +msgid "Feed URL" +msgstr "Canal" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "Tanca la finestra" + +#: include/functions2.php:1622 +#, fuzzy +msgid "(edit note)" +msgstr "edita la nota" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "tipus desconegut" + +#: include/functions2.php:1953 +#, fuzzy +msgid "Attachments" +msgstr "Adjuncions:" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "Especial" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Tots els canals" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Articles marcats" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Articles publicats" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "Articles nous" + +#: include/functions.php:1975 +#, fuzzy +msgid "Archived articles" +msgstr "Articles mémorisés" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "Usuari:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "Contrasenya:" + +#: include/login_form.php:206 +#, fuzzy +msgid "I forgot my password" +msgstr "El nom d'usuari o la contrasenya és incorrecte" + +#: include/login_form.php:212 +#, fuzzy +msgid "Profile:" +msgstr "Fitxer:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +#, fuzzy +msgid "Default profile" +msgstr "Nombre maximal d'articles par défaut" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "" + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "Registreu-vos" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "No s'ha pogut validar la sessió (IP incorrecta)" + +#: include/sessions.php:67 +#, fuzzy +msgid "Session failed to validate (schema version changed)" +msgstr "No s'ha pogut validar la sessió (IP incorrecta)" + +#: include/sessions.php:85 +#, fuzzy +msgid "Session failed to validate (user not found)" +msgstr "No s'ha pogut validar la sessió (IP incorrecta)" + +#: include/sessions.php:94 +#, fuzzy +msgid "Session failed to validate (password changed)" +msgstr "No s'ha pogut validar la sessió (IP incorrecta)" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "" + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Dreceres de teclat" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "No s'ha trobat el tema a l'ajuda." + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +#, fuzzy +msgid "Share with Tiny Tiny RSS" +msgstr "Torna a Tiny Tiny RSS" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Titre :" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:510 +#, fuzzy +msgid "Content:" +msgstr "Contingut" + +#: classes/handler/public.php:512 +#, fuzzy +msgid "Labels:" +msgstr "Etiquetes" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "" + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "Cancel·la" + +#: classes/handler/public.php:555 +#, fuzzy +msgid "Not logged in" +msgstr "Última connexió el" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "El nom d'usuari o la contrasenya és incorrecte" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "Ja esteu subscrit a %s." + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "Subscrit a %s." + +#: classes/handler/public.php:672 +#, fuzzy, php-format +msgid "Could not subscribe to %s." +msgstr "Ja esteu subscrit a %s." + +#: classes/handler/public.php:675 +#, fuzzy, php-format +msgid "No feeds found in %s." +msgstr "No s'ha trobat cap canal." + +#: classes/handler/public.php:678 +#, fuzzy +msgid "Multiple feed URLs found." +msgstr "L'adreça URL del canal ha canviat." + +#: classes/handler/public.php:682 +#, fuzzy, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "Ja esteu subscrit a %s." + +#: classes/handler/public.php:700 +#, fuzzy +msgid "Subscribe to selected feed" +msgstr "Us voleu donar de baixa dels canals seleccionats?" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Edita les opcions de les subscripcions" + +#: classes/handler/public.php:762 +#, fuzzy +msgid "Password recovery" +msgstr "Contrasenya:" + +#: classes/handler/public.php:805 +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "" + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "Reinicia la contrasenya" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "" + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +#, fuzzy +msgid "Go back" +msgstr "Vés enrere" + +#: classes/handler/public.php:878 +#, fuzzy +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] Notificació de canvi de contrasenya" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "" + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "No teniu prou permisos per a executar aquest script." + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "Eina d'actualització de la base de dades" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Aplica les actualitzacions" + +#: classes/feeds.php:53 +#, fuzzy +msgid "View as RSS feed" +msgstr "Visualitza els canals" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +#, fuzzy +msgid "View as RSS" +msgstr "Visualitza les etiquetes" + +#: classes/feeds.php:62 +#, fuzzy, php-format +msgid "Last updated: %s" +msgstr "Dernière mise à jour :" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "Tot" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Inverteix" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Cap" + +#: classes/feeds.php:99 +#, fuzzy +msgid "More..." +msgstr "Ouverture de l'aide..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Commuta la selecció" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Selecció:" + +#: classes/feeds.php:110 +#, fuzzy +msgid "Set score" +msgstr "Puntuació" + +#: classes/feeds.php:113 +#, fuzzy +msgid "Archive" +msgstr "Data de l'article" + +#: classes/feeds.php:115 +#, fuzzy +msgid "Move back" +msgstr "Vés enrere" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +#, fuzzy +msgid "Delete" +msgstr "Per defecte" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +#, fuzzy +msgid "Forward by email" +msgstr "Marca l'article" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Flux :" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "No s'ha trobat el canal." + +#: classes/feeds.php:268 +#, fuzzy +msgid "Never" +msgstr "No ho purguis mai" + +#: classes/feeds.php:393 +#, fuzzy, php-format +msgid "Imported at %s" +msgstr "Importeu" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +#, fuzzy +msgid "mark feed as read" +msgstr "Marca el canal com a llegit" + +#: classes/feeds.php:608 +#, fuzzy +msgid "Collapse article" +msgstr "Buida els articles" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "No es poden mostrar els articles no llegits perquè no n'hi ha." + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "No hi ha cap article actualitzat." + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "No hi ha articles marcats per mostrar." + +#: classes/feeds.php:778 +#, fuzzy +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 "No s'han trobat articles per a mostrar. Podeu assignar articles a etiquetes manualment (mireu el menú Accions) o utilitzeu un filtre." + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "No s'han trobat articles per a mostrar." + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, fuzzy, php-format +msgid "Feeds last updated at %s" +msgstr "Erreurs de mise à jour" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "S'han detectat errors en alguns canals (feu clic aquí per veure'n els detalls)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "No heu seleccionat cap canal." + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +#, fuzzy +msgid "Feed or site URL" +msgstr "Canal" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "Posa'l a la categoria:" + +#: classes/feeds.php:1036 +#, fuzzy +msgid "Available feeds" +msgstr "Tots els canals" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "Autenticació" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "Entra" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +#, fuzzy +msgid "Password" +msgstr "Contrasenya:" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Aquest canal requereix autenticació." + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "Subscriu-t'hi" + +#: classes/feeds.php:1073 +#, fuzzy +msgid "More feeds" +msgstr "Més canals" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "Cerca" + +#: classes/feeds.php:1100 +#, fuzzy +msgid "Popular feeds" +msgstr "mostra els canals" + +#: classes/feeds.php:1101 +#, fuzzy +msgid "Feed archive" +msgstr "Accions dels canals" + +#: classes/feeds.php:1104 +#, fuzzy +msgid "limit:" +msgstr "Límit:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "Suprimeix" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "Mirar-ho per" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +#, fuzzy +msgid "Search syntax" +msgstr "Convertir en intitulé" + +#: classes/article.php:25 +#, fuzzy +msgid "Article not found." +msgstr "No s'ha trobat el canal." + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "Etiquetes per aquest article (separades per comes):" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Desa" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "Eina OPML" + +#: classes/opml.php:37 +#, fuzzy +msgid "Importing OPML..." +msgstr "S'està important OPML (s'està utilitzant l'extensió DOMXML)..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "Torna a les preferències" + +#: classes/opml.php:271 +#, fuzzy, php-format +msgid "Adding feed: %s" +msgstr "S'està afegint el canal..." + +#: classes/opml.php:282 +#, fuzzy, php-format +msgid "Duplicate feed: %s" +msgstr "Crea un filtre" + +#: classes/opml.php:296 +#, fuzzy, php-format +msgid "Adding label %s" +msgstr "Assigna-li l'etiqueta" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "" + +#: classes/opml.php:343 +#, fuzzy +msgid "Adding filter..." +msgstr "S'està afegint el canal..." + +#: classes/opml.php:421 +#, fuzzy, php-format +msgid "Processing category: %s" +msgstr "Posa'l a la categoria:" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +#, fuzzy +msgid "Unable to move uploaded file." +msgstr "Error: si us plau carregueu el fitxer OPML." + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "Error: si us plau carregueu el fitxer OPML." + +#: classes/opml.php:499 +#, fuzzy +msgid "Error: unable to find moved OPML file." +msgstr "Error: si us plau carregueu el fitxer OPML." + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Error mentre s'analitza el document." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "No teniu permisos per a obrir aquesta pestanya." + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +#, fuzzy +msgid "Refresh" +msgstr "Actualitza" + +#: classes/pref/system.php:43 +#, fuzzy +msgid "Clear log" +msgstr "Elimina els colors" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Data" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "No s'ha trobat l'usuari" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "Registrat" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Última connexió el" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "Nombre de canals subscrits" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Canals subscrits" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Nivell d'accés:" + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Opcions" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "S'ha creat l'usuari %s amb la contrasenya %s" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "No s'ha pogut crear l'usuari %s" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "L'usuari%s ja existeix." + +#: classes/pref/users.php:265 +#, fuzzy, php-format +msgid "Changed password of user %s to %s" +msgstr "" +"La contrasenya de l'usuari %s\n" +"\t\t\t\t\ts'ha canviat a %s" + +#: classes/pref/users.php:267 +#, fuzzy, php-format +msgid "Sending new password of user %s to %s" +msgstr "" +"La contrasenya de l'usuari %s\n" +"\t\t\t\t\ts'ha canviat a %s" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] Notificació de canvi de contrasenya" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +#, fuzzy +msgid "Select" +msgstr "Selecciona:" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Crea un usuari" + +#: classes/pref/users.php:346 +#, fuzzy +msgid "Details" +msgstr "Diàriament" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Edita" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Permisos" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "Última connexió" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Feu clic per editar" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "No s'han definit els usuaris." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "No s'ha trobat cap usuari que coinicideixi. " + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Seleccioneu-ho per activar els camps" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, fuzzy, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "Edita el canal" +msgstr[1] "Edita el canal" + +#: classes/pref/feeds.php:556 +#, fuzzy +msgid "Feed Title" +msgstr "Títol" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "Actualitza" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Neteja d'articles:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "" + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +#, fuzzy +msgid "Hide from Popular feeds" +msgstr "Amaga-ho de la llista de canals" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "Inclou-lo en el resum diari per correu electrònic" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Mostra les imatges adjuntes" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Emmagatzema les imatges localment" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +#, fuzzy +msgid "Mark updated articles as unread" +msgstr "Esteu segur que voleu marcar tots els articles com a llegits?" + +#: classes/pref/feeds.php:728 +#, fuzzy +msgid "Icon" +msgstr "Action" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "" + +#: classes/pref/feeds.php:764 +#, fuzzy +msgid "Resubscribe to push updates" +msgstr "Subscrit als canals:" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "" + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Fet!" + +#: classes/pref/feeds.php:1254 +#, fuzzy +msgid "Feeds with errors" +msgstr "Editor de canals" + +#: classes/pref/feeds.php:1279 +#, fuzzy +msgid "Inactive feeds" +msgstr "Tots els canals" + +#: classes/pref/feeds.php:1316 +#, fuzzy +msgid "Edit selected feeds" +msgstr "S'estan purgant els canals seleccionats..." + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +#, fuzzy +msgid "Reset sort order" +msgstr "Reinicia la contrasenya" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +#, fuzzy +msgid "Batch subscribe" +msgstr "Dóna't de baixa" + +#: classes/pref/feeds.php:1327 +#, fuzzy +msgid "Categories" +msgstr "Catégorie :" + +#: classes/pref/feeds.php:1330 +#, fuzzy +msgid "Add category" +msgstr "S'està afegint la categoria..." + +#: classes/pref/feeds.php:1334 +#, fuzzy +msgid "Remove selected" +msgstr "Esteu segur que voleu suprimir els filtres seleccionats?" + +#: classes/pref/feeds.php:1345 +#, fuzzy +msgid "More actions..." +msgstr "Accions..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "Purger manuellement" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "Esborra les dades del canal" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Canvia la puntuació dels articles" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "" + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "" + +#: classes/pref/feeds.php:1419 +#, fuzzy +msgid "Import my OPML" +msgstr "S'està important OPML (s'està utilitzant l'extensió DOMXML)..." + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "" + +#: classes/pref/feeds.php:1425 +#, fuzzy +msgid "Include settings" +msgstr "Inclou-lo en el resum diari per correu electrònic" + +#: classes/pref/feeds.php:1429 +#, fuzzy +msgid "Export OPML" +msgstr "Exporta en format OPML" + +#: classes/pref/feeds.php:1433 +#, fuzzy +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "Els articles publicats s'exporten en un canal RSS públic al qual s'hi pot subscriure qualsevol que en conegui l'adreça URL." + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "" + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "" + +#: classes/pref/feeds.php:1447 +#, fuzzy +msgid "Firefox integration" +msgstr "Integració al Firefox" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "Podeu utilitzar Tiny Tiny RSS com a lector de canals amb el Firefox fent clic en el següent enllaç." + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "Feu clic aquí per a desar aquesta pàgina web com un canal." + +#: classes/pref/feeds.php:1464 +#, fuzzy +msgid "Published & shared articles / Generated feeds" +msgstr "Esteu segur que voleu canviar la puntuació dels articles en les etiquetes personalitzades?" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "Els articles publicats s'exporten en un canal RSS públic al qual s'hi pot subscriure qualsevol que en conegui l'adreça URL." + +#: classes/pref/feeds.php:1474 +#, fuzzy +msgid "Display URL" +msgstr "afficher les étiquettes" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "" + +#: classes/pref/feeds.php:1555 +#, fuzzy +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "Aquests canals no s'han actualitzat degut als següents errors:" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +#, fuzzy +msgid "Click to edit feed" +msgstr "Feu clic per editar" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +#, fuzzy +msgid "Unsubscribe from selected feeds" +msgstr "Us voleu donar de baixa dels canals seleccionats?" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "" + +#: classes/pref/feeds.php:1809 +#, fuzzy +msgid "Feeds require authentication." +msgstr "Aquest canal requereix autenticació." + +#: classes/pref/filters.php:102 +#, fuzzy +msgid "Articles matching this filter:" +msgstr "No s'ha trobat cap fitxer que coincideixi." + +#: classes/pref/filters.php:185 +#, fuzzy +msgid "No recent articles matching this filter have been found." +msgstr "No s'ha trobat cap fitxer que coincideixi." + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +#, fuzzy +msgid "(inverse)" +msgstr "(Invers)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Descriptif" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "Coincidència" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +#, fuzzy +msgid "Apply actions" +msgstr "Accions dels canals" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Activat" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +#, fuzzy +msgid "Match any rule" +msgstr "Basat en:" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +#, fuzzy +msgid "Inverse matching" +msgstr "Coincidència inversa" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "Tester" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Crea" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "al camp" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "a" + +#: classes/pref/filters.php:947 +#, fuzzy +msgid "Wiki: Filters" +msgstr "Filtres" + +#: classes/pref/filters.php:952 +#, fuzzy +msgid "Save rule" +msgstr "Desa" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +#, fuzzy +msgid "Add rule" +msgstr "S'està afegint la categoria..." + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Acció a realitzar:" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "amb els paràmetres:" + +#: classes/pref/filters.php:1019 +#, fuzzy +msgid "Save action" +msgstr "Quadre d'accions" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +#, fuzzy +msgid "Add action" +msgstr "Accions dels canals" + +#: classes/pref/filters.php:1042 +#, fuzzy +msgid "[No caption]" +msgstr "Descriptif" + +#: classes/pref/filters.php:1044 +#, fuzzy, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "S'està afegint la categoria..." +msgstr[1] "S'està afegint la categoria..." + +#: classes/pref/filters.php:1059 +#, fuzzy, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "Accions dels canals" +msgstr[1] "Accions dels canals" + +#: classes/pref/labels.php:37 +#, fuzzy +msgid "Colors" +msgstr "Tanca" + +#: classes/pref/labels.php:42 +#, fuzzy +msgid "Foreground:" +msgstr "Primer pla" + +#: classes/pref/labels.php:42 +#, fuzzy +msgid "Background:" +msgstr "Fons" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "S'ha creat l'etiqueta %s " + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Elimina els colors" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "General" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Interfície" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Avançat" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "Permet la duplicació d'articles" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Llista negra d'etiquetes" + +#: classes/pref/prefs.php:26 +#, fuzzy +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "Quan s'autodetectin etiquetes en els articles, aquestes etiquetes no s'utilitzaran (fes una llista separada per comes)" + +#: classes/pref/prefs.php:27 +#, fuzzy +msgid "Automatically mark articles as read" +msgstr "En mode combinat expandeix els articles automàticament." + +#: classes/pref/prefs.php:27 +#, fuzzy +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "Aquesta opció permet marcar els articles com a llegits automàticament en mode combinat (excepte en el canal d'articles Frescos) mentre desplaceu la barra." + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "En mode combinat expandeix els articles automàticament." + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "Mostra els canals combinats" + +#: classes/pref/prefs.php:29 +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:30 +msgid "Confirm marking feed as read" +msgstr "Demana la confirmació quan es marqui un canal com a llegit" + +#: classes/pref/prefs.php:31 +#, fuzzy +msgid "Amount of articles to display at once" +msgstr "No s'han trobat articles per a mostrar." + +#: classes/pref/prefs.php:32 +#, fuzzy +msgid "Default feed update interval" +msgstr "Interval per defecte" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "" + +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "Marca tots els articles enviat en el resum via adreça electrònica com a llegits" + +#: classes/pref/prefs.php:34 +#, fuzzy +msgid "Enable e-mail digest" +msgstr "Habilita el resum diari de capçaleres per correu electrònic." + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Aquesta opció habilita l'enviament diari d'un resum de les capçaleres noves (i no llegides) a l'adreça electrònica especificada en la configuració de l'usuari." + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "" + +#: classes/pref/prefs.php:36 +#, fuzzy +msgid "Enable API access" +msgstr "Habilita les etiquetes" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Utiliser les catégories de flux" + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "Ordena els canals per articles no llegits" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Temps màxim per als articles marcats com a frescos (en hores)" + +#: classes/pref/prefs.php:40 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "Amaga els canals que no tinguin missatges per llegir." + +#: classes/pref/prefs.php:41 +#, fuzzy +msgid "Show special feeds when hiding read feeds" +msgstr "Mostra els canals especials quan s'amaguin els canals reals." + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "Format llarg de data" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "" + +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "Salta automàticament al canal següent" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "" + +#: classes/pref/prefs.php:44 +#, fuzzy +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Purga els articles vells al cap d'aquest nombre de dies (0 - desactiva la purga)" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "Purga els articles per llegir" + +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "Inverteix l'ordre de les capçaleres (les més antigues les primeres)" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "Format curt de data" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "Mostra el contingut en la llista de capçaleres" + +#: classes/pref/prefs.php:49 +#, fuzzy +msgid "Sort headlines by feed date" +msgstr "Ordena els canals per articles no llegits" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "" + +#: classes/pref/prefs.php:51 +#, fuzzy +msgid "Do not embed images in articles" +msgstr "No mostris imatges en els articles" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "Elimina les etiquetes dels articles que no siguin segures." + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Elimina les etiquetes HTML més freqüents en llegir els articles." + +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +#, fuzzy +msgid "Customize stylesheet" +msgstr "URL de la fulla d'estils personalitzada." + +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "" + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "Agrupa les capçaleres en canals virtuals" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" + +#: classes/pref/prefs.php:56 +#, fuzzy +msgid "Language" +msgstr "Idioma:" + +#: classes/pref/prefs.php:57 +#, fuzzy +msgid "Theme" +msgstr "Interfícies" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "S'ha desat la configuració" + +#: classes/pref/prefs.php:140 +#, fuzzy +msgid "Your personal data has been saved." +msgstr "S'ha modificat la contrasenya." + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "" + +#: classes/pref/prefs.php:183 +#, fuzzy +msgid "Personal data / Authentication" +msgstr "Autenticació" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "Dades personals" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "Adreça electrònica" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Nivell d'accés" + +#: classes/pref/prefs.php:233 +#, fuzzy +msgid "Save data" +msgstr "Desa" + +#: classes/pref/prefs.php:254 +#, fuzzy +msgid "Your password is at default value, please change it." +msgstr "" +"La contrasenya actual és la predeterminada,\n" +"\t\t\t\t\t\t penseu en modificar-la." + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "" + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Contrasenya antiga" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Nova contrasenya" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Confirmeu la contrasenya" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "Canvia la contrasenya" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "" + +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "" + +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +#, fuzzy +msgid "Enter your password" +msgstr "El nom d'usuari o la contrasenya és incorrecte" + +#: classes/pref/prefs.php:358 +#, fuzzy +msgid "Disable OTP" +msgstr "(Desactivat)" + +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "" + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "" + +#: classes/pref/prefs.php:403 +#, fuzzy +msgid "Enter the generated one time password" +msgstr "Si us plau, escriviu una nota per aquest article:" + +#: classes/pref/prefs.php:417 +#, fuzzy +msgid "Enable OTP" +msgstr "Activat" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "" + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "" + +#: classes/pref/prefs.php:564 +#, fuzzy +msgid "Customize" +msgstr "URL de la fulla d'estils personalitzada." + +#: classes/pref/prefs.php:627 +#, fuzzy +msgid "Register" +msgstr "Registrat" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Desa la configuració" + +#: classes/pref/prefs.php:673 +#, fuzzy +msgid "Save and exit preferences" +msgstr "Surt de les preferències" + +#: classes/pref/prefs.php:678 +#, fuzzy +msgid "Manage profiles" +msgstr "Crea un filtre" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "Torna als paràmetres per defecte" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "" + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "" + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +#, fuzzy +msgid "Description" +msgstr "description" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +#, fuzzy +msgid "Clear data" +msgstr "Esborra les dades del canal" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "" + +#: classes/pref/prefs.php:855 +#, fuzzy +msgid "Enable selected plugins" +msgstr "Habilita les icones dels canals." + +#: classes/pref/prefs.php:923 +#, fuzzy +msgid "Incorrect one time password" +msgstr "El nom d'usuari o la contrasenya és incorrecte" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +#, fuzzy +msgid "Incorrect password" +msgstr "El nom d'usuari o la contrasenya és incorrecte" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "" + +#: classes/pref/prefs.php:1008 +#, fuzzy +msgid "Create profile" +msgstr "Crea un filtre" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +#, fuzzy +msgid "(active)" +msgstr "Adaptatiu" + +#: classes/pref/prefs.php:1093 +#, fuzzy +msgid "Remove selected profiles" +msgstr "Esteu segur que voleu suprimir els filtres seleccionats?" + +#: classes/pref/prefs.php:1095 +#, fuzzy +msgid "Activate profile" +msgstr "Esteu segur que voleu suprimir els filtres seleccionats?" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." msgstr "" -"Aquesta opció és útil si rebeu informació de diferents canals de tipus " -"«multicanal» amb informació que pot coincidir. Si està desactivat només " -"mostra els articles repetits un sol cop." -#: localized_schema.php:28 -msgid "Default interval between feed updates (in minutes)" -msgstr "Interval per defecte per a les actualitzacions dels canals (en minuts)" +#: classes/dlg.php:48 +#, fuzzy +msgid "Your Public OPML URL is:" +msgstr "Enllaç als articles publicats del canal." -#: localized_schema.php:29 -msgid "Enable e-mail digest" -msgstr "Habilita el resum diari de capçaleres per correu electrònic." +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +#, fuzzy +msgid "Generate new URL" +msgstr "Canals generats" -#: localized_schema.php:30 -msgid "" -"This option enables sending daily digest of new (and unread) headlines on " -"your configured e-mail address" +#: 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 "L'actualització de daemon està activada en la configuració però el procés daemon no funciona, fet que impedeix l'actualització de tots els canals. Si us plau, engegueu el procés del daemon o contacteu amb el responsable pertinent." + +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "Última actualització:" + +#: 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 "L'actualització del daemon és més llarga que la d'un canal. Això pot indicar un problema com la caiguda. Si us plau, reviseu dels processos del daemon o contacteu amb el seu propietari." + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" msgstr "" -"Aquesta opció habilita l'enviament diari d'un resum de les capçaleres noves " -"(i no llegides) a l'adreça electrònica especificada en la configuració de " -"l'usuari." -#: localized_schema.php:31 -msgid "Purge old posts after this number of days (0 - disables)" +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" msgstr "" -"Purga els articles vells al cap d'aquest nombre de dies (0 - desactiva la " -"purga)" -#: localized_schema.php:32 -msgid "Update post on checksum change" -msgstr "Actualitza una entrada si canvia la suma de verificació." +#: plugins/af_psql_trgm/init.php:112 +#, fuzzy +msgid "Show related articles" +msgstr "Articles marcats" -#: localized_schema.php:33 -msgid "Mark articles in e-mail digest as read" +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +#, fuzzy +msgid "Mark similar articles as read" +msgstr "Esteu segur que voleu marcar tots els articles com a llegits?" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +#, fuzzy +msgid "Global settings" +msgstr "Inclou-lo en el resum diari per correu electrònic" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" msgstr "" -"Marca tots els articles enviat en el resum via adreça electrònica com a " -"llegits" -#: localized_schema.php:34 -msgid "Enable offline reading" -msgstr "Habilita la lectura fora de línia" +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "Afficher les icônes dans la liste des flux" -#: localized_schema.php:35 -msgid "Synchronize new articles for offline reading using Google Gears." +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" msgstr "" -"Sincronitzeu els nous articles per a llegir-los en mode fora de línia " -"mitjançant Google Gears." -#: localized_schema.php:37 -msgid "Interface" -msgstr "Interfície" +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" -#: localized_schema.php:39 -msgid "Combined feed display" -msgstr "Mostra els canals combinats" +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "" -#: localized_schema.php:40 -msgid "" -"Display expanded list of feed articles, instead of separate displays for " -"headlines and article content" +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" 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)" -#: localized_schema.php:41 -msgid "Default article limit" -msgstr "Nombre maximal d'articles par défaut" +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +#, fuzzy +msgid "Edit article note" +msgstr "Edita les etiquetes" -#: localized_schema.php:42 -msgid "" -"Default limit for articles to display, any custom number you like (0 - " -"disables)." -msgstr "Nombre maximal d'articles à afficher (0 pour supprimer toute limite)." +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +#, fuzzy +msgid "No file uploaded." +msgstr "No hi ha cap fitxer OPML per a carregar." -#: localized_schema.php:43 -msgid "Enable feed categories" -msgstr "Utiliser les catégories de flux" +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "" -#: localized_schema.php:44 -msgid "Enable search toolbar" -msgstr "Habilita la barra de cerques" +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "" -#: localized_schema.php:45 -msgid "Hide feeds with no unread messages" -msgstr "Amaga els canals que no tinguin missatges per llegir." +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "" -#: localized_schema.php:46 -msgid "Mark articles as read automatically" -msgstr "Marca els articles com a llegits automàticament." +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "" -#: localized_schema.php:47 -msgid "" -"This option enables marking articles as read automatically in combined mode " -"(except for Fresh articles feed) while you scroll article list." +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" msgstr "" -"Aquesta opció permet marcar els articles com a llegits automàticament en " -"mode combinat (excepte en el canal d'articles Frescos) mentre desplaceu la " -"barra." -#: localized_schema.php:48 -msgid "On catchup show next feed" -msgstr "Salta automàticament al canal següent" +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "" -#: localized_schema.php:49 -msgid "" -"When \"Mark as read\" button is clicked in toolbar, automatically open next " -"feed with unread articles." +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +#, fuzzy +msgid "Multiple articles" +msgstr "Tots els articles" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" msgstr "" -"En fer clic al botó « Marca'ls com a llegits Â», obre automàticament " -"el següent canal que contingui articles per llegir." -#: localized_schema.php:50 -msgid "Open article links in new browser window" -msgstr "Obre els enllaços dels articles en una nova finestra" +#: plugins/mailto/init.php:75 +#, fuzzy +msgid "Forward selected article(s) by email." +msgstr "Marca l'article" -#: localized_schema.php:51 -msgid "Reverse headline order (oldest first)" -msgstr "Inverteix l'ordre de les capçaleres (les més antigues les primeres)" +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "" -#: localized_schema.php:52 -msgid "Show content preview in headlines list" -msgstr "Mostra el contingut en la llista de capçaleres" +#: plugins/mailto/init.php:83 +#, fuzzy +msgid "Close this dialog" +msgstr "Tanca la finestra" -#: localized_schema.php:53 -msgid "Sort feeds by unread articles count" -msgstr "Ordena els canals per articles no llegits" +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "" -#: localized_schema.php:54 -msgid "User stylesheet URL" -msgstr "URL de la fulla d'estils personalitzada." +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "" + +#: plugins/import_export/init.php:65 +#, fuzzy +msgid "Export my data" +msgstr "Exporta en format OPML" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Importeu" -#: localized_schema.php:55 -msgid "Link to user stylesheet to override default style, disabled if empty." +#: plugins/import_export/init.php:223 +#, fuzzy +msgid "Could not import: incorrect schema version." +msgstr "No s'ha pogut trobar el fitxer d'esquema necessari, es necessita la versió:" + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." msgstr "" -"Enllaç a la fulla d'estils de l'usuari per a sobreescriure l'estil per " -"defecte, desconnectada si és buida." -#: localized_schema.php:56 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Temps màxim per als articles marcats com a frescos (en hores)" +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "" -#: localized_schema.php:57 -msgid "Hide feedlist" -msgstr "Amaga la llista de canals" +#: plugins/import_export/init.php:388 +#, fuzzy, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "Edita les etiquetes" +msgstr[1] "Edita les etiquetes" -#: localized_schema.php:58 -msgid "" -"This option hides feedlist and allows it to be toggled on the fly, useful " -"for small screens." +#: plugins/import_export/init.php:389 +#, fuzzy, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "Ja s'ha importat" +msgstr[1] "Ja s'ha importat" + +#: plugins/import_export/init.php:390 +#, fuzzy, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "No heu seleccionat cap canal." +msgstr[1] "No heu seleccionat cap canal." + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." msgstr "" -"Aquesta opció amaga la llista de canals i permet canviar-ho ràpidament, " -"pràctica per a pantalles petites." -#: localized_schema.php:59 -msgid "Group headlines in virtual feeds" -msgstr "Agrupa les capçaleres en canals virtuals" +#: plugins/import_export/init.php:407 +#, fuzzy +msgid "Prepare data" +msgstr "Desa" -#: localized_schema.php:60 -msgid "" -"When this option is enabled, headlines in Special feeds and Labels are " -"grouped by feeds" +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" msgstr "" -"Quan aquesta habiliteu aquesta opció, s'agruparan les capçaleres i etiquetes " -"per canals." -#: localized_schema.php:62 -msgid "Advanced" -msgstr "Avançat" +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "" -#: localized_schema.php:64 -msgid "Blacklisted tags" -msgstr "Llista negra d'etiquetes" +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "" -#: localized_schema.php:65 -msgid "" -"When auto-detecting tags in articles these tags will not be applied (comma-" -"separated list)." +#: plugins/nsfw/init.php:100 +#, fuzzy +msgid "Configuration saved." +msgstr "S'ha desat la configuració" + +#: plugins/auth_internal/init.php:65 +#, fuzzy +msgid "Please enter your one time password:" +msgstr "Si us plau, escriviu una nota per aquest article:" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "S'ha modificat la contrasenya." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "La contrasenya antiga és incorrecta." + +#: plugins/close_button/init.php:22 +#, fuzzy +msgid "Close article" +msgstr "Buida els articles" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." msgstr "" -"Quan s'autodetectin etiquetes en els articles, aquestes etiquetes no " -"s'utilitzaran (fes una llista separada per comes)" -#: localized_schema.php:66 -msgid "Confirm marking feed as read" -msgstr "Demana la confirmació quan es marqui un canal com a llegit" +#: plugins/mail/init.php:34 +msgid "Mail plugin" +msgstr "" -#: localized_schema.php:67 -msgid "Enable feed icons" -msgstr "Habilita les icones dels canals." +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "" -#: localized_schema.php:68 -msgid "Enable labels" -msgstr "Habilita les etiquetes" +#: plugins/mail/init.php:140 +#, fuzzy +msgid "To:" +msgstr "Dalt" -#: localized_schema.php:69 -msgid "" -"Experimental support for virtual feeds based on user crafted SQL queries. " -"This feature is highly experimental and at this point not user friendly. Use " -"with caution." +#: plugins/mail/init.php:155 +#, fuzzy +msgid "Subject:" +msgstr "Selecciona:" + +#: plugins/mail/init.php:171 +#, fuzzy +msgid "Send e-mail" +msgstr "Canvieu l'adreça electrònica" + +#: plugins/instances/init.php:141 +#, fuzzy +msgid "Linked" +msgstr "Enllaç" + +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" msgstr "" -"Suport experimental per a canals virtuals basats en demandes SQL " -"personalitzades. Aquesta característica és experimental i, per tant no és " -"fàcil d'utilitzar. Utilitzeu-la amb compte." -#: localized_schema.php:70 -msgid "Long date format" -msgstr "Format llarg de data" +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "" -#: localized_schema.php:71 -msgid "Set articles as unread on update" -msgstr "En actualitzar, marca els articles com a no llegits." +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +#, fuzzy +msgid "Access key:" +msgstr "Nivell d'accés:" -#: localized_schema.php:72 -msgid "Short date format" -msgstr "Format curt de data" +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +#, fuzzy +msgid "Access key" +msgstr "Nivell d'accés" -#: localized_schema.php:73 -msgid "Show additional information in feedlist" -msgstr "Mostra informació addicional a la llista de canals" +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "" -#: localized_schema.php:74 -msgid "Strip unsafe tags from articles" -msgstr "Elimina les etiquetes dels articles que no siguin segures." +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +#, fuzzy +msgid "Generate new key" +msgstr "Canals generats" -#: localized_schema.php:75 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "Elimina les etiquetes HTML més freqüents en llegir els articles." +#: plugins/instances/init.php:292 +#, fuzzy +msgid "Link instance" +msgstr "Edita les etiquetes" -#: localized_schema.php:76 -msgid "Use more accessible date/time format for headlines" +#: 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 "" -"Utilitzeu un format més accessible per a la data i hora de les capçaleres." -#: localized_schema.php:77 -msgid "Automatically expand articles in combined mode" -msgstr "En mode combinat expandeix els articles automàticament." +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "" + +#: plugins/instances/init.php:316 +#, fuzzy +msgid "Stored feeds" +msgstr "Més canals" + +#: plugins/instances/init.php:433 +#, fuzzy +msgid "Create link" +msgstr "Crea" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "S'ha desat la configuració" + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "Comprova la disponibilitat" + +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "Desplaça el contingut de l'article" + +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +#, fuzzy +msgid "Shared articles" +msgstr "Articles marcats" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +msgid "Statistics" +msgstr "" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "Articles marcats" + +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "Esborra les dades del canal" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, php-format +msgid "Currently stored as: %s" +msgstr "" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "" + +#: 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 "" + +#: plugins/bookmarklets/init.php:26 +#, fuzzy, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "Torna a Tiny Tiny RSS" + +#: plugins/bookmarklets/init.php:31 +#, fuzzy +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Torna a Tiny Tiny RSS" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "" + +#: plugins/share/init.php:44 +#, fuzzy +msgid "Unshare all articles" +msgstr "Articles mémorisés" + +#: plugins/share/init.php:77 +#, fuzzy +msgid "Share by URL" +msgstr "Marca l'article" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "" + +#: plugins/share/init.php:117 +#, fuzzy +msgid "Unshare article" +msgstr "Treu la marca de l'article" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "" + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "" + +#: js/functions.js:93 +msgid "Close" +msgstr "" + +#: js/functions.js:104 +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "" + +#: js/functions.js:224 +#, fuzzy +msgid "Click to close" +msgstr "Feu clic per editar" + +#: js/functions.js:1051 +#, fuzzy +msgid "Edit action" +msgstr "Accions dels canals" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "Crea un filtre" + +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "" -#: localized_schema.php:78 -msgid "Purge unread articles" -msgstr "Purga els articles per llegir" +#: js/functions.js:1229 +#, fuzzy +msgid "Subscription reset." +msgstr "Subscriviu-vos al canal" -#: localized_schema.php:79 -msgid "Show special feeds when hiding read feeds" -msgstr "Mostra els canals especials quan s'amaguin els canals reals." +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "Us voleu donar de baixa de %s ?" -#: localized_schema.php:80 -msgid "Prefer more accurate feedlist counters to UI speed" -msgstr "" -"Prefereix una llista de canals més acurada per augmentar la velocitat de la " -"interfície." +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "S'està eliminant el canal..." -#: localized_schema.php:81 -msgid "Enable inline MP3 player" -msgstr "Habilita el reproductor MP3 en línia." +#: js/functions.js:1349 +#, fuzzy +msgid "Please enter category title:" +msgstr "Si us plau, escriviu una nota per aquest article:" -#: localized_schema.php:82 -msgid "" -"Enable the Flash-based XSPF Player to play MP3-format podcast enclosures." +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" msgstr "" -"Habilita el reproductor basat el Flash XSPF per a reproduir els podcast " -"inserits en format MP3." -#: localized_schema.php:83 -msgid "Do not show images in articles" -msgstr "No mostris imatges en els articles" +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "S'està intentant canviar l'adreça..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "No heu seleccionat cap canal." -#: localized_schema.php:84 -msgid "Enable external API" +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "" -#: login_form.php:120 modules/popup-dialog.php:271 modules/pref-feeds.php:339 -#: modules/pref-feeds.php:561 mobile/login_form.php:38 -msgid "Login:" -msgstr "Usuari:" +#: js/functions.js:1766 +#, fuzzy +msgid "Feeds with update errors" +msgstr "Erreurs de mise à jour" -#: login_form.php:124 modules/popup-dialog.php:273 modules/pref-feeds.php:344 -#: modules/pref-feeds.php:567 mobile/login_form.php:43 -msgid "Password:" -msgstr "Contrasenya:" +#: js/functions.js:1777 +#: js/prefs.js:1176 +#, fuzzy +msgid "Remove selected feeds?" +msgstr "Esteu segur que voleu suprimir els filtres seleccionats?" -#: login_form.php:129 -msgid "Language:" -msgstr "Idioma:" +#: js/functions.js:1780 +#: js/prefs.js:1179 +#, fuzzy +msgid "Removing selected feeds..." +msgstr "S'estan suprimint els filtres seleccionats..." -#: login_form.php:139 +#: js/PrefFeedTree.js:48 #, fuzzy -msgid "Profile:" -msgstr "Fitxer:" +msgid "Edit category" +msgstr "Edita les categories" -#: login_form.php:152 mobile/login_form.php:28 -msgid "Log in" -msgstr "Registreu-vos" +#: js/PrefFeedTree.js:55 +#, fuzzy +msgid "Remove category" +msgstr "Crea una categoria" -#: login_form.php:155 register.php:148 -msgid "Create new account" -msgstr "Creeu un compte nou" +#: js/PrefFilterTree.js:64 +#, fuzzy +msgid "Inverse" +msgstr "(Invers)" -#: login_form.php:169 -msgid "Limit bandwidth usage" -msgstr "Limita l'ús de l'ample de banda." +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "Si us plau, introduïu la vostra identificació (login)" -#: opml.php:99 opml.php:103 -msgid "OPML Utility" -msgstr "Eina OPML" +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "No s'ha pogut crear l'usuari: no hi ha cap nom especificat." -#: opml.php:124 -msgid "Importing OPML (using DOMXML extension)..." -msgstr "S'està important OPML (s'està utilitzant l'extensió DOMXML)..." +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "S'està afegint l'usuari" -#: opml.php:128 -msgid "Importing OPML (using DOMDocument extension)..." -msgstr "" -"S'està important el fitxer OPML (s'està utilitzant l'extensió DOMDocument)..." +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Editor de perfils d'usuari" -#: opml.php:132 modules/popup-dialog.php:45 -msgid "DOMXML extension is not found. It is required for PHP versions below 5." -msgstr "" -"No s'ha trobat l'extensió DOMXML. Fa falta per a versions de PHP inferiors a " -"la 5." +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +#, fuzzy +msgid "Saving data..." +msgstr "S'està desant el canal..." -#: opml.php:136 -msgid "Return to preferences" -msgstr "Torna a les preferències" +#: js/prefs.js:134 +#, fuzzy +msgid "Edit Filter" +msgstr "Filtres" -#: prefs.php:63 prefs.php:123 tt-rss.php:65 -msgid "Loading, please wait..." -msgstr "S'està obrint, preneu paciència..." +#: js/prefs.js:181 +#, fuzzy +msgid "Remove filter?" +msgstr "Esteu segur que voleu suprimir el filtre %s?" -#: prefs.php:70 prefs.php:126 tt-rss.php:73 -msgid "" -"Your browser doesn't support Javascript, which is required\n" -"\t\tfor this application to function properly. Please check your\n" -"\t\tbrowser settings." -msgstr "" -"El vostre navegador no és compatible amb Javascript, el qual és necessari\n" -" /t/t per tal que aquesta aplicació funcioni correctament. Si us plau " -"reviseu els vostres\n" -"/t/t paràmetres del navegador." +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "S'està eliminant el filtre." -#: prefs.php:90 tt-rss.php:112 -msgid "Hello," -msgstr "Hola, " +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "Esteu segur que voleu suprimir les etiquetes seleccionades?" -#: prefs.php:92 help/4.php:14 -msgid "Exit preferences" -msgstr "Surt de les preferències" +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "S'estan seleccionat les etiquetes seleccionades..." -#: prefs.php:94 tt-rss.php:122 mobile/functions.php:60 -#: mobile/functions.php:234 -msgid "Logout" -msgstr "Surt" +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "No heu seleccionat cap etiqueta." -#: prefs.php:102 tt-rss.php:196 -msgid "Keyboard shortcuts" -msgstr "Dreceres de teclat" +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "" -#: prefs.php:108 tt-rss.php:114 help/3.php:63 help/4.php:8 -msgid "Preferences" -msgstr "Preferències" +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "S'estan suprimint els usuaris seleccionats..." -#: prefs.php:110 -msgid "Feeds" -msgstr "Canals" +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "No heu seleccionat cap usuari." -#: prefs.php:112 help/4.php:11 -msgid "Filters" -msgstr "Filtres" +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "Esteu segur que voleu suprimir els filtres seleccionats?" -#: prefs.php:117 help/4.php:13 -msgid "Users" -msgstr "Usuaris" +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "S'estan suprimint els filtres seleccionats..." -#: prefs.php:140 tt-rss.php:99 -#, fuzzy -msgid "Fatal Exception" -msgstr "Erreur critique" +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "No heu seleccionat cap filtre." -#: register.php:152 -msgid "New user registrations are administratively disabled." -msgstr "L'administrador ha deshabilitat els registres de nous usuaris." +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "Us voleu donar de baixa dels canals seleccionats?" -#: register.php:155 register.php:200 register.php:213 register.php:228 -#: register.php:246 register.php:331 register.php:341 register.php:353 -#: update.php:94 update.php:162 modules/pref-feeds.php:954 -msgid "Return to Tiny Tiny RSS" -msgstr "Torna a Tiny Tiny RSS" +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "S'estan cancel·lant les subscripcions als canals seleccionats." -#: register.php:176 -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 "" -"La vostra contrasenya temporal s'enviarà a l'adreça electrònica " -"especificada. Els comptes en els quals no s'hagi entrat almenys un cop " -"s'eliminaran passades 24 hores des de l'enviament de la contrasenya." +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "Si us plau, seleccioneu només un canal." -#: register.php:182 -msgid "Desired login:" -msgstr "Usuari desitjat:" +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "Esteu segur que voleu suprimir tots els articles que no estan marcats als canals seleccionats?" -#: register.php:185 -msgid "Check availability" -msgstr "Comprova la disponibilitat" +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "S'està netejant el canal seleccionat..." -#: register.php:187 -msgid "Email:" -msgstr "Adreça electrònica:" +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "Quants dies voleu mantenir els articles (0 - per defecte)?" -#: register.php:190 -msgid "How much is two plus two:" -msgstr "Quant és dos més dos:" +#: js/prefs.js:460 +#, fuzzy +msgid "Purging selected feed..." +msgstr "S'està netejant el canal seleccionat..." -#: register.php:193 -msgid "Submit registration" -msgstr "Envia el registre" +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "Si us plau, seleccioneu només un usuari." -#: register.php:211 -msgid "Your registration information is incomplete." -msgstr "La vostra informació de registre és incompleta." +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "Voleu reiniciar la contrasenya de l'usuari seleccionat?" -#: register.php:226 -msgid "Sorry, this username is already taken." -msgstr "Aquest nom d'usuari ja existeix." +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "S'està reiniciant la contrasenya de l'usuari seleccionat..." -#: register.php:244 -msgid "Registration failed." -msgstr "Ha fallat el regsitre" +#: js/prefs.js:565 +msgid "User details" +msgstr "Detalls de l'usuari" -#: register.php:328 -msgid "Account created successfully." -msgstr "S'ha creat el compte." +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "Si us plau, seleccioneu només un filtre." -#: register.php:350 -msgid "New user registrations are currently closed." -msgstr "Actualment no es permet el registre de nous usuaris." +#: js/prefs.js:607 +#, fuzzy +msgid "Combine selected filters?" +msgstr "Esteu segur que voleu suprimir els filtres seleccionats?" -#: tt-rss.php:118 -msgid "Comments?" -msgstr "Comentaris?" +#: js/prefs.js:610 +#, fuzzy +msgid "Joining filters..." +msgstr "S'està eliminant el filtre." -#: tt-rss.php:131 -msgid "Offline reading" -msgstr "Lectura fora de línia" +#: js/prefs.js:671 +#, fuzzy +msgid "Edit Multiple Feeds" +msgstr "Editor múltiple de canals" -#: tt-rss.php:138 -msgid "Cancel synchronization" -msgstr "Cancel·la la sincronització" +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "Esteu segur que voleu desar els canvis als canals seleccionats?" -#: tt-rss.php:141 -msgid "Synchronize" -msgstr "Sincronització" +#: js/prefs.js:772 +#, fuzzy +msgid "OPML Import" +msgstr "Importeu" -#: tt-rss.php:143 -msgid "Remove stored data" -msgstr "Elimina les dades emmagatzemades" +#: js/prefs.js:799 +#, fuzzy +msgid "Please choose an OPML file first." +msgstr "Primerament heu de seleccionar un canal." -#: tt-rss.php:145 -msgid "Go offline" -msgstr "Desconnecta't" +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +#, fuzzy +msgid "Importing, please wait..." +msgstr "S'està obrint, preneu paciència..." -#: tt-rss.php:151 -msgid "New version of Tiny Tiny RSS is available!" -msgstr "Hi ha una nova versió de Tiny Tiny RSS!" +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "Esteu segur que voleu establir els valors per defecte?" -#: tt-rss.php:158 -msgid "Go online" -msgstr "Posa't en línia" +#: js/prefs.js:1738 +#, fuzzy +msgid "Subscribing to feeds..." +msgstr "S'està subscrivint a un canal..." -#: tt-rss.php:169 tt-rss.js:79 -msgid "tag cloud" -msgstr "Núvol d'etiquetes" +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "" -#: tt-rss.php:179 -msgid "Search..." -msgstr "Cerca..." +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "" -#: tt-rss.php:180 -msgid "Feed actions:" -msgstr "Accions sobre els canals:" +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "Esteu segur que voleu marcar tots els articles com a llegits?" -#: tt-rss.php:181 -msgid "Subscribe to feed..." -msgstr "Subscriviu-vos al canal" +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "S'estan marcant tots els canals com a llegits..." -#: tt-rss.php:182 -msgid "Edit this feed..." -msgstr "Edita aquest canal..." +#: js/tt-rss.js:391 +#, fuzzy +msgid "Please enable mail plugin first." +msgstr "Primerament heu de seleccionar un canal." -#: tt-rss.php:183 -msgid "Rescore feed" -msgstr "Canvia la puntuació del canal" +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "No podeu editar aquest tipus de canal." -#: tt-rss.php:184 modules/pref-feeds.php:465 modules/pref-feeds.php:1193 -msgid "Unsubscribe" -msgstr "Dóna't de baixa" +#: js/tt-rss.js:505 +#, fuzzy +msgid "Please enable embed_original plugin first." +msgstr "Primerament heu de seleccionar un canal." -#: tt-rss.php:186 -msgid "All feeds:" -msgstr "Tots els canals" +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "" -#: tt-rss.php:188 help/3.php:44 -msgid "(Un)hide read feeds" -msgstr "Mostra/amaga els canals llegits" +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "No podeu canviar la puntuació d'aquest tipus de canal." -#: tt-rss.php:190 -msgid "Other actions:" -msgstr "Altres accions:" +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "Primerament heu de seleccionar un canal." -#: tt-rss.php:193 -msgid "Create filter..." -msgstr "Crea un filtre..." +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "Esteu segur que voleu canviar la puntuació dels articles a %s?" -#: tt-rss.php:194 -msgid "Reset UI layout" -msgstr "Reinicia la capa de la interfície" +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "S'estan canviant la puntuació dels articles" + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "No hi ha cap article seleccionat." -#: tt-rss.php:195 -msgid "Reset category order" -msgstr "Reinicia l'ordre de les categories" +#: js/viewfeed.js:1018 +#, fuzzy, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "Esteu segur que voleu marcar els %d articles seleccionats de %s com a llegits?" +msgstr[1] "Esteu segur que voleu marcar els %d articles seleccionats de %s com a llegits?" + +#: js/viewfeed.js:1020 +#, fuzzy, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "Esteu segur que voleu eliminar els articles seleccionats de l'etiqueta?" +msgstr[1] "Esteu segur que voleu eliminar els articles seleccionats de l'etiqueta?" + +#: js/viewfeed.js:1062 +#, fuzzy, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "Esteu segur que voleu marcar els %d articles seleccionats de %s com a llegits?" +msgstr[1] "Esteu segur que voleu marcar els %d articles seleccionats de %s com a llegits?" + +#: js/viewfeed.js:1065 +#, fuzzy, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "Articles marcats" +msgstr[1] "Articles marcats" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "" -#: tt-rss.php:205 -msgid "Collapse feedlist" -msgstr "Redueix la llista de canals" +#: js/viewfeed.js:1112 +#, fuzzy, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "Esteu segur que voleu marcar els %d articles seleccionats de %s com a llegits?" +msgstr[1] "Esteu segur que voleu marcar els %d articles seleccionats de %s com a llegits?" -#: tt-rss.php:208 +#: js/viewfeed.js:1136 #, fuzzy -msgid "Show articles" -msgstr "Articles mémorisés" +msgid "Edit article Tags" +msgstr "Edita les etiquetes" -#: tt-rss.php:210 -msgid "Adaptive" -msgstr "Adaptatiu" +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "S'estan desant les etiquetes de l'article" -#: tt-rss.php:211 -msgid "All Articles" -msgstr "Tots els articles" +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +#, fuzzy +msgid "Click to open next unread feed." +msgstr "Feu clic per editar" -#: tt-rss.php:214 -msgid "Ignore Scoring" -msgstr "Ignora la puntuació" +#: js/viewfeed.js:1961 +#, fuzzy +msgid "Open original article" +msgstr "Mostra el contingut original de l'article" -#: tt-rss.php:215 modules/pref-feeds.php:1316 modules/pref-feeds.php:1377 -msgid "Updated" -msgstr "Actualitzat" +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Assigna-li l'etiqueta" -#: tt-rss.php:218 +#: js/viewfeed.js:2072 #, fuzzy -msgid "Sort articles" -msgstr "Articles mémorisés" +msgid "Remove label" +msgstr "Esteu segur que voleu suprimir les etiquetes seleccionades?" -#: tt-rss.php:221 modules/popup-dialog.php:462 modules/pref-filters.php:51 -#: modules/pref-filters.php:469 -msgid "Date" -msgstr "Data" +#: js/viewfeed.js:2159 +#, fuzzy +msgid "Select articles in group" +msgstr "Seleccioneu un article mitjançant el ratolí." -#: tt-rss.php:223 -msgid "Score" -msgstr "Puntuació" +#: js/viewfeed.js:2168 +#, fuzzy +msgid "Mark group as read" +msgstr "Marca'l com a llegit" -#: tt-rss.php:227 modules/pref-feeds.php:296 modules/pref-feeds.php:524 -msgid "Update" -msgstr "Actualitza" +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "Marca el canal com a llegit" -#: tt-rss.php:238 tt-rss.php:252 -msgid "No feed selected." -msgstr "No heu seleccionat cap canal." +#: js/viewfeed.js:2235 +#, fuzzy +msgid "Please enter new score for selected articles:" +msgstr "Si us plau, escriviu una nota per aquest article:" + +#: js/viewfeed.js:2305 +#, fuzzy +msgid "Please enter new score for this article:" +msgstr "Si us plau, escriviu una nota per aquest article:" -#: tt-rss.php:242 -msgid "Drag me to resize panels" -msgstr "Arrossega'm per a canviar la mida dels quadres." +#: js/viewfeed.js:2339 +#, fuzzy +msgid "Article URL:" +msgstr "Tots els articles" -#: update.php:19 -msgid "Your access level is insufficient to run this script." -msgstr "No teniu prou permisos per a executar aquest script." +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "" -#: update.php:44 -msgid "Database Updater" -msgstr "Eina d'actualització de la base de dades" +#: plugins/af_psql_trgm/init.js:11 +#, fuzzy +msgid "Related articles" +msgstr "Buida els articles" -#: update.php:85 -msgid "Could not update database" -msgstr "No s'ha pogut actualitzar la base de dades" +#: plugins/note/note.js:17 +#, fuzzy +msgid "Saving article note..." +msgstr "S'estan desant les etiquetes de l'article" -#: update.php:88 -msgid "Could not find necessary schema file, need version:" +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" msgstr "" -"No s'ha pogut trobar el fitxer d'esquema necessari, es necessita la versió:" -#: update.php:89 -msgid ", found: " -msgstr ", trobats:" +#: plugins/googlereaderimport/init.js:42 +#, fuzzy +msgid "Please choose a file first." +msgstr "Primerament heu de seleccionar un canal." -#: update.php:92 -msgid "Tiny Tiny RSS database is up to date." -msgstr "La base de dades de Tiny Tiny RSS està actualitzada." +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +#, fuzzy +msgid "Forward article by email" +msgstr "Marca l'article" -#: update.php:102 -msgid "Please backup your database before proceeding." -msgstr "" -"Si us plau feu una còpia de seguretat de la base de dades abans de continuar." +#: plugins/import_export/import_export.js:13 +#, fuzzy +msgid "Export Data" +msgstr "Exporta en format OPML" -#: update.php:104 -#, php-format -msgid "" -"Your Tiny Tiny RSS database needs update to the latest version (%d to " -"%d)." -msgstr "" -"La base de dades de Tiny Tiny RSS s'ha d'actualitzar ( de la versió %d a la %d)." +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "" +msgstr[1] "" -#: update.php:118 -msgid "Perform updates" -msgstr "Aplica les actualitzacions" +#: plugins/import_export/import_export.js:93 +#, fuzzy +msgid "Data Import" +msgstr "Importeu" -#: update.php:123 -msgid "Performing updates..." -msgstr "S'estan realitzant les actualitzacions..." +#: plugins/import_export/import_export.js:112 +#, fuzzy +msgid "Please choose the file first." +msgstr "Primerament heu de seleccionar un canal." -#: update.php:129 -#, php-format -msgid "Updating to version %d..." -msgstr "S'està actualitzant a la versió %d..." +#: plugins/shorten_expanded/init.js:37 +msgid "Click to expand article" +msgstr "Clica-hi per a veure el cos de l'article" -#: update.php:142 -msgid "Checking version... " -msgstr "S'està comprovant la versió..." +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" -#: update.php:148 -msgid "OK!" -msgstr "D'acord!" +#: plugins/mail/mail.js:38 +#, fuzzy +msgid "Your message has been sent." +msgstr "S'ha modificat la contrasenya." -#: update.php:150 -msgid "ERROR!" -msgstr "Error!" +#: plugins/instances/instances.js:10 +#, fuzzy +msgid "Link Instance" +msgstr "Edita les etiquetes" -#: update.php:158 -#, php-format -msgid "" -"Finished. Performed %d update(s) up to schema\n" -"\t\t\tversion %d." -msgstr "Fet. S'ha actualitzat l'esquema de la versió %d a %d." +#: plugins/instances/instances.js:73 +#, fuzzy +msgid "Edit Instance" +msgstr "Edita les etiquetes" -#: modules/help.php:6 -msgid "Help" -msgstr "Ajuda" +#: plugins/instances/instances.js:122 +#, fuzzy +msgid "Remove selected instances?" +msgstr "Esteu segur que voleu suprimir els filtres seleccionats?" -#: modules/help.php:17 -msgid "Help topic not found." -msgstr "No s'ha trobat el tema a l'ajuda." +#: plugins/instances/instances.js:125 +#, fuzzy +msgid "Removing selected instances..." +msgstr "S'estan suprimint els filtres seleccionats..." -#: modules/opml_domdoc.php:52 modules/opml_domxml.php:54 -#, fuzzy, php-format -msgid "
  • Adding category %s.
  • " -msgstr "S'està afegint la categoria %s." +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +#, fuzzy +msgid "No instances are selected." +msgstr "No heu seleccionat cap filtre." -#: modules/opml_domdoc.php:101 modules/opml_domxml.php:103 +#: plugins/instances/instances.js:156 #, fuzzy -msgid "is already imported." -msgstr "Ja s'ha importat" +msgid "Please select only one instance." +msgstr "Si us plau, seleccioneu només un filtre." -#: modules/opml_domdoc.php:121 modules/opml_domxml.php:122 +#: plugins/af_sort_bayes/init.js:26 #, fuzzy -msgid "OK" -msgstr "D'acord!" +msgid "Clear classifier database?" +msgstr "Esborra les dades del canal" -#: modules/opml_domdoc.php:130 modules/opml_domxml.php:134 -msgid "Error while parsing document." -msgstr "Error mentre s'analitza el document." +#: plugins/af_sort_bayes/init.js:70 +#, fuzzy +msgid "Classifier information" +msgstr "Information sur le flux :" -#: modules/opml_domdoc.php:134 modules/opml_domxml.php:138 -msgid "Error: please upload OPML file." -msgstr "Error: si us plau carregueu el fitxer OPML." +#: plugins/share/share.js:10 +#, fuzzy +msgid "Share article by URL" +msgstr "Marca l'article" -#: modules/opml_domxml.php:131 -msgid "Error: can't find body element." -msgstr "Error: no es pot trobar els elements del cos." +#: plugins/share/share.js:14 +#, fuzzy +msgid "Generate new share URL for this article?" +msgstr "Si us plau, escriviu una nota per aquest article:" -#: modules/popup-dialog.php:7 +#: plugins/share/share.js:18 #, fuzzy -msgid "OPML Import" -msgstr "Importeu" +msgid "Trying to change URL..." +msgstr "S'està intentant canviar l'adreça electrònica..." -#: modules/popup-dialog.php:34 +#: plugins/share/share.js:55 #, fuzzy -msgid "Importing using DOMXML." -msgstr "S'està important OPML (s'està utilitzant l'extensió DOMXML)..." +msgid "Remove sharing for this article?" +msgstr "Edita les etiquetes d'aquest article" -#: modules/popup-dialog.php:40 +#: plugins/share/share.js:59 #, fuzzy -msgid "Importing using DOMDocument." +msgid "Trying to unshare..." +msgstr "S'està intentant canviar l'adreça..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" msgstr "" -"S'està important el fitxer OPML (s'està utilitzant l'extensió DOMDocument)..." -#: modules/popup-dialog.php:68 -msgid "Settings Profiles" +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +#, fuzzy +msgid "Clearing URLs..." +msgstr "S'està netejant el canal..." + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." msgstr "" -#: modules/popup-dialog.php:75 +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "Esteu segur que voleu marcar tots els articles de %s com a llegits?" + +#: js/feedlist.js:435 #, fuzzy -msgid "Create profile" -msgstr "Crea un filtre" +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "Esteu segur que voleu marcar tots els articles de %s com a llegits?" -#: modules/popup-dialog.php:100 modules/popup-dialog.php:128 +#: js/feedlist.js:438 #, fuzzy -msgid "(active)" -msgstr "Adaptatiu" +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "Esteu segur que voleu marcar tots els articles de %s com a llegits?" -#: modules/popup-dialog.php:148 modules/popup-dialog.php:350 -#: modules/pref-feeds.php:455 modules/pref-feeds.php:1136 -#: modules/pref-filters.php:153 modules/pref-filters.php:321 -#: modules/pref-labels.php:140 modules/pref-users.php:378 -msgid "Remove" -msgstr "Suprimeix" +#: js/feedlist.js:441 +#, fuzzy +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "Esteu segur que voleu marcar tots els articles de %s com a llegits?" + +#: js/functions.js:615 +msgid "Error explained" +msgstr "" -#: modules/popup-dialog.php:150 +#: js/functions.js:697 #, fuzzy -msgid "Activate" -msgstr "Adaptatiu" +msgid "Upload complete." +msgstr "Articles mémorisés" -#: modules/popup-dialog.php:163 -msgid "Published Articles" -msgstr "Articles publiés" +#: js/functions.js:721 +#, fuzzy +msgid "Remove stored feed icon?" +msgstr "Elimina les dades emmagatzemades" -#: modules/popup-dialog.php:168 +#: js/functions.js:726 #, fuzzy -msgid "Your Published articles feed URL is:" -msgstr "Enllaç als articles publicats del canal." +msgid "Removing feed icon..." +msgstr "S'està eliminant el canal..." -#: modules/popup-dialog.php:177 +#: js/functions.js:731 #, fuzzy -msgid "Generate new URL" -msgstr "Canals generats" +msgid "Feed icon removed." +msgstr "No s'ha trobat el canal." -#: modules/popup-dialog.php:190 -msgid "Notice" -msgstr "Avís" +#: js/functions.js:753 +#, fuzzy +msgid "Please select an image file to upload." +msgstr "Si us plau, seleccioneu un canal." -#: modules/popup-dialog.php:196 -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." +#: js/functions.js:755 +msgid "Upload new icon for this feed?" msgstr "" -"L'actualització de daemon està activada en la configuració però el procés " -"daemon no funciona, fet que impedeix l'actualització de tots els canals. Si " -"us plau, engegueu el procés del daemon o contacteu amb el responsable " -"pertinent." -#: modules/popup-dialog.php:200 modules/popup-dialog.php:220 -msgid "Last update:" -msgstr "Última actualització:" +#: js/functions.js:756 +#, fuzzy +msgid "Uploading, please wait..." +msgstr "S'està obrint, preneu paciència..." -#: modules/popup-dialog.php:208 -msgid "" -"You are running the latest version of Tiny Tiny RSS. The fact that you are " -"seeing this dialog is probably a bug." -msgstr "" -"Esteu utillitzant l'última versió de Tiny Tiny RSS. Si esteu veient aquest " -"quadre és possible que sigui degut a una panerola." +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "Si us plau, escriviu un títol per a l'etiqueta:" -#: modules/popup-dialog.php:216 -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 "" -"L'actualització del daemon és més llarga que la d'un canal. Això pot indicar " -"un problema com la caiguda. Si us plau, reviseu dels processos del daemon o " -"contacteu amb el seu propietari." +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "No s'ha pogut crear l'etiqueta: Títol desconegut." -#: modules/popup-dialog.php:239 +#: js/functions.js:820 msgid "Subscribe to Feed" msgstr "Subscriviu-vos al canal" -#: modules/popup-dialog.php:248 modules/pref-feeds.php:197 -#: modules/pref-feeds.php:488 modules/pref-filters.php:407 -msgid "Feed" -msgstr "Canal" - -#: modules/popup-dialog.php:251 modules/pref-feeds.php:213 -#: modules/pref-feeds.php:502 -msgid "URL:" -msgstr "URL:" - -#: modules/popup-dialog.php:260 modules/pref-feeds.php:225 -#: modules/pref-feeds.php:514 -msgid "Place in category:" -msgstr "Posa'l a la categoria:" +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "" -#: modules/popup-dialog.php:268 modules/pref-feeds.php:332 -#: modules/pref-feeds.php:558 modules/pref-prefs.php:235 -#: modules/pref-users.php:142 -msgid "Authentication" -msgstr "Autenticació" +#: js/functions.js:854 +#, fuzzy +msgid "Subscribed to %s" +msgstr "Subscrit als canals:" -#: modules/popup-dialog.php:283 -msgid "This feed requires authentication." -msgstr "Aquest canal requereix autenticació." +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "" -#: modules/popup-dialog.php:289 modules/popup-dialog.php:349 -msgid "Subscribe" -msgstr "Subscriu-t'hi" +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "" -#: modules/popup-dialog.php:290 +#: js/functions.js:874 #, fuzzy -msgid "More feeds" -msgstr "Més canals" - -#: modules/popup-dialog.php:291 modules/popup-dialog.php:351 -#: modules/popup-dialog.php:425 modules/popup-dialog.php:543 -#: modules/popup-dialog.php:612 modules/pref-feeds.php:468 -#: modules/pref-feeds.php:623 modules/pref-filters.php:160 -#: modules/pref-users.php:181 -msgid "Cancel" -msgstr "Cancel·la" +msgid "Expand to select feed" +msgstr "S'estan purgant els canals seleccionats..." -#: modules/popup-dialog.php:298 -msgid "Feed Browser" -msgstr "Navegador de canals" +#: js/functions.js:886 +#, fuzzy +msgid "Couldn't download the specified URL: %s" +msgstr "No s'ha pogut subscriure: no s'ha especificat la URL del canal." -#: modules/popup-dialog.php:317 modules/popup-dialog.php:359 -#: modules/popup-dialog.php:424 modules/pref-feeds.php:1177 -#: modules/pref-filters.php:308 modules/pref-labels.php:131 -#: modules/pref-users.php:361 -msgid "Search" -msgstr "Cerca" +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "" -#: modules/popup-dialog.php:321 +#: js/functions.js:895 #, fuzzy -msgid "Popular feeds" -msgstr "mostra els canals" +msgid "You are already subscribed to this feed." +msgstr "No esteu subscrit a cap canal." -#: modules/popup-dialog.php:322 +#: js/functions.js:1025 #, fuzzy -msgid "Feed archive" -msgstr "Accions dels canals" +msgid "Edit rule" +msgstr "Filtres" -#: modules/popup-dialog.php:325 +#: js/functions.js:1586 #, fuzzy -msgid "limit:" -msgstr "Límit:" +msgid "Edit Feed" +msgstr "Edita el canal" -#: modules/popup-dialog.php:371 -msgid "Look for" -msgstr "Mirar-ho per" +#: js/functions.js:1624 +#, fuzzy +msgid "More Feeds" +msgstr "Més canals" -#: modules/popup-dialog.php:378 -msgid "match on" -msgstr "coincideix en" +#: js/functions.js:1878 +msgid "Help" +msgstr "Ajuda" -#: modules/popup-dialog.php:383 -msgid "Title or content" -msgstr "Títol o contingut" +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "" -#: modules/popup-dialog.php:388 -msgid "Limit search to:" -msgstr "Limita la cerca a:" +#: js/prefs.js:1089 +#, fuzzy +msgid "Removing category..." +msgstr "Crea una categoria" -#: modules/popup-dialog.php:404 -msgid "This feed" -msgstr "Aquest canal" +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "Esteu segur que voleu suprimir les categories seleccionades?" -#: modules/popup-dialog.php:438 -msgid "Create Filter" -msgstr "Crea un filtre" +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "S'estan seleccionant les categories seleccionades..." -#: modules/popup-dialog.php:457 modules/pref-filters.php:42 -#: modules/pref-filters.php:406 -msgid "Match" -msgstr "Coincidència" +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "No heu seleccionat cap categoria." -#: modules/popup-dialog.php:465 modules/pref-filters.php:54 -#: modules/pref-filters.php:441 -msgid "before" -msgstr "abans" +#: js/prefs.js:1134 +#, fuzzy +msgid "Category title:" +msgstr "Edita les categories" -#: modules/popup-dialog.php:466 modules/pref-filters.php:55 -#: modules/pref-filters.php:442 -msgid "after" -msgstr "després" +#: js/prefs.js:1138 +#, fuzzy +msgid "Creating category..." +msgstr "Crea un filtre..." -#: modules/popup-dialog.php:478 modules/pref-filters.php:68 -msgid "Check it" -msgstr "Revisa-ho" +#: js/prefs.js:1165 +#, fuzzy +msgid "Feeds without recent updates" +msgstr "Erreurs de mise à jour" -#: modules/popup-dialog.php:481 modules/pref-filters.php:71 -msgid "on field" -msgstr "al camp" +#: js/prefs.js:1214 +#, fuzzy +msgid "Replace current OPML publishing address with a new one?" +msgstr "Voleu canviar l'adreça de publicació per una de nova?" -#: modules/popup-dialog.php:487 modules/pref-filters.php:77 -msgid "in" -msgstr "a" +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "S'està netejant el canal..." -#: modules/popup-dialog.php:492 modules/pref-filters.php:82 -msgid "Perform Action" -msgstr "Acció a realitzar:" +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "Esteu segur que voleu canviar la puntuació dels articles en les etiquetes personalitzades?" -#: modules/popup-dialog.php:509 modules/pref-filters.php:102 -msgid "with parameters:" -msgstr "amb els paràmetres:" +#: js/prefs.js:1326 +#, fuzzy +msgid "Rescoring selected feeds..." +msgstr "S'està netejant el canal seleccionat..." -#: modules/popup-dialog.php:522 modules/pref-feeds.php:355 -#: modules/pref-feeds.php:576 modules/pref-filters.php:121 -#: modules/pref-users.php:164 -msgid "Options" -msgstr "Opcions" +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "Esteu segur que voleu recuperar tots els articles? Aquesta operació pot durar molt temps." -#: modules/popup-dialog.php:528 modules/pref-filters.php:133 -msgid "Enabled" -msgstr "Activat" +#: js/prefs.js:1349 +#, fuzzy +msgid "Rescoring feeds..." +msgstr "Suppression d'un flux..." -#: modules/popup-dialog.php:531 modules/pref-filters.php:142 -msgid "Inverse match" -msgstr "Coincidència inversa" +#: js/prefs.js:1366 +#, fuzzy +msgid "Reset selected labels to default colors?" +msgstr "Esteu segur que voleu canviar els colors de les etiquetes pels colors per defecte?" -#: modules/popup-dialog.php:541 -msgid "Create" -msgstr "Crea" +#: js/prefs.js:1403 +#, fuzzy +msgid "Settings Profiles" +msgstr "Crea un filtre" -#: modules/popup-dialog.php:555 -msgid "Update Errors" -msgstr "Actualitza els errors" +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "" -#: modules/popup-dialog.php:558 -msgid "These feeds have not been updated because of errors:" -msgstr "Aquests canals no s'han actualitzat degut als següents errors:" +#: js/prefs.js:1415 +#, fuzzy +msgid "Removing selected profiles..." +msgstr "S'estan suprimint els filtres seleccionats..." -#: modules/popup-dialog.php:584 -msgid "Edit Tags" -msgstr "Edita les etiquetes" +#: js/prefs.js:1430 +#, fuzzy +msgid "No profiles are selected." +msgstr "No hi ha cap article seleccionat." -#: modules/popup-dialog.php:589 -msgid "Tags for this article (separated by commas):" -msgstr "Etiquetes per aquest article (separades per comes):" +#: js/prefs.js:1438 +#: js/prefs.js:1491 +#, fuzzy +msgid "Activate selected profile?" +msgstr "Esteu segur que voleu suprimir els filtres seleccionats?" -#: modules/popup-dialog.php:611 modules/pref-feeds.php:467 -#: modules/pref-feeds.php:621 modules/pref-filters.php:157 -#: modules/pref-users.php:179 -msgid "Save" -msgstr "Desa" +#: js/prefs.js:1454 +#: js/prefs.js:1507 +#, fuzzy +msgid "Please choose a profile to activate." +msgstr "Primerament heu de seleccionar un canal." -#: modules/popup-dialog.php:620 +#: js/prefs.js:1459 #, fuzzy -msgid "Tag Cloud" -msgstr "Núvol d'etiquetes" +msgid "Creating profile..." +msgstr "Crea un filtre" -#: modules/popup-dialog.php:623 -msgid "Showing most popular tags " -msgstr "Mostra les etiquetes més populars" +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "" -#: modules/popup-dialog.php:624 +#: js/prefs.js:1525 #, fuzzy -msgid "more tags" -msgstr "sense etiqueta" +msgid "Generated URLs cleared." +msgstr "Canals generats" -#: modules/pref-feeds.php:4 -msgid "Check to enable field" -msgstr "Seleccioneu-ho per activar els camps" +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Éditeur d'intitulé" -#: modules/pref-feeds.php:187 -msgid "Feed Editor" -msgstr "Editor de canals" +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "No us podeu donar de baixa de la categoria." + +#: js/viewfeed.js:113 +#, fuzzy +msgid "Cancel search" +msgstr "Cancel·la" -#: modules/pref-feeds.php:242 -msgid "Link to feed:" -msgstr "Enllaç al canal:" +#: js/viewfeed.js:174 +#, fuzzy +msgid "New articles found, reload feed to continue." +msgstr "No s'han trobat articles per a mostrar." -#: modules/pref-feeds.php:259 -msgid "Not linked" -msgstr "Sense cap enllaç" +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Treu la marca de l'article" -#: modules/pref-feeds.php:310 modules/pref-feeds.php:537 -msgid "using" -msgstr "s'està utilitzant" +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "Marca l'article" -#: modules/pref-feeds.php:322 modules/pref-feeds.php:549 -msgid "Article purging:" -msgstr "Neteja d'articles:" +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "Deixa de publicar l'article" -#: modules/pref-feeds.php:369 modules/pref-feeds.php:582 -#, fuzzy -msgid "Hide from Popular feeds" -msgstr "Amaga-ho de la llista de canals" +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Publica l'article" -#: modules/pref-feeds.php:380 modules/pref-feeds.php:587 -msgid "Right-to-left content" -msgstr "Contingut escrit de dreta a esquerra" +#: js/viewfeed.js:662 +#, fuzzy +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "No hi ha cap article seleccionat." +msgstr[1] "No hi ha cap article seleccionat." -#: modules/pref-feeds.php:392 modules/pref-feeds.php:593 -msgid "Include in e-mail digest" -msgstr "Inclou-lo en el resum diari per correu electrònic" +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "No hi ha cap article seleccionat." -#: modules/pref-feeds.php:405 modules/pref-feeds.php:599 -msgid "Always display image attachments" -msgstr "Mostra les imatges adjuntes" +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "No s'han trobat articles per a marcar." -#: modules/pref-feeds.php:427 modules/pref-feeds.php:607 -msgid "Cache images locally" -msgstr "Emmagatzema les imatges localment" +#: js/viewfeed.js:1452 +#, fuzzy +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "Esteu segur que voleu marcar %d article(s) com a llegit(s) ?" +msgstr[1] "Esteu segur que voleu marcar %d article(s) com a llegit(s) ?" -#: modules/pref-feeds.php:439 +#: js/viewfeed.js:1967 #, fuzzy -msgid "Icon" -msgstr "Action" +msgid "Display article URL" +msgstr "afficher les étiquettes" -#: modules/pref-feeds.php:453 -msgid "Replace" -msgstr "" +#~ msgid "Limit search to:" +#~ msgstr "Limita la cerca a:" -#: modules/pref-feeds.php:478 -msgid "Multiple Feed Editor" -msgstr "Editor múltiple de canals" +#~ msgid "This feed" +#~ msgstr "Aquest canal" -#: modules/pref-feeds.php:842 modules/pref-feeds.php:889 -msgid "All done." -msgstr "Fet!" +#~ msgid "Old password cannot be blank." +#~ msgstr "El camp de contrasenya antiga no pot estar buit." -#: modules/pref-feeds.php:920 -#, php-format -msgid "Subscribed to %s." -msgstr "Subscrit a %s." +#~ msgid "New password cannot be blank." +#~ msgstr "El camp de contrasenya nova no pot estar buit." -#: modules/pref-feeds.php:923 -#, fuzzy, php-format -msgid "Could not subscribe to %s." -msgstr "Ja esteu subscrit a %s." +#~ msgid "Entered passwords do not match." +#~ msgstr "Les contrasenyes no coincideixen." -#: modules/pref-feeds.php:926 -#, php-format -msgid "Already subscribed to %s." -msgstr "Ja esteu subscrit a %s." +#~ msgid "Match:" +#~ msgstr "Correspondance :" -#: modules/pref-feeds.php:949 -msgid "Edit subscription options" -msgstr "Edita les opcions de les subscripcions" +#, fuzzy +#~ msgid "All tags." +#~ msgstr "sense etiqueta" -#: modules/pref-feeds.php:1033 -msgid "Category editor" -msgstr "Edita les categories" +#, fuzzy +#~ msgid "Display entries" +#~ msgstr "mostra els canals" -#: modules/pref-feeds.php:1056 -#, php-format -msgid "Category $%s already exists in the database." -msgstr "La categoria %s ja existeix a la base de dades." +#, fuzzy +#~ msgid "Unread First" +#~ msgstr "Per llegir" -#: modules/pref-feeds.php:1077 -msgid "Create category" -msgstr "Crea una categoria" +#~ msgid "Unknown option: %s" +#~ msgstr "Es desconeix l'opció %s" -#: modules/pref-feeds.php:1130 -msgid "No feed categories defined." -msgstr "No s'ha definit cap categoria per als canals." +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "Hi ha una nova versió de Tiny Tiny RSS!" -#: modules/pref-feeds.php:1160 -msgid "Some feeds have update errors (click for details)" -msgstr "" -"S'han detectat errors en alguns canals (feu clic aquí per veure'n els " -"detalls)" +#, fuzzy +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "No s'ha pogut validar la sessió (IP incorrecta)" -#: modules/pref-feeds.php:1181 help/3.php:45 help/4.php:22 -msgid "Subscribe to feed" -msgstr "Subscriu-te al canal" +#, fuzzy +#~ msgid "Assign articles to labels automatically" +#~ msgstr "Marca els articles com a llegits automàticament." + +#, fuzzy +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "Hi ha una nova versió de Tiny Tiny RSS!" + +#, fuzzy +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Torna a Tiny Tiny RSS" -#: modules/pref-feeds.php:1184 #, fuzzy -msgid "Edit feeds" -msgstr "Edita el canal" +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "La base de dades de Tiny Tiny RSS està actualitzada." -#: modules/pref-feeds.php:1189 -msgid "Edit categories" -msgstr "Edita les categories" +#, fuzzy +#~ msgid "Force update" +#~ msgstr "Aplica les actualitzacions" -#: modules/pref-feeds.php:1198 #, fuzzy -msgid "More actions..." -msgstr "Accions..." +#~ msgid "Ready to update." +#~ msgstr "Última actualització:" -#: modules/pref-feeds.php:1202 -msgid "Manual purge" -msgstr "Purger manuellement" +#, fuzzy +#~ msgid "Start update" +#~ msgstr "Última actualització:" -#: modules/pref-feeds.php:1206 -msgid "Clear feed data" -msgstr "Esborra les dades del canal" +#, fuzzy +#~ msgid "New version available!" +#~ msgstr "Hi ha una nova versió de Tiny Tiny RSS!" -#: modules/pref-feeds.php:1207 modules/pref-filters.php:324 -msgid "Rescore articles" -msgstr "Canvia la puntuació dels articles" +#~ msgid "Select:" +#~ msgstr "Selecciona:" -#: modules/pref-feeds.php:1296 -msgid "Show last article times" -msgstr "Mostra l'hora de l'últim article" +#~ msgid "mark as read" +#~ msgstr "Marca'l com a llegit" -#: modules/pref-feeds.php:1313 modules/pref-feeds.php:1373 -msgid "Last Article" -msgstr "Últim article" +#~ msgid "Change password to" +#~ msgstr "Nova contrasenya" -#: modules/pref-feeds.php:1398 modules/pref-filters.php:487 -#: modules/pref-users.php:467 -msgid "Click to edit" -msgstr "Feu clic per editar" +#~ msgid "E-mail: " +#~ msgstr "Adreça electrònica:" -#: modules/pref-feeds.php:1412 -#, php-format -msgid "(linked to %s)" -msgstr "(enllaçat a %s)" +#~ msgid "Login field cannot be blank." +#~ msgstr "El nom del camp no es pot deixar en blanc." -#: modules/pref-feeds.php:1439 -msgid "You don't have any subscribed feeds." -msgstr "No esteu subscrit a cap canal." +#~ msgid "Saving user..." +#~ msgstr "S'està desant l'usuari" -#: modules/pref-feeds.php:1441 -msgid "No matching feeds found." -msgstr "No s'ha trobat cap canal." +#, fuzzy +#~ msgid "Toggle marked" +#~ msgstr "Commuta els marcats" -#: modules/pref-feeds.php:1447 -msgid "OPML" -msgstr "OPML" +#, fuzzy +#~ msgid "(Un)hide empty categories" +#~ msgstr "Edita les categories" -#: modules/pref-feeds.php:1470 -msgid "Import" -msgstr "Importeu" +#, fuzzy +#~ msgid "Published articles and generated feeds" +#~ msgstr "Esteu segur que voleu canviar la puntuació dels articles en les etiquetes personalitzades?" -#: modules/pref-feeds.php:1475 -msgid "Export OPML" -msgstr "Exporta en format OPML" +#, fuzzy +#~ msgid "Articles shared by URL" +#~ msgstr "Marca l'article" -#: modules/pref-feeds.php:1478 -msgid "Firefox Integration" -msgstr "Integració al Firefox" +#~ msgid "These feeds have not been updated because of errors:" +#~ msgstr "Aquests canals no s'han actualitzat degut als següents errors:" -#: modules/pref-feeds.php:1480 -msgid "" -"This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the " -"link below." -msgstr "" -"Podeu utilitzar Tiny Tiny RSS com a lector de canals amb el Firefox fent " -"clic en el següent enllaç." +#, fuzzy +#~ msgid "Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings." +#~ msgstr "" +#~ "El vostre navegador no és compatible amb Javascript, el qual és necessari\n" +#~ " /t/t per tal que aquesta aplicació funcioni correctament. Si us plau reviseu els vostres\n" +#~ "/t/t paràmetres del navegador." -#: modules/pref-feeds.php:1487 -msgid "Click here to register this site as a feed reader." -msgstr "Feu clic aquí per a desar aquesta pàgina web com un canal." +#~ msgid "Hello," +#~ msgstr "Hola, " -#: modules/pref-feeds.php:1498 -msgid "" -"Published articles are exported as a public RSS feed and can be subscribed " -"by anyone who knows the URL specified below." -msgstr "" -"Els articles publicats s'exporten en un canal RSS públic al qual s'hi pot " -"subscriure qualsevol que en conegui l'adreça URL." +#, fuzzy +#~ msgid "Enable categories" +#~ msgstr "Utiliser les catégories de flux" -#: modules/pref-feeds.php:1501 #, fuzzy -msgid "Display URL" -msgstr "afficher les étiquettes" +#~ msgid "Browse categories like folders" +#~ msgstr "Reinicia l'ordre de les categories" -#: modules/pref-feeds.php:1604 -#, fuzzy, php-format -msgid "%d archived articles" -msgstr "Articles marcats" +#, fuzzy +#~ msgid "Show images in posts" +#~ msgstr "No mostris imatges en els articles" -#: modules/pref-feeds.php:1633 -msgid "No feeds found." -msgstr "No s'ha trobat cap canal." +#, fuzzy +#~ msgid "Hide read articles and feeds" +#~ msgstr "Mostra/amaga els canals llegits" -#: modules/pref-filters.php:23 -msgid "Filter Editor" -msgstr "Editor del filtre" +#, fuzzy +#~ msgid "Sort feeds by unread count" +#~ msgstr "Ordena els canals per articles no llegits" -#: modules/pref-filters.php:212 -#, php-format -msgid "Saved filter %s" -msgstr "S'ha desat el filtre %s" +#, fuzzy +#~ msgid "Article archive" +#~ msgstr "Data de l'article" -#: modules/pref-filters.php:266 -#, php-format -msgid "Created filter %s" -msgstr "S'ha creat el filtre %s" +#, fuzzy +#~ msgid "Set value" +#~ msgstr "Marca'l com a destacat" -#: modules/pref-filters.php:315 help/3.php:31 help/4.php:25 -msgid "Create filter" -msgstr "Crea un filtre" +#, fuzzy +#~ msgid "Mark %d displayed article as read?" +#~ msgid_plural "Mark %d displayed articles as read?" +#~ msgstr[0] "Esteu segur que voleu marcar %d article(s) com a llegit(s) ?" +#~ msgstr[1] "Esteu segur que voleu marcar %d article(s) com a llegit(s) ?" -#: modules/pref-filters.php:318 modules/pref-users.php:376 -msgid "Edit" -msgstr "Edita" +#, fuzzy +#~ msgid "Error: unable to load article." +#~ msgstr "Error: si us plau carregueu el fitxer OPML." -#: modules/pref-filters.php:408 -msgid "Field" -msgstr "Camp" +#, fuzzy +#~ msgid "Click to expand article." +#~ msgstr "Clica-hi per a veure el cos de l'article" -#: modules/pref-filters.php:409 -msgid "Params" -msgstr "Paràmetres" +#, fuzzy +#~ msgid "%d more..." +#~ msgid_plural "%d more..." +#~ msgstr[0] "Ouverture de l'aide..." +#~ msgstr[1] "Ouverture de l'aide..." -#: modules/pref-filters.php:476 -msgid "(Disabled)" -msgstr "(Desactivat)" +#, fuzzy +#~ msgid "No unread feeds." +#~ msgstr "Mostra/amaga els canals llegits" -#: modules/pref-filters.php:492 -msgid "(Inverse)" -msgstr "(Invers)" +#, fuzzy +#~ msgid "Load more..." +#~ msgstr "Ouverture de l'aide..." -#: modules/pref-filters.php:512 -msgid "No filters defined." -msgstr "No s'ha definit cap filtre." +#, fuzzy +#~ msgid "Show tag cloud..." +#~ msgstr "Núvol d'etiquetes" -#: modules/pref-filters.php:514 -msgid "No matching filters found." -msgstr "No s'ha trobat cap fitxer que coincideixi." +#, fuzzy +#~ msgid "Click to play" +#~ msgstr "Feu clic per editar" -#: modules/pref-labels.php:102 -#, php-format -msgid "Created label %s" -msgstr "S'ha creat l'etiqueta %s " +#, fuzzy +#~ msgid "Visit the website" +#~ msgstr "Visiteu el web oficial" -#: modules/pref-labels.php:137 help/3.php:30 help/4.php:26 -msgid "Create label" -msgstr "Crea una etiqueta" +#~ msgid "Select theme" +#~ msgstr "Seleccioneu una interfície" -#: modules/pref-labels.php:143 -msgid "Clear colors" -msgstr "Elimina els colors" +#, fuzzy +#~ msgid "Playing..." +#~ msgstr "S'està carregant la llista de canals..." -#: modules/pref-labels.php:223 -msgid "Click to change color" -msgstr "Feu clic per canviar el color" +#, fuzzy +#~ msgid "Default interval between feed updates" +#~ msgstr "Interval per defecte per a les actualitzacions dels canals (en minuts)" -#: modules/pref-labels.php:246 -msgid "No labels defined." -msgstr "No s'han definit les etiquetes." +#~ msgid "Could not update database" +#~ msgstr "No s'ha pogut actualitzar la base de dades" -#: modules/pref-labels.php:248 -msgid "No matching labels found." -msgstr "No s'ha trobat cap etiqueta coincident." +#~ msgid "Could not find necessary schema file, need version:" +#~ msgstr "No s'ha pogut trobar el fitxer d'esquema necessari, es necessita la versió:" -#: modules/pref-labels.php:306 -msgid "custom color:" -msgstr "color personalitzat:" +#~ msgid ", found: " +#~ msgstr ", trobats:" -#: modules/pref-labels.php:307 -msgid "foreground" -msgstr "Primer pla" +#~ msgid "Tiny Tiny RSS database is up to date." +#~ msgstr "La base de dades de Tiny Tiny RSS està actualitzada." -#: modules/pref-labels.php:308 -msgid "background" -msgstr "Fons" +#~ msgid "Please backup your database before proceeding." +#~ msgstr "Si us plau feu una còpia de seguretat de la base de dades abans de continuar." -#: modules/pref-prefs.php:37 -msgid "Old password cannot be blank." -msgstr "El camp de contrasenya antiga no pot estar buit." +#~ msgid "Your Tiny Tiny RSS database needs update to the latest version (%d to %d)." +#~ msgstr "La base de dades de Tiny Tiny RSS s'ha d'actualitzar ( de la versió %d a la %d)." -#: modules/pref-prefs.php:42 -msgid "New password cannot be blank." -msgstr "El camp de contrasenya nova no pot estar buit." +#~ msgid "Performing updates..." +#~ msgstr "S'estan realitzant les actualitzacions..." -#: modules/pref-prefs.php:47 -msgid "Entered passwords do not match." -msgstr "Les contrasenyes no coincideixen." +#~ msgid "Updating to version %d..." +#~ msgstr "S'està actualitzant a la versió %d..." -#: modules/pref-prefs.php:74 -msgid "Password has been changed." -msgstr "S'ha modificat la contrasenya." +#~ msgid "Checking version... " +#~ msgstr "S'està comprovant la versió..." -#: modules/pref-prefs.php:76 -msgid "Old password is incorrect." -msgstr "La contrasenya antiga és incorrecta." +#~ msgid "OK!" +#~ msgstr "D'acord!" -#: modules/pref-prefs.php:104 -msgid "The configuration was saved." -msgstr "S'ha desat la configuració" +#~ msgid "ERROR!" +#~ msgstr "Error!" -#: modules/pref-prefs.php:120 -#, php-format -msgid "Unknown option: %s" -msgstr "Es desconeix l'opció %s" +#, fuzzy +#~ msgid "Finished. Performed %d update up to schema version %d." +#~ msgid_plural "Finished. Performed %d updates up to schema version %d." +#~ msgstr[0] "Fet. S'ha actualitzat l'esquema de la versió %d a %d." +#~ msgstr[1] "Fet. S'ha actualitzat l'esquema de la versió %d a %d." -#: modules/pref-prefs.php:131 -msgid "E-mail has been changed." -msgstr "S'ha canviat l'adreça electrònica." +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Quan aquesta habiliteu aquesta opció, s'agruparan les capçaleres i etiquetes per canals." -#: modules/pref-prefs.php:171 -msgid "" -"Your password is at default value, \n" -"\t\t\t\t\t\tplease change it." -msgstr "" -"La contrasenya actual és la predeterminada,\n" -"\t\t\t\t\t\t penseu en modificar-la." +#~ msgid "Title or Content" +#~ msgstr "Títol o contingut" -#: modules/pref-prefs.php:198 -msgid "Personal data" -msgstr "Dades personals" +#~ msgid "Link" +#~ msgstr "Enllaç" -#: modules/pref-prefs.php:205 -msgid "E-mail" -msgstr "Adreça electrònica" +#~ msgid "Content" +#~ msgstr "Contingut" -#: modules/pref-prefs.php:216 -msgid "Access level" -msgstr "Nivell d'accés" +#~ msgid "Article Date" +#~ msgstr "Data de l'article" -#: modules/pref-prefs.php:229 -msgid "Change e-mail" -msgstr "Canvieu l'adreça electrònica" +#~ msgid "Set starred" +#~ msgstr "Marca'l com a destacat" -#: modules/pref-prefs.php:237 -msgid "Old password" -msgstr "Contrasenya antiga" +#~ msgid "Assign tags" +#~ msgstr "Assigna etiquetes" -#: modules/pref-prefs.php:244 -msgid "New password" -msgstr "Nova contrasenya" +#~ 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 "Aquesta opció és útil si rebeu informació de diferents canals de tipus «multicanal» amb informació que pot coincidir. Si està desactivat només mostra els articles repetits un sol cop." -#: modules/pref-prefs.php:252 -msgid "Confirm password" -msgstr "Confirmeu la contrasenya" +#, fuzzy +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "La contrasenya antiga és incorrecta." -#: modules/pref-prefs.php:268 -msgid "Change password" -msgstr "Canvia la contrasenya" +#, fuzzy +#~ msgid "Date syntax is incorrect." +#~ msgstr "La contrasenya antiga és incorrecta." -#: modules/pref-prefs.php:323 -msgid "Select theme" -msgstr "Seleccioneu una interfície" +#~ msgid "Notice" +#~ msgstr "Avís" -#: modules/pref-prefs.php:383 modules/pref-prefs.php:388 -msgid "Yes" -msgstr "Sí" +#, fuzzy +#~ msgid "Tag Cloud" +#~ msgstr "Núvol d'etiquetes" -#: modules/pref-prefs.php:385 modules/pref-prefs.php:388 -msgid "No" -msgstr "No" +#~ msgid "Mark all visible articles in %s as read?" +#~ msgstr "Esteu segur que voleu marcar tots els articles visibles de %s com a llegits ?" -#: modules/pref-prefs.php:409 -msgid "Save configuration" -msgstr "Desa la configuració" +#~ msgid "Score" +#~ msgstr "Puntuació" -#: modules/pref-prefs.php:412 -msgid "Manage profiles" -msgstr "" +#, fuzzy +#~ msgid "Share on identi.ca" +#~ msgstr "Títol" -#: modules/pref-prefs.php:415 -msgid "Reset to defaults" -msgstr "Torna als paràmetres per defecte" +#, fuzzy +#~ msgid "Flattr this article." +#~ msgstr "Marca l'article" -#: modules/pref-users.php:7 -msgid "Your access level is insufficient to open this tab." -msgstr "No teniu permisos per a obrir aquesta pestanya." +#, fuzzy +#~ msgid "Share on Google+" +#~ msgstr "Títol" -#: modules/pref-users.php:17 -msgid "User details" -msgstr "Detalls de l'usuari" +#, fuzzy +#~ msgid "Share on Twitter" +#~ msgstr "Títol" -#: modules/pref-users.php:31 -msgid "User not found" -msgstr "No s'ha trobat l'usuari" +#, fuzzy +#~ msgid "Show additional preferences" +#~ msgstr "Surt de les preferències" -#: modules/pref-users.php:50 modules/pref-users.php:428 -msgid "Registered" -msgstr "Registrat" +#, fuzzy +#~ msgid "Back to feeds" +#~ msgstr "Torna a la llista de canals." -#: modules/pref-users.php:51 -msgid "Last logged in" -msgstr "Última connexió el" +#, fuzzy +#~ msgid "Clearing credentials..." +#~ msgstr "Esborra les dades del canal" -#: modules/pref-users.php:58 -msgid "Subscribed feeds count" -msgstr "Nombre de canals subscrits" +#~ msgid "Updated" +#~ msgstr "Actualitzat" -#: modules/pref-users.php:62 -msgid "Subscribed feeds" -msgstr "Canals subscrits" +#, fuzzy +#~ msgid "" +#~ "Your browser doesn't support Javascript, which is required\n" +#~ "\t\t\tfor this application to function properly. Please check your\n" +#~ "\t\t\tbrowser settings." +#~ msgstr "" +#~ "El vostre navegador no és compatible amb Javascript, el qual és necessari\n" +#~ " /t/t per tal que aquesta aplicació funcioni correctament. Si us plau reviseu els vostres\n" +#~ "/t/t paràmetres del navegador." -#: modules/pref-users.php:108 -msgid "User Editor" -msgstr "Editor de perfils d'usuari" +#~ msgid "Notifying %s." +#~ msgstr "S'està notificant %s." -#: modules/pref-users.php:145 -msgid "Access level: " -msgstr "Nivell d'accés:" +#~ msgid "Yes" +#~ msgstr "Sí" -#: modules/pref-users.php:158 -msgid "Change password to" -msgstr "Nova contrasenya" +#~ msgid "No" +#~ msgstr "No" -#: modules/pref-users.php:167 -msgid "E-mail: " -msgstr "Adreça electrònica:" +#~ msgid "Comments?" +#~ msgstr "Comentaris?" -#: modules/pref-users.php:201 -#, php-format -msgid "Changed password of user %s." -msgstr "S'ha canviat la contrasenya de l'usuari %s." +#~ msgid "Move between feeds" +#~ msgstr "Mou entre canals" -#: modules/pref-users.php:249 -#, php-format -msgid "Added user %s with password %s" -msgstr "S'ha creat l'usuari %s amb la contrasenya %s" +#~ msgid "Move between articles" +#~ msgstr "Mou entre articles" -#: modules/pref-users.php:256 -#, php-format -msgid "Could not create user %s" -msgstr "No s'ha pogut crear l'usuari %s" +#~ msgid "Active article actions" +#~ msgstr "Accions actives de l'article" -#: modules/pref-users.php:260 -#, php-format -msgid "User %s already exists." -msgstr "L'usuari%s ja existeix." +#, fuzzy +#~ msgid "Dismiss read articles" +#~ msgstr "Amaga els articles llegits." -#: modules/pref-users.php:280 -#, php-format -msgid "" -"Changed password of user %s\n" -"\t\t\t\t\t to %s" -msgstr "" -"La contrasenya de l'usuari %s\n" -"\t\t\t\t\ts'ha canviat a %s" +#~ msgid "Mark articles below/above active one as read" +#~ msgstr "Marca els articles de sobre/sota de l'actiu com a llegits." -#: modules/pref-users.php:284 -#, php-format -msgid "Notifying %s." -msgstr "S'està notificant %s." +#~ msgid "Other actions" +#~ msgstr "Altres accions" -#: modules/pref-users.php:321 -msgid "[tt-rss] Password change notification" -msgstr "[tt-rss] Notificació de canvi de contrasenya" +#~ msgid "Display this help dialog" +#~ msgstr "Mostra aquest quadre d'ajuda" -#: modules/pref-users.php:370 help/4.php:27 -msgid "Create user" -msgstr "Crea un usuari" +#, fuzzy +#~ msgid "Multiple articles actions" +#~ msgstr "Tots els articles" -#: modules/pref-users.php:374 #, fuzzy -msgid "Details" -msgstr "Diàriament" +#~ msgid "Select starred articles" +#~ msgstr "Purga els articles per llegir" -#: modules/pref-users.php:380 -msgid "Reset password" -msgstr "Reinicia la contrasenya" +#~ msgid "Feed actions" +#~ msgstr "Accions dels canals" -#: modules/pref-users.php:426 -msgid "Login" -msgstr "Entra" +#~ msgid "If viewing category, (un)collapse it" +#~ msgstr "Si esteu veient les categories reduir-les/ampliar-les" -#: modules/pref-users.php:427 -msgid "Access Level" -msgstr "Permisos" +#~ msgid "Press any key to close this window." +#~ msgstr "Premeu qualsevol tecla per a tancar aquesta finestra." -#: modules/pref-users.php:429 -msgid "Last login" -msgstr "Última connexió" +#~ msgid "My Feeds" +#~ msgstr "Els meus canals" -#: modules/pref-users.php:487 -msgid "No users defined." -msgstr "No s'han definit els usuaris." +#~ msgid "Other Feeds" +#~ msgstr "Altres canals" -#: modules/pref-users.php:489 -msgid "No matching users found." -msgstr "No s'ha trobat cap usuari que coinicideixi. " +#~ msgid "Panel actions" +#~ msgstr "Quadre d'accions" -#: help/2.php:1 -msgid "Content filtering" -msgstr "Filtratge del contingut" +#~ msgid "Top 25 feeds" +#~ msgstr "Els 25 més llegits" -#: help/2.php:3 -msgid "" -"Tiny Tiny RSS has support for filtering (or processing) articles. Filtering " -"is done once, when new article is imported to the database from the " -"newsfeed, specified field is matched against regular expression and some " -"action is taken. Regular expression matching is case-insensitive." -msgstr "" -"Tiny Tiny RSS pot filtrar articles. El filtratge es realitza quan s'importa " -"el nou article a la base de dades del canal de notícies si coincideix " -"l'expressió regular configurada. Les expressions regulars distingeixen entre " -"les majúscules i les minúscules." +#~ msgid "Edit feed categories" +#~ msgstr "Edita les categories dels canals" -#: help/2.php:5 -msgid "" -"Supported actions are: filter (do not import) article, mark article as read, " -"set starred, assign tag(s), and set score. Filters can be defined globally " -"and for some specific feed." -msgstr "" -"Les accions que funcionen són: filtratge (no importació) d'articles, marcar " -"articles com a llegits, marcar articles, assignació d'etiquetes i puntuar " -"articles. Els filtres es poden definir globalment per alguns canals concrets." +#~ msgid "Focus search (if present)" +#~ msgstr "Concreta la cerca (si n'hi ha)" -#: help/2.php:7 -msgid "" -"Multiple and inverse matching are supported. All matching filters are " -"considered when article is being imported and all actions executed in " -"sequence. Inverse matching reverts matching result, e.g. filter matching " -"XYZZY in title with inverse flag will match all articles, except those " -"containing string XYZZY in title." -msgstr "" +#~ msgid "Note: not all actions may be available, depending on Tiny Tiny RSS configuration and your access level." +#~ msgstr "Nota: L'accés a les accions depèn de la configuració del Tiny Tiny RSS o del nivell d'accés del teu usuari." -#: help/2.php:9 -msgid "See also:" -msgstr "Veieu també:" +#, fuzzy +#~ msgid "Open article in new tab" +#~ msgstr "Obre l'article en una finestra nova" -#: help/3.php:1 help/4.php:1 -msgid "Keyboard Shortcuts" -msgstr "Dreceres de teclat" +#~ msgid "Right-to-left content" +#~ msgstr "Contingut escrit de dreta a esquerra" -#: help/3.php:5 -msgid "Navigation" -msgstr "Navegació" +#, fuzzy +#~ msgid "Cache content locally" +#~ msgstr "Emmagatzema les imatges localment" -#: help/3.php:8 -msgid "Move between feeds" -msgstr "Mou entre canals" +#, fuzzy +#~ msgid "Loading..." +#~ msgstr "S'està carregant la llista de canals..." -#: help/3.php:9 -msgid "Move between articles" -msgstr "Mou entre articles" +#, fuzzy +#~ msgid "View in a tt-rss tab" +#~ msgstr "Obre l'article en una finestra nova" -#: help/3.php:10 -msgid "Show search dialog" -msgstr "Mostra el diàleg de cerca" +#~ msgid "Magpie" +#~ msgstr "Magpie" -#: help/3.php:13 -msgid "Active article actions" -msgstr "Accions actives de l'article" +#~ msgid "SimplePie" +#~ msgstr "SimplePie" -#: help/3.php:16 -msgid "Toggle starred" -msgstr "Commuta els marcats" +#~ msgid "using" +#~ msgstr "s'està utilitzant" -#: help/3.php:17 -msgid "Toggle published" -msgstr "Commuta els publicats" +#~ msgid "match on" +#~ msgstr "coincideix en" -#: help/3.php:18 -msgid "Toggle unread" -msgstr "Commuta els no llegits" +#~ msgid "Title or content" +#~ msgstr "Títol o contingut" -#: help/3.php:19 -msgid "Edit tags" -msgstr "Edita les etiquetes" +#, fuzzy +#~ msgid "Your request could not be completed." +#~ msgstr "La vostra informació de registre és incompleta." -#: help/3.php:20 -msgid "Open article in new window" -msgstr "Obre l'article en una finestra nova" +#, fuzzy +#~ msgid "Can't update this kind of feed." +#~ msgstr "No podeu editar aquest tipus de canal." -#: help/3.php:21 -msgid "Mark articles below/above active one as read" -msgstr "Marca els articles de sobre/sota de l'actiu com a llegits." +#, fuzzy +#~ msgid "Original article" +#~ msgstr "Mostra el contingut original de l'article" -#: help/3.php:22 -msgid "Scroll article content" -msgstr "Desplaça el contingut de l'article" +#, fuzzy +#~ msgid "Update feed" +#~ msgstr "Actualitza tots els canals" -#: help/3.php:26 help/4.php:30 -msgid "Other actions" -msgstr "Altres accions" +#, fuzzy +#~ msgid "With subcategories" +#~ msgstr "Edita les categories" -#: help/3.php:29 -msgid "Select article under mouse cursor" -msgstr "Seleccioneu un article mitjançant el ratolí." +#, fuzzy +#~ msgid "
  • Adding category %s.
  • " +#~ msgstr "S'està afegint la categoria %s." -#: help/3.php:32 -msgid "Collapse sidebar" -msgstr "Redueix la barra lateral" +#, fuzzy +#~ msgid "OK" +#~ msgstr "D'acord!" -#: help/3.php:33 -msgid "Toggle category reordering mode" -msgstr "Canvia al mode de reordenació de categories" +#~ msgid "before" +#~ msgstr "abans" -#: help/3.php:34 help/4.php:34 -msgid "Display this help dialog" -msgstr "Mostra aquest quadre d'ajuda" +#~ msgid "after" +#~ msgstr "després" -#: help/3.php:39 -msgid "Feed actions" -msgstr "Accions dels canals" +#~ msgid "Check it" +#~ msgstr "Revisa-ho" -#: help/3.php:42 -msgid "Update active feed" -msgstr "Actualitza els canals actius" +#, fuzzy +#~ msgid "Apply to category" +#~ msgstr "Posa'l a la categoria:" -#: help/3.php:43 -msgid "Update all feeds" -msgstr "Actualitza tots els canals" +#~ msgid "Category $%s already exists in the database." +#~ msgstr "La categoria %s ja existeix a la base de dades." -#: help/3.php:46 -msgid "Edit feed" -msgstr "Edita el canal" +#~ msgid "No feed categories defined." +#~ msgstr "No s'ha definit cap categoria per als canals." -#: help/3.php:47 -msgid "Sort by name or unread count" -msgstr "Ordena per nom o per número de no llegits." +#, fuzzy +#~ msgid "Remove selected categories" +#~ msgstr "Esteu segur que voleu suprimir les categories seleccionades?" -#: help/3.php:48 -msgid "Hide visible read articles" -msgstr "Amaga els articles llegits." +#, fuzzy +#~ msgid "Twitter" +#~ msgstr "Títol" -#: help/3.php:49 -msgid "Mark feed as read" -msgstr "Marca el canal com a llegit" +#~ msgid "Created filter %s" +#~ msgstr "S'ha creat el filtre %s" -#: help/3.php:50 -#, fuzzy -msgid "Reverse headlines order" -msgstr "Inverteix l'ordre de les capçaleres (les més antigues les primeres)" +#~ msgid "Attachment:" +#~ msgstr "Adjunció:" -#: help/3.php:51 -msgid "Mark all feeds as read" -msgstr "Marca tots els canals com a llegits" +#~ msgid "Subscribing to feed..." +#~ msgstr "S'està subscrivint a un canal..." -#: help/3.php:52 -msgid "If viewing category, (un)collapse it" -msgstr "Si esteu veient les categories reduir-les/ampliar-les" +#, fuzzy +#~ msgid "Filter Test Results" +#~ msgstr "Expression du filtre" -#: help/3.php:55 help/4.php:5 -msgid "Go to..." -msgstr "Vés a..." +#, fuzzy +#~ msgid "Feed Categories" +#~ msgstr "Catégorie :" -#: help/3.php:62 -msgid "Tag cloud" -msgstr "Núvol d'etiquetes" +#~ msgid "When \"Mark as read\" button is clicked in toolbar, automatically open next feed with unread articles." +#~ msgstr "En fer clic al botó « Marca'ls com a llegits Â», obre automàticament el següent canal que contingui articles per llegir." -#: help/3.php:69 help/4.php:41 -msgid "Press any key to close this window." -msgstr "Premeu qualsevol tecla per a tancar aquesta finestra." +#, fuzzy +#~ msgid "Importing using DOMXML." +#~ msgstr "S'està important OPML (s'està utilitzant l'extensió DOMXML)..." -#: help/4.php:9 -msgid "My Feeds" -msgstr "Els meus canals" +#, fuzzy +#~ msgid "Importing using DOMDocument." +#~ msgstr "S'està important el fitxer OPML (s'està utilitzant l'extensió DOMDocument)..." -#: help/4.php:10 -msgid "Other Feeds" -msgstr "Altres canals" +#~ msgid "DOMXML extension is not found. It is required for PHP versions below 5." +#~ msgstr "No s'ha trobat l'extensió DOMXML. Fa falta per a versions de PHP inferiors a la 5." -#: help/4.php:19 -msgid "Panel actions" -msgstr "Quadre d'accions" +#, fuzzy +#~ msgid "Cache images locally (SimplePie only)" +#~ msgstr "Emmagatzema les imatges localment" -#: help/4.php:23 -msgid "Top 25 feeds" -msgstr "Els 25 més llegits" +#, fuzzy +#~ msgid "Publish" +#~ msgstr "Publicats" -#: help/4.php:24 -msgid "Edit feed categories" -msgstr "Edita les categories dels canals" +#~ msgid "Changed password of user %s." +#~ msgstr "S'ha canviat la contrasenya de l'usuari %s." -#: help/4.php:33 -msgid "Focus search (if present)" -msgstr "Concreta la cerca (si n'hi ha)" +#~ msgid "Content filtering" +#~ msgstr "Filtratge del contingut" -#: help/4.php:39 -msgid "" -"Note: not all actions may be available, depending on Tiny Tiny RSS " -"configuration and your access level." -msgstr "" -"Nota: L'accés a les accions depèn de la configuració del Tiny Tiny " -"RSS o del nivell d'accés del teu usuari." +#~ msgid "Tiny Tiny RSS has support for filtering (or processing) articles. Filtering is done once, when new article is imported to the database from the newsfeed, specified field is matched against regular expression and some action is taken. Regular expression matching is case-insensitive." +#~ msgstr "Tiny Tiny RSS pot filtrar articles. El filtratge es realitza quan s'importa el nou article a la base de dades del canal de notícies si coincideix l'expressió regular configurada. Les expressions regulars distingeixen entre les majúscules i les minúscules." + +#~ msgid "Supported actions are: filter (do not import) article, mark article as read, set starred, assign tag(s), and set score. Filters can be defined globally and for some specific feed." +#~ msgstr "Les accions que funcionen són: filtratge (no importació) d'articles, marcar articles com a llegits, marcar articles, assignació d'etiquetes i puntuar articles. Els filtres es poden definir globalment per alguns canals concrets." -#: mobile/functions.php:59 mobile/functions.php:136 mobile/functions.php:172 -#: mobile/functions.php:199 mobile/functions.php:233 mobile/functions.php:356 -#: mobile/prefs.php:25 -msgid "Home" -msgstr "" +#~ msgid "See also:" +#~ msgstr "Veieu també:" -#: mobile/functions.php:392 -msgid "Nothing found (click to reload feed)." -msgstr "" +#, fuzzy +#~ msgid "Remove:" +#~ msgstr "Suprimeix" -#: mobile/prefs.php:30 #, fuzzy -msgid "Enable categories" -msgstr "Utiliser les catégories de flux" +#~ msgid "Assign:" +#~ msgstr "Assigna-l'hi l'etiqueta:" -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "ON" -msgstr "" +#~ msgid "Toggle category reordering mode" +#~ msgstr "Canvia al mode de reordenació de categories" -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "OFF" -msgstr "" +#~ msgid "Update all feeds" +#~ msgstr "Actualitza tots els canals" -#: mobile/prefs.php:35 -#, fuzzy -msgid "Show images in posts" -msgstr "No mostris imatges en els articles" +#~ msgid "Sort by name or unread count" +#~ msgstr "Ordena per nom o per número de no llegits." -#: mobile/prefs.php:40 #, fuzzy -msgid "Hide read feeds" -msgstr "Mostra/amaga els canals llegits" +#~ msgid "feeds" +#~ msgstr "Canals" -#: mobile/prefs.php:45 #, fuzzy -msgid "Sort feeds by unread count" -msgstr "Ordena els canals per articles no llegits" +#~ msgid "headlines" +#~ msgstr "Derniers en-têtes :" -#: functions.js:1315 -msgid "Can't add filter: nothing to match on." -msgstr "No s'ha pogut afegir el filtre: no hi ha coincidències." +#~ msgid "Update post on checksum change" +#~ msgstr "Actualitza una entrada si canvia la suma de verificació." -#: functions.js:1350 -msgid "Can't subscribe: no feed URL given." -msgstr "No s'ha pogut subscriure: no s'ha especificat la URL del canal." +#~ msgid "Use more accessible date/time format for headlines" +#~ msgstr "Utilitzeu un format més accessible per a la data i hora de les capçaleres." -#: functions.js:1354 -msgid "Subscribing to feed..." -msgstr "S'està subscrivint a un canal..." +#~ msgid "Set articles as unread on update" +#~ msgstr "En actualitzar, marca els articles com a no llegits." -#: functions.js:1377 -#, fuzzy -msgid "Subscribed to %s" -msgstr "Subscrit als canals:" +#~ msgid "Importing OPML (using DOMXML extension)..." +#~ msgstr "S'està important OPML (s'està utilitzant l'extensió DOMXML)..." -#: functions.js:1386 -#, fuzzy -msgid "Can't subscribe to the specified URL." -msgstr "No s'ha pogut subscriure: no s'ha especificat la URL del canal." +#~ msgid "Importing OPML (using DOMDocument extension)..." +#~ msgstr "S'està important el fitxer OPML (s'està utilitzant l'extensió DOMDocument)..." + +#~ msgid "Error: can't find body element." +#~ msgstr "Error: no es pot trobar els elements del cos." -#: functions.js:1389 #, fuzzy -msgid "You are already subscribed to this feed." -msgstr "No esteu subscrit a cap canal." +#~ msgid "No profiles selected." +#~ msgstr "No hi ha cap article seleccionat." -#: functions.js:1952 -msgid "New articles available in this feed (click to show)" -msgstr "" +#~ msgid "Unknown error" +#~ msgstr "Error desconegut" -#: functions.js:1989 -#, fuzzy -msgid "Subscribed to %d feed(s)." -msgstr "Subscrit als canals:" +#~ msgid "Could not display feed (query failed). Please check label match syntax or local configuration." +#~ msgstr "No s'ha pogut mostrar el fanal (la consulta ha fallat). Si us plau seleccioneu reviseu que coincideixi la sintaxi o que la configuració local sigui correcta." -#: functions.js:1999 functions.js:2030 prefs.js:557 prefs.js:587 prefs.js:619 -#: prefs.js:908 prefs.js:928 prefs.js:1795 -msgid "No feeds are selected." -msgstr "No heu seleccionat cap canal." +#~ msgid "Publish article with a note" +#~ msgstr "Publica l'article amb una nota" -#: functions.js:2014 -msgid "" -"Remove selected feeds from the archive? Feeds with stored articles will not " -"be removed." -msgstr "" +#, fuzzy +#~ msgid "View article" +#~ msgstr "Filtra l'article" -#: functions.js:2066 #, fuzzy -msgid "Remove stored feed icon?" -msgstr "Elimina les dades emmagatzemades" +#~ msgid "Server error while trying to query feed URLs." +#~ msgstr "S'ha produït un error al carregar més capçaleres." -#: functions.js:2098 #, fuzzy -msgid "Please select an image file to upload." -msgstr "Si us plau, seleccioneu un canal." +#~ msgid "Subscribed to %d feed(s)." +#~ msgstr "Subscrit als canals:" -#: functions.js:2100 -msgid "Upload new icon for this feed?" -msgstr "" +#, fuzzy +#~ msgid "Fatal Exception" +#~ msgstr "Erreur critique" -#: functions.js:2117 -msgid "Please enter label caption:" -msgstr "Si us plau, escriviu un títol per a l'etiqueta:" +#~ msgid "audio/mpeg" +#~ msgstr "àudio/mpeg" -#: functions.js:2122 -msgid "Can't create label: missing caption." -msgstr "No s'ha pogut crear l'etiqueta: Títol desconegut." +#~ msgid "Enable offline reading" +#~ msgstr "Habilita la lectura fora de línia" -#: functions.js:2162 tt-rss.js:568 -msgid "Unsubscribe from %s?" -msgstr "Us voleu donar de baixa de %s ?" +#~ msgid "Synchronize new articles for offline reading using Google Gears." +#~ msgstr "Sincronitzeu els nous articles per a llegir-los en mode fora de línia mitjançant Google Gears." -#: offline.js:636 -msgid "Data for offline browsing has not been downloaded yet." -msgstr "Encara no s'han baixat les dades per a la navegació fora de línia." +#~ msgid "Default article limit" +#~ msgstr "Nombre maximal d'articles par défaut" -#: offline.js:677 -msgid "Synchronizing feeds..." -msgstr "S'estan sincronitzant els canals." +#~ msgid "Default limit for articles to display, any custom number you like (0 - disables)." +#~ msgstr "Nombre maximal d'articles à afficher (0 pour supprimer toute limite)." -#: offline.js:696 -msgid "Synchronizing categories..." -msgstr "S'estan sincronitzant les categories." +#~ msgid "Enable search toolbar" +#~ msgstr "Habilita la barra de cerques" -#: offline.js:714 -msgid "Synchronizing labels..." -msgstr "S'estan sincronitzant les etiquetes." +#~ msgid "Open article links in new browser window" +#~ msgstr "Obre els enllaços dels articles en una nova finestra" -#: offline.js:733 -msgid "Synchronizing articles..." -msgstr "S'estan sincronitzant els articles..." +#~ msgid "Link to user stylesheet to override default style, disabled if empty." +#~ msgstr "Enllaç a la fulla d'estils de l'usuari per a sobreescriure l'estil per defecte, desconnectada si és buida." -#: offline.js:778 -msgid "Synchronizing articles (%d)..." -msgstr "S'estan sincronitzant els articles (%d)..." +#~ msgid "Hide feedlist" +#~ msgstr "Amaga la llista de canals" -#: offline.js:806 -msgid "Last sync: %s" -msgstr "Última sincronització: %s" +#~ msgid "This option hides feedlist and allows it to be toggled on the fly, useful for small screens." +#~ msgstr "Aquesta opció amaga la llista de canals i permet canviar-ho ràpidament, pràctica per a pantalles petites." -#: offline.js:835 -msgid "Last sync: Error receiving data." -msgstr "Última sincronització: s'ha produït un error en rebre les dades." +#~ msgid "Experimental support for virtual feeds based on user crafted SQL queries. This feature is highly experimental and at this point not user friendly. Use with caution." +#~ msgstr "Suport experimental per a canals virtuals basats en demandes SQL personalitzades. Aquesta característica és experimental i, per tant no és fàcil d'utilitzar. Utilitzeu-la amb compte." -#: offline.js:888 -msgid "Synchronizing..." -msgstr "S'està sincronitzant" +#~ msgid "Show additional information in feedlist" +#~ msgstr "Mostra informació addicional a la llista de canals" -#: offline.js:1195 -msgid "Switch Tiny Tiny RSS into offline mode?" -msgstr "Voleu canviar Tiny Tiny RSS al mode fora de línia?" +#~ msgid "Prefer more accurate feedlist counters to UI speed" +#~ msgstr "Prefereix una llista de canals més acurada per augmentar la velocitat de la interfície." -#: offline.js:1223 -msgid "Tiny Tiny RSS will reload. Go online?" -msgstr "Tiny Tiny RSS s'ha carregat de nou. Voleu treballar connectat?" +#~ msgid "Enable inline MP3 player" +#~ msgstr "Habilita el reproductor MP3 en línia." -#: offline.js:1655 -msgid "Last sync: Cancelled." -msgstr "Última sincronització: cancel·lada." +#~ msgid "Enable the Flash-based XSPF Player to play MP3-format podcast enclosures." +#~ msgstr "Habilita el reproductor basat el Flash XSPF per a reproduir els podcast inserits en format MP3." -#: offline.js:1672 -msgid "" -"This will remove all offline data stored by Tiny Tiny RSS on this computer. " -"Continue?" -msgstr "" -"Així eliminareu totes les dades fora de línia emmagatzemades per Tiny Tiny " -"RSS en aquest ordinador. Voleu continuar?" +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Adaptatiu" -#: offline.js:1743 -msgid "" -"Tiny Tiny RSS has trouble accessing its server. Would you like to go offline?" -msgstr "" -"Tiny Tiny RSS no ha pogut accedir al servidor. Voleu que funcioni fora de " -"línia?" +#~ msgid "You are running the latest version of Tiny Tiny RSS. The fact that you are seeing this dialog is probably a bug." +#~ msgstr "Esteu utillitzant l'última versió de Tiny Tiny RSS. Si esteu veient aquest quadre és possible que sigui degut a una panerola." -#: prefs.js:233 -msgid "Error: No feed URL given." -msgstr "Error: No s'ha especificat la URL del canal." +#~ msgid "Feed Browser" +#~ msgstr "Navegador de canals" -#: prefs.js:235 -msgid "Error: Invalid feed URL." -msgstr "Error: URL del canal no vàlida." +#~ msgid "Update Errors" +#~ msgstr "Actualitza els errors" -#: prefs.js:263 -#, fuzzy -msgid "Can't add profile: no name specified." -msgstr "No s'ha pogut afegir la categoria: no s'ha especificat cap nom." +#~ msgid "Show last article times" +#~ msgstr "Mostra l'hora de l'últim article" -#: prefs.js:285 -msgid "Can't add category: no name specified." -msgstr "No s'ha pogut afegir la categoria: no s'ha especificat cap nom." +#~ msgid "Last Article" +#~ msgstr "Últim article" -#: prefs.js:307 -msgid "Please enter login:" -msgstr "Si us plau, introduïu la vostra identificació (login)" +#~ msgid "You don't have any subscribed feeds." +#~ msgstr "No esteu subscrit a cap canal." -#: prefs.js:314 -msgid "Can't create user: no login specified." -msgstr "No s'ha pogut crear l'usuari: no hi ha cap nom especificat." +#~ msgid "No matching feeds found." +#~ msgstr "No s'ha trobat cap canal." -#: prefs.js:438 -msgid "Remove selected labels?" -msgstr "Esteu segur que voleu suprimir les etiquetes seleccionades?" +#~ msgid "Filter Editor" +#~ msgstr "Editor del filtre" -#: prefs.js:454 -msgid "No labels are selected." -msgstr "No heu seleccionat cap etiqueta." +#~ msgid "Field" +#~ msgstr "Camp" -#: prefs.js:468 -msgid "Remove selected users?" -msgstr "Esteu segur que voleu suprimir els usuaris seleccionats?" +#~ msgid "Params" +#~ msgstr "Paràmetres" -#: prefs.js:485 prefs.js:798 prefs.js:819 prefs.js:858 -msgid "No users are selected." -msgstr "No heu seleccionat cap usuari." +#~ msgid "No filters defined." +#~ msgstr "No s'ha definit cap filtre." -#: prefs.js:503 -msgid "Remove selected filters?" -msgstr "Esteu segur que voleu suprimir els filtres seleccionats?" +#~ msgid "Click to change color" +#~ msgstr "Feu clic per canviar el color" -#: prefs.js:519 prefs.js:888 -msgid "No filters are selected." -msgstr "No heu seleccionat cap filtre." +#~ msgid "No labels defined." +#~ msgstr "No s'han definit les etiquetes." -#: prefs.js:538 -msgid "Unsubscribe from selected feeds?" -msgstr "Us voleu donar de baixa dels canals seleccionats?" +#~ msgid "No matching labels found." +#~ msgstr "No s'ha trobat cap etiqueta coincident." -#: prefs.js:572 -msgid "Please select only one feed." -msgstr "Si us plau, seleccioneu només un canal." +#~ msgid "custom color:" +#~ msgstr "color personalitzat:" -#: prefs.js:578 -msgid "Erase all non-starred articles in selected feed?" -msgstr "" -"Esteu segur que voleu suprimir tots els articles que no estan marcats als " -"canals seleccionats?" +#~ msgid "Can't add filter: nothing to match on." +#~ msgstr "No s'ha pogut afegir el filtre: no hi ha coincidències." -#: prefs.js:600 -msgid "How many days of articles to keep (0 - use default)?" -msgstr "Quants dies voleu mantenir els articles (0 - per defecte)?" +#~ msgid "Can't subscribe: no feed URL given." +#~ msgstr "No s'ha pogut subscriure: no s'ha especificat la URL del canal." -#: prefs.js:632 -msgid "" -"Remove selected profiles? Active and default profiles will not be removed." -msgstr "" +#~ msgid "Error: No feed URL given." +#~ msgstr "Error: No s'ha especificat la URL del canal." + +#~ msgid "Error: Invalid feed URL." +#~ msgstr "Error: URL del canal no vàlida." -#: prefs.js:648 #, fuzzy -msgid "No profiles selected." -msgstr "No hi ha cap article seleccionat." +#~ msgid "Can't add profile: no name specified." +#~ msgstr "No s'ha pogut afegir la categoria: no s'ha especificat cap nom." -#: prefs.js:660 -msgid "Remove selected categories?" -msgstr "Esteu segur que voleu suprimir les categories seleccionades?" +#~ msgid "Can't add category: no name specified." +#~ msgstr "No s'ha pogut afegir la categoria: no s'ha especificat cap nom." -#: prefs.js:678 -msgid "No categories are selected." -msgstr "No heu seleccionat cap categoria." +#~ msgid "Save current configuration?" +#~ msgstr "Voleu desar la configuració actual?" -#: prefs.js:745 -msgid "Login field cannot be blank." -msgstr "El nom del camp no es pot deixar en blanc." +#~ msgid "Please enter new label foreground color:" +#~ msgstr "Si us plau, escriviu un nou color pel primer pla de l'etiqueta:" -#: prefs.js:803 prefs.js:824 prefs.js:863 -msgid "Please select only one user." -msgstr "Si us plau, seleccioneu només un usuari." +#~ msgid "Please enter new label background color:" +#~ msgstr "Si us plau, escriviu el nou color de fons de l'etiqueta:" -#: prefs.js:828 -msgid "Reset password of selected user?" -msgstr "Voleu reiniciar la contrasenya de l'usuari seleccionat?" +#~ msgid "Saved filter %s" +#~ msgstr "S'ha desat el filtre %s" -#: prefs.js:893 -msgid "Please select only one filter." -msgstr "Si us plau, seleccioneu només un filtre." +#~ msgid "Tags" +#~ msgstr "Etiqueta" -#: prefs.js:969 -msgid "No OPML file to upload." -msgstr "No hi ha cap fitxer OPML per a carregar." +#~ msgid "Show article summary in new window" +#~ msgstr "Obre els enllaços de l'article en una nova finestra" -#: prefs.js:1229 -msgid "Reset to defaults?" -msgstr "Esteu segur que voleu establir els valors per defecte?" +#~ msgid "toggle unread" +#~ msgstr "commuta els no llegits" -#: prefs.js:1641 -msgid "Replace current publishing address with a new one?" -msgstr "Voleu canviar l'adreça de publicació per una de nova?" +#~ msgid "(remove)" +#~ msgstr "Elimina" -#: prefs.js:1678 -msgid "Save current configuration?" -msgstr "Voleu desar la configuració actual?" +#~ msgid "Offline reading" +#~ msgstr "Lectura fora de línia" -#: prefs.js:1779 -msgid "Rescore articles in selected feeds?" -msgstr "" -"Esteu segur que voleu canviar la puntuació dels articles en les etiquetes " -"personalitzades?" +#~ msgid "Cancel synchronization" +#~ msgstr "Cancel·la la sincronització" -#: prefs.js:1802 -msgid "Rescore all articles? This operation may take a lot of time." -msgstr "" -"Esteu segur que voleu recuperar tots els articles? Aquesta operació pot " -"durar molt temps." +#~ msgid "Synchronize" +#~ msgstr "Sincronització" -#: prefs.js:1821 -msgid "Remove filter %s?" -msgstr "Esteu segur que voleu suprimir el filtre %s?" +#~ msgid "Remove stored data" +#~ msgstr "Elimina les dades emmagatzemades" -#: prefs.js:1882 -msgid "Save changes to selected feeds?" -msgstr "Esteu segur que voleu desar els canvis als canals seleccionats?" +#~ msgid "Go offline" +#~ msgstr "Desconnecta't" -#: prefs.js:1962 -msgid "Reset label colors to default?" -msgstr "" -"Esteu segur que voleu canviar els colors de les etiquetes pels colors per " -"defecte?" +#~ msgid "Go online" +#~ msgstr "Posa't en línia" + +#~ msgid "Reset UI layout" +#~ msgstr "Reinicia la capa de la interfície" -#: prefs.js:1987 -msgid "Please enter new label foreground color:" -msgstr "Si us plau, escriviu un nou color pel primer pla de l'etiqueta:" +#~ msgid "Drag me to resize panels" +#~ msgstr "Arrossega'm per a canviar la mida dels quadres." -#: prefs.js:1989 -msgid "Please enter new label background color:" -msgstr "Si us plau, escriviu el nou color de fons de l'etiqueta:" +#~ msgid "Showing most popular tags " +#~ msgstr "Mostra les etiquetes més populars" -#: prefs.js:2121 #, fuzzy -msgid "Activate selected profile?" -msgstr "Esteu segur que voleu suprimir els filtres seleccionats?" +#~ msgid "more tags" +#~ msgstr "sense etiqueta" -#: prefs.js:2137 -msgid "Please choose a profile to activate." -msgstr "" +#~ msgid "Link to feed:" +#~ msgstr "Enllaç al canal:" -#: tt-rss.js:74 -msgid "display feeds" -msgstr "mostra els canals" +#~ msgid "Not linked" +#~ msgstr "Sense cap enllaç" -#: tt-rss.js:251 -msgid "Mark all articles as read?" -msgstr "Esteu segur que voleu marcar tots els articles com a llegits?" +#~ msgid "(linked to %s)" +#~ msgstr "(enllaçat a %s)" -#: tt-rss.js:557 -msgid "You can't unsubscribe from the category." -msgstr "No us podeu donar de baixa de la categoria." +#~ msgid "E-mail has been changed." +#~ msgstr "S'ha canviat l'adreça electrònica." -#: tt-rss.js:562 tt-rss.js:755 tt-rss.js:930 -msgid "Please select some feed first." -msgstr "Primerament heu de seleccionar un canal." +#~ msgid "Change e-mail" +#~ msgstr "Canvieu l'adreça electrònica" -#: tt-rss.js:618 -msgid "Reset category order?" -msgstr "Esteu segur que voleu eliminar l'ordre de les categories?" +#~ msgid "Please wait..." +#~ msgstr "Si us plau, espereu..." -#: tt-rss.js:727 tt-rss.js:740 -msgid "Mark all articles in %s as read?" -msgstr "Esteu segur que voleu marcar tots els articles de %s com a llegits?" +#~ msgid "Data for offline browsing has not been downloaded yet." +#~ msgstr "Encara no s'han baixat les dades per a la navegació fora de línia." -#: tt-rss.js:760 -msgid "You can't edit this kind of feed." -msgstr "No podeu editar aquest tipus de canal." +#~ msgid "Synchronizing feeds..." +#~ msgstr "S'estan sincronitzant els canals." -#: tt-rss.js:925 -msgid "You can't rescore this kind of feed." -msgstr "No podeu canviar la puntuació d'aquest tipus de canal." +#~ msgid "Synchronizing categories..." +#~ msgstr "S'estan sincronitzant les categories." -#: tt-rss.js:935 -msgid "Rescore articles in %s?" -msgstr "Esteu segur que voleu canviar la puntuació dels articles a %s?" +#~ msgid "Synchronizing labels..." +#~ msgstr "S'estan sincronitzant les etiquetes." -#: viewfeed.js:528 viewfeed.js:592 -msgid "Star article" -msgstr "Marca l'article" +#~ msgid "Synchronizing articles..." +#~ msgstr "S'estan sincronitzant els articles..." -#: viewfeed.js:577 -msgid "Unstar article" -msgstr "Treu la marca de l'article" +#~ msgid "Synchronizing articles (%d)..." +#~ msgstr "S'estan sincronitzant els articles (%d)..." -#: viewfeed.js:585 viewfeed.js:652 -msgid "Please wait..." -msgstr "Si us plau, espereu..." +#~ msgid "Last sync: %s" +#~ msgstr "Última sincronització: %s" -#: viewfeed.js:648 -msgid "Unpublish article" -msgstr "Deixa de publicar l'article" +#~ msgid "Last sync: Error receiving data." +#~ msgstr "Última sincronització: s'ha produït un error en rebre les dades." -#: viewfeed.js:935 viewfeed.js:971 viewfeed.js:1012 viewfeed.js:1097 -#: viewfeed.js:1141 viewfeed.js:1288 viewfeed.js:1338 viewfeed.js:1394 -msgid "No articles are selected." -msgstr "No hi ha cap article seleccionat." +#~ msgid "Synchronizing..." +#~ msgstr "S'està sincronitzant" -#: viewfeed.js:1256 -msgid "Mark all visible articles in %s as read?" -msgstr "" -"Esteu segur que voleu marcar tots els articles visibles de %s com a llegits ?" +#~ msgid "Switch Tiny Tiny RSS into offline mode?" +#~ msgstr "Voleu canviar Tiny Tiny RSS al mode fora de línia?" -#: viewfeed.js:1298 -#, fuzzy -msgid "Delete %d selected articles in %s?" -msgstr "" -"Esteu segur que voleu marcar els %d articles seleccionats de %s com a " -"llegits?" +#~ msgid "Tiny Tiny RSS will reload. Go online?" +#~ msgstr "Tiny Tiny RSS s'ha carregat de nou. Voleu treballar connectat?" -#: viewfeed.js:1300 -#, fuzzy -msgid "Delete %d selected articles?" -msgstr "" -"Esteu segur que voleu eliminar els articles seleccionats de l'etiqueta?" +#~ msgid "Last sync: Cancelled." +#~ msgstr "Última sincronització: cancel·lada." -#: viewfeed.js:1348 -#, fuzzy -msgid "Archive %d selected articles in %s?" -msgstr "" -"Esteu segur que voleu marcar els %d articles seleccionats de %s com a " -"llegits?" +#~ msgid "This will remove all offline data stored by Tiny Tiny RSS on this computer. Continue?" +#~ msgstr "Així eliminareu totes les dades fora de línia emmagatzemades per Tiny Tiny RSS en aquest ordinador. Voleu continuar?" -#: viewfeed.js:1351 -msgid "Move %d archived articles back?" -msgstr "" +#~ msgid "Tiny Tiny RSS has trouble accessing its server. Would you like to go offline?" +#~ msgstr "Tiny Tiny RSS no ha pogut accedir al servidor. Voleu que funcioni fora de línia?" -#: viewfeed.js:1401 -msgid "Mark %d selected articles in %s as read?" -msgstr "" -"Esteu segur que voleu marcar els %d articles seleccionats de %s com a " -"llegits?" +#~ msgid "Reset category order?" +#~ msgstr "Esteu segur que voleu eliminar l'ordre de les categories?" -#: viewfeed.js:1977 -msgid "No article is selected." -msgstr "No hi ha cap article seleccionat." +#~ msgid "No feeds to display." +#~ msgstr "No hi ha canals per a mostrar." -#: viewfeed.js:2018 -msgid "No articles found to mark" -msgstr "No s'han trobat articles per a marcar." +#~ msgid "Published Articles" +#~ msgstr "Articles publiés" -#: viewfeed.js:2020 -msgid "Mark %d article(s) as read?" -msgstr "Esteu segur que voleu marcar %d article(s) com a llegit(s) ?" +#, fuzzy +#~ msgid "Your Published articles feed URL is:" +#~ msgstr "Enllaç als articles publicats del canal." -#: viewfeed.js:2255 -msgid "Please enter a note for this article:" -msgstr "Si us plau, escriviu una nota per aquest article:" +#~ msgid "Replace current publishing address with a new one?" +#~ msgstr "Voleu canviar l'adreça de publicació per una de nova?" -#~ msgid "Adding feed..." -#~ msgstr "S'està afegint el canal..." +#~ msgid "Limit bandwidth usage" +#~ msgstr "Limita l'ús de l'ample de banda." -#~ msgid "Adding feed category..." -#~ msgstr "S'està afegint la categoria..." +#~ msgid "Remove selected users?" +#~ msgstr "Esteu segur que voleu suprimir els usuaris seleccionats?" -#, fuzzy -#~ msgid "Adding profile..." +#~ msgid "Adding feed..." #~ msgstr "S'està afegint el canal..." -#~ msgid "Adding user..." -#~ msgstr "S'està afegint l'usuari" - #~ msgid "Assign score to article:" #~ msgstr "Puntua l'article:" @@ -2619,15 +4796,6 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgid "Changing password..." #~ msgstr "Canvia la contrasenya" -#~ msgid "Clearing feed..." -#~ msgstr "S'està netejant el canal..." - -#~ msgid "Clearing selected feed..." -#~ msgstr "S'està netejant el canal seleccionat..." - -#~ msgid "comments" -#~ msgstr "comentaris" - #~ msgid "Could not change feed URL." #~ msgstr "No s'ha pogut canviar la URL del canal." @@ -2640,85 +4808,29 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgid "Could not update headlines (missing XML object)" #~ msgstr "No s'ha pogut actualitzar les capçaleres (manca un objecte XML)" -#~ msgid "Entire feed" -#~ msgstr "Tots els canals" - -#~ msgid "Error while trying to load more headlines" -#~ msgstr "S'ha produït un error al carregar més capçaleres." - #~ msgid "Failed to load article in new window" #~ msgstr "No s'ha pogut obrir l'article en una nova finestra" #~ msgid "Failed to open window for the article" #~ msgstr "No s'ha pogut obrir la finestra per a l'article" -#, fuzzy -#~ msgid "Feed icon removed." -#~ msgstr "No s'ha trobat el canal." - -#~ msgid "Loading feed list..." -#~ msgstr "S'està carregant la llista de canals..." - #~ msgid "Local data removed." #~ msgstr "S'han eliminat les dades locals." #~ msgid "Mark as read:" #~ msgstr "Marca com a llegits" -#~ msgid "Marking all feeds as read..." -#~ msgstr "S'estan marcant tots els canals com a llegits..." - #~ msgid "Please wait until operation finishes." #~ msgstr "Espereu a que finalitzi l'operació actual." -#~ msgid "Purging selected feed..." -#~ msgstr "S'estan purgant els canals seleccionats..." - #~ msgid "Remove selected articles from label?" -#~ msgstr "" -#~ "Esteu segur que voleu eliminar els articles seleccionats de l'etiqueta?" - -#~ msgid "Removing feed..." -#~ msgstr "S'està eliminant el canal..." - -#~ msgid "Removing filter..." -#~ msgstr "S'està eliminant el filtre." +#~ msgstr "Esteu segur que voleu eliminar els articles seleccionats de l'etiqueta?" #~ msgid "Removing offline data..." #~ msgstr "S'estan eliminant les dades fora de línia." -#~ msgid "Removing selected categories..." -#~ msgstr "S'estan seleccionant les categories seleccionades..." - -#~ msgid "Removing selected filters..." -#~ msgstr "S'estan suprimint els filtres seleccionats..." - -#~ msgid "Removing selected labels..." -#~ msgstr "S'estan seleccionat les etiquetes seleccionades..." - -#, fuzzy -#~ msgid "Removing selected profiles..." -#~ msgstr "S'estan suprimint els filtres seleccionats..." - -#~ msgid "Removing selected users..." -#~ msgstr "S'estan suprimint els usuaris seleccionats..." - #~ msgid "Rescore last 100 articles in selected feeds?" -#~ msgstr "" -#~ "Esteu segur que voleu canviar la puntuació dels últims 100 articles en " -#~ "els canals seleccionats?" - -#~ msgid "Rescoring articles..." -#~ msgstr "S'estan canviant la puntuació dels articles" - -#~ msgid "Resetting password for selected user..." -#~ msgstr "S'està reiniciant la contrasenya de l'usuari seleccionat..." - -#~ msgid "Saving article tags..." -#~ msgstr "S'estan desant les etiquetes de l'article" - -#~ msgid "Saving feed..." -#~ msgstr "S'està desant el canal..." +#~ msgstr "Esteu segur que voleu canviar la puntuació dels últims 100 articles en els canals seleccionats?" #~ msgid "Saving feeds..." #~ msgstr "S'estan desant els canals..." @@ -2726,40 +4838,17 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgid "Saving filter..." #~ msgstr "S'està desant el filtre..." -#~ msgid "Saving user..." -#~ msgstr "S'està desant l'usuari" - #~ msgid "Selection" #~ msgstr "Selecció" #~ msgid "Tiny Tiny RSS is in offline mode." #~ msgstr "Tiny Tiny RSS està treballant en mode fora de línia." -#~ msgid "Trying to change e-mail..." -#~ msgstr "S'està intentant canviar l'adreça electrònica..." - -#, fuzzy -#~ msgid "Upload failed." -#~ msgstr "Articles mémorisés" - -#~ msgid "" -#~ "You have to synchronize some articles before going into offline mode." -#~ msgstr "" -#~ "Heu de sincronitzar alguns articles abans de poder treballar fora de " -#~ "línia." - -#~ msgid "" -#~ "You won't be able to access offline version of Tiny Tiny RSS until you " -#~ "switch it into offline mode again. Go online?" -#~ msgstr "" -#~ "No podeu accedir a la versió fora de línia de Tiny Tiny RSS fins que no " -#~ "canvieu, de nou, a mode fora de línia. Voleu connectar-vos?" - -#~ msgid "Display original article content" -#~ msgstr "Mostra el contingut original de l'article" +#~ msgid "You have to synchronize some articles before going into offline mode." +#~ msgstr "Heu de sincronitzar alguns articles abans de poder treballar fora de línia." -#~ msgid "All feeds updated." -#~ msgstr "S'ha acabat l'actualització dels canals." +#~ msgid "You won't be able to access offline version of Tiny Tiny RSS until you switch it into offline mode again. Go online?" +#~ msgstr "No podeu accedir a la versió fora de línia de Tiny Tiny RSS fins que no canvieu, de nou, a mode fora de línia. Voleu connectar-vos?" #~ msgid "Can't open article: received invalid XML" #~ msgstr "No es pot obrir l'article: l'XML rebut no és vàlid" @@ -2768,45 +4857,23 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgstr "S'està canviant la categoria dels canals seleccionats..." #~ msgid "Erase all non-starred articles in %s?" -#~ msgstr "" -#~ "Segur que voleu eliminar tots els articles que no estan marcats a %s ?" - -#~ msgid "Published feed URL changed." -#~ msgstr "L'adreça URL del canal ha canviat." - -#~ msgid "Trying to change address..." -#~ msgstr "S'està intentant canviar l'adreça..." +#~ msgstr "Segur que voleu eliminar tots els articles que no estan marcats a %s ?" #~ msgid "Trying to change password..." #~ msgstr "S'està intentant canviar la contrasenya..." -#~ msgid "Unsubscribing from selected feeds..." -#~ msgstr "S'estan cancel·lant les subscripcions als canals seleccionats." - #~ msgid "You can't clear this type of feed." #~ msgstr "No podeu purgar aquest tipus de canal." -#~ msgid "Clear articles" -#~ msgstr "Buida els articles" - #~ msgid "Adding category %s...
    " #~ msgstr "S'està afegint la categoria %s...
    " #~ msgid "Done." #~ msgstr "Fet." -#~ msgid "Visit official site" -#~ msgstr "Visiteu el web oficial" - -#~ msgid "Close" -#~ msgstr "Tanca" - #~ msgid "The configuration was reset to defaults." #~ msgstr "La configuració s'ha reiniciat als valors per defecte." -#~ msgid "Themes" -#~ msgstr "Interfícies" - #~ msgid "Change theme" #~ msgstr "Canvia la interfície" @@ -2816,11 +4883,7 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #, fuzzy #~ msgid "Remove selected feeds from archive?" -#~ msgstr "" -#~ "Esteu segur que voleu eliminar els articles seleccionats de l'etiqueta?" - -#~ msgid "Search results" -#~ msgstr "Resultats de la cerca" +#~ msgstr "Esteu segur que voleu eliminar els articles seleccionats de l'etiqueta?" #~ msgid "Searched for" #~ msgstr "Cercat per" @@ -2843,9 +4906,6 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgid "Feed browser is administratively disabled." #~ msgstr "El navegador de canals ha estat desactivat per l'administrador." -#~ msgid "Top" -#~ msgstr "Dalt" - #~ msgid "Show" #~ msgstr "Mostra" @@ -2853,8 +4913,7 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgstr "Amaga a \"Atres canals\"" #~ msgid "Unable to delete non empty feed categories." -#~ msgstr "" -#~ "No és possible eliminar categories de canals que no estiguin buides." +#~ msgstr "No és possible eliminar categories de canals que no estiguin buides." #~ msgid "(Hidden)" #~ msgstr "(Ocult)" @@ -2862,33 +4921,18 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgid "Recategorize" #~ msgstr "Canvia de categoria" -#~ msgid "Other:" -#~ msgstr "Altres:" - #~ msgid "Generate another link" #~ msgstr "Crea un altre enllaç" -#~ msgid "View feeds" -#~ msgstr "Visualitza els canals" - -#~ msgid "View tags" -#~ msgstr "Visualitza les etiquetes" - #~ msgid "Back" #~ msgstr "Enrera" #~ msgid "View:" #~ msgstr "Visualització:" -#~ msgid "Refresh" -#~ msgstr "Actualitza" - #~ msgid "Page" #~ msgstr "Pàgina" -#~ msgid "Back to feedlist" -#~ msgstr "Torna a la llista de canals." - #~ msgid "Tags:" #~ msgstr "Etiquetes" @@ -2898,9 +4942,6 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgid "Where:" #~ msgstr "A:" -#~ msgid "Match on:" -#~ msgstr "Basat en:" - #~ msgid "Internal error: Function not implemented" #~ msgstr "Error intern; Funció no implementada" @@ -2920,18 +4961,12 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgid "  Keyboard shortcuts" #~ msgstr "  Purger les articles" -#~ msgid "description" -#~ msgstr "description" - #~ msgid "Can't add user: no login specified." #~ msgstr "Impossible d'ajouter un utilisateur : aucun nom fourni." #~ msgid "Can't create label: missing SQL expression." #~ msgstr "Impossible de créer un intitulé : expression SQL manquante." -#~ msgid "Loading help..." -#~ msgstr "Ouverture de l'aide..." - #~ msgid "Saving label..." #~ msgstr "Enregistrement de l'intitulé..." @@ -2944,10 +4979,6 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgid "Address changed." #~ msgstr "Adresse modifiée." -#, fuzzy -#~ msgid "Rescoring feeds..." -#~ msgstr "Suppression d'un flux..." - #, fuzzy #~ msgid "Restart in offline mode" #~ msgstr "Échec du test de configuration" @@ -2955,26 +4986,17 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgid "MySQL Charset Updater" #~ msgstr "Outil de mise à jour du jeu de caractères MySQL" -#~ msgid "" -#~ "This script is for Tiny Tiny RSS installations with MySQL backend only." -#~ msgstr "" -#~ "Ce script n'est utilisable que pour une installation de Tiny Tiny RSS " -#~ "avec un moteur MySQL." +#~ msgid "This script is for Tiny Tiny RSS installations with MySQL backend only." +#~ msgstr "Ce script n'est utilisable que pour une installation de Tiny Tiny RSS avec un moteur MySQL." #~ msgid "" #~ "This script will convert your Tiny Tiny RSS database to UTF-8. \n" -#~ "\t\t\tDepending on current database charset you may experience data " -#~ "corruption (lost accent characters, etc.). \n" -#~ "\t\t\tAfter update, you'll have to set MYSQL_CHARSET option in " -#~ "config.php to 'utf8'." +#~ "\t\t\tDepending on current database charset you may experience data corruption (lost accent characters, etc.). \n" +#~ "\t\t\tAfter update, you'll have to set MYSQL_CHARSET option in config.php to 'utf8'." #~ msgstr "" -#~ "Ce script va modifier votre base de données Tiny Tiny RSS pour qu'elle " -#~ "utilise le jeu de caractères UTF-8. \n" -#~ "\t\t\tSelon le jeu de caractères actuellement utilisé, cela peut " -#~ "entraîner une corruption des données (caractères accentués perdus, " -#~ "etc). \n" -#~ "\t\t\tAprès la mise à jour, vous devrez donner à l'option " -#~ "MYSQL_CHARSET la valeur 'utf8' dans le fichier config.php." +#~ "Ce script va modifier votre base de données Tiny Tiny RSS pour qu'elle utilise le jeu de caractères UTF-8. \n" +#~ "\t\t\tSelon le jeu de caractères actuellement utilisé, cela peut entraîner une corruption des données (caractères accentués perdus, etc). \n" +#~ "\t\t\tAprès la mise à jour, vous devrez donner à l'option MYSQL_CHARSET la valeur 'utf8' dans le fichier config.php." #~ msgid "Converting database..." #~ msgstr "Conversion de la base de données..." @@ -2984,14 +5006,10 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ "\t\tconfig.php-dist to config.php and edit it.\n" #~ msgstr "" #~ "Erreur critique : vous avez oublié de copier \n" -#~ "\t\tconfig.php-dist sous le nom config.php et de le " -#~ "modifier.\n" +#~ "\t\tconfig.php-dist sous le nom config.php et de le modifier.\n" -#~ msgid "" -#~ "config: your config file version is incorrect. See config.php-dist.\n" -#~ msgstr "" -#~ "config : la version de votre fichier de configuration n'est pas " -#~ "valable. Reportez-vous au fichier config.php-dist.\n" +#~ msgid "config: your config file version is incorrect. See config.php-dist.\n" +#~ msgstr "config : la version de votre fichier de configuration n'est pas valable. Reportez-vous au fichier config.php-dist.\n" #~ msgid "" #~ "Fatal error: RSS_BACKEND_TYPE is deprecated. Please remove this\n" @@ -3002,99 +5020,63 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgid "" #~ "Fatal Error: XML Import/Export tools (xml-export.php\n" -#~ "\t\tand xml-import.php) could be used maliciously. Please remove " -#~ "them \n" +#~ "\t\tand xml-import.php) could be used maliciously. Please remove them \n" #~ "\t\tfrom your TT-RSS instance.\n" #~ msgstr "" -#~ "Erreur critique : les outils XML Import/Export (xml-export." -#~ "php\n" -#~ "\t\tet xml-import.php) peuvent être exploités de manière " -#~ "dangereuse.\n" +#~ "Erreur critique : les outils XML Import/Export (xml-export.php\n" +#~ "\t\tet xml-import.php) peuvent être exploités de manière dangereuse.\n" #~ "\t\tVeuillez les supprimer de votre installation de Tiny Tiny RSS.\n" #~ msgid "" #~ "Fatal Error: Please set DAEMON_UPDATE_LOGIN_LIMIT\n" #~ "\t\t\tto 0 in single user mode.\n" #~ msgstr "" -#~ "Erreur critique : veuillez mettre la valeur de " -#~ "DAEMON_UPDATE_LOGIN_LIMIT\n" +#~ "Erreur critique : veuillez mettre la valeur de DAEMON_UPDATE_LOGIN_LIMIT\n" #~ "\t\t\tà zéro en mode mono-utilisateur.\n" #~ msgid "" #~ "Fatal Error: You have enabled USE_CURL_FOR_ICONS, but your PHP \n" #~ "\t\t\tdoesn't seem to support CURL functions." #~ msgstr "" -#~ "Erreur critique : vous avez activé USE_CURL_FOR_ICONS, mais " -#~ "votre \n" +#~ "Erreur critique : vous avez activé USE_CURL_FOR_ICONS, mais votre \n" #~ "\t\t\tvotre installation de PHP ne semble pas gérer les fonctions CURL." #~ msgid "config: SESSION_EXPIRE_TIME is undefined" #~ msgstr "config : SESSION_EXPIRE_TIME n'est pas définie" #~ msgid "config: SESSION_EXPIRE_TIME is too low (less than 60)" -#~ msgstr "" -#~ "config : SESSION_EXPIRE_TIME a une valeur trop basse (inférieure à " -#~ "60)" +#~ msgstr "config : SESSION_EXPIRE_TIME a une valeur trop basse (inférieure à 60)" #~ msgid "config: SESSION_EXPIRE_TIME should be greater or equal to" -#~ msgstr "" -#~ "config : la valeur de SESSION_EXPIRE_TIME devrait être supérieure ou " -#~ "égale à" +#~ msgstr "config : la valeur de SESSION_EXPIRE_TIME devrait être supérieure ou égale à" -#~ msgid "" -#~ "config: DATABASE_BACKED_SESSIONS is incompatible with SINGLE_USER_MODE" -#~ msgstr "" -#~ "config : DATABASE-BACKED_SESSIONS est incompatible avec " -#~ "SINGLE_USER_MODE" +#~ msgid "config: DATABASE_BACKED_SESSIONS is incompatible with SINGLE_USER_MODE" +#~ msgstr "config : DATABASE-BACKED_SESSIONS est incompatible avec SINGLE_USER_MODE" #~ msgid "config: DATABASE_BACKED_SESSIONS are currently broken with MySQL" -#~ msgstr "" -#~ "config : DATABASE_BACKED_SESSIONS ne fonctionne pas avec MySQL pour " -#~ "le moment" +#~ msgstr "config : DATABASE_BACKED_SESSIONS ne fonctionne pas avec MySQL pour le moment" -#~ msgid "" -#~ "config: MAIL_FROM has been split into DIGEST_FROM_NAME and " -#~ "DIGEST_FROM_ADDRESS" -#~ msgstr "" -#~ "config: MAIL_FROM a été coupée en deux options DIGEST_FROM_NAME et " -#~ "DIGEST_FROM_ADDRESS" +#~ msgid "config: MAIL_FROM has been split into DIGEST_FROM_NAME and DIGEST_FROM_ADDRESS" +#~ msgstr "config: MAIL_FROM a été coupée en deux options DIGEST_FROM_NAME et DIGEST_FROM_ADDRESS" #~ msgid "config: option COUNTERS_MAX_AGE expected, but not defined" -#~ msgstr "" -#~ "config: l'option COUNTERS_MAX_AGE est attendue mais n'a pas été définie" +#~ msgstr "config: l'option COUNTERS_MAX_AGE est attendue mais n'a pas été définie" -#~ msgid "" -#~ "config: option DAEMON_REFRESH_ONLY is obsolete. Please remove this option " -#~ "and read about other ways to update feeds on the wiki." -#~ msgstr "" -#~ "config: l'option DAEMON_REFRESH_ONLY est obsolète. Veuillez la supprimer " -#~ "et vous renseigner sur d'autres moyens de mettre à jour vos flux sur le " -#~ "wiki." +#~ msgid "config: option DAEMON_REFRESH_ONLY is obsolete. Please remove this option and read about other ways to update feeds on the wiki." +#~ msgstr "config: l'option DAEMON_REFRESH_ONLY est obsolète. Veuillez la supprimer et vous renseigner sur d'autres moyens de mettre à jour vos flux sur le wiki." #~ msgid "Unknown Error" #~ msgstr "Erreur inconnue" -#~ msgid "Feed information:" -#~ msgstr "Information sur le flux :" - #, fuzzy #~ msgid "Site:" #~ msgstr "Titre :" -#, fuzzy -#~ msgid "Last updated:" -#~ msgstr "Dernière mise à jour :" - -#~ msgid "Last headlines:" -#~ msgstr "Derniers en-têtes :" - #~ msgid "Other feeds: Top 25" #~ msgstr "Autres flux : Top 25" #~ msgid "Showing top 25 registered feeds, sorted by popularity:" -#~ msgstr "" -#~ "Affichage des 25 meilleurs flux enregistrés, classés par popularité :" +#~ msgstr "Affichage des 25 meilleurs flux enregistrés, classés par popularité :" #~ msgid "Top 25" #~ msgstr "Top 25" @@ -3102,9 +5084,6 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgid "Content Filtering" #~ msgstr "Filtrage de contenu" -#~ msgid "Label Editor" -#~ msgstr "Éditeur d'intitulé" - #~ msgid "User Manager" #~ msgstr "Gestionnaire d'utilisateurs" @@ -3144,22 +5123,13 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgid "  Reset category order" #~ msgstr "  S'inscrire à ce flux" -#~ msgid "" -#~ "This panel shows feeds subscribed by other users of this system, just in " -#~ "case you are interested in them too." -#~ msgstr "" -#~ "Ce panneau affiche les flux auxquels d'autres utilisateurs du même " -#~ "système se sont inscrits, au cas où cela présenterait un intérêt pour " -#~ "vous." +#~ msgid "This panel shows feeds subscribed by other users of this system, just in case you are interested in them too." +#~ msgstr "Ce panneau affiche les flux auxquels d'autres utilisateurs du même système se sont inscrits, au cas où cela présenterait un intérêt pour vous." #, fuzzy #~ msgid "Match " #~ msgstr "Correspondance" -#, fuzzy -#~ msgid "Unread articles" -#~ msgstr "Articles mémorisés" - #, fuzzy #~ msgid "Title contains" #~ msgstr "Titre ou contenu" @@ -3168,9 +5138,6 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgid "Content contains" #~ msgstr "Filtrage de contenu" -#~ msgid "Caption" -#~ msgstr "Descriptif" - #, fuzzy #~ msgid "Match SQL" #~ msgstr "Correspondance" @@ -3181,10 +5148,6 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgid "SQL Expression" #~ msgstr "Expression SQL" -#, fuzzy -#~ msgid "[No caption]" -#~ msgstr "Descriptif" - #, fuzzy #~ msgid "Labels and SQL Expressions" #~ msgstr "Expression SQL" @@ -3193,10 +5156,6 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgid "Match all unread articles:" #~ msgstr "Articles mémorisés" -#, fuzzy -#~ msgid "Search to label" -#~ msgstr "Convertir en intitulé" - #~ msgid "Convert to label" #~ msgstr "Convertir en intitulé" @@ -3204,43 +5163,22 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgid "Create Label" #~ msgstr "Créer un intitulé" -#~ msgid "Test" -#~ msgstr "Tester" - #, fuzzy #~ msgid "Perform action" #~ msgstr "Exécuter les mises à jour" -#~ msgid "Filter expression" -#~ msgstr "Expression du filtre" - -#~ msgid "Enable icons in feedlist" -#~ msgstr "Afficher les icônes dans la liste des flux" - -#~ msgid "Category:" -#~ msgstr "Catégorie :" - #~ msgid "Caption:" #~ msgstr "Descriptif :" #~ msgid "SQL Expression:" #~ msgstr "Expression SQL :" -#~ msgid "Match:" -#~ msgstr "Correspondance :" - -#~ msgid "Feed:" -#~ msgstr "Flux :" - #~ msgid "Action:" #~ msgstr "Action :" #~ msgid "Params:" #~ msgstr "Paramètres :" -#~ msgid "Title:" -#~ msgstr "Titre :" - #, fuzzy #~ msgid "Update using:" #~ msgstr "Mettre à jour" @@ -3248,10 +5186,6 @@ msgstr "Si us plau, escriviu una nota per aquest article:" #~ msgid "Change password:" #~ msgstr "Modifier le mot de passe :" -#, fuzzy -#~ msgid "Update errors" -#~ msgstr "Erreurs de mise à jour" - #~ msgid "This page" #~ msgstr "Cette page" diff --git a/locale/cs_CZ/LC_MESSAGES/messages.mo b/locale/cs_CZ/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000..c5f846d36e Binary files /dev/null and b/locale/cs_CZ/LC_MESSAGES/messages.mo differ diff --git a/locale/cs_CZ/LC_MESSAGES/messages.po b/locale/cs_CZ/LC_MESSAGES/messages.po new file mode 100644 index 0000000000..fed4a93c30 --- /dev/null +++ b/locale/cs_CZ/LC_MESSAGES/messages.po @@ -0,0 +1,3970 @@ +# Copyright (C) 2005 - 2013. +# This file is distributed under the same license as the tt-rss package. +# +# Tomáš Chvátal , 2013. +# Michal Stanke , 2013. +msgid "" +msgstr "" +"Project-Id-Version: TT-RSS CZech\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2014-09-09 08:13+0100\n" +"Last-Translator: Trottel \n" +"Language-Team: Czech \n" +"Language: cs_CZ\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Poedit 1.6.9\n" + +#: backend.php:73 +msgid "Use default" +msgstr "Použít výchozí" + +#: backend.php:74 +msgid "Never purge" +msgstr "Nikdy neÄistit" + +#: backend.php:75 +msgid "1 week old" +msgstr "starší než týden" + +#: backend.php:76 +msgid "2 weeks old" +msgstr "starší než 2 týdny" + +#: backend.php:77 +msgid "1 month old" +msgstr "starší než mÄ›síc" + +#: backend.php:78 +msgid "2 months old" +msgstr "starší než 2 mÄ›síce" + +#: backend.php:79 +msgid "3 months old" +msgstr "starší než 3 mÄ›síce" + +#: backend.php:82 +msgid "Default interval" +msgstr "Výchozí interval" + +#: backend.php:83 +#: backend.php:93 +msgid "Disable updates" +msgstr "Zakázat aktualizace" + +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" +msgstr "Každých 15 minut" + +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" +msgstr "Každých 30 minut" + +#: backend.php:86 +#: backend.php:96 +msgid "Hourly" +msgstr "Každou hodinu" + +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" +msgstr "Každé 4 hodiny" + +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" +msgstr "Každých 12 hodin" + +#: backend.php:89 +#: backend.php:99 +msgid "Daily" +msgstr "DennÄ›" + +#: backend.php:90 +#: backend.php:100 +msgid "Weekly" +msgstr "TýdnÄ›" + +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 +msgid "User" +msgstr "Uživatel" + +#: backend.php:104 +msgid "Power User" +msgstr "Uživatel s rozšířenými pravomocemi" + +#: backend.php:105 +msgid "Administrator" +msgstr "Administrátor" + +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "Tento program vyžaduje pro správnou funkci XmlHttpRequest. Zdá se, že váš prohlížeÄ je nepodporuje." + +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "Tento program vyžaduje pro správnou funkci soubory cookie. Zdá se, že váš prohlížeÄ je nepodporuje." + +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "Základní kontrola vnitÅ™ního jádra selhala." + +#: errors.php:17 +msgid "Frontend sanity check failed." +msgstr "Základní kontrola klientské Äásti selhala." + +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "Nesprávná verze schématu databáze. <a href='db-updater.php'>Aktualizujte</a>." + +#: errors.php:21 +msgid "Request not authorized." +msgstr "Požadavek neověřen." + +#: errors.php:23 +msgid "No operation to perform." +msgstr "Žádná operace k provedení." + +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "Nelze zobrazit kanál: dotaz selhal. Zkontrolujte syntaxi detekce shody Å¡títků nebo místní konfiguraci." + +#: errors.php:27 +msgid "Denied. Your access level is insufficient to access this page." +msgstr "OdepÅ™eno. Nemáte dostateÄnou úroveň přístupu pro přístup k této stránce." + +#: errors.php:29 +msgid "Configuration check failed" +msgstr "Kontrola konfigurace selhala" + +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "VaÅ¡e verze MySQL není nyní podporována. Více informací najdete na oficiálních stránkách." + +#: errors.php:35 +msgid "SQL escaping test failed, check your database and PHP configuration" +msgstr "Test obrany proti SQL Injection selhal, zkontrolujte konfiguraci databáze a PHP" + +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "Kanál nenalezen." + +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "Uživatel nebyl nalezen" + +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "NaÄítání, Äekejte..." + +#: index.php:167 +msgid "Collapse feedlist" +msgstr "Sbalit seznam kanálů" + +#: index.php:170 +msgid "Show articles" +msgstr "Zobrazit Älánky" + +#: index.php:173 +msgid "Adaptive" +msgstr "Adaptivní" + +#: index.php:174 +msgid "All Articles" +msgstr "VÅ¡echny Älánky" + +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "OznaÄeno hvÄ›zdiÄkou" + +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "Publikováno" + +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 +msgid "Unread" +msgstr "NepÅ™eÄteno" + +#: index.php:178 +msgid "With Note" +msgstr "S poznámkou" + +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Ignorovat hodnocení" + +#: index.php:182 +msgid "Sort articles" +msgstr "SeÅ™adit Älánky" + +#: index.php:185 +msgid "Default" +msgstr "Výchozí" + +#: index.php:186 +msgid "Newest first" +msgstr "Nejdříve nejnovÄ›jší" + +#: index.php:187 +msgid "Oldest first" +msgstr "Nejdříve nejstarší" + +#: index.php:188 +msgid "Title" +msgstr "Název" + +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 +msgid "Mark as read" +msgstr "OznaÄit jako pÅ™eÄtené" + +#: index.php:195 +msgid "Older than one day" +msgstr "Starší než jeden den" + +#: index.php:198 +msgid "Older than one week" +msgstr "Starší než jeden týden" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "Starší než dva týdny" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "Chyba pÅ™i komunikaci se serverem." + +#: index.php:223 +msgid "Actions..." +msgstr "Akce..." + +#: index.php:225 +msgid "Preferences..." +msgstr "PÅ™edvolby..." + +#: index.php:226 +msgid "Search..." +msgstr "Hledat..." + +#: index.php:227 +msgid "Feed actions:" +msgstr "Akce kanálů:" + +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "PÅ™ihlásit se k odbÄ›ru kanálu..." + +#: index.php:229 +msgid "Edit this feed..." +msgstr "Upravit tento kanál..." + +#: index.php:230 +msgid "Rescore feed" +msgstr "PÅ™ehodnotit kanál" + +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "Odhlásit odbÄ›r" + +#: index.php:232 +msgid "All feeds:" +msgstr "VÅ¡echny kanály:" + +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Zobrazit nebo skrýt pÅ™eÄtené kanály" + +#: index.php:235 +msgid "Other actions:" +msgstr "Ostatní akce:" + +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "PÅ™epnout Å¡irokoúhlý režim" + +#: index.php:237 +msgid "Create label..." +msgstr "VytvoÅ™it Å¡títek..." + +#: index.php:238 +msgid "Create filter..." +msgstr "VytvoÅ™it filtr..." + +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "NápovÄ›da ke klávesovým zkratkám" + +#: index.php:248 +msgid "Logout" +msgstr "Odhlásit se" + +#: index.php:254 +msgid "Updates are available from Git." +msgstr "" + +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "PÅ™edvolby" + +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "Klávesové zkratky" + +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Opustit pÅ™edvolby" + +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Kanály" + +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "Filtry" + +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Å títky" + +#: prefs.php:133 +msgid "Users" +msgstr "Uživatelé" + +#: prefs.php:136 +msgid "System" +msgstr "Systém" + +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "VytvoÅ™it nový úÄet" + +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "Registrace nových uživatelů jsou zakázány správcem." + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "ZpÄ›t do Tiny Tiny RSS" + +#: register.php:218 +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 "VaÅ¡e doÄasné heslo bude odesláno na zadaný e-mail. ÚÄet, do kterého se nikdo do 24 hodin od odeslání doÄasného hesla nepÅ™ihlásí, bude smazán." + +#: register.php:224 +msgid "Desired login:" +msgstr "Požadované pÅ™ihlaÅ¡ovací jméno:" + +#: register.php:227 +msgid "Check availability" +msgstr "Zkontrolovat dostupnost" + +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "E-mail:" + +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "Kolik je dva plus dva:" + +#: register.php:235 +msgid "Submit registration" +msgstr "Odeslat registraci" + +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "VaÅ¡e registraÄní údaje nejsou úplné." + +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "Bohužel, toto uživatelské jméno se již používá." + +#: register.php:287 +msgid "Registration failed." +msgstr "Registrace selhala." + +#: register.php:334 +msgid "Account created successfully." +msgstr "ÚÄet byl úspěšnÄ› vytvoÅ™en." + +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "Registrace nových uživatelů jsou nyní uzavÅ™eny." + +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "Skript aktualizace dat Tiny Tiny RSS." + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "Bez zaÅ™azení" + +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d archivovaný Älánek" +msgstr[1] "%d archivované Älánky" +msgstr[2] "%d archivovaných Älánků" + +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "Nenalezeny žádné kanály." + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "Navigace" + +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "Otevřít další kanál" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "Otevřít pÅ™edchozí kanál" + +#: include/functions2.php:55 +msgid "Open next article" +msgstr "Otevřít další Älánek" + +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "Otevřít pÅ™edchozí Älánek" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "Otevřít další Älánek (neposouvat dlouhé Älánky)" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "Otevřít pÅ™edchozí Älánek (neposouvat dlouhé Älánky)" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "PÅ™ejít na další Älánek (nerozbalovat ani neoznaÄovat jako pÅ™eÄtené)" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "PÅ™ejít na pÅ™edchozí Älánek (nerozbalovat ani neoznaÄovat jako pÅ™eÄtené)" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Zobrazit dialogové okno hledání" + +#: include/functions2.php:62 +msgid "Article" +msgstr "ÄŒlánek" + +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "PÅ™epnout oznaÄeno hvÄ›zdiÄkou" + +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "PÅ™epnout publikováno" + +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "PÅ™epnout nepÅ™eÄteno" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Upravit znaÄky" + +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "ZruÅ¡it vybrané" + +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "ZruÅ¡it pÅ™eÄtené" + +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "Otevřít v novém oknÄ›" + +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "OznaÄit pod jako pÅ™eÄtené" + +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "OznaÄit nad jako pÅ™eÄtené" + +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "Posunout dolů" + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "Posunout nahoru" + +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "Vybrat Älánek pod kurzorem" + +#: include/functions2.php:75 +msgid "Email article" +msgstr "Odeslat Älánek e-mailem" + +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "Zavřít nebo sbalit Älánek" + +#: include/functions2.php:77 +msgid "Toggle article expansion (combined mode)" +msgstr "PÅ™epnout rozbalení Älánku (kombinovaný režim)" + +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "PÅ™epnout vložen originál" + +#: include/functions2.php:80 +msgid "Article selection" +msgstr "VýbÄ›r Älánků" + +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "Vybrat vÅ¡echny Älánky" + +#: include/functions2.php:82 +msgid "Select unread" +msgstr "Vybrat nepÅ™eÄtené" + +#: include/functions2.php:83 +msgid "Select starred" +msgstr "Vybrat oznaÄené hvÄ›zdiÄkou" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "Vybrat publikované" + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "Invertovat výbÄ›r" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "ZruÅ¡it výbÄ›r vÅ¡eho" + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Kanál" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "Obnovit aktuální kanál" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "Zobrazit nebo skrýt pÅ™eÄtené kanály" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "PÅ™ihlásit se k odbÄ›ru kanálu" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Upravit kanál" + +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "Obrácené poÅ™adí nadpisů" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "Ladit aktualizaci kanálů" + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "OznaÄit vÅ¡echny kanály jako pÅ™eÄtené" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "Rozbalit nebo sbalit aktuální kategorii" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "PÅ™epnout kombinovaný režim" + +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "PÅ™epnout automatické rozbalení v kombinovaném režimu" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "PÅ™ejít na" + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "VÅ¡echny Älánky" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "Nové" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Seznam znaÄek" + +#: include/functions2.php:106 +msgid "Other" +msgstr "Ostatní" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "VytvoÅ™it Å¡títek" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "VytvoÅ™it filtr" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "Rozbalit nebo sbalit postranní panel" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "Zobrazit dialogové okno nápovÄ›dy" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Výsledky hledání: %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +msgid "comment" +msgid_plural "comments" +msgstr[0] "komentář" +msgstr[1] "komentáře" +msgstr[2] "komentáře" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +msgid "comments" +msgstr "komentáře" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "žádné znaÄky" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "Upravit znaÄky pro tento Älánek" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "PůvodnÄ› z:" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "URL kanálu" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "Zavřít toto okno" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(upravit poznámku)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "neznámý typ" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "Přílohy" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "Speciální" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "VÅ¡echny kanály" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "ÄŒlánky oznaÄené hvÄ›zdiÄkou" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Publikované Älánky" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "Nové Älánky" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "Archivované Älánky" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "Nedávno pÅ™eÄtené" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "PÅ™ihlášení:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "Heslo:" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "ZapomnÄ›l jsem své heslo" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "Profil:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "Výchozí profil" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "Generovat ménÄ› provozu" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "Nezobrazuje obrázky v Äláncích, snižuje automatická obnovení." + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "Zapamatovat si mÄ›" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "PÅ™ihlásit se" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "NepodaÅ™ilo se ověřit relaci (nesprávná adresa IP)" + +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "NepodaÅ™ilo se ověřit relaci (zmÄ›nila se verze schématu)" + +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "NepodaÅ™ilo se ověřit relaci (uživatel nebyl nalezen)" + +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "NepodaÅ™ilo se ověřit relaci (zmÄ›nilo se heslo)" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "Další tipy k používání rozhraní jsou dostupné ve wiki Tiny Tiny RSS." + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Klávesové zkratky" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "Shift" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Téma nápovÄ›dy nenalezeno." + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "Sdílet s Tiny Tiny RSS" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Název:" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "Obsah:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "Å títky:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "Sdílený Älánek se objeví v kanálu Publikováno." + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "Sdílet" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "ZruÅ¡it" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "NepÅ™ihlášený" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Nesprávné uživatelské jméno nebo heslo" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "Již odebíráte %s." + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "PÅ™ihlášen k odbÄ›ru %s." + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "Nelze se pÅ™ihlásit k odbÄ›ru %s." + +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "Nenalezeny žádné kanály v %s." + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "Nalezeno více URL kanálů." + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "Nelze se přihlásit k odběru %s.
    Nelze stáhnout URL kanálu." + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "PÅ™ihlásit se k odbÄ›ru vybraného kanálu" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Upravit volby odebírání" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "Obnovení hesla" + +#: classes/handler/public.php:805 +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "Budete muset zadat platný název a e-mailovou adresu úÄtu. Odkaz na obnovení hesla bude zaslán na vaÅ¡i e-mailovou adresu." + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "Obnovit heslo" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "NÄ›které z požadovaných parametrů formuláře chybí nebo jsou nesprávné." + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "Jít zpÄ›t" + +#: classes/handler/public.php:878 +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] Vyžadováno obnovení hesla" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "Bohužel, kombinace pÅ™ihlaÅ¡ovacího jména a e-mailu nebyla nalezena." + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "Nemáte dostateÄnou úroveň přístupu pro spuÅ¡tÄ›ní tohoto skriptu." + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "AktualizaÄní nástroj databáze" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Provést aktualizace" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "Zobrazit jako kanál RSS" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "Zobrazit jako RSS" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "Naposledy aktualizováno: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "VÅ¡e" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Invertovat" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Žádný" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "Více..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "PÅ™epínaÄ výbÄ›ru:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "VýbÄ›r:" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "Nastavit hodnocení" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "Archivovat" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "ZpÄ›t" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "Odstranit" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "PÅ™eposlat e-mailem" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Kanál:" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "Kanál nenalezen." + +#: classes/feeds.php:268 +msgid "Never" +msgstr "Nikdy" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "Importováno v %s" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +msgid "mark feed as read" +msgstr "oznaÄit kanál jako pÅ™eÄtený" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "Sbalit Älánek" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "Nenalezeny žádné nepÅ™eÄtené Älánky k zobrazení." + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "Nenalezeny žádné aktualizované Älánky k zobrazení." + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "Nenalezeny žádné Älánky oznaÄené hvÄ›zdiÄkou k zobrazení." + +#: classes/feeds.php:778 +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 "Nenalezeny žádné Älánky k zobrazení. Můžete pÅ™iÅ™adit Älánky ke Å¡títkům ruÄnÄ› z kontextové nabídky v hlaviÄce Älánku (použije se pro vÅ¡echny vybrané Älánky) nebo použít filtr." + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "Nenalezeny žádné Älánky k zobrazení." + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "Kanál naposledy aktualizován v %s" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "NÄ›které kanály mají chyby aktualizace (kliknÄ›te pro podrobnosti)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "Není vybrán žádný kanál." + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "Kanál nebo URL stránky" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "Umístit do kategorie:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "Dostupné kanály" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "Ověření" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "PÅ™ihlášení" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "Heslo" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Tento kanál vyžaduje ověření." + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "PÅ™ihlásit se k odbÄ›ru" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "Více kanálů" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "Hledat" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "Oblíbené kanály" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "Archiv kanálů" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "omezení:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "Odebrat" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "Hledat" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +msgid "Search syntax" +msgstr "Syntaxe hledání" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "ÄŒlánek nenalezen." + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "ZnaÄky pro tento Älánek (oddÄ›lené Äárkami):" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Uložit" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "Nástroj OPML" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "Importování OPML..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "ZpÄ›t do pÅ™edvoleb" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "PÅ™idávání kanálu: %s" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "Duplicitní kanál: %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "PÅ™idávání Å¡títku %s" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "Duplicitní Å¡títek: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "Nastavení klíÄe pÅ™edvoleb %s na %s" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "PÅ™idávání filtru..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "Zpracovávání kategorie: %s" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "Nahrávání selhalo s kódem chyby %d" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "Nelze pÅ™esunout nahraný soubor." + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "Chyba: nahrajte soubor OPML." + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "Chyba: nelze nalézt pÅ™esunutý soubor OPML." + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Chyba pÅ™i zpracování dokumentu." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "Nemáte dostateÄnou úroveň přístupu pro otevÅ™ení této záložky." + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "Protokol chyb" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "Obnovit" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "Vymazat protokol" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Chyba" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "Název souboru" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Zpráva" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Datum" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Uživatel nebyl nalezen" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "Registrován" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Naposledy pÅ™ihlášen" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "PoÄet odebíraných kanálů" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Odebírané kanály" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Úroveň přístupu: " + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Volby" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "PÅ™idán uživatel %s s heslem %s" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "Nelze vytvoÅ™it uživatele %s" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "Uživatel %s již existuje." + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "ZmÄ›nÄ›no heslo uživatele %s na %s" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "Odesílání nového hesla uživatele %s na %s" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] Oznámení o zmÄ›nÄ› hesla" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "Vybrat" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "VytvoÅ™it uživatele" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "Podrobnosti" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Upravit" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Úroveň přístupu" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "Poslední pÅ™ihlášení" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "KliknÄ›te pro úpravu" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "Nejsou definováni žádní uživatelé." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "Nebyli nalezeni žádní odpovídající uživatelé." + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "ZaÅ¡krtnÄ›te pro povolení pole" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "(%d kanál)" +msgstr[1] "(%d kanály)" +msgstr[2] "(%d kanálů)" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "Název kanálu" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "Aktualizovat" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "ÄŒiÅ¡tÄ›ní Älánků:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "Rada: pokud váš kanál vyžaduje ověření, musíte zadat pÅ™ihlaÅ¡ovací údaje, s výjimkou pro kanály Twitteru." + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "Skrýt pÅ™ed oblíbenými kanály" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "Zahrnout do e-mailového výtahu" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Vždy zobrazovat obrázkové přílohy" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "Nevkládat obrázky" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Ukládat obrázky do mezipamÄ›ti místnÄ›" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "OznaÄit aktualizované Älánky jako nepÅ™eÄtené" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "Ikona" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "Nahradit" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "Znovu se pÅ™ihlásit k odbÄ›ru pro aktualizace doruÄené bez vyžádání" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "Obnoví stav odbÄ›ru PubSubHubbub pro kanály s povoleným doruÄením bez vyžádání." + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "VÅ¡e hotovo." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "Kanály s chybami" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "Neaktivní kanály" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "Upravit vybrané kanály" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "Obnovit poÅ™adí Å™azení" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "Dávkové pÅ™ihlášení k odbÄ›ru" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "Kategorie" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "PÅ™idat kategorii" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "Odebrat vybrané" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "Více akcí..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "RuÄní ÄiÅ¡tÄ›ní" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "Vymazat data kanálu" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "PÅ™ehodnotit Älánky" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "Pomocí OPML můžete exportovat a importovat své kanály, filtry, Å¡títky a nastavení Tiny Tiny RSS." + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "Pomocí OPML může být migrován pouze profil hlavního nastavení." + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "Importovat mé OPML" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "Název souboru:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "Zahrnout nastavení" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "Exportovat OPML" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "VaÅ¡e OPML může být publikováno veÅ™ejnÄ› a odebíráno kýmkoliv, kdo zná následující URL." + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "Publikované OPML neobsahují vaÅ¡e nastavení Tiny Tiny RSS, kanály vyžadující ověření nebo skryté kanály pÅ™ed oblíbenými kanály." + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "VeÅ™ejná URL OPML" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "Zobrazit URL publikovaných OPML" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Integrace s Firefoxem" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "Tato stránka Tiny Tiny RSS může být použita jako ÄŒteÄka kanálů Firefox kliknutím na následující odkaz." + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "KliknÄ›te sem pro registraci této stránky jako ÄteÄky kanálů." + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "Publikované a sdílené Älánky / Generované kanály" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "Publikované Älánky jsou exportovány jako veÅ™ejný kanál RSS, který může odebírat kdokoliv, kdo zná níže zadanou URL." + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "Zobrazit URL" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "Vymazat vÅ¡echny vygenerované URL" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "Tyto kanály nebyly aktualizovány novým obsahem po tÅ™i mÄ›síce (nejdříve nejstarší):" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "KliknÄ›te pro úpravu kanálu" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "Odhlásit odbÄ›r vybraných kanálů" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "PÅ™idávejte jeden platný kanál RSS na řádek (neprobíhá detekce kanálu)" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "Kanály k odebírání, jeden na řádek" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "Kanály vyžadují ověření." + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "ÄŒlánky odpovídající tomuto filtru:" + +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "Nebyly nalezeny žádné nedávné Älánky odpovídající tomuto filtru." + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(inverzní)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "%s na %s v %s %s" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Titulek" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "Odpovídá" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "PÅ™idat" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "Použít akce" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Povoleno" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "Odpovídá jakémukoliv pravidlu" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "Inverzní porovnání" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "Test" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "Kombinovat" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "VytvoÅ™it" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "Inverzní porovnání regulárního výrazu" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "pole" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "v" + +#: classes/pref/filters.php:947 +msgid "Wiki: Filters" +msgstr "Wiki: Filtry" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "Uložit pravidlo" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "PÅ™idat pravidlo" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Provést akci" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "s parametry:" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "Uložit akci" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "PÅ™idat akci" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[Bez titulku]" + +#: classes/pref/filters.php:1044 +#, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "%s (%d pravidlo)" +msgstr[1] "%s (%d pravidla)" +msgstr[2] "%s (%d pravidel)" + +#: classes/pref/filters.php:1059 +#, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "%s (+ %d akce)" +msgstr[1] "%s (+ %d akce)" +msgstr[2] "%s (+ %d akcí)" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "Barvy" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "PopÅ™edí:" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "Pozadí:" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "VytvoÅ™en Å¡títek %s" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Vymazat barvy" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Obecné" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Rozhraní" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "PokroÄilé" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "Výtah" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "Povolit duplicitní Älánky" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Zakázané znaÄky" + +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "PÅ™i automatické detekci znaÄek v Äláncích nebudou použity tyto znaÄky (seznam oddÄ›lený Äárkami)." + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "Automaticky oznaÄit Älánky jako pÅ™eÄtené" + +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "Tato volba umožňuje automatické oznaÄování Älánků jako pÅ™eÄtených pÅ™i posouvání seznamem Älánků." + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "Automaticky rozbalovat Älánky v kombinovaném režimu" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "Kombinované zobrazení kanálu" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Zobrazit rozbalený seznam Älánků kanálu namísto oddÄ›leného zobrazení nadpisů a obsahů Älánku" + +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "Potvrdit oznaÄení kanálu jako pÅ™eÄteného" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "PoÄet najednou zobrazovaných Älánků" + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "Výchozí interval aktualizace kanálů" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "Nejkratší interval kontroly aktualizací kanálu bez ohledu na metodu aktualizace" + +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "OznaÄit Älánky v e-mailovém výtahu jako pÅ™eÄtené" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "Povolit e-mailový výtah" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Tato volba umožňuje odesílání denních výtahů nových (a nepÅ™eÄtených) nadpisů na vaÅ¡i nastavenou e-mailovou adresu" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "Pokusit se odeslat výtahy kolem zadaného Äasu" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "Používá Äasové pásmo UTC" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "Povolit přístup pomocí API" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "Povolit externím klientům pÅ™istupovat k tomuto úÄtu pomocí API" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Povolit kategorie kanálů" + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "SeÅ™adit kanály podle poÄtu nepÅ™eÄtených Älánků" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Maximální stáří nových Älánků (v hodinách)" + +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "Skrýt kanály bez nepÅ™eÄtených Älánků" + +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "Zobrazit speciální kanály pÅ™i skrývání pÅ™eÄtených kanálů" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "Dlouhý formát data" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "Použitá syntaxe je shodná s funkcí PHP date()." + +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "PÅ™i zjiÅ¡tÄ›ní nového stavu zobrazit další kanál" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Automaticky otevřít další kanál s nepÅ™eÄtenými Älánky po oznaÄení nÄ›jakého jako pÅ™eÄteného" + +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "VyÄistit Älánky po tomto poÄtu dnů (0 - zakázat)" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "VyÄistit nepÅ™eÄtené Älánky" + +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "Obrácené poÅ™adí nadpisů (nejdříve nejstarší)" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "Krátký formát data" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "Zobrazit náhled obsahu v seznamu nadpisů" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "SeÅ™adit nadpisy podle data kanálu" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "Použít pro seÅ™azení nadpisů datum zadané kanálem namísto data místního importu." + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "PÅ™ihlásit s certifikátem SSL" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "KliknÄ›te pro registraci klientského certifikátu SSL s tt-rss" + +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "Nevkládat obrázky do Älánků" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "Odstranit nebezpeÄné znaÄky z Älánků" + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "PÅ™i Ätení Älánků odstranit vÅ¡echny znaÄky HTML kromÄ› nejběžnÄ›jších." + +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "PÅ™izpůsobit Å¡ablonu stylů" + +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "PÅ™izpůsobit Å¡ablonu stylů CSS podle vaÅ¡ich pÅ™edstav" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "ÄŒasové pásmo" + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "Seskupovat nadpisy ve virtuálních kanálech" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "Speciální kanály, Å¡títky a kategorie jsou seskupeny podle původních kanálů" + +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "Jazyk" + +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "Motiv" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "Vybrat jeden z dostupných motivů CSS" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "Konfigurace byla uložena." + +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "VaÅ¡e osobní údaje byly uloženy." + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "VaÅ¡e pÅ™edvolby jsou nyní nastaveny na výchozí hodnoty." + +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "Osobní údaje / Ověření" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "Osobní údaje" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "Celé jméno" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "E-mail" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Úroveň přístupu" + +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Uložit data" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "VaÅ¡e heslo má výchozí hodnotu, změňte ho." + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "ZmÄ›na aktuálního hesla zakáže jednorázové heslo." + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Staré heslo" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Nové heslo" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Potvrdit heslo" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "ZmÄ›nit heslo" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "Jednorázové heslo / Ověření" + +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "Jednorázová hesla jsou nyní povolena. Zadejte své aktuální heslo pro zakázání." + +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "Zadejte své heslo" + +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "Zakázat jednorázové heslo" + +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "Pro použití budete potÅ™ebovat kompatibilní nástroj ověření. ZmÄ›na hesla automaticky zakáže jednorázové heslo." + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "Prohledat následující kód ověřovací aplikací:" + +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "Zadejte vygenerované jednorázové heslo" + +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "Povolit jednorázové heslo" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "Funkce PHP GD jsou požadovány pro podporu jednorázového hesla." + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "NÄ›které pÅ™edvolby jsou dostupné pouze ve výchozím profilu." + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "PÅ™izpůsobit" + +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "Registrovat" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "Vymazat" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "Aktuální Äas na serveru: %s (UTC)" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Uložit konfiguraci" + +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "Uložit a opustit pÅ™edvolby" + +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "Spravovat profily" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "Obnovit na výchozí hodnoty" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "Moduly" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "Budete muset znovu naÄíst Tiny Tiny RSS pro uplatnÄ›ní zmÄ›n v modulech." + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "Stáhnout více modulů na fórech nebo wiki tt-rss.org." + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "Systémové moduly" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "Modul" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "Popis" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "Verze" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "Autor" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "více informací" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "Vymazat data" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "Uživatelské moduly" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "Povolit vybrané moduly" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "Nesprávné jednorázové heslo" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "Nesprávné heslo" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "Zde můžete pÅ™epsat barvy, písma a rozvržení aktuálnÄ› vybraného motivu vlastním nastavením CSS. Tento soubor může být použit jako vodítko." + +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "VytvoÅ™it profil" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(aktivní)" + +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "Odebrat vybrané profily" + +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "Aktivovat profil" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "Pokud jste importovali Å¡títky a/nebo filtry, budete možná muset znovu naÄíst pÅ™edvolby pro zobrazení nových dat." + +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "VaÅ¡e veÅ™ejná URL OPML je:" + +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "Generovat novou 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 "Démon aktualizací je povolen v konfiguraci, ale proces typu démon není spuÅ¡tÄ›n, což zabraňuje aktualizaci vÅ¡ech kanálů. SpusÅ¥te proces typu démon, nebo kontaktujte vlastníka instance." + +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "Poslední aktualizace:" + +#: 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 "Démonu aktualizací trvá příliÅ¡ dlouho provedení aktualizace kanálu. To může znamenat problém, jako je zhroucení nebo zablokování. Zkontrolujte proces typu démon nebo kontaktujte vlastníka instance." + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "Můžete zobrazit tento kanál jako RSS pomocí následující URL:" + +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" + +#: plugins/af_psql_trgm/init.php:112 +#, fuzzy +msgid "Show related articles" +msgstr "Sdílené Älánky" + +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +#, fuzzy +msgid "Mark similar articles as read" +msgstr "OznaÄit vÅ¡echny Älánky jako pÅ™eÄtené?" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +#, fuzzy +msgid "Global settings" +msgstr "Zahrnout nastavení" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "Povolit kategorie kanálů" + +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" + +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" + +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "Kanály podporované af_comics" + +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "Nyní jsou podporovány následující komiksy:" + +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "Upravit poznámku Älánku" + +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "Nebyl nahrán žádný soubor." + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "VÅ¡e dokonÄeno. %d z %d Älánků importováno." + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "Dokument nemá správný formát." + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "Importovat sdílené položky nebo položky oznaÄené hvÄ›zdiÄkou z Google Readeru" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "Vložte do následujícího formuláře váš soubor starred.json nebo shared.json." + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "Importovat mé položky oznaÄené hvÄ›zdiÄkou" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[PÅ™eposláno]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "Více Älánků" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "KliknÄ›te na následující odkaz pro spuÅ¡tÄ›ní poÅ¡tovního klienta:" + +#: plugins/mailto/init.php:75 +msgid "Forward selected article(s) by email." +msgstr "PÅ™eposlat vybrané Älánky e-mailem." + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "MÄ›li byste být schopni upravit zprávu pÅ™ed odesláním ve vaÅ¡em poÅ¡tovním klientu." + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "Zavřít tento dialog" + +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "Import a export" + +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "Můžete exportovat a importovat své Älánky oznaÄené hvÄ›zdiÄkou a archivované Älánky pro uschování, nebo pÅ™i migraci mezi stejnými verzemi instancí tt-rss." + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "Exportovat má data" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Importovat" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "Nelze importovat: nesprávná verze schématu." + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "Nelze importovat: nerozpoznaný formát dokumentu." + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "DokonÄeno: " + +#: plugins/import_export/init.php:388 +#, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "zpracován %d Älánek, " +msgstr[1] "zpracovány %d Älánky, " +msgstr[2] "zpracováno %d Älánků, " + +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "%d importován, " +msgstr[1] "%d importovány, " +msgstr[2] "%d importováno, " + +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "vytvoÅ™en %d kanál." +msgstr[1] "vytvoÅ™eny %d kanály." +msgstr[2] "vytvoÅ™eno %d kanálů." + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "Nelze naÄíst dokument XML." + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "PÅ™ipravit data" + +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "Není bezpeÄné pro práci (kliknutím pÅ™epnout)" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "Modul Neotvírat v práci" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "ZnaÄky považované za neotvírat v práci (oddÄ›lené Äárkami)" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "Konfigurace uložena." + +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "Zadejte své jednorázové heslo:" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "Heslo bylo zmÄ›nÄ›no." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "Staré heslo je nesprávné." + +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "Zavřít Älánek" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "E-mailové adresy uloženy." + +#: plugins/mail/init.php:34 +msgid "Mail plugin" +msgstr "Modul odesílání e-mailů" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "Zde můžete nastavit pÅ™eddefinované e-mailové adresy (Äárkami oddÄ›lený seznam):" + +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "Do:" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "PÅ™edmÄ›t:" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "Odeslat e-mail" + +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "Propojeno" + +#: 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:404 +msgid "Instance URL" +msgstr "URL instance" + +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "Přístupový klíÄ:" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "Přístupový klíÄ" + +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "Použít jeden přístupový klÃ­Ä pro obÄ› propojené instance." + +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "Generovat nový klíÄ" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "Propojit instanci" + +#: 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 "Můžete pÅ™ipojit další instance Tiny Tiny RSS k této pro sdílení oblíbených kanálů. PÅ™ipojit k této instanci Tiny Tiny RSS pomocí této URL:" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "Naposledy pÅ™ipojen" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "Stav" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "Uložené kanály" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "VytvoÅ™it odkaz" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "Konfigurace uložena." + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "Zkontrolovat dostupnost" + +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "Upravit poznámku Älánku" + +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "Sdílené Älánky" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +#, fuzzy +msgid "Statistics" +msgstr "Stav" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "ÄŒlánky oznaÄené hvÄ›zdiÄkou" + +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "Vymazat data" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, fuzzy, php-format +msgid "Currently stored as: %s" +msgstr "Aktuální Äas na serveru: %s (UTC)" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "Záložkové aplety" + +#: 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 "PÅ™etáhnÄ›te níže uvedený odkaz na panel nástrojů prohlížeÄe, otevÅ™ete v prohlížeÄi kanál, o který máte zájem, a kliknÄ›te na odkaz pro pÅ™ihlášení k jeho odbÄ›ru." + +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "PÅ™ihlásit se k odbÄ›ru %s v Tiny Tiny RSS?" + +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "PÅ™ihlásit se k odbÄ›ru v Tiny Tiny RSS" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "Použijte tento záložkový aplet pro publikování libovolných stránek pomocí Tiny Tiny RSS" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "Zde můžete zakázat vÅ¡echny Älánky sdílené pomocí jedineÄných URL." + +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "ZruÅ¡it sdílení vÅ¡ech Älánků" + +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "Sdílet pomocí URL" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "Můžete sdílet tento Älánek pomocí následující jedineÄné URL:" + +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "ZruÅ¡it sdílení Älánku" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "Chyba bude nahlášena do nastaveného cíle protokolu." + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "Nahlásit na tt-rss.org" + +#: js/functions.js:93 +msgid "Close" +msgstr "Zavřít" + +#: js/functions.js:104 +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "Opravdu chcete nahlásit tuto výjimku na tt-rss.org? Hlášení bude obsahovat informace o vaÅ¡em prohlížeÄi a konfiguraci tt-rss. VaÅ¡e adresa IP bude uložena do databáze." + +#: js/functions.js:224 +msgid "Click to close" +msgstr "KliknÄ›te pro zavÅ™ení" + +#: js/functions.js:1051 +msgid "Edit action" +msgstr "Upravit akci" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "VytvoÅ™it filtr" + +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "Obnovit odbÄ›r? Tiny Tiny RSS se pokusí znovu pÅ™ihlásit k odbÄ›ru oznamovacího centra pÅ™i další aktualizaci kanálu." + +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "OdbÄ›r obnoven." + +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "Odhlásit odbÄ›r %s?" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "Odebírání kanálu..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "Zadejte název kategorie:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "Generovat novou adresu syndikace pro tento kanál?" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Pokus o zmÄ›nu adresy..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "Nejsou vybrány žádné kanály." + +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "Odebrat vybrané kanály z archivu? Kanály s uloženými Älánky nebudou odebrány." + +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "Kanály s chybami aktualizace" + +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "Odebrat vybrané kanály?" + +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "Odebírání vybraných kanálů..." + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "Upravit kategorii" + +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "Odebrat kategorii" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "Inverzní" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "Zadejte pÅ™ihlaÅ¡ovací jméno:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "Nelze vytvoÅ™it uživatele: nezadáno pÅ™ihlaÅ¡ovací jméno." + +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "PÅ™idávání uživatele..." + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Editor uživatelů" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "Ukládání dat..." + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "Upravit filtr" + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "Odebrat filtr?" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "Odebírání filtru..." + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "Odebrat vybrané Å¡títky?" + +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "Odebírání vybraných Å¡títků..." + +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "Nejsou vybrány žádné Å¡títky." + +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "Odebrat vybrané uživatele? Výchozí úÄet správce ani váš úÄet nebudou odebrány." + +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "Odebírání vybraných uživatelů..." + +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "Nejsou vybráni žádní uživatelé." + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "Odebrat vybrané filtry?" + +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "Odebírání vybraných filtrů..." + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "Nejsou vybrány žádné filtry." + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "Odhlásit odbÄ›r vybraných kanálů?" + +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "OdhlaÅ¡ování odbÄ›ru vybraných kanálů..." + +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "Vyberte pouze jeden kanál." + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "Smazat ve vybraném kanálu vÅ¡echny Älánky neoznaÄené hvÄ›zdiÄkou?" + +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "Vymazávání vybraného kanálu..." + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "Kolik dnů Älánků ponechat (0 - použít výchozí)?" + +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "ÄŒiÅ¡tÄ›ní vybraného kanálu..." + +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "Vyberte pouze jednoho uživatele." + +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "Obnovit heslo vybraného uživatele?" + +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "Obnovování hesla pro vybraného uživatele..." + +#: js/prefs.js:565 +msgid "User details" +msgstr "Podrobnosti uživatele" + +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "Vyberte pouze jeden filtr." + +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "Kombinovat vybrané filtry?" + +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "Spojování filtrů..." + +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "Upravit více kanálů" + +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "Uložit zmÄ›ny ve vybraných kanálech?" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "Import OPML" + +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "Nejdříve zvolte soubor OPML." + +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "Importování, Äekejte..." + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "Obnovit na výchozí hodnoty?" + +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "PÅ™ihlaÅ¡ování k odbÄ›ru kanálů..." + +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "Vymazat uložená data pro tento modul?" + +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "Vymazat vÅ¡echny zprávy v protokolu chyb?" + +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "OznaÄit vÅ¡echny Älánky jako pÅ™eÄtené?" + +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "OznaÄování vÅ¡ech kanálů jako pÅ™eÄtených..." + +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "Nejdříve povolte modul odesílání e-mailů." + +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "Nemůžete upravit tento druh kanálu." + +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "Nejdříve povolte modul embed_original." + +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "" + +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "Nemůžete pÅ™ehodnotit tento druh kanálu." + +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "Nejdříve vyberte nÄ›jaký kanál." + +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "PÅ™ehodnotit Älánky v %s?" + +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "PÅ™ehodnocování Älánků..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "Nejsou vybrány žádné Älánky." + +#: js/viewfeed.js:1018 +#, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "Odstranit %d vybraný Älánek v %s?" +msgstr[1] "Odstranit %d vybrané Älánky v %s?" +msgstr[2] "Odstranit %d vybraných Älánků v %s?" + +#: js/viewfeed.js:1020 +#, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "Odstranit %d vybraný Älánek?" +msgstr[1] "Odstranit %d vybrané Älánky?" +msgstr[2] "Odstranit %d vybraných Älánků?" + +#: js/viewfeed.js:1062 +#, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "Archivovat %d vybraný Älánek v %s?" +msgstr[1] "Archivovat %d vybrané Älánky v %s?" +msgstr[2] "Archivovat %d vybraných Älánků v %s?" + +#: js/viewfeed.js:1065 +#, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "PÅ™esunout zpÄ›t %d archivovaný Älánek?" +msgstr[1] "PÅ™esunout zpÄ›t %d archivované Älánky?" +msgstr[2] "PÅ™esunout zpÄ›t %d archivovaných Älánků?" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "VezmÄ›te na vÄ›domí, že Älánky neoznaÄené hvÄ›zdiÄkou mohou být pÅ™i další aktualizaci kanálu vyÄiÅ¡tÄ›ny." + +#: js/viewfeed.js:1112 +#, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "OznaÄit %d vybraný Älánek v %s jako pÅ™eÄtený?" +msgstr[1] "OznaÄit %d vybrané Älánky v %s jako pÅ™eÄtené?" +msgstr[2] "OznaÄit %d vybraných Älánků v %s jako pÅ™eÄtené?" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "Upravit znaÄky Älánku" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "Ukládání znaÄek Älánku..." + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +msgid "Click to open next unread feed." +msgstr "KliknÄ›te pro otevÅ™ení dalšího nepÅ™eÄteného kanálu." + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "Otevřít původní Älánek" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "PÅ™iÅ™adit Å¡títek" + +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "Odebrat Å¡títek" + +#: js/viewfeed.js:2159 +msgid "Select articles in group" +msgstr "Vybrat Älánky ve skupinÄ›" + +#: js/viewfeed.js:2168 +msgid "Mark group as read" +msgstr "OznaÄit skupinu jako pÅ™eÄtenou" + +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "OznaÄit kanál jako pÅ™eÄtený" + +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "Zadejte nové hodnocení pro vybrané Älánky:" + +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "Zadejte nové hodnocení pro tento Älánek:" + +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "URL Älánku:" + +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "Bohužel, váš prohlížeÄ nepodporuje vložené rámce v izolovaném prostoru." + +#: plugins/af_psql_trgm/init.js:11 +#, fuzzy +msgid "Related articles" +msgstr "Smazat Älánek" + +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "Ukládání poznámky Älánku..." + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Import z Google Reader" + +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "Nejdříve zvolte soubor." + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "PÅ™eposlat Älánek e-mailem" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "Exportovat data" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "DokonÄeno, exportován %d Älánek. a class='visibleLink' href='%u'>Zde můžete stáhnout data." +msgstr[1] "DokonÄeno, exportovány %d Älánky. a class='visibleLink' href='%u'>Zde můžete stáhnout data." +msgstr[2] "DokonÄeno, exportováno %d Älánků. a class='visibleLink' href='%u'>Zde můžete stáhnout data." + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Import dat" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "Nejdříve zvolte soubor." + +#: plugins/shorten_expanded/init.js:37 +msgid "Click to expand article" +msgstr "KliknÄ›te pro rozbalení Älánku" + +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "Chyba pÅ™i odesílání e-mailu:" + +#: plugins/mail/mail.js:38 +msgid "Your message has been sent." +msgstr "VaÅ¡e zpráva byla odeslána." + +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "Propojit instanci" + +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "Upravit instanci" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "Odebrat vybrané instance?" + +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "Odebírání vybraných instancí..." + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "Nejsou vybrány žádné instance." + +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "Vyberte pouze jednu instanci." + +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "Vymazat data kanálu" + +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "" + +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "Sdílet Älánek pomocí URL" + +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "Generovat novou URL sdílení pro tento Älánek?" + +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "Pokus o zmÄ›nu URL..." + +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "Odebrat sdílení pro tento Älánek?" + +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "Pokus o zruÅ¡ení sdílení..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "Zneplatní vÅ¡echny dříve vygenerované URL sdílených Älánků. PokraÄovat?" + +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "Vymazávání URL..." + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "Sdílené URL vymazány." + +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "OznaÄit vÅ¡echny Älánky v %s jako pÅ™eÄtené?" + +#: js/feedlist.js:435 +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "OznaÄit vÅ¡echny Älánky starší než 1 den v %s jako pÅ™eÄtené?" + +#: js/feedlist.js:438 +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "OznaÄit vÅ¡echny Älánky starší než 1 týden v %s jako pÅ™eÄtené?" + +#: js/feedlist.js:441 +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "OznaÄit vÅ¡echny Älánky starší než 2 týdny v %s jako pÅ™eÄtené?" + +#: js/functions.js:615 +msgid "Error explained" +msgstr "VysvÄ›tlení chyby" + +#: js/functions.js:697 +msgid "Upload complete." +msgstr "Nahrávání dokonÄeno." + +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "Odebrat uloženou ikonu kanálu?" + +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "Odebírání ikony kanálu..." + +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "Ikona kanálu odebrána." + +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "Vyberte soubor obrázku k nahrání." + +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "Nahrát novou ikonu pro tento kanál?" + +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "Nahrávání, Äekejte..." + +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "Zadejte titulek Å¡títku:" + +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "Nelze vytvoÅ™it Å¡títek: chybí titulek." + +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "PÅ™ihlásit se k odbÄ›ru kanálu" + +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "NepodaÅ™ilo se zpracovat výstup. To může znamenat vyprÅ¡ení Äasového limitu serveru a/nebo problémy se sítí. Výstup vnitÅ™ního jádra byl zaznamenán do konzole prohlížeÄe." + +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "PÅ™ihlášen k odbÄ›ru %s" + +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "Zdá se, že zadaná URL je neplatná." + +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "Zdá se, že zadaná URL neobsahuje žádné kanály." + +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "Rozbalte pro výbÄ›r kanálu" + +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "Nelze stáhnout zadanou URL: %s" + +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "Ověření XML selhalo: %s" + +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "Již jste pÅ™ihlášeni k odbÄ›ru tohoto kanálu." + +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "Upravit pravidlo" + +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "Upravit kanál" + +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "Více kanálů" + +#: js/functions.js:1878 +msgid "Help" +msgstr "NápovÄ›da" + +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "Odebrat kategorii %s? VÅ¡echny vnoÅ™ené kanály budou umístÄ›ny do kategorie NezaÅ™azeno." + +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "Odebírání kategorie..." + +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "Odebrat vybrané kategorie?" + +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "Odebírání vybraných kategorií..." + +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "Nejsou vybrány žádné kategorie." + +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "Název kategorie:" + +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "Vytváření kategorie..." + +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "Kanály bez nedávných aktualizací" + +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "Nahradit aktuální publikaÄní adresu OPML novou?" + +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "Vymazávání kanálu..." + +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "PÅ™ehodnotit Älánky ve vybraných kanálech?" + +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "PÅ™ehodnocování vybraných kanálů..." + +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "PÅ™ehodnotit vÅ¡echny Älánky? Tato operace může trvat dlouho." + +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "PÅ™ehodnocování kanálů..." + +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "Obnovit vybrané Å¡títky na výchozí barvy?" + +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "Profily nastavení" + +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "Odebrat vybrané profily? Aktivní a výchozí profily nebudou odebrány." + +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "Odebírání vybraných profilů..." + +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "Nejsou vybrány žádné profily." + +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "Aktivovat vybraný profil?" + +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "Zvolte profil k aktivaci." + +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "Vytváření profilu..." + +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "Zneplatní vÅ¡echny dříve vygenerované URL kanálů. PokraÄovat?" + +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "Generované URL vymazány." + +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Editor Å¡títků" + +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "Nemůžete odhlásit odbÄ›r kategorie." + +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "ZruÅ¡it hledání" + +#: js/viewfeed.js:174 +#, fuzzy +msgid "New articles found, reload feed to continue." +msgstr "Nenalezeny žádné Älánky k zobrazení." + +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "ZruÅ¡it oznaÄení Älánku hvÄ›zdiÄkou" + +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "OznaÄit Älánek hvÄ›zdiÄkou" + +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "ZruÅ¡it publikování Älánku" + +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Publikovat Älánek" + +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "%d vybraný Älánek" +msgstr[1] "%d vybrané Älánky" +msgstr[2] "%d vybraných Älánků" + +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "Není vybrán žádný Älánek." + +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "Nenalezeny žádné Älánky k oznaÄení" + +#: js/viewfeed.js:1452 +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "OznaÄit %d Älánek jako pÅ™eÄtený?" +msgstr[1] "OznaÄit %d Älánky jako pÅ™eÄtené?" +msgstr[2] "OznaÄit %d Älánků jako pÅ™eÄtené?" + +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "Zobrazit URL Älánku" + +#~ msgid "Select by tags..." +#~ msgstr "Vybrat podle znaÄek..." + +#~ msgid "Limit search to:" +#~ msgstr "Omezit hledání na:" + +#~ msgid "This feed" +#~ msgstr "Tento kanál" + +#~ msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation." +#~ msgstr "Komplexní výrazy nemusí vrátit výsledky pÅ™i testování kvůli problémům s implementací regulárních výrazů databázového serveru." + +#~ msgid "Old password cannot be blank." +#~ msgstr "Staré heslo nemůže být prázdné." + +#~ msgid "New password cannot be blank." +#~ msgstr "Nové heslo nemůže být prázdné." + +#~ msgid "Entered passwords do not match." +#~ msgstr "Zadaná hesla nejsou shodná." + +#~ msgid "Function not supported by authentication module." +#~ msgstr "Funkce není podporována modulem ověření." + +#~ msgid "Match:" +#~ msgstr "Odpovídá:" + +#~ msgid "Any" +#~ msgstr "Jakémukoliv" + +#~ msgid "All tags." +#~ msgstr "VÅ¡echny znaÄky." + +#~ msgid "Which Tags?" +#~ msgstr "Které znaÄky?" + +#~ msgid "Display entries" +#~ msgstr "Zobrazit položky" + +#~ msgid "Select item(s) by tags" +#~ msgstr "Vybrat položky podle znaÄek" + +#~ msgid "Unread First" +#~ msgstr "Nejdříve nepÅ™eÄtené" + +#~ msgid "Unknown option: %s" +#~ msgstr "Neznámá volba: %s" + +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "Je dostupná nová verze Tiny Tiny RSS!" + +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "NepodaÅ™ilo se ověřit relaci (zmÄ›nil se agent u uživatele)" + +#~ msgid "Assign articles to labels automatically" +#~ msgstr "PÅ™iÅ™adit automaticky Älánky ke Å¡títkům" + +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "Je dostupná nová verze Tiny Tiny RSS (%s)." + +#~ msgid "You can update using built-in updater in the Preferences or by using update.php" +#~ msgstr "Můžete aktualizovat pomocí vestavÄ›ného nástroje v pÅ™edvolbách nebo pomocí update.php" + +#~ msgid "See the release notes" +#~ msgstr "Zobrazit poznámky k verzi" + +#~ msgid "Download" +#~ msgstr "Stáhnout" + +#~ msgid "Error receiving version information or no new version available." +#~ msgstr "Chyba pÅ™i získávání informací o verzi, nebo není dostupná žádná nová verze." + +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Aktualizovat Tiny Tiny RSS" + +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "VaÅ¡e instalace Tiny Tiny RSS je aktuální." + +#~ msgid "Force update" +#~ msgstr "Vynutit aktualizaci" + +#~ msgid "Do not close this dialog until updating is finished." +#~ msgstr "Nezavírejte tento dialog, dokud není aktualizace dokonÄena." + +#~ msgid "It is suggested to backup your tt-rss directory first." +#~ msgstr "Je doporuÄeno nejdříve zálohovat adresář tt-rss." + +#~ msgid "Your database will not be modified." +#~ msgstr "VaÅ¡e databáze nebude zmÄ›nÄ›na." + +#~ 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 "Váš aktuální instalaÄní adresář tt-rss nebude zmÄ›nÄ›n. Bude pÅ™ejmenován a ponechán v nadÅ™azeném adresáři. Budete mít možnost pÅ™enést vÅ¡echny své upravené soubory po skonÄení aktualizace." + +#~ msgid "Ready to update." +#~ msgstr "PÅ™ipraveno k aktualizaci." + +#~ msgid "Start update" +#~ msgstr "Spustit aktualizaci" + +#~ msgid "Backup your tt-rss directory before continuing. Please type 'yes' to continue." +#~ msgstr "PÅ™ed pokraÄováním zálohujte svůj adresář tt-rss. NapiÅ¡te 'yes' pro pokraÄování." + +#~ msgid "New version available!" +#~ msgstr "Je dostupná nová verze!" + +#~ msgid "LibXML error %s at line %d (column %d): %s" +#~ msgstr "Chyba LibXML %s na řádku %d (sloupec %d): %s" + +#~ msgid "From:" +#~ msgstr "Od:" + +#~ msgid "Select:" +#~ msgstr "Vybrat:" + +#~ msgid "mark as read" +#~ msgstr "oznaÄit jako pÅ™eÄtené" + +#~ msgid "Change password to" +#~ msgstr "ZmÄ›nit heslo na" + +#~ msgid "E-mail: " +#~ msgstr "E-mail: " + +#~ msgid "Login field cannot be blank." +#~ msgstr "Pole se jménem uživatele nesmí být prázdné." + +#~ msgid "Saving user..." +#~ msgstr "Ukládám uživatele..." + +#~ msgid "Toggle marked" +#~ msgstr "PÅ™epnout oznaÄené" + +#~ msgid "(Un)hide empty categories" +#~ msgstr "Zobrazit/Skrýt prázdné kategorie" + +#~ msgid "Published articles and generated feeds" +#~ msgstr "Publikované Älánky a generované kanály" + +#~ msgid "Articles shared by URL" +#~ msgstr "ÄŒlánky sdílené pomocí URL" + +#~ msgid "These feeds have not been updated because of errors:" +#~ msgstr "Kanály, které nebyly aktualizovány kvůli chybám:" + +#~ msgid "Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings." +#~ msgstr "Váš prohlížeÄ nepodporuje Javascript, který je vyžadován pro správnou funkci aplikace. Zkontrolujte prosím nastavení prohlížeÄe." + +#~ msgid "Hello," +#~ msgstr "Ahoj," + +#~ msgid "Regular version" +#~ msgstr "Normální verze" + +#~ msgid "Home" +#~ msgstr "Domů" + +#~ msgid "Nothing found (click to reload feed)." +#~ msgstr "Nic nenalezeno (kliknÄ›te pro obnovení kanálu)." + +#~ msgid "Open regular version" +#~ msgstr "Otevřít normální verzi" + +#~ msgid "Enable categories" +#~ msgstr "Povolit kategorie" + +#~ msgid "ON" +#~ msgstr "Zapnuto" + +#~ msgid "OFF" +#~ msgstr "Vypnuto" + +#~ msgid "Browse categories like folders" +#~ msgstr "Procházet kategorie jako složky" + +#~ msgid "Show images in posts" +#~ msgstr "Zobrazit obrázky v příspÄ›vcích" + +#~ msgid "Hide read articles and feeds" +#~ msgstr "Skrýt pÅ™eÄtené Älánky a kanály" + +#~ msgid "Sort feeds by unread count" +#~ msgstr "Řadit kanály dle poÄtu nepÅ™eÄtených Älánků" + +#~ msgid "Article archive" +#~ msgstr "Archiv Älánků" + +#~ msgid "Example Pane" +#~ msgstr "Ukázková výplň" + +#~ msgid "Sample value" +#~ msgstr "Ukázková hodnota" + +#~ msgid "Set value" +#~ msgstr "Nastavit hodnotu" + +#~ msgid "Mark %d displayed article as read?" +#~ msgid_plural "Mark %d displayed articles as read?" +#~ msgstr[0] "OznaÄit %d zobrazený Älánek jako pÅ™eÄtený?" +#~ msgstr[1] "OznaÄit %d zobrazené Älánky jako pÅ™eÄtené?" +#~ msgstr[2] "OznaÄit %d zobrazených Älánků jako pÅ™eÄtené?" + +#~ msgid "Error: unable to load article." +#~ msgstr "Chyba: nelze naÄíst Älánek." + +#~ msgid "%d more..." +#~ msgid_plural "%d more..." +#~ msgstr[0] "%d další..." +#~ msgstr[1] "%d další..." +#~ msgstr[2] "%d dalších..." + +#~ msgid "No unread feeds." +#~ msgstr "Žádné nepÅ™eÄtené kanály." + +#~ msgid "Load more..." +#~ msgstr "NaÄíst další..." + +#~ msgid "Switch to digest..." +#~ msgstr "PÅ™epnout na souhrn..." + +#~ msgid "Show tag cloud..." +#~ msgstr "Zobrazit seznam znaÄek..." + +#~ msgid "Click to play" +#~ msgstr "KliknÄ›te pro pÅ™ehrání" + +#~ msgid "Play" +#~ msgstr "PÅ™ehrát" + +#~ msgid "Visit the website" +#~ msgstr "NavÅ¡tívit webové stránky" + +#~ msgid "Select theme" +#~ msgstr "Zvolit motiv" + +#~ msgid "I have scanned the code and would like to enable OTP" +#~ msgstr "NaÄetl jsem kód do aplikace a chtÄ›l bych povolit OTP" + +#~ msgid "Playing..." +#~ msgstr "PÅ™ehrává se..." + +#~ msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" +#~ msgstr "Nelze odeslat soubor. Možná musíte upravit hodnotu upload_max_filesize v php.ini (souÄasná hodnota: %s)" + +#~ msgid "Default interval between feed updates" +#~ msgstr "Výchozí interval mezi aktualizacemi kanálů" + +#~ msgid "Could not update database" +#~ msgstr "Nelze aktualizovat databázi" + +#~ msgid "Could not find necessary schema file, need version:" +#~ msgstr "Nelze nalézt potÅ™ebný soubor schématu, požadovaná verze:" + +#~ msgid ", found: " +#~ msgstr ", nalezeno: " + +#~ msgid "Tiny Tiny RSS database is up to date." +#~ msgstr "Databáze Tiny Tiny RSS je aktuální." + +#~ msgid "Please backup your database before proceeding." +#~ msgstr "PÅ™ed pokraÄováním prosím zazálohujte databázi." + +#~ msgid "Your Tiny Tiny RSS database needs update to the latest version (%d to %d)." +#~ msgstr "VaÅ¡e databáze Tiny Tiny RSS potÅ™ebuje aktualizaci na poslední verzi (%d na %d)." + +#~ msgid "Performing updates..." +#~ msgstr "Provádím aktualizace..." + +#~ msgid "Updating to version %d..." +#~ msgstr "Aktualizuji na verzi %d..." + +#~ msgid "Checking version... " +#~ msgstr "Kontroluji verzi... " + +#~ msgid "OK!" +#~ msgstr "OK" + +#~ msgid "ERROR!" +#~ msgstr "CHYBA" + +#~ msgid "Finished. Performed %d update up to schema version %d." +#~ msgid_plural "Finished. Performed %d updates up to schema version %d." +#~ msgstr[0] "DokonÄeno. Provedena %d aktualizace na schéma verze %d." +#~ msgstr[1] "DokonÄeno. Provedeny %d aktualizace na schéma verze %d." +#~ msgstr[2] "DokonÄeno. Provedeno %d aktualizací na schéma verze %d." + +#~ msgid "Your database schema is from a newer version of Tiny Tiny RSS." +#~ msgstr "Schéma vaší databáze je z novÄ›jší verze Tiny Tiny RSS." + +#~ msgid "Found schema version: %d, required: %d." +#~ msgstr "Nalezeno schéma verze: %d, vyžadováno: %d." + +#~ msgid "Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer version and continue." +#~ msgstr "Aktualizace schématu není možná. Aktualizujte Tiny Tiny RSS na novÄ›jší verzi a pokraÄujte." + +#~ msgid "Title or Content" +#~ msgstr "Nadpis nebo obsah" + +#~ msgid "Link" +#~ msgstr "Odkaz" + +#~ msgid "Content" +#~ msgstr "Obsah" + +#~ msgid "Article Date" +#~ msgstr "Datum Älánku" + +#~ msgid "Set starred" +#~ msgstr "Nastavit hvÄ›zdiÄku" + +#~ msgid "Assign tags" +#~ msgstr "PÅ™iÅ™adit znaÄky" + +#~ msgid "Modify score" +#~ msgstr "Upravit hodnocení" + +#~ 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 "Volba užiteÄná pro sledování nÄ›kolika agregátorů s ÄásteÄnÄ› prolínající databází uživatelů. Pokud je vypnuta, slouÄí stejné příspÄ›vky z různých zdrojů a zobrazí je jako jeden." + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Pokud povoleno, tak budou nadpisy ve Speciálních kanálech a Å títky seskupeny dle kanálů" + +#~ msgid "Enable external API" +#~ msgstr "Povolit externí API" + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Formát data vypadá v pořádku:" + +#~ msgid "Date syntax is incorrect." +#~ msgstr "Formát data je neplatný." diff --git a/locale/da_DA/LC_MESSAGES/messages.mo b/locale/da_DA/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000..bdfcb3dc01 Binary files /dev/null and b/locale/da_DA/LC_MESSAGES/messages.mo differ diff --git a/locale/da_DA/LC_MESSAGES/messages.po b/locale/da_DA/LC_MESSAGES/messages.po new file mode 100644 index 0000000000..e23fcac1cb --- /dev/null +++ b/locale/da_DA/LC_MESSAGES/messages.po @@ -0,0 +1,3737 @@ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"Last-Translator: Brendan \n" +"Language-Team: OpenSRS brendan@tucows.com>\n" +"Language: es_LA\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Creation-Date: 2014-06-02 12:21+0400\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: unknown\n" + +#: backend.php:73 +msgid "Use default" +msgstr "Brug standard" + +#: backend.php:74 +msgid "Never purge" +msgstr "Tøm aldrig" + +#: backend.php:75 +msgid "1 week old" +msgstr "1 uge gammel" + +#: backend.php:76 +msgid "2 weeks old" +msgstr "2 uge gammel" + +#: backend.php:77 +msgid "1 month old" +msgstr "1 mÃ¥ned gammel" + +#: backend.php:78 +msgid "2 months old" +msgstr "2 mÃ¥neder gammel" + +#: backend.php:79 +msgid "3 months old" +msgstr "3 mÃ¥neder gammel" + +#: backend.php:82 +msgid "Default interval" +msgstr "Standardinterval" + +#: backend.php:83 +#: backend.php:93 +msgid "Disable updates" +msgstr "Deaktiver opdateringer" + +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" +msgstr "Hvert 15. minut" + +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" +msgstr "Hvert 30. minut" + +#: backend.php:86 +#: backend.php:96 +msgid "Hourly" +msgstr "Hver time" + +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" +msgstr "Hver 4. time" + +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" +msgstr "Hver 12. time" + +#: backend.php:89 +#: backend.php:99 +msgid "Daily" +msgstr "Dagligt" + +#: backend.php:90 +#: backend.php:100 +msgid "Weekly" +msgstr "Ugentligt" + +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 +msgid "User" +msgstr "Bruger" + +#: backend.php:104 +msgid "Power User" +msgstr "Superbruger" + +#: backend.php:105 +msgid "Administrator" +msgstr "Administrator" + +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "" + +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "" + +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "Sanity-tjek af backend mislykkedes" + +#: errors.php:17 +msgid "Frontend sanity check failed." +msgstr "Sanity-tjek af forend mislykkedes" + +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "" + +#: errors.php:21 +msgid "Request not authorized." +msgstr "Anmodning ikke autoriseret." + +#: errors.php:23 +msgid "No operation to perform." +msgstr "Der skal ikke udføres nogen handling." + +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "" + +#: errors.php:27 +msgid "Denied. Your access level is insufficient to access this page." +msgstr "" + +#: errors.php:29 +msgid "Configuration check failed" +msgstr "Konfigurationstjek mislykkedes" + +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "" + +#: errors.php:35 +msgid "SQL escaping test failed, check your database and PHP configuration" +msgstr "" + +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "Feed ikke fundet." + +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "Bruger ikke fundet" + +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "Indlæser, vent venligst ..." + +#: index.php:167 +msgid "Collapse feedlist" +msgstr "Skjul feed-liste" + +#: index.php:170 +msgid "Show articles" +msgstr "Vis artikler" + +#: index.php:173 +msgid "Adaptive" +msgstr "Tilpasset" + +#: index.php:174 +msgid "All Articles" +msgstr "Alle artikler" + +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "Markeret" + +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "Udgivet" + +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 +msgid "Unread" +msgstr "Ulæst" + +#: index.php:178 +msgid "With Note" +msgstr "Med note" + +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Ignorer resultat" + +#: index.php:182 +msgid "Sort articles" +msgstr "Sorter artikler" + +#: index.php:185 +msgid "Default" +msgstr "Standard" + +#: index.php:186 +msgid "Newest first" +msgstr "Nyeste først" + +#: index.php:187 +msgid "Oldest first" +msgstr "Ældste først" + +#: index.php:188 +msgid "Title" +msgstr "Overskrift" + +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 +msgid "Mark as read" +msgstr "Marker som læst" + +#: index.php:195 +msgid "Older than one day" +msgstr "Ældre end en dag" + +#: index.php:198 +msgid "Older than one week" +msgstr "Ældre end en uge" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "Ældre end to uger" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "Kommunikationsproblem med server" + +#: index.php:223 +msgid "Actions..." +msgstr "Handlinger ..." + +#: index.php:225 +msgid "Preferences..." +msgstr "Præferencer ..." + +#: index.php:226 +msgid "Search..." +msgstr "Søg ..." + +#: index.php:227 +msgid "Feed actions:" +msgstr "Feed-handlinger:" + +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "Abonner pÃ¥ feedet ..." + +#: index.php:229 +msgid "Edit this feed..." +msgstr "Rediger dette feed" + +#: index.php:230 +msgid "Rescore feed" +msgstr "Gendan feed" + +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "Aflys abonnement" + +#: index.php:232 +msgid "All feeds:" +msgstr "Alle feeds:" + +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Vis/skjul læste feeds" + +#: index.php:235 +msgid "Other actions:" +msgstr "Andre handlinger:" + +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "Skift til widescreen" + +#: index.php:237 +msgid "Create label..." +msgstr "Opret etiket ..." + +#: index.php:238 +msgid "Create filter..." +msgstr "Opret filter ..." + +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "Hjælp til tastaturgenveje" + +#: index.php:248 +msgid "Logout" +msgstr "Log af" + +#: index.php:254 +msgid "Updates are available from Git." +msgstr "" + +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "Præferencer" + +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "Tastaturgenveje" + +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Luk præferencer" + +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Feeds" + +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "Filtre" + +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Etiketter" + +#: prefs.php:133 +msgid "Users" +msgstr "Brugere" + +#: prefs.php:136 +msgid "System" +msgstr "System" + +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "Opret ny konto" + +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "" + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +#, fuzzy +msgid "Return to Tiny Tiny RSS" +msgstr "Opdater Tiny Tiny RSS" + +#: register.php:218 +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 "" + +#: register.php:224 +msgid "Desired login:" +msgstr "Ønsket logon:" + +#: register.php:227 +msgid "Check availability" +msgstr "Tjek tilgængelighed" + +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "E-mail:" + +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "" + +#: register.php:235 +msgid "Submit registration" +msgstr "Indsend registrering" + +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "" + +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "" + +#: register.php:287 +msgid "Registration failed." +msgstr "Registrering mislykkedes." + +#: register.php:334 +msgid "Account created successfully." +msgstr "Konto blev oprettet med succes." + +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "" + +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "" + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "Ikke kategoriseret" + +#: include/feedbrowser.php:84 +#, fuzzy, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "Arkiverede artikler" +msgstr[1] "Arkiverede artikler" + +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "Der blev ikke fundet nogen feeds." + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "Navigation" + +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "Ã…bn næste feed" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "Ã…bn forrige feed" + +#: include/functions2.php:55 +msgid "Open next article" +msgstr "Ã…bn næste artikel" + +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "Ã…bn forrige artikel" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Vise søgedialog" + +#: include/functions2.php:62 +msgid "Article" +msgstr "Artikel" + +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "Skift markeret" + +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "Skift udgivne" + +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "Skift ulæst" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Rediger tags" + +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "Afvis valgte" + +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "Afvis læste" + +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "Ã…bn i et nyt vindue" + +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "Marker nedenstÃ¥ende som læst" + +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "Marker ovenstÃ¥ende som læst" + +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "Rul nedad" + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "Rul opad" + +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "Vælg artikel under markør" + +#: include/functions2.php:75 +msgid "Email article" +msgstr "E-mail-artikel" + +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "Luk/skjul artikel" + +#: include/functions2.php:77 +#, fuzzy +msgid "Toggle article expansion (combined mode)" +msgstr "Skift kombineret modus" + +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "Skift integreret original" + +#: include/functions2.php:80 +msgid "Article selection" +msgstr "Artikelvalg" + +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "Vælg alle artikler" + +#: include/functions2.php:82 +msgid "Select unread" +msgstr "Vælg ulæste" + +#: include/functions2.php:83 +msgid "Select starred" +msgstr "Vælg markerede" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "Vælg udgivne" + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "Inverter valg" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "Fravælg alt" + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Feed" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "Opdater aktuelt feed" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "Vis/skjul læste feeds" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "Abonner pÃ¥ feedet" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Rediger feed" + +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "Reverser overskrifter" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "Udfør fejlfinding i feed-opdatering" + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +#, fuzzy +msgid "Mark all feeds as read" +msgstr "Marker feed som læst" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "Vis/skjul aktuel kategori" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "Skift kombineret modus" + +#: include/functions2.php:98 +#, fuzzy +msgid "Toggle auto expand in combined mode" +msgstr "Skift kombineret modus" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "GÃ¥ til" + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "Alle artikler" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "Ny" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Tag Cloud" + +#: include/functions2.php:106 +msgid "Other" +msgstr "Andet" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "Opret etiket" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "Opret filter" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "Vis/skjul sidebjælke" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "Vis hjælpedialog" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Søgeresultater: %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +#, fuzzy +msgid "comment" +msgid_plural "comments" +msgstr[0] "kommentarer" +msgstr[1] "kommentarer" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +msgid "comments" +msgstr "kommentarer" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "ingen tags" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "Oprindeligt fra:" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "Feedets webadresse" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "Luk dette vindue" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(rediger note)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "ukendt type" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "Vedhæftninger" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "Speciel" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Alle feeds" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Markerede artikler" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Udgivne artikler" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "Nye artikler" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "Arkiverede artikler" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "Senest læst" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "Logon:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "Adgangskode:" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "Jeg har glemt min adgangskode" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "Profil:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "Standardprofil" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "Brug mindre trafik" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "" + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "Husk mig" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "Log pÃ¥" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "" + +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "" + +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "" + +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "" + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Tastaturgenveje" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "Shift" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Emne i hjælp ikke fundet." + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +#, fuzzy +msgid "Share with Tiny Tiny RSS" +msgstr "Opdater Tiny Tiny RSS" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Overskrift:" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "Indhold:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "Etiketter:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "" + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "Del" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "Annuller" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "Ikke logget pÃ¥" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Forkert brugernavn eller adgangskode" + +#: classes/handler/public.php:666 +#, fuzzy, php-format +msgid "Already subscribed to %s." +msgstr "Abonneret pÃ¥ %s" + +#: classes/handler/public.php:669 +#, fuzzy, php-format +msgid "Subscribed to %s." +msgstr "Abonneret pÃ¥ %s" + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "" + +#: classes/handler/public.php:675 +#, fuzzy, php-format +msgid "No feeds found in %s." +msgstr "Der blev ikke fundet nogen feeds." + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "Der er fundet flere webadresser til feed" + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "" + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "Abonner på valgte feed" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Rediger abonnementsindstillinger" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "Genoprettelse af adgangskode" + +#: classes/handler/public.php:805 +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "" + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "Nulstil adgangskode" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "" + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "Gå tilbage" + +#: classes/handler/public.php:878 +#, fuzzy +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] meddelelse om adgangskodeændring" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "" + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "" + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "Opdatering af database" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Udfør opdateringer" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "Vis som RSS-feed" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "Vis som RSS" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "Sidste opdatering: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "Alle" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Inverter" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Ingen" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "Mere ..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Valg af skift:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Valg:" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "Indstil resultat" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "Arkiv" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "Gå tilbage" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "Slet" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "Videresend via e-mail" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Feed:" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "Feed ikke fundet." + +#: classes/feeds.php:268 +msgid "Never" +msgstr "Aldrig" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "Importeret på %s" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +msgid "mark feed as read" +msgstr "marker feed som læst" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "Skjul artikel" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "" + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "" + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "" + +#: classes/feeds.php:778 +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 "" + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "" + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, fuzzy, php-format +msgid "Feeds last updated at %s" +msgstr "Sidste opdatering: %s" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "Der er ikke valgt noget feed." + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "Webadresse til feed eller webside" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "Placer i kategori:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "Tilgængelige feeds" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "Godkendelse" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "Logon" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "Adgangskode" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Dette feed kræver godkendelse." + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "Abonner" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "Flere feeds" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "Søg" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "Populære feeds" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "Feed-arkiv" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "grænse:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "Fjern" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "Led efter" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +msgid "Search syntax" +msgstr "Søgesyntaks" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "Artikel ikke fundet" + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Gem" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "OPML-hjælpeprogram" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "Importerer OPML ..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "Vend tilbage til præferencer" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "Tilføjer feed: %s" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "Dupliker feed: %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "Tilføjer etiket: %s" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "Dupliker etiket: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "Tilføjer filter ..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "Behandler kategori: %s" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "" + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "" + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "" + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Fejl under dokumentparsing." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "" + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "Fejllog" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "Opdater" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "Ryd log" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Fejl" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "Filnavn" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Meddelelse" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Dato" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Bruger ikke fundet" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "Registreret" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Sidst logget på" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "Antal abonnerede feeds" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Abonnerede feeds" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Adgangsniveau: " + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Indstillinger" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "" + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] meddelelse om adgangskodeændring" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "Vælg" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Opret bruger" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "Nærmere oplysninger" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Rediger" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Adgangsniveau" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "Sidste logon" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Klik for at redigere" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "Der er ikke defineret nogen brugere." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "Der er ikke fundet matchende brugere." + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Sæt flueben for at aktivere felt" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, fuzzy, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "Rediger feed" +msgstr[1] "Rediger feed" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "Feed-overskrift" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "Opdater" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Artikeltømning:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "" + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "Skjul fra Populære feeds" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "Inkluder i e-mail-digest" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Vis altid billedvedhæftninger" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "Inkorporer ikke billeder" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Cache billeder lokalt" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +#, fuzzy +msgid "Mark updated articles as unread" +msgstr "Marker feed som læst" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "Ikon" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "Erstat" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "Forny abonnement på push-opdateringer" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "" + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Alt færdigt." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "Feeds med fejl" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "Inaktive feeds" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "Rediger valgte feeds" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "Nulstil sorteringsrækkefølge" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "Batchabonnement" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "Kategorier" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "Tilføj kategori" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "Fjern valgte" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "Flere handlinger ..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "Manuel tømning" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "Ryd feed-data" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Nulstil artikler" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "" + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "" + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "Importer min OPML" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "Filnavn:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "Inkluder indstillinger" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "Eksporter OPML" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "" + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "" + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "Webadresse til offentlig OPML" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "Vis webadresse på udgivne OPML" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Firefox-integration" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "" + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "" + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "" + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "Vis webadresse" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "Ryd alle genererede webadresser" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "Klik for at redigere feed" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "Aflys abonnement for valgte feeds" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "Feeds kræver godkendelse." + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "Artikler, der matcher dette filter:" + +#: classes/pref/filters.php:185 +#, fuzzy +msgid "No recent articles matching this filter have been found." +msgstr "Artikler, der matcher dette filter:" + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(inverter)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Billedtekst" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "Tilpasning" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "Tilføj" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "Anvend handlinger" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Aktiveret" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "Match enhver regel" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "Inverter tilpasning" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "Test" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "Kombiner" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Opret" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "Inverter tilpasning af normalt udtryk" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "på feltet" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "i" + +#: classes/pref/filters.php:947 +msgid "Wiki: Filters" +msgstr "Wiki: Filtre" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "Gem regel" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "Tilføj regel" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Udfør handling" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "med parametre:" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "Gem handling" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "Tilføj handling" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[Ingen billedtekst]" + +#: classes/pref/filters.php:1044 +#, fuzzy, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "Tilføj regel" +msgstr[1] "Tilføj regel" + +#: classes/pref/filters.php:1059 +#, fuzzy, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "Tilføj handling" +msgstr[1] "Tilføj handling" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "Farver" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "Forgrund:" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "Baggrund:" + +#: classes/pref/labels.php:232 +#, fuzzy, php-format +msgid "Created label %s" +msgstr "Opret etiket" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Gennemsigtige farver" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Generelt" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Grænseflade" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Avanceret" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "Digest" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "Tillad duplikerede artikler" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Tags på forbudt liste" + +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "" + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "" + +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "" + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "Visning af kombineret feed" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "" + +#: classes/pref/prefs.php:30 +#, fuzzy +msgid "Confirm marking feed as read" +msgstr "marker feed som læst" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "" + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "Opdateringsinterval for standardfeed" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "" + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Mark articles in e-mail digest as read" +msgstr "Inkluder i e-mail-digest" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "Aktiver e-mail-digest" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "Bruger UTC-tidszone" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "Aktiver API-adgang" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Aktiver feed-kategorier" + +#: classes/pref/prefs.php:38 +#, fuzzy +msgid "Sort feeds by unread articles count" +msgstr "Tøm ulæste artikler" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "" + +#: classes/pref/prefs.php:40 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "Tøm ulæste artikler" + +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "Langt datoformat" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "" + +#: classes/pref/prefs.php:43 +#, fuzzy +msgid "On catchup show next feed" +msgstr "Åbn næste feed" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "" + +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "Tøm ulæste artikler" + +#: classes/pref/prefs.php:46 +#, fuzzy +msgid "Reverse headline order (oldest first)" +msgstr "Reverser overskrifter" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "Kort datoformat" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "" + +#: classes/pref/prefs.php:51 +#, fuzzy +msgid "Do not embed images in articles" +msgstr "Inkorporer ikke billeder" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "" + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "" + +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "Tilpas designark" + +#: classes/pref/prefs.php:53 +#, fuzzy +msgid "Customize CSS stylesheet to your liking" +msgstr "Tilpas designark" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "Tidszone" + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" + +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "Sprog" + +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "Tema" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "Konfigurationen blev gemt." + +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "" + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "" + +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "Personlige oplysninger / Godkendelse" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "Personlige oplysninger" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "Fulde navn" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "E-mail" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Adgangsniveau" + +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Gem data" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "" + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "" + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Tidligere adgangskode" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Ny adgangskode" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Bekræft adgangskode" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "Skift adgangskode" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "Engangsadgangskoder / Godkender" + +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "" + +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "Indtast din adgangskode" + +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "Deaktiver OTP" + +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "" + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "" + +#: classes/pref/prefs.php:403 +#, fuzzy +msgid "Enter the generated one time password" +msgstr "Forkert engangsadgangskode" + +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "Aktiver OTP" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "" + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "" + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "Tilpas" + +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "Registrer" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "Ryd" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Gem konfiguration" + +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "Gem og luk præferencer" + +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "Administrer profiler" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "Nulstil til standardindstillinger" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "Plugins" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "" + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "" + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "Systemplugins" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "Plugin" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "Beskrivelse" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "Version" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "Forfatter" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "flere oplysninger" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "Ryd data" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "Brugerplugins" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "Aktiver valgte plugins" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "Forkert engangsadgangskode" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "Forkert adgangskode" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "" + +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "Opret profil" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(aktiv)" + +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "Fjern valgte profiler" + +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "Aktiver profil" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "" + +#: classes/dlg.php:48 +#, fuzzy +msgid "Your Public OPML URL is:" +msgstr "Webadresse til offentlig OPML" + +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "Generer ny webadresse" + +#: 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 "" + +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "Sidste opdatering:" + +#: 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 "" + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" + +#: plugins/af_psql_trgm/init.php:112 +#, fuzzy +msgid "Show related articles" +msgstr "Delte artikler" + +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +#, fuzzy +msgid "Mark similar articles as read" +msgstr "Marker ovenstående som læst" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +#, fuzzy +msgid "Global settings" +msgstr "Inkluder indstillinger" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "Aktiver feed-kategorier" + +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" + +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" + +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "" + +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "" + +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "Rediger artikelnote" + +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "Der er ikke indlæst nogen fil." + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "" + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "" + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "" + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "Importer mine markerede elementer" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[Fremsendt]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "Flere artikler" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "" + +#: plugins/mailto/init.php:75 +#, fuzzy +msgid "Forward selected article(s) by email." +msgstr "Videresend artikel via e-mail" + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "" + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "Luk denne dialog" + +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "Import og eksport" + +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "" + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "Eksporter mine data" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Import" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "" + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "" + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "Færdig: " + +#: plugins/import_export/init.php:388 +#, fuzzy, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "Rediger artikelnote" +msgstr[1] "Rediger artikelnote" + +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "" +msgstr[1] "" + +#: plugins/import_export/init.php:390 +#, fuzzy, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "Der er ikke valgt noget feed." +msgstr[1] "Der er ikke valgt noget feed." + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "" + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "Forbered data" + +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "NSFW-plugin" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "Konfiguration gemt." + +#: plugins/auth_internal/init.php:65 +#, fuzzy +msgid "Please enter your one time password:" +msgstr "Forkert engangsadgangskode" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "Adgangskoden er blevet ændret." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "Gammel adgangskode er forkert." + +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "Luk artikel" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "" + +#: plugins/mail/init.php:34 +#, fuzzy +msgid "Mail plugin" +msgstr "Brugerplugins" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "" + +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "Til:" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "Emne:" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "Send e-mail" + +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "Tilknyttet" + +#: 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:404 +msgid "Instance URL" +msgstr "Webadresse til instans" + +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "Adgangsnøgle:" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "Adgangsnøgle" + +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "" + +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "Generer ny nøgle" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "Tilknyt instans" + +#: 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 "" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "Sidst forbundet" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "Status" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "Gemte feeds" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "Opret link" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "Konfiguration gemt." + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "Tjek tilgængelighed" + +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "Rediger artikelnote" + +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "Delte artikler" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +#, fuzzy +msgid "Statistics" +msgstr "Status" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "Markerede artikler" + +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "Ryd data" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, php-format +msgid "Currently stored as: %s" +msgstr "" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "Bogmærker" + +#: 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 "" + +#: plugins/bookmarklets/init.php:26 +#, fuzzy, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "Abonneret på %s" + +#: plugins/bookmarklets/init.php:31 +#, fuzzy +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Opdater Tiny Tiny RSS" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "" + +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "Annuller deling af alle artikler" + +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "Del via webadresse" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "" + +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "Annuller deling af artikel" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "" + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "" + +#: js/functions.js:93 +msgid "Close" +msgstr "" + +#: js/functions.js:104 +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "" + +#: js/functions.js:224 +msgid "Click to close" +msgstr "Klik for at lukke" + +#: js/functions.js:1051 +msgid "Edit action" +msgstr "Rediger handling" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "Opret filter" + +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "" + +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "Abonnement nulstillet." + +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "Aflyse abonnement fra %s?" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "Fjerner feed ..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "Indtast kategorititel:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Prøver at ændre adresse ..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "Der er ikke valgt nogen feeds." + +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "" + +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "Feeds med opdateringsfejl" + +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "Fjern valgte feeds?" + +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "Fjerner valgte feeds ..." + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "Rediger kategori" + +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "Fjern kategori" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "Inverter" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "Indtast brugernavn:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "" + +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "Tilføjer bruger ..." + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Redigeringsprogram til bruger" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "Gemmer data ..." + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "Rediger filter" + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "Fjern filter?" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "Fjerner filter ..." + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "Fjerne valgte etiketter?" + +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "Fjerner valgte etiketter ..." + +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "Der er ikke valgt nogen etiketter." + +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "" + +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "Fjerner valgte brugere ..." + +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "Der er ikke valgt nogen brugere." + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "Fjern valgte filtre?" + +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "Fjerner valgte filtre ..." + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "Der er ikke valgt nogen filtre." + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "Aflyse abonnement for valgte feeds?" + +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "Aflyser abonnement for valgte feeds ..." + +#: js/prefs.js:429 +#, fuzzy +msgid "Please select only one feed." +msgstr "Rydder valgte feed ..." + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "" + +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "Rydder valgte feed ..." + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "" + +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "Tømmer valgte feed ..." + +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "" + +#: js/prefs.js:517 +#, fuzzy +msgid "Reset password of selected user?" +msgstr "Nulstil adgangskode" + +#: js/prefs.js:520 +#, fuzzy +msgid "Resetting password for selected user..." +msgstr "Fjerner valgte brugere ..." + +#: js/prefs.js:565 +msgid "User details" +msgstr "Brugeroplysninger" + +#: js/prefs.js:589 +#, fuzzy +msgid "Please select only one filter." +msgstr "Fjern valgte filtre?" + +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "Kombiner valgte filtre?" + +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "Sammensætter filtre ..." + +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "Rediger flere feeds" + +#: js/prefs.js:695 +#, fuzzy +msgid "Save changes to selected feeds?" +msgstr "Abonner på valgte feed" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "OPML-import" + +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "" + +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "Importerer, vent venligst ..." + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "Nulstil til standardindstillinger?" + +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "Abonnerer på feeds ..." + +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "" + +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "" + +#: js/tt-rss.js:127 +#, fuzzy +msgid "Mark all articles as read?" +msgstr "Marker ovenstående som læst" + +#: js/tt-rss.js:133 +#, fuzzy +msgid "Marking all feeds as read..." +msgstr "Marker feed som læst" + +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "" + +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "" + +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "" + +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "" + +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "" + +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +#, fuzzy +msgid "Please select some feed first." +msgstr "Rydder valgte feed ..." + +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "Ændr resultater af artikler i %s?" + +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "Ændrer artikelresultater ..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "Der er ikke valgt nogen artikler." + +#: js/viewfeed.js:1018 +#, fuzzy, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "Ændr resultater af artikler i %s?" +msgstr[1] "Ændr resultater af artikler i %s?" + +#: js/viewfeed.js:1020 +#, fuzzy, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "Aktiver valgte profil?" +msgstr[1] "Aktiver valgte profil?" + +#: js/viewfeed.js:1062 +#, fuzzy, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "Arkiverede artikler" +msgstr[1] "Arkiverede artikler" + +#: js/viewfeed.js:1065 +#, fuzzy, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "Arkiverede artikler" +msgstr[1] "Arkiverede artikler" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "" + +#: js/viewfeed.js:1112 +#, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "" +msgstr[1] "" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "Rediger artikeltags" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "Gemmer artikeltags ..." + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +#, fuzzy +msgid "Click to open next unread feed." +msgstr "Klik for at redigere feed" + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "Åbn oprindelige artikel" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Tildel etiket" + +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "Fjern etiket" + +#: js/viewfeed.js:2159 +msgid "Select articles in group" +msgstr "Vælg artikler i gruppen" + +#: js/viewfeed.js:2168 +msgid "Mark group as read" +msgstr "Marker gruppe som læst" + +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "Marker feed som læst" + +#: js/viewfeed.js:2235 +#, fuzzy +msgid "Please enter new score for selected articles:" +msgstr "Indtast kategorititel:" + +#: js/viewfeed.js:2305 +#, fuzzy +msgid "Please enter new score for this article:" +msgstr "Indtast kategorititel:" + +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "Artiklens webadresse:" + +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "" + +#: plugins/af_psql_trgm/init.js:11 +#, fuzzy +msgid "Related articles" +msgstr "Delte artikler" + +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "Gemmer artikelnote ..." + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Import af Google Reader" + +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "" + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "Videresend artikel via e-mail" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "Eksporter data" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "" +msgstr[1] "" + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Dataimport" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "" + +#: plugins/shorten_expanded/init.js:37 +msgid "Click to expand article" +msgstr "Klik for at udvide artikel" + +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" + +#: plugins/mail/mail.js:38 +msgid "Your message has been sent." +msgstr "" + +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "Tilknyt forekomst" + +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "Rediger forekomst" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "Fjerne valgte forekomster?" + +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "Fjerner valgte forekomster ..." + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "Der er ikke valgt nogen forekomster." + +#: plugins/instances/instances.js:156 +#, fuzzy +msgid "Please select only one instance." +msgstr "Fjerne valgte forekomster?" + +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "Ryd feed-data" + +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "" + +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "Del artikel ved brug af webadresse" + +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "" + +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "Prøver at ændre webadresse ..." + +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "" + +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "Prøver at annullere deling ..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "" + +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "Rydder webadresser ..." + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "Delte webadresser er ryddet." + +#: js/feedlist.js:416 +#: js/feedlist.js:444 +#, fuzzy +msgid "Mark all articles in %s as read?" +msgstr "Ændr resultater af artikler i %s?" + +#: js/feedlist.js:435 +#, fuzzy +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "Ændr resultater af artikler i %s?" + +#: js/feedlist.js:438 +#, fuzzy +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "Ændr resultater af artikler i %s?" + +#: js/feedlist.js:441 +#, fuzzy +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "Ændr resultater af artikler i %s?" + +#: js/functions.js:615 +msgid "Error explained" +msgstr "Fejl forklaret" + +#: js/functions.js:697 +msgid "Upload complete." +msgstr "Indlæsning færdig." + +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "Fjern gemt feed-ikon?" + +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "Fjerner feed-ikon ..." + +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "Feed-ikon fjernet." + +#: js/functions.js:753 +#, fuzzy +msgid "Please select an image file to upload." +msgstr "Fjern valgte filtre?" + +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "" + +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "Indlæser, vent venligst ..." + +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "Indtast mærketekst:" + +#: js/functions.js:777 +#, fuzzy +msgid "Can't create label: missing caption." +msgstr "Indtast mærketekst:" + +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "Abonner på feedet" + +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "" + +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "Abonneret på %s" + +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "" + +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "" + +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "Udvid til valgt feed" + +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "" + +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "XML-validering mislykkedes: %s" + +#: js/functions.js:895 +#, fuzzy +msgid "You are already subscribed to this feed." +msgstr "Abonneret på %s" + +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "Rediger regel" + +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "Rediger feed" + +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "Flere feeds" + +#: js/functions.js:1878 +msgid "Help" +msgstr "Hjælp" + +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "" + +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "Fjerner kategori ..." + +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "Fjern valgte kategorier?" + +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "Fjerner valgte kategorier ..." + +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "Der er ikke valgt nogen kategorier." + +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "Kategorititel:" + +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "Opretter kategori ..." + +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "Feeds uden nylige opdateringer" + +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "" + +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "Rydder feed ..." + +#: js/prefs.js:1323 +#, fuzzy +msgid "Rescore articles in selected feeds?" +msgstr "Ændr resultater af artikler i %s?" + +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "Genopretter valgte feeds ..." + +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "" + +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "Genopretter feeds ..." + +#: js/prefs.js:1366 +#, fuzzy +msgid "Reset selected labels to default colors?" +msgstr "Fjerne valgte etiketter?" + +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "Profilindstillinger" + +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "" + +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "Fjerner valgte profiler ..." + +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "Der er ikke valgt nogen profiler." + +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "Aktiver valgte profil?" + +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "" + +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "Opretter profil ..." + +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "" + +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "Genererede webadresser er ryddet." + +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Labeleditor" + +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "" + +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "Annuller søgning" + +#: js/viewfeed.js:174 +msgid "New articles found, reload feed to continue." +msgstr "" + +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Fjern stjerne fra artikel" + +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "Sæt stjerne på artikel" + +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "Annuller udgivelse af artikel" + +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Udgiv artikel" + +#: js/viewfeed.js:662 +#, fuzzy +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "Der er ikke valgt nogen artikel." +msgstr[1] "Der er ikke valgt nogen artikel." + +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "Der er ikke valgt nogen artikel." + +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "" + +#: js/viewfeed.js:1452 +#, fuzzy +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "Marker ovenstående som læst" +msgstr[1] "Marker ovenstående som læst" + +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "Vis artiklens webadresse" + +#~ msgid "Select by tags..." +#~ msgstr "Vælg efter mærker ..." + +#~ msgid "Limit search to:" +#~ msgstr "Begræns søgning til:" + +#~ msgid "This feed" +#~ msgstr "Dette feed" + +#, fuzzy +#~ msgid "Old password cannot be blank." +#~ msgstr "Gammel adgangskode er forkert." + +#~ msgid "Match:" +#~ msgstr "Match:" + +#~ msgid "Any" +#~ msgstr "Nogen" + +#~ msgid "All tags." +#~ msgstr "Alle tags." + +#~ msgid "Which Tags?" +#~ msgstr "Hvilke tags?" + +#~ msgid "Display entries" +#~ msgstr "Vis elementer" + +#, fuzzy +#~ msgid "Select item(s) by tags" +#~ msgstr "Vælg efter mærker ..." + +#~ msgid "Unread First" +#~ msgstr "Ulæst først" + +#~ msgid "Unknown option: %s" +#~ msgstr "Ukendt indstilling: %s" + +#, fuzzy +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "Ny version til rådighed!" + +#, fuzzy +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "Ny version til rådighed!" + +#~ msgid "See the release notes" +#~ msgstr "Læs produktbemærkninger" + +#~ msgid "Download" +#~ msgstr "Download" + +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Opdater Tiny Tiny RSS" + +#~ msgid "Force update" +#~ msgstr "Tving opdatering" + +#~ msgid "Ready to update." +#~ msgstr "Klar til at opdatere." + +#~ msgid "Start update" +#~ msgstr "Star opdatering" + +#~ msgid "New version available!" +#~ msgstr "Ny version til rådighed!" + +#~ msgid "From:" +#~ msgstr "Fra:" + +#~ msgid "Select:" +#~ msgstr "Vælg:" diff --git a/locale/de_DE/LC_MESSAGES/messages.mo b/locale/de_DE/LC_MESSAGES/messages.mo index eb7168cd73..bcfabe3b98 100644 Binary files a/locale/de_DE/LC_MESSAGES/messages.mo and b/locale/de_DE/LC_MESSAGES/messages.mo differ diff --git a/locale/de_DE/LC_MESSAGES/messages.po b/locale/de_DE/LC_MESSAGES/messages.po index 5e69ee3d88..3052478c10 100644 --- a/locale/de_DE/LC_MESSAGES/messages.po +++ b/locale/de_DE/LC_MESSAGES/messages.po @@ -1,2893 +1,3930 @@ -# German translation for Tiny Tiny RSS. -# Copyright (C) 2008-2009 -# This file is distributed under the same license as the Tiny Tiny RSS package. -# Benjamin Tegge , 2009. -# +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. # +# Translators: +# Walter Weiss , 2013. +# poitzorg , 2012. +# gothfox , 2011. +# joschi , 2011. msgid "" msgstr "" -"Project-Id-Version: Tiny Tiny RSS 1.3.1\n" +"Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-22 22:16+0300\n" -"PO-Revision-Date: \n" -"Last-Translator: Benjamin Tegge \n" -"Language-Team: Deutsch \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2015-07-15 19:12+0100\n" +"Last-Translator: Heiko Adams \n" +"Language-Team: \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: German\n" -"X-Poedit-Country: GERMANY\n" -"X-Poedit-SourceCharset: utf-8\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-Bookmarks: -1,557,558,-1,-1,-1,-1,-1,-1,-1\n" +"X-Generator: Poedit 1.8.1\n" -#: backend.php:107 +#: backend.php:73 msgid "Use default" -msgstr "Standard verweden" +msgstr "Standard verwenden" -#: backend.php:108 +#: backend.php:74 msgid "Never purge" msgstr "Niemals löschen" -#: backend.php:109 +#: backend.php:75 msgid "1 week old" msgstr "Nach 1 Woche" -#: backend.php:110 +#: backend.php:76 msgid "2 weeks old" msgstr "Nach 2 Wochen" -#: backend.php:111 +#: backend.php:77 msgid "1 month old" msgstr "Nach 1 Monat" -#: backend.php:112 +#: backend.php:78 msgid "2 months old" msgstr "Nach 2 Monaten" -#: backend.php:113 +#: backend.php:79 msgid "3 months old" msgstr "Nach 3 Monaten" -#: backend.php:116 +#: backend.php:82 msgid "Default interval" -msgstr "Standard Intervall" +msgstr "Standard-Intervall" -#: backend.php:117 backend.php:127 +#: backend.php:83 backend.php:93 msgid "Disable updates" -msgstr "Aktualisierungen deaktivieren" +msgstr "Nie" -#: backend.php:118 backend.php:128 -msgid "Each 15 minutes" -msgstr "Alle 15 Minuten" +#: backend.php:84 backend.php:94 +msgid "15 minutes" +msgstr "15 Minuten" -#: backend.php:119 backend.php:129 -msgid "Each 30 minutes" -msgstr "Alle 30 Minuten" +#: backend.php:85 backend.php:95 +msgid "30 minutes" +msgstr "30 Minuten" -#: backend.php:120 backend.php:130 +#: backend.php:86 backend.php:96 msgid "Hourly" msgstr "Stündlich" -#: backend.php:121 backend.php:131 -msgid "Each 4 hours" -msgstr "Alle 4 Stunden" +#: backend.php:87 backend.php:97 +msgid "4 hours" +msgstr "4 Stunden" -#: backend.php:122 backend.php:132 -msgid "Each 12 hours" -msgstr "Alle 12 Stunden" +#: backend.php:88 backend.php:98 +msgid "12 hours" +msgstr "12 Stunden" -#: backend.php:123 backend.php:133 +#: backend.php:89 backend.php:99 msgid "Daily" msgstr "Täglich" -#: backend.php:124 backend.php:134 +#: backend.php:90 backend.php:100 msgid "Weekly" msgstr "Wöchentlich" -#: backend.php:137 tt-rss.php:220 modules/pref-prefs.php:329 -msgid "Default" -msgstr "Standard" - -#: backend.php:138 -msgid "Magpie" -msgstr "Magpie" - -#: backend.php:139 -msgid "SimplePie" -msgstr "SimplePie" - -#: backend.php:148 modules/pref-users.php:126 +#: backend.php:103 classes/pref/system.php:51 classes/pref/users.php:119 msgid "User" msgstr "Benutzer" -#: backend.php:149 +#: backend.php:104 msgid "Power User" msgstr "Erfahrener Benutzer" -#: backend.php:150 +#: backend.php:105 msgid "Administrator" msgstr "Administrator" -#: backend.php:538 login_form.php:142 modules/backend-rpc.php:61 -#: modules/popup-dialog.php:106 -#, fuzzy -msgid "Default profile" -msgstr "Standard Artikelgrenzwert" - -#: errors.php:3 -msgid "Unknown error" -msgstr "Unbekannter Fehler" - -#: errors.php:5 -msgid "" -"This program requires XmlHttpRequest to function properly. Your browser " -"doesn't seem to support it." -msgstr "" -"Dieses Programm benötigt XmlHttpRequest um ordnungsgemäß zu funktionieren. " -"Ihr Browser scheint dies nicht zu unterstüzen." +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "Dieses Programm benötigt XmlHttpRequest, um ordnungsgemäß zu funktionieren. Ihr Browser scheint dies nicht zu unterstützen." -#: errors.php:8 -msgid "" -"This program requires cookies to function properly. Your browser doesn't " -"seem to support them." -msgstr "" -"Dieses Programm benötigt Cookies um ordungsgemäß zu funktionieren. Ihr " -"Browser scheint diese nicht zu unterstüzen." +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "Dieses Programm benötigt Cookies, um ordungsgemäß zu funktionieren. Ihr Browser scheint diese nicht zu unterstützen." -#: errors.php:11 -msgid "Backend sanity check failed" -msgstr "Backend Sicherheitsprüfung fehlgeschlagen" +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "Backend Sicherheitsprüfung fehlgeschlagen." -#: errors.php:13 +#: errors.php:17 msgid "Frontend sanity check failed." msgstr "Frontend Sicherheitsprüfung fehlgeschlagen." -#: errors.php:15 -msgid "" -"Incorrect database schema version. <a href='update.php'>Please " -"update</a>." -msgstr "" -"Falsche Version des Datenbank Schemas. <a href='update.php'>Bitte " -"aktualisieren</a>." +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "Falsche Version des Datenbankschemas. <a href='update.php'>Bitte aktualisieren</a>." -#: errors.php:17 +#: errors.php:21 msgid "Request not authorized." msgstr "Nicht autorisierte Abfrage." -#: errors.php:19 +#: errors.php:23 msgid "No operation to perform." msgstr "Keine Funktion ausgewählt." -#: errors.php:21 -msgid "" -"Could not display feed: query failed. Please check label match syntax or " -"local configuration." -msgstr "" -"Kann Feed nicht angezeigen: fehlgeschlagene Abfrage. Bitte überprüfen Sie " -"die Label Übereinstimmungs Syntax oder die lokale Einstellung." +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "Kann Feed nicht angezeigen: Abfrage fehlgeschlagen. Bitte überprüfen Sie die Label Such-Syntax oder die lokale Konfiguration." -#: errors.php:23 +#: errors.php:27 msgid "Denied. Your access level is insufficient to access this page." -msgstr "" -"Verweigert. Sie haben nicht die benötigten Rechte um auf diese Seite zu " -"zugreifen." +msgstr "Zugriff verweigert. Sie haben nicht die benötigten Rechte, um auf diese Seite zuzugreifen." -#: errors.php:25 +#: errors.php:29 msgid "Configuration check failed" -msgstr "Prüfen der Einstellungen fehlgeschlagen" +msgstr "Konfigurationsprüfung fehlgeschlagen" -#: errors.php:27 -msgid "" -"Your version of MySQL is not currently supported. Please see \n" -"\t\tofficial site for more information." -msgstr "" -"Ihre Version von MySQL wird zur Zeit nicht unterstüzt. Bitte \n" -"\t\tinformieren Sie sich auf der offiziellen Website." +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "Ihre Version von MySQL wird zur Zeit nicht unterstüzt. Für weitere Informationen schauen Sie sich die offiziellen Website an." -#: errors.php:32 +#: errors.php:35 msgid "SQL escaping test failed, check your database and PHP configuration" -msgstr "" -"SQL Escaping Test fehlgeschlagen, überprüfen Sie Ihre Datenbank und PHP " -"Konfiguration" +msgstr "SQL Escaping Test fehlgeschlagen, überprüfen Sie Ihre Datenbank und PHP Konfiguration" + +#: errors.php:37 +msgid "Method not found" +msgstr "Methode nicht gefunden." + +#: errors.php:39 +msgid "Plugin not found" +msgstr "Plugin nicht gefunden" + +#: index.php:133 index.php:149 index.php:267 prefs.php:102 +#: classes/backend.php:5 classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 classes/pref/labels.php:296 js/feedlist.js:136 +#: js/functions.js:1221 js/functions.js:1355 js/functions.js:1667 +#: js/prefs.js:653 js/prefs.js:854 js/prefs.js:1760 js/prefs.js:1776 +#: js/prefs.js:1794 js/tt-rss.js:55 js/tt-rss.js:525 js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 js/functions.js:449 js/functions.js:787 js/prefs.js:1441 +#: js/prefs.js:1494 js/prefs.js:1534 js/prefs.js:1551 js/prefs.js:1567 +#: js/prefs.js:1587 js/tt-rss.js:542 js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "Ladevorgang, bitte warten..." -#: functions.php:1928 -msgid "Session failed to validate (incorrect IP)" -msgstr "" +#: index.php:167 +msgid "Collapse feedlist" +msgstr "Feedliste verbergen" -#: functions.php:1998 -msgid "Incorrect username or password" -msgstr "" +#: index.php:170 +msgid "Show articles" +msgstr "Artikel anzeigen" -#: functions.php:2979 modules/popup-dialog.php:391 -#: modules/pref-filters.php:420 -msgid "All feeds" -msgstr "Alle Feeds" +#: index.php:173 +msgid "Adaptive" +msgstr "Adaptiv" -#: functions.php:3011 functions.php:3050 functions.php:4447 functions.php:4475 -#: modules/backend-rpc.php:859 modules/pref-feeds.php:1333 -msgid "Uncategorized" -msgstr "Unsortiert" +#: index.php:174 +msgid "All Articles" +msgstr "Alle Artikel" -#: functions.php:3040 functions.php:3689 modules/backend-rpc.php:864 -#: mobile/functions.php:170 -msgid "Special" -msgstr "Sonderfeeds" +#: index.php:175 include/functions2.php:102 classes/feeds.php:104 +msgid "Starred" +msgstr "Markiert" -#: functions.php:3042 functions.php:3691 prefs.php:114 -#: modules/backend-rpc.php:869 help/4.php:12 mobile/functions.php:197 -msgid "Labels" -msgstr "Label" +#: index.php:176 include/functions2.php:103 classes/feeds.php:105 +msgid "Published" +msgstr "Veröffentlicht" -#: functions.php:3087 help/3.php:60 offline.js:493 offline.js:1425 -msgid "Starred articles" -msgstr "Bewertete Artikel" +#: index.php:177 classes/feeds.php:91 classes/feeds.php:103 +msgid "Unread" +msgstr "Ungelesen" -#: functions.php:3089 modules/pref-feeds.php:1492 help/3.php:61 -msgid "Published articles" -msgstr "Veröffentlichte Artikel" +#: index.php:178 +msgid "With Note" +msgstr "mit Notiz" -#: functions.php:3091 help/3.php:59 -msgid "Fresh articles" -msgstr "Neue Artikel" +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Bewertung ignorieren" -#: functions.php:3093 help/3.php:58 offline.js:488 offline.js:1427 -msgid "All articles" -msgstr "Alle Artikel" +#: index.php:182 +msgid "Sort articles" +msgstr "Artikel sortieren" -#: functions.php:3095 -#, fuzzy -msgid "Archived articles" -msgstr "Bewertete Artikel" +#: index.php:185 +msgid "Default" +msgstr "Standard" -#: functions.php:4200 -msgid "Generated feed" -msgstr "Erzeugter Feed" +#: index.php:186 +msgid "Newest first" +msgstr "neueste zuerst" -#: functions.php:4205 functions.php:5553 modules/popup-dialog.php:82 -#: modules/pref-feeds.php:1087 modules/pref-feeds.php:1297 -#: modules/pref-filters.php:377 modules/pref-labels.php:183 -#: modules/pref-users.php:419 offline.js:408 -msgid "Select:" -msgstr "Auswahl:" +#: index.php:187 +msgid "Oldest first" +msgstr "älteste zuerst" -#: functions.php:4206 modules/popup-dialog.php:83 modules/pref-feeds.php:1088 -#: modules/pref-feeds.php:1298 modules/pref-filters.php:378 -#: modules/pref-labels.php:184 modules/pref-users.php:420 -msgid "All" -msgstr "Alle" +#: index.php:188 +msgid "Title" +msgstr "Titel" -#: functions.php:4207 functions.php:4224 tt-rss.php:213 -msgid "Unread" -msgstr "Ungelesen" +#: index.php:192 index.php:233 include/functions2.php:92 classes/feeds.php:109 +#: js/FeedTree.js:132 js/FeedTree.js:160 +msgid "Mark as read" +msgstr "Als gelesen markieren" -#: functions.php:4208 -msgid "Invert" -msgstr "Invertieren" +#: index.php:195 +msgid "Older than one day" +msgstr "älter als einen Tag" -#: functions.php:4209 modules/popup-dialog.php:84 modules/pref-feeds.php:1089 -#: modules/pref-feeds.php:1299 modules/pref-filters.php:379 -#: modules/pref-labels.php:185 modules/pref-users.php:421 -msgid "None" -msgstr "Keine" +#: index.php:198 +msgid "Older than one week" +msgstr "älter als eine Woche" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "älter als 2 Wochen" -#: functions.php:4217 tt-rss.php:178 offline.js:184 +#: index.php:217 +msgid "Communication problem with server." +msgstr "Kommunikationsfehler mit Server" + +#: index.php:223 msgid "Actions..." msgstr "Aktionen..." -#: functions.php:4223 -msgid "Selection toggle:" -msgstr "Auswahl umschalten:" +#: index.php:225 +msgid "Preferences..." +msgstr "Einstellungen..." -#: functions.php:4225 tt-rss.php:212 -msgid "Starred" -msgstr "Bewertet" +#: index.php:226 +msgid "Search..." +msgstr "Suchen..." -#: functions.php:4226 -msgid "Published" -msgstr "Veröffentlicht" +#: index.php:227 +msgid "Feed actions:" +msgstr "Feed-Aktionen:" -#: functions.php:4227 -msgid "Selection:" -msgstr "Auswahl:" +#: index.php:228 classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "Feed abonnieren..." -#: functions.php:4228 localized_schema.php:16 tt-rss.php:187 tt-rss.php:230 -msgid "Mark as read" -msgstr "Als gelesen markieren" +#: index.php:229 +msgid "Edit this feed..." +msgstr "Feed bearbeiten..." -#: functions.php:4234 -msgid "Archive" -msgstr "" +#: index.php:230 +msgid "Rescore feed" +msgstr "Feed neu bewerten" -#: functions.php:4236 -#, fuzzy -msgid "Move back" -msgstr "Zurück gehen" +#: index.php:231 classes/pref/feeds.php:757 classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "Feed abbestellen" -#: functions.php:4237 -#, fuzzy -msgid "Delete" -msgstr "Standard" +#: index.php:232 +msgid "All feeds:" +msgstr "Alle Feeds:" -#: functions.php:4242 -msgid "Assign label:" -msgstr "Label zuweisen:" +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Gelesene zeigen/verstecken" -#: functions.php:4283 -msgid "Click to collapse category" -msgstr "Kategorie auf-/zuklappen" +#: index.php:235 +msgid "Other actions:" +msgstr "Andere Aktionen:" -#: functions.php:4493 -msgid "No feeds to display." -msgstr "Keine Feeds zum Anzeigen." +#: index.php:236 include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "Breitbild-Modus umschalten" -#: functions.php:4510 -msgid "Tags" -msgstr "Tags" +#: index.php:237 +msgid "Create label..." +msgstr "Label erstellen..." -#: functions.php:4669 -msgid "audio/mpeg" -msgstr "audio/mpeg" +#: index.php:238 +msgid "Create filter..." +msgstr "Filter erstellen..." -#: functions.php:4795 -msgid " - " -msgstr " - " +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "Tastaturkürzel..." -#: functions.php:4820 functions.php:5580 -msgid "Edit tags for this article" -msgstr "Tags für diesen Artikel bearbeiten" +#: index.php:248 +msgid "Logout" +msgstr "Abmelden" -#: functions.php:4826 functions.php:5563 -msgid "Show article summary in new window" -msgstr "Artikelzusammenfassung in neuem Fenster anzeigen" +#: index.php:254 +msgid "Updates are available from Git." +msgstr "Git-Updates sind verfügbar" -#: functions.php:4833 functions.php:5570 -#, fuzzy -msgid "Publish article with a note" -msgstr "Artikel veröffentlichen" +#: prefs.php:33 prefs.php:120 include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "Einstellungen" -#: functions.php:4850 functions.php:5441 -msgid "Originally from:" -msgstr "" +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "Tastaturkürzel" -#: functions.php:4863 functions.php:5454 -#, fuzzy -msgid "Feed URL" -msgstr "Feed" +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Einstellungen verlassen" -#: functions.php:4903 functions.php:5484 -msgid "unknown type" -msgstr "unbekannter Typ" +#: prefs.php:123 classes/pref/feeds.php:110 classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Feeds" -#: functions.php:4943 functions.php:5527 -msgid "Attachment:" -msgstr "Anhang:" +#: prefs.php:126 classes/pref/filters.php:235 +msgid "Filters" +msgstr "Filter" -#: functions.php:4945 functions.php:5529 -msgid "Attachments:" -msgstr "Anhänge:" +#: prefs.php:129 include/functions.php:1262 include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Label" -#: functions.php:4965 prefs.php:142 tt-rss.php:101 modules/help.php:21 -#: modules/popup-dialog.php:53 modules/popup-dialog.php:154 -#: modules/popup-dialog.php:181 modules/popup-dialog.php:230 -#: modules/popup-dialog.php:575 modules/popup-dialog.php:634 -#: modules/pref-feeds.php:1140 modules/pref-users.php:96 -msgid "Close this window" -msgstr "Dieses Fenster schließen" +#: prefs.php:133 +msgid "Users" +msgstr "Benutzer" -#: functions.php:5021 -msgid "Feed not found." -msgstr "Feed nicht gefunden." +#: prefs.php:136 +msgid "System" +msgstr "System" -#: functions.php:5090 -msgid "" -"Could not display feed (query failed). Please check label match syntax or " -"local configuration." -msgstr "" -"Konnte Feed nicht anzeigen (Abfrage fehlgeschlagen). Bitte prüfen Sie die " -"Label Übereinstimmungs Syntax oder die Spracheinstellungen." +#: register.php:187 include/login_form.php:245 +msgid "Create new account" +msgstr "Neues Konto erstellen" -#: functions.php:5254 functions.php:5341 -#, fuzzy -msgid "mark as read" -msgstr "Als gelesen markieren" +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "Die Registrierung für neue Benutzer wurde administrativ deaktiviert." -#: functions.php:5417 functions.php:5424 -msgid "Click to expand article" -msgstr "Klicken um den Artikel aufzuklappen" +#: register.php:197 register.php:242 register.php:255 register.php:270 +#: register.php:289 register.php:337 register.php:347 register.php:359 +#: classes/handler/public.php:730 classes/handler/public.php:801 +#: classes/handler/public.php:899 classes/handler/public.php:978 +#: classes/handler/public.php:992 classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Zu Tiny Tiny RSS zurückkehren" -#: functions.php:5587 -#, fuzzy -msgid "toggle unread" -msgstr "Umschalten ungelesen" +#: register.php:218 +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 "Ihr vorübergehendes Passwort wird an Ihre angegebene E-Mail-Adresse gesendet. Konten, die nicht innerhalb von 24 Stunden aktiviert wurden, werden gelöscht." -#: functions.php:5606 -msgid "No unread articles found to display." -msgstr "Keine ungelsenen Artikel zum Anzeigen gefunden." +#: register.php:224 +msgid "Desired login:" +msgstr "Gewünschter Benutzername:" -#: functions.php:5609 -msgid "No updated articles found to display." -msgstr "Keine aktualisierten Artikel zum Anzeigen gefunden." +#: register.php:227 +msgid "Check availability" +msgstr "Verfügbarkeit prüfen" -#: functions.php:5612 -msgid "No starred articles found to display." -msgstr "Keine bewerteten Artikel zum Anzeigen gefunden." +#: register.php:229 classes/handler/public.php:817 +msgid "Email:" +msgstr "E-Mail:" -#: functions.php:5616 -msgid "" -"No articles found to display. You can assign articles to labels manually " -"(see the Actions menu above) or use a filter." -msgstr "" -"Keine Artikel zum Anzeigen gefunden. Sie können Artikel zu Labeln manuell " -"hinzufügen (siehe obiges Aktionsmenü) oder einen Filter benutzen." +#: register.php:232 classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "Wieviel ist zwei plus zwei:" -#: functions.php:5618 offline.js:443 -msgid "No articles found to display." -msgstr "Keine Artikel zum Anzeigen gefunden." +#: register.php:235 +msgid "Submit registration" +msgstr "Registrierung abschicken" -#: functions.php:6362 tt-rss.php:192 -msgid "Create label..." -msgstr "Label erstellen..." +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "Ihre Registrierungsinformationen sind unvollständig." -#: functions.php:6375 -msgid "(remove)" -msgstr "(entfernen)" +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "Leider ist dieser Benutzername schon vergeben." -#: functions.php:6427 -msgid "no tags" -msgstr "Keine Tags" +#: register.php:287 +msgid "Registration failed." +msgstr "Registrierung fehlgeschlagen." -#: functions.php:6456 -msgid "edit note" -msgstr "" +#: register.php:334 +msgid "Account created successfully." +msgstr "Konto erfolgreich erstellt." -#: localized_schema.php:9 tt-rss.php:222 modules/popup-dialog.php:381 -#: modules/pref-feeds.php:1310 modules/pref-feeds.php:1369 -msgid "Title" -msgstr "Titel" +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "Registrierung für neue Benutzer ist momentan geschlossen." -#: localized_schema.php:10 -msgid "Title or Content" -msgstr "Titel oder Inhalt" +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "Skript zum Updaten von Tiny Tiny RSS." -#: localized_schema.php:11 -msgid "Link" -msgstr "Link" +#: include/digest.php:109 include/functions.php:1271 +#: include/functions.php:1815 include/functions.php:1900 +#: include/functions.php:1922 classes/opml.php:421 classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "Unkategorisiert" -#: localized_schema.php:12 modules/popup-dialog.php:382 -msgid "Content" -msgstr "Inhalt" +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d archivierter Artikel" +msgstr[1] "%d archivierte Artikel" -#: localized_schema.php:13 -msgid "Article Date" -msgstr "Artikel Datum" +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "Keine Feeds gefunden." -#: localized_schema.php:15 -msgid "Filter article" -msgstr "Artikel filtern" +#: include/functions2.php:52 +msgid "Navigation" +msgstr "Navigation" -#: localized_schema.php:17 -msgid "Set starred" -msgstr "Bewertung setzen" +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "Nächsten Feed öffnen" -#: localized_schema.php:18 viewfeed.js:545 viewfeed.js:659 -msgid "Publish article" -msgstr "Artikel veröffentlichen" +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "Vorherigen Feed öffnen" -#: localized_schema.php:19 -msgid "Assign tags" -msgstr "Tags zuweisen" +#: include/functions2.php:55 +msgid "Open next article" +msgstr "Nächsten Artikel öffnen" -#: localized_schema.php:20 -msgid "Assign label" -msgstr "Label zuweisen" +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "Vorherigen Artikel öffnen" -#: localized_schema.php:24 -msgid "General" -msgstr "Allgemein" +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "Nächsten Artikel laden (lange Artikel werden nicht gescrollt)" -#: localized_schema.php:26 -msgid "Allow duplicate posts" -msgstr "Duplikate zulassen" +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "Vorherigen Artikel laden (lange Artikel werden nicht gescrollt)" -#: localized_schema.php:27 -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 "" -"Diese Option dient zum Lesen mehrerer planet-artiger Aggregatoren mit " -"teilweise überdeckender Userbase. Ist diese Option deaktiviert, werden die " -"selben Nachrichten von unterschiedlichen Feeds nur einmal erscheinen." +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "Zum nächsten Artikel springen (nicht als gelesen markieren oder ausklappen)" -#: localized_schema.php:28 -msgid "Default interval between feed updates (in minutes)" -msgstr "Standard Intervall zwischen Feed-Aktualisierungen (in Minuten)" +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "Zum vorherigen Artikel springen (nicht als gelesen markieren oder ausklappen)" -#: localized_schema.php:29 -msgid "Enable e-mail digest" -msgstr "Aktiviere E-Mail Benachrichtigung" +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Suchdialog anzeigen" -#: localized_schema.php:30 -msgid "" -"This option enables sending daily digest of new (and unread) headlines on " -"your configured e-mail address" -msgstr "" -"Diese Option aktiviert das Senden einer täglichen Zusammenfassung über neue " -"(und ungelesene) Schlagzeilen an Ihre angegebene E-Mail Adresse" +#: include/functions2.php:62 +msgid "Article" +msgstr "Artikel" -#: localized_schema.php:31 -msgid "Purge old posts after this number of days (0 - disables)" -msgstr "Alte Nachrichten nach dieser Anzahl an Tagen löschen (0 - deaktivert)" +#: include/functions2.php:63 js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "Markierung ein-/ausschalten" -#: localized_schema.php:32 -msgid "Update post on checksum change" -msgstr "Nachricht aktualisieren wenn die Prüfsumme sich ändert" +#: include/functions2.php:64 js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "Veröffentlichung ein-/ausschalten" -#: localized_schema.php:33 -msgid "Mark articles in e-mail digest as read" -msgstr "Artikel in E-Mail Bericht als gelesen markieren" +#: include/functions2.php:65 js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "Gelesen-Status umschalten" -#: localized_schema.php:34 -#, fuzzy -msgid "Enable offline reading" -msgstr "Aktiviere offline Lesen" +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Tags bearbeiten" -#: localized_schema.php:35 -#, fuzzy -msgid "Synchronize new articles for offline reading using Google Gears." -msgstr "Neue Artikel zum offline Lesen mit Google Gears herunterladen" +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "Ausgewählte Artikel verwerfen" -#: localized_schema.php:37 -msgid "Interface" -msgstr "Interface" +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "gelesene Artikel verwerfen" -#: localized_schema.php:39 -msgid "Combined feed display" -msgstr "Kombinierte Feed-Anzeige" +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "In neuem Fenster öffnen" -#: localized_schema.php:40 -msgid "" -"Display expanded list of feed articles, instead of separate displays for " -"headlines and article content" -msgstr "" -"Erweiterte Anzeigeliste für Feedartikel, anstelle von separater Anzeige für " -"Schlagzeilen und Artikelinhalt" +#: include/functions2.php:70 js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "Untere als gelesen markieren" -#: localized_schema.php:41 -msgid "Default article limit" -msgstr "Standard Artikelgrenzwert" +#: include/functions2.php:71 js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "Obige als gelesen markieren" -#: localized_schema.php:42 -msgid "" -"Default limit for articles to display, any custom number you like (0 - " -"disables)." -msgstr "" -"Standard Grenzwert für anzuzeigende Artikel, geben Sie eine beliebige Nummer " -"ein (0 - deaktiviert)." +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "Nach unten scrollen" -#: localized_schema.php:43 -msgid "Enable feed categories" -msgstr "Feedkategorien aktivieren" +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "Nach oben scrollen" -#: localized_schema.php:44 -msgid "Enable search toolbar" -msgstr "Such-Toolbar aktivieren" +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "Artikel unter Mauszeiger auswählen" -#: localized_schema.php:45 -msgid "Hide feeds with no unread messages" -msgstr "Feeds ohne unglesene Nachrichten verbergen" +#: include/functions2.php:75 +msgid "Email article" +msgstr "Artikel per E-Mail versenden" -#: localized_schema.php:46 -msgid "Mark articles as read automatically" -msgstr "Artikel automatisch als gelesen markieren" +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "Artikel schließen/verbergen" -#: localized_schema.php:47 -msgid "" -"This option enables marking articles as read automatically in combined mode " -"(except for Fresh articles feed) while you scroll article list." -msgstr "" -"Diese Option aktiviert das automatische \"Als gelesen Markieren\" im " -"Kombinierten Anzeigemodus (ausgenommen ist der Neue-Artikel Feed), während " -"Sie durch die Artikelliste scrollen." +#: include/functions2.php:77 +msgid "Toggle article expansion (combined mode)" +msgstr "Kombinierte Feed-Anzeige umschalten" -#: localized_schema.php:48 -msgid "On catchup show next feed" -msgstr "Den nächsten Feed anzeigen" +#: include/functions2.php:79 plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "\"Original einbetten\" umschalten" -#: localized_schema.php:49 -msgid "" -"When \"Mark as read\" button is clicked in toolbar, automatically open next " -"feed with unread articles." -msgstr "" -"Beim Klick auf \"Als gelesen markieren\" in der Toolbar, automatisch " -"nächsten Feed mit ungelesenen Artikeln öffnen." +#: include/functions2.php:80 +msgid "Article selection" +msgstr "Artikelauswahl" -#: localized_schema.php:50 -msgid "Open article links in new browser window" -msgstr "Artikel Links in neuem Browserfenster öffnen" +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "Alle Artikel auswählen" -#: localized_schema.php:51 -msgid "Reverse headline order (oldest first)" -msgstr "Umgekehrte Schlagzeilen Sortierung (Älteste zuerst)" +#: include/functions2.php:82 +msgid "Select unread" +msgstr "Ungelesene Artikel auswählen" -#: localized_schema.php:52 -msgid "Show content preview in headlines list" -msgstr "Inhaltsvorschau in der Schlagzeilenliste anzeigen" +#: include/functions2.php:83 +msgid "Select starred" +msgstr "Markierte Artikel auswählen" -#: localized_schema.php:53 -msgid "Sort feeds by unread articles count" -msgstr "Feeds nach Anzahl der ungelesenen Artikel sortieren" +#: include/functions2.php:84 +msgid "Select published" +msgstr "Veröffentlichte Artikel auswählen" -#: localized_schema.php:54 -msgid "User stylesheet URL" -msgstr "Benutzer Stylesheet URL" +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "Auswahl umkehren" -#: localized_schema.php:55 -msgid "Link to user stylesheet to override default style, disabled if empty." -msgstr "Link zu einem benutzerdefinierten Stylesheet, deaktiviert wenn leer." +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "Auswahl aufheben" -#: localized_schema.php:56 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Maximales Alter neuer Artikel (in Stunden)" +#: include/functions2.php:87 classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Feed" -#: localized_schema.php:57 -msgid "Hide feedlist" -msgstr "Feedliste verbergen" +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "Aktuellen Feed aktualisieren" -#: localized_schema.php:58 -msgid "" -"This option hides feedlist and allows it to be toggled on the fly, useful " -"for small screens." -msgstr "" -"Diese Option versteckt die Feedliste und ermöglicht das schnelle Umschalten, " -"nützlich für kleine Bildschirme." +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "Gelesene Feeds zeigen/verstecken" + +#: include/functions2.php:90 classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "Feed abonnieren" + +#: include/functions2.php:91 js/FeedTree.js:139 js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Feed bearbeiten" + +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "Schlagzeilensortierung umkehren" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "Aktualisierung im Diagnose-Modus durchführen" + +#: include/functions2.php:95 js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "Alle Feeds als gelesen markieren" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "Aktuelle Kategorie ein-/ausklappen:" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "Kombinierte Feed-Anzeige umschalten" + +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "Kombinierte Feed-Anzeige umschalten" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "Gehe zu" + +#: include/functions2.php:100 include/functions.php:1973 +msgid "All articles" +msgstr "Alle Artikel" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "Neu" + +#: include/functions2.php:104 js/tt-rss.js:469 js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Tagwolke" + +#: include/functions2.php:106 +msgid "Other" +msgstr "Sonstiges" + +#: include/functions2.php:107 classes/pref/labels.php:281 +msgid "Create label" +msgstr "Label erstellen" + +#: include/functions2.php:108 classes/pref/filters.php:725 +msgid "Create filter" +msgstr "Filter erstellen" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "Seitenleiste ein-/ausklappen" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "Hilfe anzeigen" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Suchergebnisse: %s" + +#: include/functions2.php:1258 classes/feeds.php:730 +msgid "comment" +msgid_plural "comments" +msgstr[0] "Kommentar" +msgstr[1] "Kommentare" + +#: include/functions2.php:1262 classes/feeds.php:734 +msgid "comments" +msgstr "Kommentare" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "Keine Tags" + +#: include/functions2.php:1346 classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "Tags für diesen Artikel bearbeiten" + +#: include/functions2.php:1378 classes/feeds.php:668 +msgid "Originally from:" +msgstr "Original von:" + +#: include/functions2.php:1391 classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "Feed URL" + +#: include/functions2.php:1425 classes/backend.php:105 +#: classes/pref/users.php:95 classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 classes/dlg.php:37 classes/dlg.php:60 +#: classes/dlg.php:93 classes/dlg.php:159 classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 plugins/share/init.php:123 +msgid "Close this window" +msgstr "Fenster schließen" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(Notiz bearbeiten)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "unbekannter Typ" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "Anhänge" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "%d min" + +#: include/functions.php:1260 include/functions.php:1912 +msgid "Special" +msgstr "Sonderfeeds" + +#: include/functions.php:1763 classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Alle Feeds" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Markierte Artikel" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Veröffentlichte Artikel" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "Neue Artikel" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "Archivierte Artikel" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "Kürzlich gelesen" + +#: include/login_form.php:190 classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "Benutzername:" + +#: include/login_form.php:200 classes/handler/public.php:560 +msgid "Password:" +msgstr "Passwort:" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "Ich habe mein Passwort vergessen" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "Profil:" + +#: include/login_form.php:216 classes/handler/public.php:299 +#: classes/rpc.php:63 classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "Standardprofil" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "Weniger Datenverkehr nutzen" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "Zeigt keine Bilder in Artikeln, reduziert die automatischen Aktualisierungen." + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "Erinnere dich an mich" + +#: include/login_form.php:242 classes/handler/public.php:565 +msgid "Log in" +msgstr "Anmelden" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "Sitzung konnte nicht validiert werden (falsche IP)" + +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "Sitzung konnte nicht validiert werden (Schema-Version wurde geändert)" + +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "Sitzung konnte nicht validiert werden (Benutzer existiert nicht)" + +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "Sitzung konnte nicht validiert werden (Passwort wurde geändert)" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "Im Wiki von Tiny Tiny RSS finden Sie weitere Tipps." + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Tastaturkürzel" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "Shift" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Strg" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Hilfethema nicht gefunden." + +#: classes/handler/public.php:498 plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "Teilen mit Tiny Tiny RSS" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Titel:" + +#: classes/handler/public.php:508 classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "Inhalt:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "Label:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "Geteilte Artikel erscheinen unter 'Veröffentlichte Artikel'." + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "Teilen" + +#: classes/handler/public.php:534 classes/handler/public.php:568 +#: classes/feeds.php:1076 classes/feeds.php:1126 classes/feeds.php:1157 +#: classes/article.php:205 classes/pref/users.php:170 +#: classes/pref/feeds.php:774 classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 classes/pref/filters.php:475 +#: classes/pref/filters.php:874 classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 plugins/note/init.php:53 +#: plugins/mail/init.php:172 plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "Abbrechen" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "Nicht angemeldet" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Benutzername oder Passwort falsch" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "%s bereits abonniert." + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "%s abonniert." + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "Konnte %s nicht abonnieren." + +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "Keine Feeds in %s gefunden." + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "Mehrere Feed-URLs gefunden." + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "Das Abonnieren von %s ist fehlgeschlagen.
    Der Feed konnte nicht heruntergeladen werden." + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "Ausgewählte Feeds abonnieren" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Abonnementoptionen bearbeiten" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "Passwort-Wiederherstellung" + +#: classes/handler/public.php:805 +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "Sie müssen einen gültigen Benutzernamen und EMail angeben. Das neue Passwort wird an Ihre EMail gesendet." + +#: classes/handler/public.php:827 classes/pref/users.php:352 +msgid "Reset password" +msgstr "Passwort zurücksetzen" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "Einige der benötigten Eingaben fehlen oder sind falsch." + +#: classes/handler/public.php:841 classes/handler/public.php:907 +msgid "Go back" +msgstr "Zurück" + +#: classes/handler/public.php:878 +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] neues Passwort anfordern" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "Entschuldigung, diese Kombination von Benutzername und E-Mail konnte nicht gefunden werden." + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "Sie haben nicht die benötigten Rechte, um dieses Skript auszuführen." + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "Datenbank-Updater" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Aktualisierungen durchführen" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "Als RSS-Feed anzeigen" + +#: classes/feeds.php:54 classes/feeds.php:134 classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "Als RSS anzeigen" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "Letzte Aktualisierung: %s" + +#: classes/feeds.php:90 classes/pref/users.php:337 classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 classes/pref/filters.php:397 +#: classes/pref/filters.php:719 classes/pref/filters.php:807 +#: classes/pref/filters.php:834 classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 plugins/instances/init.php:287 +msgid "All" +msgstr "Alle" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Umkehren" + +#: classes/feeds.php:93 classes/pref/users.php:339 classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 classes/pref/filters.php:399 +#: classes/pref/filters.php:721 classes/pref/filters.php:809 +#: classes/pref/filters.php:836 classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 plugins/instances/init.php:289 +msgid "None" +msgstr "Keine" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "Mehr..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Auswahl umschalten:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Auswahl:" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "Bewerten" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "Archiv" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "Zurückgehen" + +#: classes/feeds.php:116 classes/pref/filters.php:358 +#: classes/pref/filters.php:406 classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "Löschen" + +#: classes/feeds.php:121 classes/feeds.php:126 plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "Per E-Mail weiterleiten" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Feed:" + +#: classes/feeds.php:200 classes/feeds.php:869 +msgid "Feed not found." +msgstr "Feed nicht gefunden." + +#: classes/feeds.php:268 +msgid "Never" +msgstr "Niemals" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "Importiert nach %s" + +#: classes/feeds.php:452 classes/feeds.php:549 +msgid "mark feed as read" +msgstr "Feed als gelesen markieren" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "Artikel einklappen" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "Keine ungelesenen Artikel zum Anzeigen gefunden." + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "Keine aktualisierten Artikel zum Anzeigen gefunden." + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "Keine markierten Artikel zum Anzeigen gefunden." + +#: classes/feeds.php:778 +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 "Keine Artikel zum Anzeigen gefunden. Sie können Artikel zu Labeln manuell hinzufügen (siehe obiges Aktionsmenü) oder durch das Benutzen von Filtern." + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "Keine Artikel zum Anzeigen gefunden." + +#: classes/feeds.php:795 classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "Feeds zuletzt aktualisiert am %s" + +#: classes/feeds.php:805 classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "Einige Feeds haben Aktualisierungsfehler (klicken für Details)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "Keinen Feed ausgewählt." + +#: classes/feeds.php:1014 classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "URL von Feed oder Seite" + +#: classes/feeds.php:1028 classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "In Kategorie einordnen:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "Verfügbare Feeds" + +#: classes/feeds.php:1048 classes/pref/users.php:133 +#: classes/pref/feeds.php:620 classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "Authentifizierung" + +#: classes/feeds.php:1052 classes/pref/users.php:397 +#: classes/pref/feeds.php:626 classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "Benutzername" + +#: classes/feeds.php:1055 classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "Passwort" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Dieser Feed erfordert Authentifizierung." + +#: classes/feeds.php:1070 classes/feeds.php:1124 classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "Abonnieren" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "Weitere Feeds" + +#: classes/feeds.php:1096 classes/feeds.php:1156 classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 classes/pref/filters.php:712 js/tt-rss.js:174 +msgid "Search" +msgstr "Suchen" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "Beliebte Feeds" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "Feed-Archiv" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "Grenzwert:" + +#: classes/feeds.php:1125 classes/pref/users.php:350 +#: classes/pref/feeds.php:744 classes/pref/filters.php:465 +#: classes/pref/filters.php:738 classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "Entfernen" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "Suche nach" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "in %s" + +#: classes/feeds.php:1152 +msgid "Search syntax" +msgstr "Such-Syntax" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "Artikel nicht gefunden." + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "Tags für diesen Artikel (durch Komma getrennt):" + +#: classes/article.php:203 classes/pref/users.php:168 +#: classes/pref/feeds.php:773 classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 plugins/nsfw/init.php:85 plugins/mail/init.php:64 +#: plugins/instances/init.php:245 plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Speichern" + +#: classes/opml.php:28 classes/opml.php:33 +msgid "OPML Utility" +msgstr "OPML Werkzeug" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "Importiere OPML..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "Zu den Einstellungen zurückkehren" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "Füge Feed hinzu: %s" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "Doppelter Feed: %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "Füge Label %s hinzu" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "Doppeltes Label: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "Setze Konfigurationsoption %s auf %s" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "Füge Filter hinzu..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "Verarbeite Kategorie: %s" + +#: classes/opml.php:470 plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "Upload schlug fehl. Fehlercode: %d" + +#: classes/opml.php:484 plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "Fehler: konnte die hochgeladene Datei nicht verschieben." + +#: classes/opml.php:488 plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "Fehler: bitte eine OPML-Datei hochladen." + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "Fehler: konnte die verschobene OPML-Datei nicht finden." + +#: classes/opml.php:506 plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Fehler beim Parsen des Dokuments." + +#: classes/pref/system.php:8 classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "Sie haben nicht die benötigten Rechte, um diese Registerkarte zu öffnen." + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "Fehler-Protokoll" + +#: classes/pref/system.php:40 plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "Neuladen" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "Protokoll löschen" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Fehler" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "Dateiname" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Meldung" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Datum" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Benutzer nicht gefunden" + +#: classes/pref/users.php:53 classes/pref/users.php:399 +msgid "Registered" +msgstr "Registriert" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Zuletzt angemeldet" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "Anzahl abonnierter Feeds" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Abonnierte Feeds" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Zugriffsberechtigung: " + +#: classes/pref/users.php:154 classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Optionen" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "Benutzer %s mit Passwort %s hinzugefügt" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "Konnte den Benutzer %s nicht anlegen" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "Benutzer %s existiert bereits." + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "Passwort für Benutzer %s auf %s geändert" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "Sende das neue Passwort von Benutzer %s an %s" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] Benachrichtigung: Passwort geändert" + +#: classes/pref/users.php:334 classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 classes/pref/filters.php:394 +#: classes/pref/filters.php:716 classes/pref/filters.php:804 +#: classes/pref/filters.php:831 classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 plugins/instances/init.php:284 +msgid "Select" +msgstr "Auswahl" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Benutzer anlegen" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "Details" + +#: classes/pref/users.php:348 classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Bearbeiten" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Zugriffsberechtigung" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "Zuletzt angemeldet" + +#: classes/pref/users.php:419 plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Zum Bearbeiten klicken" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "Keine Benutzer definiert." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "Keine zugehörigen Benutzer gefunden." + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Ankreuzen, um das Feld zu aktivieren" + +#: classes/pref/feeds.php:63 classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "(%d Feed)" +msgstr[1] "(%d Feeds)" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "Feed-Titel" + +#: classes/pref/feeds.php:598 classes/pref/feeds.php:812 +msgid "Update" +msgstr "Aktualisieren" + +#: classes/pref/feeds.php:613 classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Artikel löschen:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "Hinweis: Sie müssen Ihre Login-Informationen eingeben, wenn Ihr Feed eine Authentifizierung erfordert (außer Twitter-Feeds)." + +#: classes/pref/feeds.php:659 classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "Nicht unter beliebten Feeds aufführen" + +#: classes/pref/feeds.php:671 classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "In E-Mail-Zusammenfassung aufnehmen" + +#: classes/pref/feeds.php:684 classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Angehängte Bilder immer anzeigen" + +#: classes/pref/feeds.php:697 classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "Bilder nicht einbetten" + +#: classes/pref/feeds.php:710 classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Bilder lokal zwischenspeichern" + +#: classes/pref/feeds.php:722 classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "Aktualisierte Artikel als ungelesen markieren" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "Symbol" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "Ersetzen" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "Abonnierte Feeds:" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "PubSubHubbub-Abonnementstatus für Push-fähige Feeds zurücksetzen." + +#: classes/pref/feeds.php:1146 classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Fertig." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "Feeds mit Fehlern" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "Inaktive Feeds" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "Bearbeite ausgewählte Feeds" + +#: classes/pref/feeds.php:1318 classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "Sortierreihenfolge zurücksetzen" + +#: classes/pref/feeds.php:1320 js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "Mehrere Feeds abonnieren" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "Kategorien" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "Kategorie anlegen" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "Ausgewählte Kategorien löschen" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "Mehr Aktionen..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "Manuelles Löschen" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "Feed-Daten löschen" + +#: classes/pref/feeds.php:1354 classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Artikel neu bewerten" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "Über OPML können Feeds, Filter, Label und Tiny-Tiny-RSS-Einstellungen importiert und exportiert werden." + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "Nur das Hauptprofil kann mit OPML gesichert werden." + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "OPML importieren" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "Dateiname:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "Inklusive Einstellungen" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "OPML exportieren" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "Ihre OPML können veröffentlicht werden, so dass jeder, der die URL kennt, diese abonnieren kann." + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "Eine öffentliche OPML enthält keine Tiny-Tiny-RSS-Einstellungen, passwortgeschützte Feeds oder Feeds, die nicht in den beliebten Feeds auftauchen sollen." + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "Öffentliche OPML-URL" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "Zeige öffentliche OPML-URL" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Firefox-Integration" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "Tiny Tiny RSS kann durch den folgenden Link als Feedreader für Firefox verwendet werden." + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "Diese Website als Feedreader registrieren." + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "Veröffentlichte & geteilte Artikel / erzeugte Feeds" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "Veröffentlichte Artikel werden als öffentlicher RSS-Feed exportiert und können von jedem abonniert werden, der die nachstehende URL kennt." + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "Zeige URL an" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "Alle generierten URLs löschen" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "Folgende Feeds konnten seit 3 Monaten nicht aktualisiert werden (älteste zuerst):" + +#: classes/pref/feeds.php:1589 classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "Zum Bearbeiten klicken" + +#: classes/pref/feeds.php:1607 classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "Ausgewählte Feeds abbestellen" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "Einen gültigen RSS Feed pro Zeile hinzufügen (Es findet keine Feederkennung statt)" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "Zu abonnierende Feeds, Einen pro Zeile" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "Feeds benötigen Authentifizierung." + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "Artikel, die auf diesen Filter passen: " + +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "Keine kürzlich erschienenen Artikel gefunden, die auf diesen Filter passen." + +#: classes/pref/filters.php:226 classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "Invertiert" + +#: classes/pref/filters.php:222 classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "%s innerhalb %s von %s %s" + +#: classes/pref/filters.php:335 classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Titel" + +#: classes/pref/filters.php:341 classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "Kriterien" + +#: classes/pref/filters.php:355 classes/pref/filters.php:403 +#: classes/pref/filters.php:813 classes/pref/filters.php:840 +msgid "Add" +msgstr "Hinzufügen" + +#: classes/pref/filters.php:389 classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "Aktionen anwenden" + +#: classes/pref/filters.php:439 classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Aktiviert" + +#: classes/pref/filters.php:448 classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "Ein erfülltes Kriterium ist ausreichend" + +#: classes/pref/filters.php:457 classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "Invertierte Übereinstimmung" + +#: classes/pref/filters.php:469 classes/pref/filters.php:868 +msgid "Test" +msgstr "Test" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "Zusammenfügen" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Erstellen" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "Invertiere reguläre Ausdrücke" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "in Feld" + +#: classes/pref/filters.php:934 js/PrefFilterTree.js:61 +msgid "in" +msgstr "in" + +#: classes/pref/filters.php:947 +msgid "Wiki: Filters" +msgstr "Wiki:Filter" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "Regel speichern" -#: localized_schema.php:59 -msgid "Group headlines in virtual feeds" -msgstr "Schlagzeilen in virtuellen Feeds gruppieren" +#: classes/pref/filters.php:952 js/functions.js:1025 +msgid "Add rule" +msgstr "Regel hinzufügen" -#: localized_schema.php:60 -msgid "" -"When this option is enabled, headlines in Special feeds and Labels are " -"grouped by feeds" -msgstr "" -"Wenn diese Option aktiviert ist, werden Schlagzeilen in Sonderfeeds und " -"Labels nach Feeds gruppiert" +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Aktion ausführen" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "mit Parametern:" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "Aktion speichern" + +#: classes/pref/filters.php:1019 js/functions.js:1051 +msgid "Add action" +msgstr "Aktion hinzufügen" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[kein Titel]" + +#: classes/pref/filters.php:1044 +#, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "%s (%d Regel)" +msgstr[1] "%s (%d Regeln)" + +#: classes/pref/filters.php:1059 +#, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "%s (+%d Aktion)" +msgstr[1] "%s (+%d Aktionen)" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "Farben" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "Vordergrund" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "Hintergrund" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "Label %s erstellt" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Farben löschen" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Allgemein" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Oberfläche" -#: localized_schema.php:62 +#: classes/pref/prefs.php:20 msgid "Advanced" -msgstr "Erweitert" +msgstr "Erweiterte Einstellungen" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "Zusammenfassung" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "Duplikate zulassen" -#: localized_schema.php:64 +#: classes/pref/prefs.php:26 msgid "Blacklisted tags" msgstr "Gesperrte Tags" -#: localized_schema.php:65 -msgid "" -"When auto-detecting tags in articles these tags will not be applied (comma-" -"separated list)." -msgstr "" -"Bei der Autoerkennung von Tags in Artikeln werden die Folgenden nicht " -"verwendet (Komma getrennte Liste)." +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "Bei der automatischen Erkennung von Tags in Artikeln werden die folgenden nicht verwendet (durch Komma getrennte Liste)." + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "Artikel automatisch als gelesen markieren" + +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "Diese Option aktiviert das automatische \"Als gelesen markieren\" im kombinierten Anzeigemodus (ausgenommen ist der Neue-Artikel-Feed), während Sie durch die Artikelliste scrollen." + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "Artikel im Kombinierten Modus automatisch aufklappen" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "Kombinierte Feed-Anzeige" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Erweiterte Anzeigeliste für Artikel, anstelle von einzelnen Fenstern für Schlagzeilen und Artikelinhalt" -#: localized_schema.php:66 +#: classes/pref/prefs.php:30 msgid "Confirm marking feed as read" -msgstr "Bestätigung um Feed als gelesen zu markieren" +msgstr "Bestätigung, um Feed als gelesen zu markieren" -#: localized_schema.php:67 -msgid "Enable feed icons" -msgstr "Feed-Symbole aktiviern" +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "Anzahl der Artikel, die gleichzeitig geladen werden" -#: localized_schema.php:68 -msgid "Enable labels" -msgstr "Label aktivieren" +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "Standard-Intervall für Feed-Updates" -#: localized_schema.php:69 -msgid "" -"Experimental support for virtual feeds based on user crafted SQL queries. " -"This feature is highly experimental and at this point not user friendly. Use " -"with caution." -msgstr "" -"Experimentelle Unterstützung für virtuelle Feeds basierend auf " -"benutzerspezifischen SQL Abfragen. Dieses Merkmal ist hoch experimentell und " -"ist zur Zeit nicht benutzerfreundlich. Mit Bedacht benutzen." +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "Kürzestes Intervall, in dem ein Feed, unabhängig von der gewählten Update-Methode, auf neue Beiträge überprüft wird" + +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "Artikel in E-Mail-Zusammenfassung als gelesen markieren" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "Aktiviere E-Mail-Zusammenfassung" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Diese Option aktiviert das Senden einer täglichen Zusammenfassung über neue (und ungelesene) Schlagzeilen an Ihre angegebene E-Mail-Adresse" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "Zusammenfassungen zu einer bestimmten Uhrzeit zu senden" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "Benutzt UTC Zeitzone" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "Aktiviere API-Zugang" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "Erlaube externen Clients, über das API auf diesen Account zu zugreifen" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Feedkategorien aktivieren" + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "Feeds nach Anzahl der ungelesenen Artikel sortieren" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Maximales Alter neuer Artikel (in Stunden)" -#: localized_schema.php:70 +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "Feeds ohne ungelesene Nachrichten verbergen" + +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "Sonderfeeds anzeigen, wenn gelesene Feeds verborgen werden" + +#: classes/pref/prefs.php:42 msgid "Long date format" msgstr "Langes Datumsformat" -#: localized_schema.php:71 -msgid "Set articles as unread on update" -msgstr "Aktualisierte Artikel auf ungelesen setzen" +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "Die verwendete Syntax ist mit der PHP Funktion date() identisch." + +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "Den nächsten Feed anzeigen" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Automatisch nächsten Feed mit ungelesenen Artikeln laden, nachdem ein Feed als gelesen markiert wurde" + +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Alte Artikel nach dieser Anzahl an Tagen löschen (0 - deaktivert)" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "Ungelesene Artikel löschen" + +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "Schlagzeilensortierung umkehren (älteste zuerst)" -#: localized_schema.php:72 +#: classes/pref/prefs.php:47 msgid "Short date format" msgstr "Kurzes Datumsformat" -#: localized_schema.php:73 -msgid "Show additional information in feedlist" -msgstr "Zusätzliche Informationen in der Feedliste anzeigen" +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "Inhaltsvorschau in der Schlagzeilenliste anzeigen" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "Feeds nach Schlagzeilendatum sortieren" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "Benutze feed-spezifisches Datum statt des lokalen Importdatums, um Schlagzeilen zu sortieren." + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "Mit SSL-Zertifikat anmelden" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Klicken, um Ihr SSL Clientzertifikat bei tt-rss zu registrieren" + +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "Keine Bilder in Artikeln einbetten" -#: localized_schema.php:74 +#: classes/pref/prefs.php:52 msgid "Strip unsafe tags from articles" -msgstr "Unsichere Tags aus den Artikeln entfernen" +msgstr "Unsichere Tags aus Artikeln entfernen" -#: localized_schema.php:75 +#: classes/pref/prefs.php:52 msgid "Strip all but most common HTML tags when reading articles." -msgstr "Alle außer den meist gebräuchlichen HTML Tags beim Lesen entfernen." +msgstr "Alle außer den meist verwendeten HTML Tags beim Lesen entfernen." -#: localized_schema.php:76 -msgid "Use more accessible date/time format for headlines" -msgstr "Benutzerfreundlicheres Datum/Zeit Format in Schlagzeilen verwenden" +#: classes/pref/prefs.php:53 js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "Benutzerdefiniertes Stylesheet" -#: localized_schema.php:77 -msgid "Automatically expand articles in combined mode" -msgstr "Artikel im Kombinierten Modus automatisch aufklappen" +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "CSS Stylesheet nach Ihren Vorlieben anpassen" -#: localized_schema.php:78 -msgid "Purge unread articles" -msgstr "Ungelesene Artikel löschen" +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "Zeitzone" -#: localized_schema.php:79 -msgid "Show special feeds when hiding read feeds" -msgstr "Sonderfeeds anzeigen wenn gelesene Feeds verborgen werden" +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "Schlagzeilen in virtuellen Feeds gruppieren" -#: localized_schema.php:80 -msgid "Prefer more accurate feedlist counters to UI speed" -msgstr "Bevorzuge genauere Feedlist Zähler gegenüber UI Geschwindigkeit" +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "Spezial-Feeds, Labels und Kategorien sind nach den ursprünglichen Feeds gruppiert" -#: localized_schema.php:81 -msgid "Enable inline MP3 player" -msgstr "Eingebauten MP3 Player aktivieren" +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "Sprache" -#: localized_schema.php:82 -msgid "" -"Enable the Flash-based XSPF Player to play MP3-format podcast enclosures." -msgstr "" -"Aktiviere den Flash-basierten XSPF Player um Podcast Anhänge im MP3-Format " -"abzuspielen." +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "Theme" -#: localized_schema.php:83 -msgid "Do not show images in articles" -msgstr "Keine Bilder in Artikeln anzeigen" +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "Wählen Sie eines der vorhandenen CSS-Themes aus" -#: localized_schema.php:84 -msgid "Enable external API" -msgstr "" +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "Die Einstellungen wurden gespeichert." -#: login_form.php:120 modules/popup-dialog.php:271 modules/pref-feeds.php:339 -#: modules/pref-feeds.php:561 mobile/login_form.php:38 -msgid "Login:" -msgstr "Benutzer:" +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "Ihre persönlichen Daten wurden gespeichert." -#: login_form.php:124 modules/popup-dialog.php:273 modules/pref-feeds.php:344 -#: modules/pref-feeds.php:567 mobile/login_form.php:43 -msgid "Password:" -msgstr "Passwort:" +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "Ihre Einstellungen sind jetzt auf die Standardwerte gesetzt." -#: login_form.php:129 -msgid "Language:" -msgstr "Sprache:" +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "Persönliche Daten / Authentifizierung" -#: login_form.php:139 -#, fuzzy -msgid "Profile:" -msgstr "Datei:" +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "Persönliche Daten" -#: login_form.php:152 mobile/login_form.php:28 -msgid "Log in" -msgstr "Anmelden" +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "Vollständiger Name" -#: login_form.php:155 register.php:148 -msgid "Create new account" -msgstr "Neues Konto erstellen" +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "E-Mail" -#: login_form.php:169 -msgid "Limit bandwidth usage" -msgstr "Bandbreitennutzung begrenzen" +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Zugriffsberechtigung" -#: opml.php:99 opml.php:103 -msgid "OPML Utility" -msgstr "OPML Werkzeug" +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Speichern" -#: opml.php:124 -msgid "Importing OPML (using DOMXML extension)..." -msgstr "Importiere OPML (verwende DOMXML Erweiterung)..." +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "Sie nutzen das Standard Passwort, bitte ändern Sie es." -#: opml.php:128 -msgid "Importing OPML (using DOMDocument extension)..." -msgstr "Importiere OPML (verwende DOMDocument Erweiterung)..." +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "Das Ändern des aktuellen Passworts deaktiviert Einmalpasswörter." -#: opml.php:132 modules/popup-dialog.php:45 -msgid "DOMXML extension is not found. It is required for PHP versions below 5." -msgstr "" -"DOMXML Erweiterung wurde nicht gefunden. Sie wird benötigt für PHP vor " -"Version 5." +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Altes Passwort" -#: opml.php:136 -msgid "Return to preferences" -msgstr "Zu den Einstellungen zurückkehren" +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Neues Passwort" -#: prefs.php:63 prefs.php:123 tt-rss.php:65 -msgid "Loading, please wait..." -msgstr "Ladevorgang, bitte warten..." +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Passwort bestätigen" -#: prefs.php:70 prefs.php:126 tt-rss.php:73 -msgid "" -"Your browser doesn't support Javascript, which is required\n" -"\t\tfor this application to function properly. Please check your\n" -"\t\tbrowser settings." -msgstr "" -"Diese Anwendung benötigt Javascript um ordnungsgemäß zu\n" -"\t\tfunktionieren, welches von Ihrem Browser nicht unterstützt wird.\t" -"\tBitte überprüfen Sie Ihre Browser Einstellungen." +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "Passwort ändern" -#: prefs.php:90 tt-rss.php:112 -msgid "Hello," -msgstr "Hallo," +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "Einmalpasswörter (OTP) / Authentifikator" -#: prefs.php:92 help/4.php:14 -msgid "Exit preferences" -msgstr "Einstellungen verlassen" +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "Einmalpasswörter sind aktiviert. Gib dein aktuelles Passwort ein, um diese zu deaktivieren." -#: prefs.php:94 tt-rss.php:122 mobile/functions.php:60 -#: mobile/functions.php:234 -msgid "Logout" -msgstr "Abmelden" +#: classes/pref/prefs.php:347 classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "Geben Sie Ihr Passwort ein" -#: prefs.php:102 tt-rss.php:196 -msgid "Keyboard shortcuts" -msgstr "Tastaturbefehle" +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "Einmalpasswörter ausschalten" -#: prefs.php:108 tt-rss.php:114 help/3.php:63 help/4.php:8 -msgid "Preferences" -msgstr "Einstellungen" +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "Sie benötigen einen kompatiblen Authentifikator. Sollten Sie Ihr Passwort ändern, wird diese Funktion automatisch ausgeschaltet." -#: prefs.php:110 -msgid "Feeds" -msgstr "Feeds" +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "Scannen Sie den folgenden Code mit Ihrem Authentifikator:" -#: prefs.php:112 help/4.php:11 -msgid "Filters" -msgstr "Filter" +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "Bitte geben Sie das Einmalpasswort ein:" -#: prefs.php:117 help/4.php:13 -msgid "Users" -msgstr "Benutzer" +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "Einmalpasswörter einschalten" -#: prefs.php:140 tt-rss.php:99 -msgid "Fatal Exception" -msgstr "" +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "PHP GD Funktionen werden für den OTP-Support benötigt." -#: register.php:152 -msgid "New user registrations are administratively disabled." -msgstr "Die Registrierung für neue Benutzer wurde administrativ deaktiviert." +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "Einige Einstellungen sind nur im Standardprofil verfügbar." -#: register.php:155 register.php:200 register.php:213 register.php:228 -#: register.php:246 register.php:331 register.php:341 register.php:353 -#: update.php:94 update.php:162 modules/pref-feeds.php:954 -msgid "Return to Tiny Tiny RSS" -msgstr "Zu Tiny Tiny RSS zurückkehren" +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "Anpassen" -#: register.php:176 -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 "" -"Ihr vorübergehendes Passwort wird an Ihre angegebene E-Mail Adresse " -"gesendet. Konten, die nicht innerhalb von 24 Stunden aktiviert wurden, " -"werden gelöscht." +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "Registrieren" -#: register.php:182 -msgid "Desired login:" -msgstr "Gewünschter Benutzername:" +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "Löschen" -#: register.php:185 -msgid "Check availability" -msgstr "Verfügbarkeit prüfen" +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "Aktuelle Serverzeit: %s (UTC)" -#: register.php:187 -msgid "Email:" -msgstr "E-Mail:" +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Einstellungen speichern" -#: register.php:190 -msgid "How much is two plus two:" -msgstr "Wieviel ist zwei plus zwei:" +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "Speichern und Einstellungen verlassen" -#: register.php:193 -msgid "Submit registration" -msgstr "Registrierung abschicken" +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "Profile verwalten" -#: register.php:211 -msgid "Your registration information is incomplete." -msgstr "Ihre Registrieungsinformationen sind unvollständig." +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "Auf Standardwerte zurücksetzen" -#: register.php:226 -msgid "Sorry, this username is already taken." -msgstr "Leider ist dieser Benutzername schon vergeben." +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "Plugins" -#: register.php:244 -msgid "Registration failed." -msgstr "Registrierung fehlgeschlagen." +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "Du musst Tiny Tiny RSS neu laden, damit Pluginänderungen angewandt werden." -#: register.php:328 -msgid "Account created successfully." -msgstr "Konto erfolgreich erstellt." +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "Mehr Plugins im tt-rss.org Forum oder im Wiki." -#: register.php:350 -msgid "New user registrations are currently closed." -msgstr "Registrierung für neue Benutzer ist momentan geschlossen." +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "System-Plugins" -#: tt-rss.php:118 -msgid "Comments?" -msgstr "Kommentare?" +#: classes/pref/prefs.php:738 classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "Plugin" -#: tt-rss.php:131 -msgid "Offline reading" -msgstr "Offline Lesen" +#: classes/pref/prefs.php:739 classes/pref/prefs.php:795 +msgid "Description" +msgstr "Beschreibung" -#: tt-rss.php:138 -msgid "Cancel synchronization" -msgstr "Synchronisierung abbrechen" +#: classes/pref/prefs.php:740 classes/pref/prefs.php:796 +msgid "Version" +msgstr "Version" -#: tt-rss.php:141 -msgid "Synchronize" -msgstr "Synchronisiere" +#: classes/pref/prefs.php:741 classes/pref/prefs.php:797 +msgid "Author" +msgstr "Autor" -#: tt-rss.php:143 -msgid "Remove stored data" -msgstr "Gespeicherte Daten entfernen" +#: classes/pref/prefs.php:772 classes/pref/prefs.php:831 +msgid "more info" +msgstr "weitere Informationen" -#: tt-rss.php:145 -msgid "Go offline" -msgstr "Offline gehen" +#: classes/pref/prefs.php:781 classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "Daten löschen" -#: tt-rss.php:151 -msgid "New version of Tiny Tiny RSS is available!" -msgstr "Neue Version von Tiny Tiny RSS verfügbar!" +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "Benutzer-Plugins" -#: tt-rss.php:158 -msgid "Go online" -msgstr "Online gehen" +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "Ausgewählte Plugins aktivieren" -#: tt-rss.php:169 tt-rss.js:79 -msgid "tag cloud" -msgstr "Tagwolke" +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "Falsches Einmalpasswort" -#: tt-rss.php:179 -msgid "Search..." -msgstr "Suchen..." +#: classes/pref/prefs.php:926 classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "Falsches Passwort" -#: tt-rss.php:180 -msgid "Feed actions:" -msgstr "Feed Aktionen:" +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "Sie können Farben, Schriftarten und das Layout Ihres aktuell gewählten Themas mit einem eigenen CSS-Stylesheet überschreiben. Diese Datei kann als Grundlage benutzt werden." -#: tt-rss.php:181 -msgid "Subscribe to feed..." -msgstr "Feed abonnieren..." +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "Profil erstellen" -#: tt-rss.php:182 -msgid "Edit this feed..." -msgstr "Diesen Feed bearbeiten..." +#: classes/pref/prefs.php:1031 classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(aktiv)" -#: tt-rss.php:183 -msgid "Rescore feed" -msgstr "Feed neu bewerten" +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "Ausgewählte Profile entfernen" -#: tt-rss.php:184 modules/pref-feeds.php:465 modules/pref-feeds.php:1193 -msgid "Unsubscribe" -msgstr "Abbestellen" +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "Profil aktivieren" -#: tt-rss.php:186 -msgid "All feeds:" -msgstr "Alle Feeds:" +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "Wenn Label und/oder Filter importiert wurden, müssen die Einstellungen erneut geladen werden, um alle neuen Einstellungen zu sehen." -#: tt-rss.php:188 help/3.php:44 -msgid "(Un)hide read feeds" -msgstr "Gelesene ein-/ausblenden" +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "Ihre öffentliche OPML-URL lautet:" -#: tt-rss.php:190 -msgid "Other actions:" -msgstr "Andere Aktionen:" +#: classes/dlg.php:57 classes/dlg.php:183 plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "Erzeuge neue URL" -#: tt-rss.php:193 -msgid "Create filter..." -msgstr "Filter erstellen..." +#: 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 "Der Aktualisierungs-Daemon ist in den Einstellungen aktiviert, aber der Daemon Prozess läuft nicht, weshalb keine Feeds aktualisiert werden können. Bitte starten Sie den Prozess des Daemons oder benachrichtigen Sie den Besitzer der Instanz." -#: tt-rss.php:194 -msgid "Reset UI layout" -msgstr "UI Layout zurücksetzen" +#: classes/dlg.php:75 classes/dlg.php:84 +msgid "Last update:" +msgstr "Letzte Aktualisierung:" -#: tt-rss.php:195 -msgid "Reset category order" -msgstr "Kategoriefolge zurücksetzen" +#: 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 "Der Aktualisierungs Daemon braucht zu lange, um eine Aktualisierung durchzuführen. Dies könnte auf ein Problem wie einen Absturz oder eine Blockierung hinweisen. Bitte überprüfen Sie den Prozess des Daemons oder benachrichtigen Sie den Besitzer des Instanz." -#: tt-rss.php:205 -msgid "Collapse feedlist" -msgstr "Feedliste verbergen" +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "Sie finden diesen Feed als RSS unter der folgenden URL:" -#: tt-rss.php:208 -#, fuzzy -msgid "Show articles" -msgstr "Neue Artikel" +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "Daten gespeichert (%s, %d)" -#: tt-rss.php:210 -msgid "Adaptive" -msgstr "Adaptiv" +#: plugins/af_psql_trgm/init.php:112 +msgid "Show related articles" +msgstr "zeige verwandte Artikel" -#: tt-rss.php:211 -msgid "All Articles" -msgstr "Alle Artikel" +#: plugins/af_psql_trgm/init.php:118 plugins/af_psql_trgm/init.php:225 +msgid "Mark similar articles as read" +msgstr "markiere ähnliche Artikel als gelesen" -#: tt-rss.php:214 -msgid "Ignore Scoring" -msgstr "Bewertung ignorieren" +#: plugins/af_psql_trgm/init.php:164 plugins/af_redditimgur/init.php:46 +msgid "Global settings" +msgstr "globale Einstellungen" -#: tt-rss.php:215 modules/pref-feeds.php:1316 modules/pref-feeds.php:1377 -msgid "Updated" -msgstr "Aktualisiert" +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "Mindestähnlichkeit:" -#: tt-rss.php:218 -#, fuzzy -msgid "Sort articles" -msgstr "Artikel bewerten" +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "Mindestlänge des Titels:" -#: tt-rss.php:221 modules/popup-dialog.php:462 modules/pref-filters.php:51 -#: modules/pref-filters.php:469 -msgid "Date" -msgstr "Datum" +#: plugins/af_psql_trgm/init.php:178 +msgid "Enable for all feeds:" +msgstr "Für alle Feeds aktivieren:" -#: tt-rss.php:223 -msgid "Score" -msgstr "Bewertung" +#: plugins/af_psql_trgm/init.php:197 plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "Zur Zeit aktiviert für (klicken zum Bearbeiten):" -#: tt-rss.php:227 modules/pref-feeds.php:296 modules/pref-feeds.php:524 -msgid "Update" -msgstr "Aktualisieren" +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "Ähnlichkeit (pg_trgm)" -#: tt-rss.php:238 tt-rss.php:252 -msgid "No feed selected." -msgstr "Kein Feed ausgewählt." +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "von af_comics unterstützte Feeds" -#: tt-rss.php:242 -msgid "Drag me to resize panels" -msgstr "Zieh mich um die Größe des Panels anzupassen" +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "Die folgenden Comics werden momentan unterstützt:" -#: update.php:19 -msgid "Your access level is insufficient to run this script." -msgstr "Sie haben nicht die benötigten Rechte um dieses Skript auszuführen." +#: plugins/note/init.php:26 plugins/note/note.js:11 +msgid "Edit article note" +msgstr "Artikelnotizen bearbeiten" -#: update.php:44 -msgid "Database Updater" -msgstr "Datenbank Aktualisierer" +#: plugins/googlereaderimport/init.php:92 plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "Es wurde keine Datei hochgeladen." + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "Fertig. %d von %d Artikeln importiert." -#: update.php:85 -msgid "Could not update database" -msgstr "Konnte die Datenbank nicht aktualisieren" +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "Das Dokumentenformat ist fehlerhaft" -#: update.php:88 -msgid "Could not find necessary schema file, need version:" -msgstr "Konnte die notwendige Schema Datei nicht finden, benötige Version:" +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "Importiere markierte oder geteilte Einträge aus dem Google Reader" -#: update.php:89 -msgid ", found: " -msgstr ", gefunden:" +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "Wählen Sie ihre starred.json oder shared.json aus." -#: update.php:92 -msgid "Tiny Tiny RSS database is up to date." -msgstr "Tiny Tiny RSS Datenbank ist auf den neusten Stand." +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "Importiere meine markierten Einträge" -#: update.php:102 -msgid "Please backup your database before proceeding." -msgstr "Bitte sichern Sie ihre Datenbank bevor Sie fortfahren." +#: plugins/mailto/init.php:49 plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[Weitergeleitet]" -#: update.php:104 -#, php-format -msgid "" -"Your Tiny Tiny RSS database needs update to the latest version (%d to " -"%d)." -msgstr "" -"Ihre Tiny Tiny RSS Datenbank benötigt eine Aktualisierung auf die neuste " -"Version (%d nach %d)." +#: plugins/mailto/init.php:49 plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "Mehrere Artikel" -#: update.php:118 -msgid "Perform updates" -msgstr "Aktualisierungen durchführen" +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "Klicken Sie den folgenden Link, um Ihren Mailclienten aufzurufen:" -#: update.php:123 -msgid "Performing updates..." -msgstr "Führe Aktualisierungen durch..." +#: plugins/mailto/init.php:75 +msgid "Forward selected article(s) by email." +msgstr "Markierte(n) Artikel per E-Mail weiterleiten" -#: update.php:129 -#, php-format -msgid "Updating to version %d..." -msgstr "Aktualisiere auf Version %d..." +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "Sie können die Nachricht bearbeiten, bevor Sie diese mit Ihrem Mailclienten abschicken." + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "Diesen Dialog schließen" -#: update.php:142 -msgid "Checking version... " -msgstr "Überprüfe Version..." +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "Import und Export" -#: update.php:148 -msgid "OK!" -msgstr "OK!" +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "Die markierten und archivierten Artikel können zur Aufbewahrung oder Migration zwischen verschiedenen Tiny Tiny RSS Instanzen exportiert werden." -#: update.php:150 -msgid "ERROR!" -msgstr "FEHLER!" +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "Meine Daten exportieren" -#: update.php:158 +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Importieren" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "Import fehlgeschlagen: Falsche Schemaversion" + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "Import fehlgeschlagen: Unbekanntes Dateiformat" + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "Beendet: " + +#: plugins/import_export/init.php:388 #, php-format -msgid "" -"Finished. Performed %d update(s) up to schema\n" -"\t\t\tversion %d." -msgstr "" -"Beendet. %d Aktualisierung(en) auf Schema\n" -"\t\tVersion %d durchgeführt." +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "%d Artikel verarbeitet, " +msgstr[1] "%d Artikel verarbeitet, " + +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "%d importiert, " +msgstr[1] "%d importiert, " + +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "%d Feed erstellt." +msgstr[1] "%d Feeds erstellt." + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "Konnte XML-Datei nicht laden." + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "Bereite Daten vor" + +#: plugins/nsfw/init.php:30 plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "NSFW (Klicken zum Anzeigen)" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "NSFW Plugin" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "Liste von NSFW-Tags (kommagetrennt)" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "Die Einstellungen wurden gespeichert." + +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "Bitte geben Sie Einmalpasswort ein:" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "Passwort wurde geändert." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "Altes Passwort ist falsch." -#: modules/help.php:6 -msgid "Help" -msgstr "Hilfe" +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "Artikel schließen" -#: modules/help.php:17 -msgid "Help topic not found." -msgstr "Hilfe Thema nicht gefunden." +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "Mailadresse gespeichert" -#: modules/opml_domdoc.php:52 modules/opml_domxml.php:54 -#, fuzzy, php-format -msgid "
  • Adding category %s.
  • " -msgstr "Füge Kategorie %s hinzu." +#: plugins/mail/init.php:34 +msgid "Mail plugin" +msgstr "Mail-Plugin" -#: modules/opml_domdoc.php:101 modules/opml_domxml.php:103 -#, fuzzy -msgid "is already imported." -msgstr "Bereits importiert." +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "Sie können hier Mailadressen vordefinieren (Komma getrennte Liste):" -#: modules/opml_domdoc.php:121 modules/opml_domxml.php:122 -#, fuzzy -msgid "OK" -msgstr "OK!" +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "Empfänger:" -#: modules/opml_domdoc.php:130 modules/opml_domxml.php:134 -msgid "Error while parsing document." -msgstr "Fehler beim analysieren des Dokuments." +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "Betreff:" -#: modules/opml_domdoc.php:134 modules/opml_domxml.php:138 -msgid "Error: please upload OPML file." -msgstr "Fehler: bitte eine OPML Datei hochladen." +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "E-Mail versenden" -#: modules/opml_domxml.php:131 -msgid "Error: can't find body element." -msgstr "Fehler: kein Body-Element gefunden." +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "Verbunden" -#: modules/popup-dialog.php:7 -#, fuzzy -msgid "OPML Import" -msgstr "Importieren" +#: plugins/instances/init.php:204 plugins/instances/init.php:395 +msgid "Instance" +msgstr "Instanz" -#: modules/popup-dialog.php:34 -#, fuzzy -msgid "Importing using DOMXML." -msgstr "Importiere OPML (verwende DOMXML Erweiterung)..." +#: plugins/instances/init.php:215 plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "Instanz-URL" -#: modules/popup-dialog.php:40 -#, fuzzy -msgid "Importing using DOMDocument." -msgstr "Importiere OPML (verwende DOMDocument Erweiterung)..." +#: plugins/instances/init.php:226 plugins/instances/init.php:414 +msgid "Access key:" +msgstr "Zugriffsberechtigung:" -#: modules/popup-dialog.php:68 -msgid "Settings Profiles" -msgstr "" +#: plugins/instances/init.php:229 plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "Zugriffsberechtigung" -#: modules/popup-dialog.php:75 -#, fuzzy -msgid "Create profile" -msgstr "Filter erstellen" +#: plugins/instances/init.php:233 plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "Benutzen Sie den selben Zugriffschlüssel für beide verbundenen Instanzen." -#: modules/popup-dialog.php:100 modules/popup-dialog.php:128 -#, fuzzy -msgid "(active)" -msgstr "Adaptiv" +#: plugins/instances/init.php:241 plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "Neuen Zugriffsschlüssel erzeugen" -#: modules/popup-dialog.php:148 modules/popup-dialog.php:350 -#: modules/pref-feeds.php:455 modules/pref-feeds.php:1136 -#: modules/pref-filters.php:153 modules/pref-filters.php:321 -#: modules/pref-labels.php:140 modules/pref-users.php:378 -msgid "Remove" -msgstr "Entfernen" +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "Instanz verbinden" -#: modules/popup-dialog.php:150 -#, fuzzy -msgid "Activate" -msgstr "Adaptiv" +#: 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 "Sie können andere Instanzen von Tiny Tiny RSS mit dieser verbinden, um beliebte Feeds zu teilen. Verbinden Sie diese Instanz von Tiny Tiny RSS mit folgender URL:" -#: modules/popup-dialog.php:163 -#, fuzzy -msgid "Published Articles" -msgstr "Veröffentlichte Artikel" +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "Zuletzt verbunden" -#: modules/popup-dialog.php:168 -#, fuzzy -msgid "Your Published articles feed URL is:" -msgstr "Link zum Feed für veröffentlichte Artikel." +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "Status" -#: modules/popup-dialog.php:177 -#, fuzzy -msgid "Generate new URL" -msgstr "Erzeugter Feed" +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "Gespeicherte Feeds" -#: modules/popup-dialog.php:190 -msgid "Notice" -msgstr "Anmerkung" +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "Verbindung herstellen" -#: modules/popup-dialog.php:196 -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 "" -"Der Aktualisierungs Daemon ist in den Einstellungen aktiviert, aber der " -"Daemon Prozess läuft nicht, weshalb keine Feeds aktualisiert werden können. " -"Bitte starten Sie den Prozess des Daemons oder benachrichtigen Sie den " -"Besitzer der Instanz." +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "af_redditimgur Einstellungen" -#: modules/popup-dialog.php:200 modules/popup-dialog.php:220 -msgid "Last update:" -msgstr "Letzte Aktualisierung:" +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "Extrahiere fehlenden Inhalt mit Readability" -#: modules/popup-dialog.php:208 -msgid "" -"You are running the latest version of Tiny Tiny RSS. The fact that you are " -"seeing this dialog is probably a bug." -msgstr "" -"Sie benutzen die neuste Version von Tiny Tiny RSS. Dass Sie diese Meldung " -"sehen ist möglicherweise ein Bug." +#: plugins/af_redditimgur/init.php:69 +msgid "Configuration saved" +msgstr "Die Einstellungen wurden gespeichert." -#: modules/popup-dialog.php:216 -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 "" -"Der Aktualisierungs Daemon braucht zu lange um eine Aktualisierung " -"auszuführen. Dies könnete auf ein Problem wie einen Absturz oder eine " -"Blockierung hinweisen. Bitte überprüfen Sie den Prozess des Daemons oder " -"benachrichtigen Sie den Besitzer des Instanz." +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "af_readability Einstellungen" -#: modules/popup-dialog.php:239 -msgid "Subscribe to Feed" -msgstr "Feed abonnieren" +#: plugins/af_readability/init.php:57 +msgid "Readability" +msgstr "Lesbarkeit" -#: modules/popup-dialog.php:248 modules/pref-feeds.php:197 -#: modules/pref-feeds.php:488 modules/pref-filters.php:407 -msgid "Feed" -msgstr "Feed" +#: plugins/af_readability/init.php:68 +msgid "Inline article content" +msgstr "Artikelinhalt" -#: modules/popup-dialog.php:251 modules/pref-feeds.php:213 -#: modules/pref-feeds.php:502 -msgid "URL:" -msgstr "URL:" +#: plugins/vf_shared/init.php:16 plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "Geteilte Artikel" -#: modules/popup-dialog.php:260 modules/pref-feeds.php:225 -#: modules/pref-feeds.php:514 -msgid "Place in category:" -msgstr "In Kategorie einordnen:" +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "+1" -#: modules/popup-dialog.php:268 modules/pref-feeds.php:332 -#: modules/pref-feeds.php:558 modules/pref-prefs.php:235 -#: modules/pref-users.php:142 -msgid "Authentication" -msgstr "Authentifizierung" +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "-1" -#: modules/popup-dialog.php:283 -msgid "This feed requires authentication." -msgstr "Dieser Feed benötigt eine Authentifizierung." +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "Zeige Klassifizierungsinformationen\t" -#: modules/popup-dialog.php:289 modules/popup-dialog.php:349 -msgid "Subscribe" -msgstr "Abonnieren" +#: plugins/af_sort_bayes/init.php:216 +msgid "Statistics" +msgstr "Statistiken" -#: modules/popup-dialog.php:290 -#, fuzzy -msgid "More feeds" -msgstr "Weitere Feeds" +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "Benötigte Anzahl übler Wörter für automatisches Matching: %d" -#: modules/popup-dialog.php:291 modules/popup-dialog.php:351 -#: modules/popup-dialog.php:425 modules/popup-dialog.php:543 -#: modules/popup-dialog.php:612 modules/pref-feeds.php:468 -#: modules/pref-feeds.php:623 modules/pref-filters.php:160 -#: modules/pref-users.php:181 -msgid "Cancel" -msgstr "Abbrechen" +#: plugins/af_sort_bayes/init.php:235 +msgid "Last matched articles" +msgstr "Letzte passende Artikel" -#: modules/popup-dialog.php:298 -msgid "Feed Browser" -msgstr "Feed-Browser" +#: plugins/af_sort_bayes/init.php:253 +msgid "Clear database" +msgstr "Datenbank leeren" -#: modules/popup-dialog.php:317 modules/popup-dialog.php:359 -#: modules/popup-dialog.php:424 modules/pref-feeds.php:1177 -#: modules/pref-filters.php:308 modules/pref-labels.php:131 -#: modules/pref-users.php:361 -msgid "Search" -msgstr "Suchen" +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "Bayesian Klassifizierung (af_sort_bayes)" -#: modules/popup-dialog.php:321 -#, fuzzy -msgid "Popular feeds" -msgstr "Feeds anzeigen" +#: plugins/af_sort_bayes/init.php:376 +#, php-format +msgid "Currently stored as: %s" +msgstr "Zur Zeit gespeichert als: %s" -#: modules/popup-dialog.php:322 -#, fuzzy -msgid "Feed archive" -msgstr "Feed-Aktionen" +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "Klassifizierungsergebnis" -#: modules/popup-dialog.php:325 -#, fuzzy -msgid "limit:" -msgstr "Grenzwert:" +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "Lesezeichen" -#: modules/popup-dialog.php:371 -msgid "Look for" -msgstr "" +#: 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 "Ziehen Sie den folgenden Link in Ihre Browser-Toolbar, öffnen Sie den Feed, an dem Sie interessiert sind, in Ihren Browser und klicken auf den Link, um ihn zu abonnieren." -#: modules/popup-dialog.php:378 -#, fuzzy -msgid "match on" -msgstr "suchen in:" +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "%s in Tiny Tiny RSS abonnieren?" -#: modules/popup-dialog.php:383 -msgid "Title or content" -msgstr "Titel oder Inhalt" +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Abonnieren in Tiny Tiny RSS" -#: modules/popup-dialog.php:388 -msgid "Limit search to:" -msgstr "Suche begrenzen auf:" +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "Benutzen Sie dieses Lesezeichen, um beliebige Seiten mit Tiny Tiny RSS zu teilen" -#: modules/popup-dialog.php:404 -msgid "This feed" -msgstr "Diesen Feed" +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "Sie können alle durch URLs geteilten Artikel hier deaktivieren." -#: modules/popup-dialog.php:438 -msgid "Create Filter" -msgstr "Filter erstellen" +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "Alle Artikel nicht mehr teilen" -#: modules/popup-dialog.php:457 modules/pref-filters.php:42 -#: modules/pref-filters.php:406 -msgid "Match" -msgstr "Übereinstimmung" +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "Per URL teilen" -#: modules/popup-dialog.php:465 modules/pref-filters.php:54 -#: modules/pref-filters.php:441 -msgid "before" -msgstr "vorher" +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "Sie können diesen Artikel über folgende eindeutige URL teilen:" -#: modules/popup-dialog.php:466 modules/pref-filters.php:55 -#: modules/pref-filters.php:442 -msgid "after" -msgstr "nacher" +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "Artikel nicht mehr teilen" -#: modules/popup-dialog.php:478 modules/pref-filters.php:68 -msgid "Check it" -msgstr "Überprüfen" +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "Der Fehler wird im Fehlerprotokoll gespeichert" -#: modules/popup-dialog.php:481 modules/pref-filters.php:71 -msgid "on field" -msgstr "in Feld" +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "An tt-rss.org melden" -#: modules/popup-dialog.php:487 modules/pref-filters.php:77 -msgid "in" -msgstr "in" +#: js/functions.js:93 +msgid "Close" +msgstr "schließen" -#: modules/popup-dialog.php:492 modules/pref-filters.php:82 -msgid "Perform Action" -msgstr "Aktion ausführen" +#: js/functions.js:104 +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "Sind Sie sicher, dass Sie diesen Fehler an tt-rss.org melden wollen? Der Bericht enthält Ihre Browser-Informationen. Ihre IP-Adresse würde in der Datenbank gespeichert werden." -#: modules/popup-dialog.php:509 modules/pref-filters.php:102 -msgid "with parameters:" -msgstr "mit Parametern:" +#: js/functions.js:224 +msgid "Click to close" +msgstr "Zum Schließen klicken" -#: modules/popup-dialog.php:522 modules/pref-feeds.php:355 -#: modules/pref-feeds.php:576 modules/pref-filters.php:121 -#: modules/pref-users.php:164 -msgid "Options" -msgstr "Optionen" +#: js/functions.js:1051 +msgid "Edit action" +msgstr "Aktion bearbeiten" -#: modules/popup-dialog.php:528 modules/pref-filters.php:133 -msgid "Enabled" -msgstr "Aktiviert" +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "Filter erstellen" -#: modules/popup-dialog.php:531 modules/pref-filters.php:142 -msgid "Inverse match" -msgstr "Invertierte Übereinstimmung" +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "Abonnement zurücksetzen? Tiny Tiny RSS wird versuchen, sich bei der nächsten Feed-Aktualisierung erneut beim Benachrichtigungs-Hub anzumelden." -#: modules/popup-dialog.php:541 -msgid "Create" -msgstr "Erstellen" +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "Abonnement zurückgesetzt." -#: modules/popup-dialog.php:555 -msgid "Update Errors" -msgstr "Aktualisierungsfehler" +#: js/functions.js:1239 js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "%s abbestellen?" -#: modules/popup-dialog.php:558 -msgid "These feeds have not been updated because of errors:" -msgstr "Folgende Feeds konnten aufgrund von Fehlern nicht aktualisiert werden:" +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "Feed wird entfernt..." -#: modules/popup-dialog.php:584 -msgid "Edit Tags" -msgstr "Tags bearbeiten" +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "Bitte geben Sie den Kategorietitel ein:" -#: modules/popup-dialog.php:589 -msgid "Tags for this article (separated by commas):" -msgstr "Tags für diesen Artikel (komma-getrennt)" +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "Neue Veröffentlichungsadresse für diesen Feed erzeugen?" -#: modules/popup-dialog.php:611 modules/pref-feeds.php:467 -#: modules/pref-feeds.php:621 modules/pref-filters.php:157 -#: modules/pref-users.php:179 -msgid "Save" -msgstr "Speichern" +#: js/functions.js:1384 js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Versuche, die Adresse zu ändern..." -#: modules/popup-dialog.php:620 -#, fuzzy -msgid "Tag Cloud" -msgstr "Tagwolke" +#: js/functions.js:1685 js/functions.js:1795 js/prefs.js:414 js/prefs.js:444 +#: js/prefs.js:476 js/prefs.js:629 js/prefs.js:649 js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "Keine Feeds ausgewählt." -#: modules/popup-dialog.php:623 -msgid "Showing most popular tags " -msgstr "Zeige beliebteste Tags" +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "Die ausgewählten Feeds aus dem Archiv löschen? Feeds mit gespeicherten Artikeln werden nicht gelöscht" -#: modules/popup-dialog.php:624 -#, fuzzy -msgid "more tags" -msgstr "Keine Tags" +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "Feeds mit Aktualisierungsfehlern" -#: modules/pref-feeds.php:4 -msgid "Check to enable field" -msgstr "Ankreuzen um das Feld zu aktivieren" +#: js/functions.js:1777 js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "Ausgewählte Feeds entfernen?" -#: modules/pref-feeds.php:187 -msgid "Feed Editor" -msgstr "Feed-Editor" +#: js/functions.js:1780 js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "Ausgewählte Feeds werden entfernt..." -#: modules/pref-feeds.php:242 -msgid "Link to feed:" -msgstr "Mit Feed verknüpfen:" +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "Kategorie bearbeiten" -#: modules/pref-feeds.php:259 -msgid "Not linked" -msgstr "Nicht verknüpft" +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "Kategorie entfernen" -#: modules/pref-feeds.php:310 modules/pref-feeds.php:537 -msgid "using" -msgstr "verwende" +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "Invertiert" -#: modules/pref-feeds.php:322 modules/pref-feeds.php:549 -msgid "Article purging:" -msgstr "Artikel löschen:" +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "Bitte Benutzernamen eingeben:" -#: modules/pref-feeds.php:369 modules/pref-feeds.php:582 -#, fuzzy -msgid "Hide from Popular feeds" -msgstr "Auf meiner Feedliste verbergen" +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "Kann den Benutzer nicht hinzufügen: kein Login angegeben." -#: modules/pref-feeds.php:380 modules/pref-feeds.php:587 -msgid "Right-to-left content" -msgstr "Rechts-nach-links Inhalt" +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "Füge Benutzer hinzu..." -#: modules/pref-feeds.php:392 modules/pref-feeds.php:593 -msgid "Include in e-mail digest" -msgstr "In E-Mail Bericht aufnehmen" +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Benutzereditor" -#: modules/pref-feeds.php:405 modules/pref-feeds.php:599 -msgid "Always display image attachments" -msgstr "" +#: js/prefs.js:99 js/prefs.js:211 js/prefs.js:736 +#: plugins/instances/instances.js:26 plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "Speichere Daten..." -#: modules/pref-feeds.php:427 modules/pref-feeds.php:607 -msgid "Cache images locally" -msgstr "Bilder lokal zwischenspeichern" +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "Filter bearbeiten" -#: modules/pref-feeds.php:439 -msgid "Icon" -msgstr "" +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "Filter entfernen?" -#: modules/pref-feeds.php:453 -msgid "Replace" -msgstr "" +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "Filter werden entfernt..." -#: modules/pref-feeds.php:478 -msgid "Multiple Feed Editor" -msgstr "Mehrfach Feed-Editor" +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "Ausgewählte Label entfernen?" -#: modules/pref-feeds.php:842 modules/pref-feeds.php:889 -msgid "All done." -msgstr "Alle fertig." +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "Ausgewählte Label werden entfernt..." -#: modules/pref-feeds.php:920 -#, php-format -msgid "Subscribed to %s." -msgstr "%s abonniert." +#: js/prefs.js:312 js/prefs.js:1380 +msgid "No labels are selected." +msgstr "Keine Label ausgewählt." -#: modules/pref-feeds.php:923 -#, fuzzy, php-format -msgid "Could not subscribe to %s." -msgstr "%s bereits abonniert." +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "Ausgewählte Benutzer löschen? Weder der Administrator noch Ihr eigenes Konto werden gelöscht." -#: modules/pref-feeds.php:926 -#, php-format -msgid "Already subscribed to %s." -msgstr "%s bereits abonniert." +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "Ausgewählte Benutzer werden entfernt..." -#: modules/pref-feeds.php:949 -msgid "Edit subscription options" -msgstr "Abonnement Optionen bearbeiten" +#: js/prefs.js:343 js/prefs.js:487 js/prefs.js:508 js/prefs.js:547 +msgid "No users are selected." +msgstr "Keine Benutzer ausgewählt." -#: modules/pref-feeds.php:1033 -msgid "Category editor" -msgstr "Kategorie-Editor" +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "Ausgewählte Filter entfernen?" -#: modules/pref-feeds.php:1056 -#, php-format -msgid "Category $%s already exists in the database." -msgstr "Kategorie $%s existiert bereits in der Datenbank." +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "Ausgewählte Filter werden entfernt..." -#: modules/pref-feeds.php:1077 -msgid "Create category" -msgstr "Kategorie erstellen" +#: js/prefs.js:376 js/prefs.js:584 js/prefs.js:603 +msgid "No filters are selected." +msgstr "Keine Filter ausgewählt." -#: modules/pref-feeds.php:1130 -msgid "No feed categories defined." -msgstr "Keine Feedkategorien definiert." +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "Ausgewählte Feeds abbestellen?" -#: modules/pref-feeds.php:1160 -msgid "Some feeds have update errors (click for details)" -msgstr "Einige Feeds haben Aktualisierungsfehler (klicken für Details)" +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "Bestelle ausgewählte Feeds ab..." -#: modules/pref-feeds.php:1181 help/3.php:45 help/4.php:22 -msgid "Subscribe to feed" -msgstr "Feed abonnieren" +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "Bitte nur einen Feed auswählen." -#: modules/pref-feeds.php:1184 -#, fuzzy -msgid "Edit feeds" -msgstr "Feed bearbeiten" +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "Alle nicht markierten Artikel im ausgewählten Feed löschen?" -#: modules/pref-feeds.php:1189 -msgid "Edit categories" -msgstr "Kategorien bearbeiten" +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "Leere ausgewählten Feed..." -#: modules/pref-feeds.php:1198 -#, fuzzy -msgid "More actions..." -msgstr "Aktionen..." +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "Artikel für wieviele Tage aufbewahren (0 - Standardwert nutzen)?" -#: modules/pref-feeds.php:1202 -msgid "Manual purge" -msgstr "Manuelle Säuberung" +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "Lösche ausgewählten Feed..." -#: modules/pref-feeds.php:1206 -msgid "Clear feed data" -msgstr "Feed-Daten löschen" +#: js/prefs.js:492 js/prefs.js:513 js/prefs.js:552 +msgid "Please select only one user." +msgstr "Bitte nur einen Benutzer auswählen." -#: modules/pref-feeds.php:1207 modules/pref-filters.php:324 -msgid "Rescore articles" -msgstr "Artikel neu bewerten" +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "Passwort des ausgewählten Benutzers zurücksetzen?" -#: modules/pref-feeds.php:1296 -msgid "Show last article times" -msgstr "Zeige Zeitstempel des letzten Artikels" +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "Passwort des ausgewählten Benutzers wird zurückgesetzt..." -#: modules/pref-feeds.php:1313 modules/pref-feeds.php:1373 -msgid "Last Article" -msgstr "Letzer Artikel" +#: js/prefs.js:565 +msgid "User details" +msgstr "Benutzerdetails" -#: modules/pref-feeds.php:1398 modules/pref-filters.php:487 -#: modules/pref-users.php:467 -msgid "Click to edit" -msgstr "Zum Bearbeiten klicken" +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "Bitte nur einen Filter auswählen." -#: modules/pref-feeds.php:1412 -#, php-format -msgid "(linked to %s)" -msgstr "(verknüpft mit %s)" +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "Ausgewählte Filter zusammenfügen?" -#: modules/pref-feeds.php:1439 -#, fuzzy -msgid "You don't have any subscribed feeds." -msgstr "Sie können die Kategorie nicht abbestellen." +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "Filter werden zusammengefügt..." -#: modules/pref-feeds.php:1441 -#, fuzzy -msgid "No matching feeds found." -msgstr "Keine übereinstimmenden Filter gefunden." +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "Mehrere Feeds bearbeiten" -#: modules/pref-feeds.php:1447 -msgid "OPML" -msgstr "OPML" +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "Änderungen an den gewählten Feeds speichern?" -#: modules/pref-feeds.php:1470 -msgid "Import" -msgstr "Importieren" +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "OPML Import" -#: modules/pref-feeds.php:1475 -msgid "Export OPML" -msgstr "OPML exportieren" +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "Bitte zuerst eine OPML-Datei auswählen." -#: modules/pref-feeds.php:1478 -msgid "Firefox Integration" -msgstr "Firefox Integration" +#: js/prefs.js:802 plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "Importiere, bitte warten..." -#: modules/pref-feeds.php:1480 -msgid "" -"This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the " -"link below." -msgstr "" -"Tiny Tiny RSS kann durch den nachstehenden Link als Feedreader für Firefox " -"verwendet werden." +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "Auf Standardwerte zurücksetzen?" -#: modules/pref-feeds.php:1487 -msgid "Click here to register this site as a feed reader." -msgstr "Diese Website als Feedreader registrieren." +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "Abonniere Feeds..." -#: modules/pref-feeds.php:1498 -msgid "" -"Published articles are exported as a public RSS feed and can be subscribed " -"by anyone who knows the URL specified below." -msgstr "" -"Veröffentlichte Artikel werden als öffentlicher RSS-Feed exportiert und " -"können von jedem abonniert werden, der die nachstehende URL kennt." +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "Gesicherte Daten dieses Plugins löschen?" -#: modules/pref-feeds.php:1501 -msgid "Display URL" -msgstr "" +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "Alle Einträge aus dem Fehler-Protokoll löschen?" -#: modules/pref-feeds.php:1604 -#, fuzzy, php-format -msgid "%d archived articles" -msgstr "Bewertete Artikel" +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "Alle Artikel als gelesen markieren?" -#: modules/pref-feeds.php:1633 -msgid "No feeds found." -msgstr "Keine Feeds gefunden." +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "Alle Feeds werden als gelesen markiert..." -#: modules/pref-filters.php:23 -msgid "Filter Editor" -msgstr "Filter-Editor" +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "Bitte erst das Mail-Plugin aktivieren." -#: modules/pref-filters.php:212 -#, php-format -msgid "Saved filter %s" -msgstr "Filter %s gespeichert" +#: js/tt-rss.js:434 js/functions.js:1571 js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "Sie können diese Art von Feed nicht bearbeiten." -#: modules/pref-filters.php:266 -#, php-format -msgid "Created filter %s" -msgstr "Filter %s erstellt" +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "Bitte erst das \"Original einbetten\" Plugin aktivieren." -#: modules/pref-filters.php:315 help/3.php:31 help/4.php:25 -msgid "Create filter" -msgstr "Filter erstellen" +#: js/tt-rss.js:518 js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "Widescreen ist in der kombinierten Ansicht nicht verfügbar" -#: modules/pref-filters.php:318 modules/pref-users.php:376 -msgid "Edit" -msgstr "Bearbeiten" +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "Sie können diese Art von Feed nicht neu bewerten." -#: modules/pref-filters.php:408 -msgid "Field" -msgstr "Feld" +#: js/tt-rss.js:835 js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "Bitte erst einen Feed auswählen." -#: modules/pref-filters.php:409 -msgid "Params" -msgstr "Parameter" +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "Artikel in %s neu bewerten?" -#: modules/pref-filters.php:476 -msgid "(Disabled)" -msgstr "(Deaktiviert)" +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "Artikel werden neu bewertet..." -#: modules/pref-filters.php:492 -msgid "(Inverse)" -msgstr "(Invertiert)" +#: js/viewfeed.js:1010 js/viewfeed.js:1053 js/viewfeed.js:1106 +#: js/viewfeed.js:2266 plugins/mailto/init.js:7 plugins/mail/mail.js:7 +#: js/viewfeed.js:734 js/viewfeed.js:762 js/viewfeed.js:789 js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "Keine Artikel ausgewählt." -#: modules/pref-filters.php:512 -msgid "No filters defined." -msgstr "Keine Filter definiert." +#: js/viewfeed.js:1018 +#, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "%d ausgewählten Artikel in %s löschen?" +msgstr[1] "%d ausgewählte Artikel in %s löschen?" + +#: js/viewfeed.js:1020 +#, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "%d ausgewählten Artikel löschen?" +msgstr[1] "%d ausgewählte Artikel löschen?" + +#: js/viewfeed.js:1062 +#, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "%d ausgewählten Artikel in %s archivieren?" +msgstr[1] "%d ausgewählte Artikel in %s archivieren?" + +#: js/viewfeed.js:1065 +#, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "%d archivierten Artikel zurück verschieben?" +msgstr[1] "%d archivierte Artikel zurück verschieben?" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "Bitte beachten Sie, dass nicht markierte Artikel beim nächsten Update der Feeds gelöscht werden könnten." + +#: js/viewfeed.js:1112 +#, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "%d ausgewählten Artikel in %s als gelesen markieren?" +msgstr[1] "%d ausgewählte Artikel in %s als gelesen markieren?" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "Artikel-Tags bearbeiten" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "Artikel-Tags werden gespeichert..." + +#: js/viewfeed.js:1298 js/viewfeed.js:109 js/viewfeed.js:160 +#: js/viewfeed.js:177 +msgid "Click to open next unread feed." +msgstr "Hier klicken, um den nächsten ungelesenen Feed zu öffnen" + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "Originalartikel öffnen" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Label zuweisen" -#: modules/pref-filters.php:514 -msgid "No matching filters found." -msgstr "Keine übereinstimmenden Filter gefunden." +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "Label entfernen" -#: modules/pref-labels.php:102 -#, php-format -msgid "Created label %s" -msgstr "Label %s erstellt" +#: js/viewfeed.js:2159 +msgid "Select articles in group" +msgstr "Artikel als Gruppe auswählen" -#: modules/pref-labels.php:137 help/3.php:30 help/4.php:26 -msgid "Create label" -msgstr "Label erstellen" +#: js/viewfeed.js:2168 +msgid "Mark group as read" +msgstr "Gruppe als gelesen markieren" -#: modules/pref-labels.php:143 -msgid "Clear colors" -msgstr "Farben löschen" +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "Feed als gelesen markieren" -#: modules/pref-labels.php:223 -msgid "Click to change color" -msgstr "Zum Ändern der Farbe hier klicken" +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "Bitte geben Sie eine neue Bewertung für die ausgewählten Artikel ab:" -#: modules/pref-labels.php:246 -msgid "No labels defined." -msgstr "Keine Label definiert." +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "Bitte geben Sie eine neue Bewertung für diesen Artikel ab:" -#: modules/pref-labels.php:248 -msgid "No matching labels found." -msgstr "Keine übereinstimmenden Label gefunden." +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "Artikel-URL:" -#: modules/pref-labels.php:306 -msgid "custom color:" -msgstr "Benutzerdefinierte Farbe:" +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "Entschuldigung, dein Browser unterstützt keine \"Sandbox\" für iframes." -#: modules/pref-labels.php:307 -msgid "foreground" -msgstr "Vordergrund" +#: plugins/af_psql_trgm/init.js:11 +msgid "Related articles" +msgstr "verwandte Artikel" -#: modules/pref-labels.php:308 -msgid "background" -msgstr "Hintergrund" +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "Artikelnotiz wird gespeichert..." -#: modules/pref-prefs.php:37 -msgid "Old password cannot be blank." -msgstr "Altes Passwort darf nicht leer sein." +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Google Reader Import" -#: modules/pref-prefs.php:42 -msgid "New password cannot be blank." -msgstr "Neues Passwort darf nicht leer sein." +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "Bitte zuerst die Datei auswählen." -#: modules/pref-prefs.php:47 -msgid "Entered passwords do not match." -msgstr "Die eingegebenen Passwörter stimmen nicht überein." +#: plugins/mailto/init.js:21 plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "Artikel via E-Mail weiterleiten" -#: modules/pref-prefs.php:74 -msgid "Password has been changed." -msgstr "Passwort wurde geändert." +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "Daten exportieren" -#: modules/pref-prefs.php:76 -msgid "Old password is incorrect." -msgstr "Altes Passwort ist falsch." +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "Fertig, %d Artikel exportiert. Hier herunterladen." +msgstr[1] "Fertig, %d Artikel exportiert. Hier herunterladen." -#: modules/pref-prefs.php:104 -msgid "The configuration was saved." -msgstr "Die Einstellungen wurden gespeichert." +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Daten importieren" -#: modules/pref-prefs.php:120 -#, php-format -msgid "Unknown option: %s" -msgstr "Unbekannte Option: %s" +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "Bitte zuerst die Datei auswählen." -#: modules/pref-prefs.php:131 -msgid "E-mail has been changed." -msgstr "E-Mail Adresse wurde geändert." +#: plugins/shorten_expanded/init.js:37 +msgid "Click to expand article" +msgstr "Klicken, um den Artikel aufzuklappen." -#: modules/pref-prefs.php:171 -msgid "" -"Your password is at default value, \n" -"\t\t\t\t\t\tplease change it." -msgstr "" -"Sie nutzen das Standard Passwort, \n" -"\t\t\t\t\t\tbitte ändern Sie das Passwort." +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "Fehler beim Senden der E-Mail:" -#: modules/pref-prefs.php:198 -msgid "Personal data" -msgstr "Persönliche Daten" +#: plugins/mail/mail.js:38 +msgid "Your message has been sent." +msgstr "Ihre Nachricht wurde gesendet" -#: modules/pref-prefs.php:205 -msgid "E-mail" -msgstr "E-Mail" +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "Instanz verbinden" -#: modules/pref-prefs.php:216 -msgid "Access level" -msgstr "Zugriffsberechtigung" +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "Instanz bearbeiten" -#: modules/pref-prefs.php:229 -msgid "Change e-mail" -msgstr "E-Mail Adresse ändern" +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "Ausgewählte Instanzen entfernen?" -#: modules/pref-prefs.php:237 -msgid "Old password" -msgstr "Altes Passwort" +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "Ausgewählte Instanzen werden entfernt..." -#: modules/pref-prefs.php:244 -msgid "New password" -msgstr "Neues Passwort" +#: plugins/instances/instances.js:139 plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "Keine Instanzen ausgewählt." -#: modules/pref-prefs.php:252 -msgid "Confirm password" -msgstr "Passwort bestätigen" +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "Bitte nur eine Instanz auswählen." -#: modules/pref-prefs.php:268 -msgid "Change password" -msgstr "Passwort ändern" +#: plugins/af_sort_bayes/init.js:26 +msgid "Clear classifier database?" +msgstr "Klassifizierungsdatenbank leeren?" -#: modules/pref-prefs.php:323 -msgid "Select theme" -msgstr "Thema auswählen" +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "Klassifizierungsinformationen" -#: modules/pref-prefs.php:383 modules/pref-prefs.php:388 -msgid "Yes" -msgstr "Ja" +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "Artikel über URL teilen" -#: modules/pref-prefs.php:385 modules/pref-prefs.php:388 -msgid "No" -msgstr "Nein" +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "Eine neue URL zum Teilen des Artikels erzeugen?" -#: modules/pref-prefs.php:409 -msgid "Save configuration" -msgstr "Einstellungen speichern" +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "Versuche, die Adresse zu ändern..." -#: modules/pref-prefs.php:412 -msgid "Manage profiles" -msgstr "" +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "Teilen für diesen Artikel rückgängig machen?" -#: modules/pref-prefs.php:415 -msgid "Reset to defaults" -msgstr "Auf Standardwerte zurücksetzen" +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "Versuche, Teilen rückgängig zu machen..." -#: modules/pref-users.php:7 -msgid "Your access level is insufficient to open this tab." -msgstr "" -"Sie haben nicht die benötigten Rechte um diese Registerkarte zu öffnen." +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "Alle bisher geteilten Artikel URLs werden ungültig. Fortfahren?" -#: modules/pref-users.php:17 -msgid "User details" -msgstr "Benutzer Details" +#: plugins/share/share_prefs.js:6 js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "Leere URLs..." -#: modules/pref-users.php:31 -msgid "User not found" -msgstr "Benutzer nicht gefunden" +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "Geteilte URLs geleert." -#: modules/pref-users.php:50 modules/pref-users.php:428 -msgid "Registered" -msgstr "Registriert" +#: js/feedlist.js:416 js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "Alle Artikel in %s als gelesen markieren?" -#: modules/pref-users.php:51 -msgid "Last logged in" -msgstr "Zuletzt angemeldet" +#: js/feedlist.js:435 +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "Alle Artikel in %s, die älter als einen Tag sind, als gelesen markieren?" -#: modules/pref-users.php:58 -msgid "Subscribed feeds count" -msgstr "Abonnierte Feeds Zähler" +#: js/feedlist.js:438 +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "Alle Artikel in %s, die älter als eine Woche sind, als gelesen markieren?" -#: modules/pref-users.php:62 -msgid "Subscribed feeds" -msgstr "Abonnierte Feeds" +#: js/feedlist.js:441 +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "Alle Artikel in %s, die älter als 2 Wochen sind, als gelesen markieren?" -#: modules/pref-users.php:108 -msgid "User Editor" -msgstr "Benutzer-Editor" +#: js/functions.js:615 +msgid "Error explained" +msgstr "Fehler erklärt" -#: modules/pref-users.php:145 -msgid "Access level: " -msgstr "Zugriffsberechtigung: " +#: js/functions.js:697 +msgid "Upload complete." +msgstr "Upload fertig." -#: modules/pref-users.php:158 -msgid "Change password to" -msgstr "Passwort ändern in" +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "Gespeichertes Feed-Symbol entfernen?" -#: modules/pref-users.php:167 -msgid "E-mail: " -msgstr "E-Mail: " +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "Feedsymbol wird entfernt." -#: modules/pref-users.php:201 -#, php-format -msgid "Changed password of user %s." -msgstr "Passwort von Benutzer %s geändert." +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "Feedsymbol entfernt." -#: modules/pref-users.php:249 -#, php-format -msgid "Added user %s with password %s" -msgstr "Benutzer %s mit Passwort %s hinzugefügt" +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "Bitte eine Bilddatei zum Hochladen auswählen." -#: modules/pref-users.php:256 -#, php-format -msgid "Could not create user %s" -msgstr "Konnte den Benutzer %s nicht anlegen" +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "Neues Symbol für diesen Feed hochladen?" -#: modules/pref-users.php:260 -#, php-format -msgid "User %s already exists." -msgstr "Benutzer %s existiert bereits." +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "Lade hoch, bitte warten..." -#: modules/pref-users.php:280 -#, php-format -msgid "" -"Changed password of user %s\n" -"\t\t\t\t\t to %s" -msgstr "" -"Passwort von Benutzer %s\n" -"\t\t\t\t\t geändert in %s" +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "Bitte einen Label-Titel eingeben:" -#: modules/pref-users.php:284 -#, php-format -msgid "Notifying %s." -msgstr "Benachrichtige %s." +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "Kann das Label nicht hinzufügen: fehlender Titel." -#: modules/pref-users.php:321 -msgid "[tt-rss] Password change notification" -msgstr "[tt-rss] Benachrichtigung: Passwort geändert" +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "Feed abonnieren" -#: modules/pref-users.php:370 help/4.php:27 -msgid "Create user" -msgstr "Benutzer anlegen" +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "Fehler beim Verarbeiten der Ausgabe. Dies kann auf einen Server-Timeout oder Netzwerkprobleme deuten. Die Ausgabe des Backends wurde in der Browser-Konsole protokolliert." -#: modules/pref-users.php:374 -#, fuzzy -msgid "Details" -msgstr "Täglich" +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "%s abonniert" -#: modules/pref-users.php:380 -msgid "Reset password" -msgstr "Passwort zurücksetzen" +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "Die angegebene URL scheint ungültig zu sein." -#: modules/pref-users.php:426 -msgid "Login" -msgstr "Anmelden" +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "Die angegebene URL scheint keine Feeds zu enthalten." -#: modules/pref-users.php:427 -msgid "Access Level" -msgstr "Zugriffsberechtigung" +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "Ausklappen, um Feed auszuwählen" -#: modules/pref-users.php:429 -msgid "Last login" -msgstr "Zuletzt angemeldet" +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "Die angegebene URL konnte nicht heruntergeladen werden: %s" -#: modules/pref-users.php:487 -msgid "No users defined." -msgstr "Keine Benutzer definiert." +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "XML-Validierung fehlgeschlagen: %s" -#: modules/pref-users.php:489 -msgid "No matching users found." -msgstr "Keine zugehörigen Benutzer gefunden." +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "Sie haben diesen Feed bereits abonniert." -#: help/2.php:1 -msgid "Content filtering" -msgstr "Inhaltsfilterung" +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "Regel bearbeiten" -#: help/2.php:3 -msgid "" -"Tiny Tiny RSS has support for filtering (or processing) articles. Filtering " -"is done once, when new article is imported to the database from the " -"newsfeed, specified field is matched against regular expression and some " -"action is taken. Regular expression matching is case-insensitive." -msgstr "" -"Tiny Tiny RSS bietet das Filtern (oder Verarbeiten) von Artikeln an. Die " -"Filterung wird einmalig ausgeführt, wenn der neue Artikel vom Feed in die " -"Datenbank importiert wird, das angegebene Feld wird mit einem Regulären " -"Ausdruck verglichen und eine Aktion ausgeführt. Die Regulären Ausdrücke " -"unterscheiden nicht zwischen Groß- und Kleinschreibung." +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "Feed bearbeiten" -#: help/2.php:5 -msgid "" -"Supported actions are: filter (do not import) article, mark article as read, " -"set starred, assign tag(s), and set score. Filters can be defined globally " -"and for some specific feed." -msgstr "" -"Unterstützte Aktionen sind: Artikel filtern (ohne zu importieren), Artikel " -"als gelesen markieren, als bewertet markieren, Tags zuweisen und bewerten. " -"Filter können global und für einen einzigen Feed definiert werden." +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "Weitere Feeds" -#: help/2.php:7 -msgid "" -"Multiple and inverse matching are supported. All matching filters are " -"considered when article is being imported and all actions executed in " -"sequence. Inverse matching reverts matching result, e.g. filter matching " -"XYZZY in title with inverse flag will match all articles, except those " -"containing string XYZZY in title." -msgstr "" -"Mehrfach und invertierte Übereinstimmungen werden unterstützt. Alle " -"übereinstimmenden Filter werden berücksichtigt wenn ein Artikel importiert " -"wird und alle Aktionen werden nacheinander ausgeführt. Invertierte " -"Übereinstimmungen kehren das Ergebnis um, z.B. Filterübereinstimmung XYZZY " -"im Titel mit invert Flag markiert alle Artikel, außer diejenigen, welche den " -"String XYZZY im Titel haben." - -#: help/2.php:9 -msgid "See also:" -msgstr "Siehe auch:" - -#: help/3.php:1 help/4.php:1 -msgid "Keyboard Shortcuts" -msgstr "Tastaturbefehle" +#: js/functions.js:1878 +msgid "Help" +msgstr "Hilfe" -#: help/3.php:5 -msgid "Navigation" -msgstr "Navigation" +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "Kategorie %s löschen? Feeds dieser Kategorie werden dann nach Unkategorisiert verschoben." -#: help/3.php:8 -msgid "Move between feeds" -msgstr "Zwischen Feeds wechseln" +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "Kategorie wird entfernt..." -#: help/3.php:9 -msgid "Move between articles" -msgstr "Zwischen Artikeln wechseln" +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "Ausgewählte Kategorien entfernen?" -#: help/3.php:10 -msgid "Show search dialog" -msgstr "Suchdialog anzeigen" +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "Ausgewählte Kategorien werden entfernt..." -#: help/3.php:13 -msgid "Active article actions" -msgstr "Aktionen für aktiven Artikel" +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "Keine Kategorien ausgewählt." -#: help/3.php:16 -msgid "Toggle starred" -msgstr "Umschalten bewertet" +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "Name der Kategorie:" -#: help/3.php:17 -msgid "Toggle published" -msgstr "Umschalten veröffentlicht" +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "Kategorie wird erstellt..." -#: help/3.php:18 -msgid "Toggle unread" -msgstr "Umschalten ungelesen" +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "Feeds ohne kürzliche Aktualisierungen" -#: help/3.php:19 -msgid "Edit tags" -msgstr "Tags bearbeiten" +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "Aktuelle Veröffentlichungsadresse durch eine Neue ersetzen?" -#: help/3.php:20 -msgid "Open article in new window" -msgstr "Artikel in neuem Fenster öffnen" +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "Feed wird geleert..." -#: help/3.php:21 -msgid "Mark articles below/above active one as read" -msgstr "Markiere vorhergehende/nachfolgende Artikel als gelesen" +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "Artikel in gewählten Feeds neu bewerten?" -#: help/3.php:22 -msgid "Scroll article content" -msgstr "Artikelinhalt scrollen" +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "Ausgewählte Feed werden neu bewertet..." -#: help/3.php:26 help/4.php:30 -msgid "Other actions" -msgstr "Andere Aktionen" +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "Alle Artikel neu bewerten? Dieser Vorgang kann viel Zeit in Anspruch nehmen." -#: help/3.php:29 -msgid "Select article under mouse cursor" -msgstr "Artikel unter Mauszeiger auswählen" +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "Feed werden neu bewertet..." -#: help/3.php:32 -msgid "Collapse sidebar" -msgstr "Seitenleiste verbergen" +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "Farben der ausgewählten Label auf Standardwerte zurücksetzen?" -#: help/3.php:33 -msgid "Toggle category reordering mode" -msgstr "In den Sortiermodus für Kategorien wechseln" +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "Einstellungsprofile" -#: help/3.php:34 help/4.php:34 -msgid "Display this help dialog" -msgstr "Diesen Hilfe-Dialog anzeigen" +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "Ausgewählte Profile löschen? Das aktive und das Standardprofil werden nicht gelöscht." -#: help/3.php:39 -msgid "Feed actions" -msgstr "Feed-Aktionen" +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "Ausgewählte Profile werden entfernt..." -#: help/3.php:42 -msgid "Update active feed" -msgstr "Aktiven Feed aktualisieren" +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "Keine Profile ausgewählt." -#: help/3.php:43 -msgid "Update all feeds" -msgstr "Alle Feeds aktualisieren" +#: js/prefs.js:1438 js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "Ausgewählte Profile entfernen?" -#: help/3.php:46 -msgid "Edit feed" -msgstr "Feed bearbeiten" +#: js/prefs.js:1454 js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "Bitte ein Profil zum Aktivieren auswählen." -#: help/3.php:47 -msgid "Sort by name or unread count" -msgstr "Nach Namen oder Anzahl ungelesener Artikel sortieren" +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "Profil wird erstellt..." -#: help/3.php:48 -msgid "Hide visible read articles" -msgstr "Gelesene Artikel verbergen" +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "Alle zuvor erstellten Feed-URLs werden ungültig. Fortfahren?" -#: help/3.php:49 -msgid "Mark feed as read" -msgstr "Feed als gelesen markieren" +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "Generierte URLs gelöscht." -#: help/3.php:50 -#, fuzzy -msgid "Reverse headlines order" -msgstr "Umgekehrte Schlagzeilen Sortierung (Älteste zuerst)" +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Label-Editor" -#: help/3.php:51 -msgid "Mark all feeds as read" -msgstr "Alle Feeds als gelesen markieren" +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "Sie können die Kategorie nicht abbestellen." -#: help/3.php:52 -msgid "If viewing category, (un)collapse it" -msgstr "Gewählte Kategorie auf-/zuklappen" +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "Suche abbrechen" -#: help/3.php:55 help/4.php:5 -msgid "Go to..." -msgstr "Gehe zu..." +#: js/viewfeed.js:174 +msgid "New articles found, reload feed to continue." +msgstr "Neue Artikel gefunden. Feed neu laden, um fortzufahren." -#: help/3.php:62 -msgid "Tag cloud" -msgstr "Tagwolke" +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Artikelmarkierung entfernen" -#: help/3.php:69 help/4.php:41 -msgid "Press any key to close this window." -msgstr "Drücken Sie eine beliebige Taste um dieses Fenster zu schließen." +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "Artikel markieren" -#: help/4.php:9 -msgid "My Feeds" -msgstr "Meine Feeds" +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "Artikelveröffentlichung widerrufen" -#: help/4.php:10 -msgid "Other Feeds" -msgstr "Andere Feeds" +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Artikel veröffentlichen" -#: help/4.php:19 -msgid "Panel actions" -msgstr "Panel Aktionen" +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "%d Artikel ausgewählt." +msgstr[1] "%d Artikel ausgewählt." -#: help/4.php:23 -msgid "Top 25 feeds" -msgstr "Top 25 Feeds" +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "Kein Artikel ausgewählt." -#: help/4.php:24 -msgid "Edit feed categories" -msgstr "Feedkategorien bearbeiten" +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "Keine Artikel zum markieren gefunden" -#: help/4.php:33 -msgid "Focus search (if present)" -msgstr "Fokussierte Suche (wenn gewählt)" +#: js/viewfeed.js:1452 +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "%d Artikel als gelesen markieren?" +msgstr[1] "%d Artikel als gelesen markieren?" -#: help/4.php:39 -msgid "" -"Note: not all actions may be available, depending on Tiny Tiny RSS " -"configuration and your access level." -msgstr "" -"Anmerkung: Abhängig von Ihren Tiny Tiny RSS Einstellungen und " -"Zugriffsrechten könnten nicht alle Aktionen verfügbar sein." +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "Zeige Artikel-URL an" -#: mobile/functions.php:59 mobile/functions.php:136 mobile/functions.php:172 -#: mobile/functions.php:199 mobile/functions.php:233 mobile/functions.php:356 -#: mobile/prefs.php:25 -msgid "Home" -msgstr "" +#~ msgid "Select by tags..." +#~ msgstr "Artikel nach Tag filtern.." -#: mobile/functions.php:392 -msgid "Nothing found (click to reload feed)." -msgstr "" +#~ msgid "Limit search to:" +#~ msgstr "Suche begrenzen auf:" -#: mobile/prefs.php:30 -#, fuzzy -msgid "Enable categories" -msgstr "Feedkategorien aktivieren" +#~ msgid "This feed" +#~ msgstr "Diesen Feed" -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "ON" -msgstr "" +#~ msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation." +#~ msgstr "Komplexe Filter liefern im Testmodus möglichweise keine Ergebnisse, da es Probleme mit der RegExp-Implementierung des Datenbankservers gibt." -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "OFF" -msgstr "" +#~ msgid "Old password cannot be blank." +#~ msgstr "Altes Passwort darf nicht leer sein." -#: mobile/prefs.php:35 -#, fuzzy -msgid "Show images in posts" -msgstr "Keine Bilder in Artikeln anzeigen" +#~ msgid "New password cannot be blank." +#~ msgstr "Neues Passwort darf nicht leer sein." -#: mobile/prefs.php:40 -#, fuzzy -msgid "Hide read feeds" -msgstr "Gelesene ein-/ausblenden" +#~ msgid "Entered passwords do not match." +#~ msgstr "Die eingegebenen Passwörter stimmen nicht überein." -#: mobile/prefs.php:45 -#, fuzzy -msgid "Sort feeds by unread count" -msgstr "Feeds nach Anzahl der ungelesenen Artikel sortieren" +#~ msgid "Function not supported by authentication module." +#~ msgstr "Funktion vom Authentifizierungsmodul nicht unterstützt." -#: functions.js:1315 -msgid "Can't add filter: nothing to match on." -msgstr "Kann den Filter nicht hinzufügen: keine Übereinstimmung vorhanden." +#~ msgid "Match:" +#~ msgstr "Suche: " -#: functions.js:1350 -msgid "Can't subscribe: no feed URL given." -msgstr "Kann Feed nicht abonnieren: keine Feed URL angegeben." +#~ msgid "Any" +#~ msgstr "Beliebig" -#: functions.js:1354 -msgid "Subscribing to feed..." -msgstr "Abonniere Feed..." +#~ msgid "All tags." +#~ msgstr "Alle Tags." -#: functions.js:1377 -#, fuzzy -msgid "Subscribed to %s" -msgstr "Abonnierte Feeds:" +#~ msgid "Which Tags?" +#~ msgstr "Welche Tags?" -#: functions.js:1386 -#, fuzzy -msgid "Can't subscribe to the specified URL." -msgstr "Kann Feed nicht abonnieren: keine Feed URL angegeben." +#~ msgid "Display entries" +#~ msgstr "Einträge anzeigen" -#: functions.js:1389 -#, fuzzy -msgid "You are already subscribed to this feed." -msgstr "Sie können die Kategorie nicht abbestellen." +#~ msgid "Select item(s) by tags" +#~ msgstr "Artikel nach Tag auswählen" -#: functions.js:1952 -msgid "New articles available in this feed (click to show)" -msgstr "" +#~ msgid "Unread First" +#~ msgstr "Ungelesene zuerst" -#: functions.js:1989 -#, fuzzy -msgid "Subscribed to %d feed(s)." -msgstr "Abonnierte Feeds:" +#~ msgid "Unknown option: %s" +#~ msgstr "Unbekannte Option: %s" -#: functions.js:1999 functions.js:2030 prefs.js:557 prefs.js:587 prefs.js:619 -#: prefs.js:908 prefs.js:928 prefs.js:1795 -msgid "No feeds are selected." -msgstr "Keine Feeds ausgewählt." +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "Neue Version von Tiny Tiny RSS verfügbar!" -#: functions.js:2014 -msgid "" -"Remove selected feeds from the archive? Feeds with stored articles will not " -"be removed." -msgstr "" +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "Sitzung konnte nicht validiert werden (User-Agent wurde geändert)" -#: functions.js:2066 -#, fuzzy -msgid "Remove stored feed icon?" -msgstr "Gespeicherte Daten entfernen" +#~ msgid "Assign articles to labels automatically" +#~ msgstr "Artikel den Labeln automatisch zuordnen" -#: functions.js:2098 -#, fuzzy -msgid "Please select an image file to upload." -msgstr "Bitte einen Feed auswählen." +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "Neue Version von Tiny Tiny RSS verfügbar (%s)." -#: functions.js:2100 -msgid "Upload new icon for this feed?" -msgstr "" +#~ msgid "You can update using built-in updater in the Preferences or by using update.php" +#~ msgstr "Um ein Update durchzuführen können Sie den eingebauten Updater in den Einstellungen oder die update.php benutzen" -#: functions.js:2117 -msgid "Please enter label caption:" -msgstr "Bitte einen Label-Titel eingeben:" +#~ msgid "See the release notes" +#~ msgstr "Release notes anzeigen" -#: functions.js:2122 -msgid "Can't create label: missing caption." -msgstr "Kann das Label nicht hinzufügen: fehlender Titel." +#~ msgid "Download" +#~ msgstr "Download" -#: functions.js:2162 tt-rss.js:568 -msgid "Unsubscribe from %s?" -msgstr "Abbestellen von %s?" +#~ msgid "Error receiving version information or no new version available." +#~ msgstr "Das Abrufen von Update-Informationen ist fehlgeschlagen oder es ist bereits die neuste Version installiert." -#: offline.js:636 -msgid "Data for offline browsing has not been downloaded yet." -msgstr "Offline Browsing Daten wurden noch nicht heruntergeladen." +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Tiny Tiny RSS updaten" -#: offline.js:677 -msgid "Synchronizing feeds..." -msgstr "Synchronisiere Feeds..." +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "Tiny Tiny RSS ist auf dem neuesten Stand." -#: offline.js:696 -msgid "Synchronizing categories..." -msgstr "Synchronisiere Kategorien..." +#~ msgid "Force update" +#~ msgstr "Aktualisierungen erzwingen" -#: offline.js:714 -msgid "Synchronizing labels..." -msgstr "Synchronisiere Labels..." +#~ msgid "Do not close this dialog until updating is finished." +#~ msgstr "Diesen Dialog nicht Schließen, bis das Update abgeschlossen ist." -#: offline.js:733 -msgid "Synchronizing articles..." -msgstr "Synchronisiere Artikel..." +#~ msgid "It is suggested to backup your tt-rss directory first." +#~ msgstr "Es wird empfohlen, das tt-rss Verzeichnis zu sichern, bevor Sie fortfahren." -#: offline.js:778 -msgid "Synchronizing articles (%d)..." -msgstr "Synchronisiere Artikel (%d)..." +#~ msgid "Your database will not be modified." +#~ msgstr "Ihre Datenbank wird nicht verändert" -#: offline.js:806 -msgid "Last sync: %s" -msgstr "Letzte Synchronisierung: %s" +#~ 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 "Ihre aktuelle tt-rss Installation wird nicht verändert. Sie wird umbenannt und bleibt somit erhalten. Ihre Anpassungen können Sie nach dem Update migrieren." -#: offline.js:835 -msgid "Last sync: Error receiving data." -msgstr "Letzte Synchronisierung: Fehler beim Datenempfang." +#~ msgid "Ready to update." +#~ msgstr "Bereit zum Updaten." -#: offline.js:888 -msgid "Synchronizing..." -msgstr "Synchronisiere..." +#~ msgid "Start update" +#~ msgstr "Starte update" -#: offline.js:1195 -msgid "Switch Tiny Tiny RSS into offline mode?" -msgstr "Tiny Tiny RSS in den Offline Modus versetzen?" +#~ msgid "Backup your tt-rss directory before continuing. Please type 'yes' to continue." +#~ msgstr "Bitte sichern Sie ihr tt-rss Verzeichnis, bevor Sie fortfahren. Geben Sie 'yes' ein, um fortzufahren." -#: offline.js:1223 -msgid "Tiny Tiny RSS will reload. Go online?" -msgstr "Tiny Tiny RSS wird neu geladen. Jetzt Online gehen?" +#~ msgid "New version available!" +#~ msgstr "Neue Version verfügbar!" -#: offline.js:1655 -msgid "Last sync: Cancelled." -msgstr "Letzte Synchronisierung: Abgebrochen." +#~ msgid "LibXML error %s at line %d (column %d): %s" +#~ msgstr "LibXML Fehler %s in Zeile %d (Spalte %d): %s" -#: offline.js:1672 -msgid "" -"This will remove all offline data stored by Tiny Tiny RSS on this computer. " -"Continue?" -msgstr "" -"Dies wird alle von Tiny Tiny RSS gespeicherten Offline Daten von diesem " -"Computer entfernen. Fortfahren?" +#~ msgid "From:" +#~ msgstr "Absender:" -#: offline.js:1743 -msgid "" -"Tiny Tiny RSS has trouble accessing its server. Would you like to go offline?" -msgstr "" -"Tiny Tiny RSS hat Probleme seinen Server anzusteuern. Möchten Sie offline " -"arbeiten?" +#~ msgid "Select:" +#~ msgstr "Auswahl:" -#: prefs.js:233 -msgid "Error: No feed URL given." -msgstr "Fehler: Keine Feed URL angegeben." +#~ msgid "mark as read" +#~ msgstr "als gelesen markieren" -#: prefs.js:235 -msgid "Error: Invalid feed URL." -msgstr "Fehler: Ungültige Feed URL." +#~ msgid "Change password to" +#~ msgstr "Passwort ändern in" -#: prefs.js:263 -#, fuzzy -msgid "Can't add profile: no name specified." -msgstr "Kann die Kategorie nicht hinzufügen: kein Name angegeben." +#~ msgid "E-mail: " +#~ msgstr "E-Mail: " -#: prefs.js:285 -msgid "Can't add category: no name specified." -msgstr "Kann die Kategorie nicht hinzufügen: kein Name angegeben." +#~ msgid "Login field cannot be blank." +#~ msgstr "Feld für Benutzername darf nicht leer sein." -#: prefs.js:307 -msgid "Please enter login:" -msgstr "Bitte Benutzernamen eingeben:" +#~ msgid "Saving user..." +#~ msgstr "Benutzer werden gespeichert..." -#: prefs.js:314 -msgid "Can't create user: no login specified." -msgstr "Kann den Benutzer nicht hinzufügen: kein Login angegeben." +#~ msgid "Toggle marked" +#~ msgstr "Markierung ein-/ausschalten" -#: prefs.js:438 -msgid "Remove selected labels?" -msgstr "Ausgewählte Label entfernen?" +#~ msgid "(Un)hide empty categories" +#~ msgstr "Zeige/Verstecke leere Kategorien" -#: prefs.js:454 -msgid "No labels are selected." -msgstr "Keine Label ausgewählt." +#~ msgid "Published articles and generated feeds" +#~ msgstr "Veröffentlichte Artikel und erzeugte Feeds" -#: prefs.js:468 -msgid "Remove selected users?" -msgstr "Ausgewählte Benutzer entfernen?" +#~ msgid "Articles shared by URL" +#~ msgstr "Per URL geteilte Artikel" -#: prefs.js:485 prefs.js:798 prefs.js:819 prefs.js:858 -msgid "No users are selected." -msgstr "Keine Benutzer ausgewählt." +#~ msgid "These feeds have not been updated because of errors:" +#~ msgstr "Folgende Feeds konnten aufgrund von Fehlern nicht aktualisiert werden:" -#: prefs.js:503 -msgid "Remove selected filters?" -msgstr "Ausgewählte Filter entfernen?" +#~ msgid "Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings." +#~ msgstr "Diese Anwendung benötigt Javascript, um ordnungsgemäß zu funktionieren. Bitte überprüfen Sie Ihre Browser-Einstellungen." -#: prefs.js:519 prefs.js:888 -msgid "No filters are selected." -msgstr "Keine Filter ausgewählt." +#~ msgid "Hello," +#~ msgstr "Hallo," -#: prefs.js:538 -msgid "Unsubscribe from selected feeds?" -msgstr "Ausgewählte Feeds abbestellen?" +#~ msgid "Regular version" +#~ msgstr "Reguläre Version" -#: prefs.js:572 -msgid "Please select only one feed." -msgstr "Bitte nur einen Feed auswählen." +#~ msgid "Home" +#~ msgstr "Startseite" -#: prefs.js:578 -msgid "Erase all non-starred articles in selected feed?" -msgstr "Alle nicht bewerteten Artikel im ausgewählten Feed löschen?" +#~ msgid "Nothing found (click to reload feed)." +#~ msgstr "Nichts gefunden (klicken, um Feed zu aktualisieren)" -#: prefs.js:600 -msgid "How many days of articles to keep (0 - use default)?" -msgstr "Artikel von wievielen Tagen aufbewahren (0 - Standardwert nutzen)?" +#~ msgid "Open regular version" +#~ msgstr "Reguläre Version öffnen" -#: prefs.js:632 -msgid "" -"Remove selected profiles? Active and default profiles will not be removed." -msgstr "" +#~ msgid "Enable categories" +#~ msgstr "Feedkategorien aktivieren" -#: prefs.js:648 -#, fuzzy -msgid "No profiles selected." -msgstr "Kein Artikel ausgewählt." +#~ msgid "ON" +#~ msgstr "AN" -#: prefs.js:660 -msgid "Remove selected categories?" -msgstr "Ausgewählte Kategorien entfernen?" +#~ msgid "OFF" +#~ msgstr "AUS" -#: prefs.js:678 -msgid "No categories are selected." -msgstr "Keine Kategorien ausgewählt." +#~ msgid "Browse categories like folders" +#~ msgstr "Kategorien wie Ordner behandeln" -#: prefs.js:745 -msgid "Login field cannot be blank." -msgstr "Feld für Benutzername darf nicht leer sein." +#~ msgid "Show images in posts" +#~ msgstr "Bilder in Artikeln anzeigen" -#: prefs.js:803 prefs.js:824 prefs.js:863 -msgid "Please select only one user." -msgstr "Bitte nur einen Benutzer auswählen." +#~ msgid "Hide read articles and feeds" +#~ msgstr "Gelesene Artikel und Feeds verstecken" -#: prefs.js:828 -msgid "Reset password of selected user?" -msgstr "Passwort des ausgewählten Benutzers zurücksetzen?" +#~ msgid "Sort feeds by unread count" +#~ msgstr "Feeds nach Anzahl der ungelesenen Artikel sortieren" -#: prefs.js:893 -msgid "Please select only one filter." -msgstr "Bitte nur einen Filter auswählen." +#~ msgid "Article archive" +#~ msgstr "Artikelarchiv" -#: prefs.js:969 -msgid "No OPML file to upload." -msgstr "Keine OPML Datei zum Hochladen." +#~ msgid "Example Pane" +#~ msgstr "Beispiel Pane" -#: prefs.js:1229 -msgid "Reset to defaults?" -msgstr "Auf Standardwerte zurücksetzen?" +#~ msgid "Sample value" +#~ msgstr "Beispielwert" -#: prefs.js:1641 -msgid "Replace current publishing address with a new one?" -msgstr "Aktuelle Veröffentlichungsadresse durch eine Neue ersetzen?" +#~ msgid "Set value" +#~ msgstr "Wert setzen" -#: prefs.js:1678 -msgid "Save current configuration?" -msgstr "Aktuelle Einstellungen speichern?" +#~ msgid "Mark %d displayed article as read?" +#~ msgid_plural "Mark %d displayed articles as read?" +#~ msgstr[0] "%d Artikel als gelesen markieren?" +#~ msgstr[1] "%d Artikel als gelesen markieren?" -#: prefs.js:1779 -msgid "Rescore articles in selected feeds?" -msgstr "Artikel in gewählten Feeds neu bewerten?" +#~ msgid "Error: unable to load article." +#~ msgstr "Fehler: konnte Artikel nicht laden." -#: prefs.js:1802 -msgid "Rescore all articles? This operation may take a lot of time." -msgstr "" -"Alle Artikel neu bewerten? Dieser Vorgang kann viel Zeit in Anspruch nehmen." +#~ msgid "%d more..." +#~ msgid_plural "%d more..." +#~ msgstr[0] "%d mehr..." +#~ msgstr[1] "%d mehr..." -#: prefs.js:1821 -msgid "Remove filter %s?" -msgstr "Filter entfernen %s?" +#~ msgid "No unread feeds." +#~ msgstr "Keine ungelesenen Feeds." -#: prefs.js:1882 -msgid "Save changes to selected feeds?" -msgstr "Änderungen an den gewählten Feeds speichern?" +#~ msgid "Load more..." +#~ msgstr "Mehr laden..." -#: prefs.js:1962 -msgid "Reset label colors to default?" -msgstr "Label-Farben auf Standardwerte zurücksetzen?" +#~ msgid "Switch to digest..." +#~ msgstr "Zur Zusammenfassung wechseln..." -#: prefs.js:1987 -msgid "Please enter new label foreground color:" -msgstr "Bitte eine neue Label-Vordergrundfarbe eingeben:" +#~ msgid "Show tag cloud..." +#~ msgstr "Tagwolke anzeigen..." -#: prefs.js:1989 -msgid "Please enter new label background color:" -msgstr "Bitte eine neue Label-Hintergrundfarbe eingeben:" +#~ msgid "Click to play" +#~ msgstr "Zum Abspielen klicken" -#: prefs.js:2121 -#, fuzzy -msgid "Activate selected profile?" -msgstr "Ausgewählte Filter entfernen?" +#~ msgid "Play" +#~ msgstr "Abspielen" -#: prefs.js:2137 -msgid "Please choose a profile to activate." -msgstr "" +#~ msgid "Visit the website" +#~ msgstr "Offizielle Website besuchen" -#: tt-rss.js:74 -msgid "display feeds" -msgstr "Feeds anzeigen" +#~ msgid "Select theme" +#~ msgstr "Thema auswählen" -#: tt-rss.js:251 -msgid "Mark all articles as read?" -msgstr "Alle Artikel als gelesen markieren?" +#~ msgid "I have scanned the code and would like to enable OTP" +#~ msgstr "Ich habe den Code gescannt und möchte die Anmeldung mit Einmalpasswörtern jetzt aktivieren" -#: tt-rss.js:557 -msgid "You can't unsubscribe from the category." -msgstr "Sie können die Kategorie nicht abbestellen." +#~ msgid "Playing..." +#~ msgstr "Abspielen..." -#: tt-rss.js:562 tt-rss.js:755 tt-rss.js:930 -msgid "Please select some feed first." -msgstr "Bitte erst einen Feed auswählen." +#~ msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" +#~ msgstr "Datei konnte nicht hochgeladen werden. Möglicherweise muss upload_max_filesize in der PHP.ini angepasst werden. (Aktueller Wert = %s)" -#: tt-rss.js:618 -msgid "Reset category order?" -msgstr "Kategoriefolge zurücksetzen?" +#~ msgid "Default interval between feed updates" +#~ msgstr "Standard Intervall zwischen Feed-Aktualisierungen" -#: tt-rss.js:727 tt-rss.js:740 -msgid "Mark all articles in %s as read?" -msgstr "Alle Artikel in %s als gelesen markieren?" +#~ msgid "Could not update database" +#~ msgstr "Konnte die Datenbank nicht aktualisieren" -#: tt-rss.js:760 -msgid "You can't edit this kind of feed." -msgstr "Sie können diese Art von Feed nicht bearbeiten." +#~ msgid "Could not find necessary schema file, need version:" +#~ msgstr "Konnte die notwendige Schema-Datei nicht finden, benötige Version:" -#: tt-rss.js:925 -msgid "You can't rescore this kind of feed." -msgstr "Sie können diese Art von Feed nicht neu bewerten." +#~ msgid ", found: " +#~ msgstr ", gefunden: " -#: tt-rss.js:935 -msgid "Rescore articles in %s?" -msgstr "Artikel in %s neu bewerten?" +#~ msgid "Tiny Tiny RSS database is up to date." +#~ msgstr "Tiny Tiny RSS Datenbank ist auf dem neusten Stand." -#: viewfeed.js:528 viewfeed.js:592 -msgid "Star article" -msgstr "Artikel bewerten" +#~ msgid "Please backup your database before proceeding." +#~ msgstr "Bitte sichern Sie Ihre Datenbank bevor Sie fortfahren." -#: viewfeed.js:577 -msgid "Unstar article" -msgstr "Artikelbewertung zurücknehmen" +#~ msgid "Your Tiny Tiny RSS database needs update to the latest version (%d to %d)." +#~ msgstr "Ihre Tiny Tiny RSS Datenbank benötigt eine Aktualisierung auf die neuste Version (%d nach %d)." -#: viewfeed.js:585 viewfeed.js:652 -msgid "Please wait..." -msgstr "Bitte warten..." +#~ msgid "Performing updates..." +#~ msgstr "Führe Aktualisierungen durch..." -#: viewfeed.js:648 -msgid "Unpublish article" -msgstr "Artikelveröffentlichung widerrufen" +#~ msgid "Updating to version %d..." +#~ msgstr "Aktualisiere auf Version %d..." -#: viewfeed.js:935 viewfeed.js:971 viewfeed.js:1012 viewfeed.js:1097 -#: viewfeed.js:1141 viewfeed.js:1288 viewfeed.js:1338 viewfeed.js:1394 -msgid "No articles are selected." -msgstr "Keine Artikel ausgewählt." +#~ msgid "Checking version... " +#~ msgstr "Überprüfe Version..." -#: viewfeed.js:1256 -msgid "Mark all visible articles in %s as read?" -msgstr "Alle sichtbaren Artikel in %s als gelesen markieren?" +#~ msgid "OK!" +#~ msgstr "OK!" -#: viewfeed.js:1298 -#, fuzzy -msgid "Delete %d selected articles in %s?" -msgstr "%d ausgewählte Artikel in %s als gelesen markieren?" +#~ msgid "ERROR!" +#~ msgstr "FEHLER!" -#: viewfeed.js:1300 -#, fuzzy -msgid "Delete %d selected articles?" -msgstr "Die gewählten Artikel vom Label entfernen?" +#~ msgid "Finished. Performed %d update up to schema version %d." +#~ msgid_plural "Finished. Performed %d updates up to schema version %d." +#~ msgstr[0] "Beendet. %d Aktualisierung auf Schema Version %d durchgeführt." +#~ msgstr[1] "Beendet. %d Aktualisierungen auf Schema Version %d durchgeführt." -#: viewfeed.js:1348 -#, fuzzy -msgid "Archive %d selected articles in %s?" -msgstr "%d ausgewählte Artikel in %s als gelesen markieren?" +#~ msgid "Your database schema is from a newer version of Tiny Tiny RSS." +#~ msgstr "Ihr Datenbankschema stammt von einer neueren Tiny Tiny RSS Version." -#: viewfeed.js:1351 -msgid "Move %d archived articles back?" -msgstr "" +#~ msgid "Found schema version: %d, required: %d." +#~ msgstr "Gefundene Schemaversion: %d, benötigt: %d." -#: viewfeed.js:1401 -msgid "Mark %d selected articles in %s as read?" -msgstr "%d ausgewählte Artikel in %s als gelesen markieren?" +#~ msgid "Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer version and continue." +#~ msgstr "Aktualisierung des Schemas nicht möglich. Bitte aktualisieren Sie die Tiny Tiny RSS Dateien auf die neuere Version und fahren Sie fort." -#: viewfeed.js:1977 -msgid "No article is selected." -msgstr "Kein Artikel ausgewählt." +#~ msgid "Title or Content" +#~ msgstr "Titel oder Inhalt" -#: viewfeed.js:2018 -msgid "No articles found to mark" -msgstr "Keine Artikel zum markieren gefunden." +#~ msgid "Link" +#~ msgstr "Link" -#: viewfeed.js:2020 -msgid "Mark %d article(s) as read?" -msgstr "%d Artikel als gelesen markieren?" +#~ msgid "Content" +#~ msgstr "Inhalt" -#: viewfeed.js:2255 -#, fuzzy -msgid "Please enter a note for this article:" -msgstr "Tags für diesen Artikel bearbeiten" +#~ msgid "Article Date" +#~ msgstr "Artikeldatum" -#~ msgid "Adding feed..." -#~ msgstr "Füge Feed hinzu..." +#~ msgid "Set starred" +#~ msgstr "Markierung setzen" -#~ msgid "Adding feed category..." -#~ msgstr "Füge Feedkategorie hinzu..." +#~ msgid "Assign tags" +#~ msgstr "Tags zuweisen" -#, fuzzy -#~ msgid "Adding profile..." -#~ msgstr "Füge Feed hinzu..." +#~ msgid "Modify score" +#~ msgstr "Bewertung ändern" -#~ msgid "Adding user..." -#~ msgstr "Füge Benutzer hinzu..." +#~ 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 "Diese Option dient zum Lesen von Feedsammlungen mit teilweise wiederkehrenden Artikeln. Ist diese Option deaktiviert, wird ein Artikel von unterschiedlichen Feedsquellen nur einmal angezeigt." -#~ msgid "Assign score to article:" -#~ msgstr "Wertung zu Artikel zuweisen:" +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Wenn diese Option aktiviert ist, werden Schlagzeilen in Sonderfeeds und Labels nach Feeds gruppiert" -#~ msgid "Assign selected articles to label?" -#~ msgstr "Ausgewählte Artikel dem Label zuweisen?" +#~ msgid "Enable external API" +#~ msgstr "Externe API aktivieren" -#~ msgid "Can't open article: received invalid article link" -#~ msgstr "Kann den Artikel nicht öffnen: ungültigen Artikel-Link erhalten" +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Die Datumssyntax scheint korrekt zu sein:" -#~ msgid "Category reordering disabled" -#~ msgstr "Kategorie Neusortierung deaktiviert" +#~ msgid "Date syntax is incorrect." +#~ msgstr "Die Datumssyntax ist falsch." -#~ msgid "Category reordering enabled" -#~ msgstr "Sortiermodus für Kategorien aktiviert" +#~ msgid "Notice" +#~ msgstr "Anmerkung" -#, fuzzy -#~ msgid "Changing password..." -#~ msgstr "Passwort ändern" +#~ msgid "Tag Cloud" +#~ msgstr "Tagwolke" -#~ msgid "Clearing feed..." -#~ msgstr "Leere Feed..." +#~ msgid "Mark all visible articles in %s as read?" +#~ msgstr "Alle sichtbaren Artikel in %s als gelesen markieren?" -#~ msgid "Clearing selected feed..." -#~ msgstr "Leere ausgewählten Feed..." +#~ msgid "Form secret key incorrect. Please enable cookies and try again." +#~ msgstr "Geheimer Schlüssel falsch. Aktiviere Cookies und versuchs nochmal." -#~ msgid "comments" -#~ msgstr "Kommentare" +#~ msgid "Score" +#~ msgstr "Bewertung" -#~ msgid "Could not change feed URL." -#~ msgstr "Konnte die Feed URL nicht ändern." +#~ msgid "Completed." +#~ msgstr "Fertig." -#~ msgid "Could not display article (missing XML object)" -#~ msgstr "Konnte Artikel nicht darstellen (fehlendes XML Objekt)" +#~ msgid "Enable the options you wish to apply using checkboxes on the right:" +#~ msgstr "Benutzen Sie die Auswahlkästchen auf der rechten Seite, um die gewünschen Optionen anzuwenden:" -#~ msgid "Could not update headlines (missing XML data)" -#~ msgstr "Konnte die Schlagzeilen nicht aktualisieren (fehlende XML Daten)" +#~ msgid "New articles available in this feed (click to show)" +#~ msgstr "Neue Artikel verfügbar (klicken zum Anzeigen)" -#~ msgid "Could not update headlines (missing XML object)" -#~ msgstr "Konnte die Schlagzeilen nicht aktualisieren (fehlendes XML Objekt)" +#~ msgid "Pocket" +#~ msgstr "Pocket" -#~ msgid "Entire feed" -#~ msgstr "Ganzer Feed" +#~ msgid "Pinterest" +#~ msgstr "Pinterest" -#~ msgid "Error while trying to load more headlines" -#~ msgstr "Fehler beim Nachladen von Schlagzeilen" +#~ msgid "Share on identi.ca" +#~ msgstr "Auf identi.ca teilen" -#~ msgid "Failed to load article in new window" -#~ msgstr "Laden des Artikels im neuen Fenster fehlgeschlagen" +#~ msgid "Owncloud" +#~ msgstr "Owncloud" -#~ msgid "Failed to open window for the article" -#~ msgstr "Öffnen des Fensters für den neuen Artikel fehlgeschlagen" +#~ msgid "Owncloud url" +#~ msgstr "Owncloud URL" -#, fuzzy -#~ msgid "Feed icon removed." -#~ msgstr "Feed nicht gefunden." +#~ msgid "Bookmark on OwnCloud " +#~ msgstr "Lesezeichen in OwnCloud anlegen" -#~ msgid "Loading feed list..." -#~ msgstr "Lade Feedliste..." +#~ msgid "Flattr this article." +#~ msgstr "Artikel flattrn." -#~ msgid "Local data removed." -#~ msgstr "Lokale Daten entfernt." +#~ msgid "Share on Google+" +#~ msgstr "Auf Google+ teilen" -#~ msgid "Mark as read:" -#~ msgstr "Als gelesen markieren:" +#~ msgid "Share on Twitter" +#~ msgstr "Auf Twitter teilen" -#~ msgid "Marking all feeds as read..." -#~ msgstr "Alle Feeds als gelesen markieren..." +#~ msgid "Show additional preferences" +#~ msgstr "Erweiterte Einstellungen zeigen" -#~ msgid "Please wait until operation finishes." -#~ msgstr "Bitte warten Sie bis der Vorgang beendet ist." +#~ msgid "Back to feeds" +#~ msgstr "Zurück zu den Feeds" -#~ msgid "Purging selected feed..." -#~ msgstr "Lösche gewählten Feed..." +#~ msgid "This will clear your stored authentication information for Twitter. Continue?" +#~ msgstr "Dies wird Ihre gespeicherten Authentifizierungsinformationen für Twitter löschen. Fortfahren?" -#~ msgid "Remove selected articles from label?" -#~ msgstr "Die gewählten Artikel vom Label entfernen?" +#~ msgid "Clearing credentials..." +#~ msgstr "Berechtigungen werden gelöscht..." -#~ msgid "Removing feed..." -#~ msgstr "Entferne Feed..." +#~ msgid "Twitter credentials have been cleared." +#~ msgstr "Twitter Berechtigungen wurden entfernt." -#~ msgid "Removing filter..." -#~ msgstr "Entferne Filter..." +#~ msgid "Updated" +#~ msgstr "Aktualisiert" -#~ msgid "Removing offline data..." -#~ msgstr "Entferne Offline Daten..." +#~ msgid "Finished: %d articles processed, %d imported, %d feeds created." +#~ msgstr "Fertig: %d Artikel bearbeitet, %d importiert, %d Feeds erstellt." -#~ msgid "Removing selected categories..." -#~ msgstr "Entferne ausgewählte Kategorien..." +#~ msgid "Related" +#~ msgstr "Ähnlich" -#~ msgid "Removing selected filters..." -#~ msgstr "Entferne ausgewählte Filter..." +#~ msgid "Notifying %s." +#~ msgstr "Benachrichtige %s." -#~ msgid "Removing selected labels..." -#~ msgstr "Entferne ausgewählte Label..." +#~ msgid "Yes" +#~ msgstr "Ja" -#, fuzzy -#~ msgid "Removing selected profiles..." -#~ msgstr "Entferne ausgewählte Filter..." +#~ msgid "No" +#~ msgstr "Nein" -#~ msgid "Removing selected users..." -#~ msgstr "Entferne ausgewählte Benutzer..." +#~ msgid "News" +#~ msgstr "Neuigkeiten" -#~ msgid "Rescore last 100 articles in selected feeds?" -#~ msgstr "Die letzten 100 Artikel in den gewählten Feeds neu bewerten?" +#~ msgid "Move between feeds" +#~ msgstr "Zwischen Feeds wechseln" -#~ msgid "Rescoring articles..." -#~ msgstr "Bewerte Artikel neu..." +#~ msgid "Move between articles" +#~ msgstr "Zwischen Artikeln wechseln" -#~ msgid "Resetting password for selected user..." -#~ msgstr "Passwort des ausgewählten Benutzers wird zurückgesetzt..." +#~ msgid "Active article actions" +#~ msgstr "Aktionen für aktiven Artikel" -#~ msgid "Saving article tags..." -#~ msgstr "Speichere Artikel Tags..." +#~ msgid "Mark articles below/above active one as read" +#~ msgstr "Markiere vorhergehende/nachfolgende Artikel als gelesen" -#~ msgid "Saving feed..." -#~ msgstr "Speichere Feed..." +#~ msgid "Other actions" +#~ msgstr "Andere Aktionen" -#~ msgid "Saving feeds..." -#~ msgstr "Speichere Feeds..." +#~ msgid "Display this help dialog" +#~ msgstr "Diesen Hilfe-Dialog anzeigen" -#~ msgid "Saving filter..." -#~ msgstr "Speichere Filter..." +#~ msgid "Multiple articles actions" +#~ msgstr "Mehrere Artikeloptionen" -#~ msgid "Saving user..." -#~ msgstr "Speichere Benutzer..." +#, fuzzy +#~ msgid "Select unread articles" +#~ msgstr "Markierte Artikel auswählen" + +#~ msgid "Select starred articles" +#~ msgstr "Markierte Artikel auswählen" -#~ msgid "Selection" -#~ msgstr "Auswahl" +#, fuzzy +#~ msgid "Select published articles" +#~ msgstr "Markierte Artikel auswählen" -#~ msgid "Tiny Tiny RSS is in offline mode." -#~ msgstr "Tiny Tiny RSS ist im Offline Modus." +#, fuzzy +#~ msgid "Deselect all articles" +#~ msgstr "Alle Artikel auswählen" -#~ msgid "Trying to change e-mail..." -#~ msgstr "Versuche die E-Mail Adresse zu ändern..." +#~ msgid "Feed actions" +#~ msgstr "Feed-Aktionen" -#~ msgid "" -#~ "You have to synchronize some articles before going into offline mode." -#~ msgstr "" -#~ "Sie müssen einige Artikel synchronisieren bevor Sie in den Offline Modus " -#~ "wechseln." +#~ msgid "If viewing category, (un)collapse it" +#~ msgstr "Gewählte Kategorie auf-/zuklappen" -#~ msgid "" -#~ "You won't be able to access offline version of Tiny Tiny RSS until you " -#~ "switch it into offline mode again. Go online?" -#~ msgstr "" -#~ "Sie werden die Offline Version von Tiny Tiny RSS nicht benutzen können " -#~ "bis Sie wieder in den Offlinemodus wechseln. Online gehen?" +#~ msgid "Press any key to close this window." +#~ msgstr "Drücken Sie eine beliebige Taste, um dieses Fenster zu schließen." -#~ msgid "Display original article content" -#~ msgstr "Inhalt des original Artikels anzeigen" +#~ msgid "My Feeds" +#~ msgstr "Meine Feeds" -#~ msgid "All feeds updated." -#~ msgstr "Alle Feeds aktualisiert." +#, fuzzy +#~ msgid "Other Feeds" +#~ msgstr "Weitere Feeds" -#~ msgid "Can't open article: received invalid XML" -#~ msgstr "Kann den Artikel nicht öffnen: ungültiges XML empfangen" +#~ msgid "Panel actions" +#~ msgstr "Panel Aktionen" -#~ msgid "Changing category of selected feeds..." -#~ msgstr "Ändere Kategorie der ausgewählten Feeds..." +#~ msgid "Top 25 feeds" +#~ msgstr "Top 25 Feeds" -#~ msgid "Erase all non-starred articles in %s?" -#~ msgstr "Alle nicht bewerteten Artikel in %s löschen?" +#~ msgid "Edit feed categories" +#~ msgstr "Feedkategorien bearbeiten" -#~ msgid "Published feed URL changed." -#~ msgstr "URL des Veröffentlichungs-Feed geändert." +#~ msgid "Focus search (if present)" +#~ msgstr "Fokussierte Suche (wenn gewählt)" -#~ msgid "Trying to change address..." -#~ msgstr "Versuche die Adresse zu ändern..." +#~ msgid "Note: not all actions may be available, depending on Tiny Tiny RSS configuration and your access level." +#~ msgstr "Anmerkung: Abhängig von Ihren Tiny-Tiny-RSS-Einstellungen und Zugriffsrechten könnten nicht alle Aktionen verfügbar sein." -#~ msgid "Trying to change password..." -#~ msgstr "Versuche das Passwort zu ändern..." +#~ msgid "Open article in new tab" +#~ msgstr "Artikel in neuem Reiter öffnen" -#~ msgid "Unsubscribing from selected feeds..." -#~ msgstr "Entferne ausgewählte Feeds..." +#~ msgid "Right-to-left content" +#~ msgstr "Rechts-nach-links Inhalt" -#~ msgid "You can't clear this type of feed." -#~ msgstr "Sie können diese Art von Feed nicht löschen." +#~ msgid "Cache content locally" +#~ msgstr "Inhalte lokal zwischenspeichern" -#~ msgid "Clear articles" -#~ msgstr "Artikel löschen" +#~ msgid "Mark posts as updated on content change" +#~ msgstr "Artikel als aktualisiert markieren bei Inhaltsänderung" -#~ msgid "Adding category %s...
    " -#~ msgstr "Füge Kategorie hinzu %s...
    " +#~ msgid "Loading..." +#~ msgstr "Lade..." -#~ msgid "Done." -#~ msgstr "Fertig." +#~ msgid "View in a tt-rss tab" +#~ msgstr "Artikel in neuem Reiter öffnen" -#~ msgid "Visit official site" -#~ msgstr "Offizielle Website besuchen" +#~ msgid "Magpie" +#~ msgstr "Magpie" -#~ msgid "Close" -#~ msgstr "Schließen" +#~ msgid "SimplePie" +#~ msgstr "SimplePie" -#~ msgid "The configuration was reset to defaults." -#~ msgstr "Die Einstellungen wurden auf Standardwerte zurückgesetzt." +#~ msgid "using" +#~ msgstr "verwende" -#~ msgid "Themes" -#~ msgstr "Themen" +#~ msgid "OAuth will be used automatically for Twitter feeds." +#~ msgstr "OAuth wird automatisch für Twitter Feeds verwendet" -#~ msgid "Change theme" -#~ msgstr "Thema wechseln" +#~ msgid "match on" +#~ msgstr "suchen in:" -#, fuzzy -#~ msgid "Hide read items" -#~ msgstr "Gelesene ein-/ausblenden" +#~ msgid "Title or content" +#~ msgstr "Titel oder Inhalt" -#, fuzzy -#~ msgid "Remove selected feeds from archive?" -#~ msgstr "Die gewählten Artikel vom Label entfernen?" +#~ msgid "Your request could not be completed." +#~ msgstr "Ihre Anfrage konnte nicht bearbeitet werden." -#~ msgid "Search results" -#~ msgstr "Suchergebnisse" +#~ msgid "Feed update has been scheduled." +#~ msgstr "Feed-Aktualisierung wurde eingeplant." -#~ msgid "Searched for" -#~ msgstr "Gesucht nach" +#~ msgid "Category update has been scheduled." +#~ msgstr "Kategorieaktualisierung wurde eingeplant." -#~ msgid "More feeds..." -#~ msgstr "Weitere Feeds..." +#~ msgid "Can't update this kind of feed." +#~ msgstr "Sie können diese Art von Feed nicht aktualisieren." -#~ msgid "Toggle Feedlist" -#~ msgstr "Feedliste umschalten" +#~ msgid "Original article" +#~ msgstr "Originalartikel" -#~ msgid "Search:" -#~ msgstr "Suche:" +#~ msgid "Update feed" +#~ msgstr "Alle Feeds aktualisieren" -#~ msgid "Order:" -#~ msgstr "Sortierung:" +#~ msgid "With subcategories" +#~ msgstr "Mit Unterkategorien" -#~ msgid "browse more" -#~ msgstr "Weitere durchsuchen" +#~ msgid "Twitter OAuth" +#~ msgstr "Twitter OAuth" -#~ msgid "Feed browser is administratively disabled." -#~ msgstr "Der Feed-Browser wurde administrativ deaktiviert." +#~ msgid "
  • Adding category %s.
  • " +#~ msgstr "
  • Füge Kategorie %s hinzu.
  • " -#~ msgid "Top" -#~ msgstr "Die Ersten" +#~ msgid "Duplicate filter %s" +#~ msgstr "Doppelter Filter %s" -#~ msgid "Show" -#~ msgstr "Anzeigen" +#~ msgid "OK" +#~ msgstr "OK" -#~ msgid "Hide from \"Other Feeds\"" -#~ msgstr "Verstecken von \"Andere Feeds\"" +#~ msgid "Register with Twitter" +#~ msgstr "Mit Twitter verbinden" -#~ msgid "Unable to delete non empty feed categories." -#~ msgstr "Kann nicht leere Feedkategorien nicht löschen." +#~ msgid "Could not connect to Twitter. Refresh the page or try again later." +#~ msgstr "Konnte nicht zu Twitter verbinden. Aktualisieren Sie die Seite oder versuchen es später erneut." -#~ msgid "(Hidden)" -#~ msgstr "(Versteckt)" +#~ msgid "Congratulations! You have successfully registered with Twitter." +#~ msgstr "Glückwunsch! Sie haben sich erfolgreich mit Twitter verbunden." -#~ msgid "Recategorize" -#~ msgstr "Neu kategorisieren" +#~ msgid "before" +#~ msgstr "vor" -#~ msgid "Other:" -#~ msgstr "Andere:" +#~ msgid "after" +#~ msgstr "hinter" -#~ msgid "Generate another link" -#~ msgstr "Einen neuen Link generieren" +#~ msgid "Check it" +#~ msgstr "Überprüfen" -#~ msgid "View feeds" -#~ msgstr "Feeds anzeigen" +#~ msgid "Apply to category" +#~ msgstr "Auf Kategorie anwenden" -#~ msgid "View tags" -#~ msgstr "Tags Anzeigen" +#~ msgid "Category $%s already exists in the database." +#~ msgstr "Kategorie $%s existiert bereits in der Datenbank." -#~ msgid "Back" -#~ msgstr "Zurück" +#~ msgid "No feed categories defined." +#~ msgstr "Keine Feedkategorien definiert." -#~ msgid "View:" -#~ msgstr "Ansicht:" +#~ msgid "Hint: you can drag feeds and categories around." +#~ msgstr "Hinweis: Sie können Feeds und Kategorien mit der Maus herumziehen." -#~ msgid "Refresh" -#~ msgstr "Auffrischen" +#~ msgid "Subscribing using bookmarklet" +#~ msgstr "Mit Bookmarklet abonnieren" -#~ msgid "Page" -#~ msgstr "Seite" +#~ msgid "Twitter" +#~ msgstr "Twitter" -#, fuzzy -#~ msgid "Back to feedlist" -#~ msgstr "Zum Bearbeiten klicken" +#~ msgid "Before you can update your Twitter feeds, you must register this instance of Tiny Tiny RSS with Twitter.com." +#~ msgstr "Bevor Sie Ihre Twitter-Feeds aktualisieren können, müssen Sie diese Instanz von Tiny Tiny RSS bei Twitter registrieren." -#~ msgid "Tags:" -#~ msgstr "Tags:" +#~ msgid "You have been successfully registered with Twitter.com and should be able to access your Twitter feeds." +#~ msgstr "Sie haben diese Instanz erfolgreich mit Twitter verbunden und sollten nun auf Ihre Twitter-Feeds zugreifen können." -#, fuzzy -#~ msgid "Mark as unread" -#~ msgstr "Als gelesen markieren" +#~ msgid "Register with Twitter.com" +#~ msgstr "Mit Twitter registrieren" -#~ msgid "Where:" -#~ msgstr "Wo:" +#~ msgid "Created filter %s" +#~ msgstr "Filter %s erstellt" -#~ msgid "Match on:" -#~ msgstr "Suchen in:" +#~ msgid "Attachment:" +#~ msgstr "Anhang:" -#~ msgid "Internal error: Function not implemented" -#~ msgstr "Interner Fehler: Funktion nicht implementiert" +#~ msgid "Subscribing to feed..." +#~ msgstr "Abonniere Feed..." -#, fuzzy -#~ msgid "Click to view" -#~ msgstr "Zum Bearbeiten klicken" +#~ msgid "Filter Test Results" +#~ msgstr "Filtertestergebnis" -#~ msgid "  Keyboard shortcuts" -#~ msgstr "  Tastaturbefehle" +#~ msgid "When \"Mark as read\" button is clicked in toolbar, automatically open next feed with unread articles." +#~ msgstr "Beim Klick auf \"Als gelesen markieren\" in der Toolbar, automatisch nächsten Feed mit ungelesenen Artikeln öffnen." diff --git a/locale/el_GR/LC_MESSAGES/messages.mo b/locale/el_GR/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000..2c1e9f2792 Binary files /dev/null and b/locale/el_GR/LC_MESSAGES/messages.mo differ diff --git a/locale/el_GR/LC_MESSAGES/messages.po b/locale/el_GR/LC_MESSAGES/messages.po new file mode 100644 index 0000000000..ccbdbb46c4 --- /dev/null +++ b/locale/el_GR/LC_MESSAGES/messages.po @@ -0,0 +1,3737 @@ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"Last-Translator: Brendan \n" +"Language-Team: OpenSRS brendan@tucows.com>\n" +"Language: es_LA\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Creation-Date: 2014-06-02 12:21+0400\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: unknown\n" + +#: backend.php:73 +msgid "Use default" +msgstr "ΧÏήση ΠÏοεπιλογών" + +#: backend.php:74 +msgid "Never purge" +msgstr "Îα μην γίνεται ποτέ εκκαθάÏιση" + +#: backend.php:75 +msgid "1 week old" +msgstr "1 εβδομάδας" + +#: backend.php:76 +msgid "2 weeks old" +msgstr "2 εβδομάδων" + +#: backend.php:77 +msgid "1 month old" +msgstr "1 μήνα" + +#: backend.php:78 +msgid "2 months old" +msgstr "2 μηνών" + +#: backend.php:79 +msgid "3 months old" +msgstr "3 μηνών" + +#: backend.php:82 +msgid "Default interval" +msgstr "ΠÏοκαθοÏισμένο διάστημα" + +#: backend.php:83 +#: backend.php:93 +msgid "Disable updates" +msgstr "ΑπενεÏγοποίηση ενημεÏώσεων" + +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" +msgstr "Κάθε 15 λεπτά" + +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" +msgstr "Κάθε 30 λεπτά" + +#: backend.php:86 +#: backend.php:96 +msgid "Hourly" +msgstr "ΩÏιαία" + +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" +msgstr "Κάθε 4 ÏŽÏες" + +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" +msgstr "Κάθε 12 ÏŽÏες" + +#: backend.php:89 +#: backend.php:99 +msgid "Daily" +msgstr "ΚαθημεÏινά" + +#: backend.php:90 +#: backend.php:100 +msgid "Weekly" +msgstr "Εβδομαδιαία" + +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 +msgid "User" +msgstr "ΧÏήστης" + +#: backend.php:104 +msgid "Power User" +msgstr "Δυνατός ΧÏήστης" + +#: backend.php:105 +msgid "Administrator" +msgstr "ΔιαχειÏιστής" + +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "" + +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "" + +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "Απέτυχε ο έλεγχος υγιεινής πίσω άκÏου." + +#: errors.php:17 +msgid "Frontend sanity check failed." +msgstr "Απέτυχε ο έλεγχος υγιεινής μπÏÎ¿ÏƒÏ„Î¹Î½Î¿Ï Î¬ÎºÏου." + +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "" + +#: errors.php:21 +msgid "Request not authorized." +msgstr "Το αίτημα δεν είναι εξουσιοδοτημένο." + +#: errors.php:23 +msgid "No operation to perform." +msgstr "Δεν υπάÏχει λειτουÏγία Ï€Ïος εκτέλεση." + +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "" + +#: errors.php:27 +msgid "Denied. Your access level is insufficient to access this page." +msgstr "" + +#: errors.php:29 +msgid "Configuration check failed" +msgstr "Ο έλεγχος διαμόÏφωσης απέτυχε" + +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "" + +#: errors.php:35 +msgid "SQL escaping test failed, check your database and PHP configuration" +msgstr "" + +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "Η Ïοή δεν βÏέθηκε." + +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "Ο χÏήστης δεν βÏέθηκε." + +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "ΦόÏτωση σε εξέλιξη, παÏακαλώ πεÏιμένετε..." + +#: index.php:167 +msgid "Collapse feedlist" +msgstr "ΣυÏÏίκνωση λίστας Ïοών" + +#: index.php:170 +msgid "Show articles" +msgstr "Εμφάνιση άÏθÏων" + +#: index.php:173 +msgid "Adaptive" +msgstr "ΠÏοσαÏμόσιμο" + +#: index.php:174 +msgid "All Articles" +msgstr "Όλα τα ΆÏθÏα" + +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "Με αστέÏι" + +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "ΔημοσιεÏτηκαν" + +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 +msgid "Unread" +msgstr "Μη αναγνωσμένα" + +#: index.php:178 +msgid "With Note" +msgstr "Με Σημείωση" + +#: index.php:179 +msgid "Ignore Scoring" +msgstr "ΠαÏάβλεψη Βαθμολογίας" + +#: index.php:182 +msgid "Sort articles" +msgstr "Ταξινόμηση άÏθÏων" + +#: index.php:185 +msgid "Default" +msgstr "ΠÏοκαθοÏισμένο" + +#: index.php:186 +msgid "Newest first" +msgstr "ΠÏώτα το ÎεώτεÏο" + +#: index.php:187 +msgid "Oldest first" +msgstr "ΠÏώτα το ΠαλαιότεÏο" + +#: index.php:188 +msgid "Title" +msgstr "Τίτλος" + +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 +msgid "Mark as read" +msgstr "Σήμανση ως αναγνωσμένο" + +#: index.php:195 +msgid "Older than one day" +msgstr "ΠαλαιότεÏο της μίας ημέÏας" + +#: index.php:198 +msgid "Older than one week" +msgstr "ΠαλαιότεÏο της μίας εβδομάδας" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "ΠαλαιότεÏο δÏο εβδομάδων" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "ΠÏόβλημα επικοινωνίας με τον εξυπηÏετητή." + +#: index.php:223 +msgid "Actions..." +msgstr "ΕνέÏγειες..." + +#: index.php:225 +msgid "Preferences..." +msgstr "ΠÏοτιμήσεις...." + +#: index.php:226 +msgid "Search..." +msgstr "Αναζήτηση..." + +#: index.php:227 +msgid "Feed actions:" +msgstr "ΕνέÏγειες Ïοών:" + +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "ΕγγÏαφή για Ïοή..." + +#: index.php:229 +msgid "Edit this feed..." +msgstr "ΕπεξεÏγασία αυτής της Ïοής..." + +#: index.php:230 +msgid "Rescore feed" +msgstr "ΕπανασÏνθεση Ïοών" + +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "ΚατάÏγηση εγγÏαφής" + +#: index.php:232 +msgid "All feeds:" +msgstr "Όλες οι Ïοές:" + +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Επανεμφάνιση/ΑπόκÏυψη Ïοών ανάγνωσης" + +#: index.php:235 +msgid "Other actions:" +msgstr "Άλλες ενέÏγειες:" + +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "Εναλλαγή λειτουÏγίας ευÏείας οθόνης" + +#: index.php:237 +msgid "Create label..." +msgstr "ΔημιουÏγία ετικέτας..." + +#: index.php:238 +msgid "Create filter..." +msgstr "ΔημιουÏγία φίλτÏου..." + +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "Βοήθεια συντομεÏσεων πληκτÏολογίου" + +#: index.php:248 +msgid "Logout" +msgstr "ΑποσÏνδεση" + +#: index.php:254 +msgid "Updates are available from Git." +msgstr "" + +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "ΠÏοτιμήσεις" + +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "ΣυντομεÏσεις πληκτÏολογίου" + +#: prefs.php:112 +msgid "Exit preferences" +msgstr "ΠÏοτιμήσεις εξόδου" + +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Ροές" + +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "ΦίλτÏα" + +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Ετικέτες" + +#: prefs.php:133 +msgid "Users" +msgstr "ΧÏήστες" + +#: prefs.php:136 +msgid "System" +msgstr "ΣÏστημα" + +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "ΔημιουÏγία νέου λογαÏιασμοÏ" + +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "" + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +#, fuzzy +msgid "Return to Tiny Tiny RSS" +msgstr "ΕνημέÏωση του Tiny Tiny RSS" + +#: register.php:218 +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 "" + +#: register.php:224 +msgid "Desired login:" +msgstr "Επιθυμητή σÏνδεση:" + +#: register.php:227 +msgid "Check availability" +msgstr "Έλεγχος διαθεσιμότητας" + +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "Email:" + +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "" + +#: register.php:235 +msgid "Submit registration" +msgstr "Υποβολή εγγÏαφής" + +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "" + +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "" + +#: register.php:287 +msgid "Registration failed." +msgstr "Η εγγÏαφή απέτυχε." + +#: register.php:334 +msgid "Account created successfully." +msgstr "ΔημιουÏγήθηκε λογαÏιασμός με επιτυχία." + +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "" + +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "" + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "ΧωÏίς κατηγοÏία" + +#: include/feedbrowser.php:84 +#, fuzzy, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "ΑÏχειοθετημένα άÏθÏα" +msgstr[1] "ΑÏχειοθετημένα άÏθÏα" + +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "Δεν βÏέθηκαν Ïοές." + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "Πλοήγηση" + +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "Άνοιγμα επόμενης Ïοής" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "Άνοιγμα Ï€ÏοηγοÏμενης Ïοής" + +#: include/functions2.php:55 +msgid "Open next article" +msgstr "Άνοιγμα επόμενου άÏθÏου" + +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "Άνοιγμα Ï€ÏοηγοÏμενου άÏθÏου" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Εμφάνιση διαλόγου αναζήτησης" + +#: include/functions2.php:62 +msgid "Article" +msgstr "ΆÏθÏο" + +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "Εναλλαγή με αστέÏια" + +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "Εναλλαγή δημοσιευμένη" + +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "Εναλλαγή μη αναγνωσμένο" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "ΕπεξεÏγασία ετικετών" + +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "ΠαÏάβλεψη επιλεγμένων" + +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "ΠαÏάβλεψη αναγνωσμένων" + +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "Άνοιγμα σε νέο παÏάθυÏο" + +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "Σήμανση παÏακάτω ως αναγνωσμένα" + +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "Σήμανση παÏαπάνω ως αναγνωσμένα" + +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "ΚÏλιση Ï€Ïος τα κάτω" + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "ΚÏλιση Ï€Ïος τα επάνω" + +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "Επιλογή άÏθÏου κάτω από τον κέÏσοÏα" + +#: include/functions2.php:75 +msgid "Email article" +msgstr "Αποστολή άÏθÏου με e-mail" + +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "Κλείσιμο/σÏμπτηξη άÏθÏου" + +#: include/functions2.php:77 +#, fuzzy +msgid "Toggle article expansion (combined mode)" +msgstr "Εναλλαγή συνδυασμένης λειτουÏγίας" + +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "Εναλλαγή ενσωμάτωσης Ï€ÏωτοτÏπου" + +#: include/functions2.php:80 +msgid "Article selection" +msgstr "Επιλογή άÏθÏου" + +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "Επιλογή όλων των άÏθÏων" + +#: include/functions2.php:82 +msgid "Select unread" +msgstr "Επιλογή μη αναγνωσμένων" + +#: include/functions2.php:83 +msgid "Select starred" +msgstr "Επιλογή με αστέÏια" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "Επιλογή δημοσιευμένων" + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "ΑναστÏοφή επιλογής" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "Αποεπιλογή όλων" + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Ροή" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "Ανανέωση Ï„Ïέχουσας Ïοής" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "Επανεμφάνιση/ΑπόκÏυψη Ïοών ανάγνωσης" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "ΕγγÏαφή για Ïοή" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "ΕπεξεÏγασία Ïοής" + +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "ΑναστÏοφή κεφαλίδων" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "Εκσφαλμάτωση ενημέÏωσης Ïοής" + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +#, fuzzy +msgid "Mark all feeds as read" +msgstr "Σήμανση Ïοής ως αναγνωσμένη" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "Ανάπτυξη/σÏμπτηξη Ï„Ïέχουσας κατηγοÏίας" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "Εναλλαγή συνδυασμένης λειτουÏγίας" + +#: include/functions2.php:98 +#, fuzzy +msgid "Toggle auto expand in combined mode" +msgstr "Εναλλαγή συνδυασμένης λειτουÏγίας" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "Μετάβαση σε" + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "Όλα τα άÏθÏα" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "ΦÏέσκο" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Τοποθέτηση ετικέτας σε νέφος" + +#: include/functions2.php:106 +msgid "Other" +msgstr "Άλλο" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "ΔημιουÏγία ετικέτας" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "ΔημιουÏγία φίλτÏου" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "Ανάπτυξη/σÏμπτυξη πλευÏικής μπάÏας" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "Εμφάνιση πλαισίου βοήθειας" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Αποτελέσματα αναζήτησης: %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +#, fuzzy +msgid "comment" +msgid_plural "comments" +msgstr[0] "σχόλια" +msgstr[1] "σχόλια" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +msgid "comments" +msgstr "σχόλια" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "χωÏίς ετικέτες" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "ΑÏχικά από:" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "URL Ροής" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "Κλείστε αυτό το παÏάθυÏο" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(επεξεÏγασία σημείωσης)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "άγνωστος Ï„Ïπος" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "Συνημμένα" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "Ειδικό" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Όλες οι Ïοές" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "ΆÏθÏα με αστέÏια" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Δημοσιευμένα άÏθÏα" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "ΚαινοÏÏγια άÏθÏα" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "ΑÏχειοθετημένα άÏθÏα" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "ΠÏόσφατα αναγνωσμένα" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "Είσοδος:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "Κωδικός ΠÏόσβασης:" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "Ξέχασα τον κωδικό Ï€Ïόσβασής μου" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "ΠÏοφίλ:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "ΠÏοκαθοÏισμένο Ï€Ïοφίλ" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "ΧÏήση μικÏότεÏης κίνησης" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "" + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "Απομνημόνευση" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "Συνδεθείτε" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "" + +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "" + +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "" + +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "" + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "ΣυντομεÏσεις ΠληκτÏολογίου" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "Shift" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Δεν βÏέθηκε το θέμα βοήθειας." + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +#, fuzzy +msgid "Share with Tiny Tiny RSS" +msgstr "ΕνημέÏωση του Tiny Tiny RSS" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Τίτλος:" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "ΠεÏιεχόμενο:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "Ετικέτες:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "" + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "ΔιαμοιÏασμός" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "ΑκÏÏωση" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "Δεν έγινε σÏνδεση" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Λανθασμένο όνομα χÏήστη ή κωδικός Ï€Ïόσβασης" + +#: classes/handler/public.php:666 +#, fuzzy, php-format +msgid "Already subscribed to %s." +msgstr "ΕγγεγÏαμμένος σε %s" + +#: classes/handler/public.php:669 +#, fuzzy, php-format +msgid "Subscribed to %s." +msgstr "ΕγγεγÏαμμένος σε %s" + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "" + +#: classes/handler/public.php:675 +#, fuzzy, php-format +msgid "No feeds found in %s." +msgstr "Δεν βÏέθηκαν Ïοές." + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "Î’Ïέθηκαν πολλαπλές URLs Ïοής." + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "" + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "ΕγγÏαφή σε επιλεγμένες Ïοές" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "ΕπεξεÏγασία επιλογών εγγÏαφής" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "Ανάκτηση ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης" + +#: classes/handler/public.php:805 +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "" + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "ΕπαναφοÏά ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "" + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "ΕπιστÏοφή" + +#: classes/handler/public.php:878 +#, fuzzy +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] Ειδοποίηση αλλαγής ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "" + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "" + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "ΠÏόγÏαμμα ΕνημέÏωσης Βάσης Δεδομένων" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Εκτέλεση ενημεÏώσεων" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "ΠÏοβολή ως Ïοή RSS" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "ΠÏοβολή ως RSS" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "ΕνημεÏώθηκε τελευταία: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "Όλα" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "ΑναστÏοφή" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Κανένα" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "ΠεÏισσότεÏα..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Εναλλαγή επιλογής:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Επιλογή:" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "ΟÏισμός βαθμολογίας" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "ΑÏχειοθέτηση" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "Κίνηση Ï€Ïος τα πίσω" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "ΔιαγÏαφή" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "ΠÏοώθηση μέσω e-mail" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Ροή:" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "Η Ïοή δεν βÏέθηκε." + +#: classes/feeds.php:268 +msgid "Never" +msgstr "Ποτέ" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "Εισήχθη στις %s" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +msgid "mark feed as read" +msgstr "σήμανση Ïοής ως αναγνωσμένη" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "ΣÏμπτυξη άÏθÏου" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "" + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "" + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "" + +#: classes/feeds.php:778 +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 "" + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "" + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, fuzzy, php-format +msgid "Feeds last updated at %s" +msgstr "ΕνημεÏώθηκε τελευταία: %s" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "Δεν επιλέχθηκε Ïοή." + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "URL Ïοής ή ιστοτόπου" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "Τοποθέτηση σε κατηγοÏία:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "Διαθέσιμες Ïοές" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "Πιστοποίηση" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "ΣÏνδεση" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "Κωδικός ΠÏόσβασης" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Αυτή η Ïοή απαιτεί πιστοποίηση." + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "ΕγγÏαφή" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "ΠεÏισσότεÏες Ïοές" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "Αναζήτηση" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "Δημοφιλείς Ïοές" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "ΑÏχειοθέτηση Ïοής" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "ÏŒÏιο:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "ΑφαίÏεση" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "Αναζήτηση" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +msgid "Search syntax" +msgstr "ΣÏνταξη αναζήτησης" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "Το άÏθÏο δεν βÏέθηκε." + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Αποθήκευση" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "Βοηθητικό OPML" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "Εισαγωγή OPML σε εξέλιξη..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "ΕπιστÏοφή σε Ï€Ïοτιμήσεις" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "ΠÏοσθήκη Ïοής: %s" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "ΑντιγÏαφή Ïοής: %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "ΠÏοσθήκη ετικέτας %s" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "ΑντιγÏαφή ετικέτας: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "ΠÏοσθήκη φίλτÏου σε εξέλιξη..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "ΕπεξεÏγασία κατηγοÏίας: %s" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "" + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "" + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "" + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Σφάλμα κατά τη συντακτική ανάλυση του εγγÏάφου." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "" + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "ΚαταγÏαφή Σφάλματος" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "Ανανέωση" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "Απαλοιφή καταγÏαφής" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Σφάλμα" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "Όνομα αÏχείου" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Μήνυμα" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "ΗμεÏομηνία" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Ο χÏήστης δεν βÏέθηκε." + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "ΕγγεγÏαμμένος" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Τελευταία σÏνδεση" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "ΑÏιθμός εγγεγÏαμμένων Ïοών" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "ΕγγεγÏαμμένες Ïοές" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Επίπεδο Ï€Ïόσβασης: " + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Επιλογές" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "" + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] Ειδοποίηση αλλαγής ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "Επιλογή" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "ΔημιουÏγία χÏήστη" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "ΛεπτομέÏειες" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "ΕπεξεÏγασία" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Επίπεδο ΠÏόσβασης" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "Τελευταία σÏνδεση" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Κάντε κλικ για επεξεÏγασία" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "Δεν οÏίστηκαν χÏήστες." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "Δεν βÏέθηκαν χÏήστες που να αντιστοιχοÏν." + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Έλεγχος για ενεÏγοποίηση πεδίου" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, fuzzy, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "ΕπεξεÏγασία Ïοής" +msgstr[1] "ΕπεξεÏγασία Ïοής" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "Τίτλος Ροής" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "ΕνημέÏωση" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "ΕκκαθάÏιση άÏθÏου:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "" + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "ΑπόκÏυψη από Δημοφιλείς Ïοές" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "ΣυμπεÏιλάβετε σε σÏνοψη e-mail" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Îα εμφανίζονται πάντα συνημμένα εικόνας" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "Μην ενσωματώνετε εικόνες" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Αποθήκευση εικόνων τοπικά" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +#, fuzzy +msgid "Mark updated articles as unread" +msgstr "Σήμανση Ïοής ως αναγνωσμένη" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "Εικονίδιο" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "Αντικατάσταση" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "Επανάληψη εγγÏαφής για Ï€Ïοώθηση ενημεÏώσεων" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "" + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Όλα έτοιμα." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "Ροές με σφάλματα" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "ΑδÏανείς Ïοές" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "ΕπεξεÏγασία επιλεγμένων Ïοών" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "ΕπαναφοÏά σειÏάς ταξινόμησης" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "ΕγγÏαφή παÏτίδας" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "ΚατηγοÏίες" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "ΠÏοσθήκη κατηγοÏίας" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "ΑφαίÏεση επιλεγμένων" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "ΠεÏισσότεÏες ενέÏγειες..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "ΧειÏοκίνητη εκκαθάÏιση" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "Απαλοιφή δεδομένων Ïοής" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Αναβαθμολόγηση άÏθÏων" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "" + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "" + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "Εισαγωγή του OPML μου" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "Όνομα αÏχείου:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "ΣυμπεÏιλάβετε Ïυθμίσεις" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "Εξαγωγή OPML" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "" + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "" + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "Κοινό OPML URL" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "Εμφάνιση δημοσιευμένου URL του OPML" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Ένταξη Firefox" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "" + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "" + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "" + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "Εμφάνιση URL" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "Απαλοιφή όλων των παÏαχθέντων URLs" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "Κάντε κλικ για επεξεÏγασία Ïοής" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "ΚατάÏγηση εγγÏαφής από επιλεγμένες Ïοές" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "Οι Ïοές απαιτοÏν πιστοποίηση." + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "ΆÏθÏα που ταιÏιάζουν σε αυτό το φίλτÏο:" + +#: classes/pref/filters.php:185 +#, fuzzy +msgid "No recent articles matching this filter have been found." +msgstr "ΆÏθÏα που ταιÏιάζουν σε αυτό το φίλτÏο:" + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(αναστÏοφή)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Λεζάντα" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "Αντιστοίχιση" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "ΠÏοσθήκη" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "ΕφαÏμογή ενεÏγειών" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "ΕνεÏγοποιημένο" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "Αντιστοίχιση με οποιονδήποτε κανόνα" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "ΑναστÏοφή αντιστοίχισης" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "Δοκιμή" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "Συνδυασμός" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "ΔημιουÏγία" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "ΑναστÏοφή τακτικής αντιστοίχισης έκφÏασης" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "επί τόπου" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "σε" + +#: classes/pref/filters.php:947 +msgid "Wiki: Filters" +msgstr "Wiki: ΦίλτÏα" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "Αποθήκευση κανόνα" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "ΠÏοσθήκη κανόνα" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "ΠÏαγματοποίηση ΕνέÏγειας" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "με παÏαμέτÏους:" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "Αποθήκευση ενέÏγειας" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "ΠÏοσθήκη ενέÏγειας" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[ΧωÏίς λεζάντα]" + +#: classes/pref/filters.php:1044 +#, fuzzy, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "ΠÏοσθήκη κανόνα" +msgstr[1] "ΠÏοσθήκη κανόνα" + +#: classes/pref/filters.php:1059 +#, fuzzy, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "ΠÏοσθήκη ενέÏγειας" +msgstr[1] "ΠÏοσθήκη ενέÏγειας" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "ΧÏώματα" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "ΠÏοσκήνιο:" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "ΠαÏασκήνιο:" + +#: classes/pref/labels.php:232 +#, fuzzy, php-format +msgid "Created label %s" +msgstr "ΔημιουÏγία ετικέτας" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Απαλοιφή χÏωμάτων" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Γενικά" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Διεπαφή" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Για Ï€ÏοχωÏημένους" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "ΣÏνοψη" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "Îα επιτÏέπονται τα διπλότυπα άÏθÏα" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Ετικέτες στη μαÏÏη λίστα" + +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "" + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "" + +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "" + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "Εμφάνιση συνδυασμένης Ïοής" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "" + +#: classes/pref/prefs.php:30 +#, fuzzy +msgid "Confirm marking feed as read" +msgstr "σήμανση Ïοής ως αναγνωσμένη" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "" + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "ΠÏοκαθοÏισμένο διάστημα ενημέÏωσης Ïοής" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "" + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Mark articles in e-mail digest as read" +msgstr "ΣυμπεÏιλάβετε σε σÏνοψη e-mail" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "ΕνεÏγοποίηση σÏνοψης e-mail" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "ΧÏησιμοποιεί τη UTC ζώνη ÏŽÏας" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "ΕνεÏγοποίηση Ï€Ïόσβασης API" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "ΕνεÏγοποίηση κατηγοÏιών Ïοών" + +#: classes/pref/prefs.php:38 +#, fuzzy +msgid "Sort feeds by unread articles count" +msgstr "ΕκκαθάÏιση μη αναγνωσμένων άÏθÏων" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "" + +#: classes/pref/prefs.php:40 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "ΕκκαθάÏιση μη αναγνωσμένων άÏθÏων" + +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "ΜακÏά μοÏφή ημεÏομηνίας" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "" + +#: classes/pref/prefs.php:43 +#, fuzzy +msgid "On catchup show next feed" +msgstr "Άνοιγμα επόμενης Ïοής" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "" + +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "ΕκκαθάÏιση μη αναγνωσμένων άÏθÏων" + +#: classes/pref/prefs.php:46 +#, fuzzy +msgid "Reverse headline order (oldest first)" +msgstr "ΑναστÏοφή κεφαλίδων" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "ΣÏντομη μοÏφή ημεÏομηνίας" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "" + +#: classes/pref/prefs.php:51 +#, fuzzy +msgid "Do not embed images in articles" +msgstr "Μην ενσωματώνετε εικόνες" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "" + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "" + +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "ΔιαμόÏφωση φÏλλου Ïφους" + +#: classes/pref/prefs.php:53 +#, fuzzy +msgid "Customize CSS stylesheet to your liking" +msgstr "ΔιαμόÏφωση φÏλλου Ïφους" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "Ζώνη ÏŽÏας" + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" + +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "Γλώσσα" + +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "Θέμα" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "Η διαμόÏφωση αποθηκεÏτηκε." + +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "" + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "" + +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "ΠÏοσωπικά δεδομένα / Πιστοποίηση" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "ΠÏοσωπικά δεδομένα" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "ΠλήÏες όνομα" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "E-mail" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Επίπεδο Ï€Ïόσβασης" + +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Αποθήκευση δεδομένων" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "" + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "" + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Παλιός Κωδικός ΠÏόσβασης" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Îέος Κωδικός ΠÏόσβασης" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Επιβεβαίωση ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "Αλλαγή ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "Κωδικοί Ï€Ïόσβασης / Επαληθευτής μίας φοÏάς" + +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "" + +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "Εισάγετε τον κωδικό Ï€Ïόσβασής σας" + +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "ΑπενεÏγοποίηση του OTP" + +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "" + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "" + +#: classes/pref/prefs.php:403 +#, fuzzy +msgid "Enter the generated one time password" +msgstr "Λανθασμένος κωδικός Ï€Ïόσβασης μίας φοÏάς" + +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "ΕνεÏγοποίηση του OTP" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "" + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "" + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "ΔιαμόÏφωση" + +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "ΕγγÏαφή" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "Απαλοιφή" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Αποθήκευση διαμόÏφωσης" + +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "ΠÏοτιμήσεις αποθήκευσης και εξόδου" + +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "ΔιαχείÏιση Ï€Ïοφίλ" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "ΕπαναφοÏά σε Ï€Ïοεπιλογή" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "ΠÏόσθετα" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "" + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "" + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "ΠÏόσθετα συστήματος" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "ΠÏόσθετο" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "ΠεÏιγÏαφή" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "Έκδοση" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "Συντάκτης" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "πεÏισσότεÏες πληÏοφοÏίες" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "Απαλοιφή δεδομένων" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "ΠÏόσθετα χÏήστη" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "ΕνεÏγοποίηση επιλεγμένων Ï€Ïοσθέτων" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "Λανθασμένος κωδικός Ï€Ïόσβασης μίας φοÏάς" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "Λανθασμένος κωδικός Ï€Ïόσβασης" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "" + +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "ΔημιουÏγία Ï€Ïοφίλ" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(ενεÏγό)" + +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "ΑφαίÏεση επιλεγμένων Ï€Ïοφίλ" + +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "ΕνεÏγοποίηση Ï€Ïοφίλ" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "" + +#: classes/dlg.php:48 +#, fuzzy +msgid "Your Public OPML URL is:" +msgstr "Κοινό OPML URL" + +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "ΠαÏαγωγή νέου 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 "" + +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "Τελευταία ενημέÏωση:" + +#: 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 "" + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" + +#: plugins/af_psql_trgm/init.php:112 +#, fuzzy +msgid "Show related articles" +msgstr "ΚοινόχÏηστα άÏθÏα" + +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +#, fuzzy +msgid "Mark similar articles as read" +msgstr "Σήμανση παÏαπάνω ως αναγνωσμένα" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +#, fuzzy +msgid "Global settings" +msgstr "ΣυμπεÏιλάβετε Ïυθμίσεις" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "ΕνεÏγοποίηση κατηγοÏιών Ïοών" + +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" + +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" + +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "" + +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "" + +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "ΕπεξεÏγασία σημείωσης άÏθÏου" + +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "Δεν φοÏτώθηκε αÏχείο." + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "" + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "" + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "" + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "Εισαγωγή των Στοιχείων μου με αστέÏια" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[ΠÏοωθήθηκε]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "Πολλαπλά άÏθÏα" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "" + +#: plugins/mailto/init.php:75 +#, fuzzy +msgid "Forward selected article(s) by email." +msgstr "ΠÏοώθηση άÏθÏου μέσω e-mail" + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "" + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "Κλείστε αυτό το πλαίσιο διαλόγου" + +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "Εισαγωγή και εξαγωγή" + +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "" + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "Εξαγωγή των δεδομένων μου" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Εισαγωγή" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "" + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "" + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "ΟλοκληÏώθηκε: " + +#: plugins/import_export/init.php:388 +#, fuzzy, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "ΕπεξεÏγασία σημείωσης άÏθÏου" +msgstr[1] "ΕπεξεÏγασία σημείωσης άÏθÏου" + +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "" +msgstr[1] "" + +#: plugins/import_export/init.php:390 +#, fuzzy, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "Δεν επιλέχθηκε Ïοή." +msgstr[1] "Δεν επιλέχθηκε Ïοή." + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "" + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "ΠÏοετοιμασία δεδομένων" + +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "ΠÏόσθετο NSFW" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "Η διαμόÏφωση αποθηκεÏτηκε." + +#: plugins/auth_internal/init.php:65 +#, fuzzy +msgid "Please enter your one time password:" +msgstr "Λανθασμένος κωδικός Ï€Ïόσβασης μίας φοÏάς" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "Ο κωδικός Ï€Ïόσβασης έχει αλλάξει." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "Ο παλιός κωδικός Ï€Ïόσβασης είναι λανθασμένος." + +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "Κλείσιμο άÏθÏου" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "" + +#: plugins/mail/init.php:34 +#, fuzzy +msgid "Mail plugin" +msgstr "ΠÏόσθετα χÏήστη" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "" + +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "ΠÏος:" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "Θέμα:" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "Αποστολή e-mail" + +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "Συνδεδεμένο" + +#: 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:404 +msgid "Instance URL" +msgstr "Instance URL" + +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "Κλειδί Ï€Ïόσβασης:" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "Κλειδί Ï€Ïόσβασης" + +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "" + +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "ΠαÏαγωγή νέου κλειδιοÏ" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "ΣÏνδεσμος 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 "" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "Τελευταία σÏνδεση" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "Κατάσταση" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "Αποθηκευμένες Ïοές" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "ΔημιουÏγία συνδέσμου" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "Η διαμόÏφωση αποθηκεÏτηκε." + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "Έλεγχος διαθεσιμότητας" + +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "ΕπεξεÏγασία σημείωσης άÏθÏου" + +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "ΚοινόχÏηστα άÏθÏα" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +#, fuzzy +msgid "Statistics" +msgstr "Κατάσταση" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "ΆÏθÏα με αστέÏια" + +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "Απαλοιφή δεδομένων" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, php-format +msgid "Currently stored as: %s" +msgstr "" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "Σελιδοδείκτες" + +#: 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 "" + +#: plugins/bookmarklets/init.php:26 +#, fuzzy, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "ΕγγεγÏαμμένος σε %s" + +#: plugins/bookmarklets/init.php:31 +#, fuzzy +msgid "Subscribe in Tiny Tiny RSS" +msgstr "ΕνημέÏωση του Tiny Tiny RSS" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "" + +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "ΚατάÏγηση κοινής χÏήσης όλων των άÏθÏων" + +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "ΔιαμοιÏασμός κατά URL" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "" + +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "ΚατάÏγηση διαμοιÏÎ±ÏƒÎ¼Î¿Ï Î¬ÏθÏου" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "" + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "" + +#: js/functions.js:93 +msgid "Close" +msgstr "" + +#: js/functions.js:104 +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "" + +#: js/functions.js:224 +msgid "Click to close" +msgstr "Κάντε κλικ για κλείσιμο" + +#: js/functions.js:1051 +msgid "Edit action" +msgstr "ΕπεξεÏγασία ενέÏγειας" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "ΔημιουÏγία ΦίλτÏου" + +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "" + +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "ΕπαναφοÏά εγγÏαφής." + +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "ΚατάÏγηση εγγÏαφής από %s;" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "ΑφαίÏεση Ïοής σε εξέλιξη..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "Εισάγετε τίτλο κατηγοÏίας:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "ΑπόπειÏα αλλαγής διεÏθυνσης σε εξέλιξη..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "Δεν επιλέχθηκαν Ïοές." + +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "" + +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "Ροές με σφάλματα ενημέÏωσης" + +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "ΑφαίÏεση επιλεγμένων Ïοών;" + +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "ΑφαίÏεση επιλεγμένων Ïοών σε εξέλιξη..." + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "ΕπεξεÏγασία κατηγοÏίας" + +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "ΑφαίÏεση κατηγοÏίας" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "ΑναστÏοφή" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "Εισάγετε σÏνδεση:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "" + +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "ΠÏοσθήκη χÏήστη σε εξέλιξη..." + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "ΕπεξεÏγαστής ΧÏήστη" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "Αποθήκευση δεδομένων σε εξέλιξη..." + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "ΕπεξεÏγασία ΦίλτÏου" + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "ΑφαίÏεση φίλτÏου;" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "ΑφαίÏεση φίλτÏου σε εξέλιξη..." + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "ΑφαίÏεση επιλεγμένων ετικετών;" + +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "ΑφαίÏεση επιλεγμένων ετικετών σε εξέλιξη..." + +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "Δεν επιλέχθηκαν ετικέτες." + +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "" + +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "ΑφαίÏεση επιλεγμένων χÏηστών σε εξέλιξη..." + +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "Δεν επιλέχθηκαν χÏήστες." + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "ΑφαίÏεση επιλεγμένων φίλτÏων;" + +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "ΑφαίÏεση επιλεγμένων φίλτÏων σε εξέλιξη..." + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "Δεν επιλέχθηκαν φίλτÏα." + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "ΚατάÏγηση εγγÏαφής από επιλεγμένες Ïοές;" + +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "ΚατάÏγηση εγγÏαφής από επιλεγμένες Ïοές σε εξέλιξη..." + +#: js/prefs.js:429 +#, fuzzy +msgid "Please select only one feed." +msgstr "Απαλοιφή επιλεγμένης Ïοής σε εξέλιξη..." + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "" + +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "Απαλοιφή επιλεγμένης Ïοής σε εξέλιξη..." + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "" + +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "ΕκκαθάÏιση επιλεγμένης Ïοής σε εξέλιξη..." + +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "" + +#: js/prefs.js:517 +#, fuzzy +msgid "Reset password of selected user?" +msgstr "ΕπαναφοÏά ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης" + +#: js/prefs.js:520 +#, fuzzy +msgid "Resetting password for selected user..." +msgstr "ΑφαίÏεση επιλεγμένων χÏηστών σε εξέλιξη..." + +#: js/prefs.js:565 +msgid "User details" +msgstr "ΛεπτομέÏειες χÏήστη" + +#: js/prefs.js:589 +#, fuzzy +msgid "Please select only one filter." +msgstr "ΑφαίÏεση επιλεγμένων φίλτÏων;" + +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "Συνδυασμός επιλεγμένων φίλτÏων;" + +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "Ένωση φίλτÏων σε εξέλιξη...." + +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "ΕπεξεÏγασία Πολλαπλών Ροών" + +#: js/prefs.js:695 +#, fuzzy +msgid "Save changes to selected feeds?" +msgstr "ΕγγÏαφή σε επιλεγμένες Ïοές" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "Εισαγωγή OPML" + +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "" + +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "Εισαγωγή σε εξέλιξη, παÏακαλώ πεÏιμένετε..." + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "ΕπαναφοÏά σε Ï€Ïοεπιλογές;" + +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "Γίνεται εγγÏαφή σε Ïοές..." + +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "" + +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "" + +#: js/tt-rss.js:127 +#, fuzzy +msgid "Mark all articles as read?" +msgstr "Σήμανση παÏαπάνω ως αναγνωσμένα" + +#: js/tt-rss.js:133 +#, fuzzy +msgid "Marking all feeds as read..." +msgstr "Σήμανση Ïοής ως αναγνωσμένη" + +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "" + +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "" + +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "" + +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "" + +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "" + +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +#, fuzzy +msgid "Please select some feed first." +msgstr "Απαλοιφή επιλεγμένης Ïοής σε εξέλιξη..." + +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "Αναβαθμολόγηση άÏθÏων σε %s;" + +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "Γίνεται αναβαθμολόγηση άÏθÏων..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "Δεν επιλέχθηκαν άÏθÏα." + +#: js/viewfeed.js:1018 +#, fuzzy, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "Αναβαθμολόγηση άÏθÏων σε %s;" +msgstr[1] "Αναβαθμολόγηση άÏθÏων σε %s;" + +#: js/viewfeed.js:1020 +#, fuzzy, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "ΕνεÏγοποίηση επιλεγμένου Ï€Ïοφίλ;" +msgstr[1] "ΕνεÏγοποίηση επιλεγμένου Ï€Ïοφίλ;" + +#: js/viewfeed.js:1062 +#, fuzzy, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "ΑÏχειοθετημένα άÏθÏα" +msgstr[1] "ΑÏχειοθετημένα άÏθÏα" + +#: js/viewfeed.js:1065 +#, fuzzy, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "ΑÏχειοθετημένα άÏθÏα" +msgstr[1] "ΑÏχειοθετημένα άÏθÏα" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "" + +#: js/viewfeed.js:1112 +#, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "" +msgstr[1] "" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "ΕπεξεÏγασία ετικετών άÏθÏου" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "Γίνεται αποθήκευση ετικετών άÏθÏου..." + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +#, fuzzy +msgid "Click to open next unread feed." +msgstr "Κάντε κλικ για επεξεÏγασία Ïοής" + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "Άνοιγμα Ï€Ïωτότυπου άÏθÏου" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Ανάθεση ετικέτας" + +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "ΑφαίÏεση ετικέτας" + +#: js/viewfeed.js:2159 +msgid "Select articles in group" +msgstr "Επιλογή άÏθÏων σε ομάδα" + +#: js/viewfeed.js:2168 +msgid "Mark group as read" +msgstr "Σήμανση ομάδας ως αναγνωσμένη" + +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "Σήμανση Ïοής ως αναγνωσμένη" + +#: js/viewfeed.js:2235 +#, fuzzy +msgid "Please enter new score for selected articles:" +msgstr "Εισάγετε τίτλο κατηγοÏίας:" + +#: js/viewfeed.js:2305 +#, fuzzy +msgid "Please enter new score for this article:" +msgstr "Εισάγετε τίτλο κατηγοÏίας:" + +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "URL άÏθÏου:" + +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "" + +#: plugins/af_psql_trgm/init.js:11 +#, fuzzy +msgid "Related articles" +msgstr "ΚοινόχÏηστα άÏθÏα" + +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "Γίνεται αποθήκευση σημείωσης..." + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Εισαγωγή ΠÏογÏάμματος Ανάγνωσης Google" + +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "" + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "ΠÏοώθηση άÏθÏου μέσω e-mail" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "Εξαγωγή Δεδομένων" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "" +msgstr[1] "" + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Εισαγωγή Δεδομένων" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "" + +#: plugins/shorten_expanded/init.js:37 +msgid "Click to expand article" +msgstr "Κάντε κλικ για επέκταση άÏθÏου" + +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" + +#: plugins/mail/mail.js:38 +msgid "Your message has been sent." +msgstr "" + +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "ΠαÏάδειγμα Συνδέσμου" + +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "ΠαÏάδειγμα ΕπεξεÏγασίας" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "ΑφαίÏεση επιλεγμένων παÏαδειγμάτων;" + +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "Γίνεται αφαίÏεση επιλεγμένων παÏαδειγμάτων..." + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "Δεν επιλέχθηκαν παÏαδείγματα." + +#: plugins/instances/instances.js:156 +#, fuzzy +msgid "Please select only one instance." +msgstr "ΑφαίÏεση επιλεγμένων παÏαδειγμάτων;" + +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "Απαλοιφή δεδομένων Ïοής" + +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "" + +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "Κοινή χÏήση άÏθÏου από URL" + +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "" + +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "Γίνεται απόπειÏα αλλαγής URL..." + +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "" + +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "Γίνεται απόπειÏα κατάÏγησης κοινής χÏήσης..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "" + +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "Απαλοιφή των URL..." + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "Έγινε απαλοιφή των κοινόχÏηστων URL." + +#: js/feedlist.js:416 +#: js/feedlist.js:444 +#, fuzzy +msgid "Mark all articles in %s as read?" +msgstr "Αναβαθμολόγηση άÏθÏων σε %s;" + +#: js/feedlist.js:435 +#, fuzzy +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "Αναβαθμολόγηση άÏθÏων σε %s;" + +#: js/feedlist.js:438 +#, fuzzy +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "Αναβαθμολόγηση άÏθÏων σε %s;" + +#: js/feedlist.js:441 +#, fuzzy +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "Αναβαθμολόγηση άÏθÏων σε %s;" + +#: js/functions.js:615 +msgid "Error explained" +msgstr "Επεξήγηση σφάλματος" + +#: js/functions.js:697 +msgid "Upload complete." +msgstr "ΠλήÏης φόÏτωση." + +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "ΑφαίÏεση αποθηκευμένου εικονιδίου Ïοής;" + +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "ΑφαίÏεση εικονιδίου Ïοής σε εξέλιξη..." + +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "Το εικονίδιο Ïοής αφαιÏέθηκε." + +#: js/functions.js:753 +#, fuzzy +msgid "Please select an image file to upload." +msgstr "ΑφαίÏεση επιλεγμένων φίλτÏων;" + +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "" + +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "ΜεταφόÏτωση σε εξέλιξη, πεÏιμένετε..." + +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "Εισάγετε λεζάντα ετικέτας:" + +#: js/functions.js:777 +#, fuzzy +msgid "Can't create label: missing caption." +msgstr "Εισάγετε λεζάντα ετικέτας:" + +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "ΕγγÏαφή για Ροή" + +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "" + +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "ΕγγεγÏαμμένος σε %s" + +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "" + +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "" + +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "Επέκταση για επιλογή Ïοής" + +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "" + +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "Η επικÏÏωση XML απέτυχε: %s" + +#: js/functions.js:895 +#, fuzzy +msgid "You are already subscribed to this feed." +msgstr "ΕγγεγÏαμμένος σε %s" + +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "ΕπεξεÏγασία κανόνα" + +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "ΕπεξεÏγασία Ροής" + +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "ΠεÏισσότεÏες Ροές" + +#: js/functions.js:1878 +msgid "Help" +msgstr "Βοήθεια" + +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "" + +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "ΑφαίÏεση κατηγοÏίας σε εξέλιξη..." + +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "ΑφαίÏεση επιλεγμένων κατηγοÏιών;" + +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "ΑφαίÏεση επιλεγμένων κατηγοÏιών σε εξέλιξη..." + +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "Δεν επιλέχθηκαν κατηγοÏίες." + +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "Τίτλος κατηγοÏίας:" + +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "ΔημιουÏγία κατηγοÏίας σε εξέλιξη..." + +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "Ροές χωÏίς Ï€Ïόσφατες ενημεÏώσεις" + +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "" + +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "Απαλοιφή Ïοής σε εξέλιξη..." + +#: js/prefs.js:1323 +#, fuzzy +msgid "Rescore articles in selected feeds?" +msgstr "Αναβαθμολόγηση άÏθÏων σε %s;" + +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "Εκ νέου βαθμολόγηση επιλεγμένων Ïοών σε εξέλιξη..." + +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "" + +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "Εκ νέου βαθμολόγηση Ïοών σε εξέλιξη..." + +#: js/prefs.js:1366 +#, fuzzy +msgid "Reset selected labels to default colors?" +msgstr "ΑφαίÏεση επιλεγμένων ετικετών;" + +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "ΠÏοφίλ Ρυθμίσεων" + +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "" + +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "ΑφαίÏεση επιλεγμένων φίλτÏων σε εξέλιξη..." + +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "Δεν επιλέχθηκαν Ï€Ïοφίλ." + +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "ΕνεÏγοποίηση επιλεγμένου Ï€Ïοφίλ;" + +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "" + +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "ΔημιουÏγία Ï€Ïοφίλ σε εξέλιξη..." + +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "" + +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "Έγινε απαλοιφή των URL που παÏήχθησαν." + +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "ΕπεξεÏγαστής Ετικέτας" + +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "" + +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "ΑκÏÏωση αναζήτησης" + +#: js/viewfeed.js:174 +msgid "New articles found, reload feed to continue." +msgstr "" + +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Απαλοιφή αστεÏÎ¹Î¿Ï ÏƒÎµ άÏθÏο" + +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "ΠÏοσθήκη αστεÏÎ¹Î¿Ï ÏƒÎµ άÏθÏο" + +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "ΚατάÏγηση δημοσίευσης άÏθÏου" + +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Δημοσίευση άÏθÏου" + +#: js/viewfeed.js:662 +#, fuzzy +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "Δεν επιλέχθηκε άÏθÏο." +msgstr[1] "Δεν επιλέχθηκε άÏθÏο." + +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "Δεν επιλέχθηκε άÏθÏο." + +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "" + +#: js/viewfeed.js:1452 +#, fuzzy +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "Σήμανση παÏαπάνω ως αναγνωσμένα" +msgstr[1] "Σήμανση παÏαπάνω ως αναγνωσμένα" + +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "Εμφάνιση URL άÏθÏου" + +#~ msgid "Select by tags..." +#~ msgstr "Επιλογή κατά ετικέτες..." + +#~ msgid "Limit search to:" +#~ msgstr "ΠεÏιοÏισμός αναζήτησης σε:" + +#~ msgid "This feed" +#~ msgstr "Αυτή τη Ïοή" + +#, fuzzy +#~ msgid "Old password cannot be blank." +#~ msgstr "Ο παλιός κωδικός Ï€Ïόσβασης είναι λανθασμένος." + +#~ msgid "Match:" +#~ msgstr "Αντιστοίχιση:" + +#~ msgid "Any" +#~ msgstr "Οποιαδήποτε" + +#~ msgid "All tags." +#~ msgstr "Όλες οι ετικέτες." + +#~ msgid "Which Tags?" +#~ msgstr "Ποιες ετικέτες;" + +#~ msgid "Display entries" +#~ msgstr "ΠÏοβολή καταχωÏήσεων" + +#, fuzzy +#~ msgid "Select item(s) by tags" +#~ msgstr "Επιλογή κατά ετικέτες..." + +#~ msgid "Unread First" +#~ msgstr "Μη αναγνωσμένα ΠÏώτα" + +#~ msgid "Unknown option: %s" +#~ msgstr "Άγνωστη επιλογή: %s" + +#, fuzzy +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "Διατίθεται νέα έκδοση!" + +#, fuzzy +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "Διατίθεται νέα έκδοση!" + +#~ msgid "See the release notes" +#~ msgstr "Εμφάνιση των σημειώσεων αποδέσμευσης" + +#~ msgid "Download" +#~ msgstr "Λήψη" + +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "ΕνημέÏωση του Tiny Tiny RSS" + +#~ msgid "Force update" +#~ msgstr "Εξαναγκασμένη ενημέÏωση" + +#~ msgid "Ready to update." +#~ msgstr "Έτοιμο για ενημέÏωση." + +#~ msgid "Start update" +#~ msgstr "ΈναÏξη ενημέÏωσης" + +#~ msgid "New version available!" +#~ msgstr "Διατίθεται νέα έκδοση!" + +#~ msgid "From:" +#~ msgstr "Από:" + +#~ msgid "Select:" +#~ msgstr "Επιλογή:" diff --git a/locale/es_ES/LC_MESSAGES/messages.mo b/locale/es_ES/LC_MESSAGES/messages.mo index efaca45e40..fd9708bed2 100644 Binary files a/locale/es_ES/LC_MESSAGES/messages.mo and b/locale/es_ES/LC_MESSAGES/messages.mo differ diff --git a/locale/es_ES/LC_MESSAGES/messages.po b/locale/es_ES/LC_MESSAGES/messages.po index bcc88681aa..c51b64e9e3 100644 --- a/locale/es_ES/LC_MESSAGES/messages.po +++ b/locale/es_ES/LC_MESSAGES/messages.po @@ -1,2604 +1,4559 @@ # TRADUCCIÓN DE TINY TINY RSS (messages.po) A ESPAÑOL -# Copyleft GNU FDL o Creative Commons Reconocimiento - CompartirIgual (by-sa) 2009 Fundación Utopía Verde: http://utopiaverde.org +# Copyleft GNU FDL o Creative Commons Reconocimiento - CompartirIgual (by-sa) +# 2009 Fundación Utopía Verde: http://utopiaverde.org # Manuel Gualda Caballero , 2009. +# DavidM , 2012-2013 msgid "" msgstr "" "Project-Id-Version: messages\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-22 22:16+0300\n" -"PO-Revision-Date: 2009-11-10 00:12+0100\n" -"Last-Translator: Manuel Gualda Caballero \n" -"Language-Team: Español \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2014-03-10 14:18+0100\n" +"Last-Translator: DavidM \n" +"Language-Team: Español \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.5.4\n" -#: backend.php:107 +#: backend.php:73 msgid "Use default" msgstr "Usar configuración por defecto" -#: backend.php:108 +#: backend.php:74 msgid "Never purge" msgstr "Nunca purgar" -#: backend.php:109 +#: backend.php:75 msgid "1 week old" msgstr "1 semana de antigüedad" -#: backend.php:110 +#: backend.php:76 msgid "2 weeks old" msgstr "2 semanas de antigüedad" -#: backend.php:111 +#: backend.php:77 msgid "1 month old" msgstr "1 mes de antigüedad" -#: backend.php:112 +#: backend.php:78 msgid "2 months old" msgstr "2 meses de antigüedad" -#: backend.php:113 +#: backend.php:79 msgid "3 months old" msgstr "3 meses de antigüedad" -#: backend.php:116 +#: backend.php:82 msgid "Default interval" msgstr "Intervalo por defecto" -#: backend.php:117 backend.php:127 +#: backend.php:83 +#: backend.php:93 msgid "Disable updates" msgstr "Desactivar actualizaciones" -#: backend.php:118 backend.php:128 -msgid "Each 15 minutes" +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" msgstr "Cada 15 minutos" -#: backend.php:119 backend.php:129 -msgid "Each 30 minutes" +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" msgstr "Cada 30 minutos" -#: backend.php:120 backend.php:130 +#: backend.php:86 +#: backend.php:96 msgid "Hourly" msgstr "Cada hora" -#: backend.php:121 backend.php:131 -msgid "Each 4 hours" +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" msgstr "Cada 4 horas" -#: backend.php:122 backend.php:132 -msgid "Each 12 hours" +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" msgstr "Cada 12 horas" -#: backend.php:123 backend.php:133 +#: backend.php:89 +#: backend.php:99 msgid "Daily" msgstr "Diariamente" -#: backend.php:124 backend.php:134 +#: backend.php:90 +#: backend.php:100 msgid "Weekly" msgstr "Semanalmente" -#: backend.php:137 tt-rss.php:220 modules/pref-prefs.php:329 -msgid "Default" -msgstr "Por defecto" - -#: backend.php:138 -msgid "Magpie" -msgstr "Magpie" - -#: backend.php:139 -msgid "SimplePie" -msgstr "SimplePie" - -#: backend.php:148 modules/pref-users.php:126 +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 msgid "User" msgstr "Usuario" -#: backend.php:149 +#: backend.php:104 msgid "Power User" msgstr "Usuario con poder" -#: backend.php:150 +#: backend.php:105 msgid "Administrator" msgstr "Administrador" -#: backend.php:538 login_form.php:142 modules/backend-rpc.php:61 -#: modules/popup-dialog.php:106 -#, fuzzy -msgid "Default profile" -msgstr "Límite de artículos por defecto" - -#: errors.php:3 -msgid "Unknown error" -msgstr "Error desconocido" +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "Este programa requiere XmlHttpRequest para funcionar apropiadamente. Parece que su navegador no lo soporta." -#: errors.php:5 -msgid "" -"This program requires XmlHttpRequest to function properly. Your browser " -"doesn't seem to support it." -msgstr "" -"Este programa requiere XmlHttpRequest para funcionar apropiadamente. Parece " -"que su navegador no lo soporta." - -#: errors.php:8 -msgid "" -"This program requires cookies to function properly. Your browser doesn't " -"seem to support them." -msgstr "" -"Este programa requiere cookies para funcionar apropiadamente. Parece que su " -"navegador no las soporta." +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "Este programa requiere cookies para funcionar apropiadamente. Parece que su navegador no las soporta." -#: errors.php:11 -msgid "Backend sanity check failed" +#: errors.php:15 +msgid "Backend sanity check failed." msgstr "La comprobación de validez del Backend ha fallado" -#: errors.php:13 +#: errors.php:17 msgid "Frontend sanity check failed." msgstr "La comprobación de validez del Frontend ha fallado" -#: errors.php:15 -msgid "" -"Incorrect database schema version. <a href='update.php'>Please " -"update</a>." -msgstr "" -"La versión del esquema de la base de datos es incorrecta. <a href='update." -"php'>Por favor, actualice</a>." +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "La versión del esquema de la base de datos es incorrecta. <a href='update.php'>Por favor, actualice</a>." -#: errors.php:17 +#: errors.php:21 msgid "Request not authorized." msgstr "Petición no autorizada." -#: errors.php:19 +#: errors.php:23 msgid "No operation to perform." msgstr "Ninguna operación a realizar." -#: errors.php:21 -msgid "" -"Could not display feed: query failed. Please check label match syntax or " -"local configuration." -msgstr "" -"No se puede mostrar la fuente: consulta fallida. Por favor, compruebe la " -"sintaxis de la coincidencia de etiqueta o la configuración local." +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "No se puede mostrar la fuente: consulta fallida. Por favor, compruebe la expresión de coincidencia del marcador o la configuración local." -#: errors.php:23 +#: errors.php:27 msgid "Denied. Your access level is insufficient to access this page." -msgstr "" -"Denegado. Su nivel de acceso es insuficiente para acceder a esta página." +msgstr "Denegado. Su nivel de acceso es insuficiente para acceder a esta página." -#: errors.php:25 +#: errors.php:29 msgid "Configuration check failed" msgstr "La comprobación de la configuración ha fallado." -#: errors.php:27 -msgid "" -"Your version of MySQL is not currently supported. Please see \n" -"\t\tofficial site for more information." -msgstr "" -"Su versión de MySQL no está soportada actualmente. Por favor, vaya al sitio " -"oficial para obtener más información." +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "Su versión de MySQL no está soportada. Por favor, visite el sitio oficial para obtener más información." -#: errors.php:32 +#: errors.php:35 msgid "SQL escaping test failed, check your database and PHP configuration" -msgstr "" -"La prueba de escape SQL ha fallado. Por favor, revise la configuración de su " -"base de datos y PHP." - -#: functions.php:1928 -msgid "Session failed to validate (incorrect IP)" -msgstr "No se pudo validar la sesión (IP incorrecta)" - -#: functions.php:1998 -msgid "Incorrect username or password" -msgstr "Nombre de usuario o contraseña incorrecta" - -#: functions.php:2979 modules/popup-dialog.php:391 -#: modules/pref-filters.php:420 -msgid "All feeds" -msgstr "Todas las fuentes" +msgstr "La prueba de escape SQL ha fallado. Por favor, revise la configuración de su base de datos y PHP." -#: functions.php:3011 functions.php:3050 functions.php:4447 functions.php:4475 -#: modules/backend-rpc.php:859 modules/pref-feeds.php:1333 -msgid "Uncategorized" -msgstr "Sin clasificar" +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "Fuente no encontrada." -#: functions.php:3040 functions.php:3689 modules/backend-rpc.php:864 -#: mobile/functions.php:170 -msgid "Special" -msgstr "Especial" +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "Usuario no encontrado" -#: functions.php:3042 functions.php:3691 prefs.php:114 -#: modules/backend-rpc.php:869 help/4.php:12 mobile/functions.php:197 -msgid "Labels" -msgstr "Etiquetas" +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "Cargando. Por favor, espere..." -#: functions.php:3087 help/3.php:60 offline.js:493 offline.js:1425 -msgid "Starred articles" -msgstr "Favoritos" +#: index.php:167 +msgid "Collapse feedlist" +msgstr "Colapsar la lista de fuentes" -#: functions.php:3089 modules/pref-feeds.php:1492 help/3.php:61 -msgid "Published articles" -msgstr "Publicados" +#: index.php:170 +msgid "Show articles" +msgstr "Mostrar artículos" -#: functions.php:3091 help/3.php:59 -msgid "Fresh articles" -msgstr "Recientes" +#: index.php:173 +msgid "Adaptive" +msgstr "Adaptable" -#: functions.php:3093 help/3.php:58 offline.js:488 offline.js:1427 -msgid "All articles" +#: index.php:174 +msgid "All Articles" msgstr "Todos" -#: functions.php:3095 -#, fuzzy -msgid "Archived articles" +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" msgstr "Favoritos" -#: functions.php:4200 -msgid "Generated feed" -msgstr "Fuente generada" - -#: functions.php:4205 functions.php:5553 modules/popup-dialog.php:82 -#: modules/pref-feeds.php:1087 modules/pref-feeds.php:1297 -#: modules/pref-filters.php:377 modules/pref-labels.php:183 -#: modules/pref-users.php:419 offline.js:408 -msgid "Select:" -msgstr "Seleccione:" - -#: functions.php:4206 modules/popup-dialog.php:83 modules/pref-feeds.php:1088 -#: modules/pref-feeds.php:1298 modules/pref-filters.php:378 -#: modules/pref-labels.php:184 modules/pref-users.php:420 -msgid "All" -msgstr "No" +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "Publicados" -#: functions.php:4207 functions.php:4224 tt-rss.php:213 +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 msgid "Unread" msgstr "Sin leer" -#: functions.php:4208 -msgid "Invert" -msgstr "Invertir" +#: index.php:178 +msgid "With Note" +msgstr "Con anotación" -#: functions.php:4209 modules/popup-dialog.php:84 modules/pref-feeds.php:1089 -#: modules/pref-feeds.php:1299 modules/pref-filters.php:379 -#: modules/pref-labels.php:185 modules/pref-users.php:421 -msgid "None" -msgstr "Ninguno" +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Ignorar la puntuación" -#: functions.php:4217 tt-rss.php:178 offline.js:184 -msgid "Actions..." -msgstr "Acciones..." +#: index.php:182 +msgid "Sort articles" +msgstr "Ordenar artículos" -#: functions.php:4223 -msgid "Selection toggle:" -msgstr "Cambiar la selección:" +#: index.php:185 +msgid "Default" +msgstr "Por defecto" -#: functions.php:4225 tt-rss.php:212 -msgid "Starred" -msgstr "Favoritos" +#: index.php:186 +msgid "Newest first" +msgstr "Recientes primero" -#: functions.php:4226 -msgid "Published" -msgstr "Publicado" +#: index.php:187 +msgid "Oldest first" +msgstr "Antiguos primero" -#: functions.php:4227 -msgid "Selection:" -msgstr "Selección:" +#: index.php:188 +msgid "Title" +msgstr "Título" -#: functions.php:4228 localized_schema.php:16 tt-rss.php:187 tt-rss.php:230 +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 msgid "Mark as read" msgstr "Marcar como leído" -#: functions.php:4234 -msgid "Archive" -msgstr "" +#: index.php:195 +msgid "Older than one day" +msgstr "Más de un día" -#: functions.php:4236 -#, fuzzy -msgid "Move back" -msgstr "Volver atrás" +#: index.php:198 +msgid "Older than one week" +msgstr "Más de una semana" -#: functions.php:4237 -#, fuzzy -msgid "Delete" -msgstr "Por defecto" +#: index.php:201 +msgid "Older than two weeks" +msgstr "Más de dos semanas" -#: functions.php:4242 -msgid "Assign label:" -msgstr "Asignar etiqueta:" +#: index.php:217 +msgid "Communication problem with server." +msgstr "Problema de comunicación con el servidor." -#: functions.php:4283 -msgid "Click to collapse category" -msgstr "Plegar la categoría" +#: index.php:223 +msgid "Actions..." +msgstr "Acciones..." -#: functions.php:4493 -msgid "No feeds to display." -msgstr "No hay fuentes que mostrar." +#: index.php:225 +msgid "Preferences..." +msgstr "Preferencias..." -#: functions.php:4510 -msgid "Tags" -msgstr "Etiquetas" +#: index.php:226 +msgid "Search..." +msgstr "Buscar..." -#: functions.php:4669 -msgid "audio/mpeg" -msgstr "audio/mpeg" +#: index.php:227 +msgid "Feed actions:" +msgstr "Acciones de la fuente:" -#: functions.php:4795 -msgid " - " -msgstr " - " +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "Suscribirse a una fuente..." -#: functions.php:4820 functions.php:5580 -msgid "Edit tags for this article" -msgstr "Editar las etiquetas de este artículo" +#: index.php:229 +msgid "Edit this feed..." +msgstr "Editar esta fuente..." -#: functions.php:4826 functions.php:5563 -msgid "Show article summary in new window" -msgstr "Mostrar el sumario del artículo en una nueva pestaña o ventana" +#: index.php:230 +msgid "Rescore feed" +msgstr "Reiniciar la puntuación" -#: functions.php:4833 functions.php:5570 -msgid "Publish article with a note" -msgstr "Publicar el artículo con una nota" +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "Cancelar la suscripción" -#: functions.php:4850 functions.php:5441 -msgid "Originally from:" -msgstr "" +#: index.php:232 +msgid "All feeds:" +msgstr "Todas las fuentes:" -#: functions.php:4863 functions.php:5454 -#, fuzzy -msgid "Feed URL" -msgstr "Fuente" +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Ocultar/Mostrar fuentes leídas" -#: functions.php:4903 functions.php:5484 -msgid "unknown type" -msgstr "tipo desconocido" +#: index.php:235 +msgid "Other actions:" +msgstr "Otras acciones:" -#: functions.php:4943 functions.php:5527 -msgid "Attachment:" -msgstr "Adjunto:" +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "Alternar modo de pantalla ancha" -#: functions.php:4945 functions.php:5529 -msgid "Attachments:" -msgstr "Adjuntos:" +#: index.php:237 +msgid "Create label..." +msgstr "Crear marcador..." -#: functions.php:4965 prefs.php:142 tt-rss.php:101 modules/help.php:21 -#: modules/popup-dialog.php:53 modules/popup-dialog.php:154 -#: modules/popup-dialog.php:181 modules/popup-dialog.php:230 -#: modules/popup-dialog.php:575 modules/popup-dialog.php:634 -#: modules/pref-feeds.php:1140 modules/pref-users.php:96 -msgid "Close this window" -msgstr "Cerrar esta ventana" +#: index.php:238 +msgid "Create filter..." +msgstr "Crear filtro..." -#: functions.php:5021 -msgid "Feed not found." -msgstr "Fuente no encontrada." +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "Ayuda para atajos de teclado" -#: functions.php:5090 -msgid "" -"Could not display feed (query failed). Please check label match syntax or " -"local configuration." +#: index.php:248 +msgid "Logout" +msgstr "Cerrar sesión" + +#: index.php:254 +msgid "Updates are available from Git." msgstr "" -"No se puede mostrar la fuente (consulta fallida). Por favor, compruebe la " -"sintaxis de la coincidencia de etiqueta o la configuración local." -#: functions.php:5254 functions.php:5341 -msgid "mark as read" -msgstr "marcar como leído" +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "Preferencias" -#: functions.php:5417 functions.php:5424 -msgid "Click to expand article" -msgstr "Desplegar el artículo" +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "Atajos de teclado" -#: functions.php:5587 -msgid "toggle unread" -msgstr "cambiar a sin leer" +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Salir de las preferencias" -#: functions.php:5606 -msgid "No unread articles found to display." -msgstr "No se han encontrado artículos sin leer." +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Fuentes" -#: functions.php:5609 -msgid "No updated articles found to display." -msgstr "No se han encontrado artículos actualizados." +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "Filtros" -#: functions.php:5612 -msgid "No starred articles found to display." -msgstr "No se han encontrado artículos favoritos." +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Marcadores" -#: functions.php:5616 -msgid "" -"No articles found to display. You can assign articles to labels manually " -"(see the Actions menu above) or use a filter." -msgstr "" -"No se han encontrado artículos que desplegar. Si lo desea, puede asignar " -"artículos a las etiquetas manualmente (ver el menú Acciones -arriba-) o usar " -"un filtro." +#: prefs.php:133 +msgid "Users" +msgstr "Usuarios" -#: functions.php:5618 offline.js:443 -msgid "No articles found to display." -msgstr "No se han encontrado artículos que desplegar." +#: prefs.php:136 +msgid "System" +msgstr "Sistema" -#: functions.php:6362 tt-rss.php:192 -msgid "Create label..." -msgstr "Crear etiqueta..." +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "Crear nueva cuenta" -#: functions.php:6375 -msgid "(remove)" -msgstr "(eliminar)" +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "El registro de nuevos usuarios ha sido deshabilitado por el administrador." + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Volver a Tiny Tiny RSS" -#: functions.php:6427 -msgid "no tags" -msgstr "sin etiquetas" +#: register.php:218 +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 "Su contraseña temporal será enviada a la dirección de correo especificada. Las cuentas a las que no se acceda al menos una vez serán borradas automáticamente a las 24 horas de enviar la contraseña temporal." -#: functions.php:6456 -msgid "edit note" -msgstr "editar nota" +#: register.php:224 +msgid "Desired login:" +msgstr "Nombre de usuario deseado:" -#: localized_schema.php:9 tt-rss.php:222 modules/popup-dialog.php:381 -#: modules/pref-feeds.php:1310 modules/pref-feeds.php:1369 -msgid "Title" -msgstr "Título" +#: register.php:227 +msgid "Check availability" +msgstr "Comprobar la disponibilidad" -#: localized_schema.php:10 -msgid "Title or Content" -msgstr "Título o contenido" +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "Correo electrónico:" -#: localized_schema.php:11 -msgid "Link" -msgstr "Enlace" +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "¿Cuánto es dos más dos?" -#: localized_schema.php:12 modules/popup-dialog.php:382 -msgid "Content" -msgstr "Contenido" +#: register.php:235 +msgid "Submit registration" +msgstr "Enviar solicitud de registro" -#: localized_schema.php:13 -msgid "Article Date" -msgstr "Fecha del artículo" +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "Su información de registro está incompleta" -#: localized_schema.php:15 -msgid "Filter article" -msgstr "Filtrar artículo" +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "Lo sentimos, este nombre de usuario ya existe." -#: localized_schema.php:17 -msgid "Set starred" -msgstr "Fijar como favorito" +#: register.php:287 +msgid "Registration failed." +msgstr "El registro ha fallado." -#: localized_schema.php:18 viewfeed.js:545 viewfeed.js:659 -msgid "Publish article" -msgstr "Publicar artículo" +#: register.php:334 +msgid "Account created successfully." +msgstr "Cuenta creada correctamente." -#: localized_schema.php:19 -msgid "Assign tags" -msgstr "Asignar etiquetas" +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "El registro de nuevos usuarios está cerrado en estos momentos." -#: localized_schema.php:20 -msgid "Assign label" -msgstr "Asignar etiqueta" +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "Script para actualizar datos de Tiny Tiny RSS." + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "Sin clasificar" -#: localized_schema.php:24 -msgid "General" -msgstr "General" +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d artículo archivado" +msgstr[1] "%d artículos archivados" -#: localized_schema.php:26 -msgid "Allow duplicate posts" -msgstr "Permitir envíos duplicados" +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "No se han encontrado fuentes." -#: localized_schema.php:27 -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 "" -"Esta opción es útil cuando está leyendo varios agregadores de tipo \"planeta" -"\" con bases de usuarios parcialmente coincidentes. Cuando está desactivado, " -"fuerza a que los mismos envíos que hayan sido publicados por varias fuentes " -"aparezcan una sola vez." +#: include/functions2.php:52 +msgid "Navigation" +msgstr "Navegación" -#: localized_schema.php:28 -msgid "Default interval between feed updates (in minutes)" -msgstr "" -"Intervalo por defecto entre las actualizaciones de las fuentes (en minutos)" +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "Abrir la fuente siguiente" -#: localized_schema.php:29 -msgid "Enable e-mail digest" -msgstr "Activar los correos recopilatorios" +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "Abrir la fuente siguiente" -#: localized_schema.php:30 -msgid "" -"This option enables sending daily digest of new (and unread) headlines on " -"your configured e-mail address" -msgstr "" -"Esta opción permite el envío diario de un recopilatorio de los titulares " -"nuevos o sin leer a la dirección de correo que haya indicado en la " -"configuración" +#: include/functions2.php:55 +msgid "Open next article" +msgstr "Abrir el artículo siguiente" -#: localized_schema.php:31 -msgid "Purge old posts after this number of days (0 - disables)" -msgstr "" -"Purgar los envíos antiguos después de este número de días (0 = desactivado)" +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "Abrir el artículo anterior" -#: localized_schema.php:32 -msgid "Update post on checksum change" -msgstr "" -"Actualizar el envío cuando cambie la suma de comprobación (\"checksum\")" +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "Abrir artículo siguiente (no desplazar artículos largos)" -#: localized_schema.php:33 -msgid "Mark articles in e-mail digest as read" -msgstr "Marcar como leídos los artículos de los correos de recopilación" +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "Abrir artículo anterior (no desplazar artículos largos)" -#: localized_schema.php:34 -msgid "Enable offline reading" -msgstr "Activar la lectura fuera de línea" +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "Ir al artículo siguiente (no expandir ni marcar como leído)" -#: localized_schema.php:35 -msgid "Synchronize new articles for offline reading using Google Gears." -msgstr "" -"Sincronizar los nuevos artículos para su lectura fuera de línea usando " -"\"Google Gears\"." +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "Ir al artículo anterior (no expandir ni marcar como leído)" -#: localized_schema.php:37 -msgid "Interface" -msgstr "Interfaz" +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Mostrar el diálogo de búsqueda" -#: localized_schema.php:39 -msgid "Combined feed display" -msgstr "Despliegue combinado de la fuente" +#: include/functions2.php:62 +msgid "Article" +msgstr "Artículo" -#: localized_schema.php:40 -msgid "" -"Display expanded list of feed articles, instead of separate displays for " -"headlines and article content" -msgstr "" -"Muestra una lista expandida de los artículos de la fuente, en lugar de " -"mostrar por separado los títulos y contenidos de los artículos." +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "Alternar favoritos" -#: localized_schema.php:41 -msgid "Default article limit" -msgstr "Límite de artículos por defecto" +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "Alternar publicados" -#: localized_schema.php:42 -msgid "" -"Default limit for articles to display, any custom number you like (0 - " -"disables)." -msgstr "" -"Límite por defecto de los artículos a mostrar: cualquier número " -"personalizado que quieras (0 = desactivado)." +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "Alternar sin leer" -#: localized_schema.php:43 -msgid "Enable feed categories" -msgstr "Habilitar las categorías de fuentes" +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Editar etiquetas" -#: localized_schema.php:44 -msgid "Enable search toolbar" -msgstr "Habilitar la barra de herramientas de búsqueda" +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "Desechar la selección" -#: localized_schema.php:45 -msgid "Hide feeds with no unread messages" -msgstr "Ocultar las fuentes que no tengan mensajes sin leer" +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "Desechar leídos" -#: localized_schema.php:46 -msgid "Mark articles as read automatically" -msgstr "Marcar los artículos como leídos automáticamente" +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "Abrir en ventana nueva" -#: localized_schema.php:47 -msgid "" -"This option enables marking articles as read automatically in combined mode " -"(except for Fresh articles feed) while you scroll article list." -msgstr "" -"Esta opción habilita el marcado automático de los artículos como leídos " -"cuando está activado el modo de despliegue combinado de las fuentes y nos " -"desplazamos por la lista de artículos (excepción: fuente de artículos " -"recientes)." +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "Marcar artículos posteriores como leídos" -#: localized_schema.php:48 -msgid "On catchup show next feed" -msgstr "Al ponerse al corriente, mostrar la siguiente fuente" +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "Marcar artículos anteriores como leídos" -#: localized_schema.php:49 -msgid "" -"When \"Mark as read\" button is clicked in toolbar, automatically open next " -"feed with unread articles." -msgstr "" -"Cuando se pulse el botón \"Marcar como leído\" de la barra de herramientas, " -"abrir automáticamente la siguiente fuente que tenga artículos sin leer." +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "Desplazarse abajo" -#: localized_schema.php:50 -msgid "Open article links in new browser window" -msgstr "" -"Abrir los enlaces del artículo en una nueva pestaña o ventana del navegador" +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "Desplazarse hacia arriba" -#: localized_schema.php:51 -msgid "Reverse headline order (oldest first)" -msgstr "Invertir el orden de los titulares (los más antiguos primero)" +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "Seleccionar el artículo que esté bajo el cursor del ratón" -#: localized_schema.php:52 -msgid "Show content preview in headlines list" -msgstr "Mostrar una vista previa del contenido en la lista de titulares" +#: include/functions2.php:75 +msgid "Email article" +msgstr "Enviar artículo por correo" -#: localized_schema.php:53 -msgid "Sort feeds by unread articles count" -msgstr "Ordenar las fuentes en función del número de artículos sin leer" +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "Cerrar/plegar artículo" -#: localized_schema.php:54 -msgid "User stylesheet URL" -msgstr "URL de la hoja de estilo del usuario" +#: include/functions2.php:77 +msgid "Toggle article expansion (combined mode)" +msgstr "Alternar expansión de los artículos (modo combinado)" -#: localized_schema.php:55 -msgid "Link to user stylesheet to override default style, disabled if empty." -msgstr "" -"Enlace a la hoja de estilo del usuario, la cual sobreescribirá el estilo por " -"defecto (si se deja vació, la función estará desactivada)." +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "Alternar incrustación del artículo original" -#: localized_schema.php:56 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Antigüedad máxima de los artículos recientes (en horas)" +#: include/functions2.php:80 +msgid "Article selection" +msgstr "Selección de artículos" -#: localized_schema.php:57 -msgid "Hide feedlist" -msgstr "Ocultar la lista de fuentes" +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "Seleccionar todos los artículos" -#: localized_schema.php:58 -msgid "" -"This option hides feedlist and allows it to be toggled on the fly, useful " -"for small screens." -msgstr "" -"Esta opción oculta la lista de fuentes y le permite ser cambiada al vuelo " -"(útil para pequeñas pantallas)." +#: include/functions2.php:82 +msgid "Select unread" +msgstr "Seleccionar artículos sin leer" -#: localized_schema.php:59 -msgid "Group headlines in virtual feeds" -msgstr "Agrupar los titulares en fuentes virtuales" +#: include/functions2.php:83 +msgid "Select starred" +msgstr "Seleccionar artículos favoritos" -#: localized_schema.php:60 -msgid "" -"When this option is enabled, headlines in Special feeds and Labels are " -"grouped by feeds" -msgstr "" -"Cuando esta opción está habilitada, los titulares de fuentes especiales y " -"etiquetas son agrupados por fuentes" +#: include/functions2.php:84 +msgid "Select published" +msgstr "Seleccionar artículos publicados" -#: localized_schema.php:62 -msgid "Advanced" -msgstr "Avanzado" +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "Invertir selección " -#: localized_schema.php:64 -msgid "Blacklisted tags" -msgstr "Etiquetas añadidas a la lista negra" +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "Deseleccionar todo" -#: localized_schema.php:65 -msgid "" -"When auto-detecting tags in articles these tags will not be applied (comma-" -"separated list)." -msgstr "" -"Cuando esté activada la función de autodetectar etiquetas en los artículos, " -"no se incluirán estas etiquetas (lista de etiquetas separadas por comas)" +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Fuente" -#: localized_schema.php:66 -msgid "Confirm marking feed as read" -msgstr "Confirmar el marcado de la fuente como leída" +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "Actualizar la fuente activa" -#: localized_schema.php:67 -msgid "Enable feed icons" -msgstr "Habilitar los iconos de la fuente" +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "Ocultar/Mostrar fuentes leídas" -#: localized_schema.php:68 -msgid "Enable labels" -msgstr "Habilitar las etiquetas" +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "Suscribirse a una fuente" -#: localized_schema.php:69 -msgid "" -"Experimental support for virtual feeds based on user crafted SQL queries. " -"This feature is highly experimental and at this point not user friendly. Use " -"with caution." -msgstr "" -"Soporte experimental para las fuentes virtuales basado en las consultas SQL " -"diseñadas por el usuario. Esta característica es experimental y nada " -"amigable para el usuario. Úsela con cautela." +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Editar fuente" -#: localized_schema.php:70 -msgid "Long date format" -msgstr "Formato de fecha largo" +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "Invertir orden de titulares" -#: localized_schema.php:71 -msgid "Set articles as unread on update" -msgstr "Al actualizar, fijar los artículos como no leídos" +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "Depurar la actualización de fuentes" -#: localized_schema.php:72 -msgid "Short date format" -msgstr "Formato de fecha corto" +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "Marcar todas las fuentes como leídas" -#: localized_schema.php:73 -msgid "Show additional information in feedlist" -msgstr "Mostrar información adicional en la lista de fuentes" +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "Desplegar/plegar la categoría" -#: localized_schema.php:74 -msgid "Strip unsafe tags from articles" -msgstr "Quitar las etiquetas peligrosas de los artículos" +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "Alternar modo combinado" -#: localized_schema.php:75 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "" -"Quitar todo salvo las etiquetas HTML más comunes cuando se esté leyendo los " -"artículos." +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "Expandir automáticamente los artículos en el modo combinado" -#: localized_schema.php:76 -msgid "Use more accessible date/time format for headlines" -msgstr "Usar el formato de fecha y hora más accesible para los titulares" +#: include/functions2.php:99 +msgid "Go to" +msgstr "Ir a" -#: localized_schema.php:77 -msgid "Automatically expand articles in combined mode" -msgstr "Expandir automáticamente los artículos en el modo combinado" +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "Todos" -#: localized_schema.php:78 -msgid "Purge unread articles" -msgstr "Purgar los artículos no leídos" +#: include/functions2.php:101 +msgid "Fresh" +msgstr "Reciente" -#: localized_schema.php:79 -msgid "Show special feeds when hiding read feeds" -msgstr "Mostrar las fuentes especiales cuando se oculten las fuentes leídas" +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Nube de etiquetas" -#: localized_schema.php:80 -msgid "Prefer more accurate feedlist counters to UI speed" -msgstr "" -"Preferir el recuento más preciso de la lista de fuentes a la velocidad de la " -"interfaz de usuario" +#: include/functions2.php:106 +msgid "Other" +msgstr "Otro" -#: localized_schema.php:81 -msgid "Enable inline MP3 player" -msgstr "Habilitar el reproductor MP3 en línea" +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "Crear marcador" -#: localized_schema.php:82 -msgid "" -"Enable the Flash-based XSPF Player to play MP3-format podcast enclosures." -msgstr "" -"Habilitar el reproductor XSPF basado en flash para reproducir los ficheros " -"de sonido MP3." +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "Crear filtro" -#: localized_schema.php:83 -msgid "Do not show images in articles" -msgstr "No mostrar imágenes en los artículos" +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "Mostrar/ocultar la barra lateral" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "Mostrar el diálogo de ayuda" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Resultados de búsqueda: %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +msgid "comment" +msgid_plural "comments" +msgstr[0] "comentario" +msgstr[1] "comentarios" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +msgid "comments" +msgstr "comentarios" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "sin etiquetas" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "Editar las etiquetas de este artículo" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "Original de:" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "URL de la fuente" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "Cerrar esta ventana" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(editar nota)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "tipo desconocido" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "Adjuntos" -#: localized_schema.php:84 -msgid "Enable external API" +#: include/functions.php:964 +#, php-format +msgid "%d min" msgstr "" -#: login_form.php:120 modules/popup-dialog.php:271 modules/pref-feeds.php:339 -#: modules/pref-feeds.php:561 mobile/login_form.php:38 +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "Especial" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Todas las fuentes" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Favoritos" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Publicados" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "Recientes" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "Artículos archivados" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "Leídos recientemente" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 msgid "Login:" msgstr "Nombre de usuario:" -#: login_form.php:124 modules/popup-dialog.php:273 modules/pref-feeds.php:344 -#: modules/pref-feeds.php:567 mobile/login_form.php:43 +#: include/login_form.php:200 +#: classes/handler/public.php:560 msgid "Password:" msgstr "Contraseña:" -#: login_form.php:129 -msgid "Language:" -msgstr "Idioma:" +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "Olvidé mi contraseña" -#: login_form.php:139 -#, fuzzy +#: include/login_form.php:212 msgid "Profile:" -msgstr "Fichero:" +msgstr "Perfil:" -#: login_form.php:152 mobile/login_form.php:28 -msgid "Log in" -msgstr "Iniciar sesión" +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "Perfil por defecto" -#: login_form.php:155 register.php:148 -msgid "Create new account" -msgstr "Crear una nueva cuenta" +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "Usar menos tráfico" -#: login_form.php:169 -msgid "Limit bandwidth usage" -msgstr "Limitar el uso de ancho de banda" +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "No muestra imágenes en los artículos, reduce las actualizaciones automáticas." -#: opml.php:99 opml.php:103 -msgid "OPML Utility" -msgstr "Utilidad OPML" +#: include/login_form.php:236 +msgid "Remember me" +msgstr "Recordarme" -#: opml.php:124 -msgid "Importing OPML (using DOMXML extension)..." -msgstr "Importando OPML (usando la extensión DOMXML)..." +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "Iniciar sesión" -#: opml.php:128 -msgid "Importing OPML (using DOMDocument extension)..." -msgstr "Importando OPML (usando la extensión DOMDocument)..." +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "No se pudo validar la sesión (IP incorrecta)" -#: opml.php:132 modules/popup-dialog.php:45 -msgid "DOMXML extension is not found. It is required for PHP versions below 5." -msgstr "" -"No se ha encontrado la extensión DOMXML, la cual es necesaria para las " -"versiones de PHP inferiores a la 5." +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "No se pudo validar la sesión (ha cambiado la versión del esquema)" -#: opml.php:136 -msgid "Return to preferences" -msgstr "Volver a las preferencias" +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "No se pudo validar la sesión (usuario no encontrado)" -#: prefs.php:63 prefs.php:123 tt-rss.php:65 -msgid "Loading, please wait..." -msgstr "Cargando. Por favor, espere..." +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "No se pudo validar la sesión (ha cambiado la contraseña)" -#: prefs.php:70 prefs.php:126 tt-rss.php:73 -msgid "" -"Your browser doesn't support Javascript, which is required\n" -"\t\tfor this application to function properly. Please check your\n" -"\t\tbrowser settings." -msgstr "" -"Esta aplicación requiere Javascript para funcionar apropiadamente y su " -"navegador no lo soporta actualmente. Por favor, revise las opciones de " -"configuración de su navegador." +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "Otros trucos están disponibles en el wiki de Tiny Tiny RSS." -#: prefs.php:90 tt-rss.php:112 -msgid "Hello," -msgstr "Hola," +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Atajos de teclado" -#: prefs.php:92 help/4.php:14 -msgid "Exit preferences" -msgstr "Salir de las preferencias" +#: classes/backend.php:61 +msgid "Shift" +msgstr "Mayúsculas" -#: prefs.php:94 tt-rss.php:122 mobile/functions.php:60 -#: mobile/functions.php:234 -msgid "Logout" -msgstr "Cerrar sesión" +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" -#: prefs.php:102 tt-rss.php:196 -msgid "Keyboard shortcuts" -msgstr "Atajos de teclado" +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Tema de ayuda no encontrado." -#: prefs.php:108 tt-rss.php:114 help/3.php:63 help/4.php:8 -msgid "Preferences" -msgstr "Preferencias" +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "Compartir con Tiny Tiny RSS" -#: prefs.php:110 -msgid "Feeds" -msgstr "Fuentes" +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Título:" -#: prefs.php:112 help/4.php:11 -msgid "Filters" -msgstr "Filtros" +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" -#: prefs.php:117 help/4.php:13 -msgid "Users" -msgstr "Usuarios" +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "Contenido:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "Marcadores:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "El artículo compartido aparecerá en la fuente Publicados." + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "Compartir" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "Cancelar" -#: prefs.php:140 tt-rss.php:99 -msgid "Fatal Exception" -msgstr "" +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "No ha iniciado sesión" -#: register.php:152 -msgid "New user registrations are administratively disabled." -msgstr "" -"El registro de nuevos usuarios ha sido deshabilitado por el administrador." +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Nombre de usuario o contraseña incorrecta" -#: register.php:155 register.php:200 register.php:213 register.php:228 -#: register.php:246 register.php:331 register.php:341 register.php:353 -#: update.php:94 update.php:162 modules/pref-feeds.php:954 -msgid "Return to Tiny Tiny RSS" -msgstr "Volver a Tiny Tiny RSS" +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "Ya está suscrito a %s." -#: register.php:176 -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 "" -"Su contraseña temporal será enviada a la dirección de correo especificada. " -"Las cuentas en las que no se entre una vez serán borradas automáticamente a " -"las 24 horas de enviar la contraseña temporal." +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "Suscrito a %s." -#: register.php:182 -msgid "Desired login:" -msgstr "Nombre de usuario deseado:" +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "No se pudo suscribir a %s." -#: register.php:185 -msgid "Check availability" -msgstr "Comprobar la disponibilidad" +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "No se han encontrado fuentes en %s." -#: register.php:187 -msgid "Email:" -msgstr "Correo electrónico:" +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "Múltiples fuentes encontradas." -#: register.php:190 -msgid "How much is two plus two:" -msgstr "¿Cuánto es dos más dos?" +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "No se pudo suscribir a %s. No se pudo descargar la fuente de su URL." -#: register.php:193 -msgid "Submit registration" -msgstr "Enviar solicitud de registro" +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "Suscribirse a la fuente seleccionada" -#: register.php:211 -msgid "Your registration information is incomplete." -msgstr "Su información de registro está incompleta" +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Editar las opciones de suscripción" -#: register.php:226 -msgid "Sorry, this username is already taken." -msgstr "Lo sentimos, este nombre de usuario ya existe." +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "Recuperación de contraseña" -#: register.php:244 -msgid "Registration failed." -msgstr "El registro ha fallado." +#: classes/handler/public.php:805 +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "Se necesita que proporcione un nombre de usuario y correo electrónico válidos. Un enlace para crear una nueva contraseña será enviado a su correo electrónico." -#: register.php:328 -msgid "Account created successfully." -msgstr "Cuenta creada correctamente." +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "Redefinir contraseña" -#: register.php:350 -msgid "New user registrations are currently closed." -msgstr "El registro de nuevos usuarios está cerrado en estos momentos." +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "Algunos de los parámetros necesarios son incorrectos o faltan." -#: tt-rss.php:118 -msgid "Comments?" -msgstr "¿Comentarios?" +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "Volver" -#: tt-rss.php:131 -msgid "Offline reading" -msgstr "Lectura fuera de línea" +#: classes/handler/public.php:878 +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] Petición de cambio de contraseña" -#: tt-rss.php:138 -msgid "Cancel synchronization" -msgstr "Cancelar la sincronización" +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "Lo siento, combinación de usuario y correo electrónico incorrecta." -#: tt-rss.php:141 -msgid "Synchronize" -msgstr "Sincronizar" +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "Su nivel de acceso es insuficiente para ejecutar este programa." -#: tt-rss.php:143 -msgid "Remove stored data" -msgstr "Eliminar los datos almacenados" +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "Actualizador de la base de datos" -#: tt-rss.php:145 -msgid "Go offline" -msgstr "Poner fuera de línea" +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Actualizar" -#: tt-rss.php:151 -msgid "New version of Tiny Tiny RSS is available!" -msgstr "¡Nueva versión de Tiny Tiny RSS disponible!" +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "Ver como fuente RSS" -#: tt-rss.php:158 -msgid "Go online" -msgstr "Poner en línea" +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "Ver como RSS" -#: tt-rss.php:169 tt-rss.js:79 -msgid "tag cloud" -msgstr "nube de etiquetas" +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "Última actualización: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "Todo" -#: tt-rss.php:179 -msgid "Search..." -msgstr "Buscar..." +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Invertir" -#: tt-rss.php:180 -msgid "Feed actions:" -msgstr "Acciones de la fuente:" +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Nada" -#: tt-rss.php:181 -msgid "Subscribe to feed..." -msgstr "Suscribir a la fuente..." +#: classes/feeds.php:99 +msgid "More..." +msgstr "Más..." -#: tt-rss.php:182 -msgid "Edit this feed..." -msgstr "Editar esta fuente..." +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Alternar la selección:" -#: tt-rss.php:183 -msgid "Rescore feed" -msgstr "Reiniciar la puntuación" +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Selección:" -#: tt-rss.php:184 modules/pref-feeds.php:465 modules/pref-feeds.php:1193 -msgid "Unsubscribe" -msgstr "Cancelar la suscripción" +#: classes/feeds.php:110 +msgid "Set score" +msgstr "Definir puntuación" -#: tt-rss.php:186 -msgid "All feeds:" -msgstr "Todas las fuentes:" +#: classes/feeds.php:113 +msgid "Archive" +msgstr "Archivar" -#: tt-rss.php:188 help/3.php:44 -msgid "(Un)hide read feeds" -msgstr "Ocultar/Mostrar las leídas" +#: classes/feeds.php:115 +msgid "Move back" +msgstr "Mover a la fuente original" -#: tt-rss.php:190 -msgid "Other actions:" -msgstr "Otras acciones:" +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "Borrar" -#: tt-rss.php:193 -msgid "Create filter..." -msgstr "Crear filtro..." +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "Enviar por correo electrónico" -#: tt-rss.php:194 -msgid "Reset UI layout" -msgstr "Reajustar la interfaz" +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Fuente:" -#: tt-rss.php:195 -msgid "Reset category order" -msgstr "Reordenar categorías" +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "Fuente no encontrada." -#: tt-rss.php:205 -msgid "Collapse feedlist" -msgstr "Plegar la lista de fuentes" +#: classes/feeds.php:268 +msgid "Never" +msgstr "Nunca " -#: tt-rss.php:208 -#, fuzzy -msgid "Show articles" -msgstr "Recientes" +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "Importado en %s" -#: tt-rss.php:210 -msgid "Adaptive" -msgstr "Adaptable" +#: classes/feeds.php:452 +#: classes/feeds.php:549 +msgid "mark feed as read" +msgstr "Marcar fuente como leída" -#: tt-rss.php:211 -msgid "All Articles" -msgstr "Todos" +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "Cerrar artículo" -#: tt-rss.php:214 -msgid "Ignore Scoring" -msgstr "Ignorar la puntuación" +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "No se han encontrado artículos sin leer." -#: tt-rss.php:215 modules/pref-feeds.php:1316 modules/pref-feeds.php:1377 -msgid "Updated" -msgstr "Actualizados" +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "No se han encontrado artículos actualizados." -#: tt-rss.php:218 -#, fuzzy -msgid "Sort articles" -msgstr "Marcar el artículo como favorito" +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "No se han encontrado artículos favoritos." -#: tt-rss.php:221 modules/popup-dialog.php:462 modules/pref-filters.php:51 -#: modules/pref-filters.php:469 -msgid "Date" -msgstr "Fecha" +#: classes/feeds.php:778 +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 "No se han encontrado artículos que mostrar. Puede asignar artículos a los marcadores manualmente con el menú contextual del titular (se aplica a todos los artículos seleccionados) o usar un filtro." + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "No se han encontrado artículos que mostrar." -#: tt-rss.php:223 -msgid "Score" -msgstr "Puntos" +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "Última actualización de las fuentes: %s" -#: tt-rss.php:227 modules/pref-feeds.php:296 modules/pref-feeds.php:524 -msgid "Update" -msgstr "Actualizar" +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "Error al actualizar algunas fuentes (pulse aquí para obtener los detalles)" -#: tt-rss.php:238 tt-rss.php:252 +#: classes/feeds.php:957 msgid "No feed selected." msgstr "No se ha seleccionado ninguna fuente." -#: tt-rss.php:242 -msgid "Drag me to resize panels" -msgstr "Arrástrame para redimensionar los paneles" +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "URL de la fuente o del sitio" -#: update.php:19 -msgid "Your access level is insufficient to run this script." -msgstr "Su nivel de acceso es insuficiente para ejecutar este programa." +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "Categoría:" -#: update.php:44 -msgid "Database Updater" -msgstr "Actualizador de la base de datos" +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "Fuentes disponibles" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "Autenticación" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "Iniciar sesión" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "Contraseña:" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Esta fuente requiere autenticación." + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "Suscribir" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "Más fuentes" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "Buscar" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "Fuentes populares" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "Archivo de fuentes" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "límite:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "Eliminar" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "Buscar" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +msgid "Search syntax" +msgstr "Sintaxis de búsqueda" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "Artículo no encontrado." + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "Etiquetas para este artículo (separadas por comas):" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Guardar" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "Utilidad OPML" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "Importando OPML..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "Volver a las preferencias" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "Añadiendo fuente: %s" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "Duplicar fuente: %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "Añadiendo el marcador %s" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "Duplicar marcador: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "Configurando la opción %s como %s" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "Añadiendo filtro..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "Procesando categoría: %s" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "La subida falló con el código de error %d" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "No se pudo mover el archivo subido." + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "Error: por favor, suba un fichero OPML." + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "Error: no se pudo encontrar el fichero OPML movido." + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Error mientras se analizaba el documento." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "Su nivel de acceso es insuficiente para abrir esta pestaña." + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "Registro de errores" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "Actualizar" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "Borrar registro" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Error" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "Nombre de archivo" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Mensaje" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Fecha" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Usuario no encontrado" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "Registrado" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Última sesión el" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "Contador de fuentes suscritas" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Fuentes suscritas" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Nivel de acceso:" + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Opciones" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "Se ha añadido al usuario %s con la contraseña %s" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "No se puede crear el usuario %s" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "El usuario %s ya existe." + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "Se ha cambiado la contraseña del usuario %s a %s" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "Enviando nueva contraseña del usuario %s a %s" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] Notificación de cambio de contraseña" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "Seleccionar" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Crear usuario" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "Detalles" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Editar" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Nivel de acceso" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "Última sesión" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Pulse aquí para editar" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "No se han definido usuarios." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "No se han encontrado usuarios coincidentes." + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Marcar para habilitar el campo" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "(%d fuente)" +msgstr[1] "(%d fuentes)" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "Título de la fuente" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "Actualizar" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Purga de artículos" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "Pista: necesita rellenar su información de usuario si la fuente requiere autenticación, excepto para las fuentes de Twitter." + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "No incluir en Fuentes Populares" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "Incluir en el correo recopilatorio" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Mostrar siempre imágenes adjuntas" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "No mostrar imágenes" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Guardar las imágenes en la memoria caché local" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "Marcar los artículos actualizados como sin leer" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "Icono" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "Reemplazar" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "Volver a suscribirse a las actualizaciones push" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "Reinicia el estatus de suscripción de PubSubHubbub para las fuentes habilitadas para push." + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Hecho." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "Fuentes con errores" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "Fuentes inactivas" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "Editar fuentes seleccionadas" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "Reiniciar orden" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "Suscripción en lote" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "Categorías" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "Añadir categoría" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "Eliminar seleccionadas" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "Más acciones..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "Purga manual" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "Limpiar los datos de la fuente" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Reiniciar la puntuación de los artículos" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "Puede usar OPML para importar y exportar sus fuentes, filtros, marcadores y preferencias de Tiny Tiny RSS." + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "Sólo el perfil de opciones principal se puede migrar usando OPML." + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "Importar OPML" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "Nombre de archivo:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "Incluir preferencias" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "Exportar OPML" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "Puede hacer público su OPML. Cualquiera que conozca la siguiente URL podrá suscribirse al OPML." + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "El OPML publicado no incluye sus preferencias, fuentes que requieren autenticación, ni fuentes ocultas de las Fuentes Populares." + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "URL del archivo OPML público" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "Mostrar la URL del OPML público" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Integración con Firefox" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "Esta instalación de Tiny tiny RSS puede ser usada como un lector de fuentes de Firefox si pulsa en el enlace de abajo." + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "Pulse aquí para registrar este sitio como un lector de fuentes." + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "Artículos publicados y compartidos / Fuentes generadas" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "Los artículos publicados son exportados como una fuente RSS pública a la cual podrá suscribirse cualquiera que conozca la URL especificada a continuación." + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "Mostrar URL" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "Limpiar todas las URLs generadas" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "Estas fuentes no han publicado contenidos nuevos al menos en 3 meses (más antiguas primero):" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "Pulse para editar fuente" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "Cancelar la suscripción a las fuentes seleccionadas" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "Añadir una fuente RSS válida en cada línea (no se realizará detección de fuentes)" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "Fuentes para suscribirse, una por línea" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "Las fuentes requieren autenticación." + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "Artículos coincidentes con este filtro:" + +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "No se han encontrado artículos recientes que coincidan con el filtro." + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(inverso)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "%s en %s en %s %s" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Leyenda" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "Coincidir" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "Añadir" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "Aplicar acciones" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Habilitado" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "Coincidencia con cualquier regla" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "Coincidencia inversa" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "Probar" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "Combinar" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Crear" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "Coincidencia inversa con la expresión regular" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "en el campo" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "en" + +#: classes/pref/filters.php:947 +msgid "Wiki: Filters" +msgstr "Wiki: Filtros" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "Guardar regla" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "Añadir regla" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Realizar la acción" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "con los parámetros:" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "Guardar acción" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "Añadir acción" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[Sin leyenda]" + +#: classes/pref/filters.php:1044 +#, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "%s (%d regla)" +msgstr[1] "%s (%d reglas)" + +#: classes/pref/filters.php:1059 +#, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "%s (+%d acción)" +msgstr[1] "%s (+%d acciones)" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "Colores" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "Primer plano:" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "Fondo:" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "Se ha creado la etiqueta %s" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Limpiar los colores" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "General" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Interfaz" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Avanzado" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "Correos recopilatorios" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "Permitir artículos duplicados" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Etiquetas añadidas a la lista negra" + +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "Cuando se autodetecten etiquetas en los artículos, no se incluirán estas etiquetas (lista de etiquetas separadas por comas)" + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "Marcar como leídos los artículos automáticamente" + +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "Esta opción permite que al desplazarse por la lista de artículos, los artículos se vayan marcando como leídos automáticamente." + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "Expandir automáticamente los artículos en el modo combinado" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "Modo de fuente combinada" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Los titulares de los artículos y su contenido se muestran combinados en una lista expandible, en lugar de mostrarse por separado." + +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "Pedir confirmación para marcar una fuente como leída" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "Número de artículos que se muestran simultáneamente" + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "Intervalo de actualización de fuentes por defecto" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "Intervalo más breve en el cual una fuente será chequeada buscando actualizaciones, independientemente del método de actualización." + +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "Marcar como leídos los artículos de los correos recopilatorios" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "Habilitar correo recopilatorio" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Esta opción permite el envío diario de un recopilatorio de los titulares nuevos o sin leer a la dirección de correo que haya indicado en la configuración" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "Intentar enviar recopilatorios aproximadamente a la hora seleccionada" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "Usa la zona horaria UTC" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "Habilitar API" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "Permite a clientes externos acceder a esta cuenta mediante la API" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Habilitar categorías de fuentes" + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "Ordenar las fuentes por número de artículos sin leer" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Antigüedad máxima de los artículos recientes (en horas)" + +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "Ocultar las fuentes que no tengan artículos sin leer" + +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "Mostrar las fuentes especiales cuando se oculten las fuentes leídas" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "Formato de fecha largo" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "La sintaxis usada es idéntica a la función PHP date()." + +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "Al ponerse al corriente, mostrar la siguiente fuente" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Al marcar una fuente como leída, abrir automáticamente la siguiente fuente que tenga artículos sin leer" + +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Purgar artículos después de este número de días (0 - desactivado)" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "Purgar artículos sin leer" + +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "Invertir el orden de los titulares (los más antiguos primero)" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "Formato de fecha corto" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "Mostrar una vista previa del contenido en la lista de titulares" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "Ordenar titulares por fecha de la fuente" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "Usar fecha especificada en la fuente para ordenar los titulares en lugar de la fecha local de importación." + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "Iniciar sesión con certificado SSL" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Clic para registrar el certificado de su cliente SSL con tt-rss" + +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "No mostrar imágenes en los artículos" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "Quitar las etiquetas inseguras de los artículos" + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Quitar etiquetas HTML, salvo las más comunes, cuando se esté leyendo los artículos." + +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "Personalizar hoja de estilo" + +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "Personalizar la hoja de estilo CSS" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "Zona horaria " + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "Agrupar los titulares en fuentes virtuales" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "Las fuentes especiales, marcadores y categorías se agrupan por fuente original" + +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "Idioma" + +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "Tema" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "Seleccione uno de los temas CSS disponibles" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "La configuración ha sido guardada." + +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "Sus datos personales han sido guardados." + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "Se han establecido los valores por defecto en las preferencias." + +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "Datos personales / Autenticación" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "Datos personales" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "Nombre completo" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "Correo electrónico" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Nivel de acceso" + +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Guardar datos" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "Su contraseña tiene el valor por defecto. Por favor, modifíquela." + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "Cambiar su contraseña actual desactivará las contraseñas de un solo uso." + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Antigua contraseña" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Nueva contraseña" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Confirme la nueva contraseña" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "Cambiar contraseña" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "Contraseñas de un solo uso / Autenticador" + +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "Las contraseñas de un solo uso están habilitadas. Introduzca su contraseña actual para deshabilitar." + +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "Introduzca su contraseña" + +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "Desactivar contraseñas de un solo uso" + +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "Necesitará un Autenticador compatible para usar esta función. Cambiar su contraseña deshabilitaría automáticamente las contraseñas de un solo uso." + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "Escanee el código siguiente con la aplicación de Autenticación:" + +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "Introduzca contraseña de un solo uso generada" + +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "Activar contraseñas de un solo uso" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "Se requieren funciones PHP GD para el funcionamiento de las contraseñas de un solo uso." + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "Algunas preferencias solo están disponibles en el perfil por defecto." + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "Personalizar" + +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "Registro" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "Limpiar" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "Hora actual del servidor: %s (UTC)" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Guardar la configuración" + +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "Guardar preferencias y salir" + +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "Gestionar perfiles" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "Opciones por defecto" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "Plugins" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "Tiene que recargar Tiny Tiny RSS para que tengan efecto los cambios en los plugins." + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "Descargue más plugins de tt-rss.org: foros y wiki." + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "Plugins de sistema" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "Plugin" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "Descripción" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "Versión" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "Autor" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "más información" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "Borrar datos" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "Plugins de usuario" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "Activar los plugins seleccionados" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "Contraseña de un solo uso incorrecta" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "Contraseña incorrecta" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "Aquí puede cambiar los colores, fuentes y diseño de su tema actual mediante código CSS. Puede utilizar este archivo como referencia." + +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "Crear perfil" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(activo)" + +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "Borrar los perfiles seleccionados" + +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "Activar perfil" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "Si ha importado marcadores y/o filtros, puede ser necesario recargar las preferencia para ver sus nuevos datos." + +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "La URL de su archivo OPML público es:" + +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "Generar URL nueva" + +#: 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 "El demonio de actualización está habilitado en la configuración, pero el proceso del demonio no está en funcionamiento, lo cual impide la actualización de todas las fuentes. Por favor, inicie el proceso del demonio o solicítelo al propietario de la instancia." + +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "Última actualización:" + +#: 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 "El demonio de actualización está tardando demasiado en realizar una actualización de fuente. Esto podría deberse a un problema en el servidor (rotura, cuelgue,...). Por favor, compruebe el proceso del demonio o avise al propietario de la instancia." + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "Puede ver esta fuente en formato RSS en la siguiente URL:" + +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" + +#: plugins/af_psql_trgm/init.php:112 +#, fuzzy +msgid "Show related articles" +msgstr "Artículos compartidos" + +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +#, fuzzy +msgid "Mark similar articles as read" +msgstr "¿Marcar todos los artículos como leídos?" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +#, fuzzy +msgid "Global settings" +msgstr "Incluir preferencias" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "Actualizar todas las fuentes" + +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" + +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" + +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "Fuentes soportadas por af_comics" + +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "Actualmente están soportados los siguientes cómics:" + +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "Editar nota del artículo" + +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "No se ha cargado ningún archivo." + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "Terminado. %d artículos de %d importados." + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "El formato del documento es incorrecto." + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "Importar items favoritos o compartidos de Google Reader" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "Pegue en el espacio siguiente su archivo starred.json o shared.json." + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "Importar mis items favoritos" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[Reenviado]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "Múltiples artículos" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "Hacer click en el enlace siguiente invocará su aplicación de correo:" + +#: plugins/mailto/init.php:75 +msgid "Forward selected article(s) by email." +msgstr "Enviar artículo por correo" + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "Debería poder editar el mensaje en su aplicación de correo antes de enviarlo." + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "Cerrar este diálogo" + +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "Importar y exportar" + +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "Puede exportar e importar sus artículos favoritos y archivados para tener una copia de seguridad, o para migrar entre instancias de Tiny Tiny RSS." + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "Exportar mis datos" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Importar" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "Fallo de la importación: la versión del esquema es incorrecta." + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "Fallo de la importación: no se reconoce el formato del documento." + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "Terminado:" + +#: plugins/import_export/init.php:388 +#, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "%d artículo procesado, " +msgstr[1] "%d artículos procesados, " + +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "%d importado, " +msgstr[1] "%d importados, " + +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "%d fuente creada." +msgstr[1] "%d fuentes creadas." + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "No se pudo cargar documento XML." + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "Preparar datos" + +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "NSFW (click para alternar)" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "Plugin NSFW" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "Etiquetas que se considerarán NSFW (separadas por comas)" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "Configuración guardada." + +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "Por favor, introduzca su contraseña de un solo uso:" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "La contraseña ha sido cambiada." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "La contraseña antigua es incorrecta." + +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "Cerrar artículo" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "" + +#: plugins/mail/init.php:34 +#, fuzzy +msgid "Mail plugin" +msgstr "Plugins de usuario" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "" + +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "Para:" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "Asunto:" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "Enviar correo electrónico" + +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "Enlazado" + +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" +msgstr "Instancia" + +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "URL de la instancia" + +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "Clave de acceso:" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "Clave de acceso" + +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "Usar una clave de acceso para ambas instancias enlazadas." + +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "Generar nueva clave" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "Enlazar instancia" + +#: 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 "Puede conectar otras instancias de Tiny Tiny RSS con esta para compartir Fuentes Populares. Para enlazar esta instancia de Tiny Tiny RSS con otras utilice esta URL:" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "Última sesión" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "Estatus" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "Fuentes archivadas" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "Crear enlace" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "Configuración guardada." + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "Comprobar la disponibilidad" + +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "Desplazar el contenido del artículo" + +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "Artículos compartidos" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +#, fuzzy +msgid "Statistics" +msgstr "Estatus" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "Favoritos" + +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "Borrar datos" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, fuzzy, php-format +msgid "Currently stored as: %s" +msgstr "Hora actual del servidor: %s (UTC)" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +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 "Arrastre el siguiente enlace a la barra de herramientas de su navegador. Cuando esté interesado en suscribirse a una fuente, ábrala con el navegador y pulse el enlace para suscribirse." + +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "¿Suscribirse a %s con Tiny Tiny RSS?" + +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Suscribirse con Tiny Tiny RSS" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "Use este bookmarklet para publicar cualquier página usando Tiny Tiny RSS" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "Aquí puede desactivar todos los artículos compartidos mediante URLs únicas." + +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "Dejar de compartir todos los artículos" + +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "Compartir mediante URL" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "Puede compartir este artículo con la siguiente URL única:" + +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "Dejar de compartir el artículo" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "El error será reportado a la ubicación configurada para los logs." + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "" + +#: js/functions.js:93 +#, fuzzy +msgid "Close" +msgstr "cerrar" + +#: js/functions.js:104 +#, fuzzy +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "¿Está seguro de que quiere reportar esta excepción a tt-rss.org? El informe incluirá los datos de su navegador. Su dirección IP quedará guardada." + +#: js/functions.js:224 +msgid "Click to close" +msgstr "Clic para cerrar" + +#: js/functions.js:1051 +msgid "Edit action" +msgstr "Editar acción" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "Crear filtro" + +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "¿Restaurar suscripción? Tiny Tiny RSS volverá a intentar suscribirse al hub de notificaciones en la siguiente actualización de fuentes." + +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "Suscripción reiniciada." + +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "¿Cancelar la suscripción a %s?" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "Eliminando la fuente..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "Introduzca el nombre de la categoría:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "¿Generar nueva dirección de sindicación para esta fuente?" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Intentando cambiar la dirección..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "No se han seleccionado fuentes." + +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "¿Eliminar las fuentes seleccionadas del archivo? Las fuentes con artículos archivados no serán eliminadas." + +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "Fuentes con errores de actualización" + +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "¿Borrar fuentes seleccionadas?" + +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "Borrando fuentes seleccionadas..." + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "Editar categoría" + +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "Borrar categoría" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "Inverso" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "Por favor, introduzca el nombre de usuario:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "No se puede crear el usuario: no se ha especificado el nombre de usuario." + +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "Añadiendo usuario..." + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Editor de usuario" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "Guardando datos..." + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "Editar filtro" + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "¿Borrar el filtro?" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "Eliminando el filtro..." + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "¿Borrar los marcadores seleccionados?" + +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "Eliminando las etiquetas seleccionadas..." + +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "No se han seleccionado marcadores." + +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "¿Borrar los usuarios seleccionados? Su cuenta y la cuenta del administrador por defecto no serán borradas." + +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "Eliminando los usuarios seleccionados..." + +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "No se han seleccionado usuarios." + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "¿Eliminar los filtros seleccionados?" + +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "Eliminando los filtros seleccionados..." + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "No se han seleccionado filtros." + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "¿Cancelar la suscripción a las fuentes seleccionadas?" + +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "Cancelando la suscripción a las fuentes seleccionadas..." + +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "Por favor, seleccione una sola fuente." + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "¿Borrar todos los artículos no favoritos de la fuente seleccionada?" + +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "Limpiando las fuentes seleccionadas..." + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "¿Cuántos días desea guardar los artículos? (0 = configuración por defecto)" + +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "Purgando la fuente seleccionada..." + +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "Por favor, seleccione un solo usuario." + +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "¿Restaurar la contraseña del usuario seleccionado?" + +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "Reajustando la contraseña del usuario seleccionado..." + +#: js/prefs.js:565 +msgid "User details" +msgstr "Detalles del usuario" + +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "Por favor, seleccione un solo filtro." + +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "¿Combinar los filtros seleccionados?" + +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "Uniendo filtros..." + +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "Editar múltiples fuentes" + +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "¿Guardar los cambios de las fuentes seleccionadas?" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "Importar OPML" + +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "Por favor, seleccione un archivo OPML." + +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "Importando, espere por favor..." + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "¿Restaurar las opciones por defecto?" + +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "Suscribiéndose a las fuentes..." + +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "¿Borrar los datos guardados por este plugin?" + +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "¿Borrar todos los mensajes del registro de errores?" + +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "¿Marcar todos los artículos como leídos?" + +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "Marcando todas las fuentes como leídas..." + +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "Por favor, habilite primero el plugin mail." + +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "No puede editar esta clase de fuente." + +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "Por favor, habilite primero el plugin embed_original." + +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "" + +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "No puede reiniciar la puntuación de esta clase de fuente." + +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "Por favor, seleccione primero alguna fuente." + +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "¿Reiniciar la puntuación de los artículos de %s?" + +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "Reiniciando la puntuación de los artículos..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "No se han seleccionado artículos." + +#: js/viewfeed.js:1018 +#, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "¿Borrar %d artículo seleccionado en %s?" +msgstr[1] "¿Borrar %d artículos seleccionados en %s?" + +#: js/viewfeed.js:1020 +#, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "¿Borrar %d artículo seleccionado?" +msgstr[1] "¿Borrar %d artículos seleccionados?" + +#: js/viewfeed.js:1062 +#, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "¿Archivar %d artículo seleccionado en %s?" +msgstr[1] "¿Archivar %d artículos seleccionados en %s?" + +#: js/viewfeed.js:1065 +#, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "¿Mover %d artículo archivado a su fuente original?" +msgstr[1] "¿Mover %d artículos archivados a su fuente original?" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "Recuerde que los artículos no favoritos podrían ser purgados en la siguiente actualización de las fuentes." + +#: js/viewfeed.js:1112 +#, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "¿Marcar %d artículo seleccionado de %s como leído?" +msgstr[1] "¿Marcar %d artículos seleccionados de %s como leídos?" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "Editar las etiquetas del artículo" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "Guardando las etiquetas del artículo..." + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +#, fuzzy +msgid "Click to open next unread feed." +msgstr "Pulse para editar fuente" + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "Abrir artículo original" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Asignar marcador" + +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "Borrar marcador" + +#: js/viewfeed.js:2159 +msgid "Select articles in group" +msgstr "Seleccionar los artículos del grupo" + +#: js/viewfeed.js:2168 +msgid "Mark group as read" +msgstr "Marcar grupo como leído" + +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "Marcar fuente como leída" + +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "Por favor, introduzca puntuación para los artículos seleccionados:" + +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "Por favor, introduzca puntuación para este artículo:" + +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "URL del artículo:" + +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "Lo siento, su navegador no soporta iframes aislados (sandbox)." + +#: plugins/af_psql_trgm/init.js:11 +#, fuzzy +msgid "Related articles" +msgstr "Borrar artículo" + +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "Guardando nota del artículo..." + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Importación de Google Reader" + +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "Por favor, seleccione un archivo." + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "Enviar artículo por correo" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "Exportar datos" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "Terminado, %d artículo exportado. Puede descargar los datos aquí." +msgstr[1] "Terminado, %d artículos exportados. Puede descargar los datos aquí." + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Importación de datos" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "Por favor, seleccione un archivo." + +#: plugins/shorten_expanded/init.js:37 +msgid "Click to expand article" +msgstr "Desplegar el artículo" + +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" + +#: plugins/mail/mail.js:38 +#, fuzzy +msgid "Your message has been sent." +msgstr "Sus datos personales han sido guardados." + +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "Enlazar instancia" + +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "Editar instancia" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "¿Borrar instancias seleccionadas?" + +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "Borrando instancias seleccionadas..." + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "No se han seleccionado instancias." + +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "Por favor, seleccione una sola instancia." + +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "Limpiar los datos de la fuente" + +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "" + +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "Compartir artículo mediante URL" + +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "¿Generar una nueva URL para compartir este artículo?" + +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "Intentando cambiar la URL..." + +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "¿No compartir este artículo?" + +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "Intentando dejar de compartir..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "Se invalidarán todas las URLs de artículos compartidos. ¿Continuar?" + +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "Limpiando URLs..." + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "Las URLs compartidas han sido borradas." + +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "¿Marcar todos los artículos de %s como leídos?" + +#: js/feedlist.js:435 +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "¿Marcar como leídos todos los artículos de más de 1 día de antigüedad de %s? " + +#: js/feedlist.js:438 +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "¿Marcar como leídos todos los artículos de más de 1 semana de antigüedad de %s?" + +#: js/feedlist.js:441 +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "¿Marcar como leídos todos los artículos de más de 2 semanas de antigüedad de %s?" + +#: js/functions.js:615 +msgid "Error explained" +msgstr "Error explicado" + +#: js/functions.js:697 +msgid "Upload complete." +msgstr "Subida completa." + +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "¿Borrar el icono de la fuente?" + +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "Borrando el icono de la fuente..." + +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "Icono de la fuente borrado." + +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "Seleccione un archivo de imagen para cargar." + +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "¿Cargar un nuevo icono para esta fuente?" + +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "Cargando. Por favor, espere..." + +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "Por favor, introduzca el nombre del marcador:" + +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "No se puede crear el marcador: falta nombre." + +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "Suscribirse a fuente" + +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "" + +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "Se ha suscrito a %s" -#: update.php:85 -msgid "Could not update database" -msgstr "No se puede actualizar la base de datos" +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "La URL especificada parece ser inválida." -#: update.php:88 -msgid "Could not find necessary schema file, need version:" -msgstr "" -"No se puede encontrar el fichero de esquema necesario. Versión necesaria:" +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "La URL especificada no parece contener fuentes." -#: update.php:89 -msgid ", found: " -msgstr ", encontrado:" +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "Expandir para seleccionar fuente" -#: update.php:92 -msgid "Tiny Tiny RSS database is up to date." -msgstr "La base de datos de Tiny Tiny RSS está actualizada." +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "No se pudo cargar la URL especificada: %s" -#: update.php:102 -msgid "Please backup your database before proceeding." -msgstr "" -"Por favor, haga una copia de seguridad de su base de datos antes de " -"continuar." +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "Fallo de validación de XML: %s" -#: update.php:104 -#, php-format -msgid "" -"Your Tiny Tiny RSS database needs update to the latest version (%d to " -"%d)." -msgstr "" -"Su base de datos Tiny Tiny RSS necesita ser actualizada a la última versión " -"(%d to %d)." +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "Ya está suscrito a esta fuente." -#: update.php:118 -msgid "Perform updates" -msgstr "Actualizar" +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "Editar regla" -#: update.php:123 -msgid "Performing updates..." -msgstr "Actualizando..." +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "Editar fuente" -#: update.php:129 -#, php-format -msgid "Updating to version %d..." -msgstr "Actualizando a la versión %d..." +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "Más fuentes" -#: update.php:142 -msgid "Checking version... " -msgstr "Comprobando la versión..." +#: js/functions.js:1878 +msgid "Help" +msgstr "Ayuda" -#: update.php:148 -msgid "OK!" -msgstr "¡TODO CORRECTO!" +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "¿Borrar la categoría %s? Cualquier subcategoría será movida a Sin Categoría." -#: update.php:150 -msgid "ERROR!" -msgstr "¡ERROR!" +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "Borrando categoría..." -#: update.php:158 -#, php-format -msgid "" -"Finished. Performed %d update(s) up to schema\n" -"\t\t\tversion %d." -msgstr "" -"Tarea terminada. Realizada(s) %d actualización(es) a la versión del " -"esquema %d." +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "¿Eliminar las categorías seleccionadas?" -#: modules/help.php:6 -msgid "Help" -msgstr "Ayuda" +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "Eliminando las categorías seleccionadas..." -#: modules/help.php:17 -msgid "Help topic not found." -msgstr "Tema de ayuda no encontrado." +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "No se han seleccionado categorías." -#: modules/opml_domdoc.php:52 modules/opml_domxml.php:54 -#, fuzzy, php-format -msgid "
  • Adding category %s.
  • " -msgstr "Añadiendo categoría %s." +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "Nombre de la categoría:" -#: modules/opml_domdoc.php:101 modules/opml_domxml.php:103 -#, fuzzy -msgid "is already imported." -msgstr "Ya importado." +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "Creando categoría..." -#: modules/opml_domdoc.php:121 modules/opml_domxml.php:122 -#, fuzzy -msgid "OK" -msgstr "¡TODO CORRECTO!" +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "Fuentes sin actualizaciones recientes" -#: modules/opml_domdoc.php:130 modules/opml_domxml.php:134 -msgid "Error while parsing document." -msgstr "Error mientras se analizaba el documento." +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "¿Reemplazar la dirección actual de publicación del OPML por una dirección nueva?" -#: modules/opml_domdoc.php:134 modules/opml_domxml.php:138 -msgid "Error: please upload OPML file." -msgstr "Error: por favor, suba un fichero OPML." +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "Limpiando la fuente..." -#: modules/opml_domxml.php:131 -msgid "Error: can't find body element." -msgstr "Error: no se puede encontrar el elemento \"body\"." +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "¿Reiniciar la puntuación de los artículos de las fuentes seleccionadas?" -#: modules/popup-dialog.php:7 -#, fuzzy -msgid "OPML Import" -msgstr "Importar" +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "Volviendo a puntuar las fuentes seleccionadas..." -#: modules/popup-dialog.php:34 -#, fuzzy -msgid "Importing using DOMXML." -msgstr "Importando OPML (usando la extensión DOMXML)..." +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "¿Reiniciar la puntuación de todos los artículos? Esta operación puede llevar cierto tiempo." -#: modules/popup-dialog.php:40 -#, fuzzy -msgid "Importing using DOMDocument." -msgstr "Importando OPML (usando la extensión DOMDocument)..." +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "Volviendo a puntuar las fuentes..." + +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "¿Restaurar color por defecto en los marcadores seleccionados?" -#: modules/popup-dialog.php:68 +#: js/prefs.js:1403 msgid "Settings Profiles" -msgstr "" +msgstr "Perfiles de preferencias" -#: modules/popup-dialog.php:75 -#, fuzzy -msgid "Create profile" -msgstr "Crear filtro" +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "¿Borrar los perfiles seleccionados? El perfil activo y el perfil por defecto no serán borrados." -#: modules/popup-dialog.php:100 modules/popup-dialog.php:128 -#, fuzzy -msgid "(active)" -msgstr "Adaptable" +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "Borrando los perfiles seleccionados..." -#: modules/popup-dialog.php:148 modules/popup-dialog.php:350 -#: modules/pref-feeds.php:455 modules/pref-feeds.php:1136 -#: modules/pref-filters.php:153 modules/pref-filters.php:321 -#: modules/pref-labels.php:140 modules/pref-users.php:378 -msgid "Remove" -msgstr "Eliminar" +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "No se ha seleccionado ningún perfil." -#: modules/popup-dialog.php:150 -#, fuzzy -msgid "Activate" -msgstr "Adaptable" +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "¿Activar el perfil seleccionado?" -#: modules/popup-dialog.php:163 -#, fuzzy -msgid "Published Articles" -msgstr "Publicados" +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "Seleccione un perfil para activar." -#: modules/popup-dialog.php:168 -#, fuzzy -msgid "Your Published articles feed URL is:" -msgstr "Enlace a la fuente de artículos publicados." +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "Creando perfil..." -#: modules/popup-dialog.php:177 -#, fuzzy -msgid "Generate new URL" -msgstr "Fuente generada" +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "Se invalidarán todas las URLs generadas previamente. ¿Continuar?" -#: modules/popup-dialog.php:190 -msgid "Notice" -msgstr "Aviso" +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "Borrar todas las URLs generadas" -#: modules/popup-dialog.php:196 -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 "" -"La actualización del demonio está habilitada en la configuración, pero el " -"proceso del demonio no está en funcionamiento, lo cual impide la " -"actualización de todas las fuentes. Por favor, inicie el proceso del demonio " -"o solicítelo al propietario de la instancia." +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Editor de marcadores" -#: modules/popup-dialog.php:200 modules/popup-dialog.php:220 -msgid "Last update:" -msgstr "Última actualización:" +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "No puede cancelar la suscripción a la categoría." -#: modules/popup-dialog.php:208 -msgid "" -"You are running the latest version of Tiny Tiny RSS. The fact that you are " -"seeing this dialog is probably a bug." -msgstr "" -"Usted está ejecutando la última versión de Tiny Tiny RSS. El hecho de que " -"usted esté viendo este diálogo es probablemente un error." +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "Cancelar búsqueda" -#: modules/popup-dialog.php:216 -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 "" -"El demonio de actualización está tardando demasiado en realizar una " -"actualización de fuente. Esto podría deberse a un problema en el servidor " -"(rotura, cuelgue,...). Por favor, compruebe el proceso del demonio o avise " -"al propietario de la instancia." +#: js/viewfeed.js:174 +#, fuzzy +msgid "New articles found, reload feed to continue." +msgstr "No se han encontrado artículos que mostrar." -#: modules/popup-dialog.php:239 -msgid "Subscribe to Feed" -msgstr "Suscribir a la fuente" +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Quitar el artículo de los favoritos" -#: modules/popup-dialog.php:248 modules/pref-feeds.php:197 -#: modules/pref-feeds.php:488 modules/pref-filters.php:407 -msgid "Feed" -msgstr "Fuente" +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "Marcar el artículo como favorito" -#: modules/popup-dialog.php:251 modules/pref-feeds.php:213 -#: modules/pref-feeds.php:502 -msgid "URL:" -msgstr "URL:" +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "Despublicar artículo" -#: modules/popup-dialog.php:260 modules/pref-feeds.php:225 -#: modules/pref-feeds.php:514 -msgid "Place in category:" -msgstr "Colocar en la categoría:" +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Publicar artículo" -#: modules/popup-dialog.php:268 modules/pref-feeds.php:332 -#: modules/pref-feeds.php:558 modules/pref-prefs.php:235 -#: modules/pref-users.php:142 -msgid "Authentication" -msgstr "Autenticación" +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "%d artículo seleccionado" +msgstr[1] "%d artículos seleccionados" -#: modules/popup-dialog.php:283 -msgid "This feed requires authentication." -msgstr "Esta fuente requiere autenticación." +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "No se ha seleccionado ningún artículo." -#: modules/popup-dialog.php:289 modules/popup-dialog.php:349 -msgid "Subscribe" -msgstr "Suscribir" +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "No se han encontrado artículos que marcar" -#: modules/popup-dialog.php:290 -#, fuzzy -msgid "More feeds" -msgstr "Más fuentes" +#: js/viewfeed.js:1452 +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "¿Marcar %d artículo como leído?" +msgstr[1] "¿Marcar %d artículos como leídos?" -#: modules/popup-dialog.php:291 modules/popup-dialog.php:351 -#: modules/popup-dialog.php:425 modules/popup-dialog.php:543 -#: modules/popup-dialog.php:612 modules/pref-feeds.php:468 -#: modules/pref-feeds.php:623 modules/pref-filters.php:160 -#: modules/pref-users.php:181 -msgid "Cancel" -msgstr "Cancelar" +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "Mostrar la URL del artículo" -#: modules/popup-dialog.php:298 -msgid "Feed Browser" -msgstr "Navegador de fuentes" +#~ msgid "Select by tags..." +#~ msgstr "Seleccionar por etiquetas..." -#: modules/popup-dialog.php:317 modules/popup-dialog.php:359 -#: modules/popup-dialog.php:424 modules/pref-feeds.php:1177 -#: modules/pref-filters.php:308 modules/pref-labels.php:131 -#: modules/pref-users.php:361 -msgid "Search" -msgstr "Buscar" +#~ msgid "Limit search to:" +#~ msgstr "Limitar la búsqueda a:" -#: modules/popup-dialog.php:321 -#, fuzzy -msgid "Popular feeds" -msgstr "desplegar fuentes" +#~ msgid "This feed" +#~ msgstr "Esta fuente" -#: modules/popup-dialog.php:322 -#, fuzzy -msgid "Feed archive" -msgstr "Acciones de las fuentes" +#~ msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation." +#~ msgstr "Es posible que expresiones complejas no devuelvan resultados en la prueba, a causa de problemas técnicos con la base de datos (implementación de expresiones regulares)." -#: modules/popup-dialog.php:325 -#, fuzzy -msgid "limit:" -msgstr "Límite:" +#~ msgid "Old password cannot be blank." +#~ msgstr "La antigua contraseña no puede dejarse en blanco." -#: modules/popup-dialog.php:371 -msgid "Look for" -msgstr "Buscar" +#~ msgid "New password cannot be blank." +#~ msgstr "La nueva contraseña no puede dejarse en blanco." -#: modules/popup-dialog.php:378 -msgid "match on" -msgstr "coincidencia con" +#~ msgid "Entered passwords do not match." +#~ msgstr "Las contraseñas introducidas no coinciden." -#: modules/popup-dialog.php:383 -msgid "Title or content" -msgstr "Título o contenido" +#~ msgid "Function not supported by authentication module." +#~ msgstr "Función no soportada por el módulo de autenticación" -#: modules/popup-dialog.php:388 -msgid "Limit search to:" -msgstr "Limitar la búsqueda a:" +#~ msgid "Match:" +#~ msgstr "Coincidir:" -#: modules/popup-dialog.php:404 -msgid "This feed" -msgstr "Esta fuente" +#~ msgid "Any" +#~ msgstr "Cu‫alquiera" -#: modules/popup-dialog.php:438 -msgid "Create Filter" -msgstr "Crear filtro" +#~ msgid "All tags." +#~ msgstr "Todas las etiquetas" -#: modules/popup-dialog.php:457 modules/pref-filters.php:42 -#: modules/pref-filters.php:406 -msgid "Match" -msgstr "Coincidir" +#~ msgid "Which Tags?" +#~ msgstr "¿Cuáles etiquetas?" -#: modules/popup-dialog.php:465 modules/pref-filters.php:54 -#: modules/pref-filters.php:441 -msgid "before" -msgstr "antes" +#~ msgid "Display entries" +#~ msgstr "Mostrar artículos" -#: modules/popup-dialog.php:466 modules/pref-filters.php:55 -#: modules/pref-filters.php:442 -msgid "after" -msgstr "después" +#~ msgid "Select item(s) by tags" +#~ msgstr "Seleccionar artículo(s) por etiquetas" -#: modules/popup-dialog.php:478 modules/pref-filters.php:68 -msgid "Check it" -msgstr "Comprobarlo" +#~ msgid "Unread First" +#~ msgstr "Sin leer primero" -#: modules/popup-dialog.php:481 modules/pref-filters.php:71 -msgid "on field" -msgstr "en el campo" +#~ msgid "Unknown option: %s" +#~ msgstr "Opción desconocida: %s" -#: modules/popup-dialog.php:487 modules/pref-filters.php:77 -msgid "in" -msgstr "en" +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "¡Nueva versión de Tiny Tiny RSS disponible!" -#: modules/popup-dialog.php:492 modules/pref-filters.php:82 -msgid "Perform Action" -msgstr "Realizar la acción" +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "No se pudo validar la sesión (ha cambiado el agente de usuario)" -#: modules/popup-dialog.php:509 modules/pref-filters.php:102 -msgid "with parameters:" -msgstr "con los parámetros:" +#~ msgid "Assign articles to labels automatically" +#~ msgstr "Asignar automáticamente artículos a los marcadores" -#: modules/popup-dialog.php:522 modules/pref-feeds.php:355 -#: modules/pref-feeds.php:576 modules/pref-filters.php:121 -#: modules/pref-users.php:164 -msgid "Options" -msgstr "Opciones" +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "Nueva versión de Tiny Tiny RSS disponible (%s)." -#: modules/popup-dialog.php:528 modules/pref-filters.php:133 -msgid "Enabled" -msgstr "Habilitado" +#~ msgid "You can update using built-in updater in the Preferences or by using update.php" +#~ msgstr "Puede actualizar usando el gestor de actualización en las preferenciaso utilizando update.php" -#: modules/popup-dialog.php:531 modules/pref-filters.php:142 -msgid "Inverse match" -msgstr "coincidencia inversa" +#~ msgid "See the release notes" +#~ msgstr "Ver las notas de la versión" -#: modules/popup-dialog.php:541 -msgid "Create" -msgstr "Crear" +#~ msgid "Download" +#~ msgstr "Descargar" -#: modules/popup-dialog.php:555 -msgid "Update Errors" -msgstr "Errores de actualización" +#~ msgid "Error receiving version information or no new version available." +#~ msgstr "Error al recibir información de versiones, o no hay una nueva versión disponible." -#: modules/popup-dialog.php:558 -msgid "These feeds have not been updated because of errors:" -msgstr "" -"Estas fuentes no han sido actualizadas debido a los siguientes errores:" +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Actualizar Tiny Tiny RSS" -#: modules/popup-dialog.php:584 -msgid "Edit Tags" -msgstr "Editar etiquetas" +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "Su instalación de Tiny Tiny RSS está actualizada." -#: modules/popup-dialog.php:589 -msgid "Tags for this article (separated by commas):" -msgstr "Etiquetas para este artículo (separadas por comas):" +#~ msgid "Force update" +#~ msgstr "Forzar actualización" -#: modules/popup-dialog.php:611 modules/pref-feeds.php:467 -#: modules/pref-feeds.php:621 modules/pref-filters.php:157 -#: modules/pref-users.php:179 -msgid "Save" -msgstr "Guardar" +#~ msgid "Do not close this dialog until updating is finished." +#~ msgstr "No cierre este cuadro de diálogo hasta que haya terminado la actualización." -#: modules/popup-dialog.php:620 -#, fuzzy -msgid "Tag Cloud" -msgstr "Nube de etiquetas" +#~ msgid "It is suggested to backup your tt-rss directory first." +#~ msgstr "Se recomienda hacer previamente una copia de seguridad del directorio de Tiny Tiny RSS." -#: modules/popup-dialog.php:623 -msgid "Showing most popular tags " -msgstr "Etiquetas más populares" +#~ msgid "Your database will not be modified." +#~ msgstr "Su base de datos no será modificada." -#: modules/popup-dialog.php:624 -#, fuzzy -msgid "more tags" -msgstr "sin etiquetas" +#~ 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 "El directorio actual de su instalación de Tiny Tiny RSS no será modificado. Será renombrado, y quedará en el directorio padre. Después de concluir la actualización usted podrá migrar todos los archivos personalizados que tenga." -#: modules/pref-feeds.php:4 -msgid "Check to enable field" -msgstr "Marcar para habilitar el campo" +#~ msgid "Ready to update." +#~ msgstr "Listo para actualizar" -#: modules/pref-feeds.php:187 -msgid "Feed Editor" -msgstr "Editor de fuente" +#~ msgid "Start update" +#~ msgstr "Empezar actualización" -#: modules/pref-feeds.php:242 -msgid "Link to feed:" -msgstr "Enlace a la fuente:" +#~ msgid "Backup your tt-rss directory before continuing. Please type 'yes' to continue." +#~ msgstr "Haga copia de seguridad del directorio de Tiny Tiny RSS antes de continuar. Por favor escriba 'yes' para continuar." -#: modules/pref-feeds.php:259 -msgid "Not linked" -msgstr "No enlazada" +#~ msgid "New version available!" +#~ msgstr "¡Nueva versión disponible!" -#: modules/pref-feeds.php:310 modules/pref-feeds.php:537 -msgid "using" -msgstr "usando" +#~ msgid "LibXML error %s at line %d (column %d): %s" +#~ msgstr "Error de LibXML %s en la línea %d (columna %d): %s" -#: modules/pref-feeds.php:322 modules/pref-feeds.php:549 -msgid "Article purging:" -msgstr "Purgando el artículo" +#~ msgid "From:" +#~ msgstr "De:" -#: modules/pref-feeds.php:369 modules/pref-feeds.php:582 -#, fuzzy -msgid "Hide from Popular feeds" -msgstr "Ocultar en mi lista de fuentes" +#~ msgid "Select:" +#~ msgstr "Seleccionar:" -#: modules/pref-feeds.php:380 modules/pref-feeds.php:587 -msgid "Right-to-left content" -msgstr "Contenido de derecha a izquierda" +#~ msgid "mark as read" +#~ msgstr "marcar como leído" -#: modules/pref-feeds.php:392 modules/pref-feeds.php:593 -msgid "Include in e-mail digest" -msgstr "Incluir en el correo recopilatorio" +#~ msgid "Change password to" +#~ msgstr "Cambiar la contraseña a" -#: modules/pref-feeds.php:405 modules/pref-feeds.php:599 -msgid "Always display image attachments" -msgstr "Desplegar siempre las imágenes adjuntas" +#~ msgid "E-mail: " +#~ msgstr "Correo electrónico:" -#: modules/pref-feeds.php:427 modules/pref-feeds.php:607 -msgid "Cache images locally" -msgstr "Guardar las imágenes en la memoria caché local" +#~ msgid "Login field cannot be blank." +#~ msgstr "El campo de nombre de usuario no puede dejarse en blanco." -#: modules/pref-feeds.php:439 -msgid "Icon" -msgstr "" +#~ msgid "Saving user..." +#~ msgstr "Guardando usuario..." -#: modules/pref-feeds.php:453 -msgid "Replace" -msgstr "" +#~ msgid "Toggle marked" +#~ msgstr "Alternar favorito" -#: modules/pref-feeds.php:478 -msgid "Multiple Feed Editor" -msgstr "Editor de múltiples fuentes" +#~ msgid "(Un)hide empty categories" +#~ msgstr "Ocultar/Mostrar categorías vacías" -#: modules/pref-feeds.php:842 modules/pref-feeds.php:889 -msgid "All done." -msgstr "Hecho." +#~ msgid "Published articles and generated feeds" +#~ msgstr "Artículos publicados y fuentes generadas" -#: modules/pref-feeds.php:920 -#, php-format -msgid "Subscribed to %s." -msgstr "Suscrito a %s." +#~ msgid "Articles shared by URL" +#~ msgstr "Artículos compartidos mediante URL" -#: modules/pref-feeds.php:923 -#, fuzzy, php-format -msgid "Could not subscribe to %s." -msgstr "Ya está suscrito a %s." +#~ msgid "These feeds have not been updated because of errors:" +#~ msgstr "Estas fuentes no han sido actualizadas debido a los siguientes errores:" -#: modules/pref-feeds.php:926 -#, php-format -msgid "Already subscribed to %s." -msgstr "Ya está suscrito a %s." +#~ msgid "Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings." +#~ msgstr "Esta aplicación requiere Javascript y su navegador no lo soporta. Por favor, revise la configuración de su navegador." -#: modules/pref-feeds.php:949 -msgid "Edit subscription options" -msgstr "Editar las opciones de suscripción" +#~ msgid "Hello," +#~ msgstr "Hola," -#: modules/pref-feeds.php:1033 -msgid "Category editor" -msgstr "Editor de categorías" +#~ msgid "Regular version" +#~ msgstr "Versión estándar" -#: modules/pref-feeds.php:1056 -#, php-format -msgid "Category $%s already exists in the database." -msgstr "La categoría $%s ya existe en la base de datos." +#~ msgid "Home" +#~ msgstr "Página principal" -#: modules/pref-feeds.php:1077 -msgid "Create category" -msgstr "Crear categoría" +#~ msgid "Nothing found (click to reload feed)." +#~ msgstr "No se encontró nada (clic para recargar la fuente)." -#: modules/pref-feeds.php:1130 -msgid "No feed categories defined." -msgstr "No se han definido categorías de fuentes." +#~ msgid "Open regular version" +#~ msgstr "Abrir versión estándar" -#: modules/pref-feeds.php:1160 -msgid "Some feeds have update errors (click for details)" -msgstr "" -"Error al actualizar algunas fuentes (pulse aquí para obtener los detalles)" +#~ msgid "Enable categories" +#~ msgstr "Habilitar categorías" -#: modules/pref-feeds.php:1181 help/3.php:45 help/4.php:22 -msgid "Subscribe to feed" -msgstr "Suscribir a la fuente" +#~ msgid "ON" +#~ msgstr "ON" -#: modules/pref-feeds.php:1184 -#, fuzzy -msgid "Edit feeds" -msgstr "Editar la fuente" +#~ msgid "OFF" +#~ msgstr "OFF" -#: modules/pref-feeds.php:1189 -msgid "Edit categories" -msgstr "Editar categorías" +#~ msgid "Browse categories like folders" +#~ msgstr "Ver categorías como carpetas" -#: modules/pref-feeds.php:1198 -#, fuzzy -msgid "More actions..." -msgstr "Acciones..." +#~ msgid "Show images in posts" +#~ msgstr "Mostrar imágenes en los artículos" -#: modules/pref-feeds.php:1202 -msgid "Manual purge" -msgstr "Purga manual" +#~ msgid "Hide read articles and feeds" +#~ msgstr "Ocultar artículos y fuentes leídos" -#: modules/pref-feeds.php:1206 -msgid "Clear feed data" -msgstr "Limpiar los datos de la fuente" +#~ msgid "Sort feeds by unread count" +#~ msgstr "Ordenar fuentes por número de artículos sin leer" -#: modules/pref-feeds.php:1207 modules/pref-filters.php:324 -msgid "Rescore articles" -msgstr "Reiniciar la puntuación de los artículos" +#~ msgid "Article archive" +#~ msgstr "Archivo de artículos" -#: modules/pref-feeds.php:1296 -msgid "Show last article times" -msgstr "Mostrar el horario de los últimos artículos" +#~ msgid "Example Pane" +#~ msgstr "Panel de ejemplo" -#: modules/pref-feeds.php:1313 modules/pref-feeds.php:1373 -msgid "Last Article" -msgstr "Último artículo" +#~ msgid "Sample value" +#~ msgstr "Valor de muestra" -#: modules/pref-feeds.php:1398 modules/pref-filters.php:487 -#: modules/pref-users.php:467 -msgid "Click to edit" -msgstr "Pulse aquí para editar" +#~ msgid "Set value" +#~ msgstr "Definir valor" -#: modules/pref-feeds.php:1412 -#, php-format -msgid "(linked to %s)" -msgstr "(enlazado a %s)" +#~ msgid "Mark %d displayed article as read?" +#~ msgid_plural "Mark %d displayed articles as read?" +#~ msgstr[0] "¿Marcar %d artículo mostrado como leído?" +#~ msgstr[1] "¿Marcar %d artículos mostrados como leídos?" -#: modules/pref-feeds.php:1439 -msgid "You don't have any subscribed feeds." -msgstr "No está suscrito a ninguna fuente." +#~ msgid "Error: unable to load article." +#~ msgstr "Error: no se pudo cargar el artículo." -#: modules/pref-feeds.php:1441 -msgid "No matching feeds found." -msgstr "No se han encontrado fuentes coincidentes." +#~ msgid "Click to expand article." +#~ msgstr "Hacer clic para expandir el artículo." -#: modules/pref-feeds.php:1447 -msgid "OPML" -msgstr "OPML" +#~ msgid "%d more..." +#~ msgid_plural "%d more..." +#~ msgstr[0] "%d más..." +#~ msgstr[1] "%d más..." -#: modules/pref-feeds.php:1470 -msgid "Import" -msgstr "Importar" +#~ msgid "No unread feeds." +#~ msgstr "No hay fuentes sin leer." -#: modules/pref-feeds.php:1475 -msgid "Export OPML" -msgstr "Exportar OPML" +#~ msgid "Load more..." +#~ msgstr "Cargar más..." -#: modules/pref-feeds.php:1478 -msgid "Firefox Integration" -msgstr "Integración con Firefox" +#~ msgid "Switch to digest..." +#~ msgstr "Modo resumen..." -#: modules/pref-feeds.php:1480 -msgid "" -"This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the " -"link below." -msgstr "" -"Este sitio Tiny tiny RSS puede ser usado como un lector de fuentes de " -"Firefox si pulsa en el enlace de abajo." +#~ msgid "Show tag cloud..." +#~ msgstr "Nube de etiquetas..." -#: modules/pref-feeds.php:1487 -msgid "Click here to register this site as a feed reader." -msgstr "Pulse aquí para registrar este sitio como un lector de fuentes." +#~ msgid "Click to play" +#~ msgstr "Clic para reproducir" -#: modules/pref-feeds.php:1498 -msgid "" -"Published articles are exported as a public RSS feed and can be subscribed " -"by anyone who knows the URL specified below." -msgstr "" -"Los artículos publicados son exportados como una fuente RSS pública a la " -"cual podrá suscribirse cualquiera que conozca la URL especificada a " -"continuación." +#~ msgid "Play" +#~ msgstr "Reproducir" -#: modules/pref-feeds.php:1501 -msgid "Display URL" -msgstr "" +#~ msgid "Visit the website" +#~ msgstr "Visitar el sitio oficial" -#: modules/pref-feeds.php:1604 -#, fuzzy, php-format -msgid "%d archived articles" -msgstr "Favoritos" +#~ msgid "Select theme" +#~ msgstr "Seleccionar tema" -#: modules/pref-feeds.php:1633 -msgid "No feeds found." -msgstr "No se han encontrado fuentes." +#~ msgid "I have scanned the code and would like to enable OTP" +#~ msgstr "He escaneado el código y quiero habilitar las contraseñas de un solo uso" -#: modules/pref-filters.php:23 -msgid "Filter Editor" -msgstr "Editor de filtros" +#~ msgid "Playing..." +#~ msgstr "Reproduciendo..." -#: modules/pref-filters.php:212 -#, php-format -msgid "Saved filter %s" -msgstr "Se ha guardado el filtro %s" +#~ msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" +#~ msgstr "No se puedo cargar el archivo. Puede ser necesario ajustar el parámetro upload_max_filesize en PHP.ini (valor actual = %s)" -#: modules/pref-filters.php:266 -#, php-format -msgid "Created filter %s" -msgstr "Se ha creado el filtro %s" +#~ msgid "Default interval between feed updates" +#~ msgstr "Intervalo por defecto entre actualizaciones de las fuentes" -#: modules/pref-filters.php:315 help/3.php:31 help/4.php:25 -msgid "Create filter" -msgstr "Crear filtro" +#~ msgid "Could not update database" +#~ msgstr "No se pudo actualizar la base de datos" -#: modules/pref-filters.php:318 modules/pref-users.php:376 -msgid "Edit" -msgstr "Editar" +#~ msgid "Could not find necessary schema file, need version:" +#~ msgstr "No se pudo encontrar el fichero de esquema necesario. Versión necesaria:" -#: modules/pref-filters.php:408 -msgid "Field" -msgstr "campo" +#~ msgid ", found: " +#~ msgstr ", encontrado:" -#: modules/pref-filters.php:409 -msgid "Params" -msgstr "Parámetros" +#~ msgid "Tiny Tiny RSS database is up to date." +#~ msgstr "La base de datos de Tiny Tiny RSS está actualizada." -#: modules/pref-filters.php:476 -msgid "(Disabled)" -msgstr "(desactivado)" +#~ msgid "Please backup your database before proceeding." +#~ msgstr "Por favor, haga una copia de seguridad de su base de datos antes de continuar." -#: modules/pref-filters.php:492 -msgid "(Inverse)" -msgstr "(inverso)" +#~ msgid "Your Tiny Tiny RSS database needs update to the latest version (%d to %d)." +#~ msgstr "Su base de datos Tiny Tiny RSS necesita ser actualizada a la última versión (%d to %d)." -#: modules/pref-filters.php:512 -msgid "No filters defined." -msgstr "No se han definido filtros." +#~ msgid "Performing updates..." +#~ msgstr "Actualizando..." -#: modules/pref-filters.php:514 -msgid "No matching filters found." -msgstr "No se han encontrado filtros coincidentes." +#~ msgid "Updating to version %d..." +#~ msgstr "Actualizando a la versión %d..." -#: modules/pref-labels.php:102 -#, php-format -msgid "Created label %s" -msgstr "Se ha creado la etiqueta %s" +#~ msgid "Checking version... " +#~ msgstr "Comprobando la versión..." -#: modules/pref-labels.php:137 help/3.php:30 help/4.php:26 -msgid "Create label" -msgstr "Crear etiqueta" +#~ msgid "OK!" +#~ msgstr "¡TODO CORRECTO!" -#: modules/pref-labels.php:143 -msgid "Clear colors" -msgstr "Limpiar los colores" +#~ msgid "ERROR!" +#~ msgstr "¡ERROR!" -#: modules/pref-labels.php:223 -msgid "Click to change color" -msgstr "Pulse aquí para cambiar el color" +#, fuzzy +#~ msgid "Finished. Performed %d update up to schema version %d." +#~ msgid_plural "Finished. Performed %d updates up to schema version %d." +#~ msgstr[0] "Tarea terminada. Realizada(s) %d actualización(es) a la versión del esquema %d." +#~ msgstr[1] "Tarea terminada. Realizada(s) %d actualización(es) a la versión del esquema %d." -#: modules/pref-labels.php:246 -msgid "No labels defined." -msgstr "No se han definido etiquetas." +#~ msgid "Your database schema is from a newer version of Tiny Tiny RSS." +#~ msgstr "El esquema de su base de datos corresponde a una versión más reciente de Tiny Tiny RSS." -#: modules/pref-labels.php:248 -msgid "No matching labels found." -msgstr "No se han encontrado etiquetas coincidentes." +#~ msgid "Found schema version: %d, required: %d." +#~ msgstr "Versión actual del esquema: %d, requerida: %d." -#: modules/pref-labels.php:306 -msgid "custom color:" -msgstr "color personalizado:" +#~ msgid "Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer version and continue." +#~ msgstr "Imposible actualizar el esquema. Por favor, actualice Tiny Tiny RSS a la última versión y continúe." -#: modules/pref-labels.php:307 -msgid "foreground" -msgstr "primer plano" +#~ msgid "Enable external API" +#~ msgstr "Habilitar API externa" -#: modules/pref-labels.php:308 -msgid "background" -msgstr "fondo" +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Cuando esta opción está habilitada, los titulares en fuentes especiales y marcadores son agrupados por fuentes" -#: modules/pref-prefs.php:37 -msgid "Old password cannot be blank." -msgstr "La antigua contraseña no puede dejarse en blanco." +#~ msgid "Title or Content" +#~ msgstr "Título o contenido" -#: modules/pref-prefs.php:42 -msgid "New password cannot be blank." -msgstr "La nueva contraseña no puede dejarse en blanco." +#~ msgid "Link" +#~ msgstr "Enlace" -#: modules/pref-prefs.php:47 -msgid "Entered passwords do not match." -msgstr "Las contraseñas introducidas no coinciden." +#~ msgid "Content" +#~ msgstr "Contenido" -#: modules/pref-prefs.php:74 -msgid "Password has been changed." -msgstr "La contraseña ha sido cambiada." +#~ msgid "Article Date" +#~ msgstr "Fecha del artículo" -#: modules/pref-prefs.php:76 -msgid "Old password is incorrect." -msgstr "La contraseña antigua es incorrecta." +#~ msgid "Set starred" +#~ msgstr "Marcar como favorito" -#: modules/pref-prefs.php:104 -msgid "The configuration was saved." -msgstr "La configuración ha sido guardada." +#~ msgid "Assign tags" +#~ msgstr "Asignar etiquetas" -#: modules/pref-prefs.php:120 -#, php-format -msgid "Unknown option: %s" -msgstr "Opción desconocida: %s" +#~ msgid "Modify score" +#~ msgstr "Modificar puntuación" -#: modules/pref-prefs.php:131 -msgid "E-mail has been changed." -msgstr "El correo electrónico ha sido cambiado." +#~ 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 "Esta opción es útil cuando está leyendo varios agregadores de tipo \"planeta\" con bases de usuarios parcialmente coincidentes. Cuando está desactivado, fuerza a que los mismos artículos que hayan sido publicados por varias fuentes aparezcan una sola vez." -#: modules/pref-prefs.php:171 -msgid "" -"Your password is at default value, \n" -"\t\t\t\t\t\tplease change it." -msgstr "Su contraseña tiene el valor por defecto. Por favor, modifíquela." +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Sintaxis de fecha parece correcta:" -#: modules/pref-prefs.php:198 -msgid "Personal data" -msgstr "Datos personales" +#~ msgid "Date syntax is incorrect." +#~ msgstr "Sintaxis de fecha es incorrecta." -#: modules/pref-prefs.php:205 -msgid "E-mail" -msgstr "Correo electrónico" +#~ msgid "Notice" +#~ msgstr "Aviso" -#: modules/pref-prefs.php:216 -msgid "Access level" -msgstr "Nivel de acceso" +#~ msgid "Tag Cloud" +#~ msgstr "Nube de etiquetas" -#: modules/pref-prefs.php:229 -msgid "Change e-mail" -msgstr "Cambiar el correo electrónico" +#~ msgid "Mark all visible articles in %s as read?" +#~ msgstr "¿Marcar todos los artículos visibles de %s como leídos?" -#: modules/pref-prefs.php:237 -msgid "Old password" -msgstr "Antigua contraseña" +#~ msgid "Score" +#~ msgstr "Puntuación" -#: modules/pref-prefs.php:244 -msgid "New password" -msgstr "Nueva contraseña" +#~ msgid "New articles available in this feed (click to show)" +#~ msgstr "Nuevos artículos disponibles en esta fuente (clic para mostrar)" -#: modules/pref-prefs.php:252 -msgid "Confirm password" -msgstr "Confirme la nueva contraseña" +#, fuzzy +#~ msgid "Share on identi.ca" +#~ msgstr "Título" -#: modules/pref-prefs.php:268 -msgid "Change password" -msgstr "Cambiar contraseña" +#, fuzzy +#~ msgid "Flattr this article." +#~ msgstr "Marcar el artículo como favorito" -#: modules/pref-prefs.php:323 -msgid "Select theme" -msgstr "Seleccionar plantilla" +#, fuzzy +#~ msgid "Share on Google+" +#~ msgstr "Título" -#: modules/pref-prefs.php:383 modules/pref-prefs.php:388 -msgid "Yes" -msgstr "Sí" +#, fuzzy +#~ msgid "Share on Twitter" +#~ msgstr "Título" -#: modules/pref-prefs.php:385 modules/pref-prefs.php:388 -msgid "No" -msgstr "No" +#, fuzzy +#~ msgid "Show additional preferences" +#~ msgstr "Salir de las preferencias" -#: modules/pref-prefs.php:409 -msgid "Save configuration" -msgstr "Guardar la configuración" +#, fuzzy +#~ msgid "Back to feeds" +#~ msgstr "Volver a la lista de fuentes" -#: modules/pref-prefs.php:412 -msgid "Manage profiles" -msgstr "" +#~ msgid "This will clear your stored authentication information for Twitter. Continue?" +#~ msgstr "Esto borrará la su información de autenticación en Twitter almacenada. ¿Continuar?" -#: modules/pref-prefs.php:415 -msgid "Reset to defaults" -msgstr "Opciones por defecto" +#, fuzzy +#~ msgid "Clearing credentials..." +#~ msgstr "Limpiar los datos de la fuente" -#: modules/pref-users.php:7 -msgid "Your access level is insufficient to open this tab." -msgstr "Su nivel de acceso es insuficiente para abrir esta pestaña." +#~ msgid "Updated" +#~ msgstr "Actualizados" -#: modules/pref-users.php:17 -msgid "User details" -msgstr "Detalles del usuario" +#~ msgid "" +#~ "Your browser doesn't support Javascript, which is required\n" +#~ "\t\t\tfor this application to function properly. Please check your\n" +#~ "\t\t\tbrowser settings." +#~ msgstr "" +#~ "Su navegador no soporta Javascript, que es necesario\n" +#~ "para el funcionamiento correcto de esta aplicación.\n" +#~ "Por favor, revise la configuración de su navegador." -#: modules/pref-users.php:31 -msgid "User not found" -msgstr "Usuario no encontrado" +#~ msgid "Finished: %d articles processed, %d imported, %d feeds created." +#~ msgstr "Finalizado: %d artículos procesados, %d importados, %d fuentes creadas." -#: modules/pref-users.php:50 modules/pref-users.php:428 -msgid "Registered" -msgstr "Registrado" +#~ msgid "Related" +#~ msgstr "Relacionado" -#: modules/pref-users.php:51 -msgid "Last logged in" -msgstr "Última sesión el" +#~ msgid "Notifying %s." +#~ msgstr "Notificando a %s." -#: modules/pref-users.php:58 -msgid "Subscribed feeds count" -msgstr "Contador de fuentes suscritas" +#~ msgid "Yes" +#~ msgstr "Sí" -#: modules/pref-users.php:62 -msgid "Subscribed feeds" -msgstr "Fuentes suscritas" +#~ msgid "No" +#~ msgstr "No" -#: modules/pref-users.php:108 -msgid "User Editor" -msgstr "Editor de usuario" +#~ msgid "Comments?" +#~ msgstr "¿Comentarios?" -#: modules/pref-users.php:145 -msgid "Access level: " -msgstr "Nivel de acceso:" +#~ msgid "News" +#~ msgstr "Noticias" -#: modules/pref-users.php:158 -msgid "Change password to" -msgstr "Cambiar la contraseña a" +#~ msgid "Move between feeds" +#~ msgstr "Moverse entre fuentes" -#: modules/pref-users.php:167 -msgid "E-mail: " -msgstr "Correo electrónico:" +#~ msgid "Move between articles" +#~ msgstr "Moverse entre artículos" -#: modules/pref-users.php:201 -#, php-format -msgid "Changed password of user %s." -msgstr "Se ha cambiado la contraseña del usuario %s." +#~ msgid "Active article actions" +#~ msgstr "Activar acciones de los artículos" -#: modules/pref-users.php:249 -#, php-format -msgid "Added user %s with password %s" -msgstr "" -"Se ha añadido al usuario %s con la contraseña %s" +#~ msgid "Dismiss read articles" +#~ msgstr "Descartar artículos leídos" -#: modules/pref-users.php:256 -#, php-format -msgid "Could not create user %s" -msgstr "No se puede crear el usuario %s" +#~ msgid "Mark articles below/above active one as read" +#~ msgstr "Marcar como leídos los artículos por debajo o por encima de éste" -#: modules/pref-users.php:260 -#, php-format -msgid "User %s already exists." -msgstr "El usuario %s ya existe." +#~ msgid "Other actions" +#~ msgstr "Otras acciones" -#: modules/pref-users.php:280 -#, php-format -msgid "" -"Changed password of user %s\n" -"\t\t\t\t\t to %s" -msgstr "" -"Se ha cambiado la contraseña del usuario %s a %s" +#~ msgid "Display this help dialog" +#~ msgstr "Mostrar este cuadro de ayuda" -#: modules/pref-users.php:284 -#, php-format -msgid "Notifying %s." -msgstr "Notificando a %s." +#~ msgid "Multiple articles actions" +#~ msgstr "Acciones para artículos múltiples" -#: modules/pref-users.php:321 -msgid "[tt-rss] Password change notification" -msgstr "[tt-rss] Notificación de cambio de contraseña" +#~ msgid "Select starred articles" +#~ msgstr "Seleccionar artículos favoritos" -#: modules/pref-users.php:370 help/4.php:27 -msgid "Create user" -msgstr "Crear usuario" +#~ msgid "Feed actions" +#~ msgstr "Acciones para las fuentes" -#: modules/pref-users.php:374 -#, fuzzy -msgid "Details" -msgstr "Diariamente" +#~ msgid "If viewing category, (un)collapse it" +#~ msgstr "Si se está viendo la categoría, (des)pliéguela" -#: modules/pref-users.php:380 -msgid "Reset password" -msgstr "Redefinir contraseña" +#~ msgid "Press any key to close this window." +#~ msgstr "Pulse cualquier tecla para cerrar esta ventana." -#: modules/pref-users.php:426 -msgid "Login" -msgstr "Iniciar sesión" +#~ msgid "My Feeds" +#~ msgstr "Mis fuentes" -#: modules/pref-users.php:427 -msgid "Access Level" -msgstr "Nivel de acceso" +#~ msgid "Other Feeds" +#~ msgstr "Otras fuentes" -#: modules/pref-users.php:429 -msgid "Last login" -msgstr "Última sesión" +#~ msgid "Panel actions" +#~ msgstr "Acciones del panel" -#: modules/pref-users.php:487 -msgid "No users defined." -msgstr "No se han definido usuarios." +#~ msgid "Top 25 feeds" +#~ msgstr "25 primeras fuentes" -#: modules/pref-users.php:489 -msgid "No matching users found." -msgstr "No se han encontrado usuarios coincidentes." +#~ msgid "Edit feed categories" +#~ msgstr "Editar las categorías de fuentes" -#: help/2.php:1 -msgid "Content filtering" -msgstr "Filtrado de contenido" +#~ msgid "Focus search (if present)" +#~ msgstr "Búsqueda enfocada (si está presente)" -#: help/2.php:3 -msgid "" -"Tiny Tiny RSS has support for filtering (or processing) articles. Filtering " -"is done once, when new article is imported to the database from the " -"newsfeed, specified field is matched against regular expression and some " -"action is taken. Regular expression matching is case-insensitive." -msgstr "" -"Tiny tiny RSS soporta el filtrado (o procesamiento) de artículos. El " -"filtrado se realiza una vez, cuando el nuevo artículo se importa a la base " -"de datos desde la fuente de noticias: el campo especificado se compara con " -"alguna expresión regular y se realiza alguna acción. La comparación de " -"expresiones regulares es sensible a mayúsculas y minúsculas." +#~ msgid "Note: not all actions may be available, depending on Tiny Tiny RSS configuration and your access level." +#~ msgstr "Nota: la disponibilidad de las acciones dependerá de la configuración de Tiny Tiny RSS y de su nivel de acceso." -#: help/2.php:5 -msgid "" -"Supported actions are: filter (do not import) article, mark article as read, " -"set starred, assign tag(s), and set score. Filters can be defined globally " -"and for some specific feed." -msgstr "" -"Acciones soportadas: filtrar (no importar) el artículo, marcarlo como leído, " -"fijarlo como favorito, asignarle etiquetas y darle una puntuación. Los " -"filtros pueden ser definidos globalmente o para algunas fuentes concretas." +#~ msgid "Fatal: authentication module %s not found." +#~ msgstr "Error fatal: no se encuentra el módulo de autenticación %s." -#: help/2.php:7 -msgid "" -"Multiple and inverse matching are supported. All matching filters are " -"considered when article is being imported and all actions executed in " -"sequence. Inverse matching reverts matching result, e.g. filter matching " -"XYZZY in title with inverse flag will match all articles, except those " -"containing string XYZZY in title." -msgstr "" -"Se soportan las coincidencias múltiples e inversas. Todos los filtros de " -"coincidencia son tenidos en cuenta cuando el artículo está siendo importado " -"y todas las acciones se ejecutan en secuencia. Las coincidencias inversas " -"invierten los resultados. Por ejemplo, el filtro de coincidencia XYZZY en el " -"título con la marca inversa seleccionada, hará que todos los artículos sean " -"coincidentes salvo los que incluyan XYZZY en el título." - -#: help/2.php:9 -msgid "See also:" -msgstr "Ver también:" - -#: help/3.php:1 help/4.php:1 -msgid "Keyboard Shortcuts" -msgstr "Atajos de teclado" +#~ msgid "Open article in new tab" +#~ msgstr "Abrir artículo en una nueva pestaña" -#: help/3.php:5 -msgid "Navigation" -msgstr "Navegación" +#~ msgid "Right-to-left content" +#~ msgstr "Contenido de derecha a izquierda" -#: help/3.php:8 -msgid "Move between feeds" -msgstr "Mover entre fuentes" +#, fuzzy +#~ msgid "Cache content locally" +#~ msgstr "Guardar las imágenes en la memoria caché local" -#: help/3.php:9 -msgid "Move between articles" -msgstr "Mover entre artículos" +#~ msgid "Loading..." +#~ msgstr "Cargando..." -#: help/3.php:10 -msgid "Show search dialog" -msgstr "Mostrar el diálogo de búsqueda" +#~ msgid "View in a tt-rss tab" +#~ msgstr "Ver en una pestaña de tt-rss" -#: help/3.php:13 -msgid "Active article actions" -msgstr "Activar las acciones de los artículos" +#~ msgid "Magpie" +#~ msgstr "Magpie" -#: help/3.php:16 -msgid "Toggle starred" -msgstr "Alternar favoritos" +#~ msgid "SimplePie" +#~ msgstr "SimplePie" -#: help/3.php:17 -msgid "Toggle published" -msgstr "Alternar publicados" +#~ msgid "using" +#~ msgstr "usando" -#: help/3.php:18 -msgid "Toggle unread" -msgstr "Alternar no leídos" +#~ msgid "OAuth will be used automatically for Twitter feeds." +#~ msgstr "Se utilizará automáticamente OAuth para canales de Twitter." -#: help/3.php:19 -msgid "Edit tags" -msgstr "Editar etiquetas" +#~ msgid "match on" +#~ msgstr "coincidencia con" -#: help/3.php:20 -msgid "Open article in new window" -msgstr "Abrir el artículo en una nueva pestaña o ventana" +#~ msgid "Title or content" +#~ msgstr "Título o contenido" -#: help/3.php:21 -msgid "Mark articles below/above active one as read" -msgstr "Marcar como leídos los artículos por debajo o por encima de éste" +#~ msgid "Your request could not be completed." +#~ msgstr "Su petición no pudo completarse." -#: help/3.php:22 -msgid "Scroll article content" -msgstr "Desplazar el contenido del artículo" +#~ msgid "Feed update has been scheduled." +#~ msgstr "Se ha programado la actualización de la fuente." -#: help/3.php:26 help/4.php:30 -msgid "Other actions" -msgstr "Otras acciones" +#~ msgid "Can't update this kind of feed." +#~ msgstr "Este tipo de fuente no puede actualizarse." -#: help/3.php:29 -msgid "Select article under mouse cursor" -msgstr "Seleccionar el artículo que esté detrás del cursor del ratón" +#~ msgid "Original article" +#~ msgstr "Artículo original" -#: help/3.php:32 -msgid "Collapse sidebar" -msgstr "Plegar la barra lateral" +#~ msgid "Update feed" +#~ msgstr "Actualizar fuente" -#: help/3.php:33 -msgid "Toggle category reordering mode" -msgstr "Cambiar a modo de reordenación de categorías" +#, fuzzy +#~ msgid "With subcategories" +#~ msgstr "Con subcategorías" -#: help/3.php:34 help/4.php:34 -msgid "Display this help dialog" -msgstr "Desplegar este diálogo de ayuda" +#, fuzzy +#~ msgid "
  • Adding category %s.
  • " +#~ msgstr "Añadiendo categoría %s." -#: help/3.php:39 -msgid "Feed actions" -msgstr "Acciones de las fuentes" +#, fuzzy +#~ msgid "OK" +#~ msgstr "¡TODO CORRECTO!" -#: help/3.php:42 -msgid "Update active feed" -msgstr "Actualizar las fuentes activas" +#~ msgid "before" +#~ msgstr "antes" -#: help/3.php:43 -msgid "Update all feeds" -msgstr "Actualizar todas las fuentes" +#~ msgid "after" +#~ msgstr "después" -#: help/3.php:46 -msgid "Edit feed" -msgstr "Editar la fuente" +#~ msgid "Check it" +#~ msgstr "Comprobarlo" -#: help/3.php:47 -msgid "Sort by name or unread count" -msgstr "Ordenar por nombre o por el contador de no leídos" +#, fuzzy +#~ msgid "Apply to category" +#~ msgstr "Colocar en la categoría:" -#: help/3.php:48 -msgid "Hide visible read articles" -msgstr "Ocultar los artículos leídos que estén visibles" +#~ msgid "Category $%s already exists in the database." +#~ msgstr "La categoría $%s ya existe en la base de datos." -#: help/3.php:49 -msgid "Mark feed as read" -msgstr "Marcar la fuente como leída" +#~ msgid "No feed categories defined." +#~ msgstr "No se han definido categorías de fuentes." -#: help/3.php:50 #, fuzzy -msgid "Reverse headlines order" -msgstr "Invertir el orden de los titulares (los más antiguos primero)" +#~ msgid "Remove selected categories" +#~ msgstr "¿Eliminar las categorías seleccionadas?" -#: help/3.php:51 -msgid "Mark all feeds as read" -msgstr "Marcar todas las fuentes como leídas" +#, fuzzy +#~ msgid "Twitter" +#~ msgstr "Título" -#: help/3.php:52 -msgid "If viewing category, (un)collapse it" -msgstr "si se está viendo la categoría, (des)pliéguela" +#~ msgid "Created filter %s" +#~ msgstr "Se ha creado el filtro %s" -#: help/3.php:55 help/4.php:5 -msgid "Go to..." -msgstr "Ir a..." +#~ msgid "Attachment:" +#~ msgstr "Adjunto:" -#: help/3.php:62 -msgid "Tag cloud" -msgstr "Nube de etiquetas" +#~ msgid "Subscribing to feed..." +#~ msgstr "Suscribiéndose a la fuente..." -#: help/3.php:69 help/4.php:41 -msgid "Press any key to close this window." -msgstr "Pulse cualquier tecla para cerrar esta ventana." +#, fuzzy +#~ msgid "Feed Categories" +#~ msgstr "Volver a categorizar" -#: help/4.php:9 -msgid "My Feeds" -msgstr "Mis fuentes" +#~ msgid "When \"Mark as read\" button is clicked in toolbar, automatically open next feed with unread articles." +#~ msgstr "Cuando se pulse el botón \"Marcar como leído\" de la barra de herramientas, abrir automáticamente la siguiente fuente que tenga artículos sin leer." -#: help/4.php:10 -msgid "Other Feeds" -msgstr "Otras fuentes" +#, fuzzy +#~ msgid "Importing using DOMXML." +#~ msgstr "Importando OPML (usando la extensión DOMXML)..." -#: help/4.php:19 -msgid "Panel actions" -msgstr "Acciones del panel" +#, fuzzy +#~ msgid "Importing using DOMDocument." +#~ msgstr "Importando OPML (usando la extensión DOMDocument)..." -#: help/4.php:23 -msgid "Top 25 feeds" -msgstr "Primeros 25 puestos de las fuentes" +#~ msgid "DOMXML extension is not found. It is required for PHP versions below 5." +#~ msgstr "No se ha encontrado la extensión DOMXML, la cual es necesaria para las versiones de PHP inferiores a la 5." -#: help/4.php:24 -msgid "Edit feed categories" -msgstr "Editar las categorías de fuentes" +#, fuzzy +#~ msgid "Cache images locally (SimplePie only)" +#~ msgstr "Guardar las imágenes en la memoria caché local" -#: help/4.php:33 -msgid "Focus search (if present)" -msgstr "Búsqueda enfocada (si está presente)" +#, fuzzy +#~ msgid "Publish" +#~ msgstr "Publicado" -#: help/4.php:39 -msgid "" -"Note: not all actions may be available, depending on Tiny Tiny RSS " -"configuration and your access level." -msgstr "" -"Nota: la disponibilidad de las acciones dependerá de la " -"configuración de Tiny Tiny RSS y de su nivel de acceso." +#~ msgid "Changed password of user %s." +#~ msgstr "Se ha cambiado la contraseña del usuario %s." -#: mobile/functions.php:59 mobile/functions.php:136 mobile/functions.php:172 -#: mobile/functions.php:199 mobile/functions.php:233 mobile/functions.php:356 -#: mobile/prefs.php:25 -msgid "Home" -msgstr "" +#~ msgid "Content filtering" +#~ msgstr "Filtrado de contenido" -#: mobile/functions.php:392 -msgid "Nothing found (click to reload feed)." -msgstr "" +#~ msgid "Tiny Tiny RSS has support for filtering (or processing) articles. Filtering is done once, when new article is imported to the database from the newsfeed, specified field is matched against regular expression and some action is taken. Regular expression matching is case-insensitive." +#~ msgstr "Tiny tiny RSS soporta el filtrado (o procesamiento) de artículos. El filtrado se realiza una vez, cuando el nuevo artículo se importa a la base de datos desde la fuente de noticias: el campo especificado se compara con alguna expresión regular y se realiza alguna acción. La comparación de expresiones regulares es sensible a mayúsculas y minúsculas." -#: mobile/prefs.php:30 -#, fuzzy -msgid "Enable categories" -msgstr "Habilitar las categorías de fuentes" +#~ msgid "Supported actions are: filter (do not import) article, mark article as read, set starred, assign tag(s), and set score. Filters can be defined globally and for some specific feed." +#~ msgstr "Acciones soportadas: filtrar (no importar) el artículo, marcarlo como leído, fijarlo como favorito, asignarle etiquetas y darle una puntuación. Los filtros pueden ser definidos globalmente o para algunas fuentes concretas." -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "ON" -msgstr "" +#~ msgid "Multiple and inverse matching are supported. All matching filters are considered when article is being imported and all actions executed in sequence. Inverse matching reverts matching result, e.g. filter matching XYZZY in title with inverse flag will match all articles, except those containing string XYZZY in title." +#~ msgstr "Se soportan las coincidencias múltiples e inversas. Todos los filtros de coincidencia son tenidos en cuenta cuando el artículo está siendo importado y todas las acciones se ejecutan en secuencia. Las coincidencias inversas invierten los resultados. Por ejemplo, el filtro de coincidencia XYZZY en el título con la marca inversa seleccionada, hará que todos los artículos sean coincidentes salvo los que incluyan XYZZY en el título." -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "OFF" -msgstr "" +#~ msgid "See also:" +#~ msgstr "Ver también:" -#: mobile/prefs.php:35 #, fuzzy -msgid "Show images in posts" -msgstr "No mostrar imágenes en los artículos" +#~ msgid "Remove:" +#~ msgstr "Eliminar" -#: mobile/prefs.php:40 #, fuzzy -msgid "Hide read feeds" -msgstr "Ocultar/Mostrar las leídas" +#~ msgid "Assign:" +#~ msgstr "Asignar etiqueta:" + +#~ msgid "Toggle category reordering mode" +#~ msgstr "Cambiar a modo de reordenación de categorías" + +#~ msgid "Sort by name or unread count" +#~ msgstr "Ordenar por nombre o por el contador de no leídos" -#: mobile/prefs.php:45 #, fuzzy -msgid "Sort feeds by unread count" -msgstr "Ordenar las fuentes en función del número de artículos sin leer" +#~ msgid "feeds" +#~ msgstr "Fuentes" -#: functions.js:1315 -msgid "Can't add filter: nothing to match on." -msgstr "No se puede añadir el filtro: no se ha indicado ninguna coincidencia." +#~ msgid "Update post on checksum change" +#~ msgstr "Actualizar el envío cuando cambie la suma de comprobación (\"checksum\")" -#: functions.js:1350 -msgid "Can't subscribe: no feed URL given." -msgstr "Suscripción imposible: no se ha indicado la URL de la fuente." +#~ msgid "Use more accessible date/time format for headlines" +#~ msgstr "Usar el formato de fecha y hora más accesible para los titulares" -#: functions.js:1354 -msgid "Subscribing to feed..." -msgstr "Suscribiéndose a la fuente..." +#~ msgid "Set articles as unread on update" +#~ msgstr "Al actualizar, fijar los artículos como no leídos" -#: functions.js:1377 -#, fuzzy -msgid "Subscribed to %s" -msgstr "Suscrito a las fuentes:" +#~ msgid "Importing OPML (using DOMXML extension)..." +#~ msgstr "Importando OPML (usando la extensión DOMXML)..." -#: functions.js:1386 -#, fuzzy -msgid "Can't subscribe to the specified URL." -msgstr "Suscripción imposible: no se ha indicado la URL de la fuente." +#~ msgid "Importing OPML (using DOMDocument extension)..." +#~ msgstr "Importando OPML (usando la extensión DOMDocument)..." + +#~ msgid "Error: can't find body element." +#~ msgstr "Error: no se puede encontrar el elemento \"body\"." -#: functions.js:1389 #, fuzzy -msgid "You are already subscribed to this feed." -msgstr "No está suscrito a ninguna fuente." +#~ msgid "No profiles selected." +#~ msgstr "No se ha seleccionado ningún artículo." -#: functions.js:1952 -msgid "New articles available in this feed (click to show)" -msgstr "" +#~ msgid "Unknown error" +#~ msgstr "Error desconocido" -#: functions.js:1989 -#, fuzzy -msgid "Subscribed to %d feed(s)." -msgstr "Suscrito a las fuentes:" +#~ msgid "Could not display feed (query failed). Please check label match syntax or local configuration." +#~ msgstr "No se puede mostrar la fuente (consulta fallida). Por favor, compruebe la sintaxis de la coincidencia de etiqueta o la configuración local." -#: functions.js:1999 functions.js:2030 prefs.js:557 prefs.js:587 prefs.js:619 -#: prefs.js:908 prefs.js:928 prefs.js:1795 -msgid "No feeds are selected." -msgstr "No se han seleccionado fuentes." +#~ msgid "Publish article with a note" +#~ msgstr "Publicar el artículo con una nota" -#: functions.js:2014 -msgid "" -"Remove selected feeds from the archive? Feeds with stored articles will not " -"be removed." -msgstr "" +#, fuzzy +#~ msgid "View article" +#~ msgstr "Filtrar artículo" -#: functions.js:2066 #, fuzzy -msgid "Remove stored feed icon?" -msgstr "Eliminar los datos almacenados" +#~ msgid "Server error while trying to query feed URLs." +#~ msgstr "Error mientras se intentaba cargar más titulares" -#: functions.js:2098 #, fuzzy -msgid "Please select an image file to upload." -msgstr "Por favor, seleccione una fuente." +#~ msgid "Subscribed to %d feed(s)." +#~ msgstr "Suscrito a las fuentes:" -#: functions.js:2100 -msgid "Upload new icon for this feed?" -msgstr "" +#~ msgid "audio/mpeg" +#~ msgstr "audio/mpeg" -#: functions.js:2117 -msgid "Please enter label caption:" -msgstr "Por favor, introduzca el título de la etiqueta:" +#~ msgid "Enable offline reading" +#~ msgstr "Activar la lectura fuera de línea" -#: functions.js:2122 -msgid "Can't create label: missing caption." -msgstr "No se puede crear la etiqueta: falta el título." +#~ msgid "Synchronize new articles for offline reading using Google Gears." +#~ msgstr "Sincronizar los nuevos artículos para su lectura fuera de línea usando \"Google Gears\"." -#: functions.js:2162 tt-rss.js:568 -msgid "Unsubscribe from %s?" -msgstr "¿Cancelar la suscripción a %s?" +#~ msgid "Default article limit" +#~ msgstr "Límite de artículos por defecto" -#: offline.js:636 -msgid "Data for offline browsing has not been downloaded yet." -msgstr "Los datos para la navegación sin conexión aún no han sido descargados." +#~ msgid "Default limit for articles to display, any custom number you like (0 - disables)." +#~ msgstr "Límite por defecto de los artículos a mostrar: cualquier número personalizado que quieras (0 = desactivado)." -#: offline.js:677 -msgid "Synchronizing feeds..." -msgstr "Sincronizando fuentes..." +#~ msgid "Enable search toolbar" +#~ msgstr "Habilitar la barra de herramientas de búsqueda" -#: offline.js:696 -msgid "Synchronizing categories..." -msgstr "Sincronizando categorías..." +#~ msgid "Open article links in new browser window" +#~ msgstr "Abrir los enlaces del artículo en una nueva pestaña o ventana del navegador" -#: offline.js:714 -msgid "Synchronizing labels..." -msgstr "Sincronizando etiquetas..." +#~ msgid "Link to user stylesheet to override default style, disabled if empty." +#~ msgstr "Enlace a la hoja de estilo del usuario, la cual sobreescribirá el estilo por defecto (si se deja vació, la función estará desactivada)." -#: offline.js:733 -msgid "Synchronizing articles..." -msgstr "Sincronizando artículos..." +#~ msgid "Hide feedlist" +#~ msgstr "Ocultar la lista de fuentes" -#: offline.js:778 -msgid "Synchronizing articles (%d)..." -msgstr "Sincronizando artículos (%d)..." +#~ msgid "This option hides feedlist and allows it to be toggled on the fly, useful for small screens." +#~ msgstr "Esta opción oculta la lista de fuentes y le permite ser cambiada al vuelo (útil para pequeñas pantallas)." -#: offline.js:806 -msgid "Last sync: %s" -msgstr "Última sincronización: %s" +#~ msgid "Experimental support for virtual feeds based on user crafted SQL queries. This feature is highly experimental and at this point not user friendly. Use with caution." +#~ msgstr "Soporte experimental para las fuentes virtuales basado en las consultas SQL diseñadas por el usuario. Esta característica es experimental y nada amigable para el usuario. Úsela con cautela." -#: offline.js:835 -msgid "Last sync: Error receiving data." -msgstr "Última sincronización: Error al recibir los datos." +#~ msgid "Show additional information in feedlist" +#~ msgstr "Mostrar información adicional en la lista de fuentes" -#: offline.js:888 -msgid "Synchronizing..." -msgstr "Sincronizando..." +#~ msgid "Prefer more accurate feedlist counters to UI speed" +#~ msgstr "Preferir el recuento más preciso de la lista de fuentes a la velocidad de la interfaz de usuario" -#: offline.js:1195 -msgid "Switch Tiny Tiny RSS into offline mode?" -msgstr "¿Poner Tiny Tiny RSS en modo fuera de línea?" +#~ msgid "Enable inline MP3 player" +#~ msgstr "Habilitar el reproductor MP3 en línea" -#: offline.js:1223 -msgid "Tiny Tiny RSS will reload. Go online?" -msgstr "Tiny Tiny RSS volverá a cargarse. ¿Desea ponerlo en línea?" +#~ msgid "Enable the Flash-based XSPF Player to play MP3-format podcast enclosures." +#~ msgstr "Habilitar el reproductor XSPF basado en flash para reproducir los ficheros de sonido MP3." -#: offline.js:1655 -msgid "Last sync: Cancelled." -msgstr "Última sincronización: Cancelada." +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Adaptable" -#: offline.js:1672 -msgid "" -"This will remove all offline data stored by Tiny Tiny RSS on this computer. " -"Continue?" -msgstr "" -"Esto eliminará todos los datos fuera de línea almacenados por Tiny Tiny RSS " -"en esta computadora. ¿Desea continuar?" +#~ msgid "You are running the latest version of Tiny Tiny RSS. The fact that you are seeing this dialog is probably a bug." +#~ msgstr "Usted está ejecutando la última versión de Tiny Tiny RSS. El hecho de que usted esté viendo este diálogo es probablemente un error." -#: offline.js:1743 -msgid "" -"Tiny Tiny RSS has trouble accessing its server. Would you like to go offline?" -msgstr "" -"Tiny Tiny RSS tiene problemas para acceder a su servidor. ¿Desea ponerlo en " -"modo fuera de línea?" +#~ msgid "Feed Browser" +#~ msgstr "Navegador de fuentes" -#: prefs.js:233 -msgid "Error: No feed URL given." -msgstr "Error: no se ha indicado la URL de la fuente." +#~ msgid "Update Errors" +#~ msgstr "Errores de actualización" -#: prefs.js:235 -msgid "Error: Invalid feed URL." -msgstr "Error: la URL de la fuente no es válida." +#~ msgid "Show last article times" +#~ msgstr "Mostrar el horario de los últimos artículos" -#: prefs.js:263 -#, fuzzy -msgid "Can't add profile: no name specified." -msgstr "No se puede añadir la categoría: no se ha especificado el nombre." +#~ msgid "Last Article" +#~ msgstr "Último artículo" -#: prefs.js:285 -msgid "Can't add category: no name specified." -msgstr "No se puede añadir la categoría: no se ha especificado el nombre." +#~ msgid "You don't have any subscribed feeds." +#~ msgstr "No está suscrito a ninguna fuente." -#: prefs.js:307 -msgid "Please enter login:" -msgstr "Por favor, introduzca el nombre de usuario:" +#~ msgid "No matching feeds found." +#~ msgstr "No se han encontrado fuentes coincidentes." -#: prefs.js:314 -msgid "Can't create user: no login specified." -msgstr "" -"No se puede crear el usuario: no se ha especificado el nombre de usuario." +#~ msgid "Filter Editor" +#~ msgstr "Editor de filtros" -#: prefs.js:438 -msgid "Remove selected labels?" -msgstr "¿Eliminar las etiquetas seleccionadas?" +#~ msgid "Field" +#~ msgstr "campo" -#: prefs.js:454 -msgid "No labels are selected." -msgstr "No se han seleccionado etiquetas." +#~ msgid "Params" +#~ msgstr "Parámetros" -#: prefs.js:468 -msgid "Remove selected users?" -msgstr "¿Eliminar los usuarios seleccionados?" +#~ msgid "No filters defined." +#~ msgstr "No se han definido filtros." -#: prefs.js:485 prefs.js:798 prefs.js:819 prefs.js:858 -msgid "No users are selected." -msgstr "No se han seleccionado usuarios." +#~ msgid "Click to change color" +#~ msgstr "Pulse aquí para cambiar el color" -#: prefs.js:503 -msgid "Remove selected filters?" -msgstr "¿Eliminar los filtros seleccionados?" +#~ msgid "No labels defined." +#~ msgstr "No se han definido etiquetas." -#: prefs.js:519 prefs.js:888 -msgid "No filters are selected." -msgstr "No se han seleccionado filtros." +#~ msgid "No matching labels found." +#~ msgstr "No se han encontrado etiquetas coincidentes." -#: prefs.js:538 -msgid "Unsubscribe from selected feeds?" -msgstr "¿Cancelar la suscripción a las fuentes seleccionadas?" +#~ msgid "custom color:" +#~ msgstr "color personalizado:" -#: prefs.js:572 -msgid "Please select only one feed." -msgstr "Por favor, seleccione una única fuente." +#~ msgid "Can't add filter: nothing to match on." +#~ msgstr "No se puede añadir el filtro: no se ha indicado ninguna coincidencia." -#: prefs.js:578 -msgid "Erase all non-starred articles in selected feed?" -msgstr "¿Borrar todos los artículos no favoritos de la fuente seleccionada?" +#~ msgid "Can't subscribe: no feed URL given." +#~ msgstr "Suscripción imposible: no se ha indicado la URL de la fuente." -#: prefs.js:600 -msgid "How many days of articles to keep (0 - use default)?" -msgstr "" -"¿Cuántos días desea guardar el artículo? (0 = configuración por defecto)" +#~ msgid "Error: No feed URL given." +#~ msgstr "Error: no se ha indicado la URL de la fuente." -#: prefs.js:632 -msgid "" -"Remove selected profiles? Active and default profiles will not be removed." -msgstr "" +#~ msgid "Error: Invalid feed URL." +#~ msgstr "Error: la URL de la fuente no es válida." -#: prefs.js:648 #, fuzzy -msgid "No profiles selected." -msgstr "No se ha seleccionado ningún artículo." +#~ msgid "Can't add profile: no name specified." +#~ msgstr "No se puede añadir la categoría: no se ha especificado el nombre." -#: prefs.js:660 -msgid "Remove selected categories?" -msgstr "¿Eliminar las categorías seleccionadas?" +#~ msgid "Can't add category: no name specified." +#~ msgstr "No se puede añadir la categoría: no se ha especificado el nombre." -#: prefs.js:678 -msgid "No categories are selected." -msgstr "No se han seleccionado categorías." +#~ msgid "Save current configuration?" +#~ msgstr "¿Guardar la configuración actual?" -#: prefs.js:745 -msgid "Login field cannot be blank." -msgstr "El campo de nombre de usuario no puede dejarse en blanco." +#~ msgid "Please enter new label foreground color:" +#~ msgstr "Por favor, introduzca un nuevo color de primer plano para la etiqueta:" -#: prefs.js:803 prefs.js:824 prefs.js:863 -msgid "Please select only one user." -msgstr "Por favor, seleccione un único usuario." +#~ msgid "Please enter new label background color:" +#~ msgstr "Por favor, introduzca un nuevo color de fondo para la etiqueta:" -#: prefs.js:828 -msgid "Reset password of selected user?" -msgstr "¿Reajustar la contraseña del usuario seleccionado?" +#~ msgid "Saved filter %s" +#~ msgstr "Se ha guardado el filtro %s" -#: prefs.js:893 -msgid "Please select only one filter." -msgstr "Por favor, seleccione un único filtro." +#~ msgid "Tags" +#~ msgstr "Etiquetas" -#: prefs.js:969 -msgid "No OPML file to upload." -msgstr "No hay fichero OPML que subir." +#~ msgid "Show article summary in new window" +#~ msgstr "Mostrar el sumario del artículo en una nueva pestaña o ventana" -#: prefs.js:1229 -msgid "Reset to defaults?" -msgstr "¿Reajustar a las opciones por defecto?" +#~ msgid "toggle unread" +#~ msgstr "cambiar a sin leer" -#: prefs.js:1641 -msgid "Replace current publishing address with a new one?" -msgstr "¿Reemplazar la actual dirección de publicación por una nueva?" +#~ msgid "(remove)" +#~ msgstr "(eliminar)" -#: prefs.js:1678 -msgid "Save current configuration?" -msgstr "¿Guardar la configuración actual?" +#~ msgid "Offline reading" +#~ msgstr "Lectura fuera de línea" -#: prefs.js:1779 -msgid "Rescore articles in selected feeds?" -msgstr "" -"¿Reiniciar la puntuación de los artículos de las fuentes seleccionadas?" +#~ msgid "Cancel synchronization" +#~ msgstr "Cancelar la sincronización" -#: prefs.js:1802 -msgid "Rescore all articles? This operation may take a lot of time." -msgstr "" -"¿Reiniciar la puntuación de todos los artículos? Esta operación puede tomar " -"algo de tiempo." +#~ msgid "Synchronize" +#~ msgstr "Sincronizar" -#: prefs.js:1821 -msgid "Remove filter %s?" -msgstr "¿Eliminar el filtro %s?" +#~ msgid "Remove stored data" +#~ msgstr "Eliminar los datos almacenados" -#: prefs.js:1882 -msgid "Save changes to selected feeds?" -msgstr "¿Guardar los cambios de las fuentes seleccionadas?" +#~ msgid "Go offline" +#~ msgstr "Poner fuera de línea" -#: prefs.js:1962 -msgid "Reset label colors to default?" -msgstr "¿Reajustar los colores de la etiqueta a las opciones por defecto?" +#~ msgid "Go online" +#~ msgstr "Poner en línea" -#: prefs.js:1987 -msgid "Please enter new label foreground color:" -msgstr "Por favor, introduzca un nuevo color de primer plano para la etiqueta:" +#~ msgid "Reset UI layout" +#~ msgstr "Reajustar la interfaz" -#: prefs.js:1989 -msgid "Please enter new label background color:" -msgstr "Por favor, introduzca un nuevo color de fondo para la etiqueta:" +#~ msgid "Drag me to resize panels" +#~ msgstr "Arrástrame para redimensionar los paneles" + +#~ msgid "Showing most popular tags " +#~ msgstr "Etiquetas más populares" -#: prefs.js:2121 #, fuzzy -msgid "Activate selected profile?" -msgstr "¿Eliminar los filtros seleccionados?" +#~ msgid "more tags" +#~ msgstr "sin etiquetas" -#: prefs.js:2137 -msgid "Please choose a profile to activate." -msgstr "" +#~ msgid "Link to feed:" +#~ msgstr "Enlace a la fuente:" -#: tt-rss.js:74 -msgid "display feeds" -msgstr "desplegar fuentes" +#~ msgid "Not linked" +#~ msgstr "No enlazada" -#: tt-rss.js:251 -msgid "Mark all articles as read?" -msgstr "¿Marcar todos los artículos como leídos?" +#~ msgid "(linked to %s)" +#~ msgstr "(enlazado a %s)" -#: tt-rss.js:557 -msgid "You can't unsubscribe from the category." -msgstr "No puede cancelar la suscripción a la categoría." +#~ msgid "E-mail has been changed." +#~ msgstr "El correo electrónico ha sido cambiado." -#: tt-rss.js:562 tt-rss.js:755 tt-rss.js:930 -msgid "Please select some feed first." -msgstr "Por favor, seleccione alguna fuente primero." +#~ msgid "Change e-mail" +#~ msgstr "Cambiar el correo electrónico" -#: tt-rss.js:618 -msgid "Reset category order?" -msgstr "¿Reajustar el orden de la categoría?" +#~ msgid "Please wait..." +#~ msgstr "Por favor, espere..." -#: tt-rss.js:727 tt-rss.js:740 -msgid "Mark all articles in %s as read?" -msgstr "¿Marcar todos los artículos de %s como leídos?" +#~ msgid "Data for offline browsing has not been downloaded yet." +#~ msgstr "Los datos para la navegación sin conexión aún no han sido descargados." -#: tt-rss.js:760 -msgid "You can't edit this kind of feed." -msgstr "No puede editar esta clase de fuente." +#~ msgid "Synchronizing feeds..." +#~ msgstr "Sincronizando fuentes..." -#: tt-rss.js:925 -msgid "You can't rescore this kind of feed." -msgstr "No puede reiniciar la puntuación de esta clase de fuente." +#~ msgid "Synchronizing categories..." +#~ msgstr "Sincronizando categorías..." -#: tt-rss.js:935 -msgid "Rescore articles in %s?" -msgstr "¿Reiniciar la puntuación de los artículos de %s?" +#~ msgid "Synchronizing labels..." +#~ msgstr "Sincronizando etiquetas..." -#: viewfeed.js:528 viewfeed.js:592 -msgid "Star article" -msgstr "Marcar el artículo como favorito" +#~ msgid "Synchronizing articles..." +#~ msgstr "Sincronizando artículos..." -#: viewfeed.js:577 -msgid "Unstar article" -msgstr "Quitar el artículo de los favoritos" +#~ msgid "Synchronizing articles (%d)..." +#~ msgstr "Sincronizando artículos (%d)..." -#: viewfeed.js:585 viewfeed.js:652 -msgid "Please wait..." -msgstr "Por favor, espere..." +#~ msgid "Last sync: %s" +#~ msgstr "Última sincronización: %s" -#: viewfeed.js:648 -msgid "Unpublish article" -msgstr "Anular la publicación del artículo" +#~ msgid "Last sync: Error receiving data." +#~ msgstr "Última sincronización: Error al recibir los datos." -#: viewfeed.js:935 viewfeed.js:971 viewfeed.js:1012 viewfeed.js:1097 -#: viewfeed.js:1141 viewfeed.js:1288 viewfeed.js:1338 viewfeed.js:1394 -msgid "No articles are selected." -msgstr "No se han seleccionado artículos." +#~ msgid "Synchronizing..." +#~ msgstr "Sincronizando..." -#: viewfeed.js:1256 -msgid "Mark all visible articles in %s as read?" -msgstr "¿Marcar todos los artículos visibles de %s como leídos?" +#~ msgid "Switch Tiny Tiny RSS into offline mode?" +#~ msgstr "¿Poner Tiny Tiny RSS en modo fuera de línea?" -#: viewfeed.js:1298 -#, fuzzy -msgid "Delete %d selected articles in %s?" -msgstr "¿Marcar %d artículos seleccionados de %s como leídos?" +#~ msgid "Tiny Tiny RSS will reload. Go online?" +#~ msgstr "Tiny Tiny RSS volverá a cargarse. ¿Desea ponerlo en línea?" -#: viewfeed.js:1300 -#, fuzzy -msgid "Delete %d selected articles?" -msgstr "¿Eliminar de la etiqueta los artículos seleccionados?" +#~ msgid "Last sync: Cancelled." +#~ msgstr "Última sincronización: Cancelada." -#: viewfeed.js:1348 -#, fuzzy -msgid "Archive %d selected articles in %s?" -msgstr "¿Marcar %d artículos seleccionados de %s como leídos?" +#~ msgid "This will remove all offline data stored by Tiny Tiny RSS on this computer. Continue?" +#~ msgstr "Esto eliminará todos los datos fuera de línea almacenados por Tiny Tiny RSS en esta computadora. ¿Desea continuar?" -#: viewfeed.js:1351 -msgid "Move %d archived articles back?" -msgstr "" +#~ msgid "Tiny Tiny RSS has trouble accessing its server. Would you like to go offline?" +#~ msgstr "Tiny Tiny RSS tiene problemas para acceder a su servidor. ¿Desea ponerlo en modo fuera de línea?" -#: viewfeed.js:1401 -msgid "Mark %d selected articles in %s as read?" -msgstr "¿Marcar %d artículos seleccionados de %s como leídos?" +#~ msgid "Reset category order?" +#~ msgstr "¿Reajustar el orden de la categoría?" -#: viewfeed.js:1977 -msgid "No article is selected." -msgstr "No se ha seleccionado ningún artículo." +#~ msgid "No feeds to display." +#~ msgstr "No hay fuentes que mostrar." -#: viewfeed.js:2018 -msgid "No articles found to mark" -msgstr "No se han encontrado artículos que marcar" +#, fuzzy +#~ msgid "Published Articles" +#~ msgstr "Publicados" -#: viewfeed.js:2020 -msgid "Mark %d article(s) as read?" -msgstr "¿Marcar %d artículo(s) como leído(s)?" +#, fuzzy +#~ msgid "Your Published articles feed URL is:" +#~ msgstr "Enlace a la fuente de artículos publicados." -#: viewfeed.js:2255 -msgid "Please enter a note for this article:" -msgstr "Por favor, introduzca una nota para este artículo:" +#~ msgid "Replace current publishing address with a new one?" +#~ msgstr "¿Reemplazar la actual dirección de publicación por una nueva?" -#~ msgid "Adding feed..." -#~ msgstr "Añadiendo fuente..." +#~ msgid "Limit bandwidth usage" +#~ msgstr "Limitar el uso de ancho de banda" -#~ msgid "Adding feed category..." -#~ msgstr "Añadiendo categoría de fuentes..." +#~ msgid "Remove selected users?" +#~ msgstr "¿Eliminar los usuarios seleccionados?" -#, fuzzy -#~ msgid "Adding profile..." +#~ msgid "Adding feed..." #~ msgstr "Añadiendo fuente..." -#~ msgid "Adding user..." -#~ msgstr "Añadiendo usuario..." - #~ msgid "Assign score to article:" #~ msgstr "Puntuar el artículo:" @@ -2618,15 +4573,6 @@ msgstr "Por favor, introduzca una nota para este artículo:" #~ msgid "Changing password..." #~ msgstr "Cambiar contraseña" -#~ msgid "Clearing feed..." -#~ msgstr "Limpiando la fuente..." - -#~ msgid "Clearing selected feed..." -#~ msgstr "Limpiando las fuentes seleccionadas..." - -#~ msgid "comments" -#~ msgstr "comentarios" - #~ msgid "Could not change feed URL." #~ msgstr "No se puede cambiar la URL de la fuente." @@ -2639,84 +4585,29 @@ msgstr "Por favor, introduzca una nota para este artículo:" #~ msgid "Could not update headlines (missing XML object)" #~ msgstr "No se pueden actualizar los titulares (falta el objeto XML)" -#~ msgid "Entire feed" -#~ msgstr "Fuente completa" - -#~ msgid "Error while trying to load more headlines" -#~ msgstr "Error mientras se intentaba cargar más titulares" - #~ msgid "Failed to load article in new window" #~ msgstr "No se puedo cargar el artículo en una nueva pestaña o ventana" #~ msgid "Failed to open window for the article" #~ msgstr "No se pudo abrir una ventana para el artículo" -#, fuzzy -#~ msgid "Feed icon removed." -#~ msgstr "Fuente no encontrada." - -#~ msgid "Loading feed list..." -#~ msgstr "Cargando la lista de la fuente..." - #~ msgid "Local data removed." #~ msgstr "Datos locales eliminados." #~ msgid "Mark as read:" #~ msgstr "Marcar como leído" -#~ msgid "Marking all feeds as read..." -#~ msgstr "Marcando todas las fuentes como leídas..." - #~ msgid "Please wait until operation finishes." #~ msgstr "Por favor, espere hasta que la operación haya terminado." -#~ msgid "Purging selected feed..." -#~ msgstr "Purgando la fuente seleccionada..." - #~ msgid "Remove selected articles from label?" #~ msgstr "¿Eliminar de la etiqueta los artículos seleccionados?" -#~ msgid "Removing feed..." -#~ msgstr "Eliminando la fuente..." - -#~ msgid "Removing filter..." -#~ msgstr "Eliminando el filtro..." - #~ msgid "Removing offline data..." #~ msgstr "Eliminando los datos sin conexión..." -#~ msgid "Removing selected categories..." -#~ msgstr "Eliminando las categorías seleccionadas..." - -#~ msgid "Removing selected filters..." -#~ msgstr "Eliminando los filtros seleccionados..." - -#~ msgid "Removing selected labels..." -#~ msgstr "Eliminando las etiquetas seleccionadas..." - -#, fuzzy -#~ msgid "Removing selected profiles..." -#~ msgstr "Eliminando los filtros seleccionados..." - -#~ msgid "Removing selected users..." -#~ msgstr "Eliminando los usuarios seleccionados..." - #~ msgid "Rescore last 100 articles in selected feeds?" -#~ msgstr "" -#~ "¿Reiniciar la puntuación de los últimos 100 artículos de las fuentes " -#~ "seleccionadas?" - -#~ msgid "Rescoring articles..." -#~ msgstr "Reiniciando la puntuación de los artículos..." - -#~ msgid "Resetting password for selected user..." -#~ msgstr "Reajustando la contraseña del usuario seleccionado..." - -#~ msgid "Saving article tags..." -#~ msgstr "Guardando las etiquetas del artículo..." - -#~ msgid "Saving feed..." -#~ msgstr "Guardando fuente..." +#~ msgstr "¿Reiniciar la puntuación de los últimos 100 artículos de las fuentes seleccionadas?" #~ msgid "Saving feeds..." #~ msgstr "Guardando fuentes..." @@ -2724,36 +4615,14 @@ msgstr "Por favor, introduzca una nota para este artículo:" #~ msgid "Saving filter..." #~ msgstr "Guardando filtro..." -#~ msgid "Saving user..." -#~ msgstr "Guardando usuario..." - -#~ msgid "Selection" -#~ msgstr "Selección" - #~ msgid "Tiny Tiny RSS is in offline mode." #~ msgstr "Tiny Tiny RSS está en modo fuera de línea." -#~ msgid "Trying to change e-mail..." -#~ msgstr "Intentando cambiar el correo electrónico..." - -#~ msgid "" -#~ "You have to synchronize some articles before going into offline mode." -#~ msgstr "" -#~ "Tiene que sincronizar algunos artículos antes de ir al modo fuera de " -#~ "línea." - -#~ msgid "" -#~ "You won't be able to access offline version of Tiny Tiny RSS until you " -#~ "switch it into offline mode again. Go online?" -#~ msgstr "" -#~ "No podrá acceder a la versión fuera de línea de Tiny Tiny RSS hasta que " -#~ "lo haya puesto de nuevo en modo fuera de línea. ¿Ponerlo en línea?" - -#~ msgid "Display original article content" -#~ msgstr "Desplegar el contenido original del artículo" +#~ msgid "You have to synchronize some articles before going into offline mode." +#~ msgstr "Tiene que sincronizar algunos artículos antes de ir al modo fuera de línea." -#~ msgid "All feeds updated." -#~ msgstr "Se han actualizado todas las fuentes." +#~ msgid "You won't be able to access offline version of Tiny Tiny RSS until you switch it into offline mode again. Go online?" +#~ msgstr "No podrá acceder a la versión fuera de línea de Tiny Tiny RSS hasta que lo haya puesto de nuevo en modo fuera de línea. ¿Ponerlo en línea?" #~ msgid "Can't open article: received invalid XML" #~ msgstr "No se puede abrir el artículo: el XML recibido no es válido." @@ -2764,42 +4633,21 @@ msgstr "Por favor, introduzca una nota para este artículo:" #~ msgid "Erase all non-starred articles in %s?" #~ msgstr "¿Borrar todos los artículos no favoritos de %s?" -#~ msgid "Published feed URL changed." -#~ msgstr "La URL de la fuente publicada ha sido cambiada." - -#~ msgid "Trying to change address..." -#~ msgstr "Intentando cambiar la dirección..." - #~ msgid "Trying to change password..." #~ msgstr "Intentando cambiar la contraseña..." -#~ msgid "Unsubscribing from selected feeds..." -#~ msgstr "Cancelando la suscripción a las fuentes seleccionadas..." - #~ msgid "You can't clear this type of feed." #~ msgstr "No puede limpiar este tipo de fuente." -#~ msgid "Clear articles" -#~ msgstr "Limpiar los artículos" - #~ msgid "Adding category %s...
    " #~ msgstr "Añadiendo categoría %s...
    " #~ msgid "Done." #~ msgstr "Hecho." -#~ msgid "Visit official site" -#~ msgstr "Visitar el sitio oficial" - -#~ msgid "Close" -#~ msgstr "Cerrar" - #~ msgid "The configuration was reset to defaults." #~ msgstr "La configuración ha sido reajustada a las opciones por defecto." -#~ msgid "Themes" -#~ msgstr "Plantillas" - #~ msgid "Change theme" #~ msgstr "Cambiar plantilla" @@ -2811,9 +4659,6 @@ msgstr "Por favor, introduzca una nota para este artículo:" #~ msgid "Remove selected feeds from archive?" #~ msgstr "¿Eliminar de la etiqueta los artículos seleccionados?" -#~ msgid "Search results" -#~ msgstr "Buscar resultados" - #~ msgid "Searched for" #~ msgstr "Resultado de la búsqueda para" @@ -2835,9 +4680,6 @@ msgstr "Por favor, introduzca una nota para este artículo:" #~ msgid "Feed browser is administratively disabled." #~ msgstr "El navegador de fuentes ha sido desactivado por el administrador." -#~ msgid "Top" -#~ msgstr "Arriba" - #~ msgid "Show" #~ msgstr "Mostrar" @@ -2850,36 +4692,18 @@ msgstr "Por favor, introduzca una nota para este artículo:" #~ msgid "(Hidden)" #~ msgstr "(oculto)" -#~ msgid "Recategorize" -#~ msgstr "Volver a categorizar" - -#~ msgid "Other:" -#~ msgstr "Otro:" - #~ msgid "Generate another link" #~ msgstr "Generar un nuevo enlace" -#~ msgid "View feeds" -#~ msgstr "Ver fuentes" - -#~ msgid "View tags" -#~ msgstr "Ver etiquetas" - #~ msgid "Back" #~ msgstr "Volver atrás" #~ msgid "View:" #~ msgstr "Ver:" -#~ msgid "Refresh" -#~ msgstr "Refrescar" - #~ msgid "Page" #~ msgstr "Página" -#~ msgid "Back to feedlist" -#~ msgstr "Volver a la lista de fuentes" - #~ msgid "Tags:" #~ msgstr "Etiquetas" @@ -2889,9 +4713,6 @@ msgstr "Por favor, introduzca una nota para este artículo:" #~ msgid "Where:" #~ msgstr "Dónde:" -#~ msgid "Match on:" -#~ msgstr "Coincidencia en:" - #~ msgid "Internal error: Function not implemented" #~ msgstr "Error interno: funcion no implementada" diff --git a/locale/es_LA/LC_MESSAGES/messages.mo b/locale/es_LA/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000..fcfc55c4bf Binary files /dev/null and b/locale/es_LA/LC_MESSAGES/messages.mo differ diff --git a/locale/es_LA/LC_MESSAGES/messages.po b/locale/es_LA/LC_MESSAGES/messages.po new file mode 100644 index 0000000000..5e46b70388 --- /dev/null +++ b/locale/es_LA/LC_MESSAGES/messages.po @@ -0,0 +1,3737 @@ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"Last-Translator: Brendan \n" +"Language-Team: OpenSRS brendan@tucows.com>\n" +"Language: es_LA\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Creation-Date: 2014-06-02 12:21+0400\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: unknown\n" + +#: backend.php:73 +msgid "Use default" +msgstr "Usar configuración por defecto" + +#: backend.php:74 +msgid "Never purge" +msgstr "Nunca purgar" + +#: backend.php:75 +msgid "1 week old" +msgstr "1 semana de antigüedad" + +#: backend.php:76 +msgid "2 weeks old" +msgstr "2 semanas de antigüedad" + +#: backend.php:77 +msgid "1 month old" +msgstr "1 mes de antigüedad" + +#: backend.php:78 +msgid "2 months old" +msgstr "2 meses de antigüedad" + +#: backend.php:79 +msgid "3 months old" +msgstr "3 meses de antigüedad" + +#: backend.php:82 +msgid "Default interval" +msgstr "Intervalo por defecto" + +#: backend.php:83 +#: backend.php:93 +msgid "Disable updates" +msgstr "Desactivar actualizaciones" + +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" +msgstr "Cada 15 minutos" + +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" +msgstr "Cada 30 minutos" + +#: backend.php:86 +#: backend.php:96 +msgid "Hourly" +msgstr "Cada hora" + +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" +msgstr "Cada 4 horas" + +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" +msgstr "Cada 12 horas" + +#: backend.php:89 +#: backend.php:99 +msgid "Daily" +msgstr "Diariamente" + +#: backend.php:90 +#: backend.php:100 +msgid "Weekly" +msgstr "Semanalmente" + +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 +msgid "User" +msgstr "Usuario" + +#: backend.php:104 +msgid "Power User" +msgstr "Usuario con poder" + +#: backend.php:105 +msgid "Administrator" +msgstr "Administrador" + +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "" + +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "" + +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "La comprobación de validez del Backend ha fallado." + +#: errors.php:17 +msgid "Frontend sanity check failed." +msgstr "La comprobación de validez del Frontend ha fallado." + +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "" + +#: errors.php:21 +msgid "Request not authorized." +msgstr "Petición no autorizada." + +#: errors.php:23 +msgid "No operation to perform." +msgstr "Ninguna operación a realizar." + +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "" + +#: errors.php:27 +msgid "Denied. Your access level is insufficient to access this page." +msgstr "" + +#: errors.php:29 +msgid "Configuration check failed" +msgstr "La comprobación de la configuración ha fallado." + +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "" + +#: errors.php:35 +msgid "SQL escaping test failed, check your database and PHP configuration" +msgstr "" + +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "Fuente no encontrada." + +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "Usuario no encontrado" + +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "Cargando. Por favor, espere..." + +#: index.php:167 +msgid "Collapse feedlist" +msgstr "Cerrar la lista de fuentes" + +#: index.php:170 +msgid "Show articles" +msgstr "Mostrar artículos" + +#: index.php:173 +msgid "Adaptive" +msgstr "Adaptable" + +#: index.php:174 +msgid "All Articles" +msgstr "Todos" + +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "Favoritos" + +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "Publicados" + +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 +msgid "Unread" +msgstr "Sin leer" + +#: index.php:178 +msgid "With Note" +msgstr "Con anotación" + +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Ignorar la puntuación" + +#: index.php:182 +msgid "Sort articles" +msgstr "Ordenar artículos" + +#: index.php:185 +msgid "Default" +msgstr "Predeterminado" + +#: index.php:186 +msgid "Newest first" +msgstr "Recientes primero" + +#: index.php:187 +msgid "Oldest first" +msgstr "Antiguos primero" + +#: index.php:188 +msgid "Title" +msgstr "Título" + +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 +msgid "Mark as read" +msgstr "Marcar como leído" + +#: index.php:195 +msgid "Older than one day" +msgstr "Más de un día" + +#: index.php:198 +msgid "Older than one week" +msgstr "Más de una semana" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "Más de dos semanas" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "Problema de comunicación con el servidor." + +#: index.php:223 +msgid "Actions..." +msgstr "Acciones..." + +#: index.php:225 +msgid "Preferences..." +msgstr "Preferencias..." + +#: index.php:226 +msgid "Search..." +msgstr "Buscar..." + +#: index.php:227 +msgid "Feed actions:" +msgstr "Acciones de la fuente:" + +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "Suscribirse a una fuente..." + +#: index.php:229 +msgid "Edit this feed..." +msgstr "Editar esta fuente..." + +#: index.php:230 +msgid "Rescore feed" +msgstr "Reiniciar la puntuación" + +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "Cancelar la suscripción" + +#: index.php:232 +msgid "All feeds:" +msgstr "Todas las fuentes:" + +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Ocultar/mostrar fuentes leídas" + +#: index.php:235 +msgid "Other actions:" +msgstr "Otras acciones:" + +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "Alternar modo de pantalla ancha" + +#: index.php:237 +msgid "Create label..." +msgstr "Crear marcador..." + +#: index.php:238 +msgid "Create filter..." +msgstr "Crear filtro..." + +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "Ayuda para atajos de teclado" + +#: index.php:248 +msgid "Logout" +msgstr "Cerrar sesión" + +#: index.php:254 +msgid "Updates are available from Git." +msgstr "" + +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "Preferencias" + +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "Atajos de teclado" + +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Salir de las preferencias" + +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Fuentes" + +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "Filtros" + +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Marcadores" + +#: prefs.php:133 +msgid "Users" +msgstr "Usuarios" + +#: prefs.php:136 +msgid "System" +msgstr "Sistema" + +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "Crear nueva cuenta" + +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "" + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +#, fuzzy +msgid "Return to Tiny Tiny RSS" +msgstr "Actualizar Tiny Tiny RSS" + +#: register.php:218 +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 "" + +#: register.php:224 +msgid "Desired login:" +msgstr "Nombre de usuario deseado:" + +#: register.php:227 +msgid "Check availability" +msgstr "Comprobar la disponibilidad" + +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "Correo electrónico:" + +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "" + +#: register.php:235 +msgid "Submit registration" +msgstr "Enviar solicitud de registro" + +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "" + +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "" + +#: register.php:287 +msgid "Registration failed." +msgstr "El registro ha fallado." + +#: register.php:334 +msgid "Account created successfully." +msgstr "Cuenta creada correctamente." + +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "" + +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "" + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "Sin clasificar" + +#: include/feedbrowser.php:84 +#, fuzzy, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "Artículos archivados" +msgstr[1] "Artículos archivados" + +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "No se han encontrado fuentes." + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "Navegación" + +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "Abrir la fuente siguiente" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "Abrir la fuente anterior" + +#: include/functions2.php:55 +msgid "Open next article" +msgstr "Abrir el artículo siguiente" + +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "Abrir el artículo anterior" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Mostrar el diálogo de búsqueda" + +#: include/functions2.php:62 +msgid "Article" +msgstr "Artículo" + +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "Alternar favoritos" + +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "Alternar publicados" + +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "Alternar sin leer" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Editar etiquetas" + +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "Desechar la selección" + +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "Desechar leídos" + +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "Abrir en nueva ventana" + +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "Marcar artículos posteriores como leídos" + +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "Marcar artículos anteriores como leídos" + +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "Desplazarse hacia abajo" + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "Desplazarse hacia arriba" + +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "Seleccionar el artículo bajo el puntero del mouse" + +#: include/functions2.php:75 +msgid "Email article" +msgstr "Enviar artículo por correo electrónico" + +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "Cerrar/plegar artículo" + +#: include/functions2.php:77 +#, fuzzy +msgid "Toggle article expansion (combined mode)" +msgstr "Alternar modo combinado" + +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "Alternar incrustación del artículo original" + +#: include/functions2.php:80 +msgid "Article selection" +msgstr "Selección de artículos" + +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "Seleccionar todos los artículos" + +#: include/functions2.php:82 +msgid "Select unread" +msgstr "Seleccionar artículos sin leer" + +#: include/functions2.php:83 +msgid "Select starred" +msgstr "Seleccionar artículos favoritos" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "Seleccionar artículos publicados" + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "Invertir selección" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "Deseleccionar todo" + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Fuente" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "Actualizar la fuente activa" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "Ocultar/mostrar fuentes leídas" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "Suscribirse a una fuente" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Editar fuente" + +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "Invertir orden de titulares" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "Depurar la actualización de fuentes" + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +#, fuzzy +msgid "Mark all feeds as read" +msgstr "Marcar fuente como leída" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "Desplegar/plegar la categoría" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "Alternar modo combinado" + +#: include/functions2.php:98 +#, fuzzy +msgid "Toggle auto expand in combined mode" +msgstr "Alternar modo combinado" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "Ir a" + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "Todos" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "Reciente" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Nube de etiquetas" + +#: include/functions2.php:106 +msgid "Other" +msgstr "Otro" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "Crear marcador" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "Crear filtro" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "Mostrar/ocultar la barra lateral" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "Mostrar el diálogo de ayuda" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Resultados de búsqueda: %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +#, fuzzy +msgid "comment" +msgid_plural "comments" +msgstr[0] "comentarios" +msgstr[1] "comentarios" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +msgid "comments" +msgstr "comentarios" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "sin etiquetas" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "Original de:" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "URL de la fuente" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "Cerrar esta ventana" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(editar nota)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "tipo desconocido" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "Adjuntos" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "Especial" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Todas las fuentes" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Favoritos" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Publicados" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "Recientes" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "Artículos archivados" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "Leídos recientemente" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "Nombre de usuario:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "Contraseña:" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "Olvidé mi contraseña" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "Perfil:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "Perfil por defecto" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "Usar menos tráfico" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "" + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "Recordarme" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "Iniciar sesión" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "" + +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "" + +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "" + +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "" + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Atajos de teclado" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "Mayúsculas" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Tema de ayuda no encontrado." + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +#, fuzzy +msgid "Share with Tiny Tiny RSS" +msgstr "Actualizar Tiny Tiny RSS" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Título:" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "Contenido:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "Marcadores:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "" + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "Compartir" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "Cancelar" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "No ha iniciado sesión" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Nombre de usuario o contraseña incorrectos" + +#: classes/handler/public.php:666 +#, fuzzy, php-format +msgid "Already subscribed to %s." +msgstr "Se ha suscrito a %s" + +#: classes/handler/public.php:669 +#, fuzzy, php-format +msgid "Subscribed to %s." +msgstr "Se ha suscrito a %s" + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "" + +#: classes/handler/public.php:675 +#, fuzzy, php-format +msgid "No feeds found in %s." +msgstr "No se han encontrado fuentes." + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "Múltiples fuentes encontradas." + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "" + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "Suscribirse a la fuente seleccionada" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Editar las opciones de suscripción" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "Recuperación de contraseña" + +#: classes/handler/public.php:805 +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "" + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "Restablecer contraseña" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "" + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "Volver" + +#: classes/handler/public.php:878 +#, fuzzy +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] Notificación de cambio de contraseña" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "" + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "" + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "Actualizador de la base de datos" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Actualizar" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "Ver como fuente RSS" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "Ver como RSS" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "Última actualización: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "Todos" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Invertir" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Ninguno" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "Más..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Alternar la selección:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Selección:" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "Definir puntuación" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "Archivar" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "Mover a la fuente original" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "Eliminar" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "Enviar por correo electrónico" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Fuente:" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "Fuente no encontrada." + +#: classes/feeds.php:268 +msgid "Never" +msgstr "Nunca" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "Importado en %s" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +msgid "mark feed as read" +msgstr "Marcar fuente como leída" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "Cerrar artículo" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "" + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "" + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "" + +#: classes/feeds.php:778 +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 "" + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "" + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, fuzzy, php-format +msgid "Feeds last updated at %s" +msgstr "Última actualización: %s" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "No se ha seleccionado ninguna fuente." + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "URL de la fuente o del sitio" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "Categoría:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "Fuentes disponibles" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "Autenticación" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "Iniciar sesión" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "Contraseña" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Esta fuente requiere autenticación." + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "Suscribir" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "Más fuentes" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "Buscar" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "Fuentes populares" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "Archivo de fuentes" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "límite:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "Eliminar" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "Buscar" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +msgid "Search syntax" +msgstr "Sintaxis de búsqueda" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "Artículo no encontrado." + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Guardar" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "Utilidad OPML" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "Importando OPML..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "Volver a las preferencias" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "Añadiendo fuente: %s" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "Duplicar fuente: %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "Añadiendo el marcador %s" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "Duplicar marcador: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "Añadiendo filtro..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "Procesando categoría: %s" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "" + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "" + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "" + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Error mientras se analizaba el documento." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "" + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "Registro de errores" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "Actualizar" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "Borrar registro" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Error" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "Nombre de archivo" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Mensaje" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Fecha" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Usuario no encontrado" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "Registrado" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Última sesión el" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "Contador de fuentes suscritas" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Fuentes suscritas" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Nivel de acceso: " + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Opciones" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "" + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] Notificación de cambio de contraseña" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "Seleccionar" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Crear usuario" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "Detalles" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Editar" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Nivel de acceso" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "Última sesión" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Haga clic para editar" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "No se han definido usuarios." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "No se han encontrado usuarios coincidentes." + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Marcar para habilitar el campo" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, fuzzy, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "Editar fuente" +msgstr[1] "Editar fuente" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "Título de la fuente" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "Actualizar" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Purga de artículos:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "" + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "No incluir en fuentes populares" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "Incluir en el correo recopilatorio" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Mostrar siempre imágenes adjuntas" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "No mostrar imágenes" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Guardar las imágenes en la memoria caché local" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +#, fuzzy +msgid "Mark updated articles as unread" +msgstr "Marcar fuente como leída" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "Icono" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "Reemplazar" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "Volver a suscribirse a las actualizaciones push" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "" + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Hecho." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "Fuentes con errores" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "Fuentes inactivas" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "Editar fuentes seleccionadas" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "Reiniciar orden" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "Suscripción en lote" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "Categorías" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "Añadir categoría" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "Eliminar seleccionadas" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "Más acciones..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "Purga manual" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "Limpiar los datos de la fuente" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Reiniciar la puntuación de los artículos" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "" + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "" + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "Importar OPML" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "Nombre de archivo:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "Incluir preferencias" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "Exportar OPML" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "" + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "" + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "URL del archivo OPML público" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "Mostrar la URL del OPML público" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Integración con Firefox" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "" + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "" + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "" + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "Mostrar URL" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "Limpiar todas las URL generadas" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "Haga clic para editar fuente" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "Cancelar la suscripción a las fuentes seleccionadas" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "Las fuentes requieren autenticación." + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "Artículos coincidentes con este filtro:" + +#: classes/pref/filters.php:185 +#, fuzzy +msgid "No recent articles matching this filter have been found." +msgstr "Artículos coincidentes con este filtro:" + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(inverso)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Leyenda" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "Coincidir" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "Añadir" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "Aplicar acciones" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Habilitado" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "Coincidencia con cualquier regla" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "Coincidencia inversa" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "Probar" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "Combinar" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Crear" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "Coincidencia inversa con la expresión regular" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "en el campo" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "en" + +#: classes/pref/filters.php:947 +msgid "Wiki: Filters" +msgstr "Wiki: Filtros" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "Guardar regla" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "Añadir regla" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Realizar la acción" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "con los parámetros:" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "Guardar acción" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "Añadir acción" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[Sin leyenda]" + +#: classes/pref/filters.php:1044 +#, fuzzy, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "Añadir regla" +msgstr[1] "Añadir regla" + +#: classes/pref/filters.php:1059 +#, fuzzy, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "Añadir acción" +msgstr[1] "Añadir acción" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "Colores" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "Primer plano:" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "Fondo:" + +#: classes/pref/labels.php:232 +#, fuzzy, php-format +msgid "Created label %s" +msgstr "Crear marcador" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Limpiar los colores" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "General" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Interfaz" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Avanzadas" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "Correos recopilatorios" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "Permitir artículos duplicados" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Etiquetas añadidas a la lista negra" + +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "" + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "" + +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "" + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "Modo de fuente combinada" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "" + +#: classes/pref/prefs.php:30 +#, fuzzy +msgid "Confirm marking feed as read" +msgstr "Marcar fuente como leída" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "" + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "Intervalo de actualización de fuentes por defecto" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "" + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Mark articles in e-mail digest as read" +msgstr "Incluir en el correo recopilatorio" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "Habilitar correo recopilatorio" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "Usa la zona horaria UTC" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "Habilitar API" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Habilitar categorías de fuentes" + +#: classes/pref/prefs.php:38 +#, fuzzy +msgid "Sort feeds by unread articles count" +msgstr "Purgar artículos sin leer" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "" + +#: classes/pref/prefs.php:40 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "Purgar artículos sin leer" + +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "Formato de fecha largo" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "" + +#: classes/pref/prefs.php:43 +#, fuzzy +msgid "On catchup show next feed" +msgstr "Abrir la fuente siguiente" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "" + +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "Purgar artículos sin leer" + +#: classes/pref/prefs.php:46 +#, fuzzy +msgid "Reverse headline order (oldest first)" +msgstr "Invertir orden de titulares" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "Formato de fecha corto" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "" + +#: classes/pref/prefs.php:51 +#, fuzzy +msgid "Do not embed images in articles" +msgstr "No mostrar imágenes" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "" + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "" + +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "Personalizar hoja de estilo" + +#: classes/pref/prefs.php:53 +#, fuzzy +msgid "Customize CSS stylesheet to your liking" +msgstr "Personalizar hoja de estilo" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "Zona horaria" + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" + +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "Idioma" + +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "Tema" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "La configuración ha sido guardada." + +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "" + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "" + +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "Datos personales / Autenticación" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "Datos personales" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "Nombre completo" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "Correo electrónico" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Nivel de acceso" + +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Guardar datos" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "" + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "" + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Antigua contraseña" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Nueva contraseña" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Confirme la nueva contraseña" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "Cambiar contraseña" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "Contraseñas de un solo uso / Autenticador" + +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "" + +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "Introduzca su contraseña" + +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "Desactivar contraseñas de un solo uso" + +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "" + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "" + +#: classes/pref/prefs.php:403 +#, fuzzy +msgid "Enter the generated one time password" +msgstr "Contraseña de un solo uso incorrecta" + +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "Activar contraseñas de un solo uso" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "" + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "" + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "Personalizar" + +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "Registro" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "Limpiar" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Guardar la configuración" + +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "Guardar preferencias y salir" + +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "Gestionar perfiles" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "Opciones por defecto" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "Plugins" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "" + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "" + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "Plugins de sistema" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "Plugin" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "Descripción" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "Versión" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "Autor" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "más información" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "Borrar datos" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "Plugins de usuario" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "Activar los plugins seleccionados" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "Contraseña de un solo uso incorrecta" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "Contraseña incorrecta" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "" + +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "Crear perfil" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(activo)" + +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "Borrar los perfiles seleccionados" + +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "Activar perfil" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "" + +#: classes/dlg.php:48 +#, fuzzy +msgid "Your Public OPML URL is:" +msgstr "URL del archivo OPML público" + +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "Generar URL nueva" + +#: 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 "" + +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "Última actualización:" + +#: 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 "" + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" + +#: plugins/af_psql_trgm/init.php:112 +#, fuzzy +msgid "Show related articles" +msgstr "Artículos compartidos" + +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +#, fuzzy +msgid "Mark similar articles as read" +msgstr "Marcar artículos anteriores como leídos" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +#, fuzzy +msgid "Global settings" +msgstr "Incluir preferencias" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "Habilitar categorías de fuentes" + +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" + +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" + +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "" + +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "" + +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "Editar nota del artículo" + +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "No se ha cargado ningún archivo." + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "" + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "" + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "" + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "Importar mis ítems favoritos" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[Reenviado]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "Múltiples artículos" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "" + +#: plugins/mailto/init.php:75 +#, fuzzy +msgid "Forward selected article(s) by email." +msgstr "Enviar artículo por correo electrónico" + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "" + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "Cerrar este diálogo" + +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "Importar y exportar" + +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "" + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "Exportar mis datos" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Importar" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "" + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "" + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "Terminado: " + +#: plugins/import_export/init.php:388 +#, fuzzy, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "Editar nota del artículo" +msgstr[1] "Editar nota del artículo" + +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "" +msgstr[1] "" + +#: plugins/import_export/init.php:390 +#, fuzzy, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "No se ha seleccionado ninguna fuente." +msgstr[1] "No se ha seleccionado ninguna fuente." + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "" + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "Preparar datos" + +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "Plugin NSFW" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "Configuración guardada." + +#: plugins/auth_internal/init.php:65 +#, fuzzy +msgid "Please enter your one time password:" +msgstr "Contraseña de un solo uso incorrecta" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "La contraseña ha sido cambiada." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "La contraseña antigua es incorrecta." + +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "Cerrar artículo" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "" + +#: plugins/mail/init.php:34 +#, fuzzy +msgid "Mail plugin" +msgstr "Plugins de usuario" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "" + +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "Para:" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "Asunto:" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "Enviar correo electrónico" + +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "Enlazado" + +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" +msgstr "Instancia" + +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "URL de la instancia" + +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "Clave de acceso:" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "Clave de acceso" + +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "" + +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "Generar nueva clave" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "Enlazar instancia" + +#: 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 "" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "Última sesión" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "Estado" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "Fuentes archivadas" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "Crear enlace" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "Configuración guardada." + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "Comprobar la disponibilidad" + +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "Editar nota del artículo" + +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "Artículos compartidos" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +#, fuzzy +msgid "Statistics" +msgstr "Estado" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "Favoritos" + +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "Borrar datos" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, php-format +msgid "Currently stored as: %s" +msgstr "" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +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 "" + +#: plugins/bookmarklets/init.php:26 +#, fuzzy, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "Se ha suscrito a %s" + +#: plugins/bookmarklets/init.php:31 +#, fuzzy +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Actualizar Tiny Tiny RSS" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "" + +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "Dejar de compartir todos los artículos" + +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "Compartir mediante URL" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "" + +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "Dejar de compartir el artículo" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "" + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "" + +#: js/functions.js:93 +msgid "Close" +msgstr "" + +#: js/functions.js:104 +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "" + +#: js/functions.js:224 +msgid "Click to close" +msgstr "Haga clic para cerrar" + +#: js/functions.js:1051 +msgid "Edit action" +msgstr "Editar acción" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "Crear filtro" + +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "" + +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "Suscripción reiniciada." + +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "¿Cancelar la suscripción a %s?" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "Eliminando la fuente..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "Introduzca el nombre de la categoría:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Intentando cambiar la dirección..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "No se han seleccionado fuentes." + +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "" + +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "Fuentes con errores de actualización" + +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "¿Borrar fuentes seleccionadas?" + +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "Borrando fuentes seleccionadas..." + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "Editar categoría" + +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "Borrar categoría" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "Inverso" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "Por favor, introduzca el nombre de usuario:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "" + +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "Añadiendo usuario..." + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Editor de usuario" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "Guardando datos..." + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "Editar filtro" + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "¿Borrar el filtro?" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "Eliminando el filtro..." + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "¿Borrar los marcadores seleccionados?" + +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "Eliminando los marcadores seleccionados..." + +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "No se han seleccionado marcadores." + +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "" + +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "Eliminando los usuarios seleccionados..." + +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "No se han seleccionado usuarios." + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "¿Eliminar los filtros seleccionados?" + +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "Eliminando los filtros seleccionados..." + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "No se han seleccionado filtros." + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "¿Cancelar la suscripción a las fuentes seleccionadas?" + +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "Cancelando la suscripción a las fuentes seleccionadas..." + +#: js/prefs.js:429 +#, fuzzy +msgid "Please select only one feed." +msgstr "Limpiando las fuentes seleccionadas..." + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "" + +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "Limpiando las fuentes seleccionadas..." + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "" + +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "Purgando la fuente seleccionada..." + +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "" + +#: js/prefs.js:517 +#, fuzzy +msgid "Reset password of selected user?" +msgstr "Restablecer contraseña" + +#: js/prefs.js:520 +#, fuzzy +msgid "Resetting password for selected user..." +msgstr "Eliminando los usuarios seleccionados..." + +#: js/prefs.js:565 +msgid "User details" +msgstr "Detalles del usuario" + +#: js/prefs.js:589 +#, fuzzy +msgid "Please select only one filter." +msgstr "¿Eliminar los filtros seleccionados?" + +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "¿Combinar los filtros seleccionados?" + +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "Uniendo filtros..." + +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "Editar múltiples fuentes" + +#: js/prefs.js:695 +#, fuzzy +msgid "Save changes to selected feeds?" +msgstr "Suscribirse a la fuente seleccionada" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "Importar OPML" + +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "" + +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "Importando. Por favor, espere..." + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "¿Restaurar las opciones por defecto?" + +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "Suscribiéndose a las fuentes..." + +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "" + +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "" + +#: js/tt-rss.js:127 +#, fuzzy +msgid "Mark all articles as read?" +msgstr "Marcar artículos anteriores como leídos" + +#: js/tt-rss.js:133 +#, fuzzy +msgid "Marking all feeds as read..." +msgstr "Marcar fuente como leída" + +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "" + +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "" + +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "" + +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "" + +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "" + +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +#, fuzzy +msgid "Please select some feed first." +msgstr "Limpiando las fuentes seleccionadas..." + +#: js/tt-rss.js:840 +#, fuzzy, perl-format +msgid "Rescore articles in %s?" +msgstr "¿Reiniciar la puntuación de los artículos en %?" + +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "Reiniciando la puntuación de los artículos..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "No se han seleccionado artículos." + +#: js/viewfeed.js:1018 +#, fuzzy, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "¿Reiniciar la puntuación de los artículos en %?" +msgstr[1] "¿Reiniciar la puntuación de los artículos en %?" + +#: js/viewfeed.js:1020 +#, fuzzy, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "¿Activar el perfil seleccionado?" +msgstr[1] "¿Activar el perfil seleccionado?" + +#: js/viewfeed.js:1062 +#, fuzzy, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "Artículos archivados" +msgstr[1] "Artículos archivados" + +#: js/viewfeed.js:1065 +#, fuzzy, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "Artículos archivados" +msgstr[1] "Artículos archivados" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "" + +#: js/viewfeed.js:1112 +#, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "" +msgstr[1] "" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "Editar las etiquetas del artículo" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "Guardando las etiquetas del artículo..." + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +#, fuzzy +msgid "Click to open next unread feed." +msgstr "Haga clic para editar fuente" + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "Abrir artículo original" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Asignar marcador" + +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "Eliminar marcador" + +#: js/viewfeed.js:2159 +msgid "Select articles in group" +msgstr "Seleccionar los artículos del grupo" + +#: js/viewfeed.js:2168 +msgid "Mark group as read" +msgstr "Marcar grupo como leído" + +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "Marcar fuente como leída" + +#: js/viewfeed.js:2235 +#, fuzzy +msgid "Please enter new score for selected articles:" +msgstr "Introduzca el nombre de la categoría:" + +#: js/viewfeed.js:2305 +#, fuzzy +msgid "Please enter new score for this article:" +msgstr "Introduzca el nombre de la categoría:" + +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "URL del artículo:" + +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "" + +#: plugins/af_psql_trgm/init.js:11 +#, fuzzy +msgid "Related articles" +msgstr "Artículos compartidos" + +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "Guardando nota del artículo..." + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Importación de Google Reader" + +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "" + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "Enviar artículo por correo electrónico" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "Exportar datos" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "" +msgstr[1] "" + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Importación de datos" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "" + +#: plugins/shorten_expanded/init.js:37 +msgid "Click to expand article" +msgstr "Desplegar el artículo" + +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" + +#: plugins/mail/mail.js:38 +msgid "Your message has been sent." +msgstr "" + +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "Enlazar instancia" + +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "Editar instancia" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "¿Eliminar instancias seleccionadas?" + +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "Eliminando instancias seleccionadas..." + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "No se han seleccionado instancias." + +#: plugins/instances/instances.js:156 +#, fuzzy +msgid "Please select only one instance." +msgstr "¿Eliminar instancias seleccionadas?" + +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "Limpiar los datos de la fuente" + +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "" + +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "Compartir artículo mediante URL" + +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "" + +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "Intentando cambiar la URL..." + +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "" + +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "Intentando dejar de compartir..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "" + +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "Limpiando URL..." + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "Las URL compartidas han sido borradas." + +#: js/feedlist.js:416 +#: js/feedlist.js:444 +#, fuzzy +msgid "Mark all articles in %s as read?" +msgstr "¿Reiniciar la puntuación de los artículos en %?" + +#: js/feedlist.js:435 +#, fuzzy +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "¿Reiniciar la puntuación de los artículos en %?" + +#: js/feedlist.js:438 +#, fuzzy +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "¿Reiniciar la puntuación de los artículos en %?" + +#: js/feedlist.js:441 +#, fuzzy +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "¿Reiniciar la puntuación de los artículos en %?" + +#: js/functions.js:615 +msgid "Error explained" +msgstr "Error explicado" + +#: js/functions.js:697 +msgid "Upload complete." +msgstr "Carga completa." + +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "¿Borrar el icono de la fuente?" + +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "Borrando el icono de la fuente..." + +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "Icono de la fuente borrado." + +#: js/functions.js:753 +#, fuzzy +msgid "Please select an image file to upload." +msgstr "¿Eliminar los filtros seleccionados?" + +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "" + +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "Cargando. Por favor, espere..." + +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "Por favor, introduzca el nombre del marcador:" + +#: js/functions.js:777 +#, fuzzy +msgid "Can't create label: missing caption." +msgstr "Por favor, introduzca el nombre del marcador:" + +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "Suscribirse a una fuente" + +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "" + +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "Se ha suscrito a %s" + +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "" + +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "" + +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "Expandir para seleccionar fuente" + +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "" + +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "Fallo de validación de XML: %s" + +#: js/functions.js:895 +#, fuzzy +msgid "You are already subscribed to this feed." +msgstr "Se ha suscrito a %s" + +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "Editar regla" + +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "Editar fuente" + +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "Más fuentes" + +#: js/functions.js:1878 +msgid "Help" +msgstr "Ayuda" + +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "" + +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "Eliminando categoría..." + +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "¿Eliminar las categorías seleccionadas?" + +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "Eliminando las categorías seleccionadas..." + +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "No se han seleccionado categorías." + +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "Nombre de la categoría:" + +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "Creando categoría..." + +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "Fuentes sin actualizaciones recientes" + +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "" + +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "Limpiando la fuente..." + +#: js/prefs.js:1323 +#, fuzzy +msgid "Rescore articles in selected feeds?" +msgstr "¿Reiniciar la puntuación de los artículos en %?" + +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "Volviendo a puntuar las fuentes seleccionadas..." + +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "" + +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "Volviendo a puntuar las fuentes..." + +#: js/prefs.js:1366 +#, fuzzy +msgid "Reset selected labels to default colors?" +msgstr "¿Borrar los marcadores seleccionados?" + +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "Perfiles de preferencias" + +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "" + +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "Borrando los perfiles seleccionados..." + +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "No se ha seleccionado ningún perfil." + +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "¿Activar el perfil seleccionado?" + +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "" + +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "Creando perfil..." + +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "" + +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "Las URL generadas han sido borradas." + +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Editor de marcadores" + +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "" + +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "Cancelar búsqueda" + +#: js/viewfeed.js:174 +msgid "New articles found, reload feed to continue." +msgstr "" + +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Quitar el artículo de los favoritos" + +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "Marcar el artículo como favorito" + +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "Cancelar publicación de artículo" + +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Publicar artículo" + +#: js/viewfeed.js:662 +#, fuzzy +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "No se ha seleccionado ningún artículo." +msgstr[1] "No se ha seleccionado ningún artículo." + +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "No se ha seleccionado ningún artículo." + +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "" + +#: js/viewfeed.js:1452 +#, fuzzy +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "Marcar artículos anteriores como leídos" +msgstr[1] "Marcar artículos anteriores como leídos" + +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "Mostrar la URL del artículo" + +#~ msgid "Select by tags..." +#~ msgstr "Seleccionar por etiquetas..." + +#~ msgid "Limit search to:" +#~ msgstr "Limitar la búsqueda a:" + +#~ msgid "This feed" +#~ msgstr "Esta fuente" + +#, fuzzy +#~ msgid "Old password cannot be blank." +#~ msgstr "La contraseña antigua es incorrecta." + +#~ msgid "Match:" +#~ msgstr "Coincidir:" + +#~ msgid "Any" +#~ msgstr "Cualquiera" + +#~ msgid "All tags." +#~ msgstr "Todas las etiquetas." + +#~ msgid "Which Tags?" +#~ msgstr "¿Qué etiquetas?" + +#~ msgid "Display entries" +#~ msgstr "Mostrar artículos" + +#, fuzzy +#~ msgid "Select item(s) by tags" +#~ msgstr "Seleccionar por etiquetas..." + +#~ msgid "Unread First" +#~ msgstr "Sin leer primero" + +#~ msgid "Unknown option: %s" +#~ msgstr "Opción desconocida: %s" + +#, fuzzy +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "¡Nueva versión disponible!" + +#, fuzzy +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "¡Nueva versión disponible!" + +#~ msgid "See the release notes" +#~ msgstr "Ver las notas de la versión" + +#~ msgid "Download" +#~ msgstr "Descargar" + +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Actualizar Tiny Tiny RSS" + +#~ msgid "Force update" +#~ msgstr "Forzar actualización" + +#~ msgid "Ready to update." +#~ msgstr "Listo para actualizar." + +#~ msgid "Start update" +#~ msgstr "Empezar actualización" + +#~ msgid "New version available!" +#~ msgstr "¡Nueva versión disponible!" + +#~ msgid "From:" +#~ msgstr "De:" + +#~ msgid "Select:" +#~ msgstr "Seleccionar:" diff --git a/locale/fi_FI/LC_MESSAGES/messages.mo b/locale/fi_FI/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000..58fbfb8c05 Binary files /dev/null and b/locale/fi_FI/LC_MESSAGES/messages.mo differ diff --git a/locale/fi_FI/LC_MESSAGES/messages.po b/locale/fi_FI/LC_MESSAGES/messages.po new file mode 100644 index 0000000000..469aab6c62 --- /dev/null +++ b/locale/fi_FI/LC_MESSAGES/messages.po @@ -0,0 +1,3829 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Arto Tolonen , 2013. +msgid "" +msgstr "" +"Project-Id-Version: tt-rss 1.7.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2015-06-25 22:05+0300\n" +"Last-Translator: Henrik Ahlgren \n" +"Language-Team: \n" +"Language: fi_FI\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: backend.php:73 +msgid "Use default" +msgstr "Oletus" + +#: backend.php:74 +msgid "Never purge" +msgstr "Älä poista koskaan" + +#: backend.php:75 +msgid "1 week old" +msgstr "Viikkoa vanhemmat" + +#: backend.php:76 +msgid "2 weeks old" +msgstr "2 viikkoa vanhemmat" + +#: backend.php:77 +msgid "1 month old" +msgstr "Kuukautta vanhemmat" + +#: backend.php:78 +msgid "2 months old" +msgstr "2 kuukautta vanhemmat" + +#: backend.php:79 +msgid "3 months old" +msgstr "3 kuukautta vanhemmat" + +#: backend.php:82 +msgid "Default interval" +msgstr "Oletusaikaväli" + +#: backend.php:83 +#: backend.php:93 +msgid "Disable updates" +msgstr "Ei päivitystä" + +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" +msgstr "15 minuutin välein" + +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" +msgstr "30 minuutin välein" + +#: backend.php:86 +#: backend.php:96 +msgid "Hourly" +msgstr "Kerran tunnissa" + +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" +msgstr "4 tunnin välein" + +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" +msgstr "12 tunnin välein" + +#: backend.php:89 +#: backend.php:99 +msgid "Daily" +msgstr "Päivittäin" + +#: backend.php:90 +#: backend.php:100 +msgid "Weekly" +msgstr "Viikoittain" + +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 +msgid "User" +msgstr "Käyttäjä" + +#: backend.php:104 +msgid "Power User" +msgstr "Edistynyt käyttäjä" + +#: backend.php:105 +msgid "Administrator" +msgstr "Ylläpitäjä" + +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "Tämä sovellus edellyttää XmlHttpRequest-toimintoa. Selaimesi ei vaikuta tukevan sitä." + +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "Tämä sovellus edellyttää evästeiden toimivan oikein. Selaimesi ei vaikuta tukevan evästeitä." + +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "" + +#: errors.php:17 +msgid "Frontend sanity check failed." +msgstr "" + +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "" + +#: errors.php:21 +msgid "Request not authorized." +msgstr "" + +#: errors.php:23 +msgid "No operation to perform." +msgstr "" + +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "" + +#: errors.php:27 +msgid "Denied. Your access level is insufficient to access this page." +msgstr "Käyttäjäoikeutesi eivät riitä tämän sivun näyttämiseen." + +#: errors.php:29 +msgid "Configuration check failed" +msgstr "Konfiguraation tarkastus epäonnistui" + +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "MySQL-versiotasi ei tällä hetkellä tueta. Katso lisätietoja viralliselta sivustolta." + +#: errors.php:35 +msgid "SQL escaping test failed, check your database and PHP configuration" +msgstr "" + +#: errors.php:37 +msgid "Method not found" +msgstr "Metodia ei löydy" + +#: errors.php:39 +msgid "Plugin not found" +msgstr "Lisäosaa ei löydy" + +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "Ladataan, odota..." + +#: index.php:167 +msgid "Collapse feedlist" +msgstr "Sulje syöteluettelo" + +#: index.php:170 +msgid "Show articles" +msgstr "Näytä artikkelit" + +#: index.php:173 +msgid "Adaptive" +msgstr "Mukautuva" + +#: index.php:174 +msgid "All Articles" +msgstr "Kaikki artikkelit" + +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "Tähdelliset" + +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "Julkiset" + +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 +msgid "Unread" +msgstr "Lukemattomat" + +#: index.php:178 +msgid "With Note" +msgstr "Huomattavat" + +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Ohita pisteytys" + +#: index.php:182 +msgid "Sort articles" +msgstr "Järjestä artikkelit" + +#: index.php:185 +msgid "Default" +msgstr "Oletus" + +#: index.php:186 +msgid "Newest first" +msgstr "Uusin ensin" + +#: index.php:187 +msgid "Oldest first" +msgstr "Vanhin ensin" + +#: index.php:188 +msgid "Title" +msgstr "Otsikko" + +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 +msgid "Mark as read" +msgstr "Merkitse luetuiksi" + +#: index.php:195 +msgid "Older than one day" +msgstr "1 pv vanhemmat" + +#: index.php:198 +msgid "Older than one week" +msgstr "1 vko vanhemmat" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "2 vko vanhemmat" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "Palvelimeen ei saada yhteyttä" + +#: index.php:223 +msgid "Actions..." +msgstr "Toiminnot..." + +#: index.php:225 +msgid "Preferences..." +msgstr "Asetukset" + +#: index.php:226 +msgid "Search..." +msgstr "Etsi..." + +#: index.php:227 +msgid "Feed actions:" +msgstr "Syötetoiminnot:" + +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "Tilaa syöte..." + +#: index.php:229 +msgid "Edit this feed..." +msgstr "Muokkaa tätä syötettä..." + +#: index.php:230 +msgid "Rescore feed" +msgstr "Uudelleenpisteytä syöte" + +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "Peru tilaus" + +#: index.php:232 +msgid "All feeds:" +msgstr "Kaikki syötteet:" + +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Piilota/näytä luetut syötteet" + +#: index.php:235 +msgid "Other actions:" +msgstr "Muut toiminnot:" + +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "Vaihda näkymä" + +#: index.php:237 +msgid "Create label..." +msgstr "Luo tunniste..." + +#: index.php:238 +msgid "Create filter..." +msgstr "Luo suodatin..." + +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "Näytä pikanäppäimet" + +#: index.php:248 +msgid "Logout" +msgstr "Kirjaudu ulos" + +#: index.php:254 +msgid "Updates are available from Git." +msgstr "Päivityksiä saatavilla Gitistä." + +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "Asetukset" + +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "Pikanäppäimet" + +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Poistu asetuksista" + +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Syötteet" + +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "Suodattimet" + +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Tunnisteet" + +#: prefs.php:133 +msgid "Users" +msgstr "Käyttäjät" + +#: prefs.php:136 +msgid "System" +msgstr "Järjestelmä" + +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "Luo uusi käyttäjätili" + +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "Uusien käyttäjien rekisteröityminen on hallinnollisesti estetty." + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Takaisin Tiny Tiny RSS:ään" + +#: register.php:218 +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 "" + +#: register.php:224 +msgid "Desired login:" +msgstr "Haluttu käyttäjätunnus:" + +#: register.php:227 +msgid "Check availability" +msgstr "Tarkasta saatavuus" + +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "Sähköposti:" + +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "Paljonko on kaksi plus kaksi:" + +#: register.php:235 +msgid "Submit registration" +msgstr "Lähetä rekisteröinti" + +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "Antamasi rekisteröintitiedot ovat epätäydelliset." + +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "Valitettavasti käyttäjätunnus on jo varattu." + +#: register.php:287 +msgid "Registration failed." +msgstr "Rekisteröinti epäonnistui." + +#: register.php:334 +msgid "Account created successfully." +msgstr "Käyttäjätunnus luotu onnistuneesti." + +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "Uusien käyttäjien rekisteröinti on tällä hetkellä suljettu." + +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "Tiny Tiny RSS:n datapäivitysskripti." + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "Luokittelemattomat" + +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d arkistoitu artikkeli" +msgstr[1] "%d arkistoitua artikkelia" + +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "Syötteitä ei löytynyt." + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "Valikko" + +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "Avaa seuraava syöte" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "Avaa edellinen syöte" + +#: include/functions2.php:55 +msgid "Open next article" +msgstr "Avaa seuraava artikkeli" + +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "Avaa edellinen artikkeli" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "Avaa seuraava artikkeli (älä vieritä pitkiä artikkeleita)" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "Avaa edellinen artikkeli (älä vieritä pitkiä artikkeleita)" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "Siirry seuraavaan artikkeliin (älä laajenna tai merkitse luetuksi)" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "Siirry edelliseen artikkeliin (älä laajenna tai merkitse luetuksi)" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Näytä hakudialogi" + +#: include/functions2.php:62 +msgid "Article" +msgstr "Artikkeli" + +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "Lisää/Poista tähti" + +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "Vaihda julkinen-tilaa" + +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "Vaihda luettu/lukematon" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Muokkaa avainsanoja" + +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "Piilota valittu" + +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "Piilota luettu" + +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "Avaa uudessa ikkunassa" + +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "Merkitse alla olevat luetuiksi" + +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "Merkitse yllä olevat luetuiksi" + +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "Vieritä alas" + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "Vieritä ylös" + +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "Valitse osoittimen kohdalla oleva artikkeli" + +#: include/functions2.php:75 +msgid "Email article" +msgstr "Lähetä artikkeli sähköpostilla" + +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "Piilota/näytä artikkeli" + +#: include/functions2.php:77 +#, fuzzy +msgid "Toggle article expansion (combined mode)" +msgstr "Vaihda automaattilaajennuksen tila (yhdistelmänäkymässä)" + +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "Vaihda alkuperäinen liitetty" + +#: include/functions2.php:80 +msgid "Article selection" +msgstr "Artikkelin valinta" + +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "Valitse kaikki artikkelit" + +#: include/functions2.php:82 +msgid "Select unread" +msgstr "Valitse lukemattomat" + +#: include/functions2.php:83 +msgid "Select starred" +msgstr "Valitse tähdellä merkityt" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "Valitse julkaistu" + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "Vaihda valittujen tila" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "Poista valinnat" + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Syöte" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "Päivitä tämänhetkinen syöte" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "Piilota/näytä luetut syötteet" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "Tilaa syöte" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Muokkaa syötettä" + +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "Otsikot käänteisjärjestyksessä" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "Syötepäivityksen vianetsintä" + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "Merkitse kaikki syötteet luetuiksi" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "Piilota/näytä tämänhetkinen kansio" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "Vaihda yhdistelmänäkymän tila" + +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "Vaihda automaattilaajennuksen tila yhdistelmänäkymässä" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "Mene" + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "Kaikki artikkelit" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "Päivitä" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Avainsanapilvi" + +#: include/functions2.php:106 +msgid "Other" +msgstr "Muu" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "Luo tunniste" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "Luo suodatin" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "Piilota/näytä sivupalkki" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "Näytä ohjeikkuna" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Hakutulokset: %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +msgid "comment" +msgid_plural "comments" +msgstr[0] "kommentti" +msgstr[1] "kommenttia" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +#, fuzzy +msgid "comments" +msgstr "Litteet" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "ei avainsanoja" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "Muokkaa tämän artikkelin avainsanoja" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "Syötteen osoite" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "Sulje ikkuna" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(muokkaa muistiinpanoa)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "tuntematon tyyppi" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "Litteet" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "Erikoiset" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Kaikki syötteet" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Tähdelliset artikkelit" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Julkiset artikkelit" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "Tuoreet artikkelit" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "Arkistoidut artikkelit" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "Viimeksi luetut" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "Käyttäjätunnus:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "Salasana:" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "Unohdin salasanani" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "Profiili:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "Oletusprofiili" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "Käytä vähemmän dataliikennettä" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "Ei näytetä kuvia artikkeleissa, vähentää automaattipäivityksiä." + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "Muista kirjautumiseni" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "Kirjaudu sisään" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "Istunnon validointi epäonnistui (virheellinen IP)" + +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "Istunnon validointi epäonnistui (tietokantakaava muuttunut)" + +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "Istunnon validointi epäonnistui (käyttäjää ei löydy)" + +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "Session validointi epäonnistui (salasana vaihtunut)" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "Lisää käyttövinkkejä löydät Tiny Tiny RSS -wikistä." + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Pikanäppäimet" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "Shift" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Aiheesta ei löytynyt ohjeita." + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "Jaa Tiny Tiny RSS:llä" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Otsikko:" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "Sisältö:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "Tunnisteet" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "Jaetut artikkelit näkyvät 'Julkisissa syötteissä'." + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "Jaa" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "Peru" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "Et ole kirjautunut" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Väärä käyttäjätunnus tai salasana" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "Olet jo tilannut syötteen %s." + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "Tilattu syöte %s." + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "Tätä syötettä ei voitu tilata %s." + +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "%s ei sisällä syötteitä." + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "Useita syöteosoitteita löytyi." + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "Syötettä %s ei voitu tilata.
    Osoitetta ei voi ladata." + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "Tilaa valittu syöte" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Muokkaa syötteen asetuksia" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "Salasanan palautus" + +#: classes/handler/public.php:805 +#, fuzzy +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "Syötä tilisi sähköpostiosoite. Uusi salasana lähetetään sinulle sähköpostilla." + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "Palauta salasana" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "Jotkin vaadituista parametreistä puuttuvat tai ovat väärin." + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "Takaisin" + +#: classes/handler/public.php:878 +msgid "[tt-rss] Password reset request" +msgstr "" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "Tätä käyttäjätunnus-sähköposti -yhdistelmää ei valitettavasti löydy." + +# Better this way... +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "Käyttäjäoikeutesi eivät riitä päivitysscriptin suorittamiseen." + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "Tietokannan päivitys" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Suorita päivityksiä" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "Näytä RSS-syötteenä" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "Näytä RSS-syötteenä" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "Päivitetty viimeksi: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "Kaikki" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Käännä" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Ei mikään" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "Lisää..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Vaihda valittujen tila:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Valinta:" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "Pisteytä" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "Arkistoi" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "Siirrä takaisin" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "Poista" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "Lähetä sähköpostilla" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Syöte:" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "Syötettä ei löydy" + +#: classes/feeds.php:268 +#, fuzzy +msgid "Never" +msgstr "Älä poista koskaan" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "Tuotu %s" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +#, fuzzy +msgid "mark feed as read" +msgstr "Merkitse syöte luetuksi" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "Sulje artikkeli" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "Lukemattomia artikkeleita ei ole näytettäväksi" + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "Päivitettyjä artikkeleita ei ole näytettäväksi" + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "Tähdellä merkittyjä artikkeleita ei ole näytettäväksi" + +#: classes/feeds.php:778 +#, fuzzy +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 "Ei näytettäviä artikkeleita. Voit merkitä artikkeleita tunnisteilla käsin (Toiminnot-valikko yläreunassa) tai käytää suodattimia." + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "Ei näytettäviä artikkeleita." + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "Syötteet päivitetty viimeksi %s" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "Osassa syötteistä oli päivitysongelmia (napsauta nähdäksesi lisätietoja)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "Yhtään syötettä ei ole valittuna" + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "Syötteen/sivuston osoite" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "Siirrä kansioon:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "Saatavilla olevat syötteet" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "Tunnistautuminen" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "Käyttäjätunnus" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "Salasana" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Tämä syöte vaatii kirjautumisen" + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "Tilaa" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "Lisää syötteitä" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "Etsi" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "Suositut syötteet" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "Syötearkisto" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "raja:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "Poista" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "Etsi" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +msgid "Search syntax" +msgstr "Haun syntaksi" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "Artikkelia ei löytynyt" + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "Tämän syötteen avainsanat (pilkulla erotettuina)" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Tallenna" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "OPML-työkalu" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "Luetaan OPML-tiedostoa" + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "Palaa asetuksiin" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "Lisätään syöte: %s" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "Syötteen kaksoiskappale: %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "Lisätään tunniste %s" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "Tunnisteen kaksoiskappale: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "Lisätään suodatin..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "Lähettäminen epäonnistui virhekoodilla %d" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +#, fuzzy +msgid "Unable to move uploaded file." +msgstr "Ladatun tiedoston siirtäminen epäonnistui." + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "Virhe: lähetä OPML-tiedosto." + +#: classes/opml.php:499 +#, fuzzy +msgid "Error: unable to find moved OPML file." +msgstr "Virhe: siirretty OPML-tiedosto katosi." + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Virhe tulkitessa dokumenttia." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "Käyttäjäoikeutesi eivät ole riittävät tämän alasivun avaamiseen." + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "Virheloki" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "Päivitä" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "Tyhjennä loki" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Virhe" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "Tiedosto" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Viesti" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Päiväys" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Käyttäjätunnusta ei löydy" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "Rekisteröity" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Viimeksi kirjautunut" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "Tilattujen syötteiden määrä" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Tilatut syötteet" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Käyttäjäoikeudet:" + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Valinnat" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "Käyttäjätunnus %s lisätty salasanalla %s" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "Käyttäjää %s ei voitu luoda" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "Käyttäjätunnus %s on jo olemassa." + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "Käyttäjän %s salasanaksi vaihdettu %s" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "Lähetetään käyttäjän %s uusi salasana osoitteeseen %s" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "Valitse" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Luo käyttäjätunnus" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "Tarkemmat tiedot" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Muokkaa" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Käyttäjäoikeudet" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "Viimeisin kirjautuminen" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Napsauta muokataksesi" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "Käyttäjätunnuksia ei määritelty." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "Hakua vastaavia käyttäjätunnuksia ei löytynyt" + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Valitse aktivoidaksesi kenttä" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, fuzzy, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "Muokkaa syötettä" +msgstr[1] "Muokkaa syötettä" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "Syötteen otsikko" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "Päivitä" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Artikkeleiden siivous" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "Vinkki: sinun on annettava kirjautumistiedot jos syöte vaatii kirjautumisen, paitsi Twitter-syötteet." + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "Piilota suosituista syötteistä" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "Sisällytä sähköpostitiivistelmään" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Näytä aina liitetyt kuvat" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "Älä näytä kuvia" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Tallenna kuvat välimuistiin" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "Merkitse päivitetyt artikkelit lukemattomiksi" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "Suosikkikuvake" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "Vaihda" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "" + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Valmis." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "Virheelliset syötteet" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "Passiiviset syötteet" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "Muokkaa valittuja syötteitä" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "Järjestä oletuksen mukaisesti" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "Tilaa useita" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "Kansiot" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "Lisää kansio" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "Poista valittu" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "Lisää toimintoja..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "Manuaalinen siivous" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "Tyhjennnä syötetiedot" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Uudelleenpisteytä artikkelit" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "OPML:ää käyttäen voit viedä ja tuoda syötteitä, suodattimia, tunnisteita ja Tiny Tiny RSS:n asetuksia." + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "Vain pääasetusprofiili voidaan siirtää OPML:ää käyttäen." + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "Tuo OPML" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "Tiedosto:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "Sisältäen asetukset" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "Vie OMPL" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "OPML:si voidaan julkaista ja kuka vain voi tilata ne käyttäen alla olevaa osoitetta." + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "Julkaistu OPML ei sisällä Tiny Tiny RSS -asetuksiasi, autentikointia vaativia syötteitä tai suosituista syötteistä piilotettuja syötteitä." + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "Julkinen OPML URL" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "Näytä julkaistu OPML URL" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Firefox-integraatio" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "Tiny Tiny RSS -sivustoa voidaan käyttää Firefoxin syötelukijana klikkaamalla alla olevaa linkkiä" + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "Klikkaa tästä rekisteröidäksesi tämän sivuston syötelukijaksi." + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "Julkaistut ja jaetut artikkelit / Luodut syötteet" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "Julkistetut artikkelit näkyvät julkisena RSS-syötteenä ja niitä voi lukea ja tilata jokainen, joka tietää alla annetun osoitteen" + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "Näytä osoite" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "Poista kaikki luodut osoitteet" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "Näihin syötteisiin ei ole tullut uusia artikkeleita 3 kuukauteen (vanhimmat ensin):" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "Napsauta muokataksesi syötettä" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "Lopeta valittujen syötteiden tilaukset" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "Lisää RSS-syötteitä riveittäin (syötteitä ei yritetä tunnistaa)" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "Tilattavat syötteet, yksi syöte riviä kohden" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "Syötteet vaativat kirjautumisen." + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "Suodatinta vastaavat artikkelit:" + +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "Suodatinta vastaavia artikkeleita ei löytynyt. " + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(käänteinen)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Nimi" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "Täsmäys" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "Lisää" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "Suorita toiminnot" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Aktivoitu" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "Täsmää ainakin yhteen säännöistä" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "Käänteinen täsmäys" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "Kokeilu" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "Yhdistä" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Luo" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "Käänteinen täsmäys säännöllisellä lausekkeella" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "kentässä" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "kansiossa" + +#: classes/pref/filters.php:947 +#, fuzzy +msgid "Wiki: Filters" +msgstr "Suodattimet" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "Tallenna sääntö" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "Lisää sääntö" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Suorita toiminto" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "parametrit:" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "Tallenna toiminto" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "Lisää toiminto" + +#: classes/pref/filters.php:1042 +#, fuzzy +msgid "[No caption]" +msgstr "Nimi" + +#: classes/pref/filters.php:1044 +#, fuzzy, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "Lisää sääntö" +msgstr[1] "Lisää sääntö" + +#: classes/pref/filters.php:1059 +#, fuzzy, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "Lisää toiminto" +msgstr[1] "Lisää toiminto" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "Värit" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "Kirjasin:" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "Tausta:" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "Luotiin tunniste %s" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Poista värit" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Yleinen" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Käyttöliittymä" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Lisäasetukset" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "Yhteenveto" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "Salli artikkeleiden kaksoiskappaleet" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Estetyt avainsanat" + +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "Näitä avainsanoja ei liitetä automaattisesti (pilkulla eroteltujen luettelo)." + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "Merkitse syötteet automaattisesti luetuksi" + +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "Artikkelit merkitään automaattisesti luetuiksi kun artikkeliluetteloa vieritetään." + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "Laajenna artikkelit automaattisesti yhdistelmänäkymässä" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "Syötteiden yhdistelmänäkymä" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Näytä artikkeliluettelo laajennettuna erillisten otsikko- ja artikkelinäkymien sijasta" + +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "Varmista syötteen merkitseminen luetuksi" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "Kerralla näytettävien artikkeleiden määrä" + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "Oletusaikaväli" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "Lyhyin aikaväli millä syötettä tarkistetaan riippumatta päivitystavasta" + +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "Merkitse sähköpostitiivistelmänä lähetetyt artikkelit luetuksi" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "Aktivoi sähköpostitiivistelmän lähetys" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Sähköpostiisi lähetetään päivittäin otsikot uusista (lukemattomista) artikkeleista" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "Pyri lähettämään kooste tiettyyn aikaan" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "Käyttää UTC-aikavyöhykettä" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "Aktivoi API" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "Sallii pääsyn ulkoisille ohjelmille APIn kautta" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Käytä syötekansioita" + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "Järjestä syötteet lukemattomien artikkelien määrän perusteella" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Enimmäisikä tuoreille artikkeleille (tunneissa)" + +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "Piilota syötteet joissa ei ole lukemattomia artikkeleita" + +#: classes/pref/prefs.php:41 +#, fuzzy +msgid "Show special feeds when hiding read feeds" +msgstr "Näytä erikoissyötteet kun luetut artikkelit piilotetaan" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "Päiväyksen pitempi muoto" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "Syntaksi on sama kuin PHP:n date()-funktiossa." + +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "Näytä automaattisesti seuraava syöte" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Avaa automaattisesti seuraava lukemattomia artikkeleita sisältävä syöte kun edellinen on merkitty luetuksi" + +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Siivoa artikkelit näin monen päivän päästä (0 - poissa käytöstä)" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "Siivoa lukemattomat artikkelit" + +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "Käänteinen otsikkojärjestys (vanhimmat ensin)" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "Päiväyksen lyhyempi muoto" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "Näytä sisällön esikatselu otsikkoluettelossa" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "Järjestä otsikot syötteen päivämäärän mukaan" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "Kirjaudu SSL-varmenteella" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Napsauta rekisteröidäksesi SSL-varmenne tt-rss:ään " + +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "Älä sisällytä kuvia artikkeleihin" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "Poista vaaralliset koodit artikkeleista" + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Karsi erikoiset HTML-koodit artikkeleita luettaessa." + +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "Muokkaa CSS-tyylitiedostoa" + +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "Muokkaa lukijaa mieleiseksesi CSS-tyylitiedostolla" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "Aikavyöhyke" + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "Ryhmittele otsikot virtuaalisyötteiksi" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "Erikoiset-syötteet, tunnisteet ja kansiot ryhmitellään alkuperäisen syötteen mukaan" + +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "Kieli" + +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "Teema" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "Valitse yksi tarjolla olevista CSS-teemoista" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "Asetukset tallennettiin." + +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "Tietosi tallennettiin." + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "Asetuksesi ovat nyt oletusarvoissaan." + +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "Omat tiedot / Tunnistautuminen" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "Omat tiedot" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "Koko nimi" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "Sähköposti" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Käyttäjäoikeudet" + +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Tallenna tiedot" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "Käytät vieläkin oletussalasanaa, se kannattaa vaihtaa." + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "Salasanan vaihtaminen poistaa kertakäyttösalasanatunnistautumisen käytöstä." + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Vanha salasana" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Uusi salasana" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Vahvista salasana" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "Vaihda salasana" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "Kertakäyttösalasanat" + +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "Kertakäyttösalasanat on käytössä. Anna nykyinen salasana poistaaksesi käytöstä." + +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "Syötä salasanasi" + +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "Poista OTP käytöstä" + +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "Tarvitset yhteensopivan autentikointiohjelman. Salasanan vaihtaminen poistaa kertakäyttösalasanat käytöstä." + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "Skannaa tämä koodi autentikointiohjelmalla" + +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "Syötä luotu kertakäyttösalasana" + +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "Aktivoi kertakäyttösalasana" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "Kertakäyttösalasanojen tuki vaatii PHP GD -funktiot." + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "Jotkut asetukset ovat saatavilla vain oletusprofiilissa." + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "Muokkaa" + +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "Rekisteröi" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "Tyhjennä" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "Palvelimen aika: %s (UTC)" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Tallenna asetukset" + +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "Tallenna ja poistu asetuksista" + +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "Hallitse profiileita" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "Palauta oletusarvot" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "Lisäosat" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "Päivitä sivu aktivoidaksesi lisäosiin tehdyt muutokset." + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "Lataa lisää lisäosia tt-rss.org:n foorumeilta tai wikistä." + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "Järjestelmän lisäosat" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "Lisäosa" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "Kuvaus" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "Versio" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "Tekijä" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "lisätietoja" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "Tyhjennä tiedot" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "Käyttäjän lisäosat" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "Aktivoi valitut lisäosat" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "Väärä kertakäyttösalasana" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "Väärä salasana" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "Kirjoita tähän ne CSS-määrittelyt, jotka korvaavat tämänhetkisen teemasi värejä, fontteja ja sijoittelua. Voit käyttää pohjana tätä tiedostoa." + +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "Luo profiili" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(aktiivinen)" + +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "Poista valitut profiilit" + +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "Aktivoi profiili" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "" + +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "Julkinen OPML URL:isi on:" + +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "Luo uusi 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 "" + +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "Viimeksi päivitetty:" + +#: 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 "" + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "Tämän RSS-syötteen julkinen osoite on:" + +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "Tiedot talletettu (%s, %d)" + +#: plugins/af_psql_trgm/init.php:112 +#, fuzzy +msgid "Show related articles" +msgstr "Tähdelliset artikkelit" + +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +msgid "Mark similar articles as read" +msgstr "Merkitäänkö samankaltaiset artikkelit luetuksi?" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +msgid "Global settings" +msgstr "" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "Käytä syötekansioita" + +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" + +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" + +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "af_comics:n tukemat syötteet" + +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "Seuraavat sarjakuvat ovat tuettuja:" + +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "Muokkaa artikkelin muistiinpanoa" + +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "" + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "" + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "Dokumentin muoto on virheellinen." + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "" + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "Monta artikkelia" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "" + +#: plugins/mailto/init.php:75 +msgid "Forward selected article(s) by email." +msgstr "Lähetä valitut artikkeli(t) sähköpostitse." + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "" + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "Sulje" + +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "Tuonti ja vienti" + +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "" + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "Vie tietoni" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Tuo" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "" + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "" + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "Valmis: " + +#: plugins/import_export/init.php:388 +#, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "" +msgstr[1] "" + +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "" +msgstr[1] "" + +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "" +msgstr[1] "" + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "XML-dokumentin lataus epäonnistui." + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "" + +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "Asetukset tallennettiin." + +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "Syötä kertakäyttösalasanasi:" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "Salasana on vaihdettu." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "Vanha salasana on virheellinen." + +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "Sulje artikkeli" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "Sähköpostiosoite on tallennettu." + +#: plugins/mail/init.php:34 +msgid "Mail plugin" +msgstr "Sähköpostilisäosa" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "Voit listata sähköpostiosoitteita tähän (pilkulla erotettuna):" + +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "Vastaanottaja:" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "Otsikko:" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "Lähetä sähköposti" + +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "Linkitetty" + +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" +msgstr "" + +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "" + +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "" + +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "" + +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "" + +#: 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 "" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "Viimeksi yhteydessä" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "Tila" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "Talletetut syötteet" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "Luo linkki" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "Asetukset tallennettiin." + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "Tarkasta saatavuus" + +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "Muokkaa artikkelin muistiinpanoa" + +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "Jaetut artikkelit" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +#, fuzzy +msgid "Statistics" +msgstr "Tila" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "Tähdelliset artikkelit" + +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "Tyhjennä tiedot" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, fuzzy, php-format +msgid "Currently stored as: %s" +msgstr "Palvelimen aika: %s (UTC)" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "" + +#: 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 "Raahaa allaoleva linkki selaimesi työkaluriville, avaa syöte josta olet kiinnsotunut selaimessasi ja klikkaa linkkiä tilataksesi syötteen." + +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "TIlataanko %s Tiny Tiny RSS:ssä?" + +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Tilaa Tiny Tiny RSS:ssä" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "Käytä tätä kirjanmerkkiä tilataksesi sivuja Tiny Tiny RSS:ää käyttäen" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "Tässä voit perua kaikki osoitteen kautta jaettujen artikkeleiden julkistukset." + +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "Poista kaikkien artikkeleiden jako" + +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "Jaa osoitteella" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "Voit jakaa tämän artikkelin seuraavalla uniikilla osoitteella:" + +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "Poista artikkelin jako" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "Virhe lähetetään konfiguroituun lokikohteeseen." + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "Ilmoita tt-rss.org:lle" + +#: js/functions.js:93 +msgid "Close" +msgstr "Sulje" + +#: js/functions.js:104 +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "Haluatko varmasti ilmoittaa tämän poikkeaman tt-rss.org:lle? Raportti sisältää tietoja web-selaimestaasi ja tt-rss-konfiguraatiosta. IP-osoitteesi talletetaan tietokantaan." + +#: js/functions.js:224 +#, fuzzy +msgid "Click to close" +msgstr "Napsauta muokataksesi" + +#: js/functions.js:1051 +msgid "Edit action" +msgstr "Muokkaa toimintoa" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "Luo suodatin" + +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "" + +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "" + +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "Perutaanko syötteen %s tilaus?" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "Poistetaan syöte..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "Syötä kansion nimi:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Vaihdetaan osoitetta..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "Yhtään syötettä ei ole valittuna." + +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "Poistetaanko valitut syötteet arkistosta? Syötteitä joissa on tallennettuja artikkeleita ei poisteta." + +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "Virheelliset syötteet" + +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "Poistetaanko valitut syötteet?" + +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "Poistetaan valitut syötteet..." + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "Muokkaa kansiota" + +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "Poista kansio" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "Käänteiset valinnat" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "Syötä käyttäjätunnus:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "Uutta käyttäjätunnusta ei voi luoda: käyttäjätunnus puuttuu." + +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "Lisätään käyttäjä" + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Käyttäjätunnusten muokkaus" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "Tallennetaan tiedot..." + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "Muokkaa suodatinta" + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "Poista suodatin?" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "Poistetaan suodatin..." + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "Poistetaanko valitut tunnisteet?" + +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "Poistetaan valitut tunnisteet..." + +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "Yhtään tunnistetta ei ole valittuna" + +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "Poistetaanko valitut käyttäjät? Ylläpitäjän tai sinun tunnustasi ei poisteta." + +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "Poistetaan valitut käyttäjätunnukset..." + +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "Käyttäjätunnuksia ei ole valittu." + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "Poistetaanko valitut suodattimet?" + +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "Poistetaan valitut suodattimet..." + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "Yhtään suodatinta ei ole valittuna." + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "Perutaanko valittujen syötteiden tilaukset?" + +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "Perutaan valittujen syötteiden tilaukset..." + +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "Valitse vain yksi syöte." + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "Haluatko poistaa syötteestä kaikki tähdettömät artikkelit?" + +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "Poistetaan artikkeita..." + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "Montako päivää artikkeleita säilytetään (0 - käytä oletusarvoa)?" + +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "Siivotaan valittua syötettä..." + +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "Valitse ainakin yksi käyttäjätunnus." + +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "Nollaa valittujen käyttäjien salasanat?" + +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "Nollataan valittujen käyttäjien salasanat..." + +#: js/prefs.js:565 +msgid "User details" +msgstr "Käyttäjätiedot" + +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "Valitse vain yksi syöte." + +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "Yhdistetäänkö valitut suodattimet?" + +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "Yhdistetään suodattimet..." + +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "Muokkaa useampaa syötettä" + +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "Tallenna valittujen syötteiden muutokset?" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "" + +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "Valitse ensin OPML-tiedosto." + +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "Importoidaan, odota..." + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "Palautetaanko oletusasetukset?" + +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "Tilataan syötteet..." + +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "Poistetaanko kaikki tämän lisäosan tallentamat tiedot?" + +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "Tyhjätäänkö kaikki viestit virhelokista?" + +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "Merkitäänkö kaikki artikkelit luetuksi?" + +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "Merkitään kaikki syötteet luetuiksi..." + +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "Aktivoi ensin email-lisäosa." + +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "Et voi muokata tämäntyyppistä syötettä." + +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "" + +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "Leveä näyttö ei käytössä yhdistelmätilassa." + +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "" + +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "Valitse syötteet ensin." + +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "Uudelleenpisteytä artikkelit kansiossa %s?" + +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "Uudelleenpisteytetään artikkelit..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "Yhtään artikkelia ei ole valittuna." + +#: js/viewfeed.js:1018 +#, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "Poista %d valittu artikkeli syötteessä %s?" +msgstr[1] "Poista %d valittua artikkelia syötteessä %s?" + +#: js/viewfeed.js:1020 +#, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "Poista %d valittu artikkeli?" +msgstr[1] "Poista %d valittua artikkelia?" + +#: js/viewfeed.js:1062 +#, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "Arkistoi %d valittu artikkeli syötteestä %s?" +msgstr[1] "Arkistoi %d valittua artikkelia syötteestä %s?" + +#: js/viewfeed.js:1065 +#, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "Siirretäänkö %d arkistoitu artikkeli takaisin?" +msgstr[1] "Siirretäänkö %d arkistoitua artikkelia takaisin?" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "" + +#: js/viewfeed.js:1112 +#, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "Merkitäänkö %d valittu artikkeli syötteessä %s luetuksi?" +msgstr[1] "Merkitäänkö %d valittua artikkelia syötteessä %s luetuiksi?" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "Muokkaa artikkelin avainsanoja" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "Tallennetaan artikkelin avainsanat..." + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +msgid "Click to open next unread feed." +msgstr "Napsauta avataksesi seuraavan lukemattoman syötteen." + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "Avaa alkuperäinen artikkeli" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Liitä tunniste" + +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "Poista tunniste" + +#: js/viewfeed.js:2159 +#, fuzzy +msgid "Select articles in group" +msgstr "Valitse osoittimen kohdalla oleva artikkeli" + +#: js/viewfeed.js:2168 +msgid "Mark group as read" +msgstr "Merkitse ryhmä luetuiksi" + +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "Merkitse syöte luetuksi" + +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "Anna uusi pistemäärä valituille artikkeleille:" + +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "Anna uusi pistemäärä tälle artikkelille:" + +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "Artikkelin osoite:" + +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "" + +#: plugins/af_psql_trgm/init.js:11 +msgid "Related articles" +msgstr "Liittyvät artikkelit" + +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "" + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "" + +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "Valitse ensin tiedosto." + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "Lähetä sähköpostilla" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "Vie tiedot" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "" +msgstr[1] "" + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Tuo tiedot" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "Valitse ensin tiedosto." + +#: plugins/shorten_expanded/init.js:37 +msgid "Click to expand article" +msgstr "Napsauta nähdäksesi koko artikkelin." + +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "Virhe lähtettäessä sähköpostia:" + +#: plugins/mail/mail.js:38 +msgid "Your message has been sent." +msgstr "Viestisi lähetettiin." + +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "" + +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "" + +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "" + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "Ei valittuja instansseja." + +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "Valitse vain yksi instanssi." + +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "Tyhjennnä syötetiedot" + +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "" + +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "Jaa artikkeli URL:lla" + +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "Luodaanko uusi jako-URL tälle artikkelille?" + +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "Vaihdetaan osoitetta..." + +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "Poistetaanko tämän artikkelin jakaminen?" + +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "Poistetaan jakaminen..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "Kaikki jaettujen artikkeleiden osoitteet poistetaan. Jatketaanko?" + +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "Poistetaan osoitteita..." + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "Jaetut osoitteet poistettiin." + +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "Merkitäänkö kaikki artikkelit syötteessä %s luetuiksi?" + +#: js/feedlist.js:435 +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "Merkitäänkö kaikki päivää vanhemmat artikkelit syötteessä %s luetuiksi?" + +#: js/feedlist.js:438 +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "Merkitäänkö kaikki viikkoa vanhemmat artikkelit syötteessä %s luetuiksi?" + +#: js/feedlist.js:441 +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "Merkitäänkö kaikki kahta viikkoa vanhemmat artikkelit syötteessä %s luetuiksi?" + +#: js/functions.js:615 +msgid "Error explained" +msgstr "Virheet selitettynä" + +#: js/functions.js:697 +msgid "Upload complete." +msgstr "Lataus valmis." + +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "Poista suosikkikuvake?" + +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "Poistetaan suosikkikuvake..." + +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "Suosikkikuvake poistettu." + +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "Valitse ladattava kuvatiedosto." + +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "Ladataanko uusi suosikkikuvake tälle syötteelle?" + +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "Ladataan, odota..." + +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "Syötä tunnisteen nimi:" + +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "Tunnistetta ei luotu: nimi puuttuu." + +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "Tilaa syöte" + +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "" + +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "Tilattiin syöte %s" + +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "Antamasi osoite on viallinen." + +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "Antamassasi osoitteessa ei ole syötteitä." + +#: js/functions.js:874 +#, fuzzy +msgid "Expand to select feed" +msgstr "Muokkaa valittuja syötteitä" + +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "Osoitteen %s lataaminen epäonnistui" + +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "" + +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "Olet jo tilannut tämän syötteen." + +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "Muokkaa sääntöä" + +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "Muokkaa syötettä" + +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "Lisää syötteitä" + +#: js/functions.js:1878 +msgid "Help" +msgstr "Apua" + +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "" + +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "Poistetaan kansio..." + +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "Haluatko poistaa valitun kansion?" + +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "Poistetaan valitut kansiot..." + +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "Yhtään kansiota ei ole valittuna." + +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "Kansion nimi:" + +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "Luodaan kansio..." + +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "Syötteet joissa ei ole tuoreita artikkeleita" + +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "Korvataanko nykyinen OPML-julkaisuosoite uudella?" + +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "Siivotaan syöte..." + +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "Uudelleenpisteytetäänkö valitun syötteen artikkelit?" + +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "Uudelleenpisteytetään valitut syötteet..." + +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "Uudelleenpisteytetäänkö kaikki artikkelit? Toiminto voi kestää kauan." + +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "Uudelleenpisteytetään syötteet..." + +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "Palautetaanko oletusväri valituille tunnisteille?" + +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "Profiilien asetukset" + +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "Poistetaanko valitut profiilit? Aktiivisia ja oletusprofiilia ei poisteta." + +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "Poistetaan valitut profiilit..." + +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "Yhtään profiilia ei ole valittuna." + +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "Aktivoidaanko valittu profiili?" + +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "Valitse profiili jonka haluat aktivoida." + +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "Luodaan profiili..." + +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "Kaikki luodut syöteosoitteet poistetaan. Jatketaanko?" + +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "Luodut osoitteet poistettiin." + +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Tunnisteiden muokkaus" + +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "Et voi perua tämän kansion tilausta." + +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "Peru haku" + +#: js/viewfeed.js:174 +#, fuzzy +msgid "New articles found, reload feed to continue." +msgstr "Ei näytettäviä artikkeleita." + +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Poista tähti artikkelista" + +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "Merkitse artikkeli tähdellä" + +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "Aseta artikkeli yksityiseksi" + +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Julkista artikkeli" + +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "%d artikkeli valittu" +msgstr[1] "%d artikkelia valittu" + +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "Yhtään artikkelia ei ole valittuna." + +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "Artikkeleita ei ole merkittäväksi" + +#: js/viewfeed.js:1452 +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "Merkitäänkö %d artikkeli luetuksi?" +msgstr[1] "Merkitäänkö %d artikkelia luetuiksi?" + +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "Näytä artikkelin osoite" + +#~ msgid "Select by tags..." +#~ msgstr "Valitse avainsanoilla" + +#~ msgid "Limit search to:" +#~ msgstr "Haun rajaus:" + +#~ msgid "This feed" +#~ msgstr "Tämä syöte" + +#~ msgid "Old password cannot be blank." +#~ msgstr "Vanha salasana ei saa olla tyhjä." + +#~ msgid "New password cannot be blank." +#~ msgstr "Uusi salasana ei saa olla tyhjä." + +#~ msgid "Entered passwords do not match." +#~ msgstr "Syötetyt salasanat eivät täsmää." + +#~ msgid "Function not supported by authentication module." +#~ msgstr "Autentikointimoduli ei tue toimintoa." + +#~ msgid "Match:" +#~ msgstr "Täsmää:" + +#~ msgid "Any" +#~ msgstr "Mikä tahansa" + +#~ msgid "All tags." +#~ msgstr "Kaikki avainsanat" + +#~ msgid "Which Tags?" +#~ msgstr "Mitkä avainsanat?" + +#~ msgid "Display entries" +#~ msgstr "Näytä" + +#~ msgid "Select item(s) by tags" +#~ msgstr "Valitse avainsanojen perusteella" + +#~ msgid "Unread First" +#~ msgstr "Lukemattomat ensin" + +#~ msgid "Unknown option: %s" +#~ msgstr "Tuntematon valinta: %s" + +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "Uusi versio Tiny Tiny RSS:stä saatavilla!" + +#~ msgid "Assign articles to labels automatically" +#~ msgstr "Liitä tunnisteet artikkeleihin automaattisesti" + +#~ msgid "Download" +#~ msgstr "Lataa" + +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Päivitä Tiny Tiny RSS" + +#, fuzzy +#~ msgid "Force update" +#~ msgstr "Aloita päivitys" + +#~ msgid "Start update" +#~ msgstr "Aloita päivitys" + +#~ msgid "New version available!" +#~ msgstr "Uusi versio saatavilla!" + +#~ msgid "Select:" +#~ msgstr "Valitse:" + +#~ msgid "mark as read" +#~ msgstr "merkitse luetuksi" + +#~ msgid "Change password to" +#~ msgstr "Uusi salasana" + +#~ msgid "E-mail: " +#~ msgstr "Sähköposti: " + +#~ msgid "Login field cannot be blank." +#~ msgstr "Käyttäjätunnus ei voi olla tyhjä." + +#~ msgid "Saving user..." +#~ msgstr "Tallennetaan käyttäjä..." + +#~ msgid "Toggle marked" +#~ msgstr "Käännä valitun merkintä" + +#~ msgid "(Un)hide empty categories" +#~ msgstr "Piilota/näytä tyhjät kansiot" + +#~ msgid "Published articles and generated feeds" +#~ msgstr "Julkaistut artikkelit ja luodut syötteet" + +#~ msgid "Articles shared by URL" +#~ msgstr "Osoitteen kautta jaetut artikkelit" + +#~ msgid "These feeds have not been updated because of errors:" +#~ msgstr "Näitä syötteitä ei ole päivitetty virheiden vuoksi:" + +#~ msgid "Hello," +#~ msgstr "Hei," + +#~ msgid "Regular version" +#~ msgstr "Tavallinen versio" + +#~ msgid "Enable categories" +#~ msgstr "Käytä kansioita" + +#~ msgid "Article archive" +#~ msgstr "Artikkeliarkisto" + +#~ msgid "Mark %d displayed article as read?" +#~ msgid_plural "Mark %d displayed articles as read?" +#~ msgstr[0] "Merkitäänkö %d näytetty artikkeli luetuksi?" +#~ msgstr[1] "Merkitäänkö %d näytettyä artikkelia luetuiksi?" + +#~ msgid "Error: unable to load article." +#~ msgstr "Virhe: artikkelia ei voida ladata." + +#~ msgid "%d more..." +#~ msgid_plural "%d more..." +#~ msgstr[0] "%d lisää..." +#~ msgstr[1] "%d lisää..." + +#~ msgid "No unread feeds." +#~ msgstr "Ei lukemattomia syötteitä." + +#~ msgid "Load more..." +#~ msgstr "Lataa lisää..." + +#~ msgid "Switch to digest..." +#~ msgstr "Vaihda tiivistelmään..." + +#~ msgid "Show tag cloud..." +#~ msgstr "Näytä avainsanapilvi..." + +#~ msgid "Select theme" +#~ msgstr "Valitse teema" + +#~ msgid "Default interval between feed updates" +#~ msgstr "Oletusaikaväli syötepäivityksille" + +#~ msgid "Could not update database" +#~ msgstr "Tietokannan päivitys epäonnistui" + +#~ msgid "Checking version... " +#~ msgstr "Tarkistetaan versio..." + +#~ msgid "OK!" +#~ msgstr "OK!" + +#~ msgid "ERROR!" +#~ msgstr "VIRHE!" + +#~ msgid "Enable external API" +#~ msgstr "Aktivoi ulkoinen API" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Otsikot Erikoissyötteissä ja Tunnisteissa ryhmitellään syötteittäin" + +#~ msgid "Title or Content" +#~ msgstr "Otsikko tai sisältö" + +#~ msgid "Link" +#~ msgstr "Linkki" + +#~ msgid "Content" +#~ msgstr "Sisältö" + +#~ msgid "Article Date" +#~ msgstr "Artikkelin päiväys" + +#~ msgid "Set starred" +#~ msgstr "Merkitse tähdellä" + +#~ msgid "Assign tags" +#~ msgstr "Liitä avainsanoja" + +#~ msgid "Modify score" +#~ msgstr "Muokkaa pisteytystä" + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Päiväyksen muoto on oikein:" + +#~ msgid "Date syntax is incorrect." +#~ msgstr "Päiväyksen muoto on väärin." + +#~ msgid "Tag Cloud" +#~ msgstr "Avainsanapilvi" + +#~ msgid "Mark all visible articles in %s as read?" +#~ msgstr "Merkitse kaikki kansiossa %s näkyvät artikkelit luetuksi?" diff --git a/locale/fr_FR/LC_MESSAGES/messages.mo b/locale/fr_FR/LC_MESSAGES/messages.mo index 4af6912bfc..37ae7b4646 100644 Binary files a/locale/fr_FR/LC_MESSAGES/messages.mo and b/locale/fr_FR/LC_MESSAGES/messages.mo differ diff --git a/locale/fr_FR/LC_MESSAGES/messages.po b/locale/fr_FR/LC_MESSAGES/messages.po index 8575eb1cc2..359470c6b1 100644 --- a/locale/fr_FR/LC_MESSAGES/messages.po +++ b/locale/fr_FR/LC_MESSAGES/messages.po @@ -1,2907 +1,3880 @@ -# translation of messages.po to Français -# Copyright (C) 2009 -# This file is distributed under the same license as the Tiny Tiny RSS package. -# -# Thibaut Cousin , 2007. -# Ploc , 2009. +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Translators: +# gothfox , 2011. +# , 2011. +# Thomas Jost , 2011, 2012. +# Raphael Rochet , 2013 +# Alexandre Gravel-Raymond , 2013. +# Étienne Gilli , 2014. msgid "" msgstr "" -"Project-Id-Version: messages\n" +"Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-22 22:16+0300\n" -"PO-Revision-Date: 2007-11-20 23:01+0100\n" -"Last-Translator: Ploc \n" -"Language-Team: Français \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2015-07-16 07:30+0200\n" +"Last-Translator: Raphael Rochet \n" +"Language-Team: French\n" +"Language: fr_FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.8.2\n" -#: backend.php:107 +#: backend.php:73 msgid "Use default" msgstr "Utiliser la valeur par défaut" -#: backend.php:108 +#: backend.php:74 msgid "Never purge" msgstr "Ne jamais purger" -#: backend.php:109 +#: backend.php:75 msgid "1 week old" msgstr "Au bout d'une semaine" -#: backend.php:110 +#: backend.php:76 msgid "2 weeks old" msgstr "Au bout de 2 semaines" -#: backend.php:111 +#: backend.php:77 msgid "1 month old" msgstr "Au bout d'un mois" -#: backend.php:112 +#: backend.php:78 msgid "2 months old" msgstr "Au bout de 2 mois" -#: backend.php:113 +#: backend.php:79 msgid "3 months old" msgstr "Au bout de 3 mois" -#: backend.php:116 +#: backend.php:82 msgid "Default interval" msgstr "Fréquence de mise à jour par défaut" -#: backend.php:117 backend.php:127 +#: backend.php:83 backend.php:93 msgid "Disable updates" msgstr "Désactiver les mises à jour" -#: backend.php:118 backend.php:128 -msgid "Each 15 minutes" -msgstr "Toutes les 15 minutes" +#: backend.php:84 backend.php:94 +msgid "15 minutes" +msgstr "15 minutes" -#: backend.php:119 backend.php:129 -msgid "Each 30 minutes" -msgstr "Toutes les 30 minutes" +#: backend.php:85 backend.php:95 +msgid "30 minutes" +msgstr "30 minutes" -#: backend.php:120 backend.php:130 +#: backend.php:86 backend.php:96 msgid "Hourly" msgstr "Toutes les heures" -#: backend.php:121 backend.php:131 -msgid "Each 4 hours" -msgstr "Toutes les 4 heures" +#: backend.php:87 backend.php:97 +msgid "4 hours" +msgstr "4 heures" -#: backend.php:122 backend.php:132 -msgid "Each 12 hours" -msgstr "Toutes les 12 heures" +#: backend.php:88 backend.php:98 +msgid "12 hours" +msgstr "12 heures" -#: backend.php:123 backend.php:133 +#: backend.php:89 backend.php:99 msgid "Daily" msgstr "Une fois par jour" -#: backend.php:124 backend.php:134 +#: backend.php:90 backend.php:100 msgid "Weekly" msgstr "Une fois par semaine" -#: backend.php:137 tt-rss.php:220 modules/pref-prefs.php:329 -msgid "Default" -msgstr "Utiliser la valeur par défaut" - -#: backend.php:138 -msgid "Magpie" -msgstr "Magpie" - -#: backend.php:139 -msgid "SimplePie" -msgstr "SimplePie" - -#: backend.php:148 modules/pref-users.php:126 +#: backend.php:103 classes/pref/system.php:51 classes/pref/users.php:119 msgid "User" msgstr "Utilisateur" -#: backend.php:149 +#: backend.php:104 msgid "Power User" msgstr "Utilisateur avancé" -#: backend.php:150 +#: backend.php:105 msgid "Administrator" msgstr "Administrateur" -#: backend.php:538 login_form.php:142 modules/backend-rpc.php:61 -#: modules/popup-dialog.php:106 -#, fuzzy -msgid "Default profile" -msgstr "Nombre maximal d'articles par défaut" - -#: errors.php:3 -msgid "Unknown error" -msgstr "Erreur inconnue" +#: 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é." -#: errors.php:5 -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:8 -msgid "" -"This program requires cookies to function properly. Your browser doesn't " -"seem to support them." -msgstr "" -"Ce programme nécessite l'utilisateur de cookies 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é." -#: errors.php:11 -msgid "Backend sanity check failed" -msgstr "Le test du moteur a échoué" +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "Le test du moteur a échoué." -#: errors.php:13 +#: errors.php:17 msgid "Frontend sanity check failed." msgstr "Le test de l'interface a échoué." -#: errors.php:15 -msgid "" -"Incorrect database schema version. <a href='update.php'>Please " -"update</a>." -msgstr "" -"Version non valable pour le schéma de la base de données. <a href='update." -"php'>Veuillez le mettre à jour</a>." +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "Version non valable pour le schéma de la base de données. <a href='db-updater.php'>Veuillez le mettre à jour</a>." -#: errors.php:17 +#: errors.php:21 msgid "Request not authorized." msgstr "Requête rejetée." -#: errors.php:19 +#: errors.php:23 msgid "No operation to perform." msgstr "Aucune opération à effectuer." -#: errors.php:21 -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 l'étiquette de correspondance ou la configuration locale." +#: 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." -#: errors.php:23 +#: errors.php:27 msgid "Denied. Your access level is insufficient to access this page." -msgstr "" -"Accès refusé. Vos permissions ne vous permettent pas d'accéder à cette page." -"Rejeté. 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:25 +#: errors.php:29 msgid "Configuration check failed" msgstr "Échec du test de configuration" -#: errors.php:27 -msgid "" -"Your version of MySQL is not currently supported. Please see \n" -"\t\tofficial site for more information." -msgstr "" -"Votre version de MySQL n'est pas gérée pour le moment. Reportez-vous au \n" -"\t\tsite officiel pour plus d'informations." +#: 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." -#: errors.php:32 +#: errors.php:35 msgid "SQL escaping test failed, check your database and PHP configuration" -msgstr "" -"Le test d'échappement sql a échoué, vérifier votre base de donnée et votre " -"configuration de php." +msgstr "Le test d'échappement SQL a échoué, veuillez vérifier votre configuration de base de données et de PHP" + +#: errors.php:37 +msgid "Method not found" +msgstr "Méthode non trouvée" + +#: errors.php:39 +msgid "Plugin not found" +msgstr "Plugin non trouvé" + +#: index.php:133 index.php:149 index.php:267 prefs.php:102 +#: classes/backend.php:5 classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 classes/pref/labels.php:296 js/feedlist.js:136 +#: js/functions.js:1221 js/functions.js:1355 js/functions.js:1667 +#: js/prefs.js:653 js/prefs.js:854 js/prefs.js:1760 js/prefs.js:1776 +#: js/prefs.js:1794 js/tt-rss.js:55 js/tt-rss.js:525 js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 js/functions.js:449 js/functions.js:787 js/prefs.js:1441 +#: js/prefs.js:1494 js/prefs.js:1534 js/prefs.js:1551 js/prefs.js:1567 +#: js/prefs.js:1587 js/tt-rss.js:542 js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "Chargement en cours, veuillez patienter..." -#: functions.php:1928 -msgid "Session failed to validate (incorrect IP)" -msgstr "Echec de la validation de la session (adresse ip incorrecte)" +#: index.php:167 +msgid "Collapse feedlist" +msgstr "Contracter la liste des flux" -#: functions.php:1998 -msgid "Incorrect username or password" -msgstr "Login ou mot de passe incorrect" +#: index.php:170 +msgid "Show articles" +msgstr "Afficher les articles" -#: functions.php:2979 modules/popup-dialog.php:391 -#: modules/pref-filters.php:420 -msgid "All feeds" -msgstr "Tous les flux" +#: index.php:173 +msgid "Adaptive" +msgstr "Adaptatif" -#: functions.php:3011 functions.php:3050 functions.php:4447 functions.php:4475 -#: modules/backend-rpc.php:859 modules/pref-feeds.php:1333 -msgid "Uncategorized" -msgstr "Sans catégorie" +#: index.php:174 +msgid "All Articles" +msgstr "Tous les articles" -#: functions.php:3040 functions.php:3689 modules/backend-rpc.php:864 -#: mobile/functions.php:170 -msgid "Special" -msgstr "Spécial" +#: index.php:175 include/functions2.php:102 classes/feeds.php:104 +msgid "Starred" +msgstr "Remarquables" -#: functions.php:3042 functions.php:3691 prefs.php:114 -#: modules/backend-rpc.php:869 help/4.php:12 mobile/functions.php:197 -msgid "Labels" -msgstr "Etiquettes" +#: index.php:176 include/functions2.php:103 classes/feeds.php:105 +msgid "Published" +msgstr "Publiés" -#: functions.php:3087 help/3.php:60 offline.js:493 offline.js:1425 -msgid "Starred articles" -msgstr "Articles remarquables" +#: index.php:177 classes/feeds.php:91 classes/feeds.php:103 +msgid "Unread" +msgstr "Non lus" -#: functions.php:3089 modules/pref-feeds.php:1492 help/3.php:61 -msgid "Published articles" -msgstr "Articles publiés" +#: index.php:178 +msgid "With Note" +msgstr "Avec annotation" -#: functions.php:3091 help/3.php:59 -msgid "Fresh articles" -msgstr "Nouveaux articles" +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Ignorer le score" -#: functions.php:3093 help/3.php:58 offline.js:488 offline.js:1427 -msgid "All articles" -msgstr "Tous les articles" +#: index.php:182 +msgid "Sort articles" +msgstr "Classer les articles" -#: functions.php:3095 -#, fuzzy -msgid "Archived articles" -msgstr "Articles remarquables" +#: index.php:185 +msgid "Default" +msgstr "Utiliser la valeur par défaut" -#: functions.php:4200 -msgid "Generated feed" -msgstr "Flux généré" +#: index.php:186 +msgid "Newest first" +msgstr "Les plus récents en premier" -#: functions.php:4205 functions.php:5553 modules/popup-dialog.php:82 -#: modules/pref-feeds.php:1087 modules/pref-feeds.php:1297 -#: modules/pref-filters.php:377 modules/pref-labels.php:183 -#: modules/pref-users.php:419 offline.js:408 -msgid "Select:" -msgstr "Sélectionner :" +#: index.php:187 +msgid "Oldest first" +msgstr "Les plus anciens en premier" -#: functions.php:4206 modules/popup-dialog.php:83 modules/pref-feeds.php:1088 -#: modules/pref-feeds.php:1298 modules/pref-filters.php:378 -#: modules/pref-labels.php:184 modules/pref-users.php:420 -msgid "All" -msgstr "Tout" +#: index.php:188 +msgid "Title" +msgstr "Titre" -#: functions.php:4207 functions.php:4224 tt-rss.php:213 -msgid "Unread" -msgstr "Non lus" +#: index.php:192 index.php:233 include/functions2.php:92 classes/feeds.php:109 +#: js/FeedTree.js:132 js/FeedTree.js:160 +msgid "Mark as read" +msgstr "Marquer comme lu" -#: functions.php:4208 -msgid "Invert" -msgstr "Inverse" +#: index.php:195 +msgid "Older than one day" +msgstr "Âgé d'au moins un jour" -#: functions.php:4209 modules/popup-dialog.php:84 modules/pref-feeds.php:1089 -#: modules/pref-feeds.php:1299 modules/pref-filters.php:379 -#: modules/pref-labels.php:185 modules/pref-users.php:421 -msgid "None" -msgstr "Aucun" +#: index.php:198 +msgid "Older than one week" +msgstr "Âgé d'au moins une semaine" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "Âgé d'au moins deux semaines" -#: functions.php:4217 tt-rss.php:178 offline.js:184 +#: index.php:217 +msgid "Communication problem with server." +msgstr "Un problème de communication avec le serveur est survenu." + +#: index.php:223 msgid "Actions..." msgstr "Actions..." -#: functions.php:4223 -msgid "Selection toggle:" -msgstr "Sélection :" +#: index.php:225 +msgid "Preferences..." +msgstr "Configuration..." -#: functions.php:4225 tt-rss.php:212 -msgid "Starred" -msgstr "Remarquables" +#: index.php:226 +msgid "Search..." +msgstr "Rechercher..." -#: functions.php:4226 -msgid "Published" -msgstr "Publiés" +#: index.php:227 +msgid "Feed actions:" +msgstr "Actions sur ce flux :" -#: functions.php:4227 -msgid "Selection:" -msgstr "Sélection :" +#: index.php:228 classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "S'abonner au flux..." -#: functions.php:4228 localized_schema.php:16 tt-rss.php:187 tt-rss.php:230 -msgid "Mark as read" -msgstr "Marquer comme lu" +#: index.php:229 +msgid "Edit this feed..." +msgstr "Modifier ce flux..." -#: functions.php:4234 -msgid "Archive" -msgstr "" +#: index.php:230 +msgid "Rescore feed" +msgstr "Recalculer le score du flux" -#: functions.php:4236 -#, fuzzy -msgid "Move back" -msgstr "Revenir" +#: index.php:231 classes/pref/feeds.php:757 classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "Se désabonner" -#: functions.php:4237 -#, fuzzy -msgid "Delete" -msgstr "Utiliser la valeur par défaut" +#: index.php:232 +msgid "All feeds:" +msgstr "Tous les flux :" -#: functions.php:4242 -msgid "Assign label:" -msgstr "Assigner l'étiquette :" +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Masquer/afficher les flux lus" -#: functions.php:4283 -msgid "Click to collapse category" -msgstr "Cliquer pour contracter la catégorie" +#: index.php:235 +msgid "Other actions:" +msgstr "Autres actions :" -#: functions.php:4493 -msgid "No feeds to display." -msgstr "Aucun flux à afficher." +#: index.php:236 include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "Basculer le mode écran large" -#: functions.php:4510 -msgid "Tags" -msgstr "Tags" +#: index.php:237 +msgid "Create label..." +msgstr "Créer une étiquette..." -#: functions.php:4669 -msgid "audio/mpeg" -msgstr "audio/mpeg" +#: index.php:238 +msgid "Create filter..." +msgstr "Créer un filtre..." -#: functions.php:4795 -msgid " - " -msgstr " - " +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "Aide sur les raccourcis clavier" -#: functions.php:4820 functions.php:5580 -msgid "Edit tags for this article" -msgstr "Editer les tags pour cet article" +#: index.php:248 +msgid "Logout" +msgstr "Déconnexion" -#: functions.php:4826 functions.php:5563 -msgid "Show article summary in new window" -msgstr "Afficher le résumé des articles dans une nouvelle fenêtre" +#: index.php:254 +msgid "Updates are available from Git." +msgstr "Des mises à jour sont disponible via Git" -#: functions.php:4833 functions.php:5570 -msgid "Publish article with a note" -msgstr "Publier l'article avec une note" +#: prefs.php:33 prefs.php:120 include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "Configuration" -#: functions.php:4850 functions.php:5441 -msgid "Originally from:" -msgstr "" +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "Raccourcis clavier" -#: functions.php:4863 functions.php:5454 -#, fuzzy -msgid "Feed URL" +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Quitter la configuration" + +#: prefs.php:123 classes/pref/feeds.php:110 classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" msgstr "Flux" -#: functions.php:4903 functions.php:5484 -msgid "unknown type" -msgstr "type inconnu" +#: prefs.php:126 classes/pref/filters.php:235 +msgid "Filters" +msgstr "Filtres" -#: functions.php:4943 functions.php:5527 -msgid "Attachment:" -msgstr "Fichier attaché :" +#: prefs.php:129 include/functions.php:1262 include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Etiquettes" -#: functions.php:4945 functions.php:5529 -msgid "Attachments:" -msgstr "Fichiers attachés :" +#: prefs.php:133 +msgid "Users" +msgstr "Utilisateurs" -#: functions.php:4965 prefs.php:142 tt-rss.php:101 modules/help.php:21 -#: modules/popup-dialog.php:53 modules/popup-dialog.php:154 -#: modules/popup-dialog.php:181 modules/popup-dialog.php:230 -#: modules/popup-dialog.php:575 modules/popup-dialog.php:634 -#: modules/pref-feeds.php:1140 modules/pref-users.php:96 -msgid "Close this window" -msgstr "Fermer cette fenêtre" +#: prefs.php:136 +msgid "System" +msgstr "Système" -#: functions.php:5021 -msgid "Feed not found." -msgstr "Flux non trouvé." +#: register.php:187 include/login_form.php:245 +msgid "Create new account" +msgstr "Créer un nouveau compte" -#: functions.php:5090 -msgid "" -"Could not display feed (query failed). Please check label match syntax or " -"local configuration." -msgstr "" -"Impossible d'afficher le flux (la requête l'a pas abouti). Veuillez vérifier " -"la syntaxe de l'étiquette de correspondance ou la configuration locale." +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "L'inscription de nouveaux utilisateurs est désactivée par l'administrateur." + +#: register.php:197 register.php:242 register.php:255 register.php:270 +#: register.php:289 register.php:337 register.php:347 register.php:359 +#: classes/handler/public.php:730 classes/handler/public.php:801 +#: classes/handler/public.php:899 classes/handler/public.php:978 +#: classes/handler/public.php:992 classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Revenir à Tiny Tiny RSS" -#: functions.php:5254 functions.php:5341 -msgid "mark as read" -msgstr "marquer comme lu" +#: register.php:218 +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." -#: functions.php:5417 functions.php:5424 -msgid "Click to expand article" -msgstr "Cliquer pour développer l'article" +#: register.php:224 +msgid "Desired login:" +msgstr "Identifiant souhaité :" -#: functions.php:5587 -msgid "toggle unread" -msgstr "marquer comme non-lu" +#: register.php:227 +msgid "Check availability" +msgstr "Vérifier la disponibilité" -#: functions.php:5606 -msgid "No unread articles found to display." -msgstr "Aucun article non-lu à afficher" +#: register.php:229 classes/handler/public.php:817 +msgid "Email:" +msgstr "Adresse mail :" -#: functions.php:5609 -msgid "No updated articles found to display." -msgstr "Aucun article mise à jour à afficher" +#: register.php:232 classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "Combien font 2 plus 2 :" -#: functions.php:5612 -msgid "No starred articles found to display." -msgstr "Aucun article remarquable à afficher" +#: register.php:235 +msgid "Submit registration" +msgstr "Envoyer l'inscription" -#: functions.php:5616 -msgid "" -"No articles found to display. You can assign articles to labels manually " -"(see the Actions menu above) or use a filter." -msgstr "" -"Aucun article trouvé à afficher. Vous pouvez assigner des étiquettes aux " -"articles manuellement (voir les actions du menu ci-dessus) ou utiliser un " -"filtre." +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "Vos informations d'inscription sont incomplètes." + +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "Désolé, cet identifiant est déjà utilisé." + +#: register.php:287 +msgid "Registration failed." +msgstr "L'inscription a échoué." + +#: register.php:334 +msgid "Account created successfully." +msgstr "Compte créé avec succès." + +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "L'inscription de nouveaux utilisateurs est actuellement fermée." + +#: update.php:62 +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:1271 +#: include/functions.php:1815 include/functions.php:1900 +#: include/functions.php:1922 classes/opml.php:421 classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "Sans catégorie" + +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d article archivé" +msgstr[1] "%d articles archivés" + +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "Aucun flux trouvé." + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "Navigation" + +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "Ouvrir le flux suivant" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "Ouvrir le flux précédent" + +#: include/functions2.php:55 +msgid "Open next article" +msgstr "Ouvrir l'article suivant" + +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "Ouvrir l'article précédent" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "Ouvrir l'article suivant (ne pas faire défiler les articles longs)" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "Ouvrir l'article précédent (ne pas faire défiler les articles longs)" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "Aller à l'article suivant (ne pas développer ou marqué lu)" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "Aller à l'article précédent (ne pas développer ou marqué lu)" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Afficher la fenêtre de recherche" + +#: include/functions2.php:62 +msgid "Article" +msgstr "Article" + +#: include/functions2.php:63 js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "Marquer comme (non) remarquable" + +#: include/functions2.php:64 js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "Marquer comme (non) publié" + +#: include/functions2.php:65 js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "Marquer comme (non) lu" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Modifier les tags" + +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "Ecarter la sélection" + +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "Écarter les articles lus" + +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "Ouvrir dans une nouvelle fenêtre" + +#: include/functions2.php:70 js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "Marquer les articles en-dessous comme lus" + +#: include/functions2.php:71 js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "Marquer les articles au-dessus comme lus" + +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "Défiler vers le bas" + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "Défiler vers le haut" + +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "Sélectionner l'article sous le curseur" + +#: include/functions2.php:75 +msgid "Email article" +msgstr "Envoyer l'article par mail" + +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "Contracter l'article" + +#: include/functions2.php:77 +msgid "Toggle article expansion (combined mode)" +msgstr "Basculer le développement (mode combiné)" + +#: include/functions2.php:79 plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "Basculer l'intégration de l'article original" + +#: include/functions2.php:80 +msgid "Article selection" +msgstr "Sélection d'article" + +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "Sélectionner tous les articles" + +#: include/functions2.php:82 +msgid "Select unread" +msgstr "Sélectionner les articles non-lus" + +#: include/functions2.php:83 +msgid "Select starred" +msgstr "Sélectionner les articles remarquables" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "Sélectionner les articles publiés" + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "Inverser la sélection" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "Tout désélectionner" + +#: include/functions2.php:87 classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Flux" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "Actualiser le flux actif" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "Masquer/afficher les flux lus" + +#: include/functions2.php:90 classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "S'abonner au flux" + +#: include/functions2.php:91 js/FeedTree.js:139 js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Modifier le flux" + +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "Inverser l'ordre des en-têtes" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "Déboguer les mises à jour" + +#: include/functions2.php:95 js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "Marquer tous les flux comme lus" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "Étendre/contracter la catégorie" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "Basculer le mode combiné" + +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "Basculer le développement automatique en mode combiné" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "Aller à" + +#: include/functions2.php:100 include/functions.php:1973 +msgid "All articles" +msgstr "Tous les articles" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "Nouveaux" + +#: include/functions2.php:104 js/tt-rss.js:469 js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Nuage de tags" + +#: include/functions2.php:106 +msgid "Other" +msgstr "Autre" + +#: include/functions2.php:107 classes/pref/labels.php:281 +msgid "Create label" +msgstr "Créer une étiquette" + +#: include/functions2.php:108 classes/pref/filters.php:725 +msgid "Create filter" +msgstr "Créer un filtre" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "Ouvrir/fermer la barre latérale" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "Afficher la fenêtre d'aide" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Résultats de recherche : %s" + +#: include/functions2.php:1258 classes/feeds.php:730 +msgid "comment" +msgid_plural "comments" +msgstr[0] "Commentaire" +msgstr[1] "Commentaires" + +#: include/functions2.php:1262 classes/feeds.php:734 +msgid "comments" +msgstr "Commentaires" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "aucun tag" + +#: include/functions2.php:1346 classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "Modifier les tags pour cet article" + +#: include/functions2.php:1378 classes/feeds.php:668 +msgid "Originally from:" +msgstr "Origine :" + +#: include/functions2.php:1391 classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "URL du flux" + +#: include/functions2.php:1425 classes/backend.php:105 +#: classes/pref/users.php:95 classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 classes/dlg.php:37 classes/dlg.php:60 +#: classes/dlg.php:93 classes/dlg.php:159 classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 plugins/share/init.php:123 +msgid "Close this window" +msgstr "Fermer cette fenêtre" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(modifier l'annotation)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "type inconnu" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "Fichier attaché" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "%d min" + +#: include/functions.php:1260 include/functions.php:1912 +msgid "Special" +msgstr "Spécial" + +#: include/functions.php:1763 classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Tous les flux" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Articles remarquables" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Articles publiés" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "Nouveaux articles" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "Articles archivés" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "Lus récemment" + +#: include/login_form.php:190 classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "Identifiant :" + +#: include/login_form.php:200 classes/handler/public.php:560 +msgid "Password:" +msgstr "Mot de passe :" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "J'ai oublié mon mot de passe" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "Profil :" + +#: include/login_form.php:216 classes/handler/public.php:299 +#: classes/rpc.php:63 classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "Profil par défaut" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "Minimiser l'usage du trafic" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "N'affiche pas les images dans les articles, allège les actualisations automatiques." + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "Se souvenir de moi" + +#: include/login_form.php:242 classes/handler/public.php:565 +msgid "Log in" +msgstr "Se connecter" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "Echec de la validation de la session (adresse IP incorrecte)" + +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "Échec de la validation de la session (la base a changé)" + +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "Échec de la validation de la session (utilisateur introuvable)" + +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "Échec de la validation de la session (mot de passe changé)" + +#: 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." + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Raccourcis clavier" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "Maj" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Sujet non trouvé dans l'aide." + +#: classes/handler/public.php:498 plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "Partager avec Tiny Tiny RSS" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Titre :" + +#: classes/handler/public.php:508 classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL :" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "Contenu :" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "Étiquettes :" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "Les articles partagés apparaîtront dans le flux Publiés." + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "Partager" + +#: classes/handler/public.php:534 classes/handler/public.php:568 +#: classes/feeds.php:1076 classes/feeds.php:1126 classes/feeds.php:1157 +#: classes/article.php:205 classes/pref/users.php:170 +#: classes/pref/feeds.php:774 classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 classes/pref/filters.php:475 +#: classes/pref/filters.php:874 classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 plugins/note/init.php:53 +#: plugins/mail/init.php:172 plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "Annuler" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "Non connecté" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Identifiant ou mot de passe incorrect" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "Déjà abonné à %s." + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "Abonné à %s." + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "Impossible de s'abonner à %s." + +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "Aucun flux trouvé dans %s." + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "Plusieurs flux trouvés." + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "Impossible de s'abonner à %s.
    Impossible de télécharger l'URL du flux." + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "S'abonner au flux sélectionné" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Modifier les options d'abonnement" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "Récupération de mot de passe" + +#: classes/handler/public.php:805 +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "Vous devrez fournir un nom et une adresse email valides. Un lien pour réinitialiser votre mot de passe sera envoyé à votre adresse email." + +#: classes/handler/public.php:827 classes/pref/users.php:352 +msgid "Reset password" +msgstr "Réinitialiser le mot de passe" + +#: classes/handler/public.php:837 +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:841 classes/handler/public.php:907 +msgid "Go back" +msgstr "Revenir" + +#: classes/handler/public.php:878 +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] Demande de réinitialisation de mot de passe" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "Désolé, ce couple identifiant et mail n'a pas été trouvé." + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "Vous n'avez pas les permissions nécessaires pour exécuter ce script." + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "Outil de mise à jour de la base de données" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Exécuter les mises à jour" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "Voir comme flux RSS" + +#: classes/feeds.php:54 classes/feeds.php:134 classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "Voir comme RSS" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "Dernière mise à jour : %s" + +#: classes/feeds.php:90 classes/pref/users.php:337 classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 classes/pref/filters.php:397 +#: classes/pref/filters.php:719 classes/pref/filters.php:807 +#: classes/pref/filters.php:834 classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 plugins/instances/init.php:287 +msgid "All" +msgstr "Tout" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Inverse" + +#: classes/feeds.php:93 classes/pref/users.php:339 classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 classes/pref/filters.php:399 +#: classes/pref/filters.php:721 classes/pref/filters.php:809 +#: classes/pref/filters.php:836 classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 plugins/instances/init.php:289 +msgid "None" +msgstr "Aucun" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "Plus..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Sélectionner :" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Sélection :" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "Changer le score" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "Archive" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "Revenir" + +#: classes/feeds.php:116 classes/pref/filters.php:358 +#: classes/pref/filters.php:406 classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "Supprimer" + +#: classes/feeds.php:121 classes/feeds.php:126 plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "Transférer par email" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Flux :" + +#: classes/feeds.php:200 classes/feeds.php:869 +msgid "Feed not found." +msgstr "Flux non trouvé." + +#: classes/feeds.php:268 +msgid "Never" +msgstr "Jamais" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "Importé à %s" + +#: classes/feeds.php:452 classes/feeds.php:549 +msgid "mark feed as read" +msgstr "Marquer le flux comme lu" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "Fermer l'article" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "Aucun article non lu à afficher." + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "Aucun article mis à jour à afficher." + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "Aucun article remarquable à afficher." + +#: classes/feeds.php:778 +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:780 +msgid "No articles found to display." +msgstr "Aucun article à afficher." + +#: classes/feeds.php:795 classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "Flux mis à jour à %s" + +#: classes/feeds.php:805 classes/feeds.php:977 +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)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "Aucun flux sélectionné." + +#: classes/feeds.php:1014 classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "URL du flux" + +#: classes/feeds.php:1028 classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "Placer dans la catégorie :" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "Flux disponibles" + +#: classes/feeds.php:1048 classes/pref/users.php:133 +#: classes/pref/feeds.php:620 classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "Identification" + +#: classes/feeds.php:1052 classes/pref/users.php:397 +#: classes/pref/feeds.php:626 classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "Se connecter" + +#: classes/feeds.php:1055 classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "Mot de passe" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Ce flux nécessite une identification." + +#: classes/feeds.php:1070 classes/feeds.php:1124 classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "S'abonner" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "D'autres flux" + +#: classes/feeds.php:1096 classes/feeds.php:1156 classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 classes/pref/filters.php:712 js/tt-rss.js:174 +msgid "Search" +msgstr "Rechercher" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "Flux populaires" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "Archive du flux" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "limite :" + +#: classes/feeds.php:1125 classes/pref/users.php:350 +#: classes/pref/feeds.php:744 classes/pref/filters.php:465 +#: classes/pref/filters.php:738 classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "Supprimer" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "Rechercher" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "dans %s" + +#: classes/feeds.php:1152 +msgid "Search syntax" +msgstr "Syntaxe de la recherche" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "Article non trouvé." + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "Tags pour cet article (séparés par des virgules) :" + +#: classes/article.php:203 classes/pref/users.php:168 +#: classes/pref/feeds.php:773 classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 plugins/nsfw/init.php:85 plugins/mail/init.php:64 +#: plugins/instances/init.php:245 plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Enregistrer" + +#: classes/opml.php:28 classes/opml.php:33 +msgid "OPML Utility" +msgstr "Outil OPML" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "Import OPML en cours..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "Revenir à la configuration" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "Ajout du flux : %s" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "Flux en doublon : %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "Ajout de l'étiquette %s" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "Étiquette en doublon: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "Paramétrage de la préférence %s à %s" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "Créer un filtre..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "Placer dans la catégorie : %s" + +#: classes/opml.php:470 plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "Échec de l'envoi, code d'erreur %d" + +#: classes/opml.php:484 plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "Impossible de déplacer le fichier envoyé." + +#: classes/opml.php:488 plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "Erreur : veuillez envoyer un document OPML." + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "Erreur : impossible de trouver le fichier OPML déplacé." + +#: classes/opml.php:506 plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Erreur lors de l'analyse du document." + +#: classes/pref/system.php:8 classes/pref/users.php:6 +#: 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." + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "Journal des erreurs" + +#: classes/pref/system.php:40 plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "Actualiser" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "Vider le journal" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Erreur" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "Nom du fichier" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Message" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Date" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Utilisateur non trouvé" + +#: classes/pref/users.php:53 classes/pref/users.php:399 +msgid "Registered" +msgstr "Inscrit" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Dernière connexion" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "Nombre d'abonnements à des flux" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Flux abonnés" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Permissions : " + +#: classes/pref/users.php:154 classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Options" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "Utilisateur %s ajouté avec le mot de passe %s" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "Impossible de créer l'utilisateur %s" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "L'utilisateur %s existe déjà." + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "Mot de passe de l'utilisateur %s changé en %s" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "Envoi du mot de passe de %s à %s" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] Notification de changement de mot de passe" + +#: classes/pref/users.php:334 classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 classes/pref/filters.php:394 +#: classes/pref/filters.php:716 classes/pref/filters.php:804 +#: classes/pref/filters.php:831 classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 plugins/instances/init.php:284 +msgid "Select" +msgstr "Sélectionner" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Créer l'utilisateur" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "Détails" + +#: classes/pref/users.php:348 classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Modifier" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Permissions" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "Dernière connexion" + +#: classes/pref/users.php:419 plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Cliquer pour modifier" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "Aucun utilisateur défini." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "Aucun utilisateur correspondant trouvé." + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Cocher pour activer le champ" + +#: classes/pref/feeds.php:63 classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "(%d flux)" +msgstr[1] "(%d flux)" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "Titre du flux" + +#: classes/pref/feeds.php:598 classes/pref/feeds.php:812 +msgid "Update" +msgstr "Mettre à jour" + +#: classes/pref/feeds.php:613 classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Purge des articles :" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "Astuce : vous devez renseigner vos informations d'identification si le flux nécessite une authentification, sauf pour les flux Twitter." + +#: classes/pref/feeds.php:659 classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "Masquer dans la liste des flux populaires" + +#: classes/pref/feeds.php:671 classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "Inclure dans la synthèse quotidienne par courrier électronique" + +#: classes/pref/feeds.php:684 classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Toujours afficher les images jointes" + +#: classes/pref/feeds.php:697 classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "Ne pas intégrer les images" + +#: classes/pref/feeds.php:710 classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Enregistrer localement les images" + +#: classes/pref/feeds.php:722 classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "Marquer les article mis à jour comme non lus" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "Icône" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "Remplacer" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "Réinscription aux mises à jour en push" + +#: classes/pref/feeds.php:771 +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." + +#: classes/pref/feeds.php:1146 classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Tout est terminé." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "Flux avec des erreurs" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "Flux inactifs" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "Modifier les flux sélectionnés" + +#: classes/pref/feeds.php:1318 classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "Réinitialiser le critère de tri" + +#: classes/pref/feeds.php:1320 js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "Abonnement par lots" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "Catégories" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "Ajouter une catégorie" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "Supprimer les flux sélectionnés" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "Autres actions..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "Purger manuellement" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "Purger les données de flux" + +#: classes/pref/feeds.php:1354 classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Recalculer le score des articles" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +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, filtres, étiquettes et réglages de Tiny Tiny RSS." + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "Seul le profil de réglages principal peut être migré en utilisant OPML." + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "Importer mon OPML" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "Nom du fichier :" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "Inclure les paramètres" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "Exporter en OPML" + +#: classes/pref/feeds.php:1433 +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:1435 +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:1437 +msgid "Public OPML URL" +msgstr "URL OPML publique" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "Afficher l'URL de l'OPML public" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Intégration à Firefox" + +#: classes/pref/feeds.php:1449 +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:1456 +msgid "Click here to register this site as a feed reader." +msgstr "Cliquer ici pour enregistrer ce site comme lecteur de flux." + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "Articles publiés et partagés / Flux générés" + +#: classes/pref/feeds.php:1466 +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:1474 +msgid "Display URL" +msgstr "Afficher l'URL" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "Supprimer toutes les URL générées" + +#: classes/pref/feeds.php:1555 +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:1589 classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "Cliquez pour modifier le flux" + +#: classes/pref/feeds.php:1607 classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "Se désabonner des flux sélectionnés" + +#: classes/pref/feeds.php:1778 +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)" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "Flux auxquels s'abonner, un par ligne" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "Les flux requièrent une identification." + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "Articles correspondant à ce filtre :" + +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "Aucun article récent correspondant à ce filtre." + +#: classes/pref/filters.php:226 classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(inversé)" + +#: classes/pref/filters.php:222 classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "%s sur %s dans %s %s" + +#: classes/pref/filters.php:335 classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Légende" + +#: classes/pref/filters.php:341 classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "Correspondance" + +#: classes/pref/filters.php:355 classes/pref/filters.php:403 +#: classes/pref/filters.php:813 classes/pref/filters.php:840 +msgid "Add" +msgstr "Ajouter" + +#: classes/pref/filters.php:389 classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "Actions effectuées" + +#: classes/pref/filters.php:439 classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Activé" + +#: classes/pref/filters.php:448 classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "Au moins une correspondance" + +#: classes/pref/filters.php:457 classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "Correspondance inverse" + +#: classes/pref/filters.php:469 classes/pref/filters.php:868 +msgid "Test" +msgstr "Test" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "Combiner" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Créer" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "Inverser le résultat de l'expression rationnelle" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "sur le champ" -#: functions.php:5618 offline.js:443 -msgid "No articles found to display." -msgstr "Aucun article à afficher" +#: classes/pref/filters.php:934 js/PrefFilterTree.js:61 +msgid "in" +msgstr "dans" -#: functions.php:6362 tt-rss.php:192 -msgid "Create label..." -msgstr "Créer une étiquette..." +#: classes/pref/filters.php:947 +msgid "Wiki: Filters" +msgstr "Filtres Wiki:" -#: functions.php:6375 -msgid "(remove)" -msgstr "(supprimer)" +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "Enregistrer" -#: functions.php:6427 -msgid "no tags" -msgstr "aucun tag" +#: classes/pref/filters.php:952 js/functions.js:1025 +msgid "Add rule" +msgstr "Ajouter une règle" -#: functions.php:6456 -msgid "edit note" -msgstr "éditer la note" +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Exécuter l'action" -#: localized_schema.php:9 tt-rss.php:222 modules/popup-dialog.php:381 -#: modules/pref-feeds.php:1310 modules/pref-feeds.php:1369 -msgid "Title" -msgstr "Titre" +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "avec les paramètres :" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "Enregistrer" -#: localized_schema.php:10 -msgid "Title or Content" -msgstr "Titre ou contenu" +#: classes/pref/filters.php:1019 js/functions.js:1051 +msgid "Add action" +msgstr "Ajouter une action" -#: localized_schema.php:11 -msgid "Link" -msgstr "Lien" +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[Pas de titre]" -#: localized_schema.php:12 modules/popup-dialog.php:382 -msgid "Content" -msgstr "Contenu" +#: classes/pref/filters.php:1044 +#, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "%s (%d règle)" +msgstr[1] "%s (%d règles)" -#: localized_schema.php:13 -msgid "Article Date" -msgstr "Date de l'article" +#: classes/pref/filters.php:1059 +#, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "%s (+%d action)" +msgstr[1] "%s (+%d actions)" -#: localized_schema.php:15 -msgid "Filter article" -msgstr "Filtrer l'article" +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "Couleurs" -#: localized_schema.php:17 -msgid "Set starred" -msgstr "Marquer comme remarquable" +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "Premier plan :" -#: localized_schema.php:18 viewfeed.js:545 viewfeed.js:659 -msgid "Publish article" -msgstr "Publier l'article" +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "Arrière-plan :" -#: localized_schema.php:19 -msgid "Assign tags" -msgstr "Assigner des tags" +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "Étiquette %s créé" -#: localized_schema.php:20 -msgid "Assign label" -msgstr "Assigner l'étiquette" +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Ré-initialiser les couleurs" -#: localized_schema.php:24 +#: classes/pref/prefs.php:18 msgid "General" msgstr "Général" -#: localized_schema.php:26 -msgid "Allow duplicate posts" -msgstr "Permettre les articles en double" - -#: localized_schema.php:27 -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ées " -"en un seul exemplaire." - -#: localized_schema.php:28 -msgid "Default interval between feed updates (in minutes)" -msgstr "Intervalle par défaut entre les mises à jour (en minutes)" +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Interface" -#: localized_schema.php:29 -msgid "Enable e-mail digest" -msgstr "Activer la synthèse quotidienne par courrier électronique" +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Avancé" -#: localized_schema.php:30 -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:21 +msgid "Digest" +msgstr "Synthèse" -#: localized_schema.php:31 -msgid "Purge old posts after this number of days (0 - disables)" -msgstr "" -"Purger les articles plus vieux que le nombre de jours donné (0 pour ne " -"jamais purger)" +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "Permettre les articles en double" -#: localized_schema.php:32 -msgid "Update post on checksum change" -msgstr "Mettre à jour lors d'un changement du code de contrôle" +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Tags exclus" -#: localized_schema.php:33 -msgid "Mark articles in e-mail digest as read" -msgstr "Marquer tous les articles du compte-rendu par email comme lus" +#: classes/pref/prefs.php:26 +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)." -#: localized_schema.php:34 -msgid "Enable offline reading" -msgstr "Activer la lecture hors-ligne" +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "Automatiquement marquer les articles comme lus" -#: localized_schema.php:35 -msgid "Synchronize new articles for offline reading using Google Gears." -msgstr "" -"Synchroniser les nouveaux articles pour la lecture hors-ligne en utilisant " -"Google Gears." +#: classes/pref/prefs.php:27 +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." -#: localized_schema.php:37 -msgid "Interface" -msgstr "Interface" +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "Développer automatiquement les articles en affichage combiné" -#: localized_schema.php:39 +#: classes/pref/prefs.php:29 msgid "Combined feed display" msgstr "Affichage combiné des flux" -#: localized_schema.php:40 -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:29 +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)" -#: localized_schema.php:41 -msgid "Default article limit" -msgstr "Nombre maximal d'articles par défaut" +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "Demander confirmation pour marquer un flux comme lu" -#: localized_schema.php:42 -msgid "" -"Default limit for articles to display, any custom number you like (0 - " -"disables)." -msgstr "Nombre maximal d'articles à afficher (0 pour supprimer toute limite)." +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "Nombre d'articles à afficher" -#: localized_schema.php:43 -msgid "Enable feed categories" -msgstr "Utiliser les catégories de flux" +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "Fréquence de mise à jour par défaut" -#: localized_schema.php:44 -msgid "Enable search toolbar" -msgstr "Activer la barre de recherche" +#: classes/pref/prefs.php:32 +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" -#: localized_schema.php:45 -msgid "Hide feeds with no unread messages" -msgstr "Masquer les flux sans article non lu" +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "Marquer tous les articles du compte-rendu par email comme lus" -#: localized_schema.php:46 -msgid "Mark articles as read automatically" -msgstr "Marquer les articles comme lus automatiquement" +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "Activer la synthèse quotidienne par courrier électronique" -#: localized_schema.php:47 -msgid "" -"This option enables marking articles as read automatically in combined mode " -"(except for Fresh articles feed) while you scroll article list." -msgstr "" -"Cette option active le marquage automatique des articles comme lus en " -"affichage combiné (sauf dans le flux virtuel Nouveaux articles) pendant que " -"vous faites défiler la liste des articles" +#: classes/pref/prefs.php:34 +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" -#: localized_schema.php:48 -msgid "On catchup show next feed" -msgstr "Sauter automatiquement au flux suivant" +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "Essayer d'envoyer le résumé à l'heure précisée" -#: localized_schema.php:49 -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é" +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "Utilise l'heure GMT" -#: localized_schema.php:50 -msgid "Open article links in new browser window" -msgstr "Ouvrir les liens des articles dans une nouvelle fenêtre" +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "Activer l'accès par API" -#: localized_schema.php:51 -msgid "Reverse headline order (oldest first)" -msgstr "Inverser l'order des en-têtes (les plus anciens en premier)" +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "Autoriser les clients à accéder à ce compte via l'API" -#: localized_schema.php:52 -msgid "Show content preview in headlines list" -msgstr "Donner un aperçu du contenu dans la liste des en-têtes" +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Utiliser les catégories de flux" -#: localized_schema.php:53 +#: classes/pref/prefs.php:38 msgid "Sort feeds by unread articles count" msgstr "Trier les flux par nombre d'articles non lus" -#: localized_schema.php:54 -msgid "User stylesheet URL" -msgstr "URL de la feuille de style personnalisée" - -#: localized_schema.php:55 -msgid "Link to user stylesheet to override default style, disabled if empty." -msgstr "" -"Lien vers une feuille de style personnalisée pour remplacer le style par " -"défaut (laisser vide pour ne pas en utiliser)" - -#: localized_schema.php:56 +#: classes/pref/prefs.php:39 msgid "Maximum age of fresh articles (in hours)" msgstr "Ancienneté maximale pour un nouvel article (en heures)" -#: localized_schema.php:57 -msgid "Hide feedlist" -msgstr "Masquer la liste des flux»" +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "Masquer les flux sans article non lu" -#: localized_schema.php:58 -msgid "" -"This option hides feedlist and allows it to be toggled on the fly, useful " -"for small screens." -msgstr "" -"Cette option masque la liste des flux tout en lui permettant d'être affiché " -"d'un simple clic. Très utile pour les petits écrans." +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "Afficher les flux spéciaux en masquant les flux lus" -#: localized_schema.php:59 -msgid "Group headlines in virtual feeds" -msgstr "Regrouper les entêtes dans des flux virtuels" +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "Format de date long" -#: localized_schema.php:60 -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" +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "La syntaxe utilisée est la même que pour la fonction PHP date()." -#: localized_schema.php:62 -msgid "Advanced" -msgstr "Avancé" +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "Sauter automatiquement au flux suivant" -#: localized_schema.php:64 -msgid "Blacklisted tags" -msgstr "Tags exclus" +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Sauter automatiquement au flux suivant après en avoir marqué un comme lu" -#: localized_schema.php:65 -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 sont pas " -"utilisés (en faire une liste, séparés par des virgules)" +#: classes/pref/prefs.php:44 +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)" -#: localized_schema.php:66 -msgid "Confirm marking feed as read" -msgstr "Demander confirmation pour marquer un flux comme lu" +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "Purger les articles non lus" -#: localized_schema.php:67 -msgid "Enable feed icons" -msgstr "Activer les icônes de flux" +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "Inverser l'ordre des en-têtes (les plus anciens en premier)" -#: localized_schema.php:68 -msgid "Enable labels" -msgstr "Utiliser les étiquettes" +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "Format de date court" -#: localized_schema.php:69 -msgid "" -"Experimental support for virtual feeds based on user crafted SQL queries. " -"This feature is highly experimental and at this point not user friendly. Use " -"with caution." -msgstr "" -"Utilisation expérimentale de flux virtuels basés sur des requêtes SQL " -"personnalisées. Cette fonctionnalité est hautement expérimentale et pas " -"encore ergonomique. Utilisez-là avec précaution." +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "Donner un aperçu du contenu dans la liste des en-têtes" -#: localized_schema.php:70 -msgid "Long date format" -msgstr "Format de date long" +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "Trier les en-têtes par date de flux" -#: localized_schema.php:71 -msgid "Set articles as unread on update" -msgstr "Marquer les articles comme non lus lors des mises à jour" +#: classes/pref/prefs.php:49 +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." -#: localized_schema.php:72 -msgid "Short date format" -msgstr "Format de date court" +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "Connexion avec un certificat SSL" -#: localized_schema.php:73 -msgid "Show additional information in feedlist" -msgstr "Afficher des informations supplémentaires dans la liste des flux" +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Cliquez pour enregistrer votre certificat client SSL dans tt-rss" -#: localized_schema.php:74 +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "Ne pas intégrer les images" + +#: classes/pref/prefs.php:52 msgid "Strip unsafe tags from articles" msgstr "Éliminer les tags non sûrs des articles" -#: localized_schema.php:75 +#: classes/pref/prefs.php:52 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." -#: localized_schema.php:76 -msgid "Use more accessible date/time format for headlines" -msgstr "Afficher la date et l'heure de manière plus lisible dans les en-têtes" +#: classes/pref/prefs.php:53 js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "Personnaliser la feuille de style" -#: localized_schema.php:77 -msgid "Automatically expand articles in combined mode" -msgstr "Développer automatiquement les articles en affichage combiné" +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "Personnaliser les feuilles de style CSS" -#: localized_schema.php:78 -msgid "Purge unread articles" -msgstr "Purger les articles non lus" +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "Fuseau horaire" -#: localized_schema.php:79 -msgid "Show special feeds when hiding read feeds" -msgstr "Afficher les flux spéciaux en masquant les flux lus" +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "Regrouper les entêtes dans des flux virtuels" -#: localized_schema.php:80 -msgid "Prefer more accurate feedlist counters to UI speed" -msgstr "" -"Préférer un compteur de liste de flux plus précis à la rapidité de " -"l'interface" +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "Les flux spéciaux, tags et catégories sont regroupés par flux sources." -#: localized_schema.php:81 -msgid "Enable inline MP3 player" -msgstr "Activer le lecteur mp3 en ligne" +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "Langue" -#: localized_schema.php:82 -msgid "" -"Enable the Flash-based XSPF Player to play MP3-format podcast enclosures." -msgstr "" -"Activer le lecteur XSPF basé sur Flash pour lire les podcasts au format mp3 " -"intégrés au flux RSS." +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "Thème" -#: localized_schema.php:83 -msgid "Do not show images in articles" -msgstr "Ne pas afficher les images dans les articles" +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "Sélectionnez un des thèmes CSS disponibles" -#: localized_schema.php:84 -msgid "Enable external API" -msgstr "" +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "La configuration a été enregistrée." -#: login_form.php:120 modules/popup-dialog.php:271 modules/pref-feeds.php:339 -#: modules/pref-feeds.php:561 mobile/login_form.php:38 -msgid "Login:" -msgstr "Login :" +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "Vos données personnelles ont été sauvegardées." -#: login_form.php:124 modules/popup-dialog.php:273 modules/pref-feeds.php:344 -#: modules/pref-feeds.php:567 mobile/login_form.php:43 -msgid "Password:" -msgstr "Mot de passe :" +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "Vos préférences sont maintenant les valeurs par défaut." -#: login_form.php:129 -msgid "Language:" -msgstr "Langue :" +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "Données personnelles / Authentification" -#: login_form.php:139 -#, fuzzy -msgid "Profile:" -msgstr "Fichier :" +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "Données personelles" -#: login_form.php:152 mobile/login_form.php:28 -msgid "Log in" -msgstr "Se connecter" +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "Nom complet" -#: login_form.php:155 register.php:148 -msgid "Create new account" -msgstr "Créer un nouveau compte" +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "Adresse électronique" -#: login_form.php:169 -msgid "Limit bandwidth usage" -msgstr "Limiter l'usage de la bande passante" +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Permissions" -#: opml.php:99 opml.php:103 -msgid "OPML Utility" -msgstr "Outil OPML" +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Enregistrer les données" -#: opml.php:124 -msgid "Importing OPML (using DOMXML extension)..." -msgstr "Importation OPML (utilisant l'extension DOMXML)..." +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "Votre mot de passe est celui par défaut, veuillez le modifier." -#: opml.php:128 -msgid "Importing OPML (using DOMDocument extension)..." -msgstr "Importation OPML (utilisation l'extension DOMDocument)..." +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "Changer votre mot de passe actuel désactivera les mots de passe à usage unique." -#: opml.php:132 modules/popup-dialog.php:45 -msgid "DOMXML extension is not found. It is required for PHP versions below 5." -msgstr "" -"Extension DOMXML non trouvée. Cette extension est requise pour les versions " -"de php inférieures à 5.Extension DOMXML non trouvée. Elle est nécessaire " -"pour les versions de PHP antérieures à la 5." +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Ancien mot de passe" -#: opml.php:136 -msgid "Return to preferences" -msgstr "Revenir à la configuration" +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Nouveau mot de passe" -#: prefs.php:63 prefs.php:123 tt-rss.php:65 -msgid "Loading, please wait..." -msgstr "Chargement en cours, veuillez patienter..." +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Confirmation du mot de passe" -#: prefs.php:70 prefs.php:126 tt-rss.php:73 -msgid "" -"Your browser doesn't support Javascript, which is required\n" -"\t\tfor this application to function properly. Please check your\n" -"\t\tbrowser settings." -msgstr "" -"Votre navigateur ne gère pas Javascript, alors que c'est nécessaire\n" -"\t\tpour le bon fonctionnement de ce logiciel. Veuillez modifier la\n" -"\t\tconfiguration de votre navigateur." +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "Modifier le mot de passe" -#: prefs.php:90 tt-rss.php:112 -msgid "Hello," -msgstr "Bonjour," +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "Mots de passe à usage unique / Identificateur" -#: prefs.php:92 help/4.php:14 -msgid "Exit preferences" -msgstr "Quitter la configuration" +#: classes/pref/prefs.php:322 +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." -#: prefs.php:94 tt-rss.php:122 mobile/functions.php:60 -#: mobile/functions.php:234 -msgid "Logout" -msgstr "Déconnexion" +#: classes/pref/prefs.php:347 classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "Entrez votre mot de passe" -#: prefs.php:102 tt-rss.php:196 -msgid "Keyboard shortcuts" -msgstr "Raccourcis clavier" +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "Désactiver les mots de passe à usage unique" -#: prefs.php:108 tt-rss.php:114 help/3.php:63 help/4.php:8 -msgid "Preferences" -msgstr "Configuration" +#: classes/pref/prefs.php:364 +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." -#: prefs.php:110 -msgid "Feeds" -msgstr "Flux" +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "Scanner le code suivant avec l'application identificateur :" -#: prefs.php:112 help/4.php:11 -msgid "Filters" -msgstr "Filtres" +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "Veuillez saisir le mot de passe à usage unique" -#: prefs.php:117 help/4.php:13 -msgid "Users" -msgstr "Utilisateurs" +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "Activer les mots de passe à usage unique" -#: prefs.php:140 tt-rss.php:99 -msgid "Fatal Exception" -msgstr "" +#: classes/pref/prefs.php:423 +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." -#: register.php:152 -msgid "New user registrations are administratively disabled." -msgstr "L'inscription de nouveaux utilisateurs est désactivée." +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "Certaines options ne sont disponibles que dans le profil par défaut." -#: register.php:155 register.php:200 register.php:213 register.php:228 -#: register.php:246 register.php:331 register.php:341 register.php:353 -#: update.php:94 update.php:162 modules/pref-feeds.php:954 -msgid "Return to Tiny Tiny RSS" -msgstr "Revenir à Tiny Tiny RSS" +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "Personnaliser" -#: register.php:176 -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'email indiqué. 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." +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "S'inscrire" -#: register.php:182 -msgid "Desired login:" -msgstr "Login souhaité :" +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "Effacer" -#: register.php:185 -msgid "Check availability" -msgstr "Vérifier la disponibilité" +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "Heure du serveur : %s (GMT)" -#: register.php:187 -msgid "Email:" -msgstr "Adresse email :" +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Enregistrer la configuration" -#: register.php:190 -msgid "How much is two plus two:" -msgstr "Combien dont 2 plus 2 :" +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "Sauvegarder et quitter la configuration" -#: register.php:193 -msgid "Submit registration" -msgstr "Envoyer l'inscription" +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "Gérer les profils" -#: register.php:211 -msgid "Your registration information is incomplete." -msgstr "Vos informations d'inscription sont incomplètes." +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "Revenir aux valeurs par défaut" -#: register.php:226 -msgid "Sorry, this username is already taken." -msgstr "Désolé, ce login est déjà utilisé." +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "Plugins" -#: register.php:244 -msgid "Registration failed." -msgstr "L'inscription a échoué" +#: classes/pref/prefs.php:706 +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." -#: register.php:328 -msgid "Account created successfully." -msgstr "Compte créé avec succès." +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "Téléchargez plus de plugins sur le forum ou le wiki de Tiny Tiny RSS." -#: register.php:350 -msgid "New user registrations are currently closed." -msgstr "L'inscription de nouveaux utilisateurs est actuellement fermée." +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "Plugins systèmes" -#: tt-rss.php:118 -msgid "Comments?" -msgstr "Commentaires ?" +#: classes/pref/prefs.php:738 classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "Plugin" -#: tt-rss.php:131 -msgid "Offline reading" -msgstr "Lecture hors-ligne" +#: classes/pref/prefs.php:739 classes/pref/prefs.php:795 +msgid "Description" +msgstr "Description" -#: tt-rss.php:138 -msgid "Cancel synchronization" -msgstr "Annuler la synchronisation" +#: classes/pref/prefs.php:740 classes/pref/prefs.php:796 +msgid "Version" +msgstr "Version" -#: tt-rss.php:141 -msgid "Synchronize" -msgstr "Synchroniser" +#: classes/pref/prefs.php:741 classes/pref/prefs.php:797 +msgid "Author" +msgstr "Auteur" -#: tt-rss.php:143 -msgid "Remove stored data" -msgstr "Supprimer les données stockées" +#: classes/pref/prefs.php:772 classes/pref/prefs.php:831 +msgid "more info" +msgstr "plus d'info" -#: tt-rss.php:145 -msgid "Go offline" -msgstr "Passer hors-ligne" +#: classes/pref/prefs.php:781 classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "Purger les données" -#: tt-rss.php:151 -msgid "New version of Tiny Tiny RSS is available!" -msgstr "Une nouvelle version de Tiny Tiny RSS est disponible !" +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "Plugins utilisateur" -#: tt-rss.php:158 -msgid "Go online" -msgstr "Passer en ligne" +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "Activer les plugins sélectionnés" -#: tt-rss.php:169 tt-rss.js:79 -msgid "tag cloud" -msgstr "nuage de tags" +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "Mot de passe à usage unique incorrect" -#: tt-rss.php:179 -msgid "Search..." -msgstr "Rechercher..." +#: classes/pref/prefs.php:926 classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "Mot de passe incorrect" -#: tt-rss.php:180 -msgid "Feed actions:" -msgstr "Actions sur ce flux :" +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file 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. Ce fichier peut être utilisé comme base de départ." -#: tt-rss.php:181 -msgid "Subscribe to feed..." -msgstr "S'inscrire à un flux..." +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "Création d'un profil" -#: tt-rss.php:182 -msgid "Edit this feed..." -msgstr "Editer ce flux..." +#: classes/pref/prefs.php:1031 classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(actif)" -#: tt-rss.php:183 -msgid "Rescore feed" -msgstr "Recalculer le score du flux" +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "Supprimer les profils sélectionnés" -#: tt-rss.php:184 modules/pref-feeds.php:465 modules/pref-feeds.php:1193 -msgid "Unsubscribe" -msgstr "Se désinscrire" +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "Activer le profil" -#: tt-rss.php:186 -msgid "All feeds:" -msgstr "Tous les flux :" +#: classes/dlg.php:17 +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." -#: tt-rss.php:188 help/3.php:44 -msgid "(Un)hide read feeds" -msgstr "(Dé)Masquer les flux lus" +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "Votre URL OPML publique est :" -#: tt-rss.php:190 -msgid "Other actions:" -msgstr "Autres actions :" +#: classes/dlg.php:57 classes/dlg.php:183 plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "Générer une nouvelle URL" -#: tt-rss.php:193 -msgid "Create filter..." -msgstr "Créer un filtre..." +#: 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." + +#: classes/dlg.php:75 classes/dlg.php:84 +msgid "Last update:" +msgstr "Dernière mise à jour :" -#: tt-rss.php:194 -msgid "Reset UI layout" -msgstr "Ré-initialiser l'affichage" +#: 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 une suspension du processus. Veuillez vérifier son état ou bien contacter l'administrateur." -#: tt-rss.php:195 -msgid "Reset category order" -msgstr "Re-initialiser l'ordre des catégories" +#: classes/dlg.php:174 +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 :" -#: tt-rss.php:205 -msgid "Collapse feedlist" -msgstr "Contracter la liste des flux" +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "Donnée enregistrée (%s, %d)" -#: tt-rss.php:208 -#, fuzzy -msgid "Show articles" -msgstr "Nouveaux articles" +#: plugins/af_psql_trgm/init.php:112 +msgid "Show related articles" +msgstr "Voir les articles liés" -#: tt-rss.php:210 -msgid "Adaptive" -msgstr "Adaptatif" +#: plugins/af_psql_trgm/init.php:118 plugins/af_psql_trgm/init.php:225 +msgid "Mark similar articles as read" +msgstr "Marquer les articles similaires comme lus" -#: tt-rss.php:211 -msgid "All Articles" -msgstr "Tous les articles" +#: plugins/af_psql_trgm/init.php:164 plugins/af_redditimgur/init.php:46 +msgid "Global settings" +msgstr "Paramètres généraux" -#: tt-rss.php:214 -msgid "Ignore Scoring" -msgstr "Ignorer le score" +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "Similarité minimale:" -#: tt-rss.php:215 modules/pref-feeds.php:1316 modules/pref-feeds.php:1377 -msgid "Updated" -msgstr "Mis à jour" +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "Longueur minimale du titre:" -#: tt-rss.php:218 -#, fuzzy -msgid "Sort articles" -msgstr "Marquer comme remarquable" +#: plugins/af_psql_trgm/init.php:178 +msgid "Enable for all feeds:" +msgstr "Activer pour tous les flux:" -#: tt-rss.php:221 modules/popup-dialog.php:462 modules/pref-filters.php:51 -#: modules/pref-filters.php:469 -msgid "Date" -msgstr "Date" +#: plugins/af_psql_trgm/init.php:197 plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "Actuellement activé pour (cliquer pour modifier):" -#: tt-rss.php:223 -msgid "Score" -msgstr "Score" +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "Similarité (pg_trgm)" -#: tt-rss.php:227 modules/pref-feeds.php:296 modules/pref-feeds.php:524 -msgid "Update" -msgstr "Mettre à jour" +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "Flux supportés par af_comics" -#: tt-rss.php:238 tt-rss.php:252 -msgid "No feed selected." -msgstr "Aucun flux sélectionné." +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "Les comics suivants sont actuellement supportés :" -#: tt-rss.php:242 -msgid "Drag me to resize panels" -msgstr "Déplacez-moi pour redimensionner les panneaux" +#: plugins/note/init.php:26 plugins/note/note.js:11 +msgid "Edit article note" +msgstr "Modifier l'annotation de l'article" -#: update.php:19 -msgid "Your access level is insufficient to run this script." -msgstr "Vous n'avez pas les permissions nécessaires pour exécuter ce script." +#: plugins/googlereaderimport/init.php:92 plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "Aucun fichier envoyé." -#: update.php:44 -msgid "Database Updater" -msgstr "Outil de mise à jour de la base de données" +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "Terminé. %d articles sur %d importés." -#: update.php:85 -msgid "Could not update database" -msgstr "Impossible de mettre la base de données à jour" +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "Le format du document n'est pas correct." -#: update.php:88 -msgid "Could not find necessary schema file, need version:" -msgstr "" -"Impossible de trouver le fichier de schéma, version requise :Impossible de " -"trouver le fichier de schéma nécessaire. Version requise :" +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "Importer les articles marqués ou partagés de Google Reader" -#: update.php:89 -msgid ", found: " -msgstr ", trouvée : " +#: plugins/googlereaderimport/init.php:358 +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." -#: update.php:92 -msgid "Tiny Tiny RSS database is up to date." -msgstr "La base de données de Tiny Tiny RSS est à jour." +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "Importer mes éléments partagés" -#: update.php:102 -msgid "Please backup your database before proceeding." -msgstr "" -"Sauvegardez votre base de données avant de poursuivre.Veuillez faire une " -"copie de sauvegarde de votre base de données avant de poursuivre." +#: plugins/mailto/init.php:49 plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[Transféré]" -#: update.php:104 -#, php-format -msgid "" -"Your Tiny Tiny RSS database needs update to the latest version (%d to " -"%d)." -msgstr "" -"La base de données de Tiny Tiny RSS a besoin d'être mise à jour (version %" -"d à %d)." +#: plugins/mailto/init.php:49 plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "Articles multiples" -#: update.php:118 -msgid "Perform updates" -msgstr "Exécuter les mises à jour" +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "Cliquez sur le lien suivant pour ouvrir votre client de messagerie :" -#: update.php:123 -msgid "Performing updates..." -msgstr "Exécution des mises à jour..." +#: plugins/mailto/init.php:75 +msgid "Forward selected article(s) by email." +msgstr "Transférer le ou les article(s) par mail." -#: update.php:129 -#, php-format -msgid "Updating to version %d..." -msgstr "Passage à la version %d..." +#: 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." -#: update.php:142 -msgid "Checking version... " -msgstr "Vérification de la version..." +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "Fermer ce dialogue" -#: update.php:148 -msgid "OK!" -msgstr "OK !" +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "Importer et exporter" -#: update.php:150 -msgid "ERROR!" -msgstr "ERREUR !" +#: plugins/import_export/init.php:60 +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)." -#: update.php:158 -#, php-format -msgid "" -"Finished. Performed %d update(s) up to schema\n" -"\t\t\tversion %d." -msgstr "Terminé. Le schéma est passé de la version %d à %d." +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "Exporter mes données" -#: modules/help.php:6 -msgid "Help" -msgstr "Aide" +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Importer" -#: modules/help.php:17 -msgid "Help topic not found." -msgstr "Sujet non trouvé dans l'aide." +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "Import impossible : version du schéma incorrecte." -#: modules/opml_domdoc.php:52 modules/opml_domxml.php:54 -#, fuzzy, php-format -msgid "
  • Adding category %s.
  • " -msgstr "Ajout de la catégorie %s." +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "Import impossible : format de document non reconnu." -#: modules/opml_domdoc.php:101 modules/opml_domxml.php:103 -#, fuzzy -msgid "is already imported." -msgstr "Déjà importé" +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "Fini : " -#: modules/opml_domdoc.php:121 modules/opml_domxml.php:122 -#, fuzzy -msgid "OK" -msgstr "OK !" +#: plugins/import_export/init.php:388 +#, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "%d article traité, " +msgstr[1] "%d articles traités, " -#: modules/opml_domdoc.php:130 modules/opml_domxml.php:134 -msgid "Error while parsing document." -msgstr "Erreur lors de l'analyse du document." +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "%d importé, " +msgstr[1] "%d importés, " -#: modules/opml_domdoc.php:134 modules/opml_domxml.php:138 -msgid "Error: please upload OPML file." -msgstr "Erreur : veuillez envoyer un document OPML." +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "%d flux créé." +msgstr[1] "%d flux créés." -#: modules/opml_domxml.php:131 -msgid "Error: can't find body element." -msgstr "Erreur : impossible de trouver la balise body." +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "Impossible de charger le document XML." -#: modules/popup-dialog.php:7 -#, fuzzy -msgid "OPML Import" -msgstr "Importer" +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "Préparer les données" -#: modules/popup-dialog.php:34 -#, fuzzy -msgid "Importing using DOMXML." -msgstr "Importation OPML (utilisant l'extension DOMXML)..." +#: plugins/nsfw/init.php:30 plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "Non convenable au travail (cliquer pour basculer)" -#: modules/popup-dialog.php:40 -#, fuzzy -msgid "Importing using DOMDocument." -msgstr "Importation OPML (utilisation l'extension DOMDocument)..." +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "Plugin NSFW" -#: modules/popup-dialog.php:68 -msgid "Settings Profiles" -msgstr "" +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "Tags à considérer non convenables au travail (séparés par des virgules)" -#: modules/popup-dialog.php:75 -#, fuzzy -msgid "Create profile" -msgstr "Créer un filtre" +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "La configuration a été enregistrée." -#: modules/popup-dialog.php:100 modules/popup-dialog.php:128 -#, fuzzy -msgid "(active)" -msgstr "Adaptatif" +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "Veuillez saisir votre mot de passe à usage unique :" -#: modules/popup-dialog.php:148 modules/popup-dialog.php:350 -#: modules/pref-feeds.php:455 modules/pref-feeds.php:1136 -#: modules/pref-filters.php:153 modules/pref-filters.php:321 -#: modules/pref-labels.php:140 modules/pref-users.php:378 -msgid "Remove" -msgstr "Supprimer" +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "Le mot de passe a été modifié." -#: modules/popup-dialog.php:150 -#, fuzzy -msgid "Activate" -msgstr "Adaptatif" +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "L'ancien mot de passe n'est pas correct." -#: modules/popup-dialog.php:163 -#, fuzzy -msgid "Published Articles" -msgstr "Articles publiés" +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "Fermer l'article" -#: modules/popup-dialog.php:168 -#, fuzzy -msgid "Your Published articles feed URL is:" -msgstr "Lien vers le flux des articles publiés." +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "Adresses de courriel enregistrées." -#: modules/popup-dialog.php:177 -#, fuzzy -msgid "Generate new URL" -msgstr "Flux généré" +#: plugins/mail/init.php:34 +msgid "Mail plugin" +msgstr "Plugin de courriel" -#: modules/popup-dialog.php:190 -msgid "Notice" -msgstr "Avertissement" +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "Vous pouvez prédéfinir des adresses de courriel (séparées par des virgules):" -#: modules/popup-dialog.php:196 -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." +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "À :" -#: modules/popup-dialog.php:200 modules/popup-dialog.php:220 -msgid "Last update:" -msgstr "Dernière mise à jour :" +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "Sujet :" -#: modules/popup-dialog.php:208 -msgid "" -"You are running the latest version of Tiny Tiny RSS. The fact that you are " -"seeing this dialog is probably a bug." -msgstr "" -"Vous utilisez la dernière version de Tiny Tiny RSS. Si vous pouvez lire ce " -"message, vous avez sans doute trouvé un bug." +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "Envoyer le mail" -#: modules/popup-dialog.php:216 -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." +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "Instances liées" -#: modules/popup-dialog.php:239 -msgid "Subscribe to Feed" -msgstr "S'inscrire à un flux" +#: plugins/instances/init.php:204 plugins/instances/init.php:395 +msgid "Instance" +msgstr "Instance" -#: modules/popup-dialog.php:248 modules/pref-feeds.php:197 -#: modules/pref-feeds.php:488 modules/pref-filters.php:407 -msgid "Feed" -msgstr "Flux" +#: plugins/instances/init.php:215 plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "URL de l'instance" -#: modules/popup-dialog.php:251 modules/pref-feeds.php:213 -#: modules/pref-feeds.php:502 -msgid "URL:" -msgstr "URL du flux :" +#: plugins/instances/init.php:226 plugins/instances/init.php:414 +msgid "Access key:" +msgstr "Clef d'accès :" -#: modules/popup-dialog.php:260 modules/pref-feeds.php:225 -#: modules/pref-feeds.php:514 -msgid "Place in category:" -msgstr "Placer dans la catégorie :" +#: plugins/instances/init.php:229 plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "Clef d'accès" -#: modules/popup-dialog.php:268 modules/pref-feeds.php:332 -#: modules/pref-feeds.php:558 modules/pref-prefs.php:235 -#: modules/pref-users.php:142 -msgid "Authentication" -msgstr "Identification" +#: 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." -#: modules/popup-dialog.php:283 -msgid "This feed requires authentication." -msgstr "Ce flux nécessite une identification." +#: plugins/instances/init.php:241 plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "Générer une nouvelle clef" -#: modules/popup-dialog.php:289 modules/popup-dialog.php:349 -msgid "Subscribe" -msgstr "S'inscrire" +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "Lier une instance" -#: modules/popup-dialog.php:290 -#, fuzzy -msgid "More feeds" -msgstr "D'autres flux" +#: 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 :" -#: modules/popup-dialog.php:291 modules/popup-dialog.php:351 -#: modules/popup-dialog.php:425 modules/popup-dialog.php:543 -#: modules/popup-dialog.php:612 modules/pref-feeds.php:468 -#: modules/pref-feeds.php:623 modules/pref-filters.php:160 -#: modules/pref-users.php:181 -msgid "Cancel" -msgstr "Annuler" +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "Dernière connexion" -#: modules/popup-dialog.php:298 -msgid "Feed Browser" -msgstr "Navigateur de flux" +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "État" -#: modules/popup-dialog.php:317 modules/popup-dialog.php:359 -#: modules/popup-dialog.php:424 modules/pref-feeds.php:1177 -#: modules/pref-filters.php:308 modules/pref-labels.php:131 -#: modules/pref-users.php:361 -msgid "Search" -msgstr "Rechercher" +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "Flux stockés" -#: modules/popup-dialog.php:321 -#, fuzzy -msgid "Popular feeds" -msgstr "afficher les flux" +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "Créer un lien" -#: modules/popup-dialog.php:322 -#, fuzzy -msgid "Feed archive" -msgstr "Actions sur ce flux" +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "Réglages af_redditimgur" -#: modules/popup-dialog.php:325 -#, fuzzy -msgid "limit:" -msgstr "Limite :" +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "Extraire le contenu manquant avec Readability" -#: modules/popup-dialog.php:371 -msgid "Look for" -msgstr "" +#: plugins/af_redditimgur/init.php:69 +msgid "Configuration saved" +msgstr "La configuration a été enregistrée" -#: modules/popup-dialog.php:378 -#, fuzzy -msgid "match on" -msgstr "correspond à :" +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "Réglages af_readability" -#: modules/popup-dialog.php:383 -msgid "Title or content" -msgstr "Titre ou contenu" +#: plugins/af_readability/init.php:57 +msgid "Readability" +msgstr "Readability" -#: modules/popup-dialog.php:388 -msgid "Limit search to:" -msgstr "Restreindre la recherche à :" +#: plugins/af_readability/init.php:68 +msgid "Inline article content" +msgstr "Simplifier le contenu de l'article" -#: modules/popup-dialog.php:404 -msgid "This feed" -msgstr "Ce flux" +#: plugins/vf_shared/init.php:16 plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "Articles partagés" -#: modules/popup-dialog.php:438 -msgid "Create Filter" -msgstr "Créer un filtre" +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "+1" -#: modules/popup-dialog.php:457 modules/pref-filters.php:42 -#: modules/pref-filters.php:406 -msgid "Match" -msgstr "Correspondance" +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "-1" -#: modules/popup-dialog.php:465 modules/pref-filters.php:54 -#: modules/pref-filters.php:441 -msgid "before" -msgstr "avant" +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "Afficher l'info du classifieur" -#: modules/popup-dialog.php:466 modules/pref-filters.php:55 -#: modules/pref-filters.php:442 -msgid "after" -msgstr "après" +#: plugins/af_sort_bayes/init.php:216 +msgid "Statistics" +msgstr "Statistiques" -#: modules/popup-dialog.php:478 modules/pref-filters.php:68 -msgid "Check it" -msgstr "Vérifier" +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "Nombre de mots MOCHES nécessaires pour le tri automatique: %d" -#: modules/popup-dialog.php:481 modules/pref-filters.php:71 -msgid "on field" -msgstr "sur le champ" +#: plugins/af_sort_bayes/init.php:235 +msgid "Last matched articles" +msgstr "Derniers articles correspondants" -#: modules/popup-dialog.php:487 modules/pref-filters.php:77 -msgid "in" -msgstr "dans" +#: plugins/af_sort_bayes/init.php:253 +msgid "Clear database" +msgstr "Vider la base" -#: modules/popup-dialog.php:492 modules/pref-filters.php:82 -msgid "Perform Action" -msgstr "Exécuter l'action" +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "Classifieur Bayésien (af_sort_bayes)" -#: modules/popup-dialog.php:509 modules/pref-filters.php:102 -msgid "with parameters:" -msgstr "avec les paramètres :" +#: plugins/af_sort_bayes/init.php:376 +#, php-format +msgid "Currently stored as: %s" +msgstr "Actuellement stocké comme: %s" -#: modules/popup-dialog.php:522 modules/pref-feeds.php:355 -#: modules/pref-feeds.php:576 modules/pref-filters.php:121 -#: modules/pref-users.php:164 -msgid "Options" -msgstr "Options" +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "Résultat du classifieur" -#: modules/popup-dialog.php:528 modules/pref-filters.php:133 -msgid "Enabled" -msgstr "Activé" +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "Bookmarklets" -#: modules/popup-dialog.php:531 modules/pref-filters.php:142 -msgid "Inverse match" -msgstr "Correspondance inverse" +#: 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." -#: modules/popup-dialog.php:541 -msgid "Create" -msgstr "Créer" +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "S'abonner à %s dans Tiny Tiny RSS ?" -#: modules/popup-dialog.php:555 -msgid "Update Errors" -msgstr "Erreurs de mise à jour" +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "S'abonner dans Tiny Tiny RSS" -#: modules/popup-dialog.php:558 -msgid "These feeds have not been updated because of errors:" -msgstr "Ces flux n'ont pas été mis à jour à cause d'erreurs :" +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "Utilisez ce bookmarklet pour publier des pages avec Tiny Tiny RSS" -#: modules/popup-dialog.php:584 -msgid "Edit Tags" -msgstr "Editer les tags" +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "Vous pouvez désactiver tous les articles partagés par URL unique ici." -#: modules/popup-dialog.php:589 -msgid "Tags for this article (separated by commas):" -msgstr "Tags pour cet article (séparés par des virgules) :" +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "Désactiver le partage pour tous les articles" -#: modules/popup-dialog.php:611 modules/pref-feeds.php:467 -#: modules/pref-feeds.php:621 modules/pref-filters.php:157 -#: modules/pref-users.php:179 -msgid "Save" -msgstr "Enregistrer" +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "Partager par URL" -#: modules/popup-dialog.php:620 -#, fuzzy -msgid "Tag Cloud" -msgstr "Nuage de tags" +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "Vous pouvez partager cet article avec l'URL unique suivante :" -#: modules/popup-dialog.php:623 -msgid "Showing most popular tags " -msgstr "Affichage les tags les plus populaires " +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "Annuler le partage de l'article" -#: modules/popup-dialog.php:624 -#, fuzzy -msgid "more tags" -msgstr "aucun tag" +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "L'erreur sera reportée vers la destination configurée." -#: modules/pref-feeds.php:4 -msgid "Check to enable field" -msgstr "Cocher pour activer le champ" +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "Signaler sur tt-rss.org" -#: modules/pref-feeds.php:187 -msgid "Feed Editor" -msgstr "Éditeur de flux" +#: js/functions.js:93 +msgid "Close" +msgstr "Fermer" -#: modules/pref-feeds.php:242 -msgid "Link to feed:" -msgstr "Lier au flux :" +#: js/functions.js:104 +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will 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 et votre configuration tt-rss. Votre adresse IP sera sauvegardée dans la base de données." -#: modules/pref-feeds.php:259 -msgid "Not linked" -msgstr "Non lié" +#: js/functions.js:224 +msgid "Click to close" +msgstr "Cliquez pour fermer" -#: modules/pref-feeds.php:310 modules/pref-feeds.php:537 -msgid "using" -msgstr "en utilisant" +#: js/functions.js:1051 +msgid "Edit action" +msgstr "Modifier l'action" -#: modules/pref-feeds.php:322 modules/pref-feeds.php:549 -msgid "Article purging:" -msgstr "Purge des articles :" +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "Créer un filtre" -#: modules/pref-feeds.php:369 modules/pref-feeds.php:582 -#, fuzzy -msgid "Hide from Popular feeds" -msgstr "Masquer dans la liste de « Mes flux »" +#: js/functions.js:1218 +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." -#: modules/pref-feeds.php:380 modules/pref-feeds.php:587 -msgid "Right-to-left content" -msgstr "Contenu écrit de droite à gauche" +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "Abonnement réinitialisé." -#: modules/pref-feeds.php:392 modules/pref-feeds.php:593 -msgid "Include in e-mail digest" -msgstr "Inclure dans la synthèse quotidienne par courrier électronique" +#: js/functions.js:1239 js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "Se désabonner de %s ?" -#: modules/pref-feeds.php:405 modules/pref-feeds.php:599 -msgid "Always display image attachments" -msgstr "" +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "Suppression du flux..." -#: modules/pref-feeds.php:427 modules/pref-feeds.php:607 -msgid "Cache images locally" -msgstr "Enregistrer localement les images" +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "Veuillez saisir un titre pour cette catégorie :" -#: modules/pref-feeds.php:439 -msgid "Icon" -msgstr "" +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "Générer une nouvelle adresse d'abonnement pour ce flux ?" -#: modules/pref-feeds.php:453 -msgid "Replace" -msgstr "" +#: js/functions.js:1384 js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Changement de l'adresse..." -#: modules/pref-feeds.php:478 -msgid "Multiple Feed Editor" -msgstr "Éditeur de flux multiple" +#: js/functions.js:1685 js/functions.js:1795 js/prefs.js:414 js/prefs.js:444 +#: js/prefs.js:476 js/prefs.js:629 js/prefs.js:649 js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "Aucun flux sélectionné." -#: modules/pref-feeds.php:842 modules/pref-feeds.php:889 -msgid "All done." -msgstr "Tout est terminé." +#: js/functions.js:1727 +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." -#: modules/pref-feeds.php:920 -#, php-format -msgid "Subscribed to %s." -msgstr "Inscrit à %s." +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "Flux avec des erreurs de mise à jour" -#: modules/pref-feeds.php:923 -#, fuzzy, php-format -msgid "Could not subscribe to %s." -msgstr "Déjà inscrit à %s." +#: js/functions.js:1777 js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "Supprimer les flux sélectionnés ?" -#: modules/pref-feeds.php:926 -#, php-format -msgid "Already subscribed to %s." -msgstr "Déjà inscrit à %s." +#: js/functions.js:1780 js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "Suppression des flux sélectionnés..." -#: modules/pref-feeds.php:949 -msgid "Edit subscription options" -msgstr "Editer les options d'inscription" +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "Modifier la catégorie" -#: modules/pref-feeds.php:1033 -msgid "Category editor" -msgstr "Éditeur de catégorie" +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "Supprimer la catégorie" -#: modules/pref-feeds.php:1056 -#, php-format -msgid "Category $%s already exists in the database." -msgstr "La catégorie %s existe déjà dans la base de données." +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "Inverser" -#: modules/pref-feeds.php:1077 -msgid "Create category" -msgstr "Créer la catégorie" +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "Veuillez saisir l'identifiant :" -#: modules/pref-feeds.php:1130 -msgid "No feed categories defined." -msgstr "Aucune catégorie de flux définie." +#: 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é." -#: modules/pref-feeds.php:1160 -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)" +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "Ajout de l'utilisateur..." -#: modules/pref-feeds.php:1181 help/3.php:45 help/4.php:22 -msgid "Subscribe to feed" -msgstr "S'inscrire à un flux" +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Éditeur d'utilisateur" -#: modules/pref-feeds.php:1184 -#, fuzzy -msgid "Edit feeds" -msgstr "Editer le flux" +#: js/prefs.js:99 js/prefs.js:211 js/prefs.js:736 +#: plugins/instances/instances.js:26 plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "Enregistrement des données..." -#: modules/pref-feeds.php:1189 -msgid "Edit categories" -msgstr "Editer les catégories" +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "Modifier le filtre" -#: modules/pref-feeds.php:1198 -#, fuzzy -msgid "More actions..." -msgstr "Actions..." +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "Supprimer le filtre ?" -#: modules/pref-feeds.php:1202 -msgid "Manual purge" -msgstr "Purger manuellement" +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "Suppression du filtre..." -#: modules/pref-feeds.php:1206 -msgid "Clear feed data" -msgstr "Purger les données de flux" +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "Supprimer les étiquettes sélectionnées ?" -#: modules/pref-feeds.php:1207 modules/pref-filters.php:324 -msgid "Rescore articles" -msgstr "Recalculer le score des articles" +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "Suppression des étiquettes sélectionnées..." -#: modules/pref-feeds.php:1296 -msgid "Show last article times" -msgstr "Afficher l'heure du dernier article" +#: js/prefs.js:312 js/prefs.js:1380 +msgid "No labels are selected." +msgstr "Aucune étiquette sélectionnée." -#: modules/pref-feeds.php:1313 modules/pref-feeds.php:1373 -#, fuzzy -msgid "Last Article" -msgstr "Dernier article" +#: js/prefs.js:326 +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." -#: modules/pref-feeds.php:1398 modules/pref-filters.php:487 -#: modules/pref-users.php:467 -msgid "Click to edit" -msgstr "Cliquer pour éditer" +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "Suppression des utilisateurs sélectionnés..." -#: modules/pref-feeds.php:1412 -#, php-format -msgid "(linked to %s)" -msgstr "(lié à %s)" +#: js/prefs.js:343 js/prefs.js:487 js/prefs.js:508 js/prefs.js:547 +msgid "No users are selected." +msgstr "Aucun utilisateur sélectionné." -#: modules/pref-feeds.php:1439 -#, fuzzy -msgid "You don't have any subscribed feeds." -msgstr "Vous ne pouvez pas vous désinscrire de la catégorie." +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "Supprimer les filtres sélectionnés ?" -#: modules/pref-feeds.php:1441 -#, fuzzy -msgid "No matching feeds found." -msgstr "Aucun filtre correspondant trouvé." +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "Suppression des filtres sélectionnés..." -#: modules/pref-feeds.php:1447 -msgid "OPML" -msgstr "OPML" +#: js/prefs.js:376 js/prefs.js:584 js/prefs.js:603 +msgid "No filters are selected." +msgstr "Aucun filtre sélectionné." -#: modules/pref-feeds.php:1470 -msgid "Import" -msgstr "Importer" +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "Se désabonner des flux sélectionnés ?" -#: modules/pref-feeds.php:1475 -msgid "Export OPML" -msgstr "Exporter en OPML" +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "Désabonnement des flux sélectionnés..." -#: modules/pref-feeds.php:1478 -msgid "Firefox Integration" -msgstr "Intégration à Firefox" +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "Veuillez sélectionner un seul flux." -#: modules/pref-feeds.php:1480 -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." +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "Supprimer tous les articles non-remarquables dans le flux sélectionné ?" -#: modules/pref-feeds.php:1487 -msgid "Click here to register this site as a feed reader." -msgstr "Cliquer ici pour enregistrer ce site comme lecteur de flux." +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "Nettoyage du flux sélectionné..." -#: modules/pref-feeds.php:1498 -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 inscrire." +#: js/prefs.js:457 +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) ?" -#: modules/pref-feeds.php:1501 -msgid "Display URL" -msgstr "" +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "Purge du flux sélectionné..." -#: modules/pref-feeds.php:1604 -#, fuzzy, php-format -msgid "%d archived articles" -msgstr "Articles remarquables" +#: js/prefs.js:492 js/prefs.js:513 js/prefs.js:552 +msgid "Please select only one user." +msgstr "Veuillez sélectionner un seul utilisateur." -#: modules/pref-feeds.php:1633 -msgid "No feeds found." -msgstr "Aucun flux trouvé." +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "Ré-initialiser le mot de passe de l'utilisateur sélectionné ?" -#: modules/pref-filters.php:23 -msgid "Filter Editor" -msgstr "Éditeur de filtre" +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "Ré-initialisation du mot de passe de l'utilisateur sélectionné..." -#: modules/pref-filters.php:212 -#, php-format -msgid "Saved filter %s" -msgstr "Filtre %s enregistré" +#: js/prefs.js:565 +msgid "User details" +msgstr "Détails de l'utilisateur" -#: modules/pref-filters.php:266 -#, php-format -msgid "Created filter %s" -msgstr "Filtre %s créé" +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "Veuillez sélectionner un seul filtre." -#: modules/pref-filters.php:315 help/3.php:31 help/4.php:25 -msgid "Create filter" -msgstr "Créer un filtre" +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "Combiner les filtres sélectionnés ?" -#: modules/pref-filters.php:318 modules/pref-users.php:376 -msgid "Edit" -msgstr "Editer" +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "Rapprochement des filtres..." -#: modules/pref-filters.php:408 -msgid "Field" -msgstr "Champs" +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "Modifier plusieurs flux" -#: modules/pref-filters.php:409 -msgid "Params" -msgstr "Paramètres" +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "Enregistrer les modifications aux flux sélectionnés ?" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "Import OPML" -#: modules/pref-filters.php:476 -msgid "(Disabled)" -msgstr "(Désactivé)" +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "Veuillez d'abord sélectionner un fichier OPML." -#: modules/pref-filters.php:492 -msgid "(Inverse)" -msgstr "(Inverse)" +#: js/prefs.js:802 plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "Import en cours, veuillez patienter..." -#: modules/pref-filters.php:512 -msgid "No filters defined." -msgstr "Aucun filtre défini." +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "Revenir aux valeurs par défaut ?" -#: modules/pref-filters.php:514 -msgid "No matching filters found." -msgstr "Aucun filtre correspondant trouvé." +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "Abonnement aux flux..." -#: modules/pref-labels.php:102 -#, php-format -msgid "Created label %s" -msgstr "Etiquette %s créé" +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "Effacer les données pour ce plugin ?" -#: modules/pref-labels.php:137 help/3.php:30 help/4.php:26 -msgid "Create label" -msgstr "Créer une étiquette" +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "Vider le journal des erreurs ?" -#: modules/pref-labels.php:143 -msgid "Clear colors" -msgstr "Ré-initialiser les couleurs" +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "Marquer tous les articles comme lus ?" -#: modules/pref-labels.php:223 -msgid "Click to change color" -msgstr "Cliquer pour changer la couleur" +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "Marquage de tous les flux comme lus..." -#: modules/pref-labels.php:246 -msgid "No labels defined." -msgstr "Aucune étiquette définie." +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "Veuillez d'abord activer le plugin mail." -#: modules/pref-labels.php:248 -msgid "No matching labels found." -msgstr "Aucune étiquette correspondante trouvée." +#: js/tt-rss.js:434 js/functions.js:1571 js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "Vous ne pouvez pas modifier ce type de flux." -#: modules/pref-labels.php:306 -msgid "custom color:" -msgstr "couleur personnalisée" +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "Veuillez d'abord activer le plugin embed_original." -#: modules/pref-labels.php:307 -msgid "foreground" -msgstr "avant-plan" +#: js/tt-rss.js:518 js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "L'écran large n'est pas disponible en mode combiné." -#: modules/pref-labels.php:308 -msgid "background" -msgstr "arrière-plan" +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "Vous ne pouvez pas recalculer le score de ce type de flux." -#: modules/pref-prefs.php:37 -msgid "Old password cannot be blank." -msgstr "L'ancien mot de passe ne peut pas être vide." +#: js/tt-rss.js:835 js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "Veuillez d'abord sélectionner un flux." -#: modules/pref-prefs.php:42 -msgid "New password cannot be blank." -msgstr "Le nouveau mot de passe ne peut pas être vide." +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "Recalculer le score des articles de %s ?" -#: modules/pref-prefs.php:47 -msgid "Entered passwords do not match." -msgstr "Les mots de passe saisie ne sont pas identiques." +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "Recalcul des scores des articles..." -#: modules/pref-prefs.php:74 -msgid "Password has been changed." -msgstr "Le mot de passe a été modifié." +#: js/viewfeed.js:1010 js/viewfeed.js:1053 js/viewfeed.js:1106 +#: js/viewfeed.js:2266 plugins/mailto/init.js:7 plugins/mail/mail.js:7 +#: js/viewfeed.js:734 js/viewfeed.js:762 js/viewfeed.js:789 js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "Aucun article sélectionné." -#: modules/pref-prefs.php:76 -msgid "Old password is incorrect." -msgstr "L'ancien mot de passe n'est pas correct." +#: js/viewfeed.js:1018 +#, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "Supprimer %d article sélectionné de %s ?" +msgstr[1] "Supprimer les %d articles sélectionnés de %s ?" + +#: js/viewfeed.js:1020 +#, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "Supprimer %d article sélectionné ?" +msgstr[1] "Supprimer les %d articles sélectionnés ?" + +#: js/viewfeed.js:1062 +#, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "Archiver %d article sélectionné de %s ?" +msgstr[1] "Archiver les %d articles sélectionnés de %s ?" + +#: js/viewfeed.js:1065 +#, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "Restaurer %d article archivé ?" +msgstr[1] "Restaurer %d articles archivés ?" + +#: js/viewfeed.js:1067 +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:1112 +#, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "Marquer %d article sélectionné de %s comme lu ?" +msgstr[1] "Marquer %d articles sélectionnés de %s comme lus ?" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "Modifier les tags de l'article" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "Sauvegarde des tags de l'article..." + +#: js/viewfeed.js:1298 js/viewfeed.js:109 js/viewfeed.js:160 +#: js/viewfeed.js:177 +msgid "Click to open next unread feed." +msgstr "Cliquez pour aller au prochain flux non lu" + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "Ouvrir l'article original" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Assigner l'étiquette" -#: modules/pref-prefs.php:104 -msgid "The configuration was saved." -msgstr "La configuration a été enregistrée." +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "Supprimer l'étiquette" -#: modules/pref-prefs.php:120 -#, php-format -msgid "Unknown option: %s" -msgstr "Option inconnue : %s" +#: js/viewfeed.js:2159 +msgid "Select articles in group" +msgstr "Sélectionner les articles du groupe" -#: modules/pref-prefs.php:131 -msgid "E-mail has been changed." -msgstr "L'adresse électronique a été modifiée." +#: js/viewfeed.js:2168 +msgid "Mark group as read" +msgstr "Marquer le groupe comme lu" -#: modules/pref-prefs.php:171 -msgid "" -"Your password is at default value, \n" -"\t\t\t\t\t\tplease change it." -msgstr "" -"Le mot de passe actuel est celui par défaut.\n" -"\t\t\t\t\t\tVeuillez le modifier." +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "Marquer le flux comme lu" -#: modules/pref-prefs.php:198 -msgid "Personal data" -msgstr "Données personnelles" +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "Nouveau score des articles sélectionnés :" -#: modules/pref-prefs.php:205 -msgid "E-mail" -msgstr "Adresse électronique" +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "Nouveau score pour cet article :" -#: modules/pref-prefs.php:216 -msgid "Access level" -msgstr "Permissions" +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "URL de l'article :" -#: modules/pref-prefs.php:229 -msgid "Change e-mail" -msgstr "Modifier l'adresse électronique" +#: 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." -#: modules/pref-prefs.php:237 -msgid "Old password" -msgstr "Ancien mot de passe" +#: plugins/af_psql_trgm/init.js:11 +msgid "Related articles" +msgstr "Articles liés" + +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "Sauvegarde de l'annotation de l'article..." -#: modules/pref-prefs.php:244 -msgid "New password" -msgstr "Nouveau mot de passe" +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Import Google Reader" -#: modules/pref-prefs.php:252 -msgid "Confirm password" -msgstr "Confirmation du mot de passe" +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "Veuillez d'abord choisir le fichier." -#: modules/pref-prefs.php:268 -msgid "Change password" -msgstr "Modifier le mot de passe" +#: plugins/mailto/init.js:21 plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "Transférer l'article par email" -#: modules/pref-prefs.php:323 -msgid "Select theme" -msgstr "Sélectionner un thème" +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "Exporter les données" -#: modules/pref-prefs.php:383 modules/pref-prefs.php:388 -msgid "Yes" -msgstr "Oui" +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "Terminé, %d article exporté. Vous pouvez télécharger les données ici." +msgstr[1] "Terminé, %d articles exportés. Vous pouvez télécharger les données ici." -#: modules/pref-prefs.php:385 modules/pref-prefs.php:388 -msgid "No" -msgstr "Non" +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Import de données" -#: modules/pref-prefs.php:409 -msgid "Save configuration" -msgstr "Enregistrer la configuration" +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "Veuillez d'abord choisir le fichier." -#: modules/pref-prefs.php:412 -msgid "Manage profiles" -msgstr "" +#: plugins/shorten_expanded/init.js:37 +msgid "Click to expand article" +msgstr "Cliquer pour développer l'article" -#: modules/pref-prefs.php:415 -msgid "Reset to defaults" -msgstr "Revenir aux valeurs par défaut" +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "Erreur à l'envoi du courriel:" -#: modules/pref-users.php:7 -msgid "Your access level is insufficient to open this tab." -msgstr "Vous n'avez pas les permissions nécessaires pour ouvrir cet onglet." +#: plugins/mail/mail.js:38 +msgid "Your message has been sent." +msgstr "Votre message a été envoyé." -#: modules/pref-users.php:17 -msgid "User details" -msgstr "Détails de l'utilisateur" +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "Lier l'instance" -#: modules/pref-users.php:31 -msgid "User not found" -msgstr "Utilisateur non trouvé" +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "Modifier l'instance" -#: modules/pref-users.php:50 modules/pref-users.php:428 -msgid "Registered" -msgstr "Abonné" +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "Supprimer les instances sélectionnées ?" -#: modules/pref-users.php:51 -msgid "Last logged in" -msgstr "Dernière connexion" +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "Suppression des instances sélectionnées..." -#: modules/pref-users.php:58 -msgid "Subscribed feeds count" -msgstr "Nombre d'abonnements à des flux" +#: plugins/instances/instances.js:139 plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "Aucune instance sélectionnée." -#: modules/pref-users.php:62 -msgid "Subscribed feeds" -msgstr "Abonnements à des flux" +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "Veuillez ne sélectionner qu'une instance." -#: modules/pref-users.php:108 -msgid "User Editor" -msgstr "Éditeur d'utilisateur" +#: plugins/af_sort_bayes/init.js:26 +msgid "Clear classifier database?" +msgstr "Effacer la base du classifieur ?" -#: modules/pref-users.php:145 -msgid "Access level: " -msgstr "Permissions :" +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "Information du classifieur" -#: modules/pref-users.php:158 -msgid "Change password to" -msgstr "Nouveau mot de passe" +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "Partager l'article par URL" -#: modules/pref-users.php:167 -msgid "E-mail: " -msgstr "Adresse email :" +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "Générer une nouvelle adresse de partage pour cet article ?" -#: modules/pref-users.php:201 -#, php-format -msgid "Changed password of user %s." -msgstr "Mot de passe de l'utilisateur %s modifié." +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "Tentative de changement de l'adresse..." -#: modules/pref-users.php:249 -#, php-format -msgid "Added user %s with password %s" -msgstr "Utilisateur %s ajouté avec le mot de passe %s" +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "Annuler le partage de cet article ?" -#: modules/pref-users.php:256 -#, php-format -msgid "Could not create user %s" -msgstr "Impossible de créer l'utilisateur %s" +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "Tentative d'annulation de partage ..." -#: modules/pref-users.php:260 -#, php-format -msgid "User %s already exists." -msgstr "L'utilisateur %s existe déjà." +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "Ceci va invalider tous les articles partagés par URL. Souhaitez-vous continuer ?" -#: modules/pref-users.php:280 -#, php-format -msgid "" -"Changed password of user %s\n" -"\t\t\t\t\t to %s" -msgstr "" -"Mot de passe de l'utilisateur %s\n" -"\t\t\t\t\tmodifié en %s" +#: plugins/share/share_prefs.js:6 js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "Nettoyage des URL..." -#: modules/pref-users.php:284 -#, php-format -msgid "Notifying %s." -msgstr "Notification %s." +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "URL partagées supprimées." -#: modules/pref-users.php:321 -msgid "[tt-rss] Password change notification" -msgstr "[tt-rss] Notification de changement de mot passe" +#: js/feedlist.js:416 js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "Marquer tous les articles de %s comme lus ?" -#: modules/pref-users.php:370 help/4.php:27 -msgid "Create user" -msgstr "Créer l'utilisateur" +#: js/feedlist.js:435 +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "Marquer tous les articles de %s âgés d'au moins 1 jour comme lus ?" -#: modules/pref-users.php:374 -#, fuzzy -msgid "Details" -msgstr "Une fois par jour" +#: js/feedlist.js:438 +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "Marquer tous les articles de %s âgés d'au moins 1 semaine comme lus ?" -#: modules/pref-users.php:380 -msgid "Reset password" -msgstr "Réinitialiser le mot de passe" +#: js/feedlist.js:441 +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "Marquer tous les articles de %s âgés d'au moins 2 semaines comme lus ?" -#: modules/pref-users.php:426 -msgid "Login" -msgstr "Se connecter" +#: js/functions.js:615 +msgid "Error explained" +msgstr "Erreur expliquée" -#: modules/pref-users.php:427 -msgid "Access Level" -msgstr "Permissions" +#: js/functions.js:697 +msgid "Upload complete." +msgstr "Envoi terminé." -#: modules/pref-users.php:429 -msgid "Last login" -msgstr "Dernière connexion" +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "Supprimer l'icône de flux stockée ?" -#: modules/pref-users.php:487 -msgid "No users defined." -msgstr "Aucun utilisateur défini." +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "Suppression de l'icône du flux..." -#: modules/pref-users.php:489 -msgid "No matching users found." -msgstr "Aucun utilisateur correspondant trouvé." +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "Icône du flux supprimée." -#: help/2.php:1 -msgid "Content filtering" -msgstr "Filtrage de contenu" +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "Veuillez sélectionner une image à envoyer." -#: help/2.php:3 -msgid "" -"Tiny Tiny RSS has support for filtering (or processing) articles. Filtering " -"is done once, when new article is imported to the database from the " -"newsfeed, specified field is matched against regular expression and some " -"action is taken. Regular expression matching is case-insensitive." -msgstr "" -"Tiny Tiny RSS permet le filtrage (ou le traitement) d'articles. Le filtrage " -"est effectué une seule foi, lors le nouvel article est importé en base " -"depuis le flux rss le champ spécifié est comparé à l'expression régulière et " -"une action est effectuée.La comparaison des expressions régulières est " -"insensible à la casse." +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "Envoyer une nouvelle icône pour ce flux ?" -#: help/2.php:5 -msgid "" -"Supported actions are: filter (do not import) article, mark article as read, " -"set starred, assign tag(s), and set score. Filters can be defined globally " -"and for some specific feed." -msgstr "" -"Les actions possibles sont : filtrer (ne pas importer) l'article, marquer " -"l'article comme lu, marquer comme remarquable, assigner un ou plusieurs tags " -"et assigner un score. Les filtres peuvent être définis globalement ou pour " -"un flux uniquement." +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "Envoi en cours, veuillez patienter..." -#: help/2.php:7 -msgid "" -"Multiple and inverse matching are supported. All matching filters are " -"considered when article is being imported and all actions executed in " -"sequence. Inverse matching reverts matching result, e.g. filter matching " -"XYZZY in title with inverse flag will match all articles, except those " -"containing string XYZZY in title." -msgstr "" -"Les correspondances multiples et inverses sont possibles. Tous les filtres " -"de correspondance sont activés quand un article est importé et les actions " -"sont exécutées de manière séquentielle. La correspondance inverse a pour " -"effet d'inverser le résultat de la correspondance. Par exemple le filtre de " -"correspondance XYZZY dans le titre avec l'option d'inversion sélectionnera " -"tous les articles sauf ceux dont le titre contiendra XYZZY." - -#: help/2.php:9 -msgid "See also:" -msgstr "Voir également :" - -#: help/3.php:1 help/4.php:1 -msgid "Keyboard Shortcuts" -msgstr "Raccourcis clavier" +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "Veuillez saisir le libellé de l'étiquette :" -#: help/3.php:5 -msgid "Navigation" -msgstr "Navigation" +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "Impossible de créer une étiquette : libellé manquant." -#: help/3.php:8 -msgid "Move between feeds" -msgstr "Naviguer dans les flux" +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "S'abonner au flux" -#: help/3.php:9 -msgid "Move between articles" -msgstr "Naviguer dans les articles" +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "Erreur lors de la lecture de la réponse. Cela peut être dû à une expiration de la requête au serveur et/ou à des problèmes du réseau. La réponse du serveur a été tracé dans la console du navigateur." -#: help/3.php:10 -msgid "Show search dialog" -msgstr "Afficher la fenêtre de recherche" +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "Abonné à %s" -#: help/3.php:13 -msgid "Active article actions" -msgstr "Activer les actions de l'article" +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "L'URL spécifiée semble invalide." -#: help/3.php:16 -msgid "Toggle starred" -msgstr "Marquer comme remarquable" +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "L'URL spécifiée ne semble pas contenir de flux." -#: help/3.php:17 -msgid "Toggle published" -msgstr "Marquer comme publié" +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "Développer jusqu'au flux sélectionné" -#: help/3.php:18 -msgid "Toggle unread" -msgstr "Marquages comme non-lu" +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "L'URL spécifiée n'a pas pu être téléchargée : %s" -#: help/3.php:19 -msgid "Edit tags" -msgstr "Editer les tags" +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "Erreur de validation XML: %s" -#: help/3.php:20 -msgid "Open article in new window" -msgstr "Ouvrir les articles dans une nouvelle fenêtre" +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "Vous êtes déjà abonné à ce flux." -#: help/3.php:21 -msgid "Mark articles below/above active one as read" -msgstr "Marquer les articles au-dessous/au-dessus de l'article actif comme lus" +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "Modifier la règle" -#: help/3.php:22 -msgid "Scroll article content" -msgstr "Faire déflier le contenu de l'article" +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "Modifier le flux" -#: help/3.php:26 help/4.php:30 -msgid "Other actions" -msgstr "Autres actions" +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "D'autres flux" -#: help/3.php:29 -msgid "Select article under mouse cursor" -msgstr "Selectionner l'article sous le curseur de la souris" +#: js/functions.js:1878 +msgid "Help" +msgstr "Aide" -#: help/3.php:32 -msgid "Collapse sidebar" -msgstr "Contracter le menu" +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "Supprimer la catégorie %s ? Tous les flux enfants seront placés dans Sans catégorie." -#: help/3.php:33 -msgid "Toggle category reordering mode" -msgstr "Activer le classement selon la catégorie" +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "Suppression de la catégorie..." -#: help/3.php:34 help/4.php:34 -msgid "Display this help dialog" -msgstr "Afficher cette aide" +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "Supprimer les catégories sélectionnées ?" -#: help/3.php:39 -msgid "Feed actions" -msgstr "Actions sur ce flux" +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "Suppression des catégories sélectionnées..." -#: help/3.php:42 -msgid "Update active feed" -msgstr "Mettre à jour les flux actifs" +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "Aucune catégorie sélectionnée." -#: help/3.php:43 -msgid "Update all feeds" -msgstr "Mettre à jour tous les flux" +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "Titre de la catégorie :" -#: help/3.php:46 -msgid "Edit feed" -msgstr "Editer le flux" +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "Création de la catégorie..." -#: help/3.php:47 -msgid "Sort by name or unread count" -msgstr "Trier les flux par nom ou par nombre d'articles non lus" +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "Flux sans mise à jour récente" -#: help/3.php:48 -msgid "Hide visible read articles" -msgstr "Masquer les articles lus" +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "Remplacer l'adresse de publication OPML actuelle par une nouvelle ?" -#: help/3.php:49 -msgid "Mark feed as read" -msgstr "Marquer le flux comme lu" +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "Nettoyage du flux..." -#: help/3.php:50 -#, fuzzy -msgid "Reverse headlines order" -msgstr "Inverser l'order des en-têtes (les plus anciens en premier)" +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "Recalculer le score des articles des flux sélectionnés ?" -#: help/3.php:51 -msgid "Mark all feeds as read" -msgstr "Marquer tous les flux comme lus" +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "Recalcul du score des flux sélectionnés..." -#: help/3.php:52 -msgid "If viewing category, (un)collapse it" -msgstr "Déployer/Contracter lors de la consultation des catégories" +#: js/prefs.js:1346 +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." -#: help/3.php:55 help/4.php:5 -msgid "Go to..." -msgstr "Aller à..." +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "Recalcul du score des flux..." -#: help/3.php:62 -msgid "Tag cloud" -msgstr "Nuage de tags" +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "Ré-initialiser les couleurs des étiquettes aux couleurs par défaut ?" -#: help/3.php:69 help/4.php:41 -msgid "Press any key to close this window." -msgstr "Appuyer sur une touche pour fermer cette fenêtre" +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "Paramètres des profils" -#: help/4.php:9 -msgid "My Feeds" -msgstr "Mes flux" +#: js/prefs.js:1412 +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." -#: help/4.php:10 -msgid "Other Feeds" -msgstr "Autres flux" +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "Suppression des profils sélectionnés..." -#: help/4.php:19 -msgid "Panel actions" -msgstr "Actions du panneau :" +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "Aucun profil sélectionné." -#: help/4.php:23 -#, fuzzy -msgid "Top 25 feeds" -msgstr "Top 25" +#: js/prefs.js:1438 js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "Activer le profil sélectionné ?" -#: help/4.php:24 -msgid "Edit feed categories" -msgstr "Editer les catégories des flux" +#: js/prefs.js:1454 js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "Veuillez sélectionner un profil à activer." -#: help/4.php:33 -msgid "Focus search (if present)" -msgstr "Focus sur la recherche (si affichée)" +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "Création d'un profil..." -#: help/4.php:39 -msgid "" -"Note: not all actions may be available, depending on Tiny Tiny RSS " -"configuration and your access level." -msgstr "" -"Note : certaines actions peuvent ne pas être disponibles, selon la " -"configuration de Tiny Tiny RSS et vos permissions." +#: js/prefs.js:1515 +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 ?" -#: mobile/functions.php:59 mobile/functions.php:136 mobile/functions.php:172 -#: mobile/functions.php:199 mobile/functions.php:233 mobile/functions.php:356 -#: mobile/prefs.php:25 -msgid "Home" -msgstr "" +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "URL générées supprimées." -#: mobile/functions.php:392 -msgid "Nothing found (click to reload feed)." -msgstr "" +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Éditeur d'étiquette" -#: mobile/prefs.php:30 -#, fuzzy -msgid "Enable categories" -msgstr "Utiliser les catégories de flux" +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "Vous ne pouvez pas vous désabonner de la catégorie." -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "ON" -msgstr "" +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "Annuler la recherche" -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "OFF" -msgstr "" +#: js/viewfeed.js:174 +msgid "New articles found, reload feed to continue." +msgstr "Nouveaux articles trouvés, rechargez le flux pour continuer." -#: mobile/prefs.php:35 -#, fuzzy -msgid "Show images in posts" -msgstr "Ne pas afficher les images dans les articles" +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Ne plus marquer comme remarquable" -#: mobile/prefs.php:40 -#, fuzzy -msgid "Hide read feeds" -msgstr "(Dé)Masquer les flux lus" +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "Marquer comme remarquable" -#: mobile/prefs.php:45 -#, fuzzy -msgid "Sort feeds by unread count" -msgstr "Trier les flux par nombre d'articles non lus" +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "Ne plus publier l'article" -#: functions.js:1315 -msgid "Can't add filter: nothing to match on." -msgstr "Impossible d'ajouter un filtre : aucune correspondance." +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Publier l'article" -#: functions.js:1350 -msgid "Can't subscribe: no feed URL given." -msgstr "Impossible de s'inscrire : aucune URL de flux n'a été fournie." +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "%d article sélectionné" +msgstr[1] "%d articles sélectionnés" -#: functions.js:1354 -msgid "Subscribing to feed..." -msgstr "Inscription au flux..." +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "Aucun article sélectionné." -#: functions.js:1377 -#, fuzzy -msgid "Subscribed to %s" -msgstr "Inscrit aux flux :" +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "Aucun article à marquer" -#: functions.js:1386 -#, fuzzy -msgid "Can't subscribe to the specified URL." -msgstr "Impossible de s'inscrire : aucune URL de flux n'a été fournie." +#: js/viewfeed.js:1452 +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "Marquer %d article comme lu ?" +msgstr[1] "Marquer %d articles comme lus ?" -#: functions.js:1389 -#, fuzzy -msgid "You are already subscribed to this feed." -msgstr "Vous ne pouvez pas vous désinscrire de la catégorie." +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "Afficher l'URL" -#: functions.js:1952 -msgid "New articles available in this feed (click to show)" -msgstr "" +#~ msgid "Select by tags..." +#~ msgstr "Sélectionner par tags..." -#: functions.js:1989 -#, fuzzy -msgid "Subscribed to %d feed(s)." -msgstr "Inscrit aux flux :" +#~ msgid "Limit search to:" +#~ msgstr "Restreindre la recherche à :" -#: functions.js:1999 functions.js:2030 prefs.js:557 prefs.js:587 prefs.js:619 -#: prefs.js:908 prefs.js:928 prefs.js:1795 -msgid "No feeds are selected." -msgstr "Aucun flux sélectionné." +#~ msgid "This feed" +#~ msgstr "Ce flux" -#: functions.js:2014 -msgid "" -"Remove selected feeds from the archive? Feeds with stored articles will not " -"be removed." -msgstr "" +#~ 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ésultats dans les tests à cause de problèmes avec le serveur." -#: functions.js:2066 -#, fuzzy -msgid "Remove stored feed icon?" -msgstr "Supprimer les données stockées" +#~ msgid "Old password cannot be blank." +#~ msgstr "L'ancien mot de passe ne peut pas être vide." -#: functions.js:2098 -#, fuzzy -msgid "Please select an image file to upload." -msgstr "Veuillez sélectionner un flux." +#~ msgid "New password cannot be blank." +#~ msgstr "Le nouveau mot de passe ne peut pas être vide." -#: functions.js:2100 -msgid "Upload new icon for this feed?" -msgstr "" +#~ msgid "Entered passwords do not match." +#~ msgstr "Les mots de passe saisis ne sont pas identiques." -#: functions.js:2117 -msgid "Please enter label caption:" -msgstr "Veuillez saisir le libellé de l'étiquette :" +#~ msgid "Function not supported by authentication module." +#~ msgstr "Fonction non supportée par le module d'identification." -#: functions.js:2122 -msgid "Can't create label: missing caption." -msgstr "Impossible de créer une étiquette : libellé manquant." +#~ msgid "Match:" +#~ msgstr "Correspondance :" -#: functions.js:2162 tt-rss.js:568 -msgid "Unsubscribe from %s?" -msgstr "Se désinscrire de %s ?" +#~ msgid "Any" +#~ msgstr "Au moins une" -#: offline.js:636 -msgid "Data for offline browsing has not been downloaded yet." -msgstr "" -"Les données pour la consultaton hors-ligne n'ont pas encore été téléchargées." +#~ msgid "All tags." +#~ msgstr "Tous les tags." -#: offline.js:677 -msgid "Synchronizing feeds..." -msgstr "Synchronisation des flux..." +#~ msgid "Which Tags?" +#~ msgstr "Quels tags ?" -#: offline.js:696 -msgid "Synchronizing categories..." -msgstr "Synchronisation des catégories..." +#~ msgid "Display entries" +#~ msgstr "Afficher les entrées" -#: offline.js:714 -msgid "Synchronizing labels..." -msgstr "Synchronisation des étiquettes..." +#~ msgid "Select item(s) by tags" +#~ msgstr "Sélectionner des éléments par tags" -#: offline.js:733 -msgid "Synchronizing articles..." -msgstr "Synchronisation des articles..." +#~ msgid "Unread First" +#~ msgstr "Non lus en premier" -#: offline.js:778 -#, fuzzy -msgid "Synchronizing articles (%d)..." -msgstr "Synchronisation des articles (%s)..." +#~ msgid "Unknown option: %s" +#~ msgstr "Option inconnue : %s" -#: offline.js:806 -msgid "Last sync: %s" -msgstr "Dernière synchronisation : %s" +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "Une nouvelle version de Tiny Tiny RSS est disponible !" -#: offline.js:835 -msgid "Last sync: Error receiving data." -msgstr "Dernière synchronisation : erreur lors de la réception des données." +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "Échec de la validation de la session (navigateur différent)" -#: offline.js:888 -msgid "Synchronizing..." -msgstr "Synchronsation en cours..." +#~ msgid "Assign articles to labels automatically" +#~ msgstr "Assigner des étiquettes aux articles automatiquement" -#: offline.js:1195 -msgid "Switch Tiny Tiny RSS into offline mode?" -msgstr "Passer Tiny Tiny RSS en mode hors-ligne ?" +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "Une nouvelle version de Tiny Tiny RSS est disponible (%s)." -#: offline.js:1223 -msgid "Tiny Tiny RSS will reload. Go online?" -msgstr "Tiny Tiny RSS va se recharger. Passer en mode en ligne ?" +#~ 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" -#: offline.js:1655 -msgid "Last sync: Cancelled." -msgstr "Dernière synchronisation : annulée." +#~ msgid "See the release notes" +#~ msgstr "Voir les notes de publication" -#: offline.js:1672 -msgid "" -"This will remove all offline data stored by Tiny Tiny RSS on this computer. " -"Continue?" -msgstr "" -"Cela va supprimer tous les données hors-ligne stockées par Tiny Tiny RSS sur " -"cet ordinateur." +#~ msgid "Download" +#~ msgstr "Télécharger" -#: offline.js:1743 -msgid "" -"Tiny Tiny RSS has trouble accessing its server. Would you like to go offline?" -msgstr "" -"Tiny Tiny RSS rencontre des problèmes pour accéder au serveur. Voulez-vous " -"passer en mode hors-ligne ?" +#~ msgid "Error receiving version information or no new version available." +#~ msgstr "Erreur de lecture de l'information de version ou aucune nouvelle version disponible." -#: prefs.js:233 -msgid "Error: No feed URL given." -msgstr "Erreur : aucune URL de flux n'a été fournie." +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Mettre à jour Tiny Tiny RSS" -#: prefs.js:235 -msgid "Error: Invalid feed URL." -msgstr "Erreur : URL du flux est invalide." +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "Votre installation de Tiny Tiny RSS est à jour." -#: prefs.js:263 -#, fuzzy -msgid "Can't add profile: no name specified." -msgstr "Impossible d'ajouter une catégorie : aucun nom fourni." +#~ msgid "Force update" +#~ msgstr "Forcer la mise à jour" -#: prefs.js:285 -msgid "Can't add category: no name specified." -msgstr "Impossible d'ajouter une catégorie : aucun nom fourni." +#~ msgid "Do not close this dialog until updating is finished." +#~ msgstr "Ne fermez pas ce dialogue avant que la mise à jour soit terminée." -#: prefs.js:307 -msgid "Please enter login:" -msgstr "Veuillez saisir le login :" +#~ msgid "It is suggested to backup your tt-rss directory first." +#~ msgstr "Il est conseillé de sauvegarder votre dossier tt-rss avant." -#: prefs.js:314 -msgid "Can't create user: no login specified." -msgstr "Impossible de créer l'utilisateur : aucun login spécifié." +#~ msgid "Your database will not be modified." +#~ msgstr "Votre base de données ne sera pas modifiée." -#: prefs.js:438 -msgid "Remove selected labels?" -msgstr "Supprimer les étiquettes sélectionnées ?" +#~ 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." -#: prefs.js:454 -msgid "No labels are selected." -msgstr "Aucune étiquette sélectionnée." +#~ msgid "Ready to update." +#~ msgstr "Prêt à mettre à jour." -#: prefs.js:468 -msgid "Remove selected users?" -msgstr "Supprimer les utilisateurs sélectionnés ?" +#~ msgid "Start update" +#~ msgstr "Commencer la mise à jour" -#: prefs.js:485 prefs.js:798 prefs.js:819 prefs.js:858 -msgid "No users are selected." -msgstr "Aucun utilisateur sélectionné." +#~ 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." -#: prefs.js:503 -msgid "Remove selected filters?" -msgstr "Supprimer les filtres sélectionnés ?" +#~ msgid "New version available!" +#~ msgstr "Une nouvelle version est disponible !" -#: prefs.js:519 prefs.js:888 -msgid "No filters are selected." -msgstr "Aucun filtre sélectionné." +#~ msgid "LibXML error %s at line %d (column %d): %s" +#~ msgstr "Erreur LibXML %s ligne %d (colonne %d): %s" -#: prefs.js:538 -msgid "Unsubscribe from selected feeds?" -msgstr "Se désinscrire des flux sélectionnés ?" +#~ msgid "From:" +#~ msgstr "De :" -#: prefs.js:572 -msgid "Please select only one feed." -msgstr "Veuillez sélectionner un seul flux." +#~ msgid "Select:" +#~ msgstr "Sélectionner :" -#: prefs.js:578 -msgid "Erase all non-starred articles in selected feed?" -msgstr "" -"Supprimer tous les articles non-remarquables dans le flux sélectionné ?" +#~ msgid "mark as read" +#~ msgstr "marquer comme lu" -#: prefs.js:600 -msgid "How many days of articles to keep (0 - use default)?" -msgstr "" -"Combien de jour faut-il conserver l'article (entrer 0 pour utiliser la " -"valeur par défaut)" +#~ msgid "Change password to" +#~ msgstr "Nouveau mot de passe" -#: prefs.js:632 -msgid "" -"Remove selected profiles? Active and default profiles will not be removed." -msgstr "" +#~ msgid "E-mail: " +#~ msgstr "Adresse email : " -#: prefs.js:648 -#, fuzzy -msgid "No profiles selected." -msgstr "Aucun article sélectionné." +#~ msgid "Login field cannot be blank." +#~ msgstr "L'identifiant ne peut pas être vide." -#: prefs.js:660 -msgid "Remove selected categories?" -msgstr "Supprimer les catégories sélectionnées ?" +#~ msgid "Saving user..." +#~ msgstr "Sauvegarde de l'utilisateur..." -#: prefs.js:678 -msgid "No categories are selected." -msgstr "Aucune catégorie sélectionnée." +# Same as 'starred" ? +#~ msgid "Toggle marked" +#~ msgstr "Marquer comme (non) remarquable" -#: prefs.js:745 -msgid "Login field cannot be blank." -msgstr "Le nom ne peut pas être vide." +#~ msgid "(Un)hide empty categories" +#~ msgstr "Masquer/afficher les catégories vides" -#: prefs.js:803 prefs.js:824 prefs.js:863 -msgid "Please select only one user." -msgstr "Veuillez sélectionner un seul utilisateur." +#~ msgid "Published articles and generated feeds" +#~ msgstr "Articles publiés et flux générés" -#: prefs.js:828 -msgid "Reset password of selected user?" -msgstr "Ré-initialiser le mot de passe de l'utilisateur sélectionné ?" +#~ msgid "Articles shared by URL" +#~ msgstr "Articles publiés par URL" -#: prefs.js:893 -msgid "Please select only one filter." -msgstr "Veuillez sélectionner un seul filtre." +#~ msgid "These feeds have not been updated because of errors:" +#~ msgstr "Ces flux n'ont pas été mis à jour à cause d'erreurs :" -#: prefs.js:969 -msgid "No OPML file to upload." -msgstr "Aucun fichier OPML à envoyer." +#~ 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." -#: prefs.js:1229 -msgid "Reset to defaults?" -msgstr "Revenir aux valeurs par défaut ?" +#~ msgid "Hello," +#~ msgstr "Bonjour," -#: prefs.js:1641 -msgid "Replace current publishing address with a new one?" -msgstr "Remplacer l'adresse de publication actuelle ?" +#~ msgid "Regular version" +#~ msgstr "Version ordinateur" -#: prefs.js:1678 -msgid "Save current configuration?" -msgstr "Enregistrer la configuration actuelle ?" +#~ msgid "Home" +#~ msgstr "Accueil" -#: prefs.js:1779 -msgid "Rescore articles in selected feeds?" -msgstr "Recalculer le score des articles des flux sélectionnés ?" +#~ msgid "Nothing found (click to reload feed)." +#~ msgstr "Rien n'a été trouvé (cliquez pour recharger le flux)." -#: prefs.js:1802 -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." +#~ msgid "Open regular version" +#~ msgstr "Version ordinateur" -#: prefs.js:1821 -msgid "Remove filter %s?" -msgstr "Supprimer le filtre %s ?" +#~ msgid "Enable categories" +#~ msgstr "Utiliser les catégories de flux" -#: prefs.js:1882 -msgid "Save changes to selected feeds?" -msgstr "Enregistrer les modifications aux flux sélectionnés ?" +#~ msgid "ON" +#~ msgstr "Activé" -#: prefs.js:1962 -msgid "Reset label colors to default?" -msgstr "Ré-initialiser les couleurs des étiquettes aux couleurs par défaut ?" +#~ msgid "OFF" +#~ msgstr "Désactivé" -#: prefs.js:1987 -msgid "Please enter new label foreground color:" -msgstr "Veuillez saisir la couleur d'avant-plan de l'étiquette :" +#~ msgid "Browse categories like folders" +#~ msgstr "Parcourir les catégories comme des dossiers" -#: prefs.js:1989 -msgid "Please enter new label background color:" -msgstr "Veuillez saisir la couleur d'arrière-plan de l'étiquette :" +#~ msgid "Show images in posts" +#~ msgstr "Afficher les images dans les articles" -#: prefs.js:2121 -#, fuzzy -msgid "Activate selected profile?" -msgstr "Supprimer les filtres sélectionnés ?" +#~ msgid "Hide read articles and feeds" +#~ msgstr "Cacher les articles et flux lus" -#: prefs.js:2137 -msgid "Please choose a profile to activate." -msgstr "" +#~ msgid "Sort feeds by unread count" +#~ msgstr "Trier les flux par nombre d'articles non lus" -#: tt-rss.js:74 -msgid "display feeds" -msgstr "afficher les flux" +#~ msgid "Article archive" +#~ msgstr "Archive" -#: tt-rss.js:251 -msgid "Mark all articles as read?" -msgstr "Marquer tous les articles comme lus ?" +#~ msgid "Example Pane" +#~ msgstr "Panneau d'exemple" -#: tt-rss.js:557 -msgid "You can't unsubscribe from the category." -msgstr "Vous ne pouvez pas vous désinscrire de la catégorie." +#~ msgid "Sample value" +#~ msgstr "Valeur d'exemple" -#: tt-rss.js:562 tt-rss.js:755 tt-rss.js:930 -msgid "Please select some feed first." -msgstr "Veuillez d'abord sélectionner un flux." +#~ msgid "Set value" +#~ msgstr "Appliquer la valeur" -#: tt-rss.js:618 -msgid "Reset category order?" -msgstr "Réinitialiser l'ordre des catégories ?" +#~ msgid "Mark %d displayed article as read?" +#~ msgid_plural "Mark %d displayed articles as read?" +#~ msgstr[0] "Marquer %d article affiché comme lu ?" +#~ msgstr[1] "Marquer les %d articles affichés comme lus ?" -#: tt-rss.js:727 tt-rss.js:740 -msgid "Mark all articles in %s as read?" -msgstr "Marquer tous les articles de %s comme lus ?" +#~ msgid "Error: unable to load article." +#~ msgstr "Erreur : impossible de charger l'article." -#: tt-rss.js:760 -msgid "You can't edit this kind of feed." -msgstr "Vous ne pouvez pas éditer ce type de flux." +#~ msgid "%d more..." +#~ msgid_plural "%d more..." +#~ msgstr[0] "%d de plus..." +#~ msgstr[1] "%d de plus..." -#: tt-rss.js:925 -msgid "You can't rescore this kind of feed." -msgstr "Vous ne pouvez pas recalculer le score de ce type de flux." +#~ msgid "No unread feeds." +#~ msgstr "Aucun flux non lu." -#: tt-rss.js:935 -msgid "Rescore articles in %s?" -msgstr "Recalculer le score des articles de %s ?" +#~ msgid "Load more..." +#~ msgstr "Charger plus..." -#: viewfeed.js:528 viewfeed.js:592 -msgid "Star article" -msgstr "Marquer comme remarquable" +#~ msgid "Switch to digest..." +#~ msgstr "Basculer en mode résumé..." -#: viewfeed.js:577 -msgid "Unstar article" -msgstr "Ne plus marquer comme remarquable" +#~ msgid "Show tag cloud..." +#~ msgstr "Afficher le nuage de tags..." -#: viewfeed.js:585 viewfeed.js:652 -msgid "Please wait..." -msgstr "Veuillez patienter..." +#~ msgid "Click to play" +#~ msgstr "Cliquez pour lancer la lecture" -#: viewfeed.js:648 -msgid "Unpublish article" -msgstr "Ne plus publier l'article" +#~ msgid "Play" +#~ msgstr "Lecture" -#: viewfeed.js:935 viewfeed.js:971 viewfeed.js:1012 viewfeed.js:1097 -#: viewfeed.js:1141 viewfeed.js:1288 viewfeed.js:1338 viewfeed.js:1394 -msgid "No articles are selected." -msgstr "Aucun article sélectionné." +#~ msgid "Visit the website" +#~ msgstr "Visiter le site web" -#: viewfeed.js:1256 -msgid "Mark all visible articles in %s as read?" -msgstr "Marquer tous les articles visibles de %s comme lus ?" +#~ msgid "Select theme" +#~ msgstr "Sélectionner un thème" -#: viewfeed.js:1298 -#, fuzzy -msgid "Delete %d selected articles in %s?" -msgstr "Marquer %d articles sélectionnés de %s comme lus ?" +#~ 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" -#: viewfeed.js:1300 -#, fuzzy -msgid "Delete %d selected articles?" -msgstr "Supprimer l'étiquette aux articles sélectionnés ?" +#~ msgid "Playing..." +#~ msgstr "Lecture..." -#: viewfeed.js:1348 -#, fuzzy -msgid "Archive %d selected articles in %s?" -msgstr "Marquer %d articles sélectionnés de %s comme lus ?" +#~ 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)" -#: viewfeed.js:1351 -msgid "Move %d archived articles back?" -msgstr "" +#~ msgid "Default interval between feed updates" +#~ msgstr "Intervalle par défaut entre les mises à jour de flux" -#: viewfeed.js:1401 -msgid "Mark %d selected articles in %s as read?" -msgstr "Marquer %d articles sélectionnés de %s comme lus ?" +#~ msgid "Could not update database" +#~ msgstr "Impossible de mettre la base de données à jour" -#: viewfeed.js:1977 -msgid "No article is selected." -msgstr "Aucun article sélectionné." +#~ msgid "Could not find necessary schema file, need version:" +#~ msgstr "Impossible de trouver le fichier de schéma, version requise :" -#: viewfeed.js:2018 -msgid "No articles found to mark" -msgstr "Aucun article à marquer" +#~ msgid ", found: " +#~ msgstr ", trouvée : " -#: viewfeed.js:2020 -msgid "Mark %d article(s) as read?" -msgstr "Marquer %d article(s) comme lu(s) ?" +#~ msgid "Tiny Tiny RSS database is up to date." +#~ msgstr "La base de données de Tiny Tiny RSS est à jour." -#: viewfeed.js:2255 -msgid "Please enter a note for this article:" -msgstr "Veuillez saisir une note pour cet article :" +#~ msgid "Please backup your database before proceeding." +#~ msgstr "Merci de sauvegardez votre base de données avant de poursuivre." -#~ msgid "Adding feed..." -#~ msgstr "Ajout d'un flux..." +#~ msgid "Your Tiny Tiny RSS database needs update to the latest version (%d to %d)." +#~ msgstr "La base de données de Tiny Tiny RSS a besoin d'être mise à jour (version %d à %d)." -#~ msgid "Adding feed category..." -#~ msgstr "Ajout d'une catégorie de flux..." +#~ msgid "Performing updates..." +#~ msgstr "Exécution des mises à jour..." -#, fuzzy -#~ msgid "Adding profile..." -#~ msgstr "Ajout d'un flux..." +#~ msgid "Updating to version %d..." +#~ msgstr "Passage à la version %d..." -#~ msgid "Adding user..." -#~ msgstr "Ajout d'un utilisateur..." +#~ msgid "Checking version... " +#~ msgstr "Vérification de la version... " -#~ msgid "Assign score to article:" -#~ msgstr "Assigner un score à l'article" +#~ msgid "OK!" +#~ msgstr "OK !" -#~ msgid "Assign selected articles to label?" -#~ msgstr "Assigner l'étiquette aux articles sélectionnés ?" +#~ msgid "ERROR!" +#~ msgstr "ERREUR !" -#~ msgid "Can't open article: received invalid article link" -#~ msgstr "Impossible d'ouvrir l'article : le lien de l'article est invalide" +#~ msgid "Finished. Performed %d update up to schema version %d." +#~ msgid_plural "Finished. Performed %d updates up to schema version %d." +#~ msgstr[0] "Terminé. %d modification a été effectuée pour parvenir à la version de schéma %d." +#~ msgstr[1] "Terminé. %d modifications ont été effectuées pour parvenir à la version de schéma %d." -#~ msgid "Category reordering disabled" -#~ msgstr "Ré-organisation des catégories désactivée" +#~ 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." -#~ msgid "Category reordering enabled" -#~ msgstr "Ré-organisation des catégories sactivée" +#~ msgid "Found schema version: %d, required: %d." +#~ msgstr "Version du schéma trouvée : %d, requise : %d." -#, fuzzy -#~ msgid "Changing password..." -#~ msgstr "Modifier le mot de passe" +#~ 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 "Clearing feed..." -#~ msgstr "Suppression du flux..." +#~ msgid "Enable external API" +#~ msgstr "Activer les API externes" -#~ msgid "Clearing selected feed..." -#~ msgstr "Suppression des flux sélectionnés..." +#~ 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 "comments" -#~ msgstr "commentaires" +#~ msgid "Title or Content" +#~ msgstr "Titre ou contenu" -#~ msgid "Could not change feed URL." -#~ msgstr "Impossible de modifier l'adresse du flux." +#~ msgid "Link" +#~ msgstr "Lien" -#~ msgid "Could not display article (missing XML object)" -#~ msgstr "Impossible d'afficher l'article (objet XML manquant)" +#~ msgid "Content" +#~ msgstr "Contenu" -#~ msgid "Could not update headlines (missing XML data)" -#~ msgstr "Impossible de mettre à jour les entêtes (données XML manquantes)" +#~ msgid "Article Date" +#~ msgstr "Date de l'article" -#~ msgid "Could not update headlines (missing XML object)" -#~ msgstr "Impossible de mettre à jour l'en-têtes (objet XML manquant)" +#~ msgid "Set starred" +#~ msgstr "Marquer comme remarquable" -#~ msgid "Entire feed" -#~ msgstr "Tout le flux" +#~ msgid "Assign tags" +#~ msgstr "Assigner des tags" -#~ msgid "Error while trying to load more headlines" -#~ msgstr "Erreur lors du chargement d'entêtes complémentaires." +#~ msgid "Modify score" +#~ msgstr "Modifier le score" -#~ msgid "Failed to load article in new window" -#~ msgstr "Echec du chargement des articles dans une nouvelle fenêtre" +#~ 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 "Failed to open window for the article" -#~ msgstr "Echec de l'ouverture de la fenêtre pour l'affichage de l'article" +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "La syntaxe des dates semble être correcte :" -#, fuzzy -#~ msgid "Feed icon removed." -#~ msgstr "Flux non trouvé." +#~ msgid "Date syntax is incorrect." +#~ msgstr "La syntaxe des dates est incorrecte." -#~ msgid "Loading feed list..." -#~ msgstr "Chargement de la liste des flux..." +#~ msgid "Notice" +#~ msgstr "Avertissement" -#~ msgid "Local data removed." -#~ msgstr "Données locales supprimées." +#~ msgid "Tag Cloud" +#~ msgstr "Nuage d'étiquettes" -#~ msgid "Mark as read:" -#~ msgstr "Marquer comme lu :" +#~ msgid "Mark all visible articles in %s as read?" +#~ msgstr "Marquer tous les articles visibles de %s comme lus ?" -#~ msgid "Marking all feeds as read..." -#~ msgstr "Marquage de tous les flux 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." -#~ msgid "Please wait until operation finishes." -#~ msgstr "Veuillez patienter pendant que l'opération se termine." +#~ msgid "Score" +#~ msgstr "Score" -#~ msgid "Purging selected feed..." -#~ msgstr "Purge des flux sélectionnés..." +#~ msgid "Completed." +#~ msgstr "Terminé." -#~ msgid "Remove selected articles from label?" -#~ msgstr "Supprimer l'étiquette aux articles sélectionnés ?" +#~ msgid "Enable the options you wish to apply using checkboxes on the right:" +#~ msgstr "Activer les options voulues avec les cases à cocher sur la droite:" -#~ msgid "Removing feed..." -#~ msgstr "Suppression du flux..." +#~ msgid "New articles available in this feed (click to show)" +#~ msgstr "Nouveaux articles disponibles dans ce flux (cliquer pour les afficher)" -#~ msgid "Removing filter..." -#~ msgstr "Suppression du filtre..." +#~ msgid "Share on identi.ca" +#~ msgstr "Partager sur identi.ca" -#~ msgid "Removing offline data..." -#~ msgstr "Suppression des données hors-ligne..." +#~ msgid "Owncloud" +#~ msgstr "Owncloud" -#~ msgid "Removing selected categories..." -#~ msgstr "Suppression des catégories sélectionnées..." +#~ msgid "Owncloud url" +#~ msgstr "Adresse de Owncloud" -#~ msgid "Removing selected filters..." -#~ msgstr "Suppression des filtres sélectionnés..." +#~ msgid "Bookmark on OwnCloud " +#~ msgstr "Marquer sur Owncloud " -#~ msgid "Removing selected labels..." -#~ msgstr "Suppression des étiquettes sélectionnées..." +#~ msgid "Flattr this article." +#~ msgstr "Partager sur Flattr" -#, fuzzy -#~ msgid "Removing selected profiles..." -#~ msgstr "Suppression des filtres sélectionnés..." +#~ msgid "Share on Google+" +#~ msgstr "Partager sur Google+" -#~ msgid "Removing selected users..." -#~ msgstr "Suppression des utilisateurs sélectionnés..." +#~ msgid "Share on Twitter" +#~ msgstr "Partager sur Twitter" -#~ msgid "Rescore last 100 articles in selected feeds?" -#~ msgstr "" -#~ "Recalculer le score des 100 derniers articles des flux sélectionnés ?" +#~ msgid "Updated" +#~ msgstr "Mis à jour" -#~ msgid "Rescoring articles..." -#~ msgstr "Recalcul du score des articles" +#~ msgid "Show additional preferences" +#~ msgstr "Afficher plus d'options" -#~ msgid "Resetting password for selected user..." -#~ msgstr "Ré-initialisation du mot de passe de l'utilisateur sélectionné..." +#~ msgid "Back to feeds" +#~ msgstr "Retour aux flux" -#~ msgid "Saving article tags..." -#~ msgstr "Enregistrement des tags de l'article..." +#~ 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 "Saving feed..." -#~ msgstr "Enregistrement d'un flux..." +#~ msgid "Finished: %d articles processed, %d imported, %d feeds created." +#~ msgstr "Terminé : %d articles traités, %d importés, %d flux créés." -#~ msgid "Saving feeds..." -#~ msgstr "Enregistrement des flux..." +#, fuzzy +#~ msgid "Related" +#~ msgstr "Lire plus tard" -#~ msgid "Saving filter..." -#~ msgstr "Enregistrement du filtre..." +#~ msgid "Notifying %s." +#~ msgstr "Notification %s." -#~ msgid "Saving user..." -#~ msgstr "Enregistrement de l'utilisateur..." +#~ msgid "Yes" +#~ msgstr "Oui" -#~ msgid "Selection" -#~ msgstr "La sélection" +#~ msgid "No" +#~ msgstr "Non" -#~ msgid "Tiny Tiny RSS is in offline mode." -#~ msgstr "Tiny Tiny RSS est en mode hors-ligne." +#~ msgid "News" +#~ msgstr "Actualités" -#~ msgid "Trying to change e-mail..." -#~ msgstr "Tentative de modification de l'adresse électronique..." +#~ msgid "Move between feeds" +#~ msgstr "Naviguer dans les flux" -#~ msgid "" -#~ "You have to synchronize some articles before going into offline mode." -#~ msgstr "" -#~ "Vous devez synchroniser quelques articles avant de passer en mode hors-" -#~ "ligne." +#~ msgid "Move between articles" +#~ msgstr "Naviguer dans les articles" -#~ msgid "" -#~ "You won't be able to access offline version of Tiny Tiny RSS until you " -#~ "switch it into offline mode again. Go online?" -#~ msgstr "" -#~ "Vous ne pourrez pas accéder à la version hors-ligne de Tiny Tiny RSS " -#~ "jusqu'à ce que vous le passiez à nouveau en mode hors-ligne. Passer en " -#~ "mode en ligne ?" +#~ msgid "Mark articles below/above active one as read" +#~ msgstr "Marquer les articles au-dessous/au-dessus de l'article actif comme lus" -#~ msgid "Display original article content" -#~ msgstr "Afficher le contenu original de l'article" +#~ msgid "Other actions" +#~ msgstr "Autres actions" -#~ msgid "All feeds updated." -#~ msgstr "Mise à jour des flux terminée." +#~ msgid "Display this help dialog" +#~ msgstr "Afficher cette aide" -#~ msgid "Can't open article: received invalid XML" -#~ msgstr "Impossible d'ouvrir l'article : le xml de l'article est invalide" +#~ msgid "Multiple articles actions" +#~ msgstr "Actions sur plusieurs articles" -#~ msgid "Changing category of selected feeds..." -#~ msgstr "Modification de la catégorie des flux sélectionnés..." +#~ msgid "If viewing category, (un)collapse it" +#~ msgstr "Déployer/Contracter lors de la consultation des catégories" -#~ msgid "Erase all non-starred articles in %s?" -#~ msgstr "Supprimer tous les articles non remarquables dans %s ?" +#~ msgid "Press any key to close this window." +#~ msgstr "Appuyer sur une touche pour fermer cette fenêtre" -#~ msgid "Published feed URL changed." -#~ msgstr "L'URL du flux de publication a changé." +#~ msgid "My Feeds" +#~ msgstr "Mes flux" -#~ msgid "Trying to change address..." -#~ msgstr "Tentative de changement d'adresse..." +#~ msgid "Top 25 feeds" +#~ msgstr "Top 25 des flux" -#~ msgid "Trying to change password..." -#~ msgstr "Tentative de modification du mot de passe..." +#~ msgid "Focus search (if present)" +#~ msgstr "Focus sur la recherche (si affichée)" -#~ msgid "Unsubscribing from selected feeds..." -#~ msgstr "Désinscription des flux sélectionnés..." +#~ msgid "Note: not all actions may be available, depending on Tiny Tiny RSS configuration and your access level." +#~ msgstr "Note : certaines actions peuvent ne pas être disponibles, selon la configuration de Tiny Tiny RSS et vos permissions." -#~ msgid "You can't clear this type of feed." -#~ msgstr "Vous ne pouvez pas purger ce type de flux." +#~ msgid "Open article in new tab" +#~ msgstr "Ouvrir les articles dans un nouvel onglet" -#~ msgid "Clear articles" -#~ msgstr "Effacer les articles" +#~ msgid "Right-to-left content" +#~ msgstr "Contenu écrit de droite à gauche" -#~ msgid "Adding category %s...
    " -#~ msgstr "Ajout de la catégorie %s...
    " +#~ msgid "Mark posts as updated on content change" +#~ msgstr "Marquer les articles comme mis à jour quand leur contenu change" -#~ msgid "Done." -#~ msgstr "Terminé." +#~ msgid "Loading..." +#~ msgstr "Chargement en cours..." -#~ msgid "Visit official site" -#~ msgstr "Visiter le site officiel" +#~ msgid "View in a tt-rss tab" +#~ msgstr "Voir dans un onglet de tt-rss" -#~ msgid "Close" -#~ msgstr "Fermer" +#~ msgid "Magpie" +#~ msgstr "Magpie" -#~ msgid "The configuration was reset to defaults." -#~ msgstr "La configuration a été réinitialisée à ses valeurs par défaut." +#~ msgid "SimplePie" +#~ msgstr "SimplePie" -#~ msgid "Themes" -#~ msgstr "Thèmes" +#~ msgid "using" +#~ msgstr "en utilisant" -#~ msgid "Change theme" -#~ msgstr "Modifier le thème" +#~ msgid "OAuth will be used automatically for Twitter feeds." +#~ msgstr "OAuth sera utilisé automatiquement pour les flux Twitter." -#, fuzzy -#~ msgid "Hide read items" -#~ msgstr "(Dé)Masquer les flux lus" +#~ msgid "match on" +#~ msgstr "correspond à" -#, fuzzy -#~ msgid "Remove selected feeds from archive?" -#~ msgstr "Supprimer l'étiquette aux articles sélectionnés ?" +#~ msgid "Title or content" +#~ msgstr "Titre ou contenu" -#~ msgid "Search results" -#~ msgstr "Résultats de recherche" +#~ msgid "Your request could not be completed." +#~ msgstr "Votre requête ne peut être traitée." -#~ msgid "Searched for" -#~ msgstr "Recherché" +#~ msgid "Feed update has been scheduled." +#~ msgstr "La mise à jour des flux a été planifiée." -#~ msgid "More feeds..." -#~ msgstr "Plus de flux..." +#~ msgid "Category update has been scheduled." +#~ msgstr "La mise à jour des catégories a été planifiée." -#~ msgid "Toggle Feedlist" -#~ msgstr "Basculer la liste des flux" +#~ msgid "Can't update this kind of feed." +#~ msgstr "Impossible de mettre à jour ce type de flux." -#~ msgid "Search:" -#~ msgstr "Rechercher :" +#~ msgid "Original article" +#~ msgstr "Article original" -#~ msgid "Order:" -#~ msgstr "Classer par :" +#~ msgid "Twitter OAuth" +#~ msgstr "Twitter OAuth" -#~ msgid "browse more" -#~ msgstr "en afficher plus" +#~ msgid "
  • Adding category %s.
  • " +#~ msgstr "
  • Ajout de la catégorie %s.
  • " -#~ msgid "Feed browser is administratively disabled." -#~ msgstr "Le navigateur de flux a été désactivé par l'administrateur." +#~ msgid "Duplicate filter %s" +#~ msgstr "Filtre identique : %s" -#~ msgid "Top" -#~ msgstr "Top" +#~ msgid "OK" +#~ msgstr "OK" -#~ msgid "Show" -#~ msgstr "Afficher" +#~ msgid "Register with Twitter" +#~ msgstr "S'inscrire via Twitter" -#~ msgid "Hide from \"Other Feeds\"" -#~ msgstr "Masquer dans \"Autres flux\"" +#~ 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." -#~ msgid "Unable to delete non empty feed categories." -#~ msgstr "Impossible de supprimer une catégorie de flux non vide." +#~ msgid "Congratulations! You have successfully registered with Twitter." +#~ msgstr "Félicitation ! Vous vous êtes inscrit via Twitter avec succès." -#~ msgid "(Hidden)" -#~ msgstr "(Masqué)" +#~ msgid "before" +#~ msgstr "avant" -#~ msgid "Recategorize" -#~ msgstr "Changer de catégorie" +#~ msgid "after" +#~ msgstr "après" -#~ msgid "Other:" -#~ msgstr "Autre :" +#~ msgid "Check it" +#~ msgstr "Vérifier" -#~ msgid "Generate another link" -#~ msgstr "Générer un autre lien" +#~ msgid "Category $%s already exists in the database." +#~ msgstr "La catégorie %s existe déjà dans la base de données." -#~ msgid "View feeds" -#~ msgstr "Voir les flux" +#~ msgid "No feed categories defined." +#~ msgstr "Aucune catégorie de flux définie." -#~ msgid "View tags" -#~ msgstr "Voir les tags" +#~ msgid "Hint: you can drag feeds and categories around." +#~ msgstr "Astuce : vous pouvez faire glisser les flux et les catagories." -#~ msgid "Back" -#~ msgstr "Retour" +#~ msgid "Subscribing using bookmarklet" +#~ msgstr "S'abonner via bookmarklet" -#~ msgid "View:" -#~ msgstr "Afficher :" +#~ msgid "Twitter" +#~ msgstr "Twitter" -#~ msgid "Refresh" -#~ msgstr "Actualiser" +#~ 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 "Page" -#~ msgstr "Page" +#~ 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." -#, fuzzy -#~ msgid "Back to feedlist" -#~ msgstr "Cliquer pour éditer" +#~ msgid "Register with Twitter.com" +#~ msgstr "S'inscrire sur Twitter.com" -#~ msgid "Tags:" -#~ msgstr "Tags :" +#~ msgid "Clear stored credentials" +#~ msgstr "Effacer les données d'authentification stockées" -#~ msgid "Mark as unread" -#~ msgstr "Marquer comme non-lu" +#~ msgid "Created filter %s" +#~ msgstr "Filtre %s créé" -#~ msgid "Where:" -#~ msgstr "Emplacement :" +#~ msgid "Subscribing to feed..." +#~ msgstr "Abonnement au flux..." -#~ msgid "Match on:" -#~ msgstr "Correspondance à :" +#~ msgid "Filter Test Results" +#~ msgstr "Résultats du test du filtre" -#~ msgid "Internal error: Function not implemented" -#~ msgstr "Erreur interne : fonction non implémentée" +#~ 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é" -#, fuzzy -#~ msgid "Click to view" -#~ msgstr "Cliquer pour éditer" +#~ msgid "Uses server timezone" +#~ msgstr "Utilise le fuseau horaire du serveur" diff --git a/locale/hu_HU/LC_MESSAGES/messages.mo b/locale/hu_HU/LC_MESSAGES/messages.mo index d985e1b441..7ef56a55c4 100644 Binary files a/locale/hu_HU/LC_MESSAGES/messages.mo and b/locale/hu_HU/LC_MESSAGES/messages.mo differ diff --git a/locale/hu_HU/LC_MESSAGES/messages.po b/locale/hu_HU/LC_MESSAGES/messages.po index d24a4e466f..7d97037c8b 100644 --- a/locale/hu_HU/LC_MESSAGES/messages.po +++ b/locale/hu_HU/LC_MESSAGES/messages.po @@ -5,3016 +5,3762 @@ # msgid "" msgstr "" -"Project-Id-Version: \n" +"Project-Id-Version: tt-rss-hu\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-22 22:16+0300\n" -"PO-Revision-Date: 2009-08-17 23:04+0100\n" -"Last-Translator: MoJo2009\n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2013-05-15 01:19+0100\n" +"Last-Translator: Faludi Zoltán \n" "Language-Team: HUNGARIAN\n" +"Language: hu_HU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Hungarian\n" -"X-Poedit-Country: HUNGARY\n" +"X-Generator: Poedit 1.5.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: backend.php:107 +#: backend.php:73 msgid "Use default" msgstr "Alapértelmezett beállítás" -#: backend.php:108 +#: backend.php:74 msgid "Never purge" msgstr "Sose töröld a régi híreket" -#: backend.php:109 +#: backend.php:75 msgid "1 week old" msgstr "1 hetes" -#: backend.php:110 +#: backend.php:76 msgid "2 weeks old" msgstr "2 hetes" -#: backend.php:111 +#: backend.php:77 msgid "1 month old" msgstr "1 hónapos" -#: backend.php:112 +#: backend.php:78 msgid "2 months old" msgstr "2 hónapos" -#: backend.php:113 +#: backend.php:79 msgid "3 months old" msgstr "3 hónapos" -#: backend.php:116 +#: backend.php:82 msgid "Default interval" -msgstr "Frissítési intervallum:" +msgstr "Alapértelmezett idÅ‘köz" -#: backend.php:117 backend.php:127 +#: backend.php:83 +#: backend.php:93 msgid "Disable updates" msgstr "Frissítések kikapcsolása" -#: backend.php:118 backend.php:128 -msgid "Each 15 minutes" +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" msgstr "Minden 15 percben" -#: backend.php:119 backend.php:129 -msgid "Each 30 minutes" +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" msgstr "Minden 30 percben" -#: backend.php:120 backend.php:130 +#: backend.php:86 +#: backend.php:96 msgid "Hourly" msgstr "Óránként" -#: backend.php:121 backend.php:131 -msgid "Each 4 hours" +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" msgstr "Minden 4 órában" -#: backend.php:122 backend.php:132 -msgid "Each 12 hours" +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" msgstr "Minden 12 órában" -#: backend.php:123 backend.php:133 +#: backend.php:89 +#: backend.php:99 msgid "Daily" msgstr "Napi" -#: backend.php:124 backend.php:134 +#: backend.php:90 +#: backend.php:100 msgid "Weekly" msgstr "Heti" -#: backend.php:137 tt-rss.php:220 modules/pref-prefs.php:329 -msgid "Default" -msgstr "Alapértelmezett" - -#: backend.php:138 -msgid "Magpie" -msgstr "Magpie" - -#: backend.php:139 -msgid "SimplePie" -msgstr "SimplePie" - -#: backend.php:148 modules/pref-users.php:126 +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 msgid "User" msgstr "Felhasználó" -#: backend.php:149 +#: backend.php:104 msgid "Power User" msgstr "Kiemelt felhasználó" -#: backend.php:150 +#: backend.php:105 msgid "Administrator" msgstr "Adminisztrátor" -#: backend.php:538 login_form.php:142 modules/backend-rpc.php:61 -#: modules/popup-dialog.php:106 -#, fuzzy -msgid "Default profile" -msgstr "Hírek maximális száma" - -#: errors.php:3 -msgid "Unknown error" -msgstr "Ismeretlen hiba" +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "A program működéséhez XmlHttpRequest szükséges, úgy tűnik az Ön böngészÅ‘je ezt nem támogatja." -#: errors.php:5 -msgid "" -"This program requires XmlHttpRequest to function properly. Your browser " -"doesn't seem to support it." -msgstr "" -"A program működéséhez XmlHttpRequest szükséges, úgy tűnik az Ön böngészÅ‘je " -"ezt nem támogatja." - -#: errors.php:8 -msgid "" -"This program requires cookies to function properly. Your browser doesn't " -"seem to support them." -msgstr "" -"A program működéséhez engedélkyezett sütik szükségesek, úgy tűnik a " -"böngészÅ‘d nem támogatja a sütiket." +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "A program működéséhez engedélkyezett sütik szükségesek, úgy tűnik a böngészÅ‘d nem támogatja a sütiket." -#: errors.php:11 -msgid "Backend sanity check failed" -msgstr "" +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "Háttér épség ellenÅ‘rzés sikertelen" -#: errors.php:13 +#: errors.php:17 msgid "Frontend sanity check failed." -msgstr "" +msgstr "Frontend épség ellenÅ‘rzés sikertelen" -#: errors.php:15 -msgid "" -"Incorrect database schema version. <a href='update.php'>Please " -"update</a>." -msgstr "" +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "Érvénytelen adatbázis séma verzió. <a href='db-updater.php'>Kérem frissítse</a>." -#: errors.php:17 +#: errors.php:21 msgid "Request not authorized." -msgstr "Engedély nélküli kérés" +msgstr "Engedély nélküli kérés." -#: errors.php:19 +#: errors.php:23 msgid "No operation to perform." msgstr "Nincs elvégzendÅ‘ művelet." -#: errors.php:21 -msgid "" -"Could not display feed: query failed. Please check label match syntax or " -"local configuration." -msgstr "" +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "A hírcsatorna nem jeleníthetÅ‘ meg: lekérdezés sikertelen. Kérem ellenÅ‘rizze a címke egyeztetést vagy a helyi konfigurációt." -#: errors.php:23 +#: errors.php:27 msgid "Denied. Your access level is insufficient to access this page." msgstr "Megtagadva. Hozzáférési szintje túl alacsony az oldal megtekintéséhez." -#: errors.php:25 +#: errors.php:29 msgid "Configuration check failed" msgstr "BeállításellenÅ‘rzés sikertelen." -#: errors.php:27 -msgid "" -"Your version of MySQL is not currently supported. Please see \n" -"\t\tofficial site for more information." -msgstr "" -"A MySQL Ön által használt verziója jelenleg nem támogatott. Kérem teknitse " -"meg \n" -"\t\ta hivatalos weboldalt további információkért." +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "A MySQL Ön által használt verziója jelenleg nem támogatott. Kérem tekintse meg a hivatalos weboldalt további információkért." -#: errors.php:32 +#: errors.php:35 msgid "SQL escaping test failed, check your database and PHP configuration" -msgstr "" +msgstr "SQL eszképelési teszt sikertelen, ellenÅ‘rizze az adatbázis és a PHP bállításokat" -#: functions.php:1928 -msgid "Session failed to validate (incorrect IP)" -msgstr "" - -#: functions.php:1998 -msgid "Incorrect username or password" -msgstr "Hibás felhasználói név vagy jelszó" - -#: functions.php:2979 modules/popup-dialog.php:391 -#: modules/pref-filters.php:420 -msgid "All feeds" -msgstr "Összes hírcsatorna" +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "Hírcsatorna nem található" -#: functions.php:3011 functions.php:3050 functions.php:4447 functions.php:4475 -#: modules/backend-rpc.php:859 modules/pref-feeds.php:1333 -msgid "Uncategorized" -msgstr "Kategorizálatlan" +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "Felhasználó nem találhat" -#: functions.php:3040 functions.php:3689 modules/backend-rpc.php:864 -#: mobile/functions.php:170 -msgid "Special" -msgstr "Kiemelt" +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "Betöltés, kérem várjon..." -#: functions.php:3042 functions.php:3691 prefs.php:114 -#: modules/backend-rpc.php:869 help/4.php:12 mobile/functions.php:197 -msgid "Labels" -msgstr "Címkék" +#: index.php:167 +msgid "Collapse feedlist" +msgstr "Hírcsatornalista összecsukása" -#: functions.php:3087 help/3.php:60 offline.js:493 offline.js:1425 -msgid "Starred articles" -msgstr "Csillagos hírek" +#: index.php:170 +msgid "Show articles" +msgstr "Hírek megjelenítése" -#: functions.php:3089 modules/pref-feeds.php:1492 help/3.php:61 -msgid "Published articles" -msgstr "Publikált hírek" +#: index.php:173 +msgid "Adaptive" +msgstr "Adaptív" -#: functions.php:3091 help/3.php:59 -msgid "Fresh articles" -msgstr "Friss hírek" +#: index.php:174 +msgid "All Articles" +msgstr "Minden hír" -#: functions.php:3093 help/3.php:58 offline.js:488 offline.js:1427 -msgid "All articles" -msgstr "Az összes hír" +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "Csillagozott" -#: functions.php:3095 -#, fuzzy -msgid "Archived articles" -msgstr "Tárolt hírek" - -#: functions.php:4200 -msgid "Generated feed" -msgstr "Generált hírcsatorna" - -#: functions.php:4205 functions.php:5553 modules/popup-dialog.php:82 -#: modules/pref-feeds.php:1087 modules/pref-feeds.php:1297 -#: modules/pref-filters.php:377 modules/pref-labels.php:183 -#: modules/pref-users.php:419 offline.js:408 -msgid "Select:" -msgstr "Kiválaszt:" - -#: functions.php:4206 modules/popup-dialog.php:83 modules/pref-feeds.php:1088 -#: modules/pref-feeds.php:1298 modules/pref-filters.php:378 -#: modules/pref-labels.php:184 modules/pref-users.php:420 -msgid "All" -msgstr "Mind" +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "Publikált" -#: functions.php:4207 functions.php:4224 tt-rss.php:213 +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 msgid "Unread" msgstr "Olvasatlan" -#: functions.php:4208 -msgid "Invert" -msgstr "Fordított" +#: index.php:178 +msgid "With Note" +msgstr "Megjegyzéssel" -#: functions.php:4209 modules/popup-dialog.php:84 modules/pref-feeds.php:1089 -#: modules/pref-feeds.php:1299 modules/pref-filters.php:379 -#: modules/pref-labels.php:185 modules/pref-users.php:421 -msgid "None" -msgstr "Kijelölés törlése" +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Pontozás memmÅ‘zése" -#: functions.php:4217 tt-rss.php:178 offline.js:184 -msgid "Actions..." -msgstr "Műveletek" +#: index.php:182 +msgid "Sort articles" +msgstr "Hírek rendezése" -#: functions.php:4223 -msgid "Selection toggle:" -msgstr "Kiválasztott legyen:" +#: index.php:185 +msgid "Default" +msgstr "Alapértelmezett" -#: functions.php:4225 tt-rss.php:212 -msgid "Starred" -msgstr "Csillagos" +#: index.php:186 +msgid "Newest first" +msgstr "Újak elÅ‘re" -#: functions.php:4226 -msgid "Published" -msgstr "Publikált" +#: index.php:187 +msgid "Oldest first" +msgstr "Régiek elÅ‘re" -#: functions.php:4227 -msgid "Selection:" -msgstr "Kiválasztott hírcsatornák:" +#: index.php:188 +msgid "Title" +msgstr "Cím" -#: functions.php:4228 localized_schema.php:16 tt-rss.php:187 tt-rss.php:230 +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 msgid "Mark as read" -msgstr "Olvasottá tesz" +msgstr "Megjelölés olvasottként" -#: functions.php:4234 -msgid "Archive" -msgstr "" +#: index.php:195 +msgid "Older than one day" +msgstr "Egy napnál régebbi" -#: functions.php:4236 -#, fuzzy -msgid "Move back" -msgstr "Vissza" +#: index.php:198 +msgid "Older than one week" +msgstr "Egy hétnél régebbi" -#: functions.php:4237 -#, fuzzy -msgid "Delete" -msgstr "Alapértelmezett" +#: index.php:201 +msgid "Older than two weeks" +msgstr "Két hétnél régebbi" -#: functions.php:4242 -msgid "Assign label:" -msgstr "Besorolás címke alá:" +#: index.php:217 +msgid "Communication problem with server." +msgstr "Kommunikációs probléma a szerverrel" -#: functions.php:4283 -msgid "Click to collapse category" -msgstr "Kattintson ide a kategória összecsukásához" +#: index.php:223 +msgid "Actions..." +msgstr "Műveletek" -#: functions.php:4493 -msgid "No feeds to display." -msgstr "Nincs megjelenítendÅ‘ hírcsatorna." +#: index.php:225 +msgid "Preferences..." +msgstr "Beállítások..." -#: functions.php:4510 -msgid "Tags" -msgstr "Címkék" +#: index.php:226 +msgid "Search..." +msgstr "Keresés..." -#: functions.php:4669 -msgid "audio/mpeg" -msgstr "audio/mpeg" +#: index.php:227 +msgid "Feed actions:" +msgstr "Műveletek hírcsatornákkal:" -#: functions.php:4795 -msgid " - " -msgstr "-" +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "Feliratkozás hírcsatornára..." -#: functions.php:4820 functions.php:5580 -msgid "Edit tags for this article" -msgstr "Címkék hozzáadása a hírhez" +#: index.php:229 +msgid "Edit this feed..." +msgstr "Hírcsatorna szerkesztése..." -#: functions.php:4826 functions.php:5563 -msgid "Show article summary in new window" -msgstr "Hírösszefoglaló megjelenítése új ablakban." +#: index.php:230 +msgid "Rescore feed" +msgstr "Hírcsatorna újrapontozása" -#: functions.php:4833 functions.php:5570 -msgid "Publish article with a note" -msgstr "Hír publikálása megjegyzéssel" +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "Leiratkozás" -#: functions.php:4850 functions.php:5441 -msgid "Originally from:" -msgstr "" +#: index.php:232 +msgid "All feeds:" +msgstr "Az összes hírcsatorna:" -#: functions.php:4863 functions.php:5454 -#, fuzzy -msgid "Feed URL" -msgstr "Hírcsatorna" +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Olvasottak rejtése/mutatása" -#: functions.php:4903 functions.php:5484 -msgid "unknown type" -msgstr "ismeretlen hírcsatornatípus" +#: index.php:235 +msgid "Other actions:" +msgstr "Egyéb műveletek:" -#: functions.php:4943 functions.php:5527 -msgid "Attachment:" -msgstr "Csatolmány:" +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "Szélesvásznú mód váltása" -#: functions.php:4945 functions.php:5529 -msgid "Attachments:" -msgstr "Csatolmányok:" +#: index.php:237 +msgid "Create label..." +msgstr "Új címke létrehozása..." -#: functions.php:4965 prefs.php:142 tt-rss.php:101 modules/help.php:21 -#: modules/popup-dialog.php:53 modules/popup-dialog.php:154 -#: modules/popup-dialog.php:181 modules/popup-dialog.php:230 -#: modules/popup-dialog.php:575 modules/popup-dialog.php:634 -#: modules/pref-feeds.php:1140 modules/pref-users.php:96 -msgid "Close this window" -msgstr "Ablak bezárása" +#: index.php:238 +msgid "Create filter..." +msgstr "SzűrÅ‘ létrehozása..." -#: functions.php:5021 -msgid "Feed not found." -msgstr "Hírcsatorna nem található" +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "Billentyűparancsok súgója" -#: functions.php:5090 -msgid "" -"Could not display feed (query failed). Please check label match syntax or " -"local configuration." +#: index.php:248 +msgid "Logout" +msgstr "Kijelentkezés" + +#: index.php:254 +msgid "Updates are available from Git." msgstr "" -#: functions.php:5254 functions.php:5341 -msgid "mark as read" -msgstr "olvasottként jelöl" +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "Beállítások" -#: functions.php:5417 functions.php:5424 -msgid "Click to expand article" -msgstr "Hír kinyitása" +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "Billentyűparancsok" -#: functions.php:5587 -msgid "toggle unread" -msgstr "olvasatlanná tesz" +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Kilépés a beállításokból" -#: functions.php:5606 -msgid "No unread articles found to display." -msgstr "Nincs megjeleníthetÅ‘ olvasatlan hír." +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Hírcsatornák" -#: functions.php:5609 -msgid "No updated articles found to display." -msgstr "Nincs megjeleníthetÅ‘ friss hír." +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "SzűrÅ‘k" -#: functions.php:5612 -msgid "No starred articles found to display." -msgstr "Nincs megjeleníthetÅ‘ csillagos hír." +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Címkék" -#: functions.php:5616 -msgid "" -"No articles found to display. You can assign articles to labels manually " -"(see the Actions menu above) or use a filter." -msgstr "" -"A jelenlegi címke alá nincs besorolva egy hír sem.\n" -"Címkék alá híreket besorolhat manuálisan (lásd a fenti Műveletek menüt) vagy " -"a besoroláshoz használhat SzűrÅ‘ket." +#: prefs.php:133 +msgid "Users" +msgstr "Felhasználók" -#: functions.php:5618 offline.js:443 -msgid "No articles found to display." -msgstr "Nincs megjeleníthetÅ‘ hír." +#: prefs.php:136 +msgid "System" +msgstr "Rendszer" -#: functions.php:6362 tt-rss.php:192 -msgid "Create label..." -msgstr "Új címke létrehozása..." +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "Új felhasználói fiók létrehozása" -#: functions.php:6375 -msgid "(remove)" -msgstr "(eltávolít)" +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "Új felhasználók regisztrációja adminisztrátor által letilva." -#: functions.php:6427 -msgid "no tags" -msgstr "nincs címke" +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Vissza az RSS-olvasóhoz" -#: functions.php:6456 -msgid "edit note" -msgstr "jegyzet szerkesztése" +#: register.php:218 +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 "Ideiglenes jelszavát elküdljük a megadott e-mail címre. Azok a felhasználói fiókok, amelyekbe az ideiglenes jelszó kipostázásától számított 24 órán belül nem lépnek be, automatikusan törlÅ‘dnek." -#: localized_schema.php:9 tt-rss.php:222 modules/popup-dialog.php:381 -#: modules/pref-feeds.php:1310 modules/pref-feeds.php:1369 -msgid "Title" -msgstr "Cím" +#: register.php:224 +msgid "Desired login:" +msgstr "Felhasználói név:" -#: localized_schema.php:10 -msgid "Title or Content" -msgstr "Cím vagy tartalom" +#: register.php:227 +msgid "Check availability" +msgstr "EllenÅ‘rizze, hogy nem foglalt-e már:" -#: localized_schema.php:11 -msgid "Link" -msgstr "Link" +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "E-mail:" -#: localized_schema.php:12 modules/popup-dialog.php:382 -msgid "Content" -msgstr "Tartalom" +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "Mennyi kettÅ‘ meg kettÅ‘?" -#: localized_schema.php:13 -msgid "Article Date" -msgstr "Hír dátuma" +#: register.php:235 +msgid "Submit registration" +msgstr "Regisztráció elküldése" -#: localized_schema.php:15 -msgid "Filter article" -msgstr "Hír szűrése" +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "Regisztrációs adatai hiányosak" -#: localized_schema.php:17 -msgid "Set starred" -msgstr "Csillagoz" +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "Ez a felhasználónév már foglalt." -#: localized_schema.php:18 viewfeed.js:545 viewfeed.js:659 -msgid "Publish article" -msgstr "Hír publikálása" +#: register.php:287 +msgid "Registration failed." +msgstr "Regisztráció sikertelen." -#: localized_schema.php:19 -msgid "Assign tags" -msgstr "Címke hozzáadása" +#: register.php:334 +msgid "Account created successfully." +msgstr "Felhasználói fiók sikeresen létrehozva" -#: localized_schema.php:20 -msgid "Assign label" -msgstr "Címke hozzáadása" +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "Új felhasználók regisztrációja jelenleg nem engedélyezett." -#: localized_schema.php:24 -msgid "General" -msgstr "Ãltalános" +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "A Tiny Tiny RSS adatbázis frissítÅ‘ szkript." + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "Kategorizálatlan" -#: localized_schema.php:26 -msgid "Allow duplicate posts" -msgstr "Dupla postok engedélyezése" +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d archivált hír" +msgstr[1] "%d archivált hír" -#: localized_schema.php:27 -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 "" +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "Nem található hírcsatorna." -#: localized_schema.php:28 -msgid "Default interval between feed updates (in minutes)" -msgstr "Frissítések között eltelt idÅ‘ (percekben)" +#: include/functions2.php:52 +msgid "Navigation" +msgstr "Navigáció" -#: localized_schema.php:29 -msgid "Enable e-mail digest" -msgstr "Hírösszefoglaló e-mail elküldésének engedélyezése" +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "KövetkezÅ‘ hírcsatorna megnyitása" -#: localized_schema.php:30 -msgid "" -"This option enables sending daily digest of new (and unread) headlines on " -"your configured e-mail address" -msgstr "" -"Itt engedélyezheti a friss és olvasatlan cikkek napi elküldését a megadott e-" -"mail címére.." +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "ElÅ‘zÅ‘ hírcsatorna megnyitása" -#: localized_schema.php:31 -msgid "Purge old posts after this number of days (0 - disables)" -msgstr "Régi postok törlése ennyi nap után: (0 - kikapcsol)" +#: include/functions2.php:55 +msgid "Open next article" +msgstr "KövetkezÅ‘ hír megnyitása" -#: localized_schema.php:32 -msgid "Update post on checksum change" -msgstr "Hírcsatorna frissítése az ellenÅ‘rzőösszeg megváltozásakor" +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "ElÅ‘zÅ‘ hír megjelenítése" -#: localized_schema.php:33 -msgid "Mark articles in e-mail digest as read" -msgstr "Az e-mail összefoglalóban elküldött hírek olvasottá tétele" +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "KövetkezÅ‘ hír megnyitása (nem görgeti a hosszú híreket)" -#: localized_schema.php:34 -msgid "Enable offline reading" -msgstr "" +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "ElÅ‘zÅ‘ hír megnyitása (nem görgeti a hosszú híreket)" -#: localized_schema.php:35 -msgid "Synchronize new articles for offline reading using Google Gears." -msgstr "" -"Új hírek szinkronizálása kapcsolat nélküli módban való olvasáshoz a Google " -"Gears használatával." +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "Ugrás a következÅ‘ hírre (nem bontja ki vagy jelöli olvasottnak)" -#: localized_schema.php:37 -msgid "Interface" -msgstr "KezelÅ‘felület" +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "Ugrás az elÅ‘zÅ‘ hírre (nem bontja ki vagy jelöli olvasottnak)" -#: localized_schema.php:39 -msgid "Combined feed display" -msgstr "Kombinált hírcsatorna-megjelenítés" +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "KeresÅ‘mezÅ‘ megjelenítése" -#: localized_schema.php:40 -msgid "" -"Display expanded list of feed articles, instead of separate displays for " -"headlines and article content" -msgstr "" -"A hír címének és tartalmának külön való megjelenítése helyett jelentísen emg " -"egy kombinált listát a hírek címével és tartalmával együtt." +#: include/functions2.php:62 +msgid "Article" +msgstr "Hír" -#: localized_schema.php:41 -msgid "Default article limit" -msgstr "Hírek maximális száma" +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "Csillagoz" -#: localized_schema.php:42 -msgid "" -"Default limit for articles to display, any custom number you like (0 - " -"disables)." -msgstr "" -"A megjelenítendÅ‘ hírek maximális száma (amennyi jól esik; 0 - kikapcsolva)." +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "Publikált" -#: localized_schema.php:43 -msgid "Enable feed categories" -msgstr "Hírcsatornák kategorizálásának engedélyezése" +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "Olvasatlannak jelöl" -#: localized_schema.php:44 -msgid "Enable search toolbar" -msgstr "KeresÅ‘mezÅ‘ engedélyezése" +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Címkék szerkesztése" -#: localized_schema.php:45 -msgid "Hide feeds with no unread messages" -msgstr "Olvasatlan hírekkel nem rendelkezÅ‘ hírcsatorna elrejtése" +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "Kijelöltek elrejtése" -#: localized_schema.php:46 -msgid "Mark articles as read automatically" -msgstr "Hírek automatikus olvasottá tétele" +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "Olvasottak elrejtése" -#: localized_schema.php:47 -msgid "" -"This option enables marking articles as read automatically in combined mode " -"(except for Fresh articles feed) while you scroll article list." -msgstr "" -"Itt engedélyezheti a hírek automatikus olvasottá tételét kombinált " -"üzemmódban (A Friss hírcsatorna híreinek kivételével), amikor a hírlistát " -"böngészi." +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "Megnyitás új ablakban" -#: localized_schema.php:48 -msgid "On catchup show next feed" -msgstr "Hírcsatorna végén mutassa a következÅ‘ hírcsatornát" +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "Olvasottnak jel ez alatt" -#: localized_schema.php:49 -msgid "" -"When \"Mark as read\" button is clicked in toolbar, automatically open next " -"feed with unread articles." -msgstr "" -"Ha a \"Olvasottá tesz\" gombra kattint az eszköztáron, automatikusan töltse " -"be a következÅ‘ olvasatlan hírekkel rednelkezÅ‘ hírcsatornát." +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "Olvasottnak jel ez fölött" -#: localized_schema.php:50 -msgid "Open article links in new browser window" -msgstr "Hír linkjeinek megnyitása új böngészÅ‘ablakban" +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "Legördítés" -#: localized_schema.php:51 -msgid "Reverse headline order (oldest first)" -msgstr "Fordított hírcím-sorrend (régiebbiek elÅ‘bb)" +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "Felgördítés" -#: localized_schema.php:52 -msgid "Show content preview in headlines list" -msgstr "A hírelÅ‘zetes mutatása a hírcímek listájában" +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "Az kurzor alatti hír kiválasztása" -#: localized_schema.php:53 -msgid "Sort feeds by unread articles count" -msgstr "Hírcsatornák rendezése olvasatlan hírek száma alapján" +#: include/functions2.php:75 +msgid "Email article" +msgstr "Hír küldése emailben" -#: localized_schema.php:54 -msgid "User stylesheet URL" -msgstr "Felhasználói stíluslap URL-je" +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "Hír bezárása" -#: localized_schema.php:55 -msgid "Link to user stylesheet to override default style, disabled if empty." -msgstr "" -"Link az egyéni felhasználói stíluslaphoz, ha nem használja, hagyja üresen." +#: include/functions2.php:77 +msgid "Toggle article expansion (combined mode)" +msgstr "Hír kibontás váltása (kombinált módban)" -#: localized_schema.php:56 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Meddig legyen friss egy hír (órákban megadva)" +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "Eredeti megjelenítésének váltása" -#: localized_schema.php:57 -msgid "Hide feedlist" -msgstr "Hírcsatornalista elrejtése" +#: include/functions2.php:80 +msgid "Article selection" +msgstr "Hír kijelölés" -#: localized_schema.php:58 -msgid "" -"This option hides feedlist and allows it to be toggled on the fly, useful " -"for small screens." -msgstr "" -"Ezzel a beállítással elrejtheti a hírcsatornalistát és késÅ‘bb használat " -"közben bármikor megjelenítheti. Kisebb képernyÅ‘vel rendelkezÅ‘ felhasználók " -"számára hasznos." +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "Minden hír kijelölése" -#: localized_schema.php:59 -msgid "Group headlines in virtual feeds" -msgstr "Hírcímek csoportosítása virtuális hírcsatornákba" +#: include/functions2.php:82 +msgid "Select unread" +msgstr "Olvasatlan hírek kijelölése" -#: localized_schema.php:60 -msgid "" -"When this option is enabled, headlines in Special feeds and Labels are " -"grouped by feeds" -msgstr "" -"Ha ezt a beállítást engedélyezi, a Kiemelt hírcsatornákban és a Címkékben " -"szereplÅ‘ címeket a program hírcsatornák alapján csoportosítja." +#: include/functions2.php:83 +msgid "Select starred" +msgstr "Csillagozott hírek kijelölése" -#: localized_schema.php:62 -msgid "Advanced" -msgstr "Speciális" +#: include/functions2.php:84 +msgid "Select published" +msgstr "Publikált hírek kijlölése" -#: localized_schema.php:64 -msgid "Blacklisted tags" -msgstr "Feketelistás címkék" +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "Fordított kijelölés" -#: localized_schema.php:65 -msgid "" -"When auto-detecting tags in articles these tags will not be applied (comma-" -"separated list)." -msgstr "" -"Ha a program megtalája ezeket a címkéket a hírekben, kihagyja Å‘ket (lista, " -"elemek vesszÅ‘vel elválasztva)" +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "Kijelölés eltávolítása" -#: localized_schema.php:66 -msgid "Confirm marking feed as read" -msgstr "Egész hírcsatornák olvasottá tételekor megerÅ‘sítés" +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Hírcsatorna" -#: localized_schema.php:67 -msgid "Enable feed icons" -msgstr "Hírcsatorna-ikonok engedélyezése" +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "Aktuális hírcsatorna frissítése" -#: localized_schema.php:68 -msgid "Enable labels" -msgstr "Címkék engedélyezése" +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "Olvasott hírcsatornák rejtése/mutatása" -#: localized_schema.php:69 -msgid "" -"Experimental support for virtual feeds based on user crafted SQL queries. " -"This feature is highly experimental and at this point not user friendly. Use " -"with caution." -msgstr "" -"Kísérleti támogatás virtuális hírcsatornákhoz, amelyek felhasználó által " -"felépített SQL lekérdezéseken alapulnak. Ez a támogatás hangsúlyozottan " -"kísérleti fázisban van, és nem felhasználóbarát." +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "Feliratkozás hírcsatornára" -#: localized_schema.php:70 -msgid "Long date format" -msgstr "Dátum/idÅ‘ hosszú formátuma" +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Hírcsatorna szerkesztése" -#: localized_schema.php:71 -msgid "Set articles as unread on update" -msgstr "Frissítéskor hírek olvasatlanná tétele" +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "Címek fordított sorrendben" -#: localized_schema.php:72 -msgid "Short date format" -msgstr "Dátum/idÅ‘ rövid formátuma" +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "Hírcsatorna frissítés hibakaresés" -#: localized_schema.php:73 -msgid "Show additional information in feedlist" -msgstr "Több információ mutatása a hírcsatornalistában" +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "Minden hírcsatornát olvasottként jelöl" -#: localized_schema.php:74 -msgid "Strip unsafe tags from articles" -msgstr "Nem biztonságos kódok eltávolítása a hírekbÅ‘l" +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "Kategória kinyitás/összecsukás" -#: localized_schema.php:75 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "" -"Hírek olvasásakor távolítsa el a a HTML kódokat a leggyakrabban használtak " -"kivételével." +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "Váltás kombinált módba" -#: localized_schema.php:76 -msgid "Use more accessible date/time format for headlines" -msgstr "Hírek fejlécéhez használjon rövidebb formátumú dátumot/idÅ‘t." +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "Automatikus kibontás kombinált módban" -#: localized_schema.php:77 -msgid "Automatically expand articles in combined mode" -msgstr "Hírek automatikus szétnyitása kombinált üzemmódban" +#: include/functions2.php:99 +msgid "Go to" +msgstr "Ugrás ide" -#: localized_schema.php:78 -msgid "Purge unread articles" -msgstr "Régi hírek törlésekor törölje az olvasatlanokat is" +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "Az összes hír" -#: localized_schema.php:79 -msgid "Show special feeds when hiding read feeds" -msgstr "Különleges hírcsatornák mutatása olvasott hírcsatornák rejtésekor" +#: include/functions2.php:101 +msgid "Fresh" +msgstr "Friss" -#: localized_schema.php:80 -msgid "Prefer more accurate feedlist counters to UI speed" -msgstr "" -"Pontosabb hírcsatornalista-számláló engedélyezése (lassabb kezelÅ‘felület)" +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "CímkefelhÅ‘" -#: localized_schema.php:81 -msgid "Enable inline MP3 player" -msgstr "BelsÅ‘ MP3-lejátszó engedélyezése" +#: include/functions2.php:106 +msgid "Other" +msgstr "Egyéb" -#: localized_schema.php:82 -msgid "" -"Enable the Flash-based XSPF Player to play MP3-format podcast enclosures." -msgstr "" -"A Flash alapú XSPF Lejátszó engedélyezése MP3 podcast csatolmányok " -"lejátszásához." +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "Címke létrehozása" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "SzűrÅ‘ létrehozása" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "Oldalsáv megjelenítés/elrejtés" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "Súgó ablak megjelenítése" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Keresési eredmények: %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +msgid "comment" +msgid_plural "comments" +msgstr[0] "megjegyzés" +msgstr[1] "megjegyzés" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +msgid "comments" +msgstr "megjegyzések" + +#: include/functions2.php:1303 +msgid " - " +msgstr "-" + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "nincs címke" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "Címkék hozzáadása a hírhez" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "Eredeti innen:" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "Hírcsatorna URL" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "Ablak bezárása" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(jegyzet szerkesztése)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "ismeretlen hírcsatornatípus" -#: localized_schema.php:83 -msgid "Do not show images in articles" -msgstr "Képek rejtése a hírekben" +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "Csatolmányok:" -#: localized_schema.php:84 -msgid "Enable external API" +#: include/functions.php:964 +#, php-format +msgid "%d min" msgstr "" -#: login_form.php:120 modules/popup-dialog.php:271 modules/pref-feeds.php:339 -#: modules/pref-feeds.php:561 mobile/login_form.php:38 +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "Kiemelt" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Összes hírcsatorna" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Csillagozott hírek" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Publikált hírek" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "Friss hírek" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "Archivált hírek" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "Legutóbb olvasott" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 msgid "Login:" msgstr "Felhasználó:" -#: login_form.php:124 modules/popup-dialog.php:273 modules/pref-feeds.php:344 -#: modules/pref-feeds.php:567 mobile/login_form.php:43 +#: include/login_form.php:200 +#: classes/handler/public.php:560 msgid "Password:" msgstr "Jelszó:" -#: login_form.php:129 -msgid "Language:" -msgstr "Nyelv:" +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "Elfelejtettem a jelszavam" -#: login_form.php:139 -#, fuzzy +#: include/login_form.php:212 msgid "Profile:" -msgstr "Fájl:" +msgstr "Profil:" -#: login_form.php:152 mobile/login_form.php:28 -msgid "Log in" -msgstr "Belépés mint" +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "Alapértelmezett profil" -#: login_form.php:155 register.php:148 -msgid "Create new account" -msgstr "Új felhasználói fiók létrehozása" +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "Kisebb adatforgalom" -#: login_form.php:169 -msgid "Limit bandwidth usage" -msgstr "Sávszélesség-használat korlátozása" +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "Nem jeleníti meg a képeket a hírekben, csökkenti az automatikus frissítéseket." -#: opml.php:99 opml.php:103 -msgid "OPML Utility" -msgstr "OMPL-segédprogram" +#: include/login_form.php:236 +msgid "Remember me" +msgstr "Emlékezzen rám" -#: opml.php:124 -msgid "Importing OPML (using DOMXML extension)..." -msgstr "OPML importálása (DOMXML kiterjesztés használatával)" +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "Belépés" -#: opml.php:128 -msgid "Importing OPML (using DOMDocument extension)..." -msgstr "OPML importálása (DOMDocument kiterjesztés használatával)" +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "Nem sikerült érvényesíteni a munkamenetet (érvénytelen IP)" -#: opml.php:132 modules/popup-dialog.php:45 -msgid "DOMXML extension is not found. It is required for PHP versions below 5." -msgstr "" -"Az ötösnél alacsonyabb verziószámű PHP-hez szükséges DOMXMLkiterjesztés nem " -"található." +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "Nem sikerült érvényesíteni a munkamenetet (séma verzió megváltozott)" -#: opml.php:136 -msgid "Return to preferences" -msgstr "Vissza a beállításokhoz" +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "Nem sikerült érvényesíteni a munkamenetet (felhasználó nem található)" -#: prefs.php:63 prefs.php:123 tt-rss.php:65 -msgid "Loading, please wait..." -msgstr "Töltés, kérem várjon..." +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "Nem sikerült érvényesíteni a munkamenetet (megváltozott a jelszó)" -#: prefs.php:70 prefs.php:126 tt-rss.php:73 -msgid "" -"Your browser doesn't support Javascript, which is required\n" -"\t\tfor this application to function properly. Please check your\n" -"\t\tbrowser settings." -msgstr "" -"BöngészÅ‘je nem támogatja a Javascriptet, noha az\n" -"\t\telengedhetetlen a program működéséhez.\n" -"\t\tKérem ellenÅ‘rizze böngészÅ‘beállításait, és engedélyezze a Javascriptet!" +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "További tippek a felhasználói felülethez elérhetÅ‘k a Tiny Tiny RSS wikiben." -#: prefs.php:90 tt-rss.php:112 -msgid "Hello," -msgstr "Üdv," +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Billentyűparancsok" -#: prefs.php:92 help/4.php:14 -msgid "Exit preferences" -msgstr "Kilépés a beállításokból" +#: classes/backend.php:61 +msgid "Shift" +msgstr "Shift" -#: prefs.php:94 tt-rss.php:122 mobile/functions.php:60 -#: mobile/functions.php:234 -msgid "Logout" -msgstr "Kijelentkezés" +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" -#: prefs.php:102 tt-rss.php:196 -msgid "Keyboard shortcuts" -msgstr "Billentyűparancsok" +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Súgótéma nem tlálható." -#: prefs.php:108 tt-rss.php:114 help/3.php:63 help/4.php:8 -msgid "Preferences" -msgstr "Beállítások" +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "Megosztás Tiny Tiny RSS-el" -#: prefs.php:110 -msgid "Feeds" -msgstr "Hírcsatornák" +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Cím:" -#: prefs.php:112 help/4.php:11 -msgid "Filters" -msgstr "SzűrÅ‘k" +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "Hírcsatorna URL:" -#: prefs.php:117 help/4.php:13 -msgid "Users" -msgstr "Felhasználók" +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "Tartalom:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "Címkék:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "A megosztott hír a Publikált hírek között fog megjelenni." + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "Megosztás" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "Mégsem" -#: prefs.php:140 tt-rss.php:99 -#, fuzzy -msgid "Fatal Exception" -msgstr "Végzetes Hiba" +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "Nincs belépve" -#: register.php:152 -msgid "New user registrations are administratively disabled." -msgstr "Új felhasználók regisztrációja adminisztrátor által letilva." +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Hibás felhasználói név vagy jelszó" -#: register.php:155 register.php:200 register.php:213 register.php:228 -#: register.php:246 register.php:331 register.php:341 register.php:353 -#: update.php:94 update.php:162 modules/pref-feeds.php:954 -msgid "Return to Tiny Tiny RSS" -msgstr "Vissza az RSS-olvasóhoz" +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "Már fel van iratkozva erre a hírcsatornára: %s." -#: register.php:176 -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 "" -"Ideiglenes jelszavát elküdljük a megadott e-mail címre. Azok a felhasználói " -"fiókok, amelyekbe az ideiglenes jelszó kipostázásától számított 24 órán " -"belül nem lépnek be, automatikusan törlÅ‘dnek." +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "Feliratkozva erre a hírcsatornára: %s." -#: register.php:182 -msgid "Desired login:" -msgstr "Felhasználói név:" +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "Nem lehet feliratkozni ide: %s." -#: register.php:185 -msgid "Check availability" -msgstr "EllenÅ‘rizze, hogy nem foglalt-e már:" +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "Nem található hírcsatorna itt: %s." -#: register.php:187 -msgid "Email:" -msgstr "E-mail:" +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "Több hírcsatorna URL-t találtam." -#: register.php:190 -msgid "How much is two plus two:" -msgstr "Mennyi kettÅ‘ meg kettÅ‘?" +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "Nem lehet feliratkozni ide: %s.
    Nem lehet betölteni a hícsatorna URL-t." -#: register.php:193 -msgid "Submit registration" -msgstr "Regisztráció elküldése" +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "Feliratkozás a kiválasztott hírcsatornára" -#: register.php:211 -msgid "Your registration information is incomplete." -msgstr "Regisztrációs adatai hiányosak" +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Feliratkozási beállítások szerkesztése" -#: register.php:226 -msgid "Sorry, this username is already taken." -msgstr "Ez a felhasználónév már foglalt." +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "Jelszó helyreállítás" -#: register.php:244 -msgid "Registration failed." -msgstr "Regisztráció sikertelen." +#: classes/handler/public.php:805 +#, fuzzy +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "Adjon meg érvényes fióknevet és email címet. Az új jelszó a megadott email címre lesz elküldve." -#: register.php:328 -msgid "Account created successfully." -msgstr "Felhasználói fiók sikeresen létrehozva" +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "Jelszó visszaállítás" -#: register.php:350 -msgid "New user registrations are currently closed." -msgstr "Új felhasználók regisztrációja jelenleg nem engedélyezett." +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "Néhány szükséges paraméter hiányzik az űrlapról vagy érvénytelen." -#: tt-rss.php:118 -msgid "Comments?" -msgstr "Hozzászólások?" +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "Visszalépés" -#: tt-rss.php:131 -msgid "Offline reading" -msgstr "" +#: classes/handler/public.php:878 +#, fuzzy +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] Értesítés jelszó megváltoztatásáról." -#: tt-rss.php:138 -msgid "Cancel synchronization" -msgstr "Szinkronizálás megszakítása" +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "Sajnálom, a belépési és email kombináció nem található." -#: tt-rss.php:141 -msgid "Synchronize" -msgstr "Szinkronizálás" +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "A hozzáférési szinted nem elég magasa script futtatásához" -#: tt-rss.php:143 -msgid "Remove stored data" -msgstr "Tárolt adatok eltávolítása." +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "Adatbázis-frissítő" -#: tt-rss.php:145 -msgid "Go offline" -msgstr "Váltás kapcsolat nélküli módra" +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Frissítések végrehajtása" -#: tt-rss.php:151 -msgid "New version of Tiny Tiny RSS is available!" -msgstr "A Tiny Tiny RSS-nek elérhető egy újabb verziója!" +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "Megtekintés RSS feedként" -#: tt-rss.php:158 -msgid "Go online" -msgstr "Kilépés kapcsolat nélküli módból" +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "Megtekintés RSS-ként" -#: tt-rss.php:169 tt-rss.js:79 -msgid "tag cloud" -msgstr "címkefelhő" +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "Legutóbbi frissítés: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "Mind" -#: tt-rss.php:179 -msgid "Search..." -msgstr "Keresés..." +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Fordított" -#: tt-rss.php:180 -msgid "Feed actions:" -msgstr "Műveletek hírcsatornákkal:" +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Kijelölés törlése" -#: tt-rss.php:181 -msgid "Subscribe to feed..." -msgstr "Feliratkozás hírcsatornára..." +#: classes/feeds.php:99 +msgid "More..." +msgstr "Tovább..." -#: tt-rss.php:182 -msgid "Edit this feed..." -msgstr "Hírcsatorna szerkesztése..." +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Kiválasztott legyen:" -#: tt-rss.php:183 -msgid "Rescore feed" -msgstr "" +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Kiválasztott hírcsatornák:" -#: tt-rss.php:184 modules/pref-feeds.php:465 modules/pref-feeds.php:1193 -msgid "Unsubscribe" -msgstr "Leiratkozás" +#: classes/feeds.php:110 +msgid "Set score" +msgstr "Pontszám megadás" -#: tt-rss.php:186 -msgid "All feeds:" -msgstr "Az összes hírcsatorna:" +#: classes/feeds.php:113 +msgid "Archive" +msgstr "Archivál" -#: tt-rss.php:188 help/3.php:44 -msgid "(Un)hide read feeds" -msgstr "Olvasottak rejtése/mutatása" +#: classes/feeds.php:115 +msgid "Move back" +msgstr "Visszalépés" -#: tt-rss.php:190 -msgid "Other actions:" -msgstr "Egyéb műveletek:" +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "Törlés" -#: tt-rss.php:193 -msgid "Create filter..." -msgstr "Szűrő létrehozása..." +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "Továbbítás emaiben" -#: tt-rss.php:194 -msgid "Reset UI layout" -msgstr "UI-kiosztás visszaállítása" +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Hírcsatorna:" -#: tt-rss.php:195 -msgid "Reset category order" -msgstr "Kategória rendjének visszaállítása" +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "Hírcsatorna nem található" -#: tt-rss.php:205 -msgid "Collapse feedlist" -msgstr "Hírcsatornalista összecsukása" +#: classes/feeds.php:268 +msgid "Never" +msgstr "Soha" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "Importálás %s" -#: tt-rss.php:208 +#: classes/feeds.php:452 +#: classes/feeds.php:549 #, fuzzy -msgid "Show articles" -msgstr "Tárolt hírek" +msgid "mark feed as read" +msgstr "olvasottként jelöl" -#: tt-rss.php:210 -msgid "Adaptive" -msgstr "Adaptív" +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "Hír bezárása" -#: tt-rss.php:211 -msgid "All Articles" -msgstr "Minden hír" +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "Nincs megjeleníthető olvasatlan hír." -#: tt-rss.php:214 -msgid "Ignore Scoring" -msgstr "" +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "Nincs megjeleníthető friss hír." -#: tt-rss.php:215 modules/pref-feeds.php:1316 modules/pref-feeds.php:1377 -msgid "Updated" -msgstr "Frissített" +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "Nincs megjeleníthető csillagozott hír." -#: tt-rss.php:218 -#, fuzzy -msgid "Sort articles" -msgstr "Tárolt hírek" +#: classes/feeds.php:778 +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 "Nem található megjelenítendő hír. A kiválasztott hírekhez manuálisan is hozzá lehet rendelni címkéket a fejléc helyi menüjéből vagy szűrő használatával." -#: tt-rss.php:221 modules/popup-dialog.php:462 modules/pref-filters.php:51 -#: modules/pref-filters.php:469 -msgid "Date" -msgstr "Dátum" +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "Nincs megjeleníthető hír." -#: tt-rss.php:223 -msgid "Score" -msgstr "" +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "Hírcsatornák utolsó frissítése: %s" -#: tt-rss.php:227 modules/pref-feeds.php:296 modules/pref-feeds.php:524 -msgid "Update" -msgstr "Frissítés" +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "Néhány hírcsatorna frissítésével gond akadt. (Kattints ide a részletekhez!)" -#: tt-rss.php:238 tt-rss.php:252 +#: classes/feeds.php:957 msgid "No feed selected." msgstr "Nincs kiválasztott hírcsatorna." -#: tt-rss.php:242 -msgid "Drag me to resize panels" -msgstr "A panelek újraméretezéséhez fogj meg az egérrel és húzz arrébb" +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "Hírcsatorna vagy weboldal URL" -#: update.php:19 -msgid "Your access level is insufficient to run this script." -msgstr "A hozzáférési szinted nem elég magasa script futtatásához" +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "Hozzáadás a következő kategóriához:" -#: update.php:44 -msgid "Database Updater" -msgstr "Adatbázis-frissítő" +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "Elérhető hírcsatornák" -#: update.php:85 -msgid "Could not update database" -msgstr "Adatbázis frissítése sikertelen" +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "Azonosítás" -#: update.php:88 -msgid "Could not find necessary schema file, need version:" -msgstr "" +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "Belépés" -#: update.php:89 -msgid ", found: " -msgstr "" +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "Jelszó" -#: update.php:92 -msgid "Tiny Tiny RSS database is up to date." -msgstr "A Tiny Tiny RSS adatbázis friss." +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Ez a hírcsatorna azonosítást igényel." + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "Feliratkozás" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "További hírcsatornák" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "Keresés" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "Népszerű hírcsatornák" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "Hírcsatorna archívum" -#: update.php:102 -msgid "Please backup your database before proceeding." -msgstr "A továbbhaladás előtt készítsen biztosági másolatot adatbázisáról." +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "határ:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "Eltávolít" -#: update.php:104 +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "Keresés" + +#: classes/feeds.php:1144 #, php-format -msgid "" -"Your Tiny Tiny RSS database needs update to the latest version (%d to " -"%d)." +msgid "in %s" msgstr "" -"A Tiny Tiny RSS adatbázisát frissíteni kell a legújabb verzióra (%d " -"to %d)." -#: update.php:118 -msgid "Perform updates" -msgstr "Frissítések végrehajtása" +#: classes/feeds.php:1152 +#, fuzzy +msgid "Search syntax" +msgstr "Keresés" -#: update.php:123 -msgid "Performing updates..." -msgstr "Frissítések folyamatban..." +#: classes/article.php:25 +msgid "Article not found." +msgstr "Hír nem található." -#: update.php:129 -#, php-format -msgid "Updating to version %d..." -msgstr "Frissítés %d verzióra..." +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "A hír címkéi (vesszőkkel elválasztva):" -#: update.php:142 -msgid "Checking version... " -msgstr "Verzió ellenőrzése" +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Mentés" -#: update.php:148 -msgid "OK!" -msgstr "OK!" +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "OMPL-segédprogram" -#: update.php:150 -msgid "ERROR!" -msgstr "HIBA!" +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "OPML importálás..." -#: update.php:158 +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "Vissza a beállításokhoz" + +#: classes/opml.php:271 #, php-format -msgid "" -"Finished. Performed %d update(s) up to schema\n" -"\t\t\tversion %d." -msgstr "" +msgid "Adding feed: %s" +msgstr "Hírcsatorna hozzáadása: %s" -#: modules/help.php:6 -msgid "Help" -msgstr "Segítség" +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "Duplikált hírcsatorna: %s" -#: modules/help.php:17 -msgid "Help topic not found." -msgstr "Súgótéma nem tlálható." +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "Címke hozzáadása %s" -#: modules/opml_domdoc.php:52 modules/opml_domxml.php:54 -#, fuzzy, php-format -msgid "
  • Adding category %s.
  • " -msgstr "Kategória hozzáadása %s...
    " +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "Dupla címke: %s" -#: modules/opml_domdoc.php:101 modules/opml_domxml.php:103 -#, fuzzy -msgid "is already imported." -msgstr "Már importálva." +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "%s kulcs beállítása erre: %s" -#: modules/opml_domdoc.php:121 modules/opml_domxml.php:122 -#, fuzzy -msgid "OK" -msgstr "OK!" +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "SzűrÅ‘ hozzáadása..." -#: modules/opml_domdoc.php:130 modules/opml_domxml.php:134 -msgid "Error while parsing document." -msgstr "Hiba történt a dokuementum feldoglozása közben" +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "%s kategória feldolgozása" -#: modules/opml_domdoc.php:134 modules/opml_domxml.php:138 +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "Feltöltés sikertelen. Hibakód: %d" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "A feltöltött fájl nem helyezhetÅ‘ át." + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 msgid "Error: please upload OPML file." msgstr "Hiba: kérem töltse fel az OPML fájlt!" -#: modules/opml_domxml.php:131 -msgid "Error: can't find body element." -msgstr "" +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "Hiba: nem található az áthelyezett OPML fájl." -#: modules/popup-dialog.php:7 -#, fuzzy -msgid "OPML Import" -msgstr "Importálás" +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Hiba történt a dokuementum feldoglozása közben" -#: modules/popup-dialog.php:34 -#, fuzzy -msgid "Importing using DOMXML." -msgstr "OPML importálása (DOMXML kiterjesztés használatával)" +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "Hozzáférési szintje elégtelen ehhez a művelethez." -#: modules/popup-dialog.php:40 -#, fuzzy -msgid "Importing using DOMDocument." -msgstr "OPML importálása (DOMDocument kiterjesztés használatával)" +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "Hibanapló" -#: modules/popup-dialog.php:68 -msgid "Settings Profiles" -msgstr "" +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "Frissítés" -#: modules/popup-dialog.php:75 -#, fuzzy -msgid "Create profile" -msgstr "SzűrÅ‘ létrehozása" +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "Napló törlés" -#: modules/popup-dialog.php:100 modules/popup-dialog.php:128 -#, fuzzy -msgid "(active)" -msgstr "Adaptív" +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Hiba" -#: modules/popup-dialog.php:148 modules/popup-dialog.php:350 -#: modules/pref-feeds.php:455 modules/pref-feeds.php:1136 -#: modules/pref-filters.php:153 modules/pref-filters.php:321 -#: modules/pref-labels.php:140 modules/pref-users.php:378 -msgid "Remove" -msgstr "Eltávolít" +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "Fájlnév" -#: modules/popup-dialog.php:150 -#, fuzzy -msgid "Activate" -msgstr "Adaptív" +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Üzenet" -#: modules/popup-dialog.php:163 -msgid "Published Articles" -msgstr "Publikált Hírek" +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Dátum" -#: modules/popup-dialog.php:168 -#, fuzzy -msgid "Your Published articles feed URL is:" -msgstr "Link a publikált hírek hírcsatornájához" +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Felhasználó nem találhat" -#: modules/popup-dialog.php:177 -#, fuzzy -msgid "Generate new URL" -msgstr "Generált hírcsatorna" +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "Regisztrált" -#: modules/popup-dialog.php:190 -msgid "Notice" -msgstr "" +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Utolsó belépés" -#: modules/popup-dialog.php:196 -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 "" -"A frissítÅ‘ daemon a beállításokban engedélyezve van, ám a daemon folyamat " -"nem fut, így a hírcsatornák nem tudnak frissülni. Kérem indítsa el a daemon " -"folyamatot, vagy lépjen kapcsolatba az oldal/szerver tulajdonosával." +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "Olvasott hírcsatornák száma" -#: modules/popup-dialog.php:200 modules/popup-dialog.php:220 -msgid "Last update:" -msgstr "Legutóbbi frissítés:" +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Feliratkozott a következÅ‘ hírcsatornákra:" -#: modules/popup-dialog.php:208 -msgid "" -"You are running the latest version of Tiny Tiny RSS. The fact that you are " -"seeing this dialog is probably a bug." -msgstr "" -"Ön a Tiny Tiny RSS legfirssebb verzióját használja. Amennyiben ezt az " -"üzenetet látja, valószínűleg hibás a program." +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Hozzáférési szint:" -#: modules/popup-dialog.php:216 -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 "" -"A frissítÅ‘ daemon túl régóta próbálkozik a hírcsatornák frissítésével. Ez " -"összeomlás vagy hiba jele is lehet, kérem lépjen kapcsolatba az oldal/" -"szerver tulajdonosával!" +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Beállítások" -#: modules/popup-dialog.php:239 -msgid "Subscribe to Feed" -msgstr "Feliratkozás hírcsatornára" +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "A következÅ‘ felhasználó hozzáadva %s ezzel a jelszóval %s" -#: modules/popup-dialog.php:248 modules/pref-feeds.php:197 -#: modules/pref-feeds.php:488 modules/pref-filters.php:407 -msgid "Feed" -msgstr "Hírcsatorna" +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "A következÅ‘ felhasználó létrehozása sikertelen %s" -#: modules/popup-dialog.php:251 modules/pref-feeds.php:213 -#: modules/pref-feeds.php:502 -msgid "URL:" -msgstr "Hírcsatorna URL:" +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "A következÅ‘ felhasználó már létezik %s." -#: modules/popup-dialog.php:260 modules/pref-feeds.php:225 -#: modules/pref-feeds.php:514 -msgid "Place in category:" -msgstr "Hozzáadás a következÅ‘ kategóriához:" +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "%s felhasználó jelszava megváltoztatva erre: %s" -#: modules/popup-dialog.php:268 modules/pref-feeds.php:332 -#: modules/pref-feeds.php:558 modules/pref-prefs.php:235 -#: modules/pref-users.php:142 -msgid "Authentication" -msgstr "Azonosítás" +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "Új jelszó küldése %s felhasználónak ide: %s" -#: modules/popup-dialog.php:283 -msgid "This feed requires authentication." -msgstr "Ez a hírcsatorna azonosítást igényel." +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] Értesítés jelszó megváltoztatásáról." -#: modules/popup-dialog.php:289 modules/popup-dialog.php:349 -msgid "Subscribe" -msgstr "Feliratkozás" +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "Kiválasztás" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Felhasználó létrehozás" -#: modules/popup-dialog.php:290 -#, fuzzy -msgid "More feeds" -msgstr "Hírcsatornák..." +#: classes/pref/users.php:346 +msgid "Details" +msgstr "Részletek" -#: modules/popup-dialog.php:291 modules/popup-dialog.php:351 -#: modules/popup-dialog.php:425 modules/popup-dialog.php:543 -#: modules/popup-dialog.php:612 modules/pref-feeds.php:468 -#: modules/pref-feeds.php:623 modules/pref-filters.php:160 -#: modules/pref-users.php:181 -msgid "Cancel" -msgstr "Mégse" +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Szerkesztés" -#: modules/popup-dialog.php:298 -msgid "Feed Browser" -msgstr "Hírcsatorna-böngészÅ‘" +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Hozzáférési szint" -#: modules/popup-dialog.php:317 modules/popup-dialog.php:359 -#: modules/popup-dialog.php:424 modules/pref-feeds.php:1177 -#: modules/pref-filters.php:308 modules/pref-labels.php:131 -#: modules/pref-users.php:361 -msgid "Search" -msgstr "Keresés" +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "Utolsó belépés" -#: modules/popup-dialog.php:321 -#, fuzzy -msgid "Popular feeds" -msgstr "hírcsatornák megjelenítése" +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Kattintson ide a szerkesztéshez" -#: modules/popup-dialog.php:322 -#, fuzzy -msgid "Feed archive" -msgstr "Hírcsatorna-műveletek" +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "Nincs megadva felhasználó." -#: modules/popup-dialog.php:325 -#, fuzzy -msgid "limit:" -msgstr "Határ:" +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "Nem található a feltételeknek megfelelÅ‘ felhasználó." -#: modules/popup-dialog.php:371 -msgid "Look for" -msgstr "" +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Jelölje be a mezÅ‘ engedélyezéséhez" -#: modules/popup-dialog.php:378 -#, fuzzy -msgid "match on" -msgstr "ha egyezik ezzel:" +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "(%d hírcsatorna)" +msgstr[1] "(%d hírcsatorna)" -#: modules/popup-dialog.php:383 -msgid "Title or content" -msgstr "Cím vagy tartalom" +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "Hírcsatorna címe" -#: modules/popup-dialog.php:388 -msgid "Limit search to:" -msgstr "Keresés korlátozása ezekre:" +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "Frissítés" -#: modules/popup-dialog.php:404 -msgid "This feed" -msgstr "Ez a hírcsatorna" +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Régi hírek törlése:" -#: modules/popup-dialog.php:438 -msgid "Create Filter" -msgstr "SzárÅ‘ létrehozása" +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "Megjegyzés: ha a hírcsatorna megköveteli a hitelesítést (kivéve a Twitter csatornákat), ki kell tölteni a bejelentkezési információkat." -#: modules/popup-dialog.php:457 modules/pref-filters.php:42 -#: modules/pref-filters.php:406 -msgid "Match" -msgstr "Egyezés" +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "Elrejtés a Népszerű hírcsatornákból" -#: modules/popup-dialog.php:465 modules/pref-filters.php:54 -#: modules/pref-filters.php:441 -msgid "before" -msgstr "" +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "Hozzáadás az e-mail összefoglalóhoz" -#: modules/popup-dialog.php:466 modules/pref-filters.php:55 -#: modules/pref-filters.php:442 -msgid "after" -msgstr "elteltével" +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Kép csatolmányokat mindig jelenítse meg" -#: modules/popup-dialog.php:478 modules/pref-filters.php:68 -msgid "Check it" -msgstr "" +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "Ne ágyazza be a képeket" -#: modules/popup-dialog.php:481 modules/pref-filters.php:71 -msgid "on field" -msgstr "...szerepeljen ebben a mezÅ‘ben: " +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Képek helyi tárolása" -#: modules/popup-dialog.php:487 modules/pref-filters.php:77 -msgid "in" -msgstr "itt" +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "Frissült hírek megjelölése olvasatlanként" -#: modules/popup-dialog.php:492 modules/pref-filters.php:82 -msgid "Perform Action" -msgstr "Műveletek" +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "Ikon" -#: modules/popup-dialog.php:509 modules/pref-filters.php:102 -msgid "with parameters:" -msgstr "Beállítás:" +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "Csere" -#: modules/popup-dialog.php:522 modules/pref-feeds.php:355 -#: modules/pref-feeds.php:576 modules/pref-filters.php:121 -#: modules/pref-users.php:164 -msgid "Options" -msgstr "Beállítások" +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "Újra feliratkozás a push frissítésekre" -#: modules/popup-dialog.php:528 modules/pref-filters.php:133 -msgid "Enabled" -msgstr "Engedélyezve" +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "Visszaállítja a PubSubHubbub feliratkozást a push-engedélyezett hírcsatornákhoz." -#: modules/popup-dialog.php:531 modules/pref-filters.php:142 -msgid "Inverse match" -msgstr "Fordított egyezés" +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Kész." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "Hibás hírcsatornák" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "Inaktív hírcsatornák" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "Kijelölt hírcsatornák szerkeztése" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "Rendezési sorren visszaállítása" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "Kötegelt feliratkozás" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "Kategóriák" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "Kategória hozzáadás" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "Kijelölt eltávolítása" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "További műveletek..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "Kézi takarítás (régi hírek törlése)" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "Hírcsatorna-adatok törlése" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Hírek újrapontszámozása" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "Az OPML használatával hírcsatornákat, szűrÅ‘ket, címkéket és beállításokat exportálhat, importálhat." + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "Csak a fÅ‘ beállításprofilt lehet OPML használatával költöztetni." + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "OPML importálása" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "Fájlnév:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "Beállításokkal együtt" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "Exportálás OPML-be" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "Az OPML nyilvánosságra hozható és bárki feliratkozhat rá, aki ismeri az alábbi URL-t." + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "A publikált OPML nem tartalmazza a beállításokat, az azonosítást igénylÅ‘ hírcsatornákat és az Népszerű hírcsatornákból elrejtetteket." + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "Publikus OPML URL" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "Publikált OPML URL mejelenítése" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Firefox integráció" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "Ez a Tiny Tiny RSS oldal beállítható a Firefox böngészÅ‘ alapértelmezett hírcsatorna-olvasójaként. Ehhez kattintson az alábbi linkre!" + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "Kattintson ide az oldal hírcsatorna-olvasóként való beállításához!" + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "Publikált és megosztott hírek / Generált hírcsatornák" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "A program a publikált hírekbÅ‘l egy publikus RSS hírcsatornát készít, amelyre bárki feliratkozhat, aki tudja a lenti címet." + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "URL megjelenítés" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "Minden generált URL törlése" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "Ezek a hírcsatornák 3 hónapja nem frissültek új tartalommal (régebbiek elöl):" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "Kattintson a hírcsatorna szerkesztéséhez" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "Leiratkozás a kiválasztott hírcsatornákról" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "Soronként egy érvényes RSS hírcsatornát adjon meg" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "Feliratkozás hírcsatornákra, soronként egy" -#: modules/popup-dialog.php:541 -msgid "Create" -msgstr "Létrehoz" +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "Ez a hírcsatorna azonosítást igényel." -#: modules/popup-dialog.php:555 -msgid "Update Errors" -msgstr "Frissítési hiba" +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "A szűrÅ‘nek megfelelÅ‘ hírek:" -#: modules/popup-dialog.php:558 -msgid "These feeds have not been updated because of errors:" -msgstr "Váratlan hibák miatt ezek a hírcsatornák nem frissültek:" +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "Nem található a feltételeknek megfelelÅ‘ hír." -#: modules/popup-dialog.php:584 -msgid "Edit Tags" -msgstr "Címkék szerkesztése" +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(fordított)" -#: modules/popup-dialog.php:589 -msgid "Tags for this article (separated by commas):" -msgstr "A hír címkéi (vesszÅ‘kkel elválasztva):" +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "%s ebben: %s itt: %s %s" -#: modules/popup-dialog.php:611 modules/pref-feeds.php:467 -#: modules/pref-feeds.php:621 modules/pref-filters.php:157 -#: modules/pref-users.php:179 -msgid "Save" -msgstr "Mentés" +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Cím" -#: modules/popup-dialog.php:620 -#, fuzzy -msgid "Tag Cloud" -msgstr "CímkefelhÅ‘" +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "Szabály" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "Hozzáad" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "Műveletek alkalmazása" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Engedélyezve" -#: modules/popup-dialog.php:623 -msgid "Showing most popular tags " -msgstr "Legnépszerűbb címkék megjelenítése" +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "Minden szabálynak megfeleljen" -#: modules/popup-dialog.php:624 -#, fuzzy -msgid "more tags" -msgstr "nincs címke" +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "Fordított egyezés" -#: modules/pref-feeds.php:4 -msgid "Check to enable field" -msgstr "" +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "Teszt" -#: modules/pref-feeds.php:187 -msgid "Feed Editor" -msgstr "HírcsatornaszerkesztÅ‘" +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "Egyesít" -#: modules/pref-feeds.php:242 -msgid "Link to feed:" -msgstr "Hírcsatornához csatol:" +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Létrehoz" -#: modules/pref-feeds.php:259 -msgid "Not linked" -msgstr "Nem linkelt" +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "Fordított reguláris kifejezés egyezés" -#: modules/pref-feeds.php:310 modules/pref-feeds.php:537 -msgid "using" -msgstr "" +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "...szerepeljen ebben a mezÅ‘ben: " -#: modules/pref-feeds.php:322 modules/pref-feeds.php:549 -msgid "Article purging:" -msgstr "Régi hírek törlése:" +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "itt" -#: modules/pref-feeds.php:369 modules/pref-feeds.php:582 +#: classes/pref/filters.php:947 #, fuzzy -msgid "Hide from Popular feeds" -msgstr "Elrejtés a hírcsatornalistámról" - -#: modules/pref-feeds.php:380 modules/pref-feeds.php:587 -msgid "Right-to-left content" -msgstr "Jobbról balra tartó tartalom" +msgid "Wiki: Filters" +msgstr "SzűrÅ‘k" -#: modules/pref-feeds.php:392 modules/pref-feeds.php:593 -msgid "Include in e-mail digest" -msgstr "Hozzáadás az e-mail összefoglalóhou" +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "Szabály mentés" -#: modules/pref-feeds.php:405 modules/pref-feeds.php:599 -msgid "Always display image attachments" -msgstr "" +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "Szabály hozzáadás" -#: modules/pref-feeds.php:427 modules/pref-feeds.php:607 -msgid "Cache images locally" -msgstr "Képek helyi tárolása" +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Műveletek" -#: modules/pref-feeds.php:439 -#, fuzzy -msgid "Icon" -msgstr "Művelet" +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "Beállítás:" -#: modules/pref-feeds.php:453 -msgid "Replace" -msgstr "" +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "Művelet mentés" -#: modules/pref-feeds.php:478 -msgid "Multiple Feed Editor" -msgstr "" +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "Művelet hozzáadás" -#: modules/pref-feeds.php:842 modules/pref-feeds.php:889 -msgid "All done." -msgstr "Kész." +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[Nincs cím]" -#: modules/pref-feeds.php:920 +#: classes/pref/filters.php:1044 #, php-format -msgid "Subscribed to %s." -msgstr "Feliratkozva erre a hírcsatornára: %s." - -#: modules/pref-feeds.php:923 -#, fuzzy, php-format -msgid "Could not subscribe to %s." -msgstr "Már fel van iratkozva erre a hírcsatornára: %s." +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "%s (%d szabály)" +msgstr[1] "%s (%d szabály)" -#: modules/pref-feeds.php:926 +#: classes/pref/filters.php:1059 #, php-format -msgid "Already subscribed to %s." -msgstr "Már fel van iratkozva erre a hírcsatornára: %s." +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "%s (+%d művelet)" +msgstr[1] "%s (+%d művelet)" -#: modules/pref-feeds.php:949 -msgid "Edit subscription options" -msgstr "Feliratkozási beállítások szerkesztése" +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "Színek" -#: modules/pref-feeds.php:1033 -msgid "Category editor" -msgstr "Kategória-szerkesztÅ‘" +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "ElÅ‘tér:" -#: modules/pref-feeds.php:1056 +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "Háttér:" + +#: classes/pref/labels.php:232 #, php-format -msgid "Category $%s already exists in the database." -msgstr "A következÅ‘ kategória $%s már létezik az adatbázisban." +msgid "Created label %s" +msgstr "Címke létrehozva: %s" -#: modules/pref-feeds.php:1077 -msgid "Create category" -msgstr "Kategória létrehozása" +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Színek visszaállítása" -#: modules/pref-feeds.php:1130 -msgid "No feed categories defined." -msgstr "Nincs megadva hírcsatorna-kategória." +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Ãltalános" -#: modules/pref-feeds.php:1160 -msgid "Some feeds have update errors (click for details)" -msgstr "" -"Néhány hírcsatorna frissítésével gond akadt. (Kattints ide a részletekhez!)" +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "KezelÅ‘felület" -#: modules/pref-feeds.php:1181 help/3.php:45 help/4.php:22 -msgid "Subscribe to feed" -msgstr "Feliratkozás hírcsatornára" +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Speciális" -#: modules/pref-feeds.php:1184 -#, fuzzy -msgid "Edit feeds" -msgstr "Hírcsatorna szerkesztése" +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "Összefoglaló" -#: modules/pref-feeds.php:1189 -msgid "Edit categories" -msgstr "Kategóriák szerkesztése" +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "Dupla hírek engedélyezése" -#: modules/pref-feeds.php:1198 -#, fuzzy -msgid "More actions..." -msgstr "Műveletek" +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Feketelistás címkék" -#: modules/pref-feeds.php:1202 -msgid "Manual purge" -msgstr "Kézi takarítás (régi hírek törlése)" +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "Címkék automatikus keresése esetén ezek a címkék nem alkalmazhatók (vesszÅ‘vel elválasztott lista)." -#: modules/pref-feeds.php:1206 -msgid "Clear feed data" -msgstr "Hírcsatorna-adatok törlése" +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "Hírek megjelölése olvasottként automatikusan" -#: modules/pref-feeds.php:1207 modules/pref-filters.php:324 -msgid "Rescore articles" -msgstr "" +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "Ez a beállítás lehetÅ‘vé teszi a hírek automatikus olvasottnak jelölését a hír lista görgetése közben." -#: modules/pref-feeds.php:1296 -msgid "Show last article times" -msgstr "Mutasd az utolsó hírek idÅ‘pontjait" +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "Hírek automatikus szétnyitása kombinált üzemmódban" -#: modules/pref-feeds.php:1313 modules/pref-feeds.php:1373 -msgid "Last Article" -msgstr "Utolsó Hír" +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "Kombinált hírcsatorna-megjelenítés" -#: modules/pref-feeds.php:1398 modules/pref-filters.php:487 -#: modules/pref-users.php:467 -msgid "Click to edit" -msgstr "Kattintson ide a szerkesztéshez" +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "A hír címének és tartalmának külön való megjelenítése helyett jelentísen emg egy kombinált listát a hírek címével és tartalmával együtt." -#: modules/pref-feeds.php:1412 -#, php-format -msgid "(linked to %s)" -msgstr "( %s-hez kapcsolva)" +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "MegerÅ‘sítés hírcsatornák olvasottként jelölésekor" -#: modules/pref-feeds.php:1439 -#, fuzzy -msgid "You don't have any subscribed feeds." -msgstr "EbbÅ‘l a kategóriából nem ." +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "Ennyi hír jelenjen meg egyszerre" -#: modules/pref-feeds.php:1441 -#, fuzzy -msgid "No matching feeds found." -msgstr "Nem található a feltételeknek megfelelÅ‘ szűrÅ‘." +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "Alapértelmezett hírcsatorna frissítési idÅ‘köz:" -#: modules/pref-feeds.php:1447 -msgid "OPML" -msgstr "OPML" +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "A legkisebb idÅ‘köz, amelynek letelte után, a frissítési módszertÅ‘l függetlenül a hírcsatornák frissítve lesznek" -#: modules/pref-feeds.php:1470 -msgid "Import" -msgstr "Importálás" +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "Az email összefoglalóban elküldött hírek megjelölése hírek olvasottként" -#: modules/pref-feeds.php:1475 -msgid "Export OPML" -msgstr "Exportálás OPML-be" +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "Hírösszefoglaló e-mail engedélyezése" -#: modules/pref-feeds.php:1478 -msgid "Firefox Integration" -msgstr "Firefox-integráció" +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Itt engedélyezheti a friss és olvasatlan cikkek napi elküldését a megadott e-mail címére.." -#: modules/pref-feeds.php:1480 -msgid "" -"This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the " -"link below." -msgstr "" -"Ez a Tiny Tiny RSS oldal beállítható a Firefox böngészÅ‘ alapértelmezett " -"hírcsatorna-olvasójaként. Ehhez kattintson az alábbi linkre!" +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "A kivonatot megpróbálja a megadott idÅ‘ben elküldeni" -#: modules/pref-feeds.php:1487 -msgid "Click here to register this site as a feed reader." -msgstr "Kattintson ide az oldal hírcsatorna-olvasóként való beállításához!" +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "UTC idÅ‘zónát használ" -#: modules/pref-feeds.php:1498 -msgid "" -"Published articles are exported as a public RSS feed and can be subscribed " -"by anyone who knows the URL specified below." -msgstr "" -"A program a publikált hírekbÅ‘l egy publikus RSS hírcsatornát készít, amelyre " -"bárki feliratkozhat, aki tudja a lenti címet." +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "API hozzáférés engedélyzése" -#: modules/pref-feeds.php:1501 -msgid "Display URL" -msgstr "" +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "Engedélyezi a külsÅ‘ kliensek számára a hozzáférést az API-n keresztül ehhez fiókhoz" -#: modules/pref-feeds.php:1604 -#, fuzzy, php-format -msgid "%d archived articles" -msgstr "Csillagos hírek" +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Hírcsatornák kategorizálásának engedélyezése" -#: modules/pref-feeds.php:1633 -msgid "No feeds found." -msgstr "Nem található hírcsatorna." +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "Hírcsatornák rendezése olvasatlan hírek száma alapján" -#: modules/pref-filters.php:23 -msgid "Filter Editor" -msgstr "SzűrÅ‘k módosítása" +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Meddig legyen friss egy hír (órákban megadva)" -#: modules/pref-filters.php:212 -#, php-format -msgid "Saved filter %s" -msgstr "SzűrÅ‘ elmentve: %s" +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "Olvasatlan hírekkel nem rendelkezÅ‘ hírcsatornák elrejtése" -#: modules/pref-filters.php:266 -#, php-format -msgid "Created filter %s" -msgstr "SzűrÅ‘ létrehozva: %s" +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "Különleges hírcsatornák mutatása olvasott hírcsatornák rejtésekor" -#: modules/pref-filters.php:315 help/3.php:31 help/4.php:25 -msgid "Create filter" -msgstr "SzűrÅ‘ létrehozása" +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "Dátum/idÅ‘ hosszú formátuma" -#: modules/pref-filters.php:318 modules/pref-users.php:376 -msgid "Edit" -msgstr "Szerkesztése" +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "A szintaxis megegyezik a PHP date() függvényével." -#: modules/pref-filters.php:408 -msgid "Field" -msgstr "MezÅ‘" +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "Hírcsatorna végén mutassa a következÅ‘ hírcsatornát" -#: modules/pref-filters.php:409 -msgid "Params" -msgstr "Paraméterek" +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Automatikusan megnyitja a következÅ‘ olvasatlan híreket tartalmazó hírcsatornát miután egyet megjelöl olvasottként" -#: modules/pref-filters.php:476 -msgid "(Disabled)" -msgstr "(Kikapcsolva)" +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Hírek törlése ennyi nap után (0 - nincs törlés)" -#: modules/pref-filters.php:492 -msgid "(Inverse)" -msgstr "(Fordított)" +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "Régi hírek törlésekor törölje az olvasatlanokat is" -#: modules/pref-filters.php:512 -msgid "No filters defined." -msgstr "Nincs szűrÅ‘ definiálva." +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "Fordított hírcím-sorrend (régiebbiek elÅ‘bb)" -#: modules/pref-filters.php:514 -msgid "No matching filters found." -msgstr "Nem található a feltételeknek megfelelÅ‘ szűrÅ‘." +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "Dátum/idÅ‘ rövid formátuma" -#: modules/pref-labels.php:102 -#, php-format -msgid "Created label %s" -msgstr "Címke létrehozva: %s" +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "A hírelÅ‘zetes mutatása a hírcímek listájában" -#: modules/pref-labels.php:137 help/3.php:30 help/4.php:26 -msgid "Create label" -msgstr "Címke létrehozása" +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "Címek rendezése hírcsatorna dátuma alapján" -#: modules/pref-labels.php:143 -msgid "Clear colors" -msgstr "Színek visszaállítása" +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "A helyi import dátum helyett használja a hírcsatornában megadott dátumot a címek rendezéséhez." -#: modules/pref-labels.php:223 -msgid "Click to change color" -msgstr "Színek módosításához kattintson ide" +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "Belépés SSL tanúsítvánnyal" -#: modules/pref-labels.php:246 -msgid "No labels defined." -msgstr "Nincs címke definiálva." +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Az SSL ügyfél tanúsítvány regisztrációjához kattintson ide." + +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "Ne jelenítse meg a képeket a hírekben" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "Nem biztonságos kódok eltávolítása a hírekbÅ‘l" -#: modules/pref-labels.php:248 -msgid "No matching labels found." -msgstr "Nem található a feltételeknek megfelelÅ‘ címke." +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Hírek olvasásakor távolítsa el a a HTML kódokat a leggyakrabban használtak kivételével." -#: modules/pref-labels.php:306 -msgid "custom color:" -msgstr "egyéni szín:" +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "Stíluslap testreszabása" -#: modules/pref-labels.php:307 -msgid "foreground" -msgstr "elÅ‘tér" +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "Saját ízlése szerint testreszabhatja a CSS stíluslapot" -#: modules/pref-labels.php:308 -msgid "background" -msgstr "háttér" +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "IdÅ‘zóna" -#: modules/pref-prefs.php:37 -msgid "Old password cannot be blank." -msgstr "A régi jelszó mezÅ‘ nem maradhat üresen." +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "Hírcímek csoportosítása virtuális hírcsatornákba" -#: modules/pref-prefs.php:42 -msgid "New password cannot be blank." -msgstr "Az új jelszó mezÅ‘ nem maradhat üresen." +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "Speciális hírcsatornák, címkék és kategóriák az eredeti hírcsatornák szerint csoportosítva" -#: modules/pref-prefs.php:47 -msgid "Entered passwords do not match." -msgstr "A megadott jelszavak nem egyeznek." +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "Nyelv" -#: modules/pref-prefs.php:74 -msgid "Password has been changed." -msgstr "A jelszó megváltoztatva." +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "Téma" -#: modules/pref-prefs.php:76 -msgid "Old password is incorrect." -msgstr "A régi jelszó helytelen." +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "Válasszon egyet az elérhetÅ‘ CSS témák közül" -#: modules/pref-prefs.php:104 +#: classes/pref/prefs.php:126 msgid "The configuration was saved." msgstr "Beállítások elmentve." -#: modules/pref-prefs.php:120 -#, php-format -msgid "Unknown option: %s" -msgstr "Ismeretlen beállítás: %s" +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "A személyes adatai el lettek mentve." -#: modules/pref-prefs.php:131 -msgid "E-mail has been changed." -msgstr "E-mail cím megváltoztatva." +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "A beállításai vissza lettek állítva az alapértékekre." -#: modules/pref-prefs.php:171 -msgid "" -"Your password is at default value, \n" -"\t\t\t\t\t\tplease change it." -msgstr "" -"A jelszava alapértelmezett értékén van, \n" -"\t\t\t\t\t\tkérem változtassa meg!" +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "Személyes adatok / Azonosítás" -#: modules/pref-prefs.php:198 +#: classes/pref/prefs.php:203 msgid "Personal data" msgstr "Személyes adatok" -#: modules/pref-prefs.php:205 +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "Teljes név" + +#: classes/pref/prefs.php:217 msgid "E-mail" msgstr "E-mail" -#: modules/pref-prefs.php:216 +#: classes/pref/prefs.php:223 msgid "Access level" msgstr "Hozzáférési szint" -#: modules/pref-prefs.php:229 -msgid "Change e-mail" -msgstr "E-mail megváltoztatása" +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Adatok mentése" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "A jelszava még az alapértelmezett, kérem változtassa meg." -#: modules/pref-prefs.php:237 +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "A jelenlegi jelszó megváltoztatása letiltja az OTP-t." + +#: classes/pref/prefs.php:294 msgid "Old password" msgstr "Régi jelszó" -#: modules/pref-prefs.php:244 +#: classes/pref/prefs.php:297 msgid "New password" msgstr "Új jelszó" -#: modules/pref-prefs.php:252 +#: classes/pref/prefs.php:302 msgid "Confirm password" msgstr "Jelszó még egyszer" -#: modules/pref-prefs.php:268 +#: classes/pref/prefs.php:312 msgid "Change password" msgstr "Jelszó megváltoztatása" -#: modules/pref-prefs.php:323 -msgid "Select theme" -msgstr "Stílusválasztó" +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "Egyszer használatos jelszavak / HitelesítÅ‘" -#: modules/pref-prefs.php:383 modules/pref-prefs.php:388 -msgid "Yes" -msgstr "Igen" +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "Az egyszer használatos jelszavak jelenleg engedélyezettek. A letiltáshoz adja meg a jelenlegi jelszavát." -#: modules/pref-prefs.php:385 modules/pref-prefs.php:388 -msgid "No" -msgstr "Nem" +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "Adja meg a jelszavát" -#: modules/pref-prefs.php:409 -msgid "Save configuration" -msgstr "Beállítások mentése" +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "OTP letiltása" -#: modules/pref-prefs.php:412 -msgid "Manage profiles" -msgstr "" +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "Ennek a használatához egy kompatibilis HitelesítÅ‘re van szükség. A jelszó módosítása automatikusan letiltja az OTP-t." -#: modules/pref-prefs.php:415 -msgid "Reset to defaults" -msgstr "Alapértelmezett beállítások" +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "Szkennelje be a következÅ‘ kódot a HitelesítÅ‘ alkalmazással:" -#: modules/pref-users.php:7 -msgid "Your access level is insufficient to open this tab." -msgstr "Hozzáférési szintje elégtelen ehhez a művelethez." +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "Adja meg az egyszer használatos jelszót" -#: modules/pref-users.php:17 -msgid "User details" -msgstr "Felhasználói adatok" +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "OTP engedélyezése" -#: modules/pref-users.php:31 -msgid "User not found" -msgstr "Felhasználó nem találhat" +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "Az OTP támogatáshoz a PHP GD függvények szükségesek." -#: modules/pref-users.php:50 modules/pref-users.php:428 -msgid "Registered" -msgstr "Regisztrált" +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "Néhány beállítás csak az alapértelmezett profilban érhetÅ‘ el." -#: modules/pref-users.php:51 -msgid "Last logged in" -msgstr "Utolsó belépés" +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "Testreszabás" -#: modules/pref-users.php:58 -msgid "Subscribed feeds count" -msgstr "Olvasott hírcsatornák száma" +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "Regisztráció" -#: modules/pref-users.php:62 -msgid "Subscribed feeds" -msgstr "Feliratkozott a következÅ‘ hírcsatornákra:" +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "Töröl" -#: modules/pref-users.php:108 -msgid "User Editor" -msgstr "Felhasználó-szerkesztÅ‘" +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "Aktuális szerveridÅ‘: %s (UTC)" -#: modules/pref-users.php:145 -msgid "Access level: " -msgstr "Hozzáférési szint:" +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Beállítások mentése" -#: modules/pref-users.php:158 -msgid "Change password to" -msgstr "Jelszó megváltoztatása" +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "Mentés és kilépés a beállításokból" -#: modules/pref-users.php:167 -msgid "E-mail: " -msgstr "E-mail:" +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "Profilok kezelése" -#: modules/pref-users.php:201 -#, php-format -msgid "Changed password of user %s." -msgstr "A következÅ‘ felhasználó jelszava megváltoztatva: %s." +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "Alapértelmezett beállítások" -#: modules/pref-users.php:249 +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "BeépülÅ‘k" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "A beépülÅ‘k változtatásainak érvényesítéséhez újra kell tölteni a Tiny Tiny RSS-t." + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "További beépülÅ‘k letölthetÅ‘k a tt-rss.org fórumairól vagy a wikirÅ‘l." + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "Rendszer beépülÅ‘k" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "BeépülÅ‘" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "Leírás" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "Verzió" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "SzerzÅ‘" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "további infó" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "Adatok törlése" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "Felhasználói beépülÅ‘k" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "Kiválasztott beépülÅ‘k engedélyezése" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "Érvénytelen egyszer használatos jelszó" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "Érvénytelen jelszó" + +#: classes/pref/prefs.php:968 #, php-format -msgid "Added user %s with password %s" -msgstr "" -"A következÅ‘ felhasználó hozzáadva %s ezzel a jelszóval %s" +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "Egyéni CSS deklarációkkal itt felülbírálhatja a kiválasztott téma színeit, betűtípusait és elrendezését. Ez a fájl használható kiindulásként." -#: modules/pref-users.php:256 -#, php-format -msgid "Could not create user %s" -msgstr "A következÅ‘ felhasználó létrehozása sikertelen %s" +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "Profil létrehozás" -#: modules/pref-users.php:260 -#, php-format -msgid "User %s already exists." -msgstr "A következÅ‘ felhasználó már létezik %s." +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(aktív)" -#: modules/pref-users.php:280 -#, php-format -msgid "" -"Changed password of user %s\n" -"\t\t\t\t\t to %s" -msgstr "" -"A lkövetkezÅ‘ felhasználó jelszava megváltoztatva %s\n" -"\t\t\t\t\t erre: %s" +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "Eltávolítja a kiválasztott profilokat?" -#: modules/pref-users.php:284 -#, php-format -msgid "Notifying %s." -msgstr "" +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "Profil aktiválás" -#: modules/pref-users.php:321 -msgid "[tt-rss] Password change notification" -msgstr "[tt-rss] Értesítés jelszó megváltoztatásáról." +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "Ha címkéket és szűrÅ‘ket is importált, akkor szükség lehet a beállításokat újra kell tölteni." -#: modules/pref-users.php:370 help/4.php:27 -msgid "Create user" -msgstr "Felhasználó létrehozása" +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "A publikus OPML URL címe:" -#: modules/pref-users.php:374 -#, fuzzy -msgid "Details" -msgstr "Napi" +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "Új URL generálás" -#: modules/pref-users.php:380 -msgid "Reset password" -msgstr "Jelszó reset" +#: 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 "A frissítÅ‘ daemon a beállításokban engedélyezve van, ám a daemon folyamat nem fut, így a hírcsatornák nem tudnak frissülni. Kérem indítsa el a daemon folyamatot, vagy lépjen kapcsolatba az oldal/szerver tulajdonosával." -#: modules/pref-users.php:426 -msgid "Login" -msgstr "Belépés" +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "Legutóbbi frissítés:" -#: modules/pref-users.php:427 -msgid "Access Level" -msgstr "Hozzáférési szint" +#: 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 "A frissítÅ‘ daemon túl régóta próbálkozik a hírcsatornák frissítésével. Ez összeomlás vagy hiba jele is lehet, kérem lépjen kapcsolatba az oldal/szerver tulajdonosával!" -#: modules/pref-users.php:429 -msgid "Last login" -msgstr "Utolsó belépés" +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "Ezt a hírcsatornát megtekintheti RSS-ként a következÅ‘ URL-en:" -#: modules/pref-users.php:487 -msgid "No users defined." -msgstr "Nincs megadva felhasználó." +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" -#: modules/pref-users.php:489 -msgid "No matching users found." -msgstr "Nem található a feltételeknek megfelelÅ‘ felhasználó." +#: plugins/af_psql_trgm/init.php:112 +#, fuzzy +msgid "Show related articles" +msgstr "Megosztott hírek" -#: help/2.php:1 -msgid "Content filtering" -msgstr "TartalomszűrÅ‘" +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +#, fuzzy +msgid "Mark similar articles as read" +msgstr "Minden hírt megjelöl olvasottként?" -#: help/2.php:3 -msgid "" -"Tiny Tiny RSS has support for filtering (or processing) articles. Filtering " -"is done once, when new article is imported to the database from the " -"newsfeed, specified field is matched against regular expression and some " -"action is taken. Regular expression matching is case-insensitive." +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +#, fuzzy +msgid "Global settings" +msgstr "Beállításokkal együtt" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" msgstr "" -#: help/2.php:5 -msgid "" -"Supported actions are: filter (do not import) article, mark article as read, " -"set starred, assign tag(s), and set score. Filters can be defined globally " -"and for some specific feed." +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" msgstr "" -#: help/2.php:7 -msgid "" -"Multiple and inverse matching are supported. All matching filters are " -"considered when article is being imported and all actions executed in " -"sequence. Inverse matching reverts matching result, e.g. filter matching " -"XYZZY in title with inverse flag will match all articles, except those " -"containing string XYZZY in title." +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "Hírcsatornák kategorizálásának engedélyezése" + +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" msgstr "" -#: help/2.php:9 -msgid "See also:" -msgstr "Lásd még:" +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" -#: help/3.php:1 help/4.php:1 -msgid "Keyboard Shortcuts" -msgstr "Billentyűparancsok" +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "" -#: help/3.php:5 -msgid "Navigation" -msgstr "Navigáció" +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "" -#: help/3.php:8 -msgid "Move between feeds" -msgstr "Hírcsatornák közötti mozgás" +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "Megjegyzés" -#: help/3.php:9 -msgid "Move between articles" -msgstr "Mozgás hírek között" +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "Nincs felöltött fájl." -#: help/3.php:10 -msgid "Show search dialog" -msgstr "KeresÅ‘mezÅ‘ megjelenítése" +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "Minden kész. %d-bÅ‘l %d hír importálva." + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "Érvénytelen dokumentum formátum." + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "Csillagozott vagy megosztott elemek importálása a Google ReaderbÅ‘l" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "Illessze be a starred.json vagy a shared.json fájl az alábbi űrlapba." + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "Csillagozott elemeim importálása" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[Továbbítva]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "Többszörös hírek" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "A levelezÅ‘program használatával való továbbításhoz kattintson az alábbi linkre:" + +#: plugins/mailto/init.php:75 +msgid "Forward selected article(s) by email." +msgstr "Kijelölt hírek továbbítása e-mailben." + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "A levél elküldése elÅ‘tt lehetÅ‘ség van az üzenet szerkesztésére." + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "Ablak bezárása" -#: help/3.php:13 -msgid "Active article actions" -msgstr "Aktív hírre vonatkozó műveletek" +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "Import és export" -#: help/3.php:16 -msgid "Toggle starred" -msgstr "Csillagoz" +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "LehetÅ‘ség van a a csillagozott és az archivált hírek exportálására és importálására, ami biztonsági mentéshez vagy azonos verziójú tt-rss példányok közötti migrációra használható." -#: help/3.php:17 -msgid "Toggle published" -msgstr "Publikált" +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "Adataim expotálása" -#: help/3.php:18 -msgid "Toggle unread" -msgstr "Olvasatlannak jelöl" +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Importálás" -#: help/3.php:19 -msgid "Edit tags" -msgstr "Címkék szerkesztése" +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "Nem sikerült az importálás: érvénytelen séma verzió." -#: help/3.php:20 -msgid "Open article in new window" -msgstr "Hír megnyitása új ablakban" +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "Nem sikerült az importálás: ismeretlen dokumentum formátum." -#: help/3.php:21 -msgid "Mark articles below/above active one as read" -msgstr "Az aktív hír fölöttit/alatitt olvasottá teszi" +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "Befejezve:" -#: help/3.php:22 -msgid "Scroll article content" -msgstr "Hírtartalom görgetése" +#: plugins/import_export/init.php:388 +#, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "%d hír feldolgozva," +msgstr[1] "%d hír feldolgozva," -#: help/3.php:26 help/4.php:30 -msgid "Other actions" -msgstr "Egyéb műveletek" +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "%d importálva," +msgstr[1] "%d importálva," -#: help/3.php:29 -msgid "Select article under mouse cursor" -msgstr "Az egérkurzor alatti hír kiválasztása" +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "%d hírcsatorna létrehozva." +msgstr[1] "%d hírcsatorna létrehozva." + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "Az XML dokumentum nem tölthetÅ‘ be." + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "Adatok elÅ‘készítése" + +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "Munkahelyen nem bitonságos (kattintson a váltáshoz)" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "NSFW beépülÅ‘" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "Munkahelyen nem biztonságos tartalmak címkéi (vesszÅ‘vel elválasztva)" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "Beállítások elmentve." -#: help/3.php:32 -msgid "Collapse sidebar" -msgstr "Oldalablak összecsukása" +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "Adja meg az egyszer használatos jelszót:" -#: help/3.php:33 -msgid "Toggle category reordering mode" -msgstr "Kategória-újrarendezés bekapcsolása" +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "A jelszó megváltoztatva." -#: help/3.php:34 help/4.php:34 -msgid "Display this help dialog" -msgstr "A jelenlegi súgóablak megjelenítése" +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "A régi jelszó helytelen." -#: help/3.php:39 -msgid "Feed actions" -msgstr "Hírcsatorna-műveletek" +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "Hír bezárása" -#: help/3.php:42 -msgid "Update active feed" -msgstr "Aktív hírcsatorna frissítése" +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "" -#: help/3.php:43 -msgid "Update all feeds" -msgstr "Összes hírcsatorna frissítése" +#: plugins/mail/init.php:34 +#, fuzzy +msgid "Mail plugin" +msgstr "Felhasználói beépülÅ‘k" -#: help/3.php:46 -msgid "Edit feed" -msgstr "Hírcsatorna szerkesztése" +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "" -#: help/3.php:47 -msgid "Sort by name or unread count" -msgstr "Név vagy olvasatlan hírek száma alapján történÅ‘ rendezés" +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "Címzett:" -#: help/3.php:48 -msgid "Hide visible read articles" -msgstr "Látható olvasott hírek elrejtése" +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "Tárgy:" -#: help/3.php:49 -msgid "Mark feed as read" -msgstr "Olvasottá tesz" +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "Email küldés" -#: help/3.php:50 -#, fuzzy -msgid "Reverse headlines order" -msgstr "Fordított hírcím-sorrend (régiebbiek elÅ‘bb)" +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "Összekapcsolás" -#: help/3.php:51 -msgid "Mark all feeds as read" -msgstr "Minden hírcsatornát olvasottá tesz" +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" +msgstr "Példány" -#: help/3.php:52 -msgid "If viewing category, (un)collapse it" -msgstr "Ha kategóriát böngész, csukja össze/nyissa szét" +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "Példány URL" -#: help/3.php:55 help/4.php:5 -msgid "Go to..." -msgstr "Ugrás ide..." +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "Hozzáférési kulcs:" -#: help/3.php:62 -msgid "Tag cloud" -msgstr "CímkefelhÅ‘" +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "Hozzáférési kulcs" -#: help/3.php:69 help/4.php:41 -msgid "Press any key to close this window." -msgstr "Az ablak bezárásához nyomjon meg egy billentyűt!" +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "Egy hozzáférési kulcs használata minden összekapcsolt példányhoz." -#: help/4.php:9 -msgid "My Feeds" -msgstr "Saját hírcsatornák" +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "Új kulcs generálása" -#: help/4.php:10 -msgid "Other Feeds" -msgstr "Egyéb hírcsatornák" +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "Példány összekapcsolás" -#: help/4.php:19 -msgid "Panel actions" -msgstr "Panelműveletek" +#: 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 "A Népszerű hírcsatornák megosztásához csatlakoztathat másik Tiny Tiny RSS példányokat ehhez. A Tiny Tiny RSS ezen példányához való kapcsolódáshoz ez az URL használható:" -#: help/4.php:23 -msgid "Top 25 feeds" -msgstr "A legfelsÅ‘ 25 hírcsatorna" +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "Utoljára belépve" -#: help/4.php:24 -msgid "Edit feed categories" -msgstr "Kategóriák szerkesztése" +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "Ãllapot" -#: help/4.php:33 -msgid "Focus search (if present)" -msgstr "" +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "Tárolt hírcsatornák" -#: help/4.php:39 -msgid "" -"Note: not all actions may be available, depending on Tiny Tiny RSS " -"configuration and your access level." -msgstr "" +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "Link létrehozás" -#: mobile/functions.php:59 mobile/functions.php:136 mobile/functions.php:172 -#: mobile/functions.php:199 mobile/functions.php:233 mobile/functions.php:356 -#: mobile/prefs.php:25 -msgid "Home" +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" msgstr "" -#: mobile/functions.php:392 -msgid "Nothing found (click to reload feed)." +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" msgstr "" -#: mobile/prefs.php:30 +#: plugins/af_redditimgur/init.php:69 #, fuzzy -msgid "Enable categories" -msgstr "Hírcsatornák kategorizálásának engedélyezése" - -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "ON" -msgstr "" +msgid "Configuration saved" +msgstr "Beállítások elmentve." -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "OFF" +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" msgstr "" -#: mobile/prefs.php:35 +#: plugins/af_readability/init.php:57 #, fuzzy -msgid "Show images in posts" -msgstr "Képek rejtése a hírekben" +msgid "Readability" +msgstr "EllenÅ‘rizze, hogy nem foglalt-e már:" -#: mobile/prefs.php:40 +#: plugins/af_readability/init.php:68 #, fuzzy -msgid "Hide read feeds" -msgstr "Olvasottak rejtése/mutatása" +msgid "Inline article content" +msgstr "Megjegyzés" -#: mobile/prefs.php:45 -#, fuzzy -msgid "Sort feeds by unread count" -msgstr "Hírcsatornák rendezése olvasatlan hírek száma alapján" +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "Megosztott hírek" -#: functions.js:1315 -msgid "Can't add filter: nothing to match on." -msgstr "SzűrÅ‘ hozzáadása sikertelen: nincs érvényes szűrÅ‘feltétel." +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" -#: functions.js:1350 -msgid "Can't subscribe: no feed URL given." +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" msgstr "" -"Feliratkozás hírcsatornára sikertelen: nincs megadva a hírcsatorna URL címe." -#: functions.js:1354 -msgid "Subscribing to feed..." -msgstr "Feliratkozás a hírcsatornára..." +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" -#: functions.js:1377 +#: plugins/af_sort_bayes/init.php:216 #, fuzzy -msgid "Subscribed to %s" -msgstr "Feliratkozva a következÅ‘ hírcsatornákra:" +msgid "Statistics" +msgstr "Ãllapot" -#: functions.js:1386 -#, fuzzy -msgid "Can't subscribe to the specified URL." +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" msgstr "" -"Feliratkozás hírcsatornára sikertelen: nincs megadva a hírcsatorna URL címe." -#: functions.js:1389 +#: plugins/af_sort_bayes/init.php:235 #, fuzzy -msgid "You are already subscribed to this feed." -msgstr "EbbÅ‘l a kategóriából nem ." - -#: functions.js:1952 -msgid "New articles available in this feed (click to show)" -msgstr "" +msgid "Last matched articles" +msgstr "Csillagozott hírek" -#: functions.js:1989 +#: plugins/af_sort_bayes/init.php:253 #, fuzzy -msgid "Subscribed to %d feed(s)." -msgstr "Feliratkozva a következÅ‘ hírcsatornákra:" +msgid "Clear database" +msgstr "Adatok törlése" -#: functions.js:1999 functions.js:2030 prefs.js:557 prefs.js:587 prefs.js:619 -#: prefs.js:908 prefs.js:928 prefs.js:1795 -msgid "No feeds are selected." -msgstr "Nincs kiválasztott hírcsatorna." +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" -#: functions.js:2014 -msgid "" -"Remove selected feeds from the archive? Feeds with stored articles will not " -"be removed." +#: plugins/af_sort_bayes/init.php:376 +#, fuzzy, php-format +msgid "Currently stored as: %s" +msgstr "Aktuális szerveridÅ‘: %s (UTC)" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" msgstr "" -#: functions.js:2066 -#, fuzzy -msgid "Remove stored feed icon?" -msgstr "Tárolt adatok eltávolítása." +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "Bookmarkletek" -#: functions.js:2098 -#, fuzzy -msgid "Please select an image file to upload." -msgstr "Válasszon egy hírcsatornát." +#: 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 "Húzza a linket a böngészÅ‘ eszköztára alá, nyissa meg a böngészÅ‘jében a hírcsatornát és kattintson a linkre a feliratkozáshoz." -#: functions.js:2100 -msgid "Upload new icon for this feed?" -msgstr "" +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "Feliratkozás %s hírcsatornára a Tiny Tiny RSS-ben?" -#: functions.js:2117 -msgid "Please enter label caption:" -msgstr "Adja meg címke nevét:" +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Feliratkozás a Tiny Tiny RSS-ben?" -#: functions.js:2122 -msgid "Can't create label: missing caption." -msgstr "Címke létrehozása sikertelen: nincs megadva név." +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "Használja ezt a bookmarkletet tetszÅ‘leges oldalak közzétételére a Tiny Tiny RSS használatával" -#: functions.js:2162 tt-rss.js:568 -msgid "Unsubscribe from %s?" -msgstr "Leiratkozik innen: %s?" +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "Itt minden egyedi URL-el megosztott hírt le lehet tiltani." -#: offline.js:636 -msgid "Data for offline browsing has not been downloaded yet." -msgstr "" -"Kapcsolat nélküli üzzemmódhoz működéséhez szükséges adatok még nem töltÅ‘dtek " -"le." +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "Minden hír megosztásának visszavonása" -#: offline.js:677 -msgid "Synchronizing feeds..." -msgstr "Hírcsatornák szinkronizálása..." +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "Megosztás URL-el" -#: offline.js:696 -msgid "Synchronizing categories..." -msgstr "Kategóriák szinkronizálása..." +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "Ezt a hírt megoszthatja a következÅ‘ egyedi URL segítségével:" -#: offline.js:714 -msgid "Synchronizing labels..." -msgstr "Címkék szinkronizálása..." +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "Hír megosztásának visszavonása" -#: offline.js:733 -msgid "Synchronizing articles..." -msgstr "Hírek szinkronizálása..." +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "A hiba a beállított naplóhelyre lesz jelentve." -#: offline.js:778 -msgid "Synchronizing articles (%d)..." -msgstr "A következÅ‘ cikkek szinkronizálása: (%d)..." +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "" + +#: js/functions.js:93 +msgid "Close" +msgstr "" -#: offline.js:806 -msgid "Last sync: %s" -msgstr "Utolsó szinkronizálás: %s" +#: js/functions.js:104 +#, fuzzy +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "Biztos, hogy be akarja jelenteni ezt a hibát a tt-rss.org oldalon? A jelentés tartalmazni a fogja a böngészÅ‘ információit. Az IP címe el lesz tárolva az adatbázisban." -#: offline.js:835 -msgid "Last sync: Error receiving data." -msgstr "Utolsó szinkronizálás: Hiba az adatok fogadása során." +#: js/functions.js:224 +msgid "Click to close" +msgstr "Kattintson a bezáráshoz" -#: offline.js:888 -msgid "Synchronizing..." -msgstr "Szinkronizálás..." +#: js/functions.js:1051 +msgid "Edit action" +msgstr "Művelet szerkesztése" -#: offline.js:1195 -msgid "Switch Tiny Tiny RSS into offline mode?" -msgstr "Ãtállítja a Tiny Tiny RSS-t kapcsolat nélküli módba?" +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "SzűrÅ‘ létrehozás" -#: offline.js:1223 -msgid "Tiny Tiny RSS will reload. Go online?" -msgstr "A Tiny Tiny RSS most újratöltÅ‘dik. Ãtvált online üzemmódba?" +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "Feliratkozás visszaállítása? a következÅ‘ frissítéskor Tiny Tiny RSS megpróbál automatikusan újra feliratkozni." -#: offline.js:1655 -msgid "Last sync: Cancelled." -msgstr "Utolsó szinkronizálás: Megszakítva." +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "Feliratkozás visszaállítás." -#: offline.js:1672 -msgid "" -"This will remove all offline data stored by Tiny Tiny RSS on this computer. " -"Continue?" -msgstr "" -"Ez a művelet az összes Tiny Tiny RSS által a számítógépen tárolt adatot " -"eltávolítja. Biztosan folytatja?" +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "Leiratkozik innen: %s?" -#: offline.js:1743 -msgid "" -"Tiny Tiny RSS has trouble accessing its server. Would you like to go offline?" -msgstr "" -"A Tiny Tiny RSS-nek nem sikerül hozzáférnie a szerverhez. Ãtvált offline " -"üzemmódba?" +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "Hírcsatorna eltávolítás..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "Adja meg a kategória címét:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "Új hírszolgáltatási cím generálásása ehhez a hírcsatornához?" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Cím cseréje..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "Nincs kiválasztott hírcsatorna." -#: prefs.js:233 -msgid "Error: No feed URL given." -msgstr "Hiba: Nincs megadva hírcsatorna URL." +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "Eltávolítja a kijelölt hírcsatornákat az archívumból? A tárolt hírekkel rendelkezÅ‘ hírcsatornák nem lesznek törölve." -#: prefs.js:235 -msgid "Error: Invalid feed URL." -msgstr "Hiba: Hibás hírcsatorna-URL cím" +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "Hírcsatornák frissítési hibával" -#: prefs.js:263 -#, fuzzy -msgid "Can't add profile: no name specified." -msgstr "Kategória hozzáadása sikertelen: nincs megadva név." +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "Eltávolítja a kiválasztott hírcsatornákat?" + +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "Kiválasztott hírcsatornák eltávolítása..." + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "Kategória szerkesztése" -#: prefs.js:285 -msgid "Can't add category: no name specified." -msgstr "Kategória hozzáadása sikertelen: nincs megadva név." +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "Kategória eltávolítása" -#: prefs.js:307 +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "Fordított" + +#: js/prefs.js:55 msgid "Please enter login:" msgstr "Kérem adja meg a felhasználói nevét:" -#: prefs.js:314 +#: js/prefs.js:62 msgid "Can't create user: no login specified." msgstr "Felhasználó létrehozása sikertelen, nincs megadva felhasználói név." -#: prefs.js:438 +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "Felhasználó hozzáadása..." + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Felhasználó-szerkesztÅ‘" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "Adatok mentése..." + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "SzűrÅ‘ szerkesztése" + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "Eltávolítja szűrÅ‘t?" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "SzűrÅ‘ eltávolítása..." + +#: js/prefs.js:296 msgid "Remove selected labels?" msgstr "Eltávolítja a kiválasztott címkéket?" -#: prefs.js:454 +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "Kiválasztott címkék eltávolítása..." + +#: js/prefs.js:312 +#: js/prefs.js:1380 msgid "No labels are selected." msgstr "Nincs kiválasztott címke." -#: prefs.js:468 -msgid "Remove selected users?" -msgstr "Eltávolítja a kiválasztott felhasználókat?" +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "Eltávolítja a kijelölt felhasználókat? Az alapértelmezett admin és az ön fiókja nem lesz törölve." + +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "Kiválasztott felhasználók eltávolítása..." -#: prefs.js:485 prefs.js:798 prefs.js:819 prefs.js:858 +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 msgid "No users are selected." msgstr "Nincs kijelölt felhasználó." -#: prefs.js:503 +#: js/prefs.js:361 msgid "Remove selected filters?" msgstr "Eltávolítja a kiválasztott szűrÅ‘ket?" -#: prefs.js:519 prefs.js:888 +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "Kiválasztott szűrÅ‘k eltávolítása..." + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 msgid "No filters are selected." msgstr "Nincs kiválasztott szűrÅ‘." -#: prefs.js:538 +#: js/prefs.js:395 msgid "Unsubscribe from selected feeds?" msgstr "Leiratkozik a kiválasztott hírcsatornákról?" -#: prefs.js:572 +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "Leiratkozás a kiválasztott hírcsatornákról..." + +#: js/prefs.js:429 msgid "Please select only one feed." msgstr "Kérem csak egy hírcsatornát jelöljön meg!" -#: prefs.js:578 +#: js/prefs.js:435 msgid "Erase all non-starred articles in selected feed?" msgstr "Eltávolítja az összes csillag nélküli hírt a kijelölt hírcsatornából?" -#: prefs.js:600 -msgid "How many days of articles to keep (0 - use default)?" -msgstr "" -"Milyen régi híreket szeretne megtartani (napokban; 0 - alapértelmezett)?" - -#: prefs.js:632 -msgid "" -"Remove selected profiles? Active and default profiles will not be removed." -msgstr "" - -#: prefs.js:648 -#, fuzzy -msgid "No profiles selected." -msgstr "Nincs kiválasztott hír." - -#: prefs.js:660 -msgid "Remove selected categories?" -msgstr "Kiválasztott kategóriák eltávolítása?" +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "Kijelölt hírcsatorna törlése..." -#: prefs.js:678 -msgid "No categories are selected." -msgstr "Nincs kategória kiválaszta." +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "Milyen régi híreket szeretne megtartani (napokban; 0 - alapértelmezett)?" -#: prefs.js:745 -msgid "Login field cannot be blank." -msgstr "A felhasználói név nem maradhat üresen." +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "Kijelölt hírcsatorna tisztítása..." -#: prefs.js:803 prefs.js:824 prefs.js:863 +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 msgid "Please select only one user." msgstr "Kérem csak egy felhasználót jelöljön meg!" -#: prefs.js:828 +#: js/prefs.js:517 msgid "Reset password of selected user?" -msgstr "Visszaállítja akiválasztott felhasználók jelszavakit?" +msgstr "Visszaállítja a kiválasztott felhasználók jelszavait?" -#: prefs.js:893 -msgid "Please select only one filter." -msgstr "Kérem csak egy szűrÅ‘t jelöljön meg!" - -#: prefs.js:969 -msgid "No OPML file to upload." -msgstr "Nincs feltöltendÅ‘ OPML fájl megjelölve." - -#: prefs.js:1229 -msgid "Reset to defaults?" -msgstr "Visszaállítja a gyári beállításokat?" +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "A kiválasztott felhasználó jelszavának visszaállítása..." -#: prefs.js:1641 -msgid "Replace current publishing address with a new one?" -msgstr "" -"Biztosan lecseréli a jelenlegi publikált hírek hírcsatornájának címét egy " -"újra?" +#: js/prefs.js:565 +msgid "User details" +msgstr "Felhasználói adatok" -#: prefs.js:1678 -msgid "Save current configuration?" -msgstr "Menti a jelenlegi beállításokat?" +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "Kérem csak egy szűrÅ‘t jelöljön meg!" -#: prefs.js:1779 -msgid "Rescore articles in selected feeds?" -msgstr "" +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "Egyesíti a kiválasztott szűrÅ‘ket?" -#: prefs.js:1802 -msgid "Rescore all articles? This operation may take a lot of time." -msgstr "" +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "SzűrÅ‘k egyesítése..." -#: prefs.js:1821 -msgid "Remove filter %s?" -msgstr "Eltávolítja a következÅ‘ szűrÅ‘t: %s?" +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "Több hírcsatorna szerkesztése" -#: prefs.js:1882 +#: js/prefs.js:695 msgid "Save changes to selected feeds?" msgstr "Leiratkozik a kiválasztott hírcsatornákról?" -#: prefs.js:1962 -msgid "Reset label colors to default?" -msgstr "Visszaállítja a címkeszíneket az alapértelmezettre?" - -#: prefs.js:1987 -msgid "Please enter new label foreground color:" -msgstr "Adja meg az új címke-elÅ‘térrszín nevét:" +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "OPML importálás" -#: prefs.js:1989 -msgid "Please enter new label background color:" -msgstr "Adja meg az új címke-háttérszín nevét:" +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "ElÅ‘ször válasszon egy OPML fjlt." -#: prefs.js:2121 -#, fuzzy -msgid "Activate selected profile?" -msgstr "Eltávolítja a kiválasztott szűrÅ‘ket?" +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "Importálás, kérem várjon..." -#: prefs.js:2137 -msgid "Please choose a profile to activate." -msgstr "" +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "Visszaállítja a gyári beállításokat?" -#: tt-rss.js:74 -msgid "display feeds" -msgstr "hírcsatornák megjelenítése" +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "Feliratkozás a hírcsatornákra..." -#: tt-rss.js:251 -msgid "Mark all articles as read?" -msgstr "Minden hírt olvasottá tesz?" +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "Törli a beépülÅ‘ tárolt adatait?" -#: tt-rss.js:557 -msgid "You can't unsubscribe from the category." -msgstr "EbbÅ‘l a kategóriából nem ." +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "Töröl minden bejegyzést a hibanaplóból?" -#: tt-rss.js:562 tt-rss.js:755 tt-rss.js:930 -msgid "Please select some feed first." -msgstr "Válasszon hírcsatorná(ka)t!" +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "Minden hírt megjelöl olvasottként?" -#: tt-rss.js:618 -msgid "Reset category order?" -msgstr "Visszaállítja a kategória rendjét" +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "Minden hírcsatornát megjelölése olvasottként..." -#: tt-rss.js:727 tt-rss.js:740 -msgid "Mark all articles in %s as read?" -msgstr "Minden hírt olvasottá tesz itt: %s?" +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "ElÅ‘ször engedélyezze a mail beépülÅ‘t." -#: tt-rss.js:760 +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 msgid "You can't edit this kind of feed." msgstr "Ezt a hírcsatornatípust nem szerkesztheted." -#: tt-rss.js:925 -msgid "You can't rescore this kind of feed." -msgstr "" +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "ElÅ‘ször engedélyezze az embed_original beépülÅ‘t." -#: tt-rss.js:935 -msgid "Rescore articles in %s?" +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." msgstr "" -#: viewfeed.js:528 viewfeed.js:592 -msgid "Star article" -msgstr "Hír csillagozása" - -#: viewfeed.js:577 -msgid "Unstar article" -msgstr "Csillagot levesz a hírrÅ‘l" - -#: viewfeed.js:585 viewfeed.js:652 -msgid "Please wait..." -msgstr "Kérem várjon..." +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "Ez a hírcsatorna típust nem lehet újraponszámozni." -#: viewfeed.js:648 -msgid "Unpublish article" -msgstr "Publikálás visszavonása" +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "Válasszon hírcsatorná(ka)t!" -#: viewfeed.js:935 viewfeed.js:971 viewfeed.js:1012 viewfeed.js:1097 -#: viewfeed.js:1141 viewfeed.js:1288 viewfeed.js:1338 viewfeed.js:1394 +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "Újrapontszámozza %s híreit?" + +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "Hírek újrapontozása..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 msgid "No articles are selected." msgstr "Nincsen kiválasztott hír." -#: viewfeed.js:1256 -msgid "Mark all visible articles in %s as read?" -msgstr "Olvasottá teszi az összes látható hírt itt: %s?" - -#: viewfeed.js:1298 -#, fuzzy -msgid "Delete %d selected articles in %s?" -msgstr "Olvasottá teszi a következÅ‘ kijelölt hír(eke)t: %d itt: %s?" +#: js/viewfeed.js:1018 +#, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "%d kijelölt hír törlése innen: %s?" +msgstr[1] "%d kijelölt hír törlése innen: %s?" + +#: js/viewfeed.js:1020 +#, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "%d kijelölt hír törlése?" +msgstr[1] "%d kijelölt hír törlése?" + +#: js/viewfeed.js:1062 +#, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "%d kijelölt hír archiválása innen: %s?" +msgstr[1] "%d kijelölt hír archiválása innen: %s?" + +#: js/viewfeed.js:1065 +#, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "%d archivált hír visszaállítása?" +msgstr[1] "%d archivált hír visszaállítása?" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "Kérem vegye figyelembe, hogy a nem csillagozott hírek lehet, hogy törölve lesznek a következÅ‘ frissítéskor." + +#: js/viewfeed.js:1112 +#, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "%d kijelölt hír megjelölése olvasottként itt: %s?" +msgstr[1] "%d kijelölt hír megjelölése olvasottként itt: %s?" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "Hír címkéinek szerkesztése" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "Hír címkéinek mentése..." + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +#, fuzzy +msgid "Click to open next unread feed." +msgstr "Kattintson a hírcsatorna szerkesztéséhez" + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "Eredeti hír megjelenítése" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Címke hozzáadása" -#: viewfeed.js:1300 -#, fuzzy -msgid "Delete %d selected articles?" -msgstr "Eltávolítja a kijelölt híreket a címke alól?" +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "Címke eltávolítás" -#: viewfeed.js:1348 +#: js/viewfeed.js:2159 #, fuzzy -msgid "Archive %d selected articles in %s?" -msgstr "Olvasottá teszi a következÅ‘ kijelölt hír(eke)t: %d itt: %s?" - -#: viewfeed.js:1351 -msgid "Move %d archived articles back?" -msgstr "" - -#: viewfeed.js:1401 -msgid "Mark %d selected articles in %s as read?" -msgstr "Olvasottá teszi a következÅ‘ kijelölt hír(eke)t: %d itt: %s?" - -#: viewfeed.js:1977 -msgid "No article is selected." -msgstr "Nincs kiválasztott hír." - -#: viewfeed.js:2018 -msgid "No articles found to mark" -msgstr "Nincs megjelölendÅ‘ hír." - -#: viewfeed.js:2020 -msgid "Mark %d article(s) as read?" -msgstr "Olvasottá teszi a következÅ‘ hír(eke)t: %d?" - -#: viewfeed.js:2255 -msgid "Please enter a note for this article:" -msgstr "Megyjegyzés csatolása ehhez a hírhez:" - -#~ msgid "Adding feed..." -#~ msgstr "Hírcsatorna hozzáadása..." - -#~ msgid "Adding feed category..." -#~ msgstr "Hírcsatorna-kategória hozzáadása..." +msgid "Select articles in group" +msgstr "Az kurzor alatti hír kiválasztása" +#: js/viewfeed.js:2168 #, fuzzy -#~ msgid "Adding profile..." -#~ msgstr "Hírcsatorna hozzáadása..." - -#~ msgid "Adding user..." -#~ msgstr "Felhasználó hozzáadása..." +msgid "Mark group as read" +msgstr "Megjelölés olvasottként" +#: js/viewfeed.js:2180 #, fuzzy -#~ msgid "Assign score to article:" -#~ msgstr "Besorolja a kiválasztott híreket a címke alá?" +msgid "Mark feed as read" +msgstr "Minden hírcsatornát olvasottként jelöl" -#~ msgid "Assign selected articles to label?" -#~ msgstr "Besorolja a kiválasztott híreket a címke alá?" +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "Adjon meg egy új pontszámot a kijelölt hírekhez:" -#~ msgid "Can't open article: received invalid article link" -#~ msgstr "Hír megnyitása sikertelen: hibás a cikre mutató link." +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "Adjon meg egy új pontszámot a hírhez:" -#~ msgid "Category reordering disabled" -#~ msgstr "Kategória újrarendezés kikapcsolva." +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "Hír URL:" -#~ msgid "Category reordering enabled" -#~ msgstr "Kategória újrarendezés bekapcsolva." +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "Elnézést, a böngészÅ‘je nem támogatja sandboxed iframeket." +#: plugins/af_psql_trgm/init.js:11 #, fuzzy -#~ msgid "Changing password..." -#~ msgstr "Jelszó megváltoztatása" - -#~ msgid "Clearing feed..." -#~ msgstr "Hírcsatorna megtisztitása folyamatban..." +msgid "Related articles" +msgstr "Megosztott hírek" -#~ msgid "Clearing selected feed..." -#~ msgstr "Kijelölt hírcsatorna megtisztítása folyamatban..." +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "Megjegyzés mentése..." -#~ msgid "comments" -#~ msgstr "hozzászólások" +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Importálás Google ReaderbÅ‘l" -#~ msgid "Could not change feed URL." -#~ msgstr "Hírcsatorna URL-jének megváltoztatása sikertelen." +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "ElÅ‘ször válassza ki a fájlt." -#~ msgid "Could not display article (missing XML object)" -#~ msgstr "Hír megjelenítése sikertelen (hiányzó XML objektum)" +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "Továbbítás emaiben" -#~ msgid "Could not update headlines (missing XML data)" -#~ msgstr "FÅ‘cíem frissítése sikertelen (hiányzó XML adatok)" +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "Adatok exportálása" -#~ msgid "Could not update headlines (missing XML object)" -#~ msgstr "Hírcímek frissítése sikertelen (hiányzó XML objektum)" +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "%d hír exportálása befejezve. Az adatok innen letölthetÅ‘k." +msgstr[1] "%d hír exportálása befejezve. Az adatok innen letölthetÅ‘k." -#~ msgid "Entire feed" -#~ msgstr "Egész hírcsatornát" +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Adatok importálása" -#~ msgid "Error while trying to load more headlines" -#~ msgstr "Hiba történt a fÅ‘címek betöltése közben" +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "ElÅ‘ször válassza ki a fájlt." -#~ msgid "Failed to load article in new window" -#~ msgstr "Cikk beöltése új ablakban sikertelen" +#: plugins/shorten_expanded/init.js:37 +msgid "Click to expand article" +msgstr "Kattints a hír kibontásához" -#~ msgid "Failed to open window for the article" -#~ msgstr "Új ablak nyitása a hír számára sikertelen" +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" +#: plugins/mail/mail.js:38 #, fuzzy -#~ msgid "Feed icon removed." -#~ msgstr "Hírcsatorna nem található" +msgid "Your message has been sent." +msgstr "A személyes adatai el lettek mentve." -#~ msgid "Loading feed list..." -#~ msgstr "Hírcsatornák töltése, kérem várjon..." +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "Példány összekapcsolás" -#~ msgid "Local data removed." -#~ msgstr "Helyi adatok eltávolítva." +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "Pédány szerkesztés" -#~ msgid "Mark as read:" -#~ msgstr "Olvasottnak jelöl:" +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "Eltávolítja a kiválasztott példányokat?" -#~ msgid "Marking all feeds as read..." -#~ msgstr "Összes hírcsatorna megjelölése olvasottként..." +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "Kiválasztott példányok eltávolítása..." -#~ msgid "Please wait until operation finishes." -#~ msgstr "Kérem várjon, maíg a prgram a műveletet be nem fejezi." +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "Nincs kiválasztott példányok." -#~ msgid "Purging selected feed..." -#~ msgstr "Kijelölt hírcsatorna takarítása..." +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "Kérem csak egy példányt válasszon ki." -#~ msgid "Remove selected articles from label?" -#~ msgstr "Eltávolítja a kijelölt híreket a címke alól?" +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "Hírcsatorna-adatok törlése" -#~ msgid "Removing feed..." -#~ msgstr "Hírcsatorna eltávolítása..." +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "" -#~ msgid "Removing filter..." -#~ msgstr "SzűrÅ‘ eltávolítása..." +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "Megosztás URL-el" -#~ msgid "Removing offline data..." -#~ msgstr "Kapcsolat nélküli adatok eltávolítása..." +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "Új URL generálása a hírhez?" -#~ msgid "Removing selected categories..." -#~ msgstr "Kiválasztott kategóriák eltávolítása..." +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "URL módosítása..." -#~ msgid "Removing selected filters..." -#~ msgstr "Kijelölt szűrÅ‘k eltávolítása..." +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "Eltávolítod a hír megosztását?" -#~ msgid "Removing selected labels..." -#~ msgstr "Kijelölt címkék eltávolítása..." +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "Megosztás visszavonása..." -#, fuzzy -#~ msgid "Removing selected profiles..." -#~ msgstr "Kijelölt szűrÅ‘k eltávolítása..." +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "Ez érvényteleníteni fog minden korábban megosztott hír URL-t. Folytatja?" -#~ msgid "Removing selected users..." -#~ msgstr "Kijelölt felhasználók eltávolítása..." +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "URL-ek törlése..." -#, fuzzy -#~ msgid "Rescore last 100 articles in selected feeds?" -#~ msgstr "" -#~ "Eltávolítja az összes csillag nélküli hírt a kijelölt hírcsatornából?" +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "Megosztott URL-ek törölve." -#, fuzzy -#~ msgid "Rescoring articles..." -#~ msgstr "Hírek szinkronizálása..." +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "Minden hírt megjelöl olvasottként itt: %s?" -#~ msgid "Resetting password for selected user..." -#~ msgstr "Kiválasztott felhasználók jelszavainak visszaállítása..." +#: js/feedlist.js:435 +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "Minden 1 napnál régebbi %s hírt megjelöl olvasottként?" -#~ msgid "Saving article tags..." -#~ msgstr "Hírcímkék mentése..." +#: js/feedlist.js:438 +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "Minden 1 hétnél régebbi %s hírt megjelöl olvasottként?" -#~ msgid "Saving feed..." -#~ msgstr "Hírcsatorna mentése..." +#: js/feedlist.js:441 +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "Minden 2 hétnél régebbi %s hírt megjelöl olvasottként?" -#~ msgid "Saving feeds..." -#~ msgstr "Hírcsatornák mentése..." +#: js/functions.js:615 +msgid "Error explained" +msgstr "Hiba magyarázata" -#~ msgid "Saving filter..." -#~ msgstr "SzűrÅ‘ mentése..." +#: js/functions.js:697 +msgid "Upload complete." +msgstr "Feltöltés kész" -#~ msgid "Saving user..." -#~ msgstr "Felhasználó mentése..." +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "Eltávolítja a hírcsatorna tárolt ikonját?" -#~ msgid "Selection" -#~ msgstr "Kiválasztottakat" +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "Hírcsatorna ikon eltávolítása..." -#~ msgid "Tiny Tiny RSS is in offline mode." -#~ msgstr "A Tiny Tiny Rss most kapcsolat nélküli módban van." +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "Hírcsatorna ikon eltávolítva." -#~ msgid "Trying to change e-mail..." -#~ msgstr "Próba az e-mail címek megváltoztatására..." +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "Kérem válasszon egy feltöltendÅ‘ képet." -#, fuzzy -#~ msgid "Upload failed." -#~ msgstr "Tárolt hírek" +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "Új ikon tölt fel ehhez a hírcsatornához?" -#~ msgid "" -#~ "You have to synchronize some articles before going into offline mode." -#~ msgstr "" -#~ "Kapcsolat nélküli üzemmódba váltás elÅ‘tt néhány hírt szinkronizálnod kell." +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "Feltöltés, kérem várjon..." -#~ msgid "Display original article content" -#~ msgstr "Eredeti hír tartalmának megjelenítése" +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "Adja meg a címke nevét:" -#~ msgid "All feeds updated." -#~ msgstr "Minden hírcsatorna frissítve" +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "Címke létrehozása sikertelen: nincs megadva név." -#~ msgid "Can't open article: received invalid XML" -#~ msgstr "Cikk megnyitása sikertelen: hibás XML formátum." +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "Feliratkozás hírcsatornára" -#~ msgid "Changing category of selected feeds..." -#~ msgstr "Kiválasztott hírcsatornák áthelyezése másik kategóriába..." +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "" -#~ msgid "Erase all non-starred articles in %s?" -#~ msgstr "Eltávolítja az összes nem csillagos hírt itt: %s ?" +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "Feliratkozva ide: %s" -#~ msgid "Published feed URL changed." -#~ msgstr "A publikált hírek hírcsatornájának címe megváltozott." +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "A megadott URL érvénytelennek tűnik." -#~ msgid "Trying to change address..." -#~ msgstr "Próba a címek megváltoztatására..." +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "A megadott URL nem tartalmaz hírcsatornákat." -#~ msgid "Trying to change password..." -#~ msgstr "Próba a jelszó megváltoztatására..." +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "Kibontás a hírcsatorna kiválasztásához" -#~ msgid "Unsubscribing from selected feeds..." -#~ msgstr "Leiratkozás a kiválasztott hírcsatornákról..." +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "A megadott URL nem tölthetÅ‘ be: %s" -#~ msgid "You can't clear this type of feed." -#~ msgstr "Ezt a hírcsatornatípust nem tisztíthatod meg." +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "XML ellenÅ‘rzés sikertelen: %s" -#~ msgid "Clear articles" -#~ msgstr "Hírek törlése" +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "Már feliratkozott erre a hírcsatornára." -#~ msgid "Done." -#~ msgstr "Kész." +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "Szabály szerkesztése" -#~ msgid "Visit official site" -#~ msgstr "Hivatalos weboldal megtekintése" +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "Hírcsatorna szerkesztése" -#~ msgid "Close" -#~ msgstr "Bezár" +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "További hírcsatornák" -#~ msgid "The configuration was reset to defaults." -#~ msgstr "A konfiguráció visszaállítva az alapértelmezettre." +#: js/functions.js:1878 +msgid "Help" +msgstr "Súgó" -#~ msgid "Themes" -#~ msgstr "Stílusok" +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "Eltávolítja %s kategóriát? Minden tartalmazott hírcsatorna a Kategorizálatlanba fog kerülni." -#~ msgid "Change theme" -#~ msgstr "Stílus megváltozatása" +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "Kategória eltávolítása..." -#, fuzzy -#~ msgid "Hide read items" -#~ msgstr "Olvasottak rejtése/mutatása" +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "Kiválasztott kategóriák eltávolítása?" -#, fuzzy -#~ msgid "Remove selected feeds from archive?" -#~ msgstr "Eltávolítja a kijelölt híreket a címke alól?" +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "Kiválasztott kategóriák eltávolítása..." -#~ msgid "Search results" -#~ msgstr "Keresési találatok" +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "Nincs kategória kiválaszta." -#~ msgid "Search:" -#~ msgstr "Keresés" +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "Kategória címe:" -#~ msgid "Order:" -#~ msgstr "Rendezés:" +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "Kategória létrehozása..." -#~ msgid "browse more" -#~ msgstr "összes címke megjelenítése" +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "Hírcsatornák frissítések nélkül" -#~ msgid "Feed browser is administratively disabled." -#~ msgstr "A hírcsatorna-böngészÅ‘ adminisztrátor által letilva." +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "Lecseréli a jelenlegi OPML hírcsatornája címét egy újra?" -#~ msgid "Top" -#~ msgstr "LegfelsÅ‘" +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "Hírcsatorna törlése..." -#~ msgid "Show" -#~ msgstr "Mutasd" +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "Újrapontszámozza a híreket a kijelölt hírcsatornákban?" -#~ msgid "Hide from \"Other Feeds\"" -#~ msgstr "Elrejtés az \"Egyéb hírcsatornák\"-ból" +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "Kijelölt hírcsatornák újrapontozása..." -#~ msgid "Unable to delete non empty feed categories." -#~ msgstr "Nem üres hírcsatorna-kategóriák törlése sikertelen." +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "Újrapontoz minden cíkket? Ez a művelet hosszú ideig is eltarthat." -#~ msgid "(Hidden)" -#~ msgstr "(Rejtett)" +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "Hírcsatornák újrapontozása" -#~ msgid "Recategorize" -#~ msgstr "Újrakategorizálálása" +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "Visszaállítja a kijelölt címkék színét az alapértelmezettre?" -#~ msgid "Other:" -#~ msgstr "Egyéb:" +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "Beállítási profilok" -#~ msgid "Generate another link" -#~ msgstr "Másik cím generálása" +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "Eltávolítja a kijelölt profilokat? Az aktív és az alapértelmezett profil nem lesz törölve." -#~ msgid "View feeds" -#~ msgstr "Hírcsatornák megtekintése" +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "Kiválasztott profilok eltávolítása..." -#~ msgid "View tags" -#~ msgstr "Címkék megtekintése" +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "Nincsenek kiválasztott profilok." -#~ msgid "Back" -#~ msgstr "Vissza" +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "Aktiválja a kiválasztott profilt?" -#~ msgid "View:" -#~ msgstr "Nézet" +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "Válasszon egy aktiválandó profilt." -#~ msgid "Refresh" -#~ msgstr "Frissítés" +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "Profil létrehozás..." -#~ msgid "Page" -#~ msgstr "Oldal" +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "Ez érvényteleníteni fog minden korábban generált hírcsatorna URL-t. Folytatja?" -#, fuzzy -#~ msgid "Back to feedlist" -#~ msgstr "Kattintson ide a szerkesztéshez" +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "Generált URL-ek törölve." -#~ msgid "Tags:" -#~ msgstr "Címkék" +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Címke SzerkesztÅ‘" -#~ msgid "Mark as unread" -#~ msgstr "Olvasatlanná tesz" +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "EbbÅ‘l a kategóriából nem ." -#~ msgid "Where:" -#~ msgstr "Ahol:" +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "Keresés megszakítása" -#~ msgid "Match on:" -#~ msgstr "Egyezés ezzel:" +#: js/viewfeed.js:174 +#, fuzzy +msgid "New articles found, reload feed to continue." +msgstr "Nincs megjeleníthetÅ‘ hír." -#~ msgid "Internal error: Function not implemented" -#~ msgstr "BelsÅ‘ hiba: Nem implementált függvény" +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Csillagot levesz a hírrÅ‘l" -#, fuzzy -#~ msgid "Click to view" -#~ msgstr "Kattintson ide a szerkesztéshez" +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "Hír csillagozása" -#, fuzzy -#~ msgid "  Keyboard shortcuts" -#~ msgstr "  Hírek törlése" +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "Publikálás visszavonása" -#, fuzzy -#~ msgid "description" -#~ msgstr "Kiválasztottakat" +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Hír publikálása" -#~ msgid "Loading help..." -#~ msgstr "Segítség betöltése..." +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "%d hír kijelölve" +msgstr[1] "%d hír kijelölve" -#~ msgid "Saving label..." -#~ msgstr "Címke mentése" +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "Nincs kiválasztott hír." -#~ msgid "Unknown Error" -#~ msgstr "Ismeretlen Hiba" +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "Nincs megjelölendÅ‘ hír." -#~ msgid "Feed information:" -#~ msgstr "Feed információ:" +#: js/viewfeed.js:1452 +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "%d hír megjelölése olvasottként?" +msgstr[1] "%d hír megjelölése olvasottként?" -#, fuzzy -#~ msgid "Site:" -#~ msgstr "Cím:" +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "URL megjelenítése" -#, fuzzy -#~ msgid "Last updated:" -#~ msgstr "Frissítve" +#~ msgid "Select by tags..." +#~ msgstr "Kijelölés címkék alapján" -#~ msgid "Other feeds: Top 25" -#~ msgstr "Más feedek: Top 25" +#~ msgid "Limit search to:" +#~ msgstr "Keresés korlátozása ezekre:" -#~ msgid "Showing top 25 registered feeds, sorted by popularity:" -#~ msgstr "Mutasd a top 25 regisztrált feedet, népszerűség szerint:" +#~ msgid "This feed" +#~ msgstr "Ez a hírcsatorna" -#~ msgid "Top 25" -#~ msgstr "Top 25" +#~ msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation." +#~ msgstr "Az adatbázis szerver regexp implementációjával kapcsolatos problémák miatt a összetett kifejezések nem biztos, hogy eredményesek lesznek." -#~ msgid "Content Filtering" -#~ msgstr "TartalomszűrÅ‘" +#~ msgid "Old password cannot be blank." +#~ msgstr "A régi jelszó mezÅ‘ nem maradhat üresen." -#~ msgid "Label Editor" -#~ msgstr "Címke SzerkesztÅ‘" +#~ msgid "New password cannot be blank." +#~ msgstr "Az új jelszó mezÅ‘ nem maradhat üresen." -#~ msgid "User Manager" -#~ msgstr "Felhasználók kezelése" +#~ msgid "Entered passwords do not match." +#~ msgstr "A megadott jelszavak nem egyeznek." -#~ msgid "Toggle:" -#~ msgstr "Megjelöl:" +#~ msgid "Function not supported by authentication module." +#~ msgstr "A hitelesítési modul nem támogatja ezt a funkciót." -#~ msgid "  Subscribe to feed" -#~ msgstr "  Feliratokzás a feedre" +#~ msgid "Match:" +#~ msgstr "Egyezés:" -#~ msgid "  Edit this feed" -#~ msgstr "  Editáld a feedet" +#~ msgid "Any" +#~ msgstr "Mind" -#~ msgid "  Clear articles" -#~ msgstr "  Hírek törlése" +#~ msgid "All tags." +#~ msgstr "Minden címke." -#~ msgid "  Unsubscribe" -#~ msgstr "  Leiratkozás" +#~ msgid "Which Tags?" +#~ msgstr "Melyik címkék?" -#~ msgid "  Mark as read" -#~ msgstr "  Olvasottá tesz" +#~ msgid "Display entries" +#~ msgstr "Bejegyzések megejenítése" -#~ msgid "  (Un)hide read feeds" -#~ msgstr "  Megmutatja/elrejti az olvasott feedeket" +#~ msgid "Select item(s) by tags" +#~ msgstr "Elemek kijelölése címkék szerint" -#, fuzzy -#~ msgid "  Create label" -#~ msgstr "  SzűrÅ‘k létrehozása" +#~ msgid "Unread First" +#~ msgstr "Olvasatlanok elÅ‘re" -#~ msgid "  Create filter" -#~ msgstr "  SzűrÅ‘k létrehozása" +#~ msgid "Unknown option: %s" +#~ msgstr "Ismeretlen beállítás: %s" -#, fuzzy -#~ msgid "  Reset category order" -#~ msgstr "  Feliratokzás a feedre" +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "A Tiny Tiny RSS-nek elérhetÅ‘ egy újabb verziója!" -#, fuzzy -#~ msgid "Match " -#~ msgstr "Egyezés" +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "Nem sikerült érvényesíteni a munkamenetet (user agent megváltozott)" -#, fuzzy -#~ msgid "Unread articles" -#~ msgstr "Tárolt hírek" +#~ msgid "Assign articles to labels automatically" +#~ msgstr "Címkék automatikus hozzárendelése a hírekhez" -#, fuzzy -#~ msgid "Title contains" -#~ msgstr "Cím vagy tartalom" +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "Új Tiny Tiny RSS verzió érhetÅ‘ el (%s)." -#, fuzzy -#~ msgid "Content contains" -#~ msgstr "TartalomszűrÅ‘" +#~ msgid "You can update using built-in updater in the Preferences or by using update.php" +#~ msgstr "Frissíthet a beépített frissítÅ‘vel a Beállításokban, vagy az update.php használatával" -#~ msgid "Caption" -#~ msgstr "Aláírás" +#~ msgid "See the release notes" +#~ msgstr "Olvassa el a kiadási megjegyzéseket" -#, fuzzy -#~ msgid "Match SQL" -#~ msgstr "Egyezés" +#~ msgid "Download" +#~ msgstr "Letöltés" -#, fuzzy -#~ msgid "[No caption]" -#~ msgstr "Aláírás" +#~ msgid "Error receiving version information or no new version available." +#~ msgstr "Hiba a verzió információ fogadása közben vagy nem érhetÅ‘ el új verzió." -#, fuzzy -#~ msgid "Match all unread articles:" -#~ msgstr "Tárolt hírek" +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Tiny Tiny RSS frissítése" -#, fuzzy -#~ msgid "Search to label" -#~ msgstr "Címke készítése" +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "A Tiny Tiny RSS telepítés naprakész." #, fuzzy -#~ msgid "Create Label" -#~ msgstr "Címke készítése" +#~ msgid "Force update" +#~ msgstr "Frissítések végrehajtása" -#~ msgid "Test" -#~ msgstr "Teszt" +#~ msgid "Do not close this dialog until updating is finished." +#~ msgstr "Ne zárja be az ablakot amíg a frissítés be nem fejezÅ‘dik." -#, fuzzy -#~ msgid "Perform action" -#~ msgstr "Művelet" +#~ msgid "It is suggested to backup your tt-rss directory first." +#~ msgstr "Ajánlott a tt-rss könyvtárának biztonsági mentése." -#~ msgid "Category:" -#~ msgstr "Kategória:" +#~ msgid "Your database will not be modified." +#~ msgstr "Az adatbázis nem lesz módosítva." -#~ msgid "Caption:" -#~ msgstr "Aláírás:" +#~ 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 "Az aktuális tt-rss telepítési könyvtár nem lesz módosítva. Ãtnevezésre kerül és a szülÅ‘ könyvtárban marad. A frissítés után lehetÅ‘ség van az összes testre-szabott fájl migrálására az új rendszerbe." -#~ msgid "Match:" -#~ msgstr "Egyezés" +#~ msgid "Ready to update." +#~ msgstr "Frissítésre kész." -#~ msgid "Action:" -#~ msgstr "Művelet:" +#~ msgid "Start update" +#~ msgstr "Frissítés indtása" -#~ msgid "Params:" -#~ msgstr "Paraméterek" +#~ msgid "Backup your tt-rss directory before continuing. Please type 'yes' to continue." +#~ msgstr "A folytatás elÅ‘tt mentse el a tt-rss könyvtárának tartalmát. A folytatáshoz írja be a 'yes' szót." -#~ msgid "Title:" -#~ msgstr "Cím:" +#~ msgid "New version available!" +#~ msgstr "Új verzió érhetÅ‘ el." -#, fuzzy -#~ msgid "Update using:" -#~ msgstr "Frissítés" +#~ msgid "LibXML error %s at line %d (column %d): %s" +#~ msgstr "LibXML hiba %s sor: %d (oszlop: %d): %s" -#~ msgid "Change password:" -#~ msgstr "Jelszó megváltoztatása:" +#~ msgid "From:" +#~ msgstr "Feladó:" -#, fuzzy -#~ msgid "Update errors" -#~ msgstr "Frissítési hiba" +#~ msgid "Select:" +#~ msgstr "Kiválasztás:" -#~ msgid "This page" -#~ msgstr "Ez az oldalt" +#~ msgid "Change password to" +#~ msgstr "Jelszó megváltoztatása" -#~ msgid "Below active article" -#~ msgstr "Aktív hír alatt" +#~ msgid "E-mail: " +#~ msgstr "E-mail:" -#~ msgid "Next page" -#~ msgstr "KövetkezÅ‘ oldal" +#~ msgid "Login field cannot be blank." +#~ msgstr "A felhasználói név nem maradhat üresen." -#~ msgid "Previous page" -#~ msgstr "ElÅ‘zÅ‘ oldal" +#~ msgid "Saving user..." +#~ msgstr "Felhasználó mentése..." -#~ msgid "First page" -#~ msgstr "ElsÅ‘ oldal" +#~ msgid "Toggle marked" +#~ msgstr "Jelölés váltása" diff --git a/locale/it_IT/LC_MESSAGES/messages.mo b/locale/it_IT/LC_MESSAGES/messages.mo index 6140105d5b..ce052d933e 100644 Binary files a/locale/it_IT/LC_MESSAGES/messages.mo and b/locale/it_IT/LC_MESSAGES/messages.mo differ diff --git a/locale/it_IT/LC_MESSAGES/messages.po b/locale/it_IT/LC_MESSAGES/messages.po index 5aad9ff9dd..532d585c3e 100644 --- a/locale/it_IT/LC_MESSAGES/messages.po +++ b/locale/it_IT/LC_MESSAGES/messages.po @@ -1,3264 +1,4343 @@ -# Italian translation of Tiny Tiny RSS. -# Copyright (C) YEAR THE Tiny Tiny RSS'S COPYRIGHT HOLDER -# This file is distributed under the same license as the Tiny Tiny RSS package. -# Andrea Zagli , 2008, 2009. +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# gothfox , 2011. +# dedioste , 2015 msgid "" msgstr "" -"Project-Id-Version: ttrss-1.2.30\n" +"Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-22 22:16+0300\n" -"PO-Revision-Date: 2009-03-27 18:10+0100\n" -"Last-Translator: Andrea Zagli \n" -"Language-Team: Italian \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2015-07-17 08:31+0000\n" +"Last-Translator: dedioste \n" +"Language-Team: LANGUAGE \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: backend.php:107 +#: backend.php:73 msgid "Use default" -msgstr "Utilizza predefiniti" +msgstr "Usa predefiniti" -#: backend.php:108 +#: backend.php:74 msgid "Never purge" msgstr "Non pulire mai" -#: backend.php:109 +#: backend.php:75 msgid "1 week old" msgstr "Vecchi di 1 settimana" -#: backend.php:110 +#: backend.php:76 msgid "2 weeks old" msgstr "Vecchi di 2 settimane" -#: backend.php:111 +#: backend.php:77 msgid "1 month old" msgstr "Vecchi di 1 mese" -#: backend.php:112 +#: backend.php:78 msgid "2 months old" msgstr "Vecchi di 2 mesi" -#: backend.php:113 +#: backend.php:79 msgid "3 months old" msgstr "Vecchi di 3 mesi" -#: backend.php:116 +#: backend.php:82 msgid "Default interval" msgstr "Intervallo predefinito" -#: backend.php:117 backend.php:127 +#: backend.php:83 +#: backend.php:93 msgid "Disable updates" -msgstr "Disabilitare aggiornamenti" +msgstr "Disattiva aggiornamenti" -#: backend.php:118 backend.php:128 -msgid "Each 15 minutes" -msgstr "Ogni 15 minuti" +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" +msgstr "15 minuti" -#: backend.php:119 backend.php:129 -msgid "Each 30 minutes" -msgstr "Ogni 30 minuti" +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" +msgstr "30 minuti" -#: backend.php:120 backend.php:130 +#: backend.php:86 +#: backend.php:96 msgid "Hourly" -msgstr "A ogni ora" +msgstr "Ogni ora" -#: backend.php:121 backend.php:131 -msgid "Each 4 hours" -msgstr "Ogni 4 ore" +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" +msgstr "4 ore" -#: backend.php:122 backend.php:132 -msgid "Each 12 hours" -msgstr "Ogni 12 ore" +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" +msgstr "12 ore" -#: backend.php:123 backend.php:133 +#: backend.php:89 +#: backend.php:99 msgid "Daily" -msgstr "Giornalmente" +msgstr "Ogni giorno" -#: backend.php:124 backend.php:134 +#: backend.php:90 +#: backend.php:100 msgid "Weekly" -msgstr "Settimanalmente" - -#: backend.php:137 tt-rss.php:220 modules/pref-prefs.php:329 -msgid "Default" -msgstr "Predefinito" - -#: backend.php:138 -msgid "Magpie" -msgstr "Magpie" +msgstr "Ogni settimana" -#: backend.php:139 -msgid "SimplePie" -msgstr "SimplePie" - -#: backend.php:148 modules/pref-users.php:126 +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 msgid "User" msgstr "Utente" -#: backend.php:149 +#: backend.php:104 msgid "Power User" -msgstr "Utente con più autorizzazioni" +msgstr "Utente con maggiori autorizzazioni" -#: backend.php:150 +#: backend.php:105 msgid "Administrator" msgstr "Amministratore" -#: backend.php:538 login_form.php:142 modules/backend-rpc.php:61 -#: modules/popup-dialog.php:106 -#, fuzzy -msgid "Default profile" -msgstr "Limite articoli predefinito" - -#: errors.php:3 -msgid "Unknown error" -msgstr "Errore sconosciuto" +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "Questo programma richiede XmlHttpRequest per funzionare correttamente. Il browser non sembra supportarlo." -#: errors.php:5 -msgid "" -"This program requires XmlHttpRequest to function properly. Your browser " -"doesn't seem to support it." -msgstr "" -"Questo programma richiede XmlHttpRequest per funzionare correttamente. Il " -"browser sembra non supportarla." - -#: errors.php:8 -msgid "" -"This program requires cookies to function properly. Your browser doesn't " -"seem to support them." -msgstr "" -"Questo programma richiede i cookie per funzionare correttamente. Il browser " -"sembra non supportarli." +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "Questo programma richiede i cookie per funzionare correttamente. Il browser non sembra supportarli." -#: errors.php:11 -msgid "Backend sanity check failed" +#: errors.php:15 +#, fuzzy +msgid "Backend sanity check failed." msgstr "Controllo sul backend fallito" -#: errors.php:13 +#: errors.php:17 msgid "Frontend sanity check failed." msgstr "Controllo sul frontend fallito." -#: errors.php:15 -msgid "" -"Incorrect database schema version. <a href='update.php'>Please " -"update</a>." -msgstr "" -"Versione dello schema database non corretta. <a href='update.php'> " -"Aggiornarla</a>." +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "Versione dello schema del database non corretta. <a href='db-updater.php'>Aggiornala</a>." -#: errors.php:17 +#: errors.php:21 msgid "Request not authorized." msgstr "Richiesta non autorizzata." -#: errors.php:19 +#: errors.php:23 msgid "No operation to perform." msgstr "Nessuna operazione da eseguire." -#: errors.php:21 -msgid "" -"Could not display feed: query failed. Please check label match syntax or " -"local configuration." -msgstr "" -"Impossibile visualizzare il notiziario. Controllare che l'etichetta " -"corrisponda alla sintassi o la configurazione locale." +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "Impossibile visualizzare il notiziario. Controllare che l'etichetta corrisponda alla sintassi o la configurazione locale." -#: errors.php:23 +#: errors.php:27 msgid "Denied. Your access level is insufficient to access this page." -msgstr "" -"Negato. Il livello di accesso non è sufficiente per accedere a questa pagina." +msgstr "Negato. Il livello di accesso non è sufficiente per accedere a questa pagina." -#: errors.php:25 +#: errors.php:29 msgid "Configuration check failed" msgstr "Controllo della configurazione fallito" -#: errors.php:27 -msgid "" -"Your version of MySQL is not currently supported. Please see \n" -"\t\tofficial site for more information." -msgstr "" -"La versione di MySQL non è attualmente supportata. Vedere \n" -"\t\til sito ufficiale per maggiori informazioni." +#: errors.php:31 +#, fuzzy +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "Questa versione di MySQL non è attualmente supportata. Vedere il sito ufficiale per maggiori informazioni." -#: errors.php:32 +#: errors.php:35 msgid "SQL escaping test failed, check your database and PHP configuration" -msgstr "" -"Test di sanitizzazione dell'SQL fallito; controllare il database e la " -"configurazione del PHP" - -#: functions.php:1928 -msgid "Session failed to validate (incorrect IP)" -msgstr "" - -#: functions.php:1998 -msgid "Incorrect username or password" -msgstr "" - -#: functions.php:2979 modules/popup-dialog.php:391 -#: modules/pref-filters.php:420 -msgid "All feeds" -msgstr "Tutti i notiziari" - -#: functions.php:3011 functions.php:3050 functions.php:4447 functions.php:4475 -#: modules/backend-rpc.php:859 modules/pref-feeds.php:1333 -msgid "Uncategorized" -msgstr "Senza categoria" +msgstr "Test di sanitizzazione dell'SQL fallito; controllare il database e la configurazione di PHP" -#: functions.php:3040 functions.php:3689 modules/backend-rpc.php:864 -#: mobile/functions.php:170 -msgid "Special" -msgstr "Speciale" +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "Metodo non trovato." -#: functions.php:3042 functions.php:3691 prefs.php:114 -#: modules/backend-rpc.php:869 help/4.php:12 mobile/functions.php:197 -msgid "Labels" -msgstr "Etichette" +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "Plugin non trovato" + +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "Caricamento, attendere prego..." -#: functions.php:3087 help/3.php:60 offline.js:493 offline.js:1425 -msgid "Starred articles" -msgstr "Articoli con stella" +#: index.php:167 +msgid "Collapse feedlist" +msgstr "Riduci elenco notiziari" -#: functions.php:3089 modules/pref-feeds.php:1492 help/3.php:61 -msgid "Published articles" -msgstr "Articoli pubblicati" +#: index.php:170 +msgid "Show articles" +msgstr "Mostra articoli" -#: functions.php:3091 help/3.php:59 -msgid "Fresh articles" -msgstr "Articoli nuovi" +#: index.php:173 +msgid "Adaptive" +msgstr "Adattivo" -#: functions.php:3093 help/3.php:58 offline.js:488 offline.js:1427 -msgid "All articles" +#: index.php:174 +msgid "All Articles" msgstr "Tutti gli articoli" -#: functions.php:3095 -#, fuzzy -msgid "Archived articles" -msgstr "Articoli salvati" - -#: functions.php:4200 -msgid "Generated feed" -msgstr "Notiziario generato" - -#: functions.php:4205 functions.php:5553 modules/popup-dialog.php:82 -#: modules/pref-feeds.php:1087 modules/pref-feeds.php:1297 -#: modules/pref-filters.php:377 modules/pref-labels.php:183 -#: modules/pref-users.php:419 offline.js:408 -msgid "Select:" -msgstr "Seleziona:" - -#: functions.php:4206 modules/popup-dialog.php:83 modules/pref-feeds.php:1088 -#: modules/pref-feeds.php:1298 modules/pref-filters.php:378 -#: modules/pref-labels.php:184 modules/pref-users.php:420 -msgid "All" -msgstr "Tutti" +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "Con stella" + +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "Pubblicati" -#: functions.php:4207 functions.php:4224 tt-rss.php:213 +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 msgid "Unread" msgstr "Non letti" -#: functions.php:4208 -msgid "Invert" -msgstr "Inverti" +#: index.php:178 +msgid "With Note" +msgstr "Annotati" -#: functions.php:4209 modules/popup-dialog.php:84 modules/pref-feeds.php:1089 -#: modules/pref-feeds.php:1299 modules/pref-filters.php:379 -#: modules/pref-labels.php:185 modules/pref-users.php:421 -msgid "None" -msgstr "Nessuno" +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Ignora punteggio" -#: functions.php:4217 tt-rss.php:178 offline.js:184 -msgid "Actions..." -msgstr "Azioni..." +#: index.php:182 +msgid "Sort articles" +msgstr "Ordina articoli" -#: functions.php:4223 -msgid "Selection toggle:" -msgstr "Inverti selezione:" +#: index.php:185 +msgid "Default" +msgstr "Predefinito" -#: functions.php:4225 tt-rss.php:212 -msgid "Starred" -msgstr "Con stella" +#: index.php:186 +msgid "Newest first" +msgstr "Prima i più nuovi" -#: functions.php:4226 -msgid "Published" -msgstr "Pubblicati" +#: index.php:187 +msgid "Oldest first" +msgstr "Prima i più vecchi" -#: functions.php:4227 -msgid "Selection:" -msgstr "Selezione:" +#: index.php:188 +msgid "Title" +msgstr "Titolo" -#: functions.php:4228 localized_schema.php:16 tt-rss.php:187 tt-rss.php:230 +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 msgid "Mark as read" msgstr "Segna come letto" -#: functions.php:4234 -msgid "Archive" -msgstr "" +#: index.php:195 +msgid "Older than one day" +msgstr "Più vecchi di un giorno" -#: functions.php:4236 -#, fuzzy -msgid "Move back" -msgstr "Vai indietro" +#: index.php:198 +msgid "Older than one week" +msgstr "Più vecchi di una settimana" -#: functions.php:4237 -#, fuzzy -msgid "Delete" -msgstr "Predefinito" +#: index.php:201 +msgid "Older than two weeks" +msgstr "Più vecchi di due settimane" -#: functions.php:4242 -msgid "Assign label:" -msgstr "Assegna etichetta:" +#: index.php:217 +msgid "Communication problem with server." +msgstr "Problema di comunicazione con il server" + +#: index.php:223 +msgid "Actions..." +msgstr "Azioni..." -#: functions.php:4283 -msgid "Click to collapse category" -msgstr "Fare clic per contrarre la categoria" +#: index.php:225 +#, fuzzy +msgid "Preferences..." +msgstr "Preferenze..." -#: functions.php:4493 -msgid "No feeds to display." -msgstr "Nessun notiziario da visualizzare." +#: index.php:226 +msgid "Search..." +msgstr "Cerca..." -#: functions.php:4510 -msgid "Tags" -msgstr "Etichette" +#: index.php:227 +msgid "Feed actions:" +msgstr "Azioni sul notiziario:" -#: functions.php:4669 -msgid "audio/mpeg" -msgstr "audio/mpeg" +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "Sottoscrivi il notiziario..." -#: functions.php:4795 -msgid " - " -msgstr " - " +#: index.php:229 +msgid "Edit this feed..." +msgstr "Modifica questo notiziario..." -#: functions.php:4820 functions.php:5580 -msgid "Edit tags for this article" -msgstr "Modifica le etichette per questo articolo" +#: index.php:230 +msgid "Rescore feed" +msgstr "Cambia punteggio notiziario" -#: functions.php:4826 functions.php:5563 -msgid "Show article summary in new window" -msgstr "Mostra il sommario dell'articolo in una nuova finestra" +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "Annulla sottoscrizione" -#: functions.php:4833 functions.php:5570 -msgid "Publish article with a note" -msgstr "Pubblica articolo con una nota" +#: index.php:232 +msgid "All feeds:" +msgstr "Tutti i notiziari:" -#: functions.php:4850 functions.php:5441 -msgid "Originally from:" -msgstr "" +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Visualizza/Nascondi notiziari letti" -#: functions.php:4863 functions.php:5454 +#: index.php:235 +msgid "Other actions:" +msgstr "Altre azioni:" + +#: index.php:236 +#: include/functions2.php:78 #, fuzzy -msgid "Feed URL" -msgstr "Notiziario" +msgid "Toggle widescreen mode" +msgstr "Modalità widescreen" -#: functions.php:4903 functions.php:5484 -msgid "unknown type" -msgstr "tipo sconosciuto" +#: index.php:237 +msgid "Create label..." +msgstr "Crea etichetta..." -#: functions.php:4943 functions.php:5527 -msgid "Attachment:" -msgstr "Allegato:" +#: index.php:238 +msgid "Create filter..." +msgstr "Crea filtro..." -#: functions.php:4945 functions.php:5529 -msgid "Attachments:" -msgstr "Allegati:" +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "Aiuto scorciatoie da tastiera" -#: functions.php:4965 prefs.php:142 tt-rss.php:101 modules/help.php:21 -#: modules/popup-dialog.php:53 modules/popup-dialog.php:154 -#: modules/popup-dialog.php:181 modules/popup-dialog.php:230 -#: modules/popup-dialog.php:575 modules/popup-dialog.php:634 -#: modules/pref-feeds.php:1140 modules/pref-users.php:96 -msgid "Close this window" -msgstr "Chiudi questa finestra" +#: index.php:248 +msgid "Logout" +msgstr "Esci" -#: functions.php:5021 -msgid "Feed not found." -msgstr "Notiziario non trovato." +#: index.php:254 +msgid "Updates are available from Git." +msgstr "Gli aggiornamenti sono disponibili via Git." -#: functions.php:5090 -msgid "" -"Could not display feed (query failed). Please check label match syntax or " -"local configuration." -msgstr "" -"Impossibile visualizzare il notiziario (interrogazione fallita). Controllare " -"che l'etichetta corrisponda alla sintassi o la configurazione locale." +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "Preferenze" -#: functions.php:5254 functions.php:5341 -#, fuzzy -msgid "mark as read" -msgstr "Segna come letto" +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "Scorciatoie da tastiera" -#: functions.php:5417 functions.php:5424 -msgid "Click to expand article" -msgstr "Fare clic per espandere l'articolo" +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Esci dalle preferenze" -#: functions.php:5587 -msgid "toggle unread" -msgstr "inverti non letti" +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Notiziari" -#: functions.php:5606 -msgid "No unread articles found to display." -msgstr "Nessun articolo non letto trovato da visualizzare." +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "Filtri" -#: functions.php:5609 -msgid "No updated articles found to display." -msgstr "Nessun articolo non aggiornato trovato da visualizzare." +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Etichette" -#: functions.php:5612 -msgid "No starred articles found to display." -msgstr "Nessun articolo con stella trovato da visualizzare." +#: prefs.php:133 +msgid "Users" +msgstr "Utenti" -#: functions.php:5616 -msgid "" -"No articles found to display. You can assign articles to labels manually " -"(see the Actions menu above) or use a filter." -msgstr "" -"Nessun articolo trovato da visualizzare. Si possono assegnare manualmente " -"gli articoli alle etichette (vedere il menù «Azioni» sopra) o utilizzare un " -"filtro." +#: prefs.php:136 +msgid "System" +msgstr "Sistema" -#: functions.php:5618 offline.js:443 -msgid "No articles found to display." -msgstr "Nessun articolo trovato da visualizzare." +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "Crea un nuovo account" -#: functions.php:6362 tt-rss.php:192 -msgid "Create label..." -msgstr "Crea etichetta..." +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "La registrazione di nuovi utenti è disattivata dall'amministratore." + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Ritorna a Tiny Tiny RSS" -#: functions.php:6375 -msgid "(remove)" -msgstr "(rimuovi)" +#: register.php:218 +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 "La password temporanea verrà inviata all'email specificata. Gli utenti che non eseguono l'accesso almeno una volta vengono cancellati automaticamente 24 ore dopo che la password temporanea è stata inviata." -#: functions.php:6427 -msgid "no tags" -msgstr "nessuna etichetta" +#: register.php:224 +msgid "Desired login:" +msgstr "Nome utente desiderato:" -#: functions.php:6456 -msgid "edit note" -msgstr "modifica note" +#: register.php:227 +msgid "Check availability" +msgstr "Controlla disponibilità" -#: localized_schema.php:9 tt-rss.php:222 modules/popup-dialog.php:381 -#: modules/pref-feeds.php:1310 modules/pref-feeds.php:1369 -msgid "Title" -msgstr "Titolo" +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "Email:" + +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "Quanto fa due più due:" -#: localized_schema.php:10 -msgid "Title or Content" -msgstr "Titolo o contenuto" +#: register.php:235 +msgid "Submit registration" +msgstr "Invia registrazione" -#: localized_schema.php:11 -msgid "Link" -msgstr "Collegamento" +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "Le informazioni di registrazione sono incomplete." -#: localized_schema.php:12 modules/popup-dialog.php:382 -msgid "Content" -msgstr "Contenuto" +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "Il nome utente esiste già." -#: localized_schema.php:13 -msgid "Article Date" -msgstr "Data dell'articolo" +#: register.php:287 +msgid "Registration failed." +msgstr "Registrazione fallita." -#: localized_schema.php:15 -msgid "Filter article" -msgstr "Filtra articoli" +#: register.php:334 +msgid "Account created successfully." +msgstr "Account creato con successo." -#: localized_schema.php:17 -msgid "Set starred" -msgstr "Imposta con stella" +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "La registrazione di nuovi utenti è attualmente chiusa." -#: localized_schema.php:18 viewfeed.js:545 viewfeed.js:659 -msgid "Publish article" -msgstr "Pubblica articolo" +#: update.php:62 +#, fuzzy +msgid "Tiny Tiny RSS data update script." +msgstr "Script di aggiornamento dei dati di Tiny Tiny RSS." + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "Senza categoria" -#: localized_schema.php:19 -msgid "Assign tags" -msgstr "Assegna etichette" +#: include/feedbrowser.php:84 +#, fuzzy, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d articolo archiviato" +msgstr[1] "%d articoli archiviati" -#: localized_schema.php:20 -msgid "Assign label" -msgstr "Assegna etichetta" +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "Nessun notiziario trovato." -#: localized_schema.php:24 -msgid "General" -msgstr "Generali" +#: include/functions2.php:52 +msgid "Navigation" +msgstr "Navigazione" -#: localized_schema.php:26 -msgid "Allow duplicate posts" -msgstr "Permettere articoli duplicati" +#: include/functions2.php:53 +#, fuzzy +msgid "Open next feed" +msgstr "Apri il notiziario successivo" -#: localized_schema.php:27 -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 "" -"Questa opzione è utile quando si stanno leggendo vari aggregatori di tipo " -"«planet» con utenti che collidono parzialmente. Quando disabilitata forza le " -"stesse notizie da differenti notiziari ad apparire una volta sola." +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "Apri il notiziario precedente" -#: localized_schema.php:28 -msgid "Default interval between feed updates (in minutes)" -msgstr "Intervallo predefinito tra gli aggiornamenti dei notiziari (in minuti)" +#: include/functions2.php:55 +#, fuzzy +msgid "Open next article" +msgstr "Apri il prossimo articolo" -#: localized_schema.php:29 -msgid "Enable e-mail digest" -msgstr "Abilitare email riassunto" +#: include/functions2.php:56 +#, fuzzy +msgid "Open previous article" +msgstr "Apri l'articolo precedente" -#: localized_schema.php:30 -msgid "" -"This option enables sending daily digest of new (and unread) headlines on " -"your configured e-mail address" -msgstr "" -"Questa opzione abilita l'invio del un riassunto giornaliero dei sommari " -"nuovi (e non letti) all'indirizzo email configurato" +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "Apri il prossimo articolo (non scorrere gli articoli lunghi)" -#: localized_schema.php:31 -msgid "Purge old posts after this number of days (0 - disables)" -msgstr "" -"Eliminare le notizie vecchie dopo questo numero di giorni (0 - disabilitato)" +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "Apri l'articolo precedente (non scorrere gli articoli lunghi)" -#: localized_schema.php:32 -msgid "Update post on checksum change" -msgstr "Aggiornare la notizia al cambiamento della somma di controllo" +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "Passa al prossimo articolo (senza espandere o segnare come letto)" -#: localized_schema.php:33 -msgid "Mark articles in e-mail digest as read" -msgstr "Segna gli articoli del riassunto email come letti" +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "Passa all'articolo precedente (senza espandere o segnare come letto)" -#: localized_schema.php:34 -#, fuzzy -msgid "Enable offline reading" -msgstr "Lettura fuori linea" +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Mostra il campo di ricerca" -#: localized_schema.php:35 +#: include/functions2.php:62 #, fuzzy -msgid "Synchronize new articles for offline reading using Google Gears." -msgstr "" -"Occorre sincronizzare alcuni articoli prima di andare nella modalità «fuori " -"linea»." +msgid "Article" +msgstr "Articolo" -#: localized_schema.php:37 -msgid "Interface" -msgstr "Interfaccia" +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "Inverti articoli con stella" -#: localized_schema.php:39 -msgid "Combined feed display" -msgstr "Visualizzazione combinata di notiziari" +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "Inverti articoli pubblicati" -#: localized_schema.php:40 -msgid "" -"Display expanded list of feed articles, instead of separate displays for " -"headlines and article content" -msgstr "" -"Visualizza un elenco espanso di articoli di notiziario, invece di " -"visualizzazioni separate per sommario e contenuto dell'articolo" +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "Inverti articoli non letti" -#: localized_schema.php:41 -msgid "Default article limit" -msgstr "Limite articoli predefinito" +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Modifica etichette" -#: localized_schema.php:42 -msgid "" -"Default limit for articles to display, any custom number you like (0 - " -"disables)." -msgstr "" -"Limite predefinito per gli articoli da visualizzare (qualunque numero) (0 - " -"disabilitato)" +#: include/functions2.php:67 +#, fuzzy +msgid "Dismiss selected" +msgstr "Rimuovi gli articoli selezionati" -#: localized_schema.php:43 -msgid "Enable feed categories" -msgstr "Abilitare le categorie dei notiziari" +#: include/functions2.php:68 +#, fuzzy +msgid "Dismiss read" +msgstr "Rimuovi articoli letti" -#: localized_schema.php:44 -msgid "Enable search toolbar" -msgstr "Abilitare la barra degli strumenti di ricerca" +#: include/functions2.php:69 +#, fuzzy +msgid "Open in new window" +msgstr "Apri in una nuova finestra" -#: localized_schema.php:45 -msgid "Hide feeds with no unread messages" -msgstr "Nascondere i notiziari senza messaggi non letti" +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "Segna gli articoli sotto come letti" -#: localized_schema.php:46 -msgid "Mark articles as read automatically" -msgstr "Segnare gli articoli automaticamente come letti" +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "Segna gli articoli sopra come letti" -#: localized_schema.php:47 -msgid "" -"This option enables marking articles as read automatically in combined mode " -"(except for Fresh articles feed) while you scroll article list." -msgstr "" -"Questa opzione abilita la segnatura automatica degli articoli come letti in " -"modalità combinata (eccetto per il notiziario degli articoli nuovi) mentre " -"si fa scorrere l'elenco degli articoli." +#: include/functions2.php:72 +#, fuzzy +msgid "Scroll down" +msgstr "Scorri giù" -#: localized_schema.php:48 -msgid "On catchup show next feed" -msgstr "Su lettura passare al prossimo notiziario" +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "Scorri sù" -#: localized_schema.php:49 -msgid "" -"When \"Mark as read\" button is clicked in toolbar, automatically open next " -"feed with unread articles." -msgstr "" -"Quando viene fatto clic sul pulsante \"Segna come letto\" nella barra degli " -"strumenti, automaticamente si apre il notiziario successivo con articoli non " -"letti." +#: include/functions2.php:74 +#, fuzzy +msgid "Select article under cursor" +msgstr "Seleziona l'articolo sotto il cursore del mouse" -#: localized_schema.php:50 -msgid "Open article links in new browser window" -msgstr "Aprire i collegamenti degli articoli in una nuova finestra del browser" +#: include/functions2.php:75 +msgid "Email article" +msgstr "Invia articolo per email" -#: localized_schema.php:51 -msgid "Reverse headline order (oldest first)" -msgstr "Invertire l'ordine del sommario (prima i più vecchi)" +#: include/functions2.php:76 +#, fuzzy +msgid "Close/collapse article" +msgstr "Chiudi / collassa articolo" -#: localized_schema.php:52 -msgid "Show content preview in headlines list" -msgstr "Mostrare l'anteprima del contenuto nell'elenco del sommario" +#: include/functions2.php:77 +#, fuzzy +msgid "Toggle article expansion (combined mode)" +msgstr "Inverti l'espansione degli articoli (modalità combinata)" -#: localized_schema.php:53 -msgid "Sort feeds by unread articles count" -msgstr "Ordinare i notiziari per numero di articoli non letti" +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +#, fuzzy +msgid "Toggle embed original" +msgstr "Inserire gli originali" -#: localized_schema.php:54 -msgid "User stylesheet URL" -msgstr "URL del foglio di stile utente" +#: include/functions2.php:80 +#, fuzzy +msgid "Article selection" +msgstr "Seleziona articolo" -#: localized_schema.php:55 -msgid "Link to user stylesheet to override default style, disabled if empty." -msgstr "" -"Collegamento al foglio di stile utente per scavalcare lo stile predefinito. " -"Disabilitato se vuoto." +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "Seleziona tutti gli articoli" -#: localized_schema.php:56 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Età massima degli articoli nuovi (in ore)" +#: include/functions2.php:82 +#, fuzzy +msgid "Select unread" +msgstr "Seleziona articoli non letti" -#: localized_schema.php:57 -msgid "Hide feedlist" -msgstr "Nascondere l'elenco dei notiziari" +#: include/functions2.php:83 +#, fuzzy +msgid "Select starred" +msgstr "Seleziona articoli con stella" -#: localized_schema.php:58 -msgid "" -"This option hides feedlist and allows it to be toggled on the fly, useful " -"for small screens." -msgstr "" -"Questa opzione nasconde l'elenco dei notiziari e permette di mostrarlo " -"al volo. Utile per schermi piccoli." +#: include/functions2.php:84 +#, fuzzy +msgid "Select published" +msgstr "Seleziona articoli pubblicati" -#: localized_schema.php:59 -msgid "Group headlines in virtual feeds" -msgstr "Raggruppare i sommari in notiziari virtuali" +#: include/functions2.php:85 +#, fuzzy +msgid "Invert selection" +msgstr "Inverti la selezione" -#: localized_schema.php:60 -msgid "" -"When this option is enabled, headlines in Special feeds and Labels are " -"grouped by feeds" -msgstr "" -"Quando questa opzione è abilitata, i sommari nei notiziari speciali e nelle " -"etichette vengono raggruppati per notiziario" +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "Deseleziona tutto" -#: localized_schema.php:62 -msgid "Advanced" -msgstr "Avanzate" +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Notiziario" -#: localized_schema.php:64 -msgid "Blacklisted tags" -msgstr "Etichette in lista nera" +#: include/functions2.php:88 +#, fuzzy +msgid "Refresh current feed" +msgstr "Aggiorna notiziario attivo" -#: localized_schema.php:65 -msgid "" -"When auto-detecting tags in articles these tags will not be applied (comma-" -"separated list)." -msgstr "" -"Quando è attiva l'individuazioni automatica delle etichette negli " -"articoli, queste etichette non saranno applicate (elenco separato da " -"virgola)." +#: include/functions2.php:89 +#, fuzzy +msgid "Un/hide read feeds" +msgstr "Visualizza/Nascondi notiziari letti" -#: localized_schema.php:66 -msgid "Confirm marking feed as read" -msgstr "Richiedere conferma segnatura del notiziario come letto" +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "Sottoscrivi il notiziario" -#: localized_schema.php:67 -msgid "Enable feed icons" -msgstr "Abilitare icone notiziari" +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Modifica notiziario" -#: localized_schema.php:68 -msgid "Enable labels" -msgstr "Abilitare etichette" +#: include/functions2.php:93 +#, fuzzy +msgid "Reverse headlines" +msgstr "Invertire l'ordine dei sommari" -#: localized_schema.php:69 -msgid "" -"Experimental support for virtual feeds based on user crafted SQL queries. " -"This feature is highly experimental and at this point not user friendly. Use " -"with caution." -msgstr "" -"Supporto sperimentale per notiziari virtuali basato su interrogazioni SQL " -"artigianali dell'utente. Questa caratteristica è molto sperimentale e " -"a questo punto non amichevole per l'utente. Utilizzare con cautela." +#: include/functions2.php:94 +#, fuzzy +msgid "Debug feed update" +msgstr "Debug aggiornamenti dei feed" -#: localized_schema.php:70 -msgid "Long date format" -msgstr "Formato data lunga" +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "Segna tutti i notiziari come letti" -#: localized_schema.php:71 -msgid "Set articles as unread on update" -msgstr "Impostare gli articoli come non letti durante l'aggiornamento" +#: include/functions2.php:96 +#, fuzzy +msgid "Un/collapse current category" +msgstr "Contrai la categoria corrente" -#: localized_schema.php:72 -msgid "Short date format" -msgstr "Formato data corta" +#: include/functions2.php:97 +#, fuzzy +msgid "Toggle combined mode" +msgstr "Attiva modalità combinata" -#: localized_schema.php:73 -msgid "Show additional information in feedlist" -msgstr "Mostrare informazioni addizionali nell'elenco notiziari" +#: include/functions2.php:98 +#, fuzzy +msgid "Toggle auto expand in combined mode" +msgstr "Attiva espansione automatica in modalità combinata" -#: localized_schema.php:74 -msgid "Strip unsafe tags from articles" -msgstr "Togliere le etichette non buone dagli articoli" +#: include/functions2.php:99 +#, fuzzy +msgid "Go to" +msgstr "Vai a..." -#: localized_schema.php:75 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "" -"Toglie tutte le etichette HTML più comuni durante la lettura degli articoli." +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "Tutti gli articoli" -#: localized_schema.php:76 -msgid "Use more accessible date/time format for headlines" -msgstr "Utilizzare un formato data/ora più accessibile per i sommari" +#: include/functions2.php:101 +msgid "Fresh" +msgstr "Recenti" -#: localized_schema.php:77 -msgid "Automatically expand articles in combined mode" -msgstr "Espandere automaticamente gli articoli nella modalità combinata" +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Nuvola etichette" -#: localized_schema.php:78 -msgid "Purge unread articles" -msgstr "Eliminare articoli non letti" +#: include/functions2.php:106 +#, fuzzy +msgid "Other" +msgstr "Altri notiziari" -#: localized_schema.php:79 -msgid "Show special feeds when hiding read feeds" -msgstr "" -"Mostrare i notiziari speciali quando vengono nascosti i notiziari letti" +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "Crea etichetta" -#: localized_schema.php:80 -msgid "Prefer more accurate feedlist counters to UI speed" -msgstr "" -"Preferire contatori di elenco notiziari più accurati per velocizzare l'" -"interfaccia grafica" +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "Crea filtro" -#: localized_schema.php:81 -msgid "Enable inline MP3 player" -msgstr "Abilitare riproduttore MP3 in linea" +#: include/functions2.php:109 +#, fuzzy +msgid "Un/collapse sidebar" +msgstr "Espandi/Riduci la barra laterale" -#: localized_schema.php:82 -msgid "" -"Enable the Flash-based XSPF Player to play MP3-format podcast enclosures." -msgstr "" -"Abilitare il riproduttore XSPF basato su Flash per riprodurre le custodie " -"podcast in formato MP3." +#: include/functions2.php:110 +#, fuzzy +msgid "Show help dialog" +msgstr "Mostra la sezione di aiuto" -#: localized_schema.php:83 -msgid "Do not show images in articles" -msgstr "Non mostrare le immagini negli articoli" +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Risultati di ricerca: %s" -#: localized_schema.php:84 -msgid "Enable external API" -msgstr "" +#: include/functions2.php:1258 +#: classes/feeds.php:730 +#, fuzzy +msgid "comment" +msgid_plural "comments" +msgstr[0] "Commenti?" +msgstr[1] "Commenti?" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +#, fuzzy +msgid "comments" +msgstr "Commenti?" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "nessuna etichetta" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "Modifica le etichette per questo articolo" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "Originariamente da:" -#: login_form.php:120 modules/popup-dialog.php:271 modules/pref-feeds.php:339 -#: modules/pref-feeds.php:561 mobile/login_form.php:38 +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "URL del notiziario" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "Chiudi questa finestra" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(modifica nota)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "tipo sconosciuto" + +#: include/functions2.php:1953 +#, fuzzy +msgid "Attachments" +msgstr "Allegati" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "%d minimo" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "Speciale" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Tutti i notiziari" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Articoli con stella" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Articoli pubblicati" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "Articoli nuovi" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "Articoli archiviati" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "Letti di recente" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 msgid "Login:" -msgstr "Accesso:" +msgstr "Nome utente:" -#: login_form.php:124 modules/popup-dialog.php:273 modules/pref-feeds.php:344 -#: modules/pref-feeds.php:567 mobile/login_form.php:43 +#: include/login_form.php:200 +#: classes/handler/public.php:560 msgid "Password:" msgstr "Password:" -#: login_form.php:129 -msgid "Language:" -msgstr "Lingua:" - -#: login_form.php:139 +#: include/login_form.php:206 #, fuzzy +msgid "I forgot my password" +msgstr "Ho dimenticato la mia password" + +#: include/login_form.php:212 msgid "Profile:" -msgstr "File:" +msgstr "Profilo:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "Profilo predefinito" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "Usa minor traffico" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "Non mostra le immagini negli articoli, riduce i refresh automatici" -#: login_form.php:152 mobile/login_form.php:28 +#: include/login_form.php:236 +msgid "Remember me" +msgstr "Ricordami" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 msgid "Log in" msgstr "Accedi" -#: login_form.php:155 register.php:148 -msgid "Create new account" -msgstr "Crea un nuovo utente" +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "La validazione della sessione è fallita (IP non corretto)" -#: login_form.php:169 -msgid "Limit bandwidth usage" -msgstr "Limitare l'uso della banda" +#: include/sessions.php:67 +#, fuzzy +msgid "Session failed to validate (schema version changed)" +msgstr "La validazione della sessione è fallita (schema del database cambiato)" -#: opml.php:99 opml.php:103 -msgid "OPML Utility" -msgstr "Utilità OPML" +#: include/sessions.php:85 +#, fuzzy +msgid "Session failed to validate (user not found)" +msgstr "La validazione della sessione è fallita (utente non trovato)" + +#: include/sessions.php:94 +#, fuzzy +msgid "Session failed to validate (password changed)" +msgstr "La validazione della sessione è fallita (password cambiata)" -#: opml.php:124 -msgid "Importing OPML (using DOMXML extension)..." -msgstr "Importazione OPML (utilizzando l'estensione DOMXML)..." +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "Nel wiki di Tiny Tiny RSS sono disponibili altri suggerimenti per l'interfaccia." -#: opml.php:128 -msgid "Importing OPML (using DOMDocument extension)..." -msgstr "Importazione OPML (utilizzando l'estensione DOMDocument)..." +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Scorciatoie da tastiera" -#: opml.php:132 modules/popup-dialog.php:45 -msgid "DOMXML extension is not found. It is required for PHP versions below 5." -msgstr "" -"L'estensione DOMXML non è stata trovata. È richiesta per versioni di " -"PHP inferiori alla 5." +#: classes/backend.php:61 +msgid "Shift" +msgstr "Shift" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Argomento dell'aiuto non trovato." + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +#, fuzzy +msgid "Share with Tiny Tiny RSS" +msgstr "Condividi con Tiny Tiny RSS" + +#: classes/handler/public.php:506 +#, fuzzy +msgid "Title:" +msgstr "Titolo:" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:510 +#, fuzzy +msgid "Content:" +msgstr "Contenuto:" + +#: classes/handler/public.php:512 +#, fuzzy +msgid "Labels:" +msgstr "Etichette:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "Gli articoli condivisi appariranno nel notiziario Pubblicati" + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "Condividi" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "Annulla" + +#: classes/handler/public.php:555 +#, fuzzy +msgid "Not logged in" +msgstr "Non connesso" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Nome utente o password sbagliati" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "Notiziario %s già sottoscritto." + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "Notiziario %s sottoscritto." + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "Impossibile sottoscrivere %s." + +#: classes/handler/public.php:675 +#, fuzzy, php-format +msgid "No feeds found in %s." +msgstr "Nessun notiziario trovato in %s." + +#: classes/handler/public.php:678 +#, fuzzy +msgid "Multiple feed URLs found." +msgstr "Trovati più feed" + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "Impossibile sottoscrivere %s.
    Impossibile scaricare l'URL del notiziario." + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "Sottoscrivi il notiziario selezionato" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Modifica opzioni di sottoscrizione" + +#: classes/handler/public.php:762 +#, fuzzy +msgid "Password recovery" +msgstr "Recupera password" + +#: classes/handler/public.php:805 +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "Dovrai fornire un nome utente e una email collegata validi. Verrà spedito un link per resettare la password." + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "Reimposta password" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "Alcuni dei parametri richiesti sono mancanti o scorretti" + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +#, fuzzy +msgid "Go back" +msgstr "Torna indietro" + +#: classes/handler/public.php:878 +#, fuzzy +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] Richiesta di cambio password" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "Mi dispiace, nome utente e email non trovati" + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "Il livello di accesso non è sufficiente per eseguire questo script." + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "Aggiornatore database" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Effettua gli aggiornamenti" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "Visualizza come notiziario RSS" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "Visualizza come RSS" + +#: classes/feeds.php:62 +#, fuzzy, php-format +msgid "Last updated: %s" +msgstr "Ultimo aggiornamento: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "Tutti" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Inverti" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Nessuno" + +#: classes/feeds.php:99 +#, fuzzy +msgid "More..." +msgstr "Altri..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Inverti selezione:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Selezione:" + +#: classes/feeds.php:110 +#, fuzzy +msgid "Set score" +msgstr "Imposta punteggio" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "Archivio" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "Sposta indietro" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "Elimina" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "Inoltra per email" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Notiziario:" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "Notiziario non trovato." + +#: classes/feeds.php:268 +#, fuzzy +msgid "Never" +msgstr "Mai" + +#: classes/feeds.php:393 +#, fuzzy, php-format +msgid "Imported at %s" +msgstr "Importato alle %t" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +#, fuzzy +msgid "mark feed as read" +msgstr "Segna notiziario come letto" + +#: classes/feeds.php:608 +#, fuzzy +msgid "Collapse article" +msgstr "Riduci articoli" -#: opml.php:136 +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "Nessun articolo non letto trovato da visualizzare." + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "Nessun articolo aggiornato trovato da visualizzare." + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "Nessun articolo con stella trovato da visualizzare." + +#: classes/feeds.php:778 +#, fuzzy +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 "Nessun articolo trovato da visualizzare. Si possono assegnare manualmente gli articoli alle etichette (ha effetto su tutti gli articoli selezionati) o usare un filtro." + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "Nessun articolo trovato da visualizzare." + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "Ultimo aggiornamento notiziari alle %s" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "Qualche notiziario ha degli errori di aggiornamento (fare clic per dettagli)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "Nessun notiziario selezionato." + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +#, fuzzy +msgid "Feed or site URL" +msgstr "URL del sito o del notiziario" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "Mettere nella categoria:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "Notiziari disponibili" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "Autenticazione" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "Nome utente" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "Password" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Questo notiziario richiede l'autenticazione" + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "Sottoscrivi" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "Altri notiziari" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "Cerca" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "Notiziari popolari" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "Archivio notiziari" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "Limite:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "Rimuovi" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "Cerca" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "in %s" + +#: classes/feeds.php:1152 +#, fuzzy +msgid "Search syntax" +msgstr "Sintassi di ricerca" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "Articolo non trovato." + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "Etichette per questo articolo (separate da virgole):" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Salva" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "Utility OPML" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "Importazione OPML..." + +#: classes/opml.php:41 msgid "Return to preferences" msgstr "Ritorna alle preferenze" -#: prefs.php:63 prefs.php:123 tt-rss.php:65 -msgid "Loading, please wait..." -msgstr "Caricamento, attendere prego..." +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "Aggiungendo notiziario: %s" -#: prefs.php:70 prefs.php:126 tt-rss.php:73 -msgid "" -"Your browser doesn't support Javascript, which is required\n" -"\t\tfor this application to function properly. Please check your\n" -"\t\tbrowser settings." -msgstr "" -"Il browser non supporta Javascript, che è richiesto\n" -"\t\tda questa applicazione per funzionare correttamente. Controllare\n" -"\t\tle impostazioni del browser." +#: classes/opml.php:282 +#, fuzzy, php-format +msgid "Duplicate feed: %s" +msgstr "Notiziario duplicato: %s" -#: prefs.php:90 tt-rss.php:112 -msgid "Hello," -msgstr "Salve," +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "Aggiunta etichetta %s" -#: prefs.php:92 help/4.php:14 -msgid "Exit preferences" -msgstr "Esci dalle preferenze" +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "Etichetta duplicata: %s" -#: prefs.php:94 tt-rss.php:122 mobile/functions.php:60 -#: mobile/functions.php:234 -msgid "Logout" -msgstr "Esci" +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "Impostazione della voce delle preferenze %s a %s" -#: prefs.php:102 tt-rss.php:196 -msgid "Keyboard shortcuts" -msgstr "Scorciatoie da tastiera" +#: classes/opml.php:343 +#, fuzzy +msgid "Adding filter..." +msgstr "Aggiungendo filtro..." -#: prefs.php:108 tt-rss.php:114 help/3.php:63 help/4.php:8 -msgid "Preferences" -msgstr "Preferenze" +#: classes/opml.php:421 +#, fuzzy, php-format +msgid "Processing category: %s" +msgstr "Elaborando categoria: %s" -#: prefs.php:110 -msgid "Feeds" -msgstr "Notiziari" +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "Caricamento fallito con codice errore %d" -#: prefs.php:112 help/4.php:11 -msgid "Filters" -msgstr "Filtri" +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +#, fuzzy +msgid "Unable to move uploaded file." +msgstr "Non è possibile spostare il file caricato" -#: prefs.php:117 help/4.php:13 -msgid "Users" -msgstr "Utenti" +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "Errore: caricare il file OPML." + +#: classes/opml.php:499 +#, fuzzy +msgid "Error: unable to find moved OPML file." +msgstr "Errore: non trovato il file OPML spostato." + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Errore durante l'analisi del documento." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "Il livello di accesso non è sufficiente per aprire questa scheda." + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "Log degli errori" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "Aggiorna" + +#: classes/pref/system.php:43 +#, fuzzy +msgid "Clear log" +msgstr "Cancella log" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Errore" + +#: classes/pref/system.php:49 +#, fuzzy +msgid "Filename" +msgstr "Nome completo" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Messaggio" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Data" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Utente non trovato" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "Registrato" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Ultimo accesso" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "Numero notiziari sottoscritti" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Notiziari sottoscritti" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Livello di accesso: " + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Opzioni" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "Aggiunto l'utente %s con password %s" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "Impossibile creare l'utente %s" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "L'utente %s esiste già." + +#: classes/pref/users.php:265 +#, fuzzy, php-format +msgid "Changed password of user %s to %s" +msgstr "Modificata password dell'utente %s a %s" + +#: classes/pref/users.php:267 +#, fuzzy, php-format +msgid "Sending new password of user %s to %s" +msgstr "Inviata nuova password dell'utente %s a %s " + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] Notifica di cambio password" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "Seleziona" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Crea utente" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "Dettagli" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Modifica" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Livello di accesso" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "Ultimo accesso" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Fai clic per modificare" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "Nessun utente definito." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "Nessun utente corrispondente trovato." + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Spuntare per attivare il campo" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, fuzzy, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "(%d notiziario)" +msgstr[1] "(%d notiziari)" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "Titolo del notiziario" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "Aggiorna" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Eliminazione articoli:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "Suggerimento: occorre fornire le credenziali di accesso se il proprio notiziario richiede l'autenticazione, eccetto per i notiziari di Twitter." + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "Nascondere dai notiziari popolari" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "Includere nell'email riassunto" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Mostrare sempre le immagini allegate" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "Non includere le immagini" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Memorizzare le immagini localmente" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "Segnare gli articoli aggiornati come non letti" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "Icona" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "Sostituisci" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "Sottoscrivi di nuovo per inviare aggiornamenti" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "Reimposta lo stato di sottoscrizione a PubSubHubbub per i notiziari attivati all'invio." + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Tutto fatto" + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "Notiziari con errori" -#: prefs.php:140 tt-rss.php:99 +#: classes/pref/feeds.php:1279 #, fuzzy -msgid "Fatal Exception" -msgstr "Errore fatale" +msgid "Inactive feeds" +msgstr "Notiziari non attivi" -#: register.php:152 -msgid "New user registrations are administratively disabled." -msgstr "" -"La registrazione di nuovi utenti è disabilitata dall'amministratore." +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "Modifica i notiziari selezionati" -#: register.php:155 register.php:200 register.php:213 register.php:228 -#: register.php:246 register.php:331 register.php:341 register.php:353 -#: update.php:94 update.php:162 modules/pref-feeds.php:954 -msgid "Return to Tiny Tiny RSS" -msgstr "Ritorna a Tiny Tiny RSS" +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "Reimposta ordinamento" -#: register.php:176 -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 "" -"La password temporanea verrà inviata all'email speficiata. Utenti, che non " -"eseguono l'accesso almeno una volta, vengono cancellati automaticamente 24 " -"ore dopo che la password temporanea è stata inviata." +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "Sottoscrivi in gruppo" -#: register.php:182 -msgid "Desired login:" -msgstr "Accesso desiderato:" +#: classes/pref/feeds.php:1327 +#, fuzzy +msgid "Categories" +msgstr "Categorie" -#: register.php:185 -msgid "Check availability" -msgstr "Controlla disponibilità" +#: classes/pref/feeds.php:1330 +#, fuzzy +msgid "Add category" +msgstr "Aggiungi categoria" -#: register.php:187 -msgid "Email:" -msgstr "Email:" +#: classes/pref/feeds.php:1334 +#, fuzzy +msgid "Remove selected" +msgstr "Rimuovere i notiziari selezionati?" -#: register.php:190 -msgid "How much is two plus two:" -msgstr "Quanto fa due più due:" +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "Altre azioni..." -#: register.php:193 -msgid "Submit registration" -msgstr "Invia registrazione" +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "Eliminazione manuale" -#: register.php:211 -msgid "Your registration information is incomplete." -msgstr "Le informazioni di registrazione sono incomplete." +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "Cancella i dati del notiziario" -#: register.php:226 -msgid "Sorry, this username is already taken." -msgstr "Il nome utente esiste già." +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Cambia punteggio degli articoli" -#: register.php:244 -msgid "Registration failed." -msgstr "Registrazione fallita." +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" -#: register.php:328 -msgid "Account created successfully." -msgstr "Utente creato con successo." +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "Usando OML puoi esportare e importare i tuoi notiziari, i filtri, le etichette e le impostazioni di Tiny Tiny RSS" -#: register.php:350 -msgid "New user registrations are currently closed." -msgstr "La registrazione di nuovi utenti è attualmente chiusa." +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "Puoi migrare con OPML solamente il profilo principale e le sue impostazioni" -#: tt-rss.php:118 -msgid "Comments?" -msgstr "Commenti?" +#: classes/pref/feeds.php:1419 +#, fuzzy +msgid "Import my OPML" +msgstr "Importa il mio OPML..." -#: tt-rss.php:131 -msgid "Offline reading" -msgstr "Lettura fuori linea" +#: classes/pref/feeds.php:1423 +#, fuzzy +msgid "Filename:" +msgstr "Nome del file:" -#: tt-rss.php:138 -msgid "Cancel synchronization" -msgstr "Annulla sincronizzazione" +#: classes/pref/feeds.php:1425 +#, fuzzy +msgid "Include settings" +msgstr "Includi le impostazioni" -#: tt-rss.php:141 -msgid "Synchronize" -msgstr "Sincronizza" +#: classes/pref/feeds.php:1429 +#, fuzzy +msgid "Export OPML" +msgstr "Esportazione OPML" -#: tt-rss.php:143 -msgid "Remove stored data" -msgstr "Rimuovi dati salvati" +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "Il tuo OPML può essere reso pubblico e può essere sottoscritto da chiunque conosca l'URL seguente." -#: tt-rss.php:145 -msgid "Go offline" -msgstr "Vai «fuori linea»" +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "L%apos;OPML pubblicato non contiene le impostazioni di Tiny Tiny RSS, i notiziari che richiedono l'autenticazione o quelli nascosti dai notiziari popolari" -#: tt-rss.php:151 -msgid "New version of Tiny Tiny RSS is available!" -msgstr "È disponibile la nuova versione di Tiny Tiny RSS." +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "URL OPML pubblico" -#: tt-rss.php:158 -msgid "Go online" -msgstr "Vai «in linea»" +#: classes/pref/feeds.php:1438 +#, fuzzy +msgid "Display published OPML URL" +msgstr "Mostra URL OPML pubblico" -#: tt-rss.php:169 tt-rss.js:79 -msgid "tag cloud" -msgstr "nuvola etichette" +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Integrazione con Firefox" -#: tt-rss.php:179 -msgid "Search..." -msgstr "Cerca..." +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "Questa istanza di Tiny Tiny RSS può essere impostata come lettore di notiziari in Firefox facendo clic sul collegamento qui sotto." -#: tt-rss.php:180 -msgid "Feed actions:" -msgstr "Azioni notiziari:" +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "Clicca qui per registrare questo sito come lettore di notiziari." -#: tt-rss.php:181 -msgid "Subscribe to feed..." -msgstr "Sottoscrivi il notiziario..." +#: classes/pref/feeds.php:1464 +#, fuzzy +msgid "Published & shared articles / Generated feeds" +msgstr "Articoli pubblicati e condivisi / notiziari generati" -#: tt-rss.php:182 -msgid "Edit this feed..." -msgstr "Modifica questo notiziario..." +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "Gli articoli pubblicati vengono esportati come un notiziario pubblico e possono essere sottoscritti da chiunque conosca l'URL specificato qui sotto." -#: tt-rss.php:183 -msgid "Rescore feed" -msgstr "Cambia punteggio notiziario" +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "Visualizza URL" -#: tt-rss.php:184 modules/pref-feeds.php:465 modules/pref-feeds.php:1193 -msgid "Unsubscribe" -msgstr "Annulla sottoscrizione" +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "Cancella tutti gli URL generati" -#: tt-rss.php:186 -msgid "All feeds:" -msgstr "Tutti i notiziari:" +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "Questi notiziari non sono stati aggiornati con nuovi contenuti da 3 mesi (prima i più vecchi):" -#: tt-rss.php:188 help/3.php:44 -msgid "(Un)hide read feeds" -msgstr "Visualizza/Nascondi notiziari letti" +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "Fare clic per modificare il notiziario" -#: tt-rss.php:190 -msgid "Other actions:" -msgstr "Altre azioni:" +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "Annulla la sottoscrizione ai notiziari selezionati" -#: tt-rss.php:193 -msgid "Create filter..." -msgstr "Crea filtro..." +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "Inserisci un indirizzo valido di notiziario per riga (non viene fatta una ricerca automatica)" -#: tt-rss.php:194 -msgid "Reset UI layout" -msgstr "Reimposta disposizione UI" +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "Notiziari da sottoscrivere, uno per linea" -#: tt-rss.php:195 -msgid "Reset category order" -msgstr "Reimposta ordine categoria" +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "I notiziari richiedono autenticazione" -#: tt-rss.php:205 -msgid "Collapse feedlist" -msgstr "Contrai elenco notiziari" +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "Articoli che corrispondono a questo filtro:" -#: tt-rss.php:208 +#: classes/pref/filters.php:185 #, fuzzy -msgid "Show articles" -msgstr "Articoli salvati" +msgid "No recent articles matching this filter have been found." +msgstr "Nessun articolo trovato che corrisponde a questo filtro." -#: tt-rss.php:210 -msgid "Adaptive" -msgstr "Adattivo" +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +#, fuzzy +msgid "(inverse)" +msgstr "(inverso)" -#: tt-rss.php:211 -msgid "All Articles" -msgstr "Tutti gli articoli" +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "%s su %s in %s %s" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Didascalia" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "Corrisponde" -#: tt-rss.php:214 -msgid "Ignore Scoring" -msgstr "Ignora punteggio" +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "Aggiungi" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +#, fuzzy +msgid "Apply actions" +msgstr "Applica azioni" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Attivato" -#: tt-rss.php:215 modules/pref-feeds.php:1316 modules/pref-feeds.php:1377 -msgid "Updated" -msgstr "Aggiornato" +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "Corrispondenza a ogni regola" -#: tt-rss.php:218 +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 #, fuzzy -msgid "Sort articles" -msgstr "Articoli salvati" +msgid "Inverse matching" +msgstr "Corrispondenza inversa" -#: tt-rss.php:221 modules/popup-dialog.php:462 modules/pref-filters.php:51 -#: modules/pref-filters.php:469 -msgid "Date" -msgstr "Data" +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "Prova" -#: tt-rss.php:223 -msgid "Score" -msgstr "Punteggio" +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "Combina" -#: tt-rss.php:227 modules/pref-feeds.php:296 modules/pref-feeds.php:524 -msgid "Update" -msgstr "Aggiorna" +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Crea" -#: tt-rss.php:238 tt-rss.php:252 -msgid "No feed selected." -msgstr "Nessun notiziario selezionato." +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "Corrispondenza inversa delle espressioni regolari" -#: tt-rss.php:242 -msgid "Drag me to resize panels" -msgstr "Trascina per ridimensionare i riquadri" +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "al campo" -#: update.php:19 -msgid "Your access level is insufficient to run this script." -msgstr "Il livello di accesso non è sufficiente per eseguire questo script." +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "in" -#: update.php:44 -msgid "Database Updater" -msgstr "Aggiornatore database" +#: classes/pref/filters.php:947 +#, fuzzy +msgid "Wiki: Filters" +msgstr "Wiki: Filtri" + +#: classes/pref/filters.php:952 +#, fuzzy +msgid "Save rule" +msgstr "Salva regola" -#: update.php:85 -msgid "Could not update database" -msgstr "Impossibile aggiornare il database" +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "Aggiungi regola" -#: update.php:88 -msgid "Could not find necessary schema file, need version:" -msgstr "Impossibile trovare il file schema necessario; serve la versione:" +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Esegui azione" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "con parametri:" -#: update.php:89 -msgid ", found: " -msgstr ", trovato: " +#: classes/pref/filters.php:1019 +#, fuzzy +msgid "Save action" +msgstr "Salva azione" -#: update.php:92 -msgid "Tiny Tiny RSS database is up to date." -msgstr "Il database di Tiny Tiny RSS è aggiornato." +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +#, fuzzy +msgid "Add action" +msgstr "Aggiungi azione" -#: update.php:102 -msgid "Please backup your database before proceeding." -msgstr "Fare il backup del database prima di procedere." +#: classes/pref/filters.php:1042 +#, fuzzy +msgid "[No caption]" +msgstr "[Nessuna didascalia]" -#: update.php:104 +#: classes/pref/filters.php:1044 #, php-format -msgid "" -"Your Tiny Tiny RSS database needs update to the latest version (%d to " -"%d)." -msgstr "" -"Il database di Tiny Tiny RSS deve essere aggiornato all'ultima versione " -"(%d a %d)." +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "%s (%d regola)" +msgstr[1] "%s (%d regole)" -#: update.php:118 -msgid "Perform updates" -msgstr "Effettuare gli aggiornamenti" +#: classes/pref/filters.php:1059 +#, fuzzy, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "%s (+%d azione)" +msgstr[1] "%s (+%d azioni)" -#: update.php:123 -msgid "Performing updates..." -msgstr "Esecuzione aggiornamenti..." +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "Colori" -#: update.php:129 +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "Primo piano:" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "Sfondo:" + +#: classes/pref/labels.php:232 #, php-format -msgid "Updating to version %d..." -msgstr "Aggiornamento alla versione %d..." +msgid "Created label %s" +msgstr "Etichetta %s creata" -#: update.php:142 -msgid "Checking version... " -msgstr "Controllo della versione..." +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Cancella colori" -#: update.php:148 -msgid "OK!" -msgstr "OK" +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Generale" -#: update.php:150 -msgid "ERROR!" -msgstr "ERRORE" +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Interfaccia" -#: update.php:158 -#, php-format -msgid "" -"Finished. Performed %d update(s) up to schema\n" -"\t\t\tversion %d." -msgstr "" -"Fine. Eseguito/i %d aggiornamento/i fino\n" -"\t\t\tallo schema versione %d." +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Avanzate" -#: modules/help.php:6 -msgid "Help" -msgstr "Aiuto" +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "Digest" -#: modules/help.php:17 -msgid "Help topic not found." -msgstr "Argomento dell'aiuto non trovato." +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "Permetti articoli duplicati" -#: modules/opml_domdoc.php:52 modules/opml_domxml.php:54 -#, fuzzy, php-format -msgid "
  • Adding category %s.
  • " -msgstr "Aggiunta della categoria %s." +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Etichette in lista nera" -#: modules/opml_domdoc.php:101 modules/opml_domxml.php:103 +#: classes/pref/prefs.php:26 #, fuzzy -msgid "is already imported." -msgstr "Già importato." +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "Quando è attiva l'individuazione automatica delle etichette negli articoli, queste etichette non saranno applicate (elenco separato da virgola)." + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "Segnare automaticamente gli articoli come letti" -#: modules/opml_domdoc.php:121 modules/opml_domxml.php:122 +#: classes/pref/prefs.php:27 #, fuzzy -msgid "OK" -msgstr "OK" +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "Attivando questa ozione, gli articoli vengono segnati automaticamente come letti quando si scorre l'elenco articoli." -#: modules/opml_domdoc.php:130 modules/opml_domxml.php:134 -msgid "Error while parsing document." -msgstr "Errore durante l'analisi del documento." +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "Espandere automaticamente gli articoli nella modalità combinata" -#: modules/opml_domdoc.php:134 modules/opml_domxml.php:138 -msgid "Error: please upload OPML file." -msgstr "Errore: caricare il file OPML." +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "Visualizzazione combinata di notiziari" -#: modules/opml_domxml.php:131 -msgid "Error: can't find body element." -msgstr "Errore: impossibile trovare l'elemento body" +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Visualizza un elenco espanso di articoli di notiziario, invece di visualizzazioni separate per titolo e contenuto dell'articolo" -#: modules/popup-dialog.php:7 -#, fuzzy -msgid "OPML Import" -msgstr "Importa" +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "Richiedere conferma segnatura del notiziario come letto" -#: modules/popup-dialog.php:34 -#, fuzzy -msgid "Importing using DOMXML." -msgstr "Importazione OPML (utilizzando l'estensione DOMXML)..." +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "Numero di articoli da visualizzare alla volta" -#: modules/popup-dialog.php:40 +#: classes/pref/prefs.php:32 #, fuzzy -msgid "Importing using DOMDocument." -msgstr "Importazione OPML (utilizzando l'estensione DOMDocument)..." +msgid "Default feed update interval" +msgstr "Intervallo predefinito di aggiornamento notiziari" -#: modules/popup-dialog.php:68 -msgid "Settings Profiles" -msgstr "" +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "Intevallo più corto in cui i notiziari verranno controllati per aggiornamenti, indipendentemente dal metodo" -#: modules/popup-dialog.php:75 -#, fuzzy -msgid "Create profile" -msgstr "Crea filtro" +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "Segna gli articoli del digest email come letti" -#: modules/popup-dialog.php:100 modules/popup-dialog.php:128 +#: classes/pref/prefs.php:34 #, fuzzy -msgid "(active)" -msgstr "Adattivo" +msgid "Enable e-mail digest" +msgstr "Attiva email digest" -#: modules/popup-dialog.php:148 modules/popup-dialog.php:350 -#: modules/pref-feeds.php:455 modules/pref-feeds.php:1136 -#: modules/pref-filters.php:153 modules/pref-filters.php:321 -#: modules/pref-labels.php:140 modules/pref-users.php:378 -msgid "Remove" -msgstr "Rimuovi" +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Questa opzione attiva l'invio di un digest giornaliero dei sommari nuovi (e non letti) all'indirizzo email configurato" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "Prova a mandare i digest più o meno a quest'ora" -#: modules/popup-dialog.php:150 +#: classes/pref/prefs.php:35 #, fuzzy -msgid "Activate" -msgstr "Adattivo" +msgid "Uses UTC timezone" +msgstr "Usa ora UTC" -#: modules/popup-dialog.php:163 -msgid "Published Articles" -msgstr "Articoli pubblicati" +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "Attiva l'accesso alle API" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "Permetti a client esterni di accedere a questo account attraverso le API" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Attivare le categorie dei notiziari" + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "Ordinare i notiziari per numero di articoli non letti" -#: modules/popup-dialog.php:168 +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Età massima degli articoli nuovi (in ore)" + +#: classes/pref/prefs.php:40 #, fuzzy -msgid "Your Published articles feed URL is:" -msgstr "Collegamento al notiziario degli articoli pubblicati." +msgid "Hide feeds with no unread articles" +msgstr "Nascondere i notiziari senza articoli non letti" -#: modules/popup-dialog.php:177 +#: classes/pref/prefs.php:41 #, fuzzy -msgid "Generate new URL" -msgstr "Notiziario generato" +msgid "Show special feeds when hiding read feeds" +msgstr "Mostrare i notiziari speciali quando vengono nascosti i notiziari letti" -#: modules/popup-dialog.php:190 -msgid "Notice" -msgstr "Notifica" +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "Formato data lunga" -#: modules/popup-dialog.php:196 -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 "" -"Il demone per l'aggiornamento è abilitato nella configurazione, ma il " -"processo del demone non è in esecuzione. Questo impedisce l'" -"aggiornameto di tutti i notiziari. Avviare il processo del demone o " -"contattare il proprietario dell'istanza." +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "La sintassi usata è identica alla funzione date() di PHP" -#: modules/popup-dialog.php:200 modules/popup-dialog.php:220 -msgid "Last update:" -msgstr "Ultimo aggiornamento:" +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "Su lettura passare al prossimo notiziario" -#: modules/popup-dialog.php:208 -msgid "" -"You are running the latest version of Tiny Tiny RSS. The fact that you are " -"seeing this dialog is probably a bug." -msgstr "" -"Si sta eseguendo l'ultima versione di Tiny Tiny RSS. Il motivo per il " -"quale si vede questo dialogo è probabilmente un errore." +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Apri automaticamente il notiziario successivo quando ne segni uno come letto" -#: modules/popup-dialog.php:216 -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 "" -"Il demone di aggiornamento sta impiegando troppo tempo a eseguire l'" -"aggiornamento del notiziario. Questo potrebbe indicare un problema come un " -"crash o uno stallo. Controllare il processo del demone o contattare il " -"proprietario dell'istanza." +#: classes/pref/prefs.php:44 +#, fuzzy +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Eliminare gli articoli dopo questo numero di giorni (0 - disattivato)" -#: modules/popup-dialog.php:239 -msgid "Subscribe to Feed" -msgstr "Sottoscrivi il notiziario" +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "Eliminare articoli non letti" -#: modules/popup-dialog.php:248 modules/pref-feeds.php:197 -#: modules/pref-feeds.php:488 modules/pref-filters.php:407 -msgid "Feed" -msgstr "Notiziario" +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "Invertire l'ordine dei titoli (prima i più vecchi)" -#: modules/popup-dialog.php:251 modules/pref-feeds.php:213 -#: modules/pref-feeds.php:502 -msgid "URL:" -msgstr "URL:" +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "Formato data corta" -#: modules/popup-dialog.php:260 modules/pref-feeds.php:225 -#: modules/pref-feeds.php:514 -msgid "Place in category:" -msgstr "Mettere nella categoria:" +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "Mostrare l'anteprima del contenuto nell'elenco dei titoli" -#: modules/popup-dialog.php:268 modules/pref-feeds.php:332 -#: modules/pref-feeds.php:558 modules/pref-prefs.php:235 -#: modules/pref-users.php:142 -msgid "Authentication" -msgstr "Autenticazione" +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "Ordinare i titoli per data del notiziario" -#: modules/popup-dialog.php:283 -msgid "This feed requires authentication." -msgstr "Questo notiziario richiede l'autenticazione" +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "Usare per l'ordinamento dei titoli la data specificata dal notiziario invece della data di importazione in locale." -#: modules/popup-dialog.php:289 modules/popup-dialog.php:349 -msgid "Subscribe" -msgstr "Sottoscrivi" +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "Accesso con un certificato SSL" -#: modules/popup-dialog.php:290 +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Fare clic per registrare il certificato SSL client su tt-rss" + +#: classes/pref/prefs.php:51 #, fuzzy -msgid "More feeds" -msgstr "Altri notiziari" +msgid "Do not embed images in articles" +msgstr "Non mostrare le immagini negli articoli" -#: modules/popup-dialog.php:291 modules/popup-dialog.php:351 -#: modules/popup-dialog.php:425 modules/popup-dialog.php:543 -#: modules/popup-dialog.php:612 modules/pref-feeds.php:468 -#: modules/pref-feeds.php:623 modules/pref-filters.php:160 -#: modules/pref-users.php:181 -msgid "Cancel" -msgstr "Annulla" +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "Togliere le etichette non sicure dagli articoli" -#: modules/popup-dialog.php:298 -msgid "Feed Browser" -msgstr "Browser notiziari" +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Toglie le tag HTML meno comuni durante la lettura degli articoli." -#: modules/popup-dialog.php:317 modules/popup-dialog.php:359 -#: modules/popup-dialog.php:424 modules/pref-feeds.php:1177 -#: modules/pref-filters.php:308 modules/pref-labels.php:131 -#: modules/pref-users.php:361 -msgid "Search" -msgstr "Cerca" +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "Personalizza il foglio di stile" -#: modules/popup-dialog.php:321 -#, fuzzy -msgid "Popular feeds" -msgstr "visualizza notiziari" +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "Personalizza a piacimento il foglio di stile CSS" -#: modules/popup-dialog.php:322 +#: classes/pref/prefs.php:54 #, fuzzy -msgid "Feed archive" -msgstr "Azioni notiziari" +msgid "Time zone" +msgstr "Fuso orario" -#: modules/popup-dialog.php:325 -#, fuzzy -msgid "limit:" -msgstr "Limite:" +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "Raggruppare i titoli in notiziari virtuali" -#: modules/popup-dialog.php:371 -msgid "Look for" -msgstr "" +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "Notiziari speciali, etichette e categorie sono raccolte in base dal notiziario da cui provengono" -#: modules/popup-dialog.php:378 +#: classes/pref/prefs.php:56 #, fuzzy -msgid "match on" -msgstr "corrisponde a:" +msgid "Language" +msgstr "Lingua" -#: modules/popup-dialog.php:383 -msgid "Title or content" -msgstr "Titolo o contenuto" +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "Tema" -#: modules/popup-dialog.php:388 -msgid "Limit search to:" -msgstr "Limitare la ricerca a:" +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "Scegliere uno dei temi CSS disponibili" -#: modules/popup-dialog.php:404 -msgid "This feed" -msgstr "Questo notiziario" +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "La configurazione è stata salvata." -#: modules/popup-dialog.php:438 -msgid "Create Filter" -msgstr "Crea filtro" +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "I dati personali sono stati salvati." -#: modules/popup-dialog.php:457 modules/pref-filters.php:42 -#: modules/pref-filters.php:406 -msgid "Match" -msgstr "Corrisponde" +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "Le preferenze sono ora impostate ai valori predefiniti" -#: modules/popup-dialog.php:465 modules/pref-filters.php:54 -#: modules/pref-filters.php:441 -msgid "before" -msgstr "prima" +#: classes/pref/prefs.php:183 +#, fuzzy +msgid "Personal data / Authentication" +msgstr "Dati personali / Autenticazione" -#: modules/popup-dialog.php:466 modules/pref-filters.php:55 -#: modules/pref-filters.php:442 -msgid "after" -msgstr "dopo" +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "Dati personali" -#: modules/popup-dialog.php:478 modules/pref-filters.php:68 -msgid "Check it" -msgstr "Controllalo" +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "Nome completo" -#: modules/popup-dialog.php:481 modules/pref-filters.php:71 -msgid "on field" -msgstr "al campo" +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "E-mail" -#: modules/popup-dialog.php:487 modules/pref-filters.php:77 -msgid "in" -msgstr "in" +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Livello di accesso" -#: modules/popup-dialog.php:492 modules/pref-filters.php:82 -msgid "Perform Action" -msgstr "Esegui azione" +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Salva dati" -#: modules/popup-dialog.php:509 modules/pref-filters.php:102 -msgid "with parameters:" -msgstr "con parametri:" +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "La password è impostata al valore predefinito, cambiarla." -#: modules/popup-dialog.php:522 modules/pref-feeds.php:355 -#: modules/pref-feeds.php:576 modules/pref-filters.php:121 -#: modules/pref-users.php:164 -msgid "Options" -msgstr "Opzioni" +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "Cambiare la password attuale disabiliterà OTP." + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Vecchia password" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Nuova password" -#: modules/popup-dialog.php:528 modules/pref-filters.php:133 -msgid "Enabled" -msgstr "Abilitato" +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Conferma password" -#: modules/popup-dialog.php:531 modules/pref-filters.php:142 -msgid "Inverse match" -msgstr "Corrispondenza inversa" +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "Cambia password" -#: modules/popup-dialog.php:541 -msgid "Create" -msgstr "Crea" +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "Password usa e getta(OTP) / Autenticatore" -#: modules/popup-dialog.php:555 -msgid "Update Errors" -msgstr "Errori di aggiornamento" +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "Le password usa e getta (OTP) sono attualmente attive. Inserisci la password attuale per disattivarle." -#: modules/popup-dialog.php:558 -msgid "These feeds have not been updated because of errors:" -msgstr "Questi notiziari non sono stati aggiornati a causa di errori:" +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +#, fuzzy +msgid "Enter your password" +msgstr "Inserire la password" -#: modules/popup-dialog.php:584 -msgid "Edit Tags" -msgstr "Modifica etichette" +#: classes/pref/prefs.php:358 +#, fuzzy +msgid "Disable OTP" +msgstr "Disattivare password usa e getta (OTP)" -#: modules/popup-dialog.php:589 -msgid "Tags for this article (separated by commas):" -msgstr "Etichette per questo articolo (separate da virgole):" +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "Avrai bisogno di un Autenticatore compatibile per usare le OTP. Cambiare la tua password disabiliterà OTP automaticamente" -#: modules/popup-dialog.php:611 modules/pref-feeds.php:467 -#: modules/pref-feeds.php:621 modules/pref-filters.php:157 -#: modules/pref-users.php:179 -msgid "Save" -msgstr "Salva" +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "Scansiona questo codice con la tua app Autenticatore:" -#: modules/popup-dialog.php:620 +#: classes/pref/prefs.php:403 #, fuzzy -msgid "Tag Cloud" -msgstr "Nuvola etichette" - -#: modules/popup-dialog.php:623 -msgid "Showing most popular tags " -msgstr "Visualizza le etichette più popolari" +msgid "Enter the generated one time password" +msgstr "Inserire la password usa e getta creata" -#: modules/popup-dialog.php:624 +#: classes/pref/prefs.php:417 #, fuzzy -msgid "more tags" -msgstr "nessuna etichetta" +msgid "Enable OTP" +msgstr "Attiva OTP" -#: modules/pref-feeds.php:4 -msgid "Check to enable field" -msgstr "Spuntare per abilitare il campo" +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "Le funzioni GD di PHP sono richieste per il supporto OTP" -#: modules/pref-feeds.php:187 -msgid "Feed Editor" -msgstr "Editor notiziari" +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "Alcune preferenze sono disponibili solo nel profilo di default" -#: modules/pref-feeds.php:242 -msgid "Link to feed:" -msgstr "Collega al notiziario:" +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "Personalizza" -#: modules/pref-feeds.php:259 -msgid "Not linked" -msgstr "Non collegato" +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "Registro" -#: modules/pref-feeds.php:310 modules/pref-feeds.php:537 -msgid "using" -msgstr "utilizzando" +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "Cancella" -#: modules/pref-feeds.php:322 modules/pref-feeds.php:549 -msgid "Article purging:" -msgstr "Eliminazione articoli:" +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "Ora attuale del server: %s (UTC)" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Salva configurazione" -#: modules/pref-feeds.php:369 modules/pref-feeds.php:582 +#: classes/pref/prefs.php:673 #, fuzzy -msgid "Hide from Popular feeds" -msgstr "Nascondere nell'elenco dei notiziari" +msgid "Save and exit preferences" +msgstr "Salva e esci dalle preferenze" -#: modules/pref-feeds.php:380 modules/pref-feeds.php:587 -msgid "Right-to-left content" -msgstr "Contenuto da destra a sinistra" +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "Gestisci profili" -#: modules/pref-feeds.php:392 modules/pref-feeds.php:593 -msgid "Include in e-mail digest" -msgstr "Includere nell'email riassunto" +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "Reimposta ai valori predefiniti" -#: modules/pref-feeds.php:405 modules/pref-feeds.php:599 -msgid "Always display image attachments" -msgstr "" +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "Plugin" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "Ricaricare Tiny Tiny Rss per attivare le modifiche ai plugin" + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "Scarica altri plugin dai forum o dalla wiki di tt-rss.org." + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "Plugin di sistema" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "Plugin" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "Descrizione" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "Versione" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "Autore" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "Ulteriori informazioni" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +#, fuzzy +msgid "Clear data" +msgstr "Cancella i dati" -#: modules/pref-feeds.php:427 modules/pref-feeds.php:607 -msgid "Cache images locally" -msgstr "Memorizzare le immagini localmente" +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "Plugin dell'utente" -#: modules/pref-feeds.php:439 +#: classes/pref/prefs.php:855 #, fuzzy -msgid "Icon" -msgstr "Azione" - -#: modules/pref-feeds.php:453 -msgid "Replace" -msgstr "" +msgid "Enable selected plugins" +msgstr "Attiva i plugin selezionati" -#: modules/pref-feeds.php:478 -msgid "Multiple Feed Editor" -msgstr "Editor di notiziari multipli" +#: classes/pref/prefs.php:923 +#, fuzzy +msgid "Incorrect one time password" +msgstr "Password usa e getta sbagliata" -#: modules/pref-feeds.php:842 modules/pref-feeds.php:889 -msgid "All done." -msgstr "Fatto tutto." +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +#, fuzzy +msgid "Incorrect password" +msgstr "Password sbagliata" -#: modules/pref-feeds.php:920 +#: classes/pref/prefs.php:968 #, php-format -msgid "Subscribed to %s." -msgstr "Sottoscrizione avvenuta a %s." +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "Si possono cambiare i colori, i caratteri e la disposizione del tema correntemente selezionato attraverso le dichiarazioni CSS personalizzate. Questo file può essere usato come esempio." -#: modules/pref-feeds.php:923 -#, fuzzy, php-format -msgid "Could not subscribe to %s." -msgstr "Si ha già una sottoscrizione a %s." +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "Crea profilo" -#: modules/pref-feeds.php:926 -#, php-format -msgid "Already subscribed to %s." -msgstr "Si ha già una sottoscrizione a %s." +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(attivo)" -#: modules/pref-feeds.php:949 -msgid "Edit subscription options" -msgstr "Modifica opzioni di sottoscrizione" +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "Rimuovi i profili selezionati" -#: modules/pref-feeds.php:1033 -msgid "Category editor" -msgstr "Editor categorie" +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "Attiva profilo" -#: modules/pref-feeds.php:1056 -#, php-format -msgid "Category $%s already exists in the database." -msgstr "La categoria %s esiste già nel database." +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "Se sono stati importati etichette e/o filtri, ricaricare le preferenze per visualizzare i nuovi dati" -#: modules/pref-feeds.php:1077 -msgid "Create category" -msgstr "Crea categoria" +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "L'URL OPML pubblico è:" + +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "Genera nuovo URL" -#: modules/pref-feeds.php:1130 -msgid "No feed categories defined." -msgstr "Nessuna categoria notiziari definita." +#: 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 "Il demone per l'aggiornamento è attivato nella configurazione, ma il processo del demone non è in esecuzione. Questo impedisce l'aggiornameto di tutti i notiziari. Avviare il processo del demone o contattare il proprietario dell'istanza." -#: modules/pref-feeds.php:1160 -msgid "Some feeds have update errors (click for details)" -msgstr "" -"Qualche notiziario ha degli errori di aggiornamento (fare clic per dettagli)" +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "Ultimo aggiornamento:" -#: modules/pref-feeds.php:1181 help/3.php:45 help/4.php:22 -msgid "Subscribe to feed" -msgstr "Sottoscrivi il notiziario" +#: 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 "Il demone di aggiornamento sta impiegando troppo tempo a eseguire l'aggiornamento del notiziario. Questo potrebbe indicare un problema come un crash o uno stallo. Controllare il processo del demone o contattare il proprietario dell'istanza." + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "È possibile vedere questo notiziario come RSS usando il seguente URL:" -#: modules/pref-feeds.php:1184 +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "Data salvata (%s, %d)" + +#: plugins/af_psql_trgm/init.php:112 #, fuzzy -msgid "Edit feeds" -msgstr "Modifica notiziario" +msgid "Show related articles" +msgstr "Mostra articoli collegati" -#: modules/pref-feeds.php:1189 -msgid "Edit categories" -msgstr "Modifica categorie" +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +#, fuzzy +msgid "Mark similar articles as read" +msgstr "Segnare tutti gli articoli simili come letti" -#: modules/pref-feeds.php:1198 +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 #, fuzzy -msgid "More actions..." -msgstr "Azioni..." +msgid "Global settings" +msgstr "Impostazioni globali" -#: modules/pref-feeds.php:1202 -msgid "Manual purge" -msgstr "Eliminazione manuale" +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "Somiglianza minima:" -#: modules/pref-feeds.php:1206 -msgid "Clear feed data" -msgstr "Pulisci i dati del notiziario" +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "Lunghezza del titolo minima:" -#: modules/pref-feeds.php:1207 modules/pref-filters.php:324 -msgid "Rescore articles" -msgstr "Cambio punteggio degli articoli" +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "Attiva per tutti i notiziari:" -#: modules/pref-feeds.php:1296 -msgid "Show last article times" -msgstr "Mostrare l'ora dell'ultimo articolo" +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "Attualmente attivo per (clicca per modificare):" -#: modules/pref-feeds.php:1313 modules/pref-feeds.php:1373 -msgid "Last Article" -msgstr "Ultimo articolo" +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "Somiglianza (pg_trgm)" -#: modules/pref-feeds.php:1398 modules/pref-filters.php:487 -#: modules/pref-users.php:467 -msgid "Click to edit" -msgstr "Fare clic per modificare" +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "Notiziari supportati da af_comics" -#: modules/pref-feeds.php:1412 -#, php-format -msgid "(linked to %s)" -msgstr "(collegato a %s)" +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "I seguenti fumetti sono attualmente supportati:" + +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "Modifica note articolo" -#: modules/pref-feeds.php:1439 +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "Nessun file caricato." + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "Tutto fatto. %d articoli importati su %d." + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "Il documento ha un formato scorretto." + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "Importa articoli preferiti o condivisi da Google Reader" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "Incolla il tuo starred.json o shared.json nel box sotto." + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "Importa i miei articoli preferiti" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[Inoltrato]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "Articoli multipli" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "Clicca il link seguente per aprire il tuo client di posta:" + +#: plugins/mailto/init.php:75 #, fuzzy -msgid "You don't have any subscribed feeds." -msgstr "Impossibile annullare la sottoscrizione alla categoria." +msgid "Forward selected article(s) by email." +msgstr "Inoltra l'articolo per email" + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "Puoi modificare l'articolo nel tuo client di posta prima di inviarlo." -#: modules/pref-feeds.php:1441 +#: plugins/mailto/init.php:83 #, fuzzy -msgid "No matching feeds found." -msgstr "Nessun filtro trovato che corrisponde." +msgid "Close this dialog" +msgstr "Chiudi questa finestra" -#: modules/pref-feeds.php:1447 -msgid "OPML" -msgstr "OPML" +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "Importa e esporta" -#: modules/pref-feeds.php:1470 -msgid "Import" -msgstr "Importa" +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "Puoi esportare e importare i tuoi articoli preferiti e archiviati per backup o per portarli da un'installazione di Tiny Tiny RSS all'altra" -#: modules/pref-feeds.php:1475 -msgid "Export OPML" -msgstr "Esporta OPML" +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "Esporta i miei dati" -#: modules/pref-feeds.php:1478 -msgid "Firefox Integration" -msgstr "Integrazione con Firefox" +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Importa" -#: modules/pref-feeds.php:1480 -msgid "" -"This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the " -"link below." -msgstr "" -"Questo sito di Tiny Tiny RSS può essere utilizzato come lettore di notiziari " -"di Firefox facendo clic sul collegamento qui sotto." +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "Import fallito: versione dello schema database non corretta" -#: modules/pref-feeds.php:1487 -msgid "Click here to register this site as a feed reader." -msgstr "Fare clic qui per registrare questo sito come lettore di notiziari." +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "Import fallito: formato documento sconosciuto" -#: modules/pref-feeds.php:1498 -msgid "" -"Published articles are exported as a public RSS feed and can be subscribed " -"by anyone who knows the URL specified below." -msgstr "" -"Gli articoli pubblicati vengono esportati come un notiziario pubblico e " -"possono essere sottoscritti da chiunque conosca l'URL specificato qui " -"sotto." +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "Finito: " -#: modules/pref-feeds.php:1501 -#, fuzzy -msgid "Display URL" -msgstr "visualizza etichette" +#: plugins/import_export/init.php:388 +#, fuzzy, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "%d articolo elaborato" +msgstr[1] "%d articoli elaborati" -#: modules/pref-feeds.php:1604 +#: plugins/import_export/init.php:389 #, fuzzy, php-format -msgid "%d archived articles" -msgstr "Articoli con stella" +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "%d importato" +msgstr[1] "%d importati" -#: modules/pref-feeds.php:1633 -msgid "No feeds found." -msgstr "Nessun notiziario trovato." +#: plugins/import_export/init.php:390 +#, fuzzy, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "%d notiziario creato." +msgstr[1] "%d notiziari creati." -#: modules/pref-filters.php:23 -msgid "Filter Editor" -msgstr "Editor filtri" +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "Documento XML non caricato" -#: modules/pref-filters.php:212 -#, php-format -msgid "Saved filter %s" -msgstr "Filtro %s salvato" +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "Prepara dati" -#: modules/pref-filters.php:266 -#, php-format -msgid "Created filter %s" -msgstr "Filtro %s creato" +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "Non sicuro per luoghi di lavoro (clicca per attivare)" -#: modules/pref-filters.php:315 help/3.php:31 help/4.php:25 -msgid "Create filter" -msgstr "Crea filtro" +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "Plugin NSFW" -#: modules/pref-filters.php:318 modules/pref-users.php:376 -msgid "Edit" -msgstr "Modifica" +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "Tag da considerare NSFW (divisi da virgole)" -#: modules/pref-filters.php:408 -msgid "Field" -msgstr "Campo" +#: plugins/nsfw/init.php:100 +#, fuzzy +msgid "Configuration saved." +msgstr "La configurazione è stata salvata." -#: modules/pref-filters.php:409 -msgid "Params" -msgstr "Parametri" +#: plugins/auth_internal/init.php:65 +#, fuzzy +msgid "Please enter your one time password:" +msgstr "Inserisci la password usa e getta" -#: modules/pref-filters.php:476 -msgid "(Disabled)" -msgstr "(disabilitato)" +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "La password è stata cambiata" -#: modules/pref-filters.php:492 -msgid "(Inverse)" -msgstr "(inverso)" +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "La vecchia password non è corretta." -#: modules/pref-filters.php:512 -msgid "No filters defined." -msgstr "Nessun filtro definito." +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "Chiudi articolo" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "Indirizzi email salvati" + +#: plugins/mail/init.php:34 +msgid "Mail plugin" +msgstr "Plugin Mail" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "Puoi inserire gli indirizzi email predefiniti qui (separati da virgole):" + +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "A:" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "Oggetto:" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "Invia email" + +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "Collegato" + +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" +msgstr "Istanza" + +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "URL dell'istanza" + +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "Chiave di accesso:" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "Chiave di accesso" + +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "Usare una sola chiave di accesso per entrambe le istanze collegate." + +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "Genera nuova chiave" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "Collega istanza" + +#: 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 "Impossibile connettere altre istanze di Tiny Tiny RSS a questa per condividere i notiziari popolari. Collegare questa istanza di Tiny Tiny RSS usando questo URL:" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "Ultimo connesso" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "Stato" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "Notiziari memorizzati" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "Crea collegamento" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "Impostazioni di af_redditimgur" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "Estrai il contenuto mancante usando Readability" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "La configurazione è stata salvata." -#: modules/pref-filters.php:514 -msgid "No matching filters found." -msgstr "Nessun filtro trovato che corrisponde." +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "Impostazioni di af_readability" -#: modules/pref-labels.php:102 -#, php-format -msgid "Created label %s" -msgstr "Etichetta %s creata" +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "Readability" -#: modules/pref-labels.php:137 help/3.php:30 help/4.php:26 -msgid "Create label" -msgstr "Crea etichetta" +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "Contenuto completo dell'articolo." -#: modules/pref-labels.php:143 -msgid "Clear colors" -msgstr "Pulisci colori" +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +#, fuzzy +msgid "Shared articles" +msgstr "Articoli con stella" -#: modules/pref-labels.php:223 -msgid "Click to change color" -msgstr "Fare clic per cambiare il colore" +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "+1" -#: modules/pref-labels.php:246 -msgid "No labels defined." -msgstr "Nessuna etichetta definita." +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "-1" -#: modules/pref-labels.php:248 -msgid "No matching labels found." -msgstr "Nessuna etichetta corrispondente trovata." +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "Mostra informazioni del classificatore" -#: modules/pref-labels.php:306 -msgid "custom color:" -msgstr "colore personalizzato:" +#: plugins/af_sort_bayes/init.php:216 +#, fuzzy +msgid "Statistics" +msgstr "Statistiche" -#: modules/pref-labels.php:307 -msgid "foreground" -msgstr "primo piano" +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "Richiesto una BRUTTA conta delle parole per l'ordinamento automatico: &d" -#: modules/pref-labels.php:308 -msgid "background" -msgstr "sfondo" +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "Ultimi articoli ordinati" -#: modules/pref-prefs.php:37 -msgid "Old password cannot be blank." -msgstr "La vecchia password non può essere vuota." +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "Cancella database" -#: modules/pref-prefs.php:42 -msgid "New password cannot be blank." -msgstr "La nuova password non può essere vuota." +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "Classificazione bayesiana (af_sort_bayes)" -#: modules/pref-prefs.php:47 -msgid "Entered passwords do not match." -msgstr "Le password inserite non corrispondono." +#: plugins/af_sort_bayes/init.php:376 +#, fuzzy, php-format +msgid "Currently stored as: %s" +msgstr "Attualmente salvato come: %s" -#: modules/pref-prefs.php:74 -msgid "Password has been changed." -msgstr "La password è stata cambiata" +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "Risultato del classificatore" -#: modules/pref-prefs.php:76 -msgid "Old password is incorrect." -msgstr "La vecchia password non è corretta." +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "Bookmarklets" -#: modules/pref-prefs.php:104 -msgid "The configuration was saved." -msgstr "La configurazione è stata salvata." +#: 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 "Trascinare il collegamento seguente nella barra degli strumenti del browser; aprire il notiziario al quale si è interessati nel browser e fare clic sul collegamento per sottoscriverlo." -#: modules/pref-prefs.php:120 +#: plugins/bookmarklets/init.php:26 #, php-format -msgid "Unknown option: %s" -msgstr "Opzione sconosciuta: %s" - -#: modules/pref-prefs.php:131 -msgid "E-mail has been changed." -msgstr "L'email è stata cambiata." - -#: modules/pref-prefs.php:171 -msgid "" -"Your password is at default value, \n" -"\t\t\t\t\t\tplease change it." -msgstr "" -"La password è impostata al valore predefinito, \n" -"\t\t\t\t\t\tcambiarla." +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "Sottoscrivi %s in Tiny Tiny RSS?" -#: modules/pref-prefs.php:198 -msgid "Personal data" -msgstr "Dati personali" - -#: modules/pref-prefs.php:205 -msgid "E-mail" -msgstr "Email" +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Sottoscrivi in Tiny Tiny RSS" -#: modules/pref-prefs.php:216 -msgid "Access level" -msgstr "Livello di accesso" +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "Usa questo bookmarklet per condividere qualsiasi pagina usando Tiny Tiny RSS" -#: modules/pref-prefs.php:229 -msgid "Change e-mail" -msgstr "Cambia email" - -#: modules/pref-prefs.php:237 -msgid "Old password" -msgstr "Vecchia password" +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "Puoi cancellare tutti gli articoli condivisi per Url unico qui" -#: modules/pref-prefs.php:244 -msgid "New password" -msgstr "Nuova password" +#: plugins/share/init.php:44 +#, fuzzy +msgid "Unshare all articles" +msgstr "Togli la condivisione a tutti gli articoli." -#: modules/pref-prefs.php:252 -msgid "Confirm password" -msgstr "Conferma password" +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "Condividi per URL" -#: modules/pref-prefs.php:268 -msgid "Change password" -msgstr "Cambia password" +#: plugins/share/init.php:99 +#, fuzzy +msgid "You can share this article by the following unique URL:" +msgstr "Puoi condividere questo articolo usando il seguente URL unico:" -#: modules/pref-prefs.php:323 -msgid "Select theme" -msgstr "Seleziona tema" +#: plugins/share/init.php:117 +#, fuzzy +msgid "Unshare article" +msgstr "Togli la condivisione all'articolo" -#: modules/pref-prefs.php:383 modules/pref-prefs.php:388 -msgid "Yes" -msgstr "Sì" +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "Questo errore verrà riportato nel log configurato." -#: modules/pref-prefs.php:385 modules/pref-prefs.php:388 -msgid "No" -msgstr "No" +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "Riporta a tt-rss.org" -#: modules/pref-prefs.php:409 -msgid "Save configuration" -msgstr "Salva configurazione" +#: js/functions.js:93 +msgid "Close" +msgstr "Chiudi" -#: modules/pref-prefs.php:412 -msgid "Manage profiles" -msgstr "" +#: js/functions.js:104 +#, fuzzy +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "Si vuole notificare questa eccezione a tt-rss.org? La notifica includerà le informazioni sul browser. L'IP verrà salvato in un database." -#: modules/pref-prefs.php:415 -msgid "Reset to defaults" -msgstr "Reimposta ai valori predefiniti" +#: js/functions.js:224 +#, fuzzy +msgid "Click to close" +msgstr "Fare clic per chiudere" -#: modules/pref-users.php:7 -msgid "Your access level is insufficient to open this tab." -msgstr "Il livello di accesso non è sufficiente per aprire questa scheda." +#: js/functions.js:1051 +#, fuzzy +msgid "Edit action" +msgstr "Modifica azioni" -#: modules/pref-users.php:17 -msgid "User details" -msgstr "Dettagli utente" +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "Crea filtro" -#: modules/pref-users.php:31 -msgid "User not found" -msgstr "Utente non trovato" +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "Reimpostare la sottoscrizione? Tiny Tiny RSS proverà ancora al prossimo aggiornamento del notiziario a sottoscrivere il centro notifiche." -#: modules/pref-users.php:50 modules/pref-users.php:428 -msgid "Registered" -msgstr "Registrato" +#: js/functions.js:1229 +#, fuzzy +msgid "Subscription reset." +msgstr "Sottoscrizione reimpostata." -#: modules/pref-users.php:51 -msgid "Last logged in" -msgstr "Ultimo accesso" +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "Annullare la sottoscrizione a %s?" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "Notiziario in cancellazione..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "Inserire il titolo della categoria:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "Generare un nuovo indirizzo per questo notiziario?" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Provo a cambiare indirizzo..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "Nessun notiziario selezionato." -#: modules/pref-users.php:58 -msgid "Subscribed feeds count" -msgstr "Numero notiziari sottoscritti" +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "Rimuovere i notiziari selezionati dall'archivio? I notiziari con articoli archiviati non saranno rimossi." -#: modules/pref-users.php:62 -msgid "Subscribed feeds" -msgstr "Sottoscrivi notiziari" +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "Notiziari con errori di aggiornamento" -#: modules/pref-users.php:108 -msgid "User Editor" -msgstr "Editor utente" +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "Rimuovere i notiziari selezionati?" -#: modules/pref-users.php:145 -msgid "Access level: " -msgstr "Livello di accesso: " +#: js/functions.js:1780 +#: js/prefs.js:1179 +#, fuzzy +msgid "Removing selected feeds..." +msgstr "Rimuovendo i notiziari selezionati..." -#: modules/pref-users.php:158 -msgid "Change password to" -msgstr "Cambiare la password a" +#: js/PrefFeedTree.js:48 +#, fuzzy +msgid "Edit category" +msgstr "Modifica categoria" -#: modules/pref-users.php:167 -msgid "E-mail: " -msgstr "Email:" +#: js/PrefFeedTree.js:55 +#, fuzzy +msgid "Remove category" +msgstr "Crea categoria" -#: modules/pref-users.php:201 -#, php-format -msgid "Changed password of user %s." -msgstr "Password dell'utente %s cambiata." +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "Inverso" -#: modules/pref-users.php:249 -#, php-format -msgid "Added user %s with password %s" -msgstr "Aggiunto l'utente %s con password %s" +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "Inserire il nome utente:" -#: modules/pref-users.php:256 -#, php-format -msgid "Could not create user %s" -msgstr "Impossibile creare l'utente %s" +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "Impossibile creare l'utente: nessun nome utente specificato." -#: modules/pref-users.php:260 -#, php-format -msgid "User %s already exists." -msgstr "L'utente %s esiste già." +#: js/prefs.js:66 +#, fuzzy +msgid "Adding user..." +msgstr "Creando utente..." -#: modules/pref-users.php:280 -#, php-format -msgid "" -"Changed password of user %s\n" -"\t\t\t\t\t to %s" -msgstr "" -"Password cambiata all'utente %s\n" -"\t\t\t\t\t a %s" +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Editor utente" -#: modules/pref-users.php:284 -#, php-format -msgid "Notifying %s." -msgstr "Notifica a %s" +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +#, fuzzy +msgid "Saving data..." +msgstr "Salvando dati..." -#: modules/pref-users.php:321 -msgid "[tt-rss] Password change notification" -msgstr "[tt-rss] Notifica di cambio password" +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "Modifica filtro" -#: modules/pref-users.php:370 help/4.php:27 -msgid "Create user" -msgstr "Crea utente" +#: js/prefs.js:181 +#, fuzzy +msgid "Remove filter?" +msgstr "Rimuovere il filtro?" -#: modules/pref-users.php:374 +#: js/prefs.js:186 #, fuzzy -msgid "Details" -msgstr "Giornalmente" +msgid "Removing filter..." +msgstr "Rimuovendo il filtro..." -#: modules/pref-users.php:380 -msgid "Reset password" -msgstr "Reimposta password" +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "Rimuovere le etichette selezionate?" -#: modules/pref-users.php:426 -msgid "Login" -msgstr "Accesso" +#: js/prefs.js:299 +#, fuzzy +msgid "Removing selected labels..." +msgstr "Rimuovendo le etichette selezionate..." -#: modules/pref-users.php:427 -msgid "Access Level" -msgstr "Livello di accesso" +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "Nessuna etichetta selezionata." -#: modules/pref-users.php:429 -msgid "Last login" -msgstr "Ultimo accesso" +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "Rimuovere gli utenti selezionati? Non saranno rimossi l'amministratore predefinito e il proprio utente." -#: modules/pref-users.php:487 -msgid "No users defined." -msgstr "Nessun utente definito." +#: js/prefs.js:329 +#, fuzzy +msgid "Removing selected users..." +msgstr "Rimuovendo gli utenti selezionati..." -#: modules/pref-users.php:489 -msgid "No matching users found." -msgstr "Nessun utente corrispondente trovato." +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "Nessun utente selezionato." -#: help/2.php:1 -msgid "Content filtering" -msgstr "Filtro contenuti" +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "Rimuovere i filtri selezionati?" -#: help/2.php:3 -msgid "" -"Tiny Tiny RSS has support for filtering (or processing) articles. Filtering " -"is done once, when new article is imported to the database from the " -"newsfeed, specified field is matched against regular expression and some " -"action is taken. Regular expression matching is case-insensitive." -msgstr "" -"Tiny Tiny RSS ha il supporto per il filtraggio (o il processamento) degli " -"articoli. Il filtro viene fatto una volta quando i nuovi articoli vengono " -"importati nel database dal notiziario, il campo specificato viene " -"confrontato con l'espressione regolare e viene effettuata qualche " -"azione. La corrispondenza all'espressione regolare tiene conto di " -"maiuscole e minuscole." - -#: help/2.php:5 -msgid "" -"Supported actions are: filter (do not import) article, mark article as read, " -"set starred, assign tag(s), and set score. Filters can be defined globally " -"and for some specific feed." -msgstr "" -"Le azioni supportate sono: filtra articolo (non importare), segna articolo " -"come letto, imposta con stella, assegna etichetta(e) e imposta punteggio. I " -"filtri possono essere definiti globalmente e per ogni notiziario specifico." +#: js/prefs.js:364 +#, fuzzy +msgid "Removing selected filters..." +msgstr "Rimuovendo i filtri selezionati..." -#: help/2.php:7 -msgid "" -"Multiple and inverse matching are supported. All matching filters are " -"considered when article is being imported and all actions executed in " -"sequence. Inverse matching reverts matching result, e.g. filter matching " -"XYZZY in title with inverse flag will match all articles, except those " -"containing string XYZZY in title." -msgstr "" -"Sono supportate le corrispondenze multiple e inverse. Tutti i filtri di " -"corrispondenza vengono considerati quando gli articoli vengono importati e " -"tutte le azioni vengono poi eseguite in sequenza. La corrispondenza inversa " -"inverte il risultato della corrispondenza; es. il filtro con corrispondenza " -"XYZZY nel titolo con l'opzione di inversione troverà tutti gli " -"articoli, eccetto quelli che contengono la stringa XYZZY nel titolo." - -#: help/2.php:9 -msgid "See also:" -msgstr "Vedere anche:" - -#: help/3.php:1 help/4.php:1 -msgid "Keyboard Shortcuts" -msgstr "Scorciatoie da tastiera" +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "Nessun filtro selezionato." -#: help/3.php:5 -msgid "Navigation" -msgstr "Navigazione" +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "Annullare la sottoscrizione ai notiziari selezionati?" -#: help/3.php:8 -msgid "Move between feeds" -msgstr "Sposta tra notiziari" +#: js/prefs.js:399 +#, fuzzy +msgid "Unsubscribing from selected feeds..." +msgstr "Annullando la sottoscrizione ai notiziari selezionati..." -#: help/3.php:9 -msgid "Move between articles" -msgstr "Sposta tra articoli" +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "Selezionare solo un notiziario." -#: help/3.php:10 -msgid "Show search dialog" -msgstr "Mostra il dialogo di ricerca" +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "Eliminare tutti gli articoli senza la stella nel notiziario selezionato?" -#: help/3.php:13 -msgid "Active article actions" -msgstr "Azioni sull'articolo attivo" +#: js/prefs.js:438 +#, fuzzy +msgid "Clearing selected feed..." +msgstr "Cancellando i notiziari selezionati..." -#: help/3.php:16 -msgid "Toggle starred" -msgstr "Inverti con stella" +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "Per quanti giorni vuoi conservare gli articoli? (0 - usa il valore predefinito)?" -#: help/3.php:17 -msgid "Toggle published" -msgstr "Inverti pubblicati" +#: js/prefs.js:460 +#, fuzzy +msgid "Purging selected feed..." +msgstr "Pulendo i notiziari selezionati..." -#: help/3.php:18 -msgid "Toggle unread" -msgstr "Inverti non letti" +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "Selezionare un solo utente." -#: help/3.php:19 -msgid "Edit tags" -msgstr "Modifica etichette" +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "Reimpostare la password per l'utente selezionato?" -#: help/3.php:20 -msgid "Open article in new window" -msgstr "Aprire gli articoli in una nuova finestra" +#: js/prefs.js:520 +#, fuzzy +msgid "Resetting password for selected user..." +msgstr "Reimpostando la password per l'utente selezionato..." -#: help/3.php:21 -msgid "Mark articles below/above active one as read" -msgstr "Segnare gli articoli sopra e sotto quello attivo come letti" +#: js/prefs.js:565 +msgid "User details" +msgstr "Dettagli utente" -#: help/3.php:22 -msgid "Scroll article content" -msgstr "Scorri il contenuto dell'articolo" +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "Selezionare solo un filtro." -#: help/3.php:26 help/4.php:30 -msgid "Other actions" -msgstr "Altre azioni" +#: js/prefs.js:607 +#, fuzzy +msgid "Combine selected filters?" +msgstr "Unire i filtri selezionati?" -#: help/3.php:29 -msgid "Select article under mouse cursor" -msgstr "Seleziona l'articolo sotto il cursore del mouse" +#: js/prefs.js:610 +#, fuzzy +msgid "Joining filters..." +msgstr "Unendo filtri..." -#: help/3.php:32 -msgid "Collapse sidebar" -msgstr "Contrai la barra laterale" +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "Modifica notiziari multipli" -#: help/3.php:33 -msgid "Toggle category reordering mode" -msgstr "Inverti modalità riordinamento categoria" +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "Salvare i cambiamenti ai notiziari selezionati?" -#: help/3.php:34 help/4.php:34 -msgid "Display this help dialog" -msgstr "Visualizza questo dialogo di aiuto" +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "Importazione OPML" -#: help/3.php:39 -msgid "Feed actions" -msgstr "Azioni notiziari" +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "Scegliere prima un file OPML." -#: help/3.php:42 -msgid "Update active feed" -msgstr "Aggiorna notiziario attivo" +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +#, fuzzy +msgid "Importing, please wait..." +msgstr "Importando, attendere prego..." -#: help/3.php:43 -msgid "Update all feeds" -msgstr "Aggiorna tutti i notiziari" +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "Reimpostare ai valori predefiniti?" -#: help/3.php:46 -msgid "Edit feed" -msgstr "Modifica notiziario" +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "Sottoscrivendo i notiziari..." -#: help/3.php:47 -msgid "Sort by name or unread count" -msgstr "Ordinare per nome o numero non letti" +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "Cancellare i dati salvati dei plugin?" -#: help/3.php:48 -msgid "Hide visible read articles" -msgstr "Nascondi articoli visibili letti" +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "Cancellare tutti i messaggi nel log degli errori?" -#: help/3.php:49 -msgid "Mark feed as read" -msgstr "Segna notiziario come letto" +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "Segnare tutti gli articoli come letti?" -#: help/3.php:50 +#: js/tt-rss.js:133 #, fuzzy -msgid "Reverse headlines order" -msgstr "Invertire l'ordine del sommario (prima i più vecchi)" - -#: help/3.php:51 -msgid "Mark all feeds as read" -msgstr "Segna tutti i notiziari come letti" +msgid "Marking all feeds as read..." +msgstr "Segnando tutti i notiziari come letti..." -#: help/3.php:52 -msgid "If viewing category, (un)collapse it" -msgstr "Se in visualizzazione categoria, contraila/espandila" +#: js/tt-rss.js:391 +#, fuzzy +msgid "Please enable mail plugin first." +msgstr "Per favore, prima attiva il plugin email." -#: help/3.php:55 help/4.php:5 -msgid "Go to..." -msgstr "Vai a..." +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "Impossibile modificare questo tipo di notiziario." -#: help/3.php:62 -msgid "Tag cloud" -msgstr "Nuvola etichette" +#: js/tt-rss.js:505 +#, fuzzy +msgid "Please enable embed_original plugin first." +msgstr "Per favore, prima attiva il plugin embed_original" -#: help/3.php:69 help/4.php:41 -msgid "Press any key to close this window." -msgstr "Premere qualsiasi tasto per chiudere questa finestra." +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "Widescreen non disponibile nella modalità combinata" -#: help/4.php:9 -msgid "My Feeds" -msgstr "Notiziari" +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "Impossibile cambiare il punteggio a questo tipo di notiziari." -#: help/4.php:10 -msgid "Other Feeds" -msgstr "Altri notiziari" +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "Selezionare prima qualche notiziario." -#: help/4.php:19 -msgid "Panel actions" -msgstr "Riquadro azioni" +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "Cambiare il punteggio degli articoli in %s ?" -#: help/4.php:23 -msgid "Top 25 feeds" -msgstr "Primi 25 notiziari" +#: js/tt-rss.js:843 +#, fuzzy +msgid "Rescoring articles..." +msgstr "Cambiando punteggio degli articoli..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "Nessun articolo selezionato." -#: help/4.php:24 -msgid "Edit feed categories" -msgstr "Modifica categorie notiziari" +#: js/viewfeed.js:1018 +#, fuzzy, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "Eliminare %d articolo selezionato in «%s»?" +msgstr[1] "Eliminare i %d articoli selezionati in «%s»?" + +#: js/viewfeed.js:1020 +#, fuzzy, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "Eliminare %d articolo selezionato?" +msgstr[1] "Eliminare i %d articoli selezionati?" + +#: js/viewfeed.js:1062 +#, fuzzy, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "Archiviare %d articolo selezionato in «%s»?" +msgstr[1] "Archiviare i %d articoli selezionati in «%s»?" + +#: js/viewfeed.js:1065 +#, fuzzy, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "Spostare %d articolo archiviato indietro?" +msgstr[1] "Spostare %d articoli archiviati indietro?" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "Per favore, considera che gli articoli a cui è stata tolta la stella potrebbero essere cancellati alla prossima pulizia." + +#: js/viewfeed.js:1112 +#, fuzzy, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "Segnare %d articolo selezionato in «%s» come letto?" +msgstr[1] "Segnare %d articoli selezionati in «%s» come letti?" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "Modifica etichette articolo" + +#: js/viewfeed.js:1142 +#, fuzzy +msgid "Saving article tags..." +msgstr "Salvando etichette articolo" -#: help/4.php:33 -msgid "Focus search (if present)" -msgstr "Attiva la ricerca (se presente)" +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +#, fuzzy +msgid "Click to open next unread feed." +msgstr "Clicca per passare al prossimo notiziario da leggere" -#: help/4.php:39 -msgid "" -"Note: not all actions may be available, depending on Tiny Tiny RSS " -"configuration and your access level." -msgstr "" -"Notare: non tutte le azioni potrebbero essere disponibili, in base " -"alla configurazione di Tiny Tiny RSS e al proprio livello di accesso." +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "Apri articolo originale" -#: mobile/functions.php:59 mobile/functions.php:136 mobile/functions.php:172 -#: mobile/functions.php:199 mobile/functions.php:233 mobile/functions.php:356 -#: mobile/prefs.php:25 -msgid "Home" -msgstr "" +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Assegna etichetta" -#: mobile/functions.php:392 -msgid "Nothing found (click to reload feed)." -msgstr "" +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "Rimuovi etichetta" -#: mobile/prefs.php:30 +#: js/viewfeed.js:2159 #, fuzzy -msgid "Enable categories" -msgstr "Abilitare le categorie dei notiziari" +msgid "Select articles in group" +msgstr "Seleziona gli articoli come gruppo" -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "ON" -msgstr "" +#: js/viewfeed.js:2168 +#, fuzzy +msgid "Mark group as read" +msgstr "Segna il gruppo come letto" -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "OFF" -msgstr "" +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "Segna il notiziario come letto" -#: mobile/prefs.php:35 +#: js/viewfeed.js:2235 #, fuzzy -msgid "Show images in posts" -msgstr "Non mostrare le immagini negli articoli" +msgid "Please enter new score for selected articles:" +msgstr "Inserire il nuovo punteggio per gli articoli selezionati:" -#: mobile/prefs.php:40 +#: js/viewfeed.js:2305 #, fuzzy -msgid "Hide read feeds" -msgstr "Visualizza/Nascondi notiziari letti" +msgid "Please enter new score for this article:" +msgstr "Inserire il nuovo punteggio per questo articolo:" -#: mobile/prefs.php:45 +#: js/viewfeed.js:2339 #, fuzzy -msgid "Sort feeds by unread count" -msgstr "Ordinare i notiziari per numero di articoli non letti" - -#: functions.js:1315 -msgid "Can't add filter: nothing to match on." -msgstr "Impossibile aggiungere il filtro: niente a cui corrisponda." - -#: functions.js:1350 -msgid "Can't subscribe: no feed URL given." -msgstr "" -"Impossibile annullare la sottoscrizione: nessun URL di notiziario è stato " -"dato." +msgid "Article URL:" +msgstr "URL dell'articolo" -#: functions.js:1354 -msgid "Subscribing to feed..." -msgstr "Sottoscrizione al notiziario..." +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "Mi dispiace, il browser non supporda gli iframe nella sandbox" -#: functions.js:1377 +#: plugins/af_psql_trgm/init.js:11 #, fuzzy -msgid "Subscribed to %s" -msgstr "Notiziari sottoscritti:" +msgid "Related articles" +msgstr "Elimina articolo" -#: functions.js:1386 +#: plugins/note/note.js:17 #, fuzzy -msgid "Can't subscribe to the specified URL." -msgstr "" -"Impossibile annullare la sottoscrizione: nessun URL di notiziario è stato " -"dato." +msgid "Saving article note..." +msgstr "Salvando le note dell'articolo..." + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Importa da Google Reader" -#: functions.js:1389 +#: plugins/googlereaderimport/init.js:42 #, fuzzy -msgid "You are already subscribed to this feed." -msgstr "Impossibile annullare la sottoscrizione alla categoria." +msgid "Please choose a file first." +msgstr "Scegliere prima un file." + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "Inoltra l'articolo per email" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "Esporta dati" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "Completato, esportato %s articolo. Puoi scaricare i dati qui." +msgstr[1] "Completato, esportati %s articoli. Puoi scaricare i dati qui." + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Importa dati" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "Scegli prima il file, per favore" + +#: plugins/shorten_expanded/init.js:37 +#, fuzzy +msgid "Click to expand article" +msgstr "Fare clic per espandere l'articolo." -#: functions.js:1952 -msgid "New articles available in this feed (click to show)" -msgstr "" +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "Errore nell'invio email:" -#: functions.js:1989 +#: plugins/mail/mail.js:38 #, fuzzy -msgid "Subscribed to %d feed(s)." -msgstr "Notiziari sottoscritti:" +msgid "Your message has been sent." +msgstr "Il messaggio è stato inviato" -#: functions.js:1999 functions.js:2030 prefs.js:557 prefs.js:587 prefs.js:619 -#: prefs.js:908 prefs.js:928 prefs.js:1795 -msgid "No feeds are selected." -msgstr "Nessun notiziario selezionato." +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "Collega istanza" -#: functions.js:2014 -msgid "" -"Remove selected feeds from the archive? Feeds with stored articles will not " -"be removed." -msgstr "" +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "Modifica istanza" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "Rimuovere le istanze selezionate?" -#: functions.js:2066 +#: plugins/instances/instances.js:125 #, fuzzy -msgid "Remove stored feed icon?" -msgstr "Rimuovi dati salvati" +msgid "Removing selected instances..." +msgstr "Rimuovendo le istanze selezionate..." + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "Nessuna istanza selezionata." -#: functions.js:2098 +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "Selezionare solo un'istanza." + +#: plugins/af_sort_bayes/init.js:26 #, fuzzy -msgid "Please select an image file to upload." -msgstr "Selezionare un solo notiziario." +msgid "Clear classifier database?" +msgstr "Cancellare il database del classificatore?" -#: functions.js:2100 -msgid "Upload new icon for this feed?" -msgstr "" +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "Informazioni del classificatore" -#: functions.js:2117 -msgid "Please enter label caption:" -msgstr "Inserire l'intestazione dell'etichetta:" +#: plugins/share/share.js:10 +#, fuzzy +msgid "Share article by URL" +msgstr "Condividi l'articolo con l'URL" -#: functions.js:2122 -msgid "Can't create label: missing caption." -msgstr "Impossibile creare l'etichetta: intestazione mancante." +#: plugins/share/share.js:14 +#, fuzzy +msgid "Generate new share URL for this article?" +msgstr "Generare un nuovo URL di condivisione per questo articolo?" -#: functions.js:2162 tt-rss.js:568 -msgid "Unsubscribe from %s?" -msgstr "Annullare la sottoscrizione a «%s»?" +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "Provo a cambiare URL..." -#: offline.js:636 -msgid "Data for offline browsing has not been downloaded yet." -msgstr "" -"I dati per la navigazione «fuori linea» non sono ancora stati scaricati." +#: plugins/share/share.js:55 +#, fuzzy +msgid "Remove sharing for this article?" +msgstr "Togliere la condivisione per questo articolo?" -#: offline.js:677 -msgid "Synchronizing feeds..." -msgstr "Sincronizzazioni notiziari..." +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "Provando a togliere la condivisione..." -#: offline.js:696 -msgid "Synchronizing categories..." -msgstr "Sincronizzazione categorie..." +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "Questo renderà non più accessibili tutti gli URL degli articoli precedentemente condivisi. Procedere?" -#: offline.js:714 -msgid "Synchronizing labels..." -msgstr "Sincronizzazione etichette..." +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "Cancellando gli URL..." -#: offline.js:733 -msgid "Synchronizing articles..." -msgstr "Sincronizzazione articoli..." +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "ULR condivisi cancellati." -#: offline.js:778 -msgid "Synchronizing articles (%d)..." -msgstr "Sincronizzazione articoli (%d)..." +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "Segnare tutti gli articoli in %s come letti?" -#: offline.js:806 -msgid "Last sync: %s" -msgstr "Ultima sinc.: %s" +#: js/feedlist.js:435 +#, fuzzy +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "Segnare tutti gli articoli in %s più vecchi di un giorno come letti?" -#: offline.js:835 -msgid "Last sync: Error receiving data." -msgstr "Ultima sinc.: errore di ricezione dati." +#: js/feedlist.js:438 +#, fuzzy +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "Segnare tutti gli articoli in %s più vecchi di una settimana come letti?" -#: offline.js:888 -msgid "Synchronizing..." -msgstr "Sincronizzazione..." +#: js/feedlist.js:441 +#, fuzzy +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "Segnare tutti gli articoli in %s più vecchi di due settimane come letti?" -#: offline.js:1195 -msgid "Switch Tiny Tiny RSS into offline mode?" -msgstr "Cambiare la modalità di Tiny Tiny RSS a «fuori linea»?" +#: js/functions.js:615 +msgid "Error explained" +msgstr "Errore spiegato" -#: offline.js:1223 -msgid "Tiny Tiny RSS will reload. Go online?" -msgstr "Tiny Tiny RSS verrà riavviato. Andare «in linea»?" +#: js/functions.js:697 +msgid "Upload complete." +msgstr "Caricamento completato." -#: offline.js:1655 -msgid "Last sync: Cancelled." -msgstr "Ultima sinc.: annullata." +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "Rimuovi l'icona del notiziario salvata?" -#: offline.js:1672 -msgid "" -"This will remove all offline data stored by Tiny Tiny RSS on this computer. " -"Continue?" -msgstr "" -"Questo eliminerà tutti i dati «fuori linea» salvati da Tiny Tiny RSS su " -"questo computer. Continuare?" +#: js/functions.js:726 +#, fuzzy +msgid "Removing feed icon..." +msgstr "Rimuovendo l'icona del notiziario salvata..." -#: offline.js:1743 -msgid "" -"Tiny Tiny RSS has trouble accessing its server. Would you like to go offline?" -msgstr "" -"Tiny Tiny RSS ha dei problemi a connettersi al proprio server. Si vuole " -"andare «fuori linea»?" +#: js/functions.js:731 +#, fuzzy +msgid "Feed icon removed." +msgstr "Icona del notiziario rimossa." -#: prefs.js:233 -msgid "Error: No feed URL given." -msgstr "Errore: non è stato fornito alcun URL di notiziario." +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "Selezionare un file immagine da caricare." -#: prefs.js:235 -msgid "Error: Invalid feed URL." -msgstr "Errore: URL non valido del notiziario." +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "Caricare una nuova icona per questo notiziario?" -#: prefs.js:263 +#: js/functions.js:756 #, fuzzy -msgid "Can't add profile: no name specified." -msgstr "Impossibile aggiungere la categoria: nessun nome specificato." +msgid "Uploading, please wait..." +msgstr "Caricamento, attendere prego..." -#: prefs.js:285 -msgid "Can't add category: no name specified." -msgstr "Impossibile aggiungere la categoria: nessun nome specificato." +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "Inserire la didascalia dell'etichetta:" -#: prefs.js:307 -msgid "Please enter login:" -msgstr "Inserire l'accesso:" +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "Impossibile creare l'etichetta: didascalia mancante." -#: prefs.js:314 -msgid "Can't create user: no login specified." -msgstr "Impossibile creare l'utente: nessun accesso specificato." +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "Sottoscrivi il notiziario" -#: prefs.js:438 -msgid "Remove selected labels?" -msgstr "Rimuovere le etichette selezionate?" +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "Errore nella creazione dell'output. Questo può essere dovuto a un timeout del server o a altri problemi di rete. Il messaggio del backend è stato inviato alla console del browser" -#: prefs.js:454 -msgid "No labels are selected." -msgstr "Nessuna etichetta selezionata." +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "Sottoscrizione effettuata a %s" -#: prefs.js:468 -msgid "Remove selected users?" -msgstr "Rimuovere gli utenti selezionati?" +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "L'URL indicata sembra non essere valida." -#: prefs.js:485 prefs.js:798 prefs.js:819 prefs.js:858 -msgid "No users are selected." -msgstr "Nessun utente selezionato." +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "L'URL indicata non sembra contenere alcun notiziario." -#: prefs.js:503 -msgid "Remove selected filters?" -msgstr "Rimuovere i filtri selezionati?" +#: js/functions.js:874 +#, fuzzy +msgid "Expand to select feed" +msgstr "Espandi per selezionare i notiziari" -#: prefs.js:519 prefs.js:888 -msgid "No filters are selected." -msgstr "Nessun filtro selezionato." +#: js/functions.js:886 +#, fuzzy +msgid "Couldn't download the specified URL: %s" +msgstr "Impossibile scaricare l'URL: $s" -#: prefs.js:538 -msgid "Unsubscribe from selected feeds?" -msgstr "Annullare la sottoscrizione ai notiziari selezionati?" +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "Validazione dell'XML fallita: %s" -#: prefs.js:572 -msgid "Please select only one feed." -msgstr "Selezionare solo un notiziario." +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "Hai già sottoscritto questo notiziario" -#: prefs.js:578 -msgid "Erase all non-starred articles in selected feed?" -msgstr "" -"Eliminare tutti gli articoli senza la stella nel notiziario selezionato?" +#: js/functions.js:1025 +#, fuzzy +msgid "Edit rule" +msgstr "Modifica regola" -#: prefs.js:600 -msgid "How many days of articles to keep (0 - use default)?" -msgstr "Quanti giorni di articoli tenere (0 - utilizza il valore predefinito)?" +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "Modifica notiziario" -#: prefs.js:632 -msgid "" -"Remove selected profiles? Active and default profiles will not be removed." -msgstr "" +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "Altri notiziari" + +#: js/functions.js:1878 +msgid "Help" +msgstr "Aiuto" -#: prefs.js:648 +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "Rimuovere la categoria %s ? Ogni notiziario incluso verrà inserito in Senza categoria." + +#: js/prefs.js:1089 #, fuzzy -msgid "No profiles selected." -msgstr "Nessun articolo selezionato." +msgid "Removing category..." +msgstr "Rimuovendo la categoria..." -#: prefs.js:660 +#: js/prefs.js:1110 msgid "Remove selected categories?" msgstr "Rimuovere le categorie selezionate?" -#: prefs.js:678 +#: js/prefs.js:1113 +#, fuzzy +msgid "Removing selected categories..." +msgstr "Rimuovendo le categorie selezionate..." + +#: js/prefs.js:1126 msgid "No categories are selected." msgstr "Nessuna categoria selezionata." -#: prefs.js:745 -msgid "Login field cannot be blank." -msgstr "Il campo accesso non può essere vuoto." - -#: prefs.js:803 prefs.js:824 prefs.js:863 -msgid "Please select only one user." -msgstr "Selezionare un solo utente." - -#: prefs.js:828 -msgid "Reset password of selected user?" -msgstr "Reimpostare la password per l'utente selezionato?" - -#: prefs.js:893 -msgid "Please select only one filter." -msgstr "Selezionare solo un filtro." +#: js/prefs.js:1134 +#, fuzzy +msgid "Category title:" +msgstr "Titolo categoria: " -#: prefs.js:969 -msgid "No OPML file to upload." -msgstr "Nessun file OPML da caricare." +#: js/prefs.js:1138 +#, fuzzy +msgid "Creating category..." +msgstr "Creando categoria..." -#: prefs.js:1229 -msgid "Reset to defaults?" -msgstr "Reimpostare ai valori predefiniti?" +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "Notiziari senza aggiornamenti recenti" -#: prefs.js:1641 -msgid "Replace current publishing address with a new one?" -msgstr "Sostituire l'indirizzo di pubblicazione attuale con uno nuovo?" +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "Sostituire l'indirizzo di pubblicazione OPML attuale con uno nuovo?" -#: prefs.js:1678 -msgid "Save current configuration?" -msgstr "Salvare la configurazione attuale?" +#: js/prefs.js:1303 +#, fuzzy +msgid "Clearing feed..." +msgstr "Cancellando i notiziari..." -#: prefs.js:1779 +#: js/prefs.js:1323 msgid "Rescore articles in selected feeds?" msgstr "Cambiare il punteggio agli articoli nel notiziario selezionato?" -#: prefs.js:1802 -msgid "Rescore all articles? This operation may take a lot of time." -msgstr "" -"Cambiare il punteggio a tutti i notiziari? Questa operazione può durare " -"molto tempo." +#: js/prefs.js:1326 +#, fuzzy +msgid "Rescoring selected feeds..." +msgstr "Cambiando il punteggio agli articoli nel notiziario selezionato..." -#: prefs.js:1821 -msgid "Remove filter %s?" -msgstr "Rimuovere il filtro «%s»?" +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "Cambiare il punteggio a tutti gli articoli? Questa operazione può durare molto tempo." -#: prefs.js:1882 -msgid "Save changes to selected feeds?" -msgstr "Salvare i cambiamenti ai notiziari selezionati?" +#: js/prefs.js:1349 +#, fuzzy +msgid "Rescoring feeds..." +msgstr "Cambiando punteggio dei notiziari..." -#: prefs.js:1962 -msgid "Reset label colors to default?" -msgstr "Reimpostare i colori delle etichette ai valori predefiniti?" +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "Reimpostare le etichette selezionate ai colori predefiniti?" -#: prefs.js:1987 -msgid "Please enter new label foreground color:" -msgstr "Inserire il colore del testo nella nuova etichetta:" +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "Impostazioni dei profili" -#: prefs.js:1989 -msgid "Please enter new label background color:" -msgstr "Inserire il colore di sfondo della nuova etichetta:" +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "Rimuovere i profili selezionati? Il profilo attivo e quello predefinito non saranno rimossi." -#: prefs.js:2121 +#: js/prefs.js:1415 #, fuzzy +msgid "Removing selected profiles..." +msgstr "Rimuovendo i profili selezionati..." + +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "Nessun profilo selezionato." + +#: js/prefs.js:1438 +#: js/prefs.js:1491 msgid "Activate selected profile?" -msgstr "Rimuovere i filtri selezionati?" +msgstr "Attivare il profilo selezionato?" -#: prefs.js:2137 +#: js/prefs.js:1454 +#: js/prefs.js:1507 msgid "Please choose a profile to activate." -msgstr "" +msgstr "Scegliere un profilo da attivare" -#: tt-rss.js:74 -msgid "display feeds" -msgstr "visualizza notiziari" - -#: tt-rss.js:251 -msgid "Mark all articles as read?" -msgstr "Segnare tutti gli articoli come letti?" +#: js/prefs.js:1459 +#, fuzzy +msgid "Creating profile..." +msgstr "Creando profilo..." -#: tt-rss.js:557 -msgid "You can't unsubscribe from the category." -msgstr "Impossibile annullare la sottoscrizione alla categoria." +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "Questo renderà non più accessibili tutti gli URL dei notiziari generati. Procedere?" -#: tt-rss.js:562 tt-rss.js:755 tt-rss.js:930 -msgid "Please select some feed first." -msgstr "Selezionare prima qualche notiziario." +#: js/prefs.js:1525 +#, fuzzy +msgid "Generated URLs cleared." +msgstr "URL generati cancellati" -#: tt-rss.js:618 -msgid "Reset category order?" -msgstr "Reimpostare l'ordine dalla categoria?" +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Editor etichette" -#: tt-rss.js:727 tt-rss.js:740 -msgid "Mark all articles in %s as read?" -msgstr "Segnare tutti gli articoli in «%s» come letti?" +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "Impossibile annullare la sottoscrizione alla categoria." -#: tt-rss.js:760 -msgid "You can't edit this kind of feed." -msgstr "Impossibile modificare questo tipo di notiziario." +#: js/viewfeed.js:113 +#, fuzzy +msgid "Cancel search" +msgstr "Annulla ricerca" -#: tt-rss.js:925 -msgid "You can't rescore this kind of feed." -msgstr "Impossibile cambiare il punteggio a questo tipo di notiziari." +#: js/viewfeed.js:174 +#, fuzzy +msgid "New articles found, reload feed to continue." +msgstr "Nuovi articoli ricevuti, ricarica il notiziario per continuare." -#: tt-rss.js:935 -msgid "Rescore articles in %s?" -msgstr "Cambiare il punteggio degli articoli in «%s»?" +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Togli la stella all'articolo" -#: viewfeed.js:528 viewfeed.js:592 +#: js/viewfeed.js:452 msgid "Star article" msgstr "Metti la stella all'articolo" -#: viewfeed.js:577 -msgid "Unstar article" -msgstr "Togli la stella all'articolo" +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "Rendi l'articolo non più pubblico" -#: viewfeed.js:585 viewfeed.js:652 -msgid "Please wait..." -msgstr "Attendere prego..." +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Pubblica articolo" -#: viewfeed.js:648 -msgid "Unpublish article" -msgstr "Non pubblicare articolo" +#: js/viewfeed.js:662 +#, fuzzy +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "%d articolo selezionato" +msgstr[1] "%d articoli selezionati" -#: viewfeed.js:935 viewfeed.js:971 viewfeed.js:1012 viewfeed.js:1097 -#: viewfeed.js:1141 viewfeed.js:1288 viewfeed.js:1338 viewfeed.js:1394 -msgid "No articles are selected." +#: js/viewfeed.js:1415 +msgid "No article is selected." msgstr "Nessun articolo selezionato." -#: viewfeed.js:1256 -msgid "Mark all visible articles in %s as read?" -msgstr "Segnare tutti gli articoli visibili in «%s» come letti?" +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "Nessun articolo trovato da segnare" -#: viewfeed.js:1298 +#: js/viewfeed.js:1452 #, fuzzy -msgid "Delete %d selected articles in %s?" -msgstr "Segnare %d articoli selezionati in «%s» come letti?" +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "Segnare %d articolo come letto?" +msgstr[1] "Segnare %d articoli come letti?" -#: viewfeed.js:1300 +#: js/viewfeed.js:1967 #, fuzzy -msgid "Delete %d selected articles?" -msgstr "Rimuovere dall'etichetta gli articoli selezionati?" +msgid "Display article URL" +msgstr "Visualizza URL articolo" -#: viewfeed.js:1348 -#, fuzzy -msgid "Archive %d selected articles in %s?" -msgstr "Segnare %d articoli selezionati in «%s» come letti?" +#~ msgid "Select by tags..." +#~ msgstr "Scegli tramite tag..." -#: viewfeed.js:1351 -msgid "Move %d archived articles back?" -msgstr "" +#~ msgid "Limit search to:" +#~ msgstr "Limitare la ricerca a:" -#: viewfeed.js:1401 -msgid "Mark %d selected articles in %s as read?" -msgstr "Segnare %d articoli selezionati in «%s» come letti?" +#~ msgid "This feed" +#~ msgstr "Questo notiziario" -#: viewfeed.js:1977 -msgid "No article is selected." -msgstr "Nessun articolo selezionato." +#~ msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation." +#~ msgstr "Espressioni complesse potrebbero non mostrare i risultati corretti durante il test a causa di problemi del server con la gestione delle espressioni regolari." -#: viewfeed.js:2018 -msgid "No articles found to mark" -msgstr "Nessun articolo trovato da segnare" +#~ msgid "Old password cannot be blank." +#~ msgstr "La vecchia password non può essere vuota." -#: viewfeed.js:2020 -msgid "Mark %d article(s) as read?" -msgstr "Segnare %d articolo/i come letto/i?" +#~ msgid "New password cannot be blank." +#~ msgstr "La nuova password non può essere vuota." -#: viewfeed.js:2255 -msgid "Please enter a note for this article:" -msgstr "Inserire una nota per questo articolo:" +#~ msgid "Entered passwords do not match." +#~ msgstr "Le password inserite non corrispondono." -#~ msgid "Adding feed..." -#~ msgstr "Aggiunta notiziario..." +#~ msgid "Function not supported by authentication module." +#~ msgstr "Funzione non supportata dal modulo di autenticazione" -#~ msgid "Adding feed category..." -#~ msgstr "Aggiunta categoria notiziario..." +#~ msgid "Match:" +#~ msgstr "Risultati:" + +#~ msgid "Any" +#~ msgstr "Qualsiasi" #, fuzzy -#~ msgid "Adding profile..." -#~ msgstr "Aggiunta notiziario..." +#~ msgid "All tags." +#~ msgstr "Tutte le etichette" -#~ msgid "Adding user..." -#~ msgstr "Aggiunta utente..." +#~ msgid "Which Tags?" +#~ msgstr "Quali etichette?" -#~ msgid "Assign score to article:" -#~ msgstr "Assegna punteggio all'articolo:" +#~ msgid "Display entries" +#~ msgstr "Mostra voci" -#~ msgid "Assign selected articles to label?" -#~ msgstr "Assegnare l'etichetta agli articoli selezionati?" +#~ msgid "Select item(s) by tags" +#~ msgstr "Seleziona articoli per tag" -#~ msgid "Can't open article: received invalid article link" -#~ msgstr "" -#~ "Impossibile aprire l'articolo: ricevuto collegamento di articolo non " -#~ "valido" +#, fuzzy +#~ msgid "Unread First" +#~ msgstr "Non letti" -#~ msgid "Category reordering disabled" -#~ msgstr "Riordinamento categoria disabilitato" +#~ msgid "Unknown option: %s" +#~ msgstr "Opzione sconosciuta: %s" -#~ msgid "Category reordering enabled" -#~ msgstr "Riordinamento categoria abilitato" +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "È disponibile la nuova versione di Tiny Tiny RSS." #, fuzzy -#~ msgid "Changing password..." -#~ msgstr "Cambia password" +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "La validazione della sessione è fallita (user agent del browser cambiato)" -#~ msgid "Clearing feed..." -#~ msgstr "Pulizia notiziario..." +#~ msgid "Assign articles to labels automatically" +#~ msgstr "Assegnare automaticamente etichette agli articoli" -#~ msgid "Clearing selected feed..." -#~ msgstr "Pulizia del notiziario selezionato..." +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "È disponibile una nuova versione di Tiny Tiny RSS (%s)." -#~ msgid "comments" -#~ msgstr "commenti" +#~ msgid "You can update using built-in updater in the Preferences or by using update.php" +#~ msgstr "Si può aggiornare tramite l'updater incluso o tramite update.php" -#~ msgid "Could not change feed URL." -#~ msgstr "Impossibile cambiare l'URL del notiziario." +#~ msgid "See the release notes" +#~ msgstr "Leggere le note di rilascio" -#~ msgid "Could not display article (missing XML object)" -#~ msgstr "Impossibili visualizzare l'articolo (manca l'oggetto XML)" +#~ msgid "Download" +#~ msgstr "Scarica" -#~ msgid "Could not update headlines (missing XML data)" -#~ msgstr "Impossibile aggiornare i sommari (dati XML mancanti)" +#~ msgid "Error receiving version information or no new version available." +#~ msgstr "Errore nel ricevere le informazioni sulla versione o nessuna nuova versione disponibile." -#~ msgid "Could not update headlines (missing XML object)" -#~ msgstr "Impossibile aggiornare i sommari (oggetto XML mancante)" +#, fuzzy +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Ritorna a Tiny Tiny RSS" -#~ msgid "Entire feed" -#~ msgstr "Intero notiziario" +#, fuzzy +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "Il database di Tiny Tiny RSS è aggiornato." -#~ msgid "Error while trying to load more headlines" -#~ msgstr "Errore durante il tentativo di caricare altre intestazioni" +#, fuzzy +#~ msgid "Force update" +#~ msgstr "Forza gli aggiornamenti" -#~ msgid "Failed to load article in new window" -#~ msgstr "Fallito il caricamento dell'articolo in una nuova finestra" +#~ msgid "Do not close this dialog until updating is finished." +#~ msgstr "Non chiudere questa finestra fino alla fine dell'aggiornamento" -#~ msgid "Failed to open window for the article" -#~ msgstr "Fallita l'apertura della finestra per l'articolo" +#~ msgid "It is suggested to backup your tt-rss directory first." +#~ msgstr "Si suggerisce di fare prima un backup della directory di tt-rss" -#, fuzzy -#~ msgid "Feed icon removed." -#~ msgstr "Notiziario non trovato." +#~ msgid "Your database will not be modified." +#~ msgstr "Il tuo database non sarà modificato" -#~ msgid "Loading feed list..." -#~ msgstr "Caricamento elenco notiziari..." +#~ 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 "La tua attuale installazione di tt-rss non verrà modificata. Verrà rinominata e lasciate nella directory principale. Potrai migrare i tuoi file dopi la fine dell'update." -#~ msgid "Local data removed." -#~ msgstr "Dati locali rimossi." +#, fuzzy +#~ msgid "Ready to update." +#~ msgstr "Pronto a aggiornare." -#~ msgid "Mark as read:" -#~ msgstr "Segna come letti:" +#, fuzzy +#~ msgid "Start update" +#~ msgstr "Avvia aggiornamento" -#~ msgid "Marking all feeds as read..." -#~ msgstr "Segnatura dei notiziari come letti..." +#~ msgid "Backup your tt-rss directory before continuing. Please type 'yes' to continue." +#~ msgstr "Fai il backup della directory di tt-rss. Scrivi 'sì' per continuare." -#~ msgid "Please wait until operation finishes." -#~ msgstr "Attendere fino a quando l'operazione non è finita." +#~ msgid "New version available!" +#~ msgstr "Nuova versione disponibile." -#~ msgid "Purging selected feed..." -#~ msgstr "Pulizia dei notiziari selezionati..." +#~ msgid "From:" +#~ msgstr "Da:" -#~ msgid "Remove selected articles from label?" -#~ msgstr "Rimuovere dall'etichetta gli articoli selezionati?" +#~ msgid "Select:" +#~ msgstr "Seleziona:" -#~ msgid "Removing feed..." -#~ msgstr "Rimozione notiziario..." +#~ msgid "mark as read" +#~ msgstr "segna come letto" -#~ msgid "Removing filter..." -#~ msgstr "Rimozione del filtro..." +#~ msgid "Change password to" +#~ msgstr "Cambiare la password a" -#~ msgid "Removing offline data..." -#~ msgstr "Rimozione dati «fuori linea»..." +#~ msgid "E-mail: " +#~ msgstr "Email:" -#~ msgid "Removing selected categories..." -#~ msgstr "Rimozione delle categorie selezionate..." +#~ msgid "Login field cannot be blank." +#~ msgstr "Il campo login non può essere vuoto." -#~ msgid "Removing selected filters..." -#~ msgstr "Rimozione dei filtri selezionati..." +#, fuzzy +#~ msgid "Saving user..." +#~ msgstr "Crea filtro..." -#~ msgid "Removing selected labels..." -#~ msgstr "Rimozione delle etichette selezionate..." +#, fuzzy +#~ msgid "Toggle marked" +#~ msgstr "Inverti con stella" #, fuzzy -#~ msgid "Removing selected profiles..." -#~ msgstr "Rimozione dei filtri selezionati..." +#~ msgid "(Un)hide empty categories" +#~ msgstr "Modifica categorie" + +#~ msgid "Published articles and generated feeds" +#~ msgstr "Articoli pubblicati e notiziari generati" -#~ msgid "Removing selected users..." -#~ msgstr "Rimozione degli utenti selezionati..." +#~ msgid "These feeds have not been updated because of errors:" +#~ msgstr "Questi notiziari non sono stati aggiornati a causa di errori:" -#~ msgid "Rescore last 100 articles in selected feeds?" -#~ msgstr "" -#~ "Cambiare il punteggio degli ultimi 100 articoli nei notiziari selezionati?" +#, fuzzy +#~ msgid "Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings." +#~ msgstr "Il browser non supporta Javascript, che è richiesto da questa applicazione per funzionare correttamente. Controllare le impostazioni del browser." -#~ msgid "Rescoring articles..." -#~ msgstr "Cambiamento del punteggio degli articoli..." +#~ msgid "Hello," +#~ msgstr "Salve," -#~ msgid "Resetting password for selected user..." -#~ msgstr "Reimpostazione della password per l'utente selezionato..." +#~ msgid "Home" +#~ msgstr "Casa" -#~ msgid "Saving article tags..." -#~ msgstr "Salvataggio etichette articolo..." +#~ msgid "Nothing found (click to reload feed)." +#~ msgstr "Non trovato (fare clic per ricaricare il notiziario)." -#~ msgid "Saving feed..." -#~ msgstr "Salvataggio notiziario..." +#~ msgid "Enable categories" +#~ msgstr "Attiva le categorie" -#~ msgid "Saving feeds..." -#~ msgstr "Salvataggio notiziari..." +#~ msgid "ON" +#~ msgstr "Acceso" -#~ msgid "Saving filter..." -#~ msgstr "Salvataggio filtro..." +#~ msgid "OFF" +#~ msgstr "Spento" -#~ msgid "Saving user..." -#~ msgstr "Salvataggio utente..." +#~ msgid "Browse categories like folders" +#~ msgstr "Sfoglia le categorie come cartelle" -#~ msgid "Selection" -#~ msgstr "Selezione" +#~ msgid "Show images in posts" +#~ msgstr "Mostrare le immagini negli articoli" + +#, fuzzy +#~ msgid "Hide read articles and feeds" +#~ msgstr "Articoli pubblicati e notiziari generati" -#~ msgid "Tiny Tiny RSS is in offline mode." -#~ msgstr "Tiny Tiny RSS è in modalità «fuori linea»." +#~ msgid "Sort feeds by unread count" +#~ msgstr "Ordinare i notiziari per numero di non letti" -#~ msgid "Trying to change e-mail..." -#~ msgstr "Tentativo di cambio dell'email..." +#, fuzzy +#~ msgid "Article archive" +#~ msgstr "Data dell'articolo" #, fuzzy -#~ msgid "Upload failed." -#~ msgstr "Articoli aggiornati" +#~ msgid "Set value" +#~ msgstr "Imposta valore" -#~ msgid "" -#~ "You have to synchronize some articles before going into offline mode." -#~ msgstr "" -#~ "Occorre sincronizzare alcuni articoli prima di andare nella modalità " -#~ "«fuori linea»." +#, fuzzy +#~ msgid "Mark %d displayed article as read?" +#~ msgid_plural "Mark %d displayed articles as read?" +#~ msgstr[0] "Segnare %d articolo visualizzato come letto?" +#~ msgstr[1] "Segnare %d articoli visualizzati come letti?" -#~ msgid "" -#~ "You won't be able to access offline version of Tiny Tiny RSS until you " -#~ "switch it into offline mode again. Go online?" -#~ msgstr "" -#~ "Non si potrà accedere alla versione «fuori linea» di Tiny Tiny RSS fino a " -#~ "quando non si cambierà la modalità a «fuori linea». Andare «in linea»?" +#~ msgid "Error: unable to load article." +#~ msgstr "Errore: impossibile caricare l'articolo." -#~ msgid "Display original article content" -#~ msgstr "Visualizza il contenuto originale dell'articolo" +#, fuzzy +#~ msgid "%d more..." +#~ msgid_plural "%d more..." +#~ msgstr[0] "%d altro..." +#~ msgstr[1] "%d altri..." -#~ msgid "All feeds updated." -#~ msgstr "Tutti i notiziari aggiornati." +#~ msgid "No unread feeds." +#~ msgstr "Nessun notiziario non letto." -#~ msgid "Can't open article: received invalid XML" -#~ msgstr "Impossibile aprire l'articolo: ricevuto XML non valido" +#~ msgid "Load more..." +#~ msgstr "Carica altri..." -#~ msgid "Changing category of selected feeds..." -#~ msgstr "Cambiamento della categoria dei notiziari selezionati..." +#~ msgid "Switch to digest..." +#~ msgstr "Passa al digest..." -#~ msgid "Erase all non-starred articles in %s?" -#~ msgstr "Eliminare tutti gli articoli senza la stella in «%s»?" +#~ msgid "Show tag cloud..." +#~ msgstr "Mostra nuvola etichette..." -#~ msgid "Published feed URL changed." -#~ msgstr "L'URL del notiziario pubblicato è cambiata." +#~ msgid "Click to play" +#~ msgstr "Fare clic per riprodurre" -#~ msgid "Trying to change address..." -#~ msgstr "Tentativo di cambio dell'indirizzo..." +#~ msgid "Play" +#~ msgstr "Riproduci" -#~ msgid "Trying to change password..." -#~ msgstr "Tentativo di cambio della password..." +#~ msgid "Visit the website" +#~ msgstr "Visita il sito web" -#~ msgid "Unsubscribing from selected feeds..." -#~ msgstr "Annullamento della sottoscrizione dai notiziari selezionati..." +#~ msgid "Select theme" +#~ msgstr "Seleziona tema" -#~ msgid "You can't clear this type of feed." -#~ msgstr "Impossibile pulire questo tipo di notiziario." +#~ msgid "Playing..." +#~ msgstr "In riproduzione..." -#~ msgid "Clear articles" -#~ msgstr "Pulisci articoli" +#~ msgid "Default interval between feed updates" +#~ msgstr "Intervallo predefinito tra gli aggiornamenti dei notiziari" -#~ msgid "Adding category %s...
    " -#~ msgstr "Aggiunta della categoria %s...
    " +#~ msgid "Could not update database" +#~ msgstr "Impossibile aggiornare il database" -#~ msgid "Done." -#~ msgstr "Fatto." +#~ msgid "Could not find necessary schema file, need version:" +#~ msgstr "Impossibile trovare il file schema necessario; serve la versione:" -#~ msgid "Visit official site" -#~ msgstr "Visita sito ufficiale" +#~ msgid ", found: " +#~ msgstr ", trovato: " -#~ msgid "Close" -#~ msgstr "Chiudi" +#~ msgid "Tiny Tiny RSS database is up to date." +#~ msgstr "Il database di Tiny Tiny RSS è aggiornato." -#~ msgid "The configuration was reset to defaults." -#~ msgstr "Questa configurazione è stata reimpostata ai valori predefiniti." +#~ msgid "Please backup your database before proceeding." +#~ msgstr "Fare il backup del database prima di procedere." -#~ msgid "Themes" -#~ msgstr "Temi" +#~ msgid "Your Tiny Tiny RSS database needs update to the latest version (%d to %d)." +#~ msgstr "Il database di Tiny Tiny RSS deve essere aggiornato all'ultima versione (%d a %d)." -#~ msgid "Change theme" -#~ msgstr "Cambia tema" +#~ msgid "Performing updates..." +#~ msgstr "Esecuzione aggiornamenti..." -#, fuzzy -#~ msgid "Hide read items" -#~ msgstr "Visualizza/Nascondi notiziari letti" +#~ msgid "Updating to version %d..." +#~ msgstr "Aggiornamento alla versione %d..." -#, fuzzy -#~ msgid "Remove selected feeds from archive?" -#~ msgstr "Rimuovere dall'etichetta gli articoli selezionati?" +#~ msgid "Checking version... " +#~ msgstr "Controllo della versione..." -#~ msgid "Search results" -#~ msgstr "Risultati della ricerca" +#~ msgid "OK!" +#~ msgstr "OK" -#~ msgid "Searched for" -#~ msgstr "Ricerca" +#~ msgid "ERROR!" +#~ msgstr "ERRORE!" -#~ msgid "More feeds..." -#~ msgstr "Altri notiziari..." +#, fuzzy +#~ msgid "Finished. Performed %d update up to schema version %d." +#~ msgid_plural "Finished. Performed %d updates up to schema version %d." +#~ msgstr[0] "Fine. Eseguito/i %d aggiornamento fino allo schema versione %d." +#~ msgstr[1] "Fine. Eseguito/i %d aggiornamenti fino allo schema versione %d." -#~ msgid "Toggle Feedlist" -#~ msgstr "Inverti elenco notiziari" +#~ msgid "Your database schema is from a newer version of Tiny Tiny RSS." +#~ msgstr "Lo schema del database è di una versione più recente di Tiny Tiny RSS." -#~ msgid "Search:" -#~ msgstr "Cerca:" +#~ msgid "Found schema version: %d, required: %d." +#~ msgstr "Versione dello schema trovata: %d, richiesta: %d." -#~ msgid "Order:" -#~ msgstr "Ordine:" +#~ msgid "Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer version and continue." +#~ msgstr "Impossibile aggiornare lo schema. Aggiornare i file di Tiny Tiny RSS a una nuova versione e continuare." -#~ msgid "browse more" -#~ msgstr "sfoglia altre" +#~ msgid "Enable external API" +#~ msgstr "Attiva API esterna" -#~ msgid "Feed browser is administratively disabled." -#~ msgstr "Lo sfoglio del notiziario è disabilitato dall'amministratore." +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Quando questa opzione è attivata, i sommari nei notiziari speciali e nelle etichette vengono raggruppati per notiziario" -#~ msgid "Top" -#~ msgstr "N°" +#~ msgid "Title or Content" +#~ msgstr "Titolo o contenuto" -#~ msgid "Show" -#~ msgstr "Mostra" +#~ msgid "Link" +#~ msgstr "Collegamento" -#~ msgid "Hide from \"Other Feeds\"" -#~ msgstr "Nascondere in \"Altri notiziari\"" +#~ msgid "Content" +#~ msgstr "Contenuto" -#~ msgid "Unable to delete non empty feed categories." -#~ msgstr "Impossibile eliminare categorie di notiziario non vuote." +#~ msgid "Article Date" +#~ msgstr "Data dell'articolo" -#~ msgid "(Hidden)" -#~ msgstr "(Nascosto)" +#~ msgid "Set starred" +#~ msgstr "Imposta con stella" -#~ msgid "Recategorize" -#~ msgstr "Reimposta categoria" +#~ msgid "Assign tags" +#~ msgstr "Assegna etichette" -#~ msgid "Other:" -#~ msgstr "Altro:" +#~ 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 "Questa opzione è utile quando si stanno leggendo vari aggregatori di tipo «planet» con utenti che si sovrappongono parzialmente. Quando disattivata forza articoli identici da notiziari differenti ad apparire una volta sola." -#~ msgid "Generate another link" -#~ msgstr "Genera altro collegamento" +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "La sintassi della data sembra corretta:" -#~ msgid "View feeds" -#~ msgstr "Visualizza notiziari" +#~ msgid "Date syntax is incorrect." +#~ msgstr "La sintassi della data non è corretta." -#~ msgid "View tags" -#~ msgstr "Visualizza etichette" +#~ msgid "Notice" +#~ msgstr "Notifica" -#~ msgid "Back" -#~ msgstr "Indietro" +#~ msgid "Tag Cloud" +#~ msgstr "Nuvola etichette" -#~ msgid "View:" -#~ msgstr "Vista:" +#~ msgid "Mark all visible articles in %s as read?" +#~ msgstr "Segnare tutti gli articoli visibili in «%s» come letti?" -#~ msgid "Refresh" -#~ msgstr "Aggiorna" +#~ msgid "Score" +#~ msgstr "Punteggio" -#~ msgid "Page" -#~ msgstr "Pagina" +#~ msgid "New articles available in this feed (click to show)" +#~ msgstr "Nuovi articoli disponibili per questo notiziario (fare clic per mostrarli)" #, fuzzy -#~ msgid "Back to feedlist" -#~ msgstr "Fare clic per modificare" - -#~ msgid "Tags:" -#~ msgstr "Etichette:" +#~ msgid "Share on identi.ca" +#~ msgstr "Condividi su identi.ca" #, fuzzy -#~ msgid "Mark as unread" -#~ msgstr "Segna come letto" +#~ msgid "Flattr this article." +#~ msgstr "Usa Flattr per questo articolo" -#~ msgid "Where:" -#~ msgstr "Dove:" +#, fuzzy +#~ msgid "Share on Google+" +#~ msgstr "Condividi su Google+" -#~ msgid "Match on:" -#~ msgstr "Corrisponde a:" +#, fuzzy +#~ msgid "Share on Twitter" +#~ msgstr "Condividi su Twitter" -#~ msgid "Internal error: Function not implemented" -#~ msgstr "Errore interno: funzione non implementata" +#, fuzzy +#~ msgid "Show additional preferences" +#~ msgstr "Mostra preferenze addizionali" #, fuzzy -#~ msgid "Click to view" -#~ msgstr "Fare clic per modificare" +#~ msgid "Back to feeds" +#~ msgstr "Torna ai notiziari" -#~ msgid "MySQL Charset Updater" -#~ msgstr "Aggiornatore del set di caratteri di MySQL" +#~ msgid "This will clear your stored authentication information for Twitter. Continue?" +#~ msgstr "Questo cancellerà le informazioni di autenticazione memorizzate per Twitter. Continuare?" -#~ msgid "" -#~ "This script is for Tiny Tiny RSS installations with MySQL backend only." -#~ msgstr "Questo script è solo per installazioni di Tiny Tiny RSS su MySQL." +#, fuzzy +#~ msgid "Clearing credentials..." +#~ msgstr "Cancellando le credenziali memorizzate..." -#~ msgid "" -#~ "This script will convert your Tiny Tiny RSS database to UTF-8. \n" -#~ "\t\t\tDepending on current database charset you may experience data " -#~ "corruption (lost accent characters, etc.). \n" -#~ "\t\t\tAfter update, you'll have to set MYSQL_CHARSET option in " -#~ "config.php to 'utf8'." -#~ msgstr "" -#~ "Questo script convertirà il database di Tiny Tiny RSS a UTF-8. \n" -#~ "\t\t\tIn base all'insieme di caratteri attuale del database si " -#~ "potrebbero avere delle corruzioni dei dati (caratteri accentati persi, " -#~ "ecc.). \n" -#~ "\t\t\tDopo l'aggiornamento, occorre impostare l'opzione a «utf8» " -#~ "MYSQL_CHARSET in config.php." +#~ msgid "Updated" +#~ msgstr "Aggiornato" -#~ msgid "Converting database..." -#~ msgstr "Conversione del database..." +#~ msgid "Notifying %s." +#~ msgstr "Notifica a %s" -#~ msgid "Feed information:" -#~ msgstr "Informazioni notiziario:" +#~ msgid "Yes" +#~ msgstr "Sì" -#~ msgid "Site:" -#~ msgstr "Sito:" +#~ msgid "No" +#~ msgstr "No" -#~ msgid "Last updated:" -#~ msgstr "Ultimo aggiornamento:" +#~ msgid "News" +#~ msgstr "Notizie" -#~ msgid "Last headlines:" -#~ msgstr "Ultimi sommari:" +#~ msgid "Move between feeds" +#~ msgstr "Sposta tra notiziari" -#~ msgid "" -#~ "Feed browser cache information is missing. Please refer to the wiki for more information." -#~ msgstr "" -#~ "Mancano le informazioni della cache del browser notiziari. Fare " -#~ "riferimento al wiki per maggiori informazioni." +#~ msgid "Move between articles" +#~ msgstr "Sposta tra articoli" -#~ msgid "Couldn't find any feeds available for subscription." -#~ msgstr "" -#~ "Impossibile trovare dei notiziari disponibili per la sottoscrizione." +#~ msgid "Mark articles below/above active one as read" +#~ msgstr "Segnare gli articoli sopra e sotto quello attivo come letti" -#~ msgid "Labels and SQL Expressions" -#~ msgstr "Etichette ed espressioni SQL" +#~ msgid "Other actions" +#~ msgstr "Altre azioni" -#~ msgid "" -#~ "Label content is generated using SQL expressions. The «SQL " -#~ "expression» is added to WHERE clause of view feed query. You can " -#~ "match on ttrss_entries table fields and even use subselect to query " -#~ "additional information. This \tfunctionality is considered to be advanced " -#~ "and requires some understanding of SQL." -#~ msgstr "" -#~ "Il contenuto dell'etichetta è generato utilizzando l'" -#~ "espressione SQL. L'«espressione SQL» è aggiunta alla " -#~ "clausola WHERE dell'interrogazione di visualizzazione del " -#~ "notiziario. Può corrispondere ai campi della tabella ttrss_entries e " -#~ "anche utilizzare sotto selezioni per interrogare informazioni " -#~ "addizionali. Questa \tfunzionalità è considerata avanzata e richiede " -#~ "qualche conoscenza di SQL." +#~ msgid "Display this help dialog" +#~ msgstr "Visualizza questo dialogo di aiuto" -#~ msgid "Examples" -#~ msgstr "Esempi" - -#~ msgid "Match all unread articles:" -#~ msgstr "Corrispondenza ad articoli non letti:" - -#~ msgid "Matches all articles which mention Linux in the title:" -#~ msgstr "" -#~ "Corrispondenza a tutti gli articoli che menzionano Linux nel titolo:" - -#~ msgid "Matches all articles for the last week (PostgreSQL):" -#~ msgstr "" -#~ "Corrispondenza a tutti gli ariticli dell'ultima settimana " -#~ "(PostgreSQL):" - -#~ msgid "Matches all articles with scores between 100 and 500:" -#~ msgstr "Corrispondenza a tutti gli articoli con punteggio tra 100 e 500:" - -#~ msgid "  Keyboard shortcuts" -#~ msgstr "  Scorciatoie da tastiera" - -#, fuzzy -#~ msgid "description" -#~ msgstr "Selezione" - -#~ msgid "Can't add user: no login specified." -#~ msgstr "Impossibile aggiungere l'utente: nessun accesso specificato." - -#~ msgid "Can't create label: missing SQL expression." -#~ msgstr "Impossibile creare l'etichetta: espressione SQL mancante." - -#~ msgid "Loading help..." -#~ msgstr "Caricamento manuale..." - -#~ msgid "Saving label..." -#~ msgstr "Salvataggio etichetta..." - -#~ msgid "Please select only one label." -#~ msgstr "Selezionare una sola etichetta." - -#~ msgid "Please select only one category." -#~ msgstr "Selezionare una sola categoria." - -#~ msgid "Address changed." -#~ msgstr "Indirizzo cambiato" - -#~ msgid "" -#~ "Rescore articles in all feeds? This operation may take a lot of time." -#~ msgstr "" -#~ "Cambiare il punteggio in tutti i notiziari? Questa operazione può durare " -#~ "molto tempo." - -#~ msgid "Rescoring feeds..." -#~ msgstr "Cambiamento del punteggio dei notiziari..." - -#, fuzzy -#~ msgid "Restart in offline mode" -#~ msgstr "Controllo della configurazione fallito" - -#~ msgid "" -#~ "Fatal Error: You forgot to copy \n" -#~ "\t\tconfig.php-dist to config.php and edit it.\n" -#~ msgstr "" -#~ "Errore fatale: non è stato copiato \n" -#~ "\t\tconfig.php-dist in config.php e modificato.\n" - -#~ msgid "" -#~ "config: your config file version is incorrect. See config.php-dist.\n" -#~ msgstr "" -#~ "config: la versione del file config non è corretta. Vedere config.php-" -#~ "dist.\n" - -#~ msgid "" -#~ "Fatal error: RSS_BACKEND_TYPE is deprecated. Please remove this\n" -#~ "\t\t\toption from config.php\n" -#~ msgstr "" -#~ "Errore fatale: RSS_BACKEND_TYPE è deprecata. Rimuovere\n" -#~ "\t\tquesta opzione da config.php\n" - -#~ msgid "" -#~ "Fatal Error: XML Import/Export tools (xml-export.php\n" -#~ "\t\tand xml-import.php) could be used maliciously. Please remove " -#~ "them \n" -#~ "\t\tfrom your TT-RSS instance.\n" -#~ msgstr "" -#~ "Errore fatale: gli strumenti di importazione/esportazione XML\n" -#~ "\t\t(xml-export.php e xml-import.php) potrebbero essere " -#~ "utilizzati\n" -#~ "\t\tmalevolmente. Rimuoverli\n" - -#~ msgid "" -#~ "Fatal Error: Please set DAEMON_UPDATE_LOGIN_LIMIT\n" -#~ "\t\t\tto 0 in single user mode.\n" -#~ msgstr "" -#~ "Errore fatale: impostare DAEMON_UPDATE_LOGIN_LIMIT\n" -#~ "\t\t\ta 0 nella modalità singolo utente.\n" +#, fuzzy +#~ msgid "Select starred articles" +#~ msgstr "Articoli con stella" -#~ msgid "" -#~ "Fatal Error: You have enabled USE_CURL_FOR_ICONS, but your PHP \n" -#~ "\t\t\tdoesn't seem to support CURL functions." -#~ msgstr "" -#~ "Errore fatale: è stato abilitato USE_CURL_FOR_ICONS, ma PHP \n" -#~ "\t\t\tnon sembra supportare le funzioni di CURL." +#~ msgid "Feed actions" +#~ msgstr "Azioni notiziari" -#~ msgid "config: SESSION_EXPIRE_TIME is undefined" -#~ msgstr "configurazione: SESSION_EXPIRE_TIME non è definita." +#~ msgid "If viewing category, (un)collapse it" +#~ msgstr "Se in visualizzazione categoria, contraila/espandila" -#~ msgid "config: SESSION_EXPIRE_TIME is too low (less than 60)" -#~ msgstr "configurazione: SESSION_EXPIRE_TIME è troppo bassa (meno di 60)" +#~ msgid "Press any key to close this window." +#~ msgstr "Premere qualsiasi tasto per chiudere questa finestra." -#, fuzzy -#~ msgid "config: SESSION_EXPIRE_TIME should be greater or equal to" -#~ msgstr "" -#~ "configurazione: SESSION_EXPIRE_TIME dovrebbe essere maggiore o uguale a " -#~ "SESSION_COOKIE_LIFETIME" +#~ msgid "My Feeds" +#~ msgstr "Notiziari" -#~ msgid "" -#~ "config: DATABASE_BACKED_SESSIONS is incompatible with SINGLE_USER_MODE" -#~ msgstr "" -#~ "configurazione: DATABASE_BACKED_SESSIONS non è compatibile con " -#~ "SINGLE_USER_MODE" +#~ msgid "Panel actions" +#~ msgstr "Riquadro azioni" -#~ msgid "config: DATABASE_BACKED_SESSIONS are currently broken with MySQL" -#~ msgstr "" -#~ "configurazione: DATABASE_BACKED_SESSIONS sono attualmente non funzionanti " -#~ "con MySQL" +#~ msgid "Top 25 feeds" +#~ msgstr "Primi 25 notiziari" -#~ msgid "" -#~ "config: MAIL_FROM has been split into DIGEST_FROM_NAME and " -#~ "DIGEST_FROM_ADDRESS" -#~ msgstr "" -#~ "configurazione: MAIL_FROM è stata divisa in DIGEST_FROM_NAME e " -#~ "DIGEST_FROM_ADDRESS" +#~ msgid "Edit feed categories" +#~ msgstr "Modifica categorie notiziari" -#~ msgid "config: option COUNTERS_MAX_AGE expected, but not defined" -#~ msgstr "" -#~ "configurazione: è attesa l'opzione COUNTERS_MAX_AGE, ma non è stata " -#~ "definita" +#~ msgid "Focus search (if present)" +#~ msgstr "Attiva la ricerca (se presente)" -#~ msgid "" -#~ "config: option DAEMON_REFRESH_ONLY is obsolete. Please remove this option " -#~ "and read about other ways to update feeds on the wiki." -#~ msgstr "" -#~ "configurazione: l'opzione DAEMON_REFRESH_ONLY è obsoleta. Rimuovere " -#~ "questa opzione e leggere per altri modi di aggiornare i notiziari sul wiki." - -#~ msgid "Unknown Error" -#~ msgstr "Errore sconosciuto" +#~ msgid "Note: not all actions may be available, depending on Tiny Tiny RSS configuration and your access level." +#~ msgstr "Notare: non tutte le azioni potrebbero essere disponibili, in base alla configurazione di Tiny Tiny RSS e al proprio livello di accesso." -#~ msgid "Other feeds: Top 25" -#~ msgstr "Altri notiziari: primi 25" +#~ msgid "Open article in new tab" +#~ msgstr "Apri articolo in una nuova scheda" -#~ msgid "Showing top 25 registered feeds, sorted by popularity:" -#~ msgstr "Mostra i primi 25 notiziari registrati, ordinati per popolarità:" - -#~ msgid "Top 25" -#~ msgstr "Primi 25" - -#~ msgid "Content Filtering" -#~ msgstr "Filtro contenuti" +#~ msgid "Right-to-left content" +#~ msgstr "Contenuto da destra a sinistra" -#~ msgid "Label Editor" -#~ msgstr "Editor etichette" +#, fuzzy +#~ msgid "Cache content locally" +#~ msgstr "Memorizzare le immagini localmente" -#~ msgid "User Manager" -#~ msgstr "Gestore utenti" +#~ msgid "Mark posts as updated on content change" +#~ msgstr "Segnare gli articoli come aggiornati al cambiamento del contenuto" -#~ msgid "Toggle:" -#~ msgstr "Inverti:" +#~ msgid "Loading..." +#~ msgstr "Caricamento..." -#~ msgid "  Subscribe to feed" -#~ msgstr "  Sottoscrivi il notiziario" +#~ msgid "View in a tt-rss tab" +#~ msgstr "Visualizza in una scheda tt-rss" -#~ msgid "  Edit this feed" -#~ msgstr "  Modifica questo notiziario" +#~ msgid "Magpie" +#~ msgstr "Magpie" -#~ msgid "  Clear articles" -#~ msgstr "  Pulisci articoli" +#~ msgid "SimplePie" +#~ msgstr "SimplePie" -#~ msgid "  Rescore feed" -#~ msgstr "  Cambio punteggio al notiziario" +#~ msgid "using" +#~ msgstr "usando" -#~ msgid "  Unsubscribe" -#~ msgstr "  Annullare sottoscrizione" +#~ msgid "match on" +#~ msgstr "corrisponde a" -#~ msgid "  Mark as read" -#~ msgstr "  Segna come letto" +#~ msgid "Title or content" +#~ msgstr "Titolo o contenuto" -#~ msgid "  (Un)hide read feeds" -#~ msgstr "  Visualizza/Nascondi notiziari letti" +#~ msgid "Your request could not be completed." +#~ msgstr "La richiesta non può essere completata." -#, fuzzy -#~ msgid "  Create label" -#~ msgstr "  Crea filtro" +#~ msgid "Feed update has been scheduled." +#~ msgstr "L'aggiornamento del notiziario è stato pianificato con successo." -#~ msgid "  Create filter" -#~ msgstr "  Crea filtro" +#~ msgid "Category update has been scheduled." +#~ msgstr "Pianificato l'aggiornamento della categoria." -#~ msgid "  Reset category order" -#~ msgstr "  Reimposta ordine categoria" +#~ msgid "Can't update this kind of feed." +#~ msgstr "Impossibile aggiornare questo tipo di notiziario." -#~ msgid "" -#~ "This panel shows feeds subscribed by other users of this system, just in " -#~ "case you are interested in them too." -#~ msgstr "" -#~ "Questo riquadro mostra i notiziari sottoscritti da altri utenti di questo " -#~ "sistema, in caso si sia interessati anche a questi." +#~ msgid "Update feed" +#~ msgstr "Aggiorna notiziario" -#~ msgid "Match " -#~ msgstr "Corrisponde " +#, fuzzy +#~ msgid "With subcategories" +#~ msgstr "Modifica categorie" -#~ msgid "Unread articles" -#~ msgstr "Articoli non letti" +#~ msgid "Twitter OAuth" +#~ msgstr "Twitter OAuth" -#~ msgid "Title contains" -#~ msgstr "Il titolo contiene" +#~ msgid "
  • Adding category %s.
  • " +#~ msgstr "
  • Aggiunta della categoria %s.
  • " -#~ msgid "Content contains" -#~ msgstr "Il contenuto contiene" +#~ msgid "OK" +#~ msgstr "OK" -#~ msgid "Score equals" -#~ msgstr "Il punteggio è" +#~ msgid "Register with Twitter" +#~ msgstr "Registra su Twitter" -#~ msgid "Score is greater than" -#~ msgstr "Il punteggio è maggiore di" +#~ msgid "Could not connect to Twitter. Refresh the page or try again later." +#~ msgstr "Impossibile connettersi a Twitter. Aggiornare la pagina o provare più tardi." -#~ msgid "Score is less than" -#~ msgstr "Il punteggio è minore di" +#~ msgid "Congratulations! You have successfully registered with Twitter." +#~ msgstr "Registrazione su Twitter effettuata con successo." -#~ msgid "Articles newer than X hours" -#~ msgstr "Articoli più recenti di X ore" +#~ msgid "before" +#~ msgstr "prima" -#~ msgid "Articles newer than X days" -#~ msgstr "Articoli più recenti di X giorni" +#~ msgid "after" +#~ msgstr "dopo" -#~ msgid "Add" -#~ msgstr "Aggiungi" +#~ msgid "Check it" +#~ msgstr "Controllalo" -#~ msgid "" -#~ "Sorry, labels have been administratively disabled for this installation. " -#~ "Please contact instance owner or edit configuration file to enable this " -#~ "functionality." -#~ msgstr "" -#~ "Le etichette sono state disabilitate dall'amministratore per questa " -#~ "installazione. Contattare il proprietario dell'istanza o modificare " -#~ "il file di configurazione per abilitare questa funzionalità." +#~ msgid "Category $%s already exists in the database." +#~ msgstr "La categoria %s esiste già nel database." -#~ msgid "Caption" -#~ msgstr "Intestazione" +#~ msgid "No feed categories defined." +#~ msgstr "Nessuna categoria notiziari definita." -#~ msgid "Match SQL" -#~ msgstr "SQL di corrispondenza" +#~ msgid "Hint: you can drag feeds and categories around." +#~ msgstr "Suggerimento: si possono trascinare in giro i notiziari e le categorie." -#~ msgid "Error: SQL expression is blank." -#~ msgstr "Errore: l'espressione SQL è vuota." +#~ msgid "Subscribing using bookmarklet" +#~ msgstr "Sottoscrizione usando bookmarklet" -#~ msgid "Saved label %s" -#~ msgstr "Etichetta %s salvata" +#~ msgid "Twitter" +#~ msgstr "Twitter" -#~ msgid "SQL Expression" -#~ msgstr "Espressione SQL" +#~ msgid "Before you can update your Twitter feeds, you must register this instance of Tiny Tiny RSS with Twitter.com." +#~ msgstr "Prima di poter aggiornare i notiziari di Twitter, occorre registrare questa instanza di Tiny Tiny RSS su Twitter.com." -#~ msgid "[No caption]" -#~ msgstr "[Nessuna intestazione]" +#~ msgid "You have been successfully registered with Twitter.com and should be able to access your Twitter feeds." +#~ msgstr "La registrazione su Twitter.com è avvenuta con successo; adesso si è in grado di accedere a notiziari di Twitter." -#~ msgid "Search to label" -#~ msgstr "Cerca per etichetta" +#~ msgid "Register with Twitter.com" +#~ msgstr "Registra su Twitter.com" -#~ msgid "Convert to label" -#~ msgstr "Converti a etichetta" +#~ msgid "Created filter %s" +#~ msgstr "Filtro %s creato" -#~ msgid "Dashboard" -#~ msgstr "Bacheca" +#~ msgid "Attachment:" +#~ msgstr "Allegato:" -#~ msgid "Create Label" -#~ msgstr "Crea etichetta" +#~ msgid "Subscribing to feed..." +#~ msgstr "Sottoscrizione al notiziario..." -#~ msgid "Test" -#~ msgstr "Prova" +#~ msgid "Filter Test Results" +#~ msgstr "Filtra risultati di prova" -#~ msgid "Filter expression" -#~ msgstr "Espressione del filtro" +#~ msgid "When \"Mark as read\" button is clicked in toolbar, automatically open next feed with unread articles." +#~ msgstr "Quando viene fatto clic sul pulsante \"Segna come letto\" nella barra degli strumenti, aprire automaticamente il successvo notiziario con articoli non letti." diff --git a/locale/ja_JP/LC_MESSAGES/messages.mo b/locale/ja_JP/LC_MESSAGES/messages.mo index fe78e70a00..9f59496eef 100644 Binary files a/locale/ja_JP/LC_MESSAGES/messages.mo and b/locale/ja_JP/LC_MESSAGES/messages.mo differ diff --git a/locale/ja_JP/LC_MESSAGES/messages.po b/locale/ja_JP/LC_MESSAGES/messages.po index 093f1d8605..f62c8fb23c 100644 --- a/locale/ja_JP/LC_MESSAGES/messages.po +++ b/locale/ja_JP/LC_MESSAGES/messages.po @@ -7,3111 +7,3730 @@ msgid "" msgstr "" "Project-Id-Version: tt-rss unstable\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-22 22:16+0300\n" -"PO-Revision-Date: 2009-05-12 03:25+0900\n" -"Last-Translator: Tadashi Jokagi \n" -"Language-Team: Japanese \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2013-07-13 11:05+0900\n" +"Last-Translator: Yak! \n" +"Language-Team: \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: backend.php:107 +#: backend.php:73 msgid "Use default" msgstr "標準を使用ã™ã‚‹" -#: backend.php:108 +#: backend.php:74 msgid "Never purge" msgstr "ãšã£ã¨å‰Šé™¤ã—ãªã„" -#: backend.php:109 +#: backend.php:75 msgid "1 week old" msgstr "1 週間å‰" -#: backend.php:110 +#: backend.php:76 msgid "2 weeks old" msgstr "2 週間å‰" -#: backend.php:111 +#: backend.php:77 msgid "1 month old" msgstr "1 ヶ月å‰" -#: backend.php:112 +#: backend.php:78 msgid "2 months old" msgstr "2 日月å‰" -#: backend.php:113 +#: backend.php:79 msgid "3 months old" msgstr "3 ヶ月å‰" -#: backend.php:116 +#: backend.php:82 msgid "Default interval" msgstr "æ›´æ–°ã®é–“éš”" -#: backend.php:117 backend.php:127 +#: backend.php:83 +#: backend.php:93 msgid "Disable updates" msgstr "更新を無効ã«ã™ã‚‹" -#: backend.php:118 backend.php:128 -msgid "Each 15 minutes" +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" msgstr "å„ 15 分" -#: backend.php:119 backend.php:129 -msgid "Each 30 minutes" +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" msgstr "å„ 30 分" -#: backend.php:120 backend.php:130 +#: backend.php:86 +#: backend.php:96 msgid "Hourly" msgstr "毎時" -#: backend.php:121 backend.php:131 -msgid "Each 4 hours" +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" msgstr "å„ 4 時間" -#: backend.php:122 backend.php:132 -msgid "Each 12 hours" +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" msgstr "å„ 12 時間" -#: backend.php:123 backend.php:133 +#: backend.php:89 +#: backend.php:99 msgid "Daily" msgstr "毎日" -#: backend.php:124 backend.php:134 +#: backend.php:90 +#: backend.php:100 msgid "Weekly" msgstr "毎週" -#: backend.php:137 tt-rss.php:220 modules/pref-prefs.php:329 -msgid "Default" -msgstr "標準" - -#: backend.php:138 -msgid "Magpie" -msgstr "Magpie" - -#: backend.php:139 -msgid "SimplePie" -msgstr "SimplePie" - -#: backend.php:148 modules/pref-users.php:126 +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 msgid "User" msgstr "ユーザー" -#: backend.php:149 +#: backend.php:104 msgid "Power User" msgstr "パワーユーザー" -#: backend.php:150 +#: backend.php:105 msgid "Administrator" msgstr "管ç†è€…" -#: backend.php:538 login_form.php:142 modules/backend-rpc.php:61 -#: modules/popup-dialog.php:106 -#, fuzzy -msgid "Default profile" -msgstr "標準ã®è¨˜äº‹åˆ¶é™" - -#: errors.php:3 -msgid "Unknown error" -msgstr "未知ã®ã‚¨ãƒ©ãƒ¼" +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "ã“ã®ãƒ—ログラム㯠XmlHttpRequest ãŒæ­£ã—ãæ©Ÿèƒ½ã™ã‚‹ã“ã¨ã‚’è¦æ±‚ã—ã¾ã™ã€‚ã‚ãªãŸã®ãƒ–ラウザーã¯ãれをサãƒãƒ¼ãƒˆã—ã¦ã„ãªã„よã†ã«è¦‹ãˆã¾ã™ã€‚" -#: errors.php:5 -msgid "" -"This program requires XmlHttpRequest to function properly. Your browser " -"doesn't seem to support it." -msgstr "" -"ã“ã®ãƒ—ログラム㯠XmlHttpRequest ãŒæ­£ã—ãæ©Ÿèƒ½ã™ã‚‹ã“ã¨ã‚’è¦æ±‚ã—ã¾ã™ã€‚ã‚ãªãŸã®ãƒ–" -"ラウザーã¯ãれをサãƒãƒ¼ãƒˆã—ã¦ã„ãªã„よã†ã«è¦‹ãˆã¾ã™ã€‚" - -#: errors.php:8 -msgid "" -"This program requires cookies to function properly. Your browser doesn't " -"seem to support them." -msgstr "" -"ã“ã®ãƒ—ログラム㯠Cookie ãŒæ­£ã—ãæ©Ÿèƒ½ã™ã‚‹ã“ã¨ã‚’è¦æ±‚ã—ã¾ã™ã€‚ã‚ãªãŸã®ãƒ–ラウザー" -"ã¯ãれをサãƒãƒ¼ãƒˆã—ã¦ã„ãªã„よã†ã«è¦‹ãˆã¾ã™ã€‚" +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "ã“ã®ãƒ—ログラム㯠Cookie ãŒæ­£ã—ãæ©Ÿèƒ½ã™ã‚‹ã“ã¨ã‚’è¦æ±‚ã—ã¾ã™ã€‚ã‚ãªãŸã®ãƒ–ラウザーã¯ãれをサãƒãƒ¼ãƒˆã—ã¦ã„ãªã„よã†ã«è¦‹ãˆã¾ã™ã€‚" -#: errors.php:11 -msgid "Backend sanity check failed" +#: errors.php:15 +msgid "Backend sanity check failed." msgstr "ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã®å¥å…¨ã•ã®ç¢ºèªã«å¤±æ•—ã—ã¾ã—ãŸ" -#: errors.php:13 +#: errors.php:17 msgid "Frontend sanity check failed." msgstr "フロントエンドã®å¥å…¨ã•ã®ç¢ºèªã«å¤±æ•—ã—ã¾ã—ãŸã€‚" -#: errors.php:15 -msgid "" -"Incorrect database schema version. <a href='update.php'>Please " -"update</a>." -msgstr "" -"データベーススキーマã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒé©åˆ‡ã§ã¯ã‚りã¾ã›ã‚“。<a href='update." -"php'>æ›´æ–°ã—ã¦ãã ã•ã„</a>。" +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "データベーススキーマã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒé©åˆ‡ã§ã¯ã‚りã¾ã›ã‚“。<a href='db-updater.php'>æ›´æ–°ã—ã¦ãã ã•ã„</a>." -#: errors.php:17 +#: errors.php:21 msgid "Request not authorized." msgstr "è¦æ±‚ã¯èªè¨¼ã•れã¦ã„ã¾ã›ã‚“。" -#: errors.php:19 +#: errors.php:23 msgid "No operation to perform." msgstr "実行ã™ã‚‹æ“作ãŒã‚りã¾ã›ã‚“。" -#: errors.php:21 -msgid "" -"Could not display feed: query failed. Please check label match syntax or " -"local configuration." -msgstr "" -"フィードを表示ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“: å•ã„åˆã‚ã›ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ラベルã«ä¸€è‡´ã™" -"る文法ã€ã¾ãŸã¯ãƒ­ãƒ¼ã‚«ãƒ«ã®è¨­å®šã‚’確èªã—ã¦ãã ã•ã„。" +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "フィードを表示ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“: å•ã„åˆã‚ã›ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ラベルã«ä¸€è‡´ã™ã‚‹æ–‡æ³•ã€ã¾ãŸã¯ãƒ­ãƒ¼ã‚«ãƒ«ã®è¨­å®šã‚’確èªã—ã¦ãã ã•ã„。" -#: errors.php:23 +#: errors.php:27 msgid "Denied. Your access level is insufficient to access this page." -msgstr "" -"æ‹’å¦ã—ã¾ã™ã€‚ã“ã®ãƒšãƒ¼ã‚¸ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’ã™ã‚‹ã«ã¯ã‚¢ã‚¯ã‚»ã‚¹ãƒ¬ãƒ™ãƒ«ãŒä¸è¶³ã—ã¾ã™ã€‚" +msgstr "æ‹’å¦ã—ã¾ã™ã€‚ã‚ãªãŸã®æ¨©é™ã§ã¯ã€ã“ã®ãƒšãƒ¼ã‚¸ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“。" -#: errors.php:25 +#: errors.php:29 msgid "Configuration check failed" msgstr "設定ã®ç¢ºèªã§å¤±æ•—" -#: errors.php:27 -msgid "" -"Your version of MySQL is not currently supported. Please see \n" -"\t\tofficial site for more information." -msgstr "" -"MySQL ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒç¾åœ¨ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。オフィシャルウェブサイト\n" -"\t\tã®è¿½åŠ æƒ…å ±ã‚’å‚ç…§ã—ã¦ãã ã•ã„。" +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "MySQL ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒç¾åœ¨ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。オフィシャルウェブサイトã®è¿½åŠ æƒ…å ±ã‚’å‚ç…§ã—ã¦ãã ã•ã„。" -#: errors.php:32 +#: errors.php:35 msgid "SQL escaping test failed, check your database and PHP configuration" -msgstr "" -"SQL ã®ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—処ç†ã®ãƒ†ã‚¹ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚データベースã®è¨­å®šã¨ PHP ã®è¨­å®šã‚’" -"確èªã—ã¦ãã ã•ã„。" - -#: functions.php:1928 -msgid "Session failed to validate (incorrect IP)" -msgstr "ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®æ¤œæŸ»ã«å¤±æ•—ã—ã¾ã—㟠(IP ãŒæ­£ã—ããªã„)" - -#: functions.php:1998 -msgid "Incorrect username or password" -msgstr "ユーザーåã‹ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ãŒæ­£ã—ãã‚りã¾ã›ã‚“" +msgstr "SQLã®ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—処ç†ã®ãƒ†ã‚¹ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚データベースã¨PHPã®è¨­å®šã‚’確èªã—ã¦ãã ã•ã„。" -#: functions.php:2979 modules/popup-dialog.php:391 -#: modules/pref-filters.php:420 -msgid "All feeds" -msgstr "ã™ã¹ã¦ã®ãƒ•ィード" - -#: functions.php:3011 functions.php:3050 functions.php:4447 functions.php:4475 -#: modules/backend-rpc.php:859 modules/pref-feeds.php:1333 -msgid "Uncategorized" -msgstr "カテゴリー割り当ã¦ãªã—" +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "フィードãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" -#: functions.php:3040 functions.php:3689 modules/backend-rpc.php:864 -#: mobile/functions.php:170 -msgid "Special" -msgstr "特別" +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "ユーザーãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" -#: functions.php:3042 functions.php:3691 prefs.php:114 -#: modules/backend-rpc.php:869 help/4.php:12 mobile/functions.php:197 -msgid "Labels" -msgstr "ラベル" +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "読ã¿è¾¼ã¿ã‚“ã§ã„ã¾ã™ã€‚ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„..." -#: functions.php:3087 help/3.php:60 offline.js:493 offline.js:1425 -msgid "Starred articles" -msgstr "ãŠæ°—ã«å…¥ã‚Šã®è¨˜äº‹" +#: index.php:167 +msgid "Collapse feedlist" +msgstr "フィード一覧を閉ã˜ã‚‹" -#: functions.php:3089 modules/pref-feeds.php:1492 help/3.php:61 -msgid "Published articles" -msgstr "公開済ã¿ã®è¨˜äº‹" +#: index.php:170 +msgid "Show articles" +msgstr "記事を表示" -#: functions.php:3091 help/3.php:59 -msgid "Fresh articles" -msgstr "æ–°ã—ã„記事" +#: index.php:173 +msgid "Adaptive" +msgstr "é©å¿œçš„" -#: functions.php:3093 help/3.php:58 offline.js:488 offline.js:1427 -msgid "All articles" +#: index.php:174 +msgid "All Articles" msgstr "ã™ã¹ã¦ã®è¨˜äº‹" -#: functions.php:3095 -#, fuzzy -msgid "Archived articles" -msgstr "未読記事" - -#: functions.php:4200 -msgid "Generated feed" -msgstr "生æˆã—ãŸãƒ•ィード" - -#: functions.php:4205 functions.php:5553 modules/popup-dialog.php:82 -#: modules/pref-feeds.php:1087 modules/pref-feeds.php:1297 -#: modules/pref-filters.php:377 modules/pref-labels.php:183 -#: modules/pref-users.php:419 offline.js:408 -msgid "Select:" -msgstr "é¸æŠž:" +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "ãŠæ°—ã«å…¥ã‚Š" -#: functions.php:4206 modules/popup-dialog.php:83 modules/pref-feeds.php:1088 -#: modules/pref-feeds.php:1298 modules/pref-filters.php:378 -#: modules/pref-labels.php:184 modules/pref-users.php:420 -msgid "All" -msgstr "ã™ã¹ã¦" +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "公開済ã¿" -#: functions.php:4207 functions.php:4224 tt-rss.php:213 +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 msgid "Unread" msgstr "未読" -#: functions.php:4208 -msgid "Invert" -msgstr "å転" +#: index.php:178 +msgid "With Note" +msgstr "ノート付ã" -#: functions.php:4209 modules/popup-dialog.php:84 modules/pref-feeds.php:1089 -#: modules/pref-feeds.php:1299 modules/pref-filters.php:379 -#: modules/pref-labels.php:185 modules/pref-users.php:421 -msgid "None" -msgstr "ãªã—" +#: index.php:179 +msgid "Ignore Scoring" +msgstr "スコア計算ã®ç„¡åŠ¹åŒ–" -#: functions.php:4217 tt-rss.php:178 offline.js:184 -msgid "Actions..." -msgstr "æ“作..." +#: index.php:182 +msgid "Sort articles" +msgstr "記事をソート" -#: functions.php:4223 -msgid "Selection toggle:" -msgstr "é¸æŠžã®åˆ‡ã‚Šæ›¿ãˆ:" +#: index.php:185 +msgid "Default" +msgstr "標準" -#: functions.php:4225 tt-rss.php:212 -msgid "Starred" -msgstr "ãŠæ°—ã«å…¥ã‚Š" +#: index.php:186 +msgid "Newest first" +msgstr "æ–°ã—ã„é †" -#: functions.php:4226 -msgid "Published" -msgstr "公開済ã¿" +#: index.php:187 +msgid "Oldest first" +msgstr "å¤ã„é †" -#: functions.php:4227 -msgid "Selection:" -msgstr "é¸æŠž:" +#: index.php:188 +msgid "Title" +msgstr "題å" -#: functions.php:4228 localized_schema.php:16 tt-rss.php:187 tt-rss.php:230 +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 msgid "Mark as read" msgstr "既読ã«ã™ã‚‹" -#: functions.php:4234 -msgid "Archive" -msgstr "" +#: index.php:195 +msgid "Older than one day" +msgstr "1æ—¥å‰ã‚ˆã‚Šå¤ã„é …ç›®" -#: functions.php:4236 -#, fuzzy -msgid "Move back" -msgstr "戻る" +#: index.php:198 +msgid "Older than one week" +msgstr "1週間å‰ã‚ˆã‚Šå¤ã„é …ç›®" -#: functions.php:4237 -#, fuzzy -msgid "Delete" -msgstr "標準" +#: index.php:201 +msgid "Older than two weeks" +msgstr "2週間å‰ã‚ˆã‚Šå¤ã„é …ç›®" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "サーãƒãƒ¼ã¨ã®é€šä¿¡ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" -#: functions.php:4242 -msgid "Assign label:" -msgstr "ラベルã®å‰²ã‚Šå½“ã¦:" +#: index.php:223 +msgid "Actions..." +msgstr "æ“作..." -#: functions.php:4283 -msgid "Click to collapse category" -msgstr "é–‰ã˜ãŸã‚«ãƒ†ã‚´ãƒªãƒ¼ã®ã‚¯ãƒªãƒƒã‚¯" +#: index.php:225 +msgid "Preferences..." +msgstr "設定..." -#: functions.php:4493 -msgid "No feeds to display." -msgstr "表示ã™ã‚‹ãƒ•ィードãŒã‚りã¾ã›ã‚“。" +#: index.php:226 +msgid "Search..." +msgstr "検索..." -#: functions.php:4510 -msgid "Tags" -msgstr "ã‚¿ã‚°" +#: index.php:227 +msgid "Feed actions:" +msgstr "フィードæ“作:" -#: functions.php:4669 -msgid "audio/mpeg" -msgstr "audio/mpeg" +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "フィードを購読ã™ã‚‹..." -#: functions.php:4795 -msgid " - " -msgstr " - " +#: index.php:229 +msgid "Edit this feed..." +msgstr "フィードを編集ã™ã‚‹..." -#: functions.php:4820 functions.php:5580 -msgid "Edit tags for this article" -msgstr "ã“ã®è¨˜äº‹ã®ã‚¿ã‚°ã‚’編集ã™ã‚‹" +#: index.php:230 +msgid "Rescore feed" +msgstr "フィードã®ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã—ã¦ã„ã¾ã™..." -#: functions.php:4826 functions.php:5563 -msgid "Show article summary in new window" -msgstr "記事ã®è¦ç´„ã‚’æ–°ã—ã„ウィンドウã§è¡¨ç¤ºã™ã‚‹" +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "購読をやã‚ã‚‹" -#: functions.php:4833 functions.php:5570 -msgid "Publish article with a note" -msgstr "ノートã¨è¨˜äº‹ã‚’公開ã™ã‚‹" +#: index.php:232 +msgid "All feeds:" +msgstr "ã™ã¹ã¦ã®ãƒ•ィード:" -#: functions.php:4850 functions.php:5441 -msgid "Originally from:" -msgstr "" +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "読んã ãƒ•ィードを隠ã™/å†è¡¨ç¤ºã™ã‚‹" -#: functions.php:4863 functions.php:5454 -#, fuzzy -msgid "Feed URL" -msgstr "フィード" +#: index.php:235 +msgid "Other actions:" +msgstr "ãã®ä»–ã®æ“作:" -#: functions.php:4903 functions.php:5484 -msgid "unknown type" -msgstr "未知ã®ç¨®é¡ž" +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "ワイド表示モードã®åˆ‡ã‚Šæ›¿ãˆ" -#: functions.php:4943 functions.php:5527 -msgid "Attachment:" -msgstr "添付:" +#: index.php:237 +msgid "Create label..." +msgstr "ラベルを作æˆã™ã‚‹..." -#: functions.php:4945 functions.php:5529 -msgid "Attachments:" -msgstr "添付:" +#: index.php:238 +msgid "Create filter..." +msgstr "フィルターを作æˆã—ã¦ã„ã¾ã™..." -#: functions.php:4965 prefs.php:142 tt-rss.php:101 modules/help.php:21 -#: modules/popup-dialog.php:53 modules/popup-dialog.php:154 -#: modules/popup-dialog.php:181 modules/popup-dialog.php:230 -#: modules/popup-dialog.php:575 modules/popup-dialog.php:634 -#: modules/pref-feeds.php:1140 modules/pref-users.php:96 -msgid "Close this window" -msgstr "ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‰ã˜ã‚‹" +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "キーボードショートカット" -#: functions.php:5021 -msgid "Feed not found." -msgstr "フィードãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" +#: index.php:248 +msgid "Logout" +msgstr "ログアウト" -#: functions.php:5090 -msgid "" -"Could not display feed (query failed). Please check label match syntax or " -"local configuration." +#: index.php:254 +msgid "Updates are available from Git." msgstr "" -"フィードを表示ã§ãã¾ã›ã‚“ (å•ã„åˆã‚ã›ã®å¤±æ•—)ã€‚ãƒ©ãƒ™ãƒ«ä¸€è‡´ã®æ–‡æ³•ã‹ãƒ­ãƒ¼ã‚«ãƒ«ã®è¨­å®š" -"を確èªã—ã¦ãã ã•ã„。" -#: functions.php:5254 functions.php:5341 -msgid "mark as read" -msgstr "既読ã«ã™ã‚‹" +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "設定" -#: functions.php:5417 functions.php:5424 -msgid "Click to expand article" -msgstr "é–‹ã„ãŸè¨˜äº‹ã®ã‚¯ãƒªãƒƒã‚¯" +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "キーボードショートカット" -#: functions.php:5587 -msgid "toggle unread" -msgstr "未読/既読を切り替ãˆã‚‹" +#: prefs.php:112 +msgid "Exit preferences" +msgstr "設定を終了ã™ã‚‹" -#: functions.php:5606 -msgid "No unread articles found to display." -msgstr "表示ã™ã‚‹æœªèª­è¨˜äº‹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "フィード" -#: functions.php:5609 -msgid "No updated articles found to display." -msgstr "表示ã™ã‚‹æ›´æ–°ã•れãŸè¨˜äº‹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "フィルター" -#: functions.php:5612 -msgid "No starred articles found to display." -msgstr "表示ã™ã‚‹ãŠæ°—ã«å…¥ã‚Šã®è¨˜äº‹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "ラベル" -#: functions.php:5616 -msgid "" -"No articles found to display. You can assign articles to labels manually " -"(see the Actions menu above) or use a filter." -msgstr "" -"表示ã™ã‚‹è¨˜äº‹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。手動ã§ãƒ©ãƒ™ãƒ«ã«è¨˜äº‹ã‚’割り当ã¦ã‚‹ã‹(ä¸Šã®æ“作メ" -"ニューをå‚ç…§ã—ã¾ã™)ã€ãƒ•ィルターを使ã†ã“ã¨ãŒã§ãã¾ã™ã€‚" +#: prefs.php:133 +msgid "Users" +msgstr "ユーザー" -#: functions.php:5618 offline.js:443 -msgid "No articles found to display." -msgstr "表示ã™ã‚‹è¨˜äº‹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" +#: prefs.php:136 +msgid "System" +msgstr "システム" -#: functions.php:6362 tt-rss.php:192 -msgid "Create label..." -msgstr "ラベルを作æˆã™ã‚‹..." +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "æ–°è¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ä½œæˆ" -#: functions.php:6375 -msgid "(remove)" -msgstr "(削除)" +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "æ–°è¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ç™»éŒ²ã¯ç®¡ç†è€…ã«ã‚ˆã£ã¦ç„¡åйã«ãªã£ã¦ã„ã¾ã™ã€‚" -#: functions.php:6427 -msgid "no tags" -msgstr "ã‚¿ã‚°ãŒã‚りã¾ã›ã‚“" +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Tiny Tiny RSS ã«æˆ»ã‚‹" -#: functions.php:6456 -msgid "edit note" -msgstr "ノートã®ç·¨é›†" +#: register.php:218 +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 "一時的ãªãƒ‘スワードをメールã§é€ã‚Šã¾ã—ãŸã€‚一時的ãªãƒ‘スワードãŒé€ä¿¡ã•れã¦ã‹ã‚‰ä¸€åº¦ã‚‚ログインã•れã¦ã„ãªã„アカウントã¯24時間後ã«è‡ªå‹•çš„ã«å‰Šé™¤ã•れã¾ã™ã€‚" -#: localized_schema.php:9 tt-rss.php:222 modules/popup-dialog.php:381 -#: modules/pref-feeds.php:1310 modules/pref-feeds.php:1369 -msgid "Title" -msgstr "題å" +#: register.php:224 +msgid "Desired login:" +msgstr "ã”希望ã®loginå:" -#: localized_schema.php:10 -msgid "Title or Content" -msgstr "題åã‹å†…容" +#: register.php:227 +msgid "Check availability" +msgstr "有効性ã®ç¢ºèª" -#: localized_schema.php:11 -msgid "Link" -msgstr "リンク" +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "メールアドレス:" -#: localized_schema.php:12 modules/popup-dialog.php:382 -msgid "Content" -msgstr "内容" +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "2 + 2 = ?" -#: localized_schema.php:13 -msgid "Article Date" -msgstr "è¨˜äº‹ã®æ—¥ä»˜" +#: register.php:235 +msgid "Submit registration" +msgstr "登録をé€ä¿¡ã™ã‚‹" -#: localized_schema.php:15 -msgid "Filter article" -msgstr "記事フィルター" +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "登録情報ãŒå®Œæˆã—ã¦ã„ã¾ã›ã‚“。" -#: localized_schema.php:17 -msgid "Set starred" -msgstr "ãŠæ°—ã«å…¥ã‚Šã«è¨­å®šã™ã‚‹" +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "ã™ã¿ã¾ã›ã‚“ãŒã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¯æ—¢ã«ã„ã¾ã™ã€‚" -#: localized_schema.php:18 viewfeed.js:545 viewfeed.js:659 -msgid "Publish article" -msgstr "公開記事" +#: register.php:287 +msgid "Registration failed." +msgstr "登録ã«å¤±æ•—ã—ã¾ã—ãŸã€‚" -#: localized_schema.php:19 -msgid "Assign tags" -msgstr "ã‚¿ã‚°ã®å‰²ã‚Šå½“ã¦" +#: register.php:334 +msgid "Account created successfully." +msgstr "アカウントã®ä½œæˆã«æˆåŠŸã—ã¾ã—ãŸã€‚" -#: localized_schema.php:20 -msgid "Assign label" -msgstr "ラベルã®å‰²ã‚Šå½“ã¦" +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "æ–°è¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ç™»éŒ²ã¯ç¾åœ¨è¡Œã£ã¦ã„ã¾ã›ã‚“。" -#: localized_schema.php:24 -msgid "General" -msgstr "全体" +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "Tiny Tiny RSS データ更新スクリプト。" + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "カテゴリー割り当ã¦ãªã—" -#: localized_schema.php:26 -msgid "Allow duplicate posts" -msgstr "複製投稿ã®è¨±å¯" +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "ä¿ç®¡ã•れãŸè¨˜äº‹ %d ä»¶" -#: localized_schema.php:27 -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 "" +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "フィードãŒã‚りã¾ã›ã‚“。" -#: localized_schema.php:28 -msgid "Default interval between feed updates (in minutes)" -msgstr "ãƒ•ã‚£ãƒ¼ãƒ‰ã®æ›´æ–°ã¾ã§ã®æ¨™æº–é–“éš” (å˜ä½:分)" +#: include/functions2.php:52 +msgid "Navigation" +msgstr "ナビゲーション" -#: localized_schema.php:29 -msgid "Enable e-mail digest" -msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã§ã®ãƒ€ã‚¤ã‚¸ã‚§ã‚¹ãƒˆã‚’有効ã«ã™ã‚‹" +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "次ã®ãƒ•ィードを開ã" -#: localized_schema.php:30 -msgid "" -"This option enables sending daily digest of new (and unread) headlines on " -"your configured e-mail address" -msgstr "" +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "å‰ã®ãƒ•ィードを開ã" -#: localized_schema.php:31 -msgid "Purge old posts after this number of days (0 - disables)" -msgstr "ã“ã®æ—¥æ•°ã‚ˆã‚Šã‚ã¨ã®å¤ã„投稿を削除ã™ã‚‹ (0 ã¯ç„¡åйã§ã™)" +#: include/functions2.php:55 +msgid "Open next article" +msgstr "次ã®è¨˜äº‹ã‚’é–‹ã" -#: localized_schema.php:32 -msgid "Update post on checksum change" -msgstr "ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã®å¤‰æ›´ã§æŠ•稿を更新ã™ã‚‹" +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "å‰ã®è¨˜äº‹ã‚’é–‹ã" -#: localized_schema.php:33 -msgid "Mark articles in e-mail digest as read" -msgstr "既読ã¨ã—ã¦é›»å­ãƒ¡ãƒ¼ãƒ«ã®ãƒ€ã‚¤ã‚¸ã‚§ã‚¹ãƒˆã«å«ã¾ã‚Œã‚‹è¨˜äº‹ã‚’設定ã™ã‚‹" +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "次ã®è¨˜äº‹ã‚’é–‹ã(スクロールã—ãªã„)" -#: localized_schema.php:34 -msgid "Enable offline reading" -msgstr "オフライン処ç†ã‚’有効ã«ã™ã‚‹" +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "å‰ã®è¨˜äº‹ã‚’é–‹ã(スクロールã—ãªã„)" -#: localized_schema.php:35 -msgid "Synchronize new articles for offline reading using Google Gears." -msgstr "Google Gears を用ã„ãŸã‚ªãƒ•ライン処ç†ã®æ–°è¦è¨˜äº‹ã‚’åŒæœŸã—ã¾ã™ã€‚" +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "次ã®è¨˜äº‹ã¸ç§»å‹•ã™ã‚‹(展開ã›ãšæ—¢èª­ã«ã‚‚ã—ãªã„)" -#: localized_schema.php:37 -msgid "Interface" -msgstr "インターフェース" +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "å‰ã®è¨˜äº‹ã¸ç§»å‹•ã™ã‚‹(展開ã›ãšæ—¢èª­ã«ã‚‚ã—ãªã„)" -#: localized_schema.php:39 -msgid "Combined feed display" -msgstr "フィード表示ã®çµ„ã¿åˆã‚ã›" +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "検索ダイアログを表示ã™ã‚‹" -#: localized_schema.php:40 -msgid "" -"Display expanded list of feed articles, instead of separate displays for " -"headlines and article content" -msgstr "" +#: include/functions2.php:62 +msgid "Article" +msgstr "記事" -#: localized_schema.php:41 -msgid "Default article limit" -msgstr "標準ã®è¨˜äº‹åˆ¶é™" +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "ãŠæ°—ã«å…¥ã‚Šã‚’切り替ãˆã‚‹" -#: localized_schema.php:42 -msgid "" -"Default limit for articles to display, any custom number you like (0 - " -"disables)." -msgstr "" +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "公開を切り替ãˆã‚‹" -#: localized_schema.php:43 -msgid "Enable feed categories" -msgstr "フィードカテゴリーを有効ã«ã™ã‚‹" +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "未読/既読を切り替ãˆã‚‹" -#: localized_schema.php:44 -msgid "Enable search toolbar" -msgstr "検索ツールãƒãƒ¼ã‚’有効ã«ã™ã‚‹" +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "タグを編集ã™ã‚‹" -#: localized_schema.php:45 -msgid "Hide feeds with no unread messages" -msgstr "未読ã§ãªã„メッセージã¨ãƒ•ィードを隠ã™" +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "é¸æŠžã‚’è§£é™¤ã™ã‚‹" -#: localized_schema.php:46 -msgid "Mark articles as read automatically" -msgstr "è‡ªå‹•çš„ã«æ—¢èª­ã¨ã—ã¦è¨˜äº‹ã‚’マークã™ã‚‹" +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "既読を解除ã™ã‚‹" -#: localized_schema.php:47 -msgid "" -"This option enables marking articles as read automatically in combined mode " -"(except for Fresh articles feed) while you scroll article list." -msgstr "" +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "æ–°ã—ã„ウィンドウã§é–‹ã" -#: localized_schema.php:48 -msgid "On catchup show next feed" -msgstr "次ã®ãƒ•ィードã®è¡¨ç¤ºã‚’キャッãƒã‚¢ãƒƒãƒ—ã™ã‚‹" +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "ã“れより下を既読ã«ã™ã‚‹" -#: localized_schema.php:49 -msgid "" -"When \"Mark as read\" button is clicked in toolbar, automatically open next " -"feed with unread articles." -msgstr "" -"ツールãƒãƒ¼ã®ã€Œæ—¢èª­ã«è¨­å®šã™ã‚‹ã€ã‚’クリックã—ãŸã¨ãã€è‡ªå‹•çš„ã«æ¬¡ã®ãƒ•ã‚£ãƒ¼ãƒ‰ã®æœªèª­" -"記事を開ãã¾ã™ã€‚" +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "ã“れより上を既読ã«ã™ã‚‹" -#: localized_schema.php:50 -msgid "Open article links in new browser window" -msgstr "æ–°ã—ã„ブラウザーã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã§è¨˜äº‹ã®ãƒªãƒ³ã‚¯ã‚’é–‹ã" +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "下ã«ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«" -#: localized_schema.php:51 -msgid "Reverse headline order (oldest first)" -msgstr "ヘッドラインã®é€†é † (å¤ã„ã‚‚ã®ãŒã¯ã˜ã‚ã«)" +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "上ã«ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«" -#: localized_schema.php:52 -msgid "Show content preview in headlines list" -msgstr "ヘッドライン一覧ã«å†…容ã®ãƒ—レビューを表示ã™ã‚‹" +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "マウスカーソルã®ä¸‹ã®è¨˜äº‹ã‚’é¸æŠžã™ã‚‹" -#: localized_schema.php:53 -msgid "Sort feeds by unread articles count" -msgstr "未読記事数ã«ã‚ˆã‚‹ãƒ•ィードã®ä¸¦ã³æ›¿ãˆ" +#: include/functions2.php:75 +msgid "Email article" +msgstr "記事をメールã™ã‚‹" -#: localized_schema.php:54 -msgid "User stylesheet URL" -msgstr "ユーザースタイルシート㮠URL" +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "記事を閉ã˜ã‚‹" -#: localized_schema.php:55 -msgid "Link to user stylesheet to override default style, disabled if empty." -msgstr "" -"標準ã®ã‚¹ã‚¿ã‚¤ãƒ«ã‚’上書ãã™ã‚‹ã‚¹ã‚¿ã‚¤ãƒ«ã‚·ãƒ¼ãƒˆã¸ã®ãƒªãƒ³ã‚¯ã§ã€ç©ºã®å ´åˆã¯ç„¡åйã§ã™ã€‚" +#: include/functions2.php:77 +msgid "Toggle article expansion (combined mode)" +msgstr "記事ã®å±•開状態ã®åˆ‡ã‚Šæ›¿ãˆ(組ã¿åˆã‚ã›ãƒ¢ãƒ¼ãƒ‰)" -#: localized_schema.php:56 -msgid "Maximum age of fresh articles (in hours)" -msgstr "æ–°è¦è¨˜äº‹ã¨ã—ã¦ã®å–ã‚Šæ‰±ã„æœŸé™ (å˜ä½: 時間)" +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "å…ƒã®è¨˜äº‹ã®åŸ‹ã‚è¾¼ã¿ãƒ¢ãƒ¼ãƒ‰ã®åˆ‡ã‚Šæ›¿ãˆ" -#: localized_schema.php:57 -msgid "Hide feedlist" -msgstr "フィード一覧を隠ã™" +#: include/functions2.php:80 +msgid "Article selection" +msgstr "記事ã®é¸æŠž" -#: localized_schema.php:58 -msgid "" -"This option hides feedlist and allows it to be toggled on the fly, useful " -"for small screens." -msgstr "" +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "ã™ã¹ã¦ã®è¨˜äº‹ã‚’é¸æŠžã™ã‚‹" -#: localized_schema.php:59 -msgid "Group headlines in virtual feeds" -msgstr "仮想フィードã®ã‚°ãƒ«ãƒ¼ãƒ—ヘッドライン" +#: include/functions2.php:82 +msgid "Select unread" +msgstr "æœªèª­è¨˜äº‹ã‚’é¸æŠžã™ã‚‹" -#: localized_schema.php:60 -msgid "" -"When this option is enabled, headlines in Special feeds and Labels are " -"grouped by feeds" -msgstr "" +#: include/functions2.php:83 +msgid "Select starred" +msgstr "ãŠæ°—ã«å…¥ã‚Šã®è¨˜äº‹ã‚’é¸æŠžã™ã‚‹" -#: localized_schema.php:62 -msgid "Advanced" -msgstr "高度" +#: include/functions2.php:84 +msgid "Select published" +msgstr "公開済ã¿ã®è¨˜äº‹ã‚’é¸æŠžã™ã‚‹" -#: localized_schema.php:64 -msgid "Blacklisted tags" -msgstr "ブラックリスト化ã—ãŸã‚¿ã‚°" +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "é¸æŠžã‚’å転ã™ã‚‹" -#: localized_schema.php:65 -msgid "" -"When auto-detecting tags in articles these tags will not be applied (comma-" -"separated list)." -msgstr "" +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "é¸æŠžã‚’å…¨ã¦è§£é™¤ã™ã‚‹" -#: localized_schema.php:66 -msgid "Confirm marking feed as read" -msgstr "既読ã¨ã—ã¦ãƒ•ィードã®ãƒžãƒ¼ã‚­ãƒ³ã‚°ã«ã¤ã„ã¦ç¢ºèªã™ã‚‹" +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "フィード" -#: localized_schema.php:67 -msgid "Enable feed icons" -msgstr "フィードアイコンを有効ã«ã™ã‚‹" +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "ç¾åœ¨ã®ãƒ•ィードを更新ã™ã‚‹" -#: localized_schema.php:68 -msgid "Enable labels" -msgstr "ラベルを有効ã«ã™ã‚‹" +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "読んã ãƒ•ィードを隠ã™/å†è¡¨ç¤ºã™ã‚‹" -#: localized_schema.php:69 -msgid "" -"Experimental support for virtual feeds based on user crafted SQL queries. " -"This feature is highly experimental and at this point not user friendly. Use " -"with caution." -msgstr "" +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "フィードを購読ã™ã‚‹" -#: localized_schema.php:70 -msgid "Long date format" -msgstr "å®Œå…¨ãªæ—¥ä»˜ã®å½¢å¼" +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "フィードを編集ã™ã‚‹" -#: localized_schema.php:71 -msgid "Set articles as unread on update" -msgstr "æ›´æ–°æ™‚ã«æœªèª­ã¨ã—ã¦è¨˜äº‹ã‚’設定ã™ã‚‹" +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "ヘッドラインã®é †åºã‚’逆転ã™ã‚‹" -#: localized_schema.php:72 -msgid "Short date format" -msgstr "çŸ­ã„æ—¥ä»˜ã®å½¢å¼" +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "ãƒ•ã‚£ãƒ¼ãƒ‰ã®æ›´æ–°ã‚’確èªã™ã‚‹" -#: localized_schema.php:73 -msgid "Show additional information in feedlist" -msgstr "フィード一覧ã®è¿½åŠ æƒ…å ±ã‚’è¡¨ç¤ºã™ã‚‹" +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "ã™ã¹ã¦ã®ãƒ•ィードを既読ã«è¨­å®šã™ã‚‹" -#: localized_schema.php:74 -msgid "Strip unsafe tags from articles" -msgstr "記事ã‹ã‚‰å®‰å…¨ã§ãªã„ã‚¿ã‚°ã‚’å–り除ã" +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "カテゴリーã®é–‹é–‰" -#: localized_schema.php:75 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "" +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "組ã¿åˆã‚ã›ãƒ¢ãƒ¼ãƒ‰ã®åˆ‡ã‚Šæ›¿ãˆ" -#: localized_schema.php:76 -msgid "Use more accessible date/time format for headlines" -msgstr "" +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "組ã¿åˆã‚ã›ãƒ¢ãƒ¼ãƒ‰ã§ã®è‡ªå‹•展開ã®åˆ‡ã‚Šæ›¿ãˆ" -#: localized_schema.php:77 -msgid "Automatically expand articles in combined mode" -msgstr "組ã¿åˆã‚ã›ãƒ¢ãƒ¼ãƒ‰ã§è¨˜äº‹ã‚’自動的ã«å±•é–‹ã™ã‚‹" +#: include/functions2.php:99 +msgid "Go to" +msgstr "移動" -#: localized_schema.php:78 -msgid "Purge unread articles" -msgstr "未読記事を削除ã™ã‚‹" +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "ã™ã¹ã¦ã®è¨˜äº‹" -#: localized_schema.php:79 -msgid "Show special feeds when hiding read feeds" -msgstr "" +#: include/functions2.php:101 +msgid "Fresh" +msgstr "æ–°ã—ã„記事" -#: localized_schema.php:80 -msgid "Prefer more accurate feedlist counters to UI speed" -msgstr "" +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "タグクラウド" -#: localized_schema.php:81 -msgid "Enable inline MP3 player" -msgstr "インライン MP3 プレイヤーを有効ã«ã™ã‚‹" +#: include/functions2.php:106 +msgid "Other" +msgstr "ãã®ä»–" -#: localized_schema.php:82 -msgid "" -"Enable the Flash-based XSPF Player to play MP3-format podcast enclosures." -msgstr "" +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "ラベルを作æˆã™ã‚‹" -#: localized_schema.php:83 -msgid "Do not show images in articles" -msgstr "記事内ã«ç”»åƒã‚’表示ã—ãªã„" +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "フィルターを作æˆã™ã‚‹" -#: localized_schema.php:84 -msgid "Enable external API" -msgstr "" +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "サイドãƒãƒ¼ã‚’é–‹é–‰ã™ã‚‹" -#: login_form.php:120 modules/popup-dialog.php:271 modules/pref-feeds.php:339 -#: modules/pref-feeds.php:561 mobile/login_form.php:38 -msgid "Login:" -msgstr "ログイン:" +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "ヘルプダイアログを表示ã™ã‚‹" -#: login_form.php:124 modules/popup-dialog.php:273 modules/pref-feeds.php:344 -#: modules/pref-feeds.php:567 mobile/login_form.php:43 -msgid "Password:" -msgstr "パスワード:" +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "æ¤œç´¢çµæžœ: %s" -#: login_form.php:129 -msgid "Language:" -msgstr "言語:" +#: include/functions2.php:1258 +#: classes/feeds.php:730 +msgid "comment" +msgid_plural "comments" +msgstr[0] "" -#: login_form.php:139 +#: include/functions2.php:1262 +#: classes/feeds.php:734 #, fuzzy -msgid "Profile:" -msgstr "ファイル:" +msgid "comments" +msgstr "添付" -#: login_form.php:152 mobile/login_form.php:28 -msgid "Log in" -msgstr "ログイン" - -#: login_form.php:155 register.php:148 -msgid "Create new account" -msgstr "æ–°è¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ä½œæˆ" +#: include/functions2.php:1303 +msgid " - " +msgstr " - " -#: login_form.php:169 -msgid "Limit bandwidth usage" -msgstr "帯域ã®åˆ¶é™ã‚’使ã†" +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "ã‚¿ã‚°ãŒã‚りã¾ã›ã‚“" -#: opml.php:99 opml.php:103 -msgid "OPML Utility" -msgstr "OPML ユーティリティ" +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "ã“ã®è¨˜äº‹ã®ã‚¿ã‚°ã‚’編集ã™ã‚‹" -#: opml.php:124 -msgid "Importing OPML (using DOMXML extension)..." -msgstr "OPML ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆä¸­ (DOMXML 機能拡張を用ã„ã¦)..." +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "å…ƒã®è¨˜äº‹:" -#: opml.php:128 -msgid "Importing OPML (using DOMDocument extension)..." -msgstr "OPML ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆä¸­ (DOMDocument 機能拡張を用ã„ã¦)..." +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "フィード URL" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‰ã˜ã‚‹" -#: opml.php:132 modules/popup-dialog.php:45 -msgid "DOMXML extension is not found. It is required for PHP versions below 5." -msgstr "" -"DOMXML 機能拡張ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。PHP ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 5 未満ã¯ãã‚Œã‚’è¦æ±‚ã—ã¾ã™ã€‚" +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(ノートã®ç·¨é›†)" -#: opml.php:136 -msgid "Return to preferences" -msgstr "è¨­å®šã«æˆ»ã‚‹" +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "未知ã®ç¨®é¡ž" -#: prefs.php:63 prefs.php:123 tt-rss.php:65 -msgid "Loading, please wait..." -msgstr "読ã¿è¾¼ã¿ã‚“ã§ã„ã¾ã™ã€‚ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„..." +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "添付" -#: prefs.php:70 prefs.php:126 tt-rss.php:73 -msgid "" -"Your browser doesn't support Javascript, which is required\n" -"\t\tfor this application to function properly. Please check your\n" -"\t\tbrowser settings." +#: include/functions.php:964 +#, php-format +msgid "%d min" msgstr "" -#: prefs.php:90 tt-rss.php:112 -msgid "Hello," -msgstr "よã†ã“ãã€" - -#: prefs.php:92 help/4.php:14 -msgid "Exit preferences" -msgstr "設定を終了ã™ã‚‹" - -#: prefs.php:94 tt-rss.php:122 mobile/functions.php:60 -#: mobile/functions.php:234 -msgid "Logout" -msgstr "ログアウト" - -#: prefs.php:102 tt-rss.php:196 -msgid "Keyboard shortcuts" -msgstr "キーボードショートカット" - -#: prefs.php:108 tt-rss.php:114 help/3.php:63 help/4.php:8 -msgid "Preferences" -msgstr "設定" +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "特別" -#: prefs.php:110 -msgid "Feeds" -msgstr "フィード" +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "ã™ã¹ã¦ã®ãƒ•ィード" -#: prefs.php:112 help/4.php:11 -msgid "Filters" -msgstr "フィルター" +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "ãŠæ°—ã«å…¥ã‚Šã®è¨˜äº‹" -#: prefs.php:117 help/4.php:13 -msgid "Users" -msgstr "ユーザー" +#: include/functions.php:1969 +msgid "Published articles" +msgstr "公開済ã¿ã®è¨˜äº‹" -#: prefs.php:140 tt-rss.php:99 -#, fuzzy -msgid "Fatal Exception" -msgstr "致命的ãªã‚¨ãƒ©ãƒ¼" +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "æ–°ã—ã„記事" -#: register.php:152 -msgid "New user registrations are administratively disabled." -msgstr "æ–°è¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ç™»éŒ²ã¯ç®¡ç†è€…ã«ã‚ˆã£ã¦ç„¡åйã«ãªã£ã¦ã„ã¾ã™ã€‚" +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "ä¿ç®¡ã•れãŸè¨˜äº‹" -#: register.php:155 register.php:200 register.php:213 register.php:228 -#: register.php:246 register.php:331 register.php:341 register.php:353 -#: update.php:94 update.php:162 modules/pref-feeds.php:954 -msgid "Return to Tiny Tiny RSS" -msgstr "Tiny Tiny RSS ã«æˆ»ã‚‹" +#: include/functions.php:1977 +msgid "Recently read" +msgstr "最近読んã " -#: register.php:176 -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 "" +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "ログイン:" -#: register.php:182 -msgid "Desired login:" -msgstr "" +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "パスワード:" -#: register.php:185 -msgid "Check availability" -msgstr "" +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "パスワードを忘れãŸå ´åˆ" -#: register.php:187 -msgid "Email:" -msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«:" +#: include/login_form.php:212 +msgid "Profile:" +msgstr "プロファイル:" -#: register.php:190 -msgid "How much is two plus two:" -msgstr "" +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "標準ã®ãƒ—ロファイル" -#: register.php:193 -msgid "Submit registration" -msgstr "登録をé€ä¿¡ã™ã‚‹" +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "トラフィックを抑制ã™ã‚‹" -#: register.php:211 -msgid "Your registration information is incomplete." -msgstr "登録情報ãŒå®Œæˆã—ã¦ã„ã¾ã›ã‚“。" +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "記事中ã®ç”»åƒã‚’表示ã—ãªã„ã“ã¨ã§è‡ªå‹•更新を減らã™ã€‚" -#: register.php:226 -msgid "Sorry, this username is already taken." -msgstr "ã™ã¿ã¾ã›ã‚“ãŒã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¯æ—¢ã«ã„ã¾ã™ã€‚" +#: include/login_form.php:236 +msgid "Remember me" +msgstr "ログイン状態を記憶ã™ã‚‹" -#: register.php:244 -msgid "Registration failed." -msgstr "登録ã«å¤±æ•—ã—ã¾ã—ãŸã€‚" +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "ログイン" -#: register.php:328 -msgid "Account created successfully." -msgstr "アカウントã®ä½œæˆã«æˆåŠŸã—ã¾ã—ãŸã€‚" +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®æ¤œæŸ»ã«å¤±æ•—ã—ã¾ã—㟠(IP ãŒæ­£ã—ãã‚りã¾ã›ã‚“)" -#: register.php:350 -msgid "New user registrations are currently closed." -msgstr "æ–°è¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ç™»éŒ²ã¯ç¾åœ¨è¡Œã£ã¦ã„ã¾ã›ã‚“。" +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®æ¤œæŸ»ã«å¤±æ•—ã—ã¾ã—㟠(スキーマã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒå¤‰æ›´ã•れã¾ã—ãŸ)" -#: tt-rss.php:118 -msgid "Comments?" -msgstr "コメントã—ã¾ã™ã‹?" +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®æ¤œæŸ»ã«å¤±æ•—ã—ã¾ã—㟠(ユーザーãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“)" -#: tt-rss.php:131 -msgid "Offline reading" -msgstr "オフライン処ç†" +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®æ¤œæŸ»ã«å¤±æ•—ã—ã¾ã—㟠(パスワードãŒå¤‰æ›´ã•れã¾ã—ãŸ)" -#: tt-rss.php:138 -msgid "Cancel synchronization" -msgstr "åŒæœŸã®å–り消ã—" +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "インタフェースã«é–¢ã™ã‚‹ä»–ã®ãƒ’ント㌠Tiny Tiny RSS ã® Wiki ã«ã‚りã¾ã™ã€‚" -#: tt-rss.php:141 -msgid "Synchronize" -msgstr "åŒæœŸ" +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "キーボードショートカット" -#: tt-rss.php:143 -msgid "Remove stored data" -msgstr "ä¿å­˜ã—ãŸãƒ‡ãƒ¼ã‚¿ã‚’削除ã™ã‚‹" +#: classes/backend.php:61 +msgid "Shift" +msgstr "Shift" -#: tt-rss.php:145 -msgid "Go offline" -msgstr "オフラインã«ç§»è¡Œã™ã‚‹" +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" -#: tt-rss.php:151 -msgid "New version of Tiny Tiny RSS is available!" -msgstr "Tiny Tiny RSS ã®æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨ã§ãã¾ã™!" +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "ヘルプã®ãƒˆãƒ”ックãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" -#: tt-rss.php:158 -msgid "Go online" -msgstr "オンラインã«ç§»è¡Œã™ã‚‹" +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "Tiny Tiny RSS ã§å…±æœ‰ã™ã‚‹" -#: tt-rss.php:169 tt-rss.js:79 -msgid "tag cloud" -msgstr "タグクラウド" +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "題å:" -#: tt-rss.php:179 -msgid "Search..." -msgstr "検索..." +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" -#: tt-rss.php:180 -msgid "Feed actions:" -msgstr "フィードæ“作" +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "内容:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "ラベル:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "共有ã—ãŸè¨˜äº‹ã¯ã€Œå…¬é–‹æ¸ˆã¿ã®è¨˜äº‹ã€ã«è¡¨ç¤ºã•れã¾ã™ã€‚" + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "共有" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "å–り消ã—" -#: tt-rss.php:181 -msgid "Subscribe to feed..." -msgstr "フィードを購読ã™ã‚‹..." +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "ログインã—ã¦ã„ã¾ã›ã‚“" -#: tt-rss.php:182 -msgid "Edit this feed..." -msgstr "フィードを編集ã™ã‚‹..." +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "ユーザーåã‹ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ãŒæ­£ã—ãã‚りã¾ã›ã‚“" -#: tt-rss.php:183 -msgid "Rescore feed" -msgstr "フィードã®ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã—ã¦ã„ã¾ã™..." +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "%s ã¯æ—¢ã«è³¼èª­ã—ã¦ã„ã¾ã™ã€‚" -#: tt-rss.php:184 modules/pref-feeds.php:465 modules/pref-feeds.php:1193 -msgid "Unsubscribe" -msgstr "購読をやã‚ã‚‹" +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "%s を購読ã—ã¾ã—ãŸã€‚" -#: tt-rss.php:186 -msgid "All feeds:" -msgstr "ã™ã¹ã¦ã®ãƒ•ィード:" +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "%s ã¯è³¼èª­ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" -#: tt-rss.php:188 help/3.php:44 -msgid "(Un)hide read feeds" -msgstr "読んã ãƒ•ィードを隠ã™/å†è¡¨ç¤ºã™ã‚‹" +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "%sã«ãƒ•ィードãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" -#: tt-rss.php:190 -msgid "Other actions:" -msgstr "ãã®ä»–ã®æ“作:" +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "複数ã®ãƒ•ィード㮠URL ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚" -#: tt-rss.php:193 -msgid "Create filter..." -msgstr "フィルターを作æˆã—ã¦ã„ã¾ã™..." +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "%s ã¯è³¼èª­ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
    フィード㮠URL ãŒãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã§ãã¾ã›ã‚“。" -#: tt-rss.php:194 -msgid "Reset UI layout" -msgstr "UI レイアウトをリセットã™ã‚‹" +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "é¸æŠžã—ãŸãƒ•ィードを購読ã™ã‚‹" -#: tt-rss.php:195 -msgid "Reset category order" -msgstr "カテゴリーã®é †åºã‚’リセットã™ã‚‹" +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "購読オプションã®ç·¨é›†" -#: tt-rss.php:205 -msgid "Collapse feedlist" -msgstr "フィード一覧を閉ã˜ã‚‹" +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "パスワードã®å¾©æ—§" -#: tt-rss.php:208 +#: classes/handler/public.php:805 #, fuzzy -msgid "Show articles" -msgstr "記事をä¿ç®¡ã—ã¾ã—ãŸ" - -#: tt-rss.php:210 -msgid "Adaptive" -msgstr "" +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "有効ãªã‚¢ã‚«ã‚¦ãƒ³ãƒˆåã¨é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’入力ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚æ–°ã—ã„パスワードãŒã‚ãªãŸã®é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã«é€ä¿¡ã•れã¾ã™ã€‚" -#: tt-rss.php:211 -msgid "All Articles" -msgstr "ã™ã¹ã¦ã®è¨˜äº‹" +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "パスワードã®ãƒªã‚»ãƒƒãƒˆ" -#: tt-rss.php:214 -msgid "Ignore Scoring" -msgstr "スコア計算ã®ç„¡åŠ¹åŒ–" +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "ã„ãã¤ã‹ã®å¿…須項目ãŒå…¥åŠ›ã•れã¦ã„ãªã„ã‹ã€æ­£ã—ãã‚りã¾ã›ã‚“" -#: tt-rss.php:215 modules/pref-feeds.php:1316 modules/pref-feeds.php:1377 -msgid "Updated" -msgstr "更新日時" +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "戻る" -#: tt-rss.php:218 +#: classes/handler/public.php:878 #, fuzzy -msgid "Sort articles" -msgstr "記事をä¿ç®¡ã—ã¾ã—ãŸ" - -#: tt-rss.php:221 modules/popup-dialog.php:462 modules/pref-filters.php:51 -#: modules/pref-filters.php:469 -msgid "Date" -msgstr "日付" - -#: tt-rss.php:223 -msgid "Score" -msgstr "スコア" - -#: tt-rss.php:227 modules/pref-feeds.php:296 modules/pref-feeds.php:524 -msgid "Update" -msgstr "æ›´æ–°" - -#: tt-rss.php:238 tt-rss.php:252 -msgid "No feed selected." -msgstr "フィードã¯é¸æŠžã•れã¦ã„ã¾ã›ã‚“。" +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] パスワード変更通知" -#: tt-rss.php:242 -msgid "Drag me to resize panels" -msgstr "パãƒãƒ«ã®å¤§ãã•を変更ã™ã‚‹ã«ã¯ã“ã“をドラッグã—ã¾ã™" +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "ログインåã¨ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®çµ„ã¿åˆã‚ã›ãŒçµ„ã¿åˆã‚ã›ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" -#: update.php:19 +#: classes/handler/public.php:925 msgid "Your access level is insufficient to run this script." -msgstr "ã“ã®ã‚¹ã‚¯ãƒªãƒ—トを実行ã™ã‚‹ã«ã¯ã‚¢ã‚¯ã‚»ã‚¹ãƒ¬ãƒ™ãƒ«ãŒä¸å分ã§ã™ã€‚" +msgstr "ã‚ãªãŸã®æ¨©é™ã§ã¯ã€ã“ã®ã‚¹ã‚¯ãƒªãƒ—トを実行ã§ãã¾ã›ã‚“。" -#: update.php:44 +#: classes/handler/public.php:951 msgid "Database Updater" msgstr "データベースアップデーター" -#: update.php:85 -msgid "Could not update database" -msgstr "データベースを更新ã§ãã¾ã›ã‚“" - -#: update.php:88 -msgid "Could not find necessary schema file, need version:" -msgstr "" -"å¿…è¦ãªã‚¹ã‚­ãƒ¼ãƒžãƒ•ァイルを見ã¤ã‘られã¾ã›ã‚“ã§ã—ãŸã€‚次ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒå¿…è¦ã§ã™:" - -#: update.php:89 -msgid ", found: " -msgstr "" - -#: update.php:92 -msgid "Tiny Tiny RSS database is up to date." -msgstr "Tiny Tiny RSS ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’æ›´æ–°ã—ã¾ã—ãŸã€‚" - -#: update.php:102 -msgid "Please backup your database before proceeding." -msgstr "実行å‰ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã‚’ã—ã¦ãã ã•ã„。" - -#: update.php:104 -#, php-format -msgid "" -"Your Tiny Tiny RSS database needs update to the latest version (%d to " -"%d)." -msgstr "" -"Tiny Tiny RSS ã¯æœ€æ–°ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«æ›´æ–°ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ (%d ã‹ã‚‰ %" -"d)。" - -#: update.php:118 +#: classes/handler/public.php:1016 msgid "Perform updates" msgstr "æ›´æ–°ã®å®Ÿè¡Œ" -#: update.php:123 -msgid "Performing updates..." -msgstr "更新を実行ã—ã¦ã„ã¾ã™..." - -#: update.php:129 -#, php-format -msgid "Updating to version %d..." -msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %d を確èªã—ã¦ã„ã¾ã™..." - -#: update.php:142 -msgid "Checking version... " -msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’確èªã—ã¦ã„ã¾ã™..." - -#: update.php:148 -msgid "OK!" -msgstr "OK!" +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "RSS フィードã¨ã—ã¦é–²è¦§ã™ã‚‹" -#: update.php:150 -msgid "ERROR!" -msgstr "エラー!" +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "RSS ã¨ã—ã¦é–²è¦§ã™ã‚‹" -#: update.php:158 +#: classes/feeds.php:62 #, php-format -msgid "" -"Finished. Performed %d update(s) up to schema\n" -"\t\t\tversion %d." -msgstr "" -"完了ã—ã¾ã—ãŸã€‚%d 個ã®ãƒ†ãƒ¼ãƒ–ルをスキーマーãƒãƒ¼ã‚¸ãƒ§ãƒ³%d ã«æ›´æ–°ã—" -"ã¾ã—ãŸã€‚" - -#: modules/help.php:6 -msgid "Help" -msgstr "ヘルプ" +msgid "Last updated: %s" +msgstr "最終更新: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "ã™ã¹ã¦" -#: modules/help.php:17 -msgid "Help topic not found." -msgstr "ヘルプã®ãƒˆãƒ”ックãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" +#: classes/feeds.php:92 +msgid "Invert" +msgstr "å転" -#: modules/opml_domdoc.php:52 modules/opml_domxml.php:54 -#, fuzzy, php-format -msgid "
  • Adding category %s.
  • " -msgstr "カテゴリー %s ã®è¿½åР䏭ã§ã™ã€‚" +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "ãªã—" -#: modules/opml_domdoc.php:101 modules/opml_domxml.php:103 -#, fuzzy -msgid "is already imported." -msgstr "æ—¢ã«ã‚¤ãƒ³ãƒãƒ¼ãƒˆæ¸ˆã¿ã§ã™ã€‚" +#: classes/feeds.php:99 +msgid "More..." +msgstr "ãã®ä»–æ“作..." -#: modules/opml_domdoc.php:121 modules/opml_domxml.php:122 -#, fuzzy -msgid "OK" -msgstr "OK!" +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "é¸æŠžã®åˆ‡ã‚Šæ›¿ãˆ:" -#: modules/opml_domdoc.php:130 modules/opml_domxml.php:134 -msgid "Error while parsing document." -msgstr "ドキュメントã®è§£æžä¸­ã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚" +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "é¸æŠž:" -#: modules/opml_domdoc.php:134 modules/opml_domxml.php:138 -msgid "Error: please upload OPML file." -msgstr "エラー: OPML ファイルをアップロードã—ã¦ãã ã•ã„。" +#: classes/feeds.php:110 +msgid "Set score" +msgstr "スコアを設定" -#: modules/opml_domxml.php:131 -msgid "Error: can't find body element." -msgstr "エラー: 本文è¦ç´ ã‚’見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" +#: classes/feeds.php:113 +msgid "Archive" +msgstr "ä¿ç®¡" -#: modules/popup-dialog.php:7 -#, fuzzy -msgid "OPML Import" -msgstr "インãƒãƒ¼ãƒˆ" +#: classes/feeds.php:115 +msgid "Move back" +msgstr "戻る" -#: modules/popup-dialog.php:34 -#, fuzzy -msgid "Importing using DOMXML." -msgstr "OPML ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆä¸­ (DOMXML 機能拡張を用ã„ã¦)..." +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "削除" -#: modules/popup-dialog.php:40 -#, fuzzy -msgid "Importing using DOMDocument." -msgstr "OPML ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆä¸­ (DOMDocument 機能拡張を用ã„ã¦)..." +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "メールã§è»¢é€ã™ã‚‹" -#: modules/popup-dialog.php:68 -msgid "Settings Profiles" -msgstr "" +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "フィード:" -#: modules/popup-dialog.php:75 -#, fuzzy -msgid "Create profile" -msgstr "フィルターを作æˆã™ã‚‹" +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "フィードãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" -#: modules/popup-dialog.php:100 modules/popup-dialog.php:128 -msgid "(active)" -msgstr "" +#: classes/feeds.php:268 +msgid "Never" +msgstr "未更新" -#: modules/popup-dialog.php:148 modules/popup-dialog.php:350 -#: modules/pref-feeds.php:455 modules/pref-feeds.php:1136 -#: modules/pref-filters.php:153 modules/pref-filters.php:321 -#: modules/pref-labels.php:140 modules/pref-users.php:378 -msgid "Remove" -msgstr "削除" +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "%s ã«ã‚¤ãƒ³ãƒãƒ¼ãƒˆ" -#: modules/popup-dialog.php:150 +#: classes/feeds.php:452 +#: classes/feeds.php:549 #, fuzzy -msgid "Activate" -msgstr "è¨˜äº‹ã®æ—¥ä»˜" - -#: modules/popup-dialog.php:163 -msgid "Published Articles" -msgstr "公開ã•れãŸè¨˜äº‹" +msgid "mark feed as read" +msgstr "既読ã«ã™ã‚‹" -#: modules/popup-dialog.php:168 -#, fuzzy -msgid "Your Published articles feed URL is:" -msgstr "公開記事フィードã¸ã®ãƒªãƒ³ã‚¯ã§ã™ã€‚" +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "記事を閉ã˜ã‚‹" -#: modules/popup-dialog.php:177 -#, fuzzy -msgid "Generate new URL" -msgstr "生æˆã—ãŸãƒ•ィード" +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "表示ã™ã‚‹æœªèª­è¨˜äº‹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" -#: modules/popup-dialog.php:190 -msgid "Notice" -msgstr "通知" +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "表示ã™ã‚‹æ›´æ–°ã•れãŸè¨˜äº‹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" -#: modules/popup-dialog.php:196 -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 "" +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "表示ã™ã‚‹ãŠæ°—ã«å…¥ã‚Šã®è¨˜äº‹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" -#: modules/popup-dialog.php:200 modules/popup-dialog.php:220 -msgid "Last update:" -msgstr "最終更新:" +#: classes/feeds.php:778 +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 "表示ã™ã‚‹è¨˜äº‹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。手動ã§ãƒ©ãƒ™ãƒ«ã«è¨˜äº‹ã‚’割り当ã¦ã‚‹ã‹(ä¸Šã®æ“作メニューをå‚ç…§ã—ã¾ã™)ã€ãƒ•ィルターを使ã†ã“ã¨ãŒã§ãã¾ã™ã€‚" -#: modules/popup-dialog.php:208 -msgid "" -"You are running the latest version of Tiny Tiny RSS. The fact that you are " -"seeing this dialog is probably a bug." -msgstr "" +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "表示ã™ã‚‹è¨˜äº‹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" -#: modules/popup-dialog.php:216 -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 "" +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "%s ã«æœ€çµ‚æ›´æ–°ã•れãŸãƒ•ィード" -#: modules/popup-dialog.php:239 -msgid "Subscribe to Feed" -msgstr "フィードを購読ã™ã‚‹" +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "ã„ãã¤ã‹ã®ãƒ•ã‚£ãƒ¼ãƒ‰ã®æ›´æ–°ã‚¨ãƒ©ãƒ¼ã§ã™ (詳細ã¯ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãã ã•ã„)" -#: modules/popup-dialog.php:248 modules/pref-feeds.php:197 -#: modules/pref-feeds.php:488 modules/pref-filters.php:407 -msgid "Feed" -msgstr "フィード" +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "フィードãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。" -#: modules/popup-dialog.php:251 modules/pref-feeds.php:213 -#: modules/pref-feeds.php:502 -msgid "URL:" -msgstr "URL:" +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "フィードã‹ã‚µã‚¤ãƒˆã® URL" -#: modules/popup-dialog.php:260 modules/pref-feeds.php:225 -#: modules/pref-feeds.php:514 +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 msgid "Place in category:" msgstr "カテゴリーã®å ´æ‰€:" -#: modules/popup-dialog.php:268 modules/pref-feeds.php:332 -#: modules/pref-feeds.php:558 modules/pref-prefs.php:235 -#: modules/pref-users.php:142 +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "利用å¯èƒ½ãªãƒ•ィード" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 msgid "Authentication" msgstr "èªè¨¼" -#: modules/popup-dialog.php:283 +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "ログイン" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "パスワード" + +#: classes/feeds.php:1065 msgid "This feed requires authentication." msgstr "ã“ã®ãƒ•ィードã¯èªè¨¼ã‚’è¦æ±‚ã—ã¾ã™ã€‚" -#: modules/popup-dialog.php:289 modules/popup-dialog.php:349 +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 msgid "Subscribe" msgstr "購読" -#: modules/popup-dialog.php:290 -#, fuzzy +#: classes/feeds.php:1073 msgid "More feeds" msgstr "ã•らãªã‚‹ãƒ•ィード" -#: modules/popup-dialog.php:291 modules/popup-dialog.php:351 -#: modules/popup-dialog.php:425 modules/popup-dialog.php:543 -#: modules/popup-dialog.php:612 modules/pref-feeds.php:468 -#: modules/pref-feeds.php:623 modules/pref-filters.php:160 -#: modules/pref-users.php:181 -msgid "Cancel" -msgstr "å–り消ã—" - -#: modules/popup-dialog.php:298 -msgid "Feed Browser" -msgstr "フィードブラウザー" - -#: modules/popup-dialog.php:317 modules/popup-dialog.php:359 -#: modules/popup-dialog.php:424 modules/pref-feeds.php:1177 -#: modules/pref-filters.php:308 modules/pref-labels.php:131 -#: modules/pref-users.php:361 +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 msgid "Search" msgstr "検索" -#: modules/popup-dialog.php:321 -#, fuzzy +#: classes/feeds.php:1100 msgid "Popular feeds" -msgstr "フィードã®è¡¨ç¤º" +msgstr "人気ã®ã‚るフィード" -#: modules/popup-dialog.php:322 -#, fuzzy +#: classes/feeds.php:1101 msgid "Feed archive" -msgstr "フィードæ“作" +msgstr "フィードä¿ç®¡åº«" -#: modules/popup-dialog.php:325 -#, fuzzy +#: classes/feeds.php:1104 msgid "limit:" msgstr "制é™:" -#: modules/popup-dialog.php:371 +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "削除" + +#: classes/feeds.php:1136 msgid "Look for" +msgstr "検索" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" msgstr "" -#: modules/popup-dialog.php:378 +#: classes/feeds.php:1152 #, fuzzy -msgid "match on" -msgstr "対象項目:" +msgid "Search syntax" +msgstr "検索" -#: modules/popup-dialog.php:383 -msgid "Title or content" -msgstr "題åã‹å†…容" +#: classes/article.php:25 +msgid "Article not found." +msgstr "記事ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" -#: modules/popup-dialog.php:388 -msgid "Limit search to:" -msgstr "対象範囲" +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "ã“ã®è¨˜äº‹ã®ã‚¿ã‚° (カンマã§åŒºåˆ‡ã‚Šã¾ã™):" -#: modules/popup-dialog.php:404 -msgid "This feed" -msgstr "ã“ã®ãƒ•ィード" +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "ä¿å­˜" -#: modules/popup-dialog.php:438 -msgid "Create Filter" -msgstr "フィルターを作æˆã™ã‚‹" +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "OPML ユーティリティ" -#: modules/popup-dialog.php:457 modules/pref-filters.php:42 -#: modules/pref-filters.php:406 -msgid "Match" -msgstr "一致" +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "OPML ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆä¸­..." -#: modules/popup-dialog.php:465 modules/pref-filters.php:54 -#: modules/pref-filters.php:441 -msgid "before" -msgstr "å‰" +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "è¨­å®šã«æˆ»ã‚‹" -#: modules/popup-dialog.php:466 modules/pref-filters.php:55 -#: modules/pref-filters.php:442 -msgid "after" -msgstr "後" +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "フィード追加: %s" -#: modules/popup-dialog.php:478 modules/pref-filters.php:68 -msgid "Check it" -msgstr "" +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "é‡è¤‡ã—ãŸãƒ•ィード: %s" -#: modules/popup-dialog.php:481 modules/pref-filters.php:71 -msgid "on field" -msgstr "" +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "ラベル %s ã®å‰²ã‚Šå½“ã¦" -#: modules/popup-dialog.php:487 modules/pref-filters.php:77 -msgid "in" -msgstr "" +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "é‡è¤‡ã—ãŸãƒ©ãƒ™ãƒ«: %s" -#: modules/popup-dialog.php:492 modules/pref-filters.php:82 -msgid "Perform Action" -msgstr "æ“作ã®å®Ÿè¡Œ" +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "%s ã‚’ %s ã«è¨­å®š" -#: modules/popup-dialog.php:509 modules/pref-filters.php:102 -msgid "with parameters:" -msgstr "パラメーター:" +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "フィルタを追加ã—ã¦ã„ã¾ã™..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "処ç†ä¸­ã®ã‚«ãƒ†ã‚´ãƒª: %s" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "エラーコード %d ã§ã‚¢ãƒƒãƒ—ロードãŒå¤±æ•—ã—ã¾ã—ãŸ" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "アップロードã•れãŸãƒ•ァイルを移動ã§ãã¾ã›ã‚“。" + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "エラー: OPML ファイルをアップロードã—ã¦ãã ã•ã„。" + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "エラー: 移動ã•れ㟠OPML ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "ドキュメントã®è§£æžä¸­ã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚" + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "ã‚ãªãŸã®æ¨©é™ã§ã¯ã€ã“ã®ã‚¿ãƒ–ã‚’é–‹ã¾ã›ã‚“。" + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "エラーログ" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "å†æç”»" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "ãƒ­ã‚°ã®æ¶ˆåŽ»" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "エラー" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "ファイルå" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "メッセージ" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "日付" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "ユーザーãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "登録済ã¿" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "最終ログイン" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "購読フィード数" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "購読ã—ãŸãƒ•ィード" -#: modules/popup-dialog.php:522 modules/pref-feeds.php:355 -#: modules/pref-feeds.php:576 modules/pref-filters.php:121 -#: modules/pref-users.php:164 +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "アクセスレベル: " + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 msgid "Options" msgstr "オプション" -#: modules/popup-dialog.php:528 modules/pref-filters.php:133 -msgid "Enabled" -msgstr "有効ã«ã™ã‚‹" +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "ユーザーå %s ã¨ãƒ‘スワード %s ã§è¿½åŠ ã—ã¾ã—ãŸ" -#: modules/popup-dialog.php:531 modules/pref-filters.php:142 -msgid "Inverse match" -msgstr "一致ã—ãªã„" +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "ユーザー %s ã®è¿½åР䏭ã§ã™ã€‚" -#: modules/popup-dialog.php:541 -msgid "Create" -msgstr "作æˆ" +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "ユーザー %s ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚" -#: modules/popup-dialog.php:555 -msgid "Update Errors" -msgstr "更新エラー" +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "ユーザー %s ã®ãƒ‘スワードを %s ã«å¤‰æ›´ã—ã¾ã—ãŸ" -#: modules/popup-dialog.php:558 -msgid "These feeds have not been updated because of errors:" -msgstr "エラーã®ãŸã‚ã€ãƒ•ã‚£ãƒ¼ãƒ‰ã¯æ›´æ–°ã•れã¾ã›ã‚“ã§ã—ãŸ:" +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "ユーザー %s ã®æ–°ã—ã„パスワードを %s ã«é€ä¿¡ã—ã¦ã„ã¾ã™" -#: modules/popup-dialog.php:584 -msgid "Edit Tags" -msgstr "タグを編集ã™ã‚‹" +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] パスワード変更通知" -#: modules/popup-dialog.php:589 -msgid "Tags for this article (separated by commas):" -msgstr "ã“ã®è¨˜äº‹ã®ã‚¿ã‚° (カンマã§åŒºåˆ‡ã‚Šã¾ã™):" +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "é¸æŠž" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "ユーザーã®ä½œæˆ" -#: modules/popup-dialog.php:611 modules/pref-feeds.php:467 -#: modules/pref-feeds.php:621 modules/pref-filters.php:157 -#: modules/pref-users.php:179 -msgid "Save" -msgstr "ä¿å­˜" +#: classes/pref/users.php:346 +msgid "Details" +msgstr "詳細" -#: modules/popup-dialog.php:620 -#, fuzzy -msgid "Tag Cloud" -msgstr "タグクラウド" +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "編集" -#: modules/popup-dialog.php:623 -msgid "Showing most popular tags " -msgstr "ã‚‚ã£ã¨ã‚‚人気ã®ã‚るタグを表示中 " +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "アクセスレベル" -#: modules/popup-dialog.php:624 -#, fuzzy -msgid "more tags" -msgstr "ã‚¿ã‚°ãŒã‚りã¾ã›ã‚“" +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "最終ログイン" -#: modules/pref-feeds.php:4 -msgid "Check to enable field" -msgstr "" +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "編集ã™ã‚‹ã«ã¯ã‚¯ãƒªãƒƒã‚¯" -#: modules/pref-feeds.php:187 -msgid "Feed Editor" -msgstr "フィードエディター" +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "ユーザーãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“。" -#: modules/pref-feeds.php:242 -msgid "Link to feed:" -msgstr "フィードã¸ã®ãƒªãƒ³ã‚¯:" +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "ユーザーãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" -#: modules/pref-feeds.php:259 -msgid "Not linked" -msgstr "リンクã•れã¦ã„ã¾ã›ã‚“" +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "有効ã«ã™ã‚‹ãƒ•ィールドã«ãƒã‚§ãƒƒã‚¯" -#: modules/pref-feeds.php:310 modules/pref-feeds.php:537 -msgid "using" -msgstr "" +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, fuzzy, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "フィードを編集ã™ã‚‹" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "フィードã®é¡Œå" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "æ›´æ–°" -#: modules/pref-feeds.php:322 modules/pref-feeds.php:549 +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 msgid "Article purging:" msgstr "記事ã®å‰Šé™¤:" -#: modules/pref-feeds.php:369 modules/pref-feeds.php:582 -#, fuzzy -msgid "Hide from Popular feeds" -msgstr "自分ã®ãƒ•ィード一覧ã‹ã‚‰éš ã™" +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "ヒント: Twitter フィード以外ã§ã‚‚ã—フィードãŒèªè¨¼ã‚’è¦æ±‚ã™ã‚‹ãªã‚‰ã€ãƒ­ã‚°ã‚¤ãƒ³æƒ…報を入力ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" -#: modules/pref-feeds.php:380 modules/pref-feeds.php:587 -msgid "Right-to-left content" -msgstr "å³ã‹ã‚‰å·¦ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„" +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "人気ã®ã‚るフィードã‹ã‚‰éš ã™" -#: modules/pref-feeds.php:392 modules/pref-feeds.php:593 +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 msgid "Include in e-mail digest" msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ãƒ€ã‚¤ã‚¸ã‚§ã‚¹ãƒˆã«å«ã‚€" -#: modules/pref-feeds.php:405 modules/pref-feeds.php:599 +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 msgid "Always display image attachments" -msgstr "" +msgstr "å¸¸ã«æ·»ä»˜ç”»åƒã‚’表示ã™ã‚‹" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "ç”»åƒã‚’埋ã‚è¾¼ã¾ãªã„" -#: modules/pref-feeds.php:427 modules/pref-feeds.php:607 +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 msgid "Cache images locally" msgstr "ローカルã«ç”»åƒã‚’キャッシュã™ã‚‹" -#: modules/pref-feeds.php:439 -#, fuzzy +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "æ›´æ–°ã•れãŸè¨˜äº‹ã‚’既読ã«ã™ã‚‹" + +#: classes/pref/feeds.php:728 msgid "Icon" -msgstr "æ“作" +msgstr "アイコン" -#: modules/pref-feeds.php:453 +#: classes/pref/feeds.php:742 msgid "Replace" -msgstr "" +msgstr "ç½®ãæ›ãˆ" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "プッシュ更新ã®å†è³¼èª­" -#: modules/pref-feeds.php:478 -msgid "Multiple Feed Editor" -msgstr "複数フィードエディター" +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "プッシュ対応フィードã«ã¤ã„㦠PubSubHubbub ã®è³¼èª­çŠ¶æ…‹ã‚’ãƒªã‚»ãƒƒãƒˆã™ã‚‹ã€‚" -#: modules/pref-feeds.php:842 modules/pref-feeds.php:889 +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 msgid "All done." msgstr "ã™ã¹ã¦çµ‚了ã—ã¾ã—ãŸã€‚" -#: modules/pref-feeds.php:920 -#, php-format -msgid "Subscribed to %s." -msgstr "%s を購読ã—ã¾ã—ãŸã€‚" - -#: modules/pref-feeds.php:923 -#, fuzzy, php-format -msgid "Could not subscribe to %s." -msgstr "%s ã¯æ—¢ã«è³¼èª­ã—ã¦ã„ã¾ã™ã€‚" - -#: modules/pref-feeds.php:926 -#, php-format -msgid "Already subscribed to %s." -msgstr "%s ã¯æ—¢ã«è³¼èª­ã—ã¦ã„ã¾ã™ã€‚" +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "エラーã®ã‚ã£ãŸãƒ•ィード" -#: modules/pref-feeds.php:949 -msgid "Edit subscription options" -msgstr "購読オプションã®ç·¨é›†" +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "活発ã§ãªã„フィード" -#: modules/pref-feeds.php:1033 -msgid "Category editor" -msgstr "カテゴリーエディター" +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "é¸æŠžã—ãŸãƒ•ィードを編集" -#: modules/pref-feeds.php:1056 -#, php-format -msgid "Category $%s already exists in the database." -msgstr "カテゴリー %s ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚" - -#: modules/pref-feeds.php:1077 -msgid "Create category" -msgstr "カテゴリーã®ä½œæˆ" +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "ソート順ã®ãƒªã‚»ãƒƒãƒˆ" -#: modules/pref-feeds.php:1130 -msgid "No feed categories defined." -msgstr "フィードカテゴリーãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“。" +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "一括購読" -#: modules/pref-feeds.php:1160 -msgid "Some feeds have update errors (click for details)" -msgstr "ã„ãã¤ã‹ã®ãƒ•ã‚£ãƒ¼ãƒ‰ã®æ›´æ–°ã‚¨ãƒ©ãƒ¼ã§ã™ (詳細ã¯ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãã ã•ã„)" - -#: modules/pref-feeds.php:1181 help/3.php:45 help/4.php:22 -msgid "Subscribe to feed" -msgstr "フィードを購読ã™ã‚‹" +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "カテゴリー" -#: modules/pref-feeds.php:1184 -#, fuzzy -msgid "Edit feeds" -msgstr "フィードを編集ã™ã‚‹" +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "カテゴリーを追加" -#: modules/pref-feeds.php:1189 -msgid "Edit categories" -msgstr "カテゴリーã®ç·¨é›†" +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "é¸æŠžã—ãŸã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’削除" -#: modules/pref-feeds.php:1198 -#, fuzzy +#: classes/pref/feeds.php:1345 msgid "More actions..." msgstr "æ“作..." -#: modules/pref-feeds.php:1202 +#: classes/pref/feeds.php:1349 msgid "Manual purge" msgstr "手動削除" -#: modules/pref-feeds.php:1206 +#: classes/pref/feeds.php:1353 msgid "Clear feed data" msgstr "ãƒ•ã‚£ãƒ¼ãƒ‰ãƒ‡ãƒ¼ã‚¿ã®æ¶ˆåŽ»" -#: modules/pref-feeds.php:1207 modules/pref-filters.php:324 +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 msgid "Rescore articles" msgstr "記事ã®ã‚¹ã‚³ã‚¢ã®å†é›†è¨ˆ" -#: modules/pref-feeds.php:1296 -msgid "Show last article times" -msgstr "最後ã®è¨˜äº‹ã®æ™‚間を表示ã™ã‚‹" - -#: modules/pref-feeds.php:1313 modules/pref-feeds.php:1373 -msgid "Last Article" -msgstr "最後ã®è¨˜äº‹" - -#: modules/pref-feeds.php:1398 modules/pref-filters.php:487 -#: modules/pref-users.php:467 -msgid "Click to edit" -msgstr "編集ã™ã‚‹ã«ã¯ã‚¯ãƒªãƒƒã‚¯" +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" -#: modules/pref-feeds.php:1412 -#, php-format -msgid "(linked to %s)" -msgstr "(%s ã¸ãƒªãƒ³ã‚¯ã—ã¾ã—ãŸ)" +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "OPML を使ã†ã“ã¨ã§ã€ãƒ•ィードã€ãƒ•ィルターã€ãƒ©ãƒ™ãƒ«ã€Tiny Tiny RSS ã®è¨­å®šã‚’エクスãƒãƒ¼ãƒˆã€ã‚¤ãƒ³ãƒãƒ¼ãƒˆã§ãã¾ã™ã€‚" -#: modules/pref-feeds.php:1439 -#, fuzzy -msgid "You don't have any subscribed feeds." -msgstr "カテゴリーã‹ã‚‰è³¼èª­ã‚’ã‚„ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。" +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "OPML を使ã£ã¦ç§»è¡Œã§ãã‚‹ã®ã¯ãƒ¡ã‚¤ãƒ³ã®è¨­å®šãƒ—ロファイルã®ã¿ã§ã™ã€‚" -#: modules/pref-feeds.php:1441 -#, fuzzy -msgid "No matching feeds found." -msgstr "一致ã™ã‚‹ãƒ•ィルターãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "OPML インãƒãƒ¼ãƒˆ" -#: modules/pref-feeds.php:1447 -msgid "OPML" -msgstr "OPML" +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "ファイルå:" -#: modules/pref-feeds.php:1470 -msgid "Import" -msgstr "インãƒãƒ¼ãƒˆ" +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "設定をå«ã‚ã‚‹" -#: modules/pref-feeds.php:1475 +#: classes/pref/feeds.php:1429 msgid "Export OPML" msgstr "OPML エクスãƒãƒ¼ãƒˆ" -#: modules/pref-feeds.php:1478 -msgid "Firefox Integration" +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "ã‚ãªãŸã® OPML ã¯å…¬ã«å…¬é–‹ã§ãã€ä»¥ä¸‹ã® URL を知ã£ã¦ã„る人ã§ã‚れã°èª°ã§ã‚‚購読ã§ãã¾ã™ã€‚" + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "公開 OPML 㯠Tiny Tiny RSS ã®è¨­å®šã€èªè¨¼ã®å¿…è¦ãªãƒ•ィードã€äººæ°—ã®ã‚るフィードã‹ã‚‰éš ã•れãŸãƒ•ィードã¯å«ã¿ã¾ã›ã‚“。" + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "公開 OPML URL" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "公開 OPML URL を表示" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" msgstr "Firefox çµ±åˆ" -#: modules/pref-feeds.php:1480 -msgid "" -"This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the " -"link below." -msgstr "" -"下ã®ãƒªãƒ³ã‚¯ã‚’クリックã™ã‚‹ã“ã¨ã§ã€Firefox ã®ãƒ•ィードリーダーã¨ã—ã¦ã“ã® Tiny " -"Tiny RSS ã®ã‚µã‚¤ãƒˆã‚’使ã†ã“ã¨ãŒã§ãã¾ã™ã€‚" +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "下ã®ãƒªãƒ³ã‚¯ã‚’クリックã™ã‚‹ã“ã¨ã§ã€Firefox ã®ãƒ•ィードリーダーã¨ã—ã¦ã“ã® Tiny Tiny RSS ã®ã‚µã‚¤ãƒˆã‚’使ã†ã“ã¨ãŒã§ãã¾ã™ã€‚" -#: modules/pref-feeds.php:1487 +#: classes/pref/feeds.php:1456 msgid "Click here to register this site as a feed reader." msgstr "クリックã™ã‚‹ã¨ãƒ•ィードリーダーã¨ã—ã¦ã“ã®ã‚µã‚¤ãƒˆã‚’登録ã—ã¾ã™ã€‚" -#: modules/pref-feeds.php:1498 -msgid "" -"Published articles are exported as a public RSS feed and can be subscribed " -"by anyone who knows the URL specified below." -msgstr "" +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "公開・共有ã—ãŸè¨˜äº‹ / 生æˆã—ãŸãƒ•ィード" -#: modules/pref-feeds.php:1501 -#, fuzzy +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "公開ã—ãŸè¨˜äº‹ã¯å…¬é–‹ RSS フィードã¨ã—ã¦ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã•れã€ä»¥ä¸‹ã® URL を知ã£ã¦ã„る人ã§ã‚れã°èª°ã§ã‚‚購読ã§ãã¾ã™ã€‚" + +#: classes/pref/feeds.php:1474 msgid "Display URL" -msgstr "ã‚¿ã‚°ã®è¡¨ç¤º" +msgstr "URL ã®è¡¨ç¤º" -#: modules/pref-feeds.php:1604 -#, fuzzy, php-format -msgid "%d archived articles" -msgstr "ãŠæ°—ã«å…¥ã‚Šã®è¨˜äº‹" +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "生æˆã•れ㟠URL ã‚’ã™ã¹ã¦æ¶ˆåŽ»ã™ã‚‹" -#: modules/pref-feeds.php:1633 -msgid "No feeds found." -msgstr "フィードãŒã‚りã¾ã›ã‚“。" +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "3 ヶ月間更新ã•れã¦ã„ãªã„フィード(å¤ã„ã‚‚ã®é †):" -#: modules/pref-filters.php:23 -msgid "Filter Editor" -msgstr "フィルターエディター" +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "編集ã™ã‚‹ã«ã¯ã‚¯ãƒªãƒƒã‚¯" -#: modules/pref-filters.php:212 -#, php-format -msgid "Saved filter %s" -msgstr "フィルター %s ã‚’ä¿å­˜ã—ã¾ã—ãŸ" +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "é¸æŠžã—ãŸãƒ•ィードã®è³¼èª­ã‚’ã‚„ã‚ã‚‹" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "1 行㫠1 フィードãšã¤æœ‰åŠ¹ãª RSS フィードを追加(フィードã®è‡ªå‹•検出ã¯è¡Œã‚れã¾ã›ã‚“)" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "購読ã™ã‚‹ãƒ•ィード(1 行 1 フィード)" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "ã“ã®ãƒ•ィードã¯èªè¨¼ã‚’è¦æ±‚ã—ã¾ã™ã€‚" + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "ã“ã®ãƒ•ィルタã«ä¸€è‡´ã™ã‚‹è¨˜äº‹:" + +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "ã“ã®ãƒ•ィルタã«ä¸€è‡´ã™ã‚‹æœ€è¿‘ã®è¨˜äº‹ãŒã‚りã¾ã›ã‚“。" -#: modules/pref-filters.php:266 +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(å転)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 #, php-format -msgid "Created filter %s" -msgstr "フィルター %s を作æˆã—ã¾ã—ãŸ" +msgid "%s on %s in %s %s" +msgstr "「%3$sã€ã® %2$s ã«å¯¾ã—㦠%1$s %4$s" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "キャプション" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "一致" -#: modules/pref-filters.php:315 help/3.php:31 help/4.php:25 -msgid "Create filter" -msgstr "フィルターを作æˆã™ã‚‹" +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "追加" -#: modules/pref-filters.php:318 modules/pref-users.php:376 -msgid "Edit" -msgstr "編集" +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "é©ç”¨ã™ã‚‹æ“作" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "有効ã«ã™ã‚‹" -#: modules/pref-filters.php:408 -msgid "Field" -msgstr "é …ç›®" +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "ã„ãšã‚Œã‹ã®ãƒ«ãƒ¼ãƒ«ã«ä¸€è‡´" -#: modules/pref-filters.php:409 -msgid "Params" -msgstr "パラメーター" +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "ä¸€è‡´çµæžœã®å転" -#: modules/pref-filters.php:476 -msgid "(Disabled)" -msgstr "(無効ã§ã™)" +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "テスト" -#: modules/pref-filters.php:492 -msgid "(Inverse)" -msgstr "" +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "組ã¿åˆã‚ã›" -#: modules/pref-filters.php:512 -msgid "No filters defined." -msgstr "フィルターãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“。" +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "作æˆ" -#: modules/pref-filters.php:514 -msgid "No matching filters found." -msgstr "一致ã™ã‚‹ãƒ•ィルターãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "æ­£è¦è¡¨ç¾ã®ä¸€è‡´çµæžœã‚’å転ã™ã‚‹" -#: modules/pref-labels.php:102 -#, php-format -msgid "Created label %s" -msgstr "ラベル %s を作æˆã—ã¾ã—ãŸ" +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "対象項目" -#: modules/pref-labels.php:137 help/3.php:30 help/4.php:26 -msgid "Create label" -msgstr "ラベルを作æˆã™ã‚‹" +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "フィード" -#: modules/pref-labels.php:143 -msgid "Clear colors" -msgstr "è‰²ã®æ¶ˆåŽ»" +#: classes/pref/filters.php:947 +#, fuzzy +msgid "Wiki: Filters" +msgstr "フィルター" -#: modules/pref-labels.php:223 -msgid "Click to change color" -msgstr "色を変ãˆã‚‹ãŸã‚ã«ã‚¯ãƒªãƒƒã‚¯" +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "ルールã®ä¿å­˜" -#: modules/pref-labels.php:246 -msgid "No labels defined." -msgstr "ラベルãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“。" +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "ルールã®è¿½åŠ " -#: modules/pref-labels.php:248 -msgid "No matching labels found." -msgstr "一致ã™ã‚‹ãƒ©ãƒ™ãƒ«ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "æ“作ã®å®Ÿè¡Œ" -#: modules/pref-labels.php:306 -msgid "custom color:" -msgstr "カスタム色" +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "パラメーター:" -#: modules/pref-labels.php:307 -msgid "foreground" -msgstr "剿™¯è‰²" +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "æ“作ã®ä¿å­˜" -#: modules/pref-labels.php:308 -msgid "background" -msgstr "背景色" +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "æ“作ã®è¿½åŠ " -#: modules/pref-prefs.php:37 -msgid "Old password cannot be blank." -msgstr "å¤ã„パスワードを空ã«ã§ãã¾ã›ã‚“。" +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[キャプションãªã—]" -#: modules/pref-prefs.php:42 -msgid "New password cannot be blank." -msgstr "æ–°ã—ã„パスワードを空ã«ã§ãã¾ã›ã‚“。" +#: classes/pref/filters.php:1044 +#, fuzzy, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "ルールã®è¿½åŠ " -#: modules/pref-prefs.php:47 -msgid "Entered passwords do not match." -msgstr "パスワードãŒä¸€è‡´ã—ã¾ã›ã‚“。" +#: classes/pref/filters.php:1059 +#, fuzzy, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "æ“作ã®è¿½åŠ " -#: modules/pref-prefs.php:74 -msgid "Password has been changed." -msgstr "パスワードを変更ã—ã¾ã—ãŸã€‚" +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "色" -#: modules/pref-prefs.php:76 -msgid "Old password is incorrect." -msgstr "å¤ã„パスワードãŒä¸æ­£ç¢ºã§ã™ã€‚" +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "剿™¯è‰²:" -#: modules/pref-prefs.php:104 -msgid "The configuration was saved." -msgstr "設定をä¿å­˜ã—ã¾ã—ãŸã€‚" +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "背景色:" -#: modules/pref-prefs.php:120 +#: classes/pref/labels.php:232 #, php-format -msgid "Unknown option: %s" -msgstr "䏿˜Žãªã‚ªãƒ—ション: %s" +msgid "Created label %s" +msgstr "ラベル %s を作æˆã—ã¾ã—ãŸ" -#: modules/pref-prefs.php:131 -msgid "E-mail has been changed." -msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’変更ã—ã¾ã—ãŸã€‚" +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "è‰²ã®æ¶ˆåŽ»" -#: modules/pref-prefs.php:171 -msgid "" -"Your password is at default value, \n" -"\t\t\t\t\t\tplease change it." -msgstr "" -"ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ãŒæ¨™æº–ã®ã¾ã¾ã§ã™ã€‚\n" -" 変更ã—ã¦ãã ã•ã„。" +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "全体" -#: modules/pref-prefs.php:198 -msgid "Personal data" -msgstr "個人データ" +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "インターフェース" -#: modules/pref-prefs.php:205 -msgid "E-mail" -msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«" +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "高度" -#: modules/pref-prefs.php:216 -msgid "Access level" -msgstr "アクセスレベル" +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "ダイジェスト" -#: modules/pref-prefs.php:229 -msgid "Change e-mail" -msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’変更ã™ã‚‹" +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "é‡è¤‡è¨˜äº‹ã®è¨±å¯" -#: modules/pref-prefs.php:237 -msgid "Old password" -msgstr "ç¾åœ¨ã®ãƒ‘スワード" +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "ブラックリスト化ã—ãŸã‚¿ã‚°" -#: modules/pref-prefs.php:244 -msgid "New password" -msgstr "æ–°ã—ã„パスワード" +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "ã‚¿ã‚°ã‚’è‡ªå‹•çš„ã«æ¤œå‡ºã™ã‚‹éš›ã€ä»¥ä¸‹ã®ã‚¿ã‚°ã‚’無視ã™ã‚‹ã€‚ (ã‚«ãƒ³ãƒžåŒºåˆ‡ã‚Šãƒªã‚¹ãƒˆã§æŒ‡å®š)" -#: modules/pref-prefs.php:252 -msgid "Confirm password" -msgstr "æ–°ã—ã„パスワード(確èª)" +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "自動的ã«è¨˜äº‹ã‚’既読ã«ã™ã‚‹" -#: modules/pref-prefs.php:268 -msgid "Change password" -msgstr "パスワードを変更ã™ã‚‹" +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "記事ã®ãƒªã‚¹ãƒˆã‚’スクロールã—ãŸéš›ã€è‡ªå‹•çš„ã«è¨˜äº‹ã‚’既読ã«ã™ã‚‹ã€‚" -#: modules/pref-prefs.php:323 -msgid "Select theme" -msgstr "ãƒ†ãƒ¼ãƒžã‚’é¸æŠžã™ã‚‹" +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "組ã¿åˆã‚ã›ãƒ¢ãƒ¼ãƒ‰ã§è¨˜äº‹ã‚’自動的ã«å±•é–‹ã™ã‚‹" -#: modules/pref-prefs.php:383 modules/pref-prefs.php:388 -msgid "Yes" -msgstr "ã¯ã„" +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "フィード表示ã®çµ„ã¿åˆã‚ã›" -#: modules/pref-prefs.php:385 modules/pref-prefs.php:388 -msgid "No" -msgstr "ã„ã„ãˆ" +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "ヘッドラインã¨è¨˜äº‹ã®å†…容を分ã‘ã¦è¡¨ç¤ºã™ã‚‹ã®ã§ã¯ãªãã€å±•é–‹ã•れãŸè¨˜äº‹ã®ãƒªã‚¹ãƒˆã‚’表示ã™ã‚‹ã€‚" -#: modules/pref-prefs.php:409 -msgid "Save configuration" -msgstr "設定をä¿å­˜ã™ã‚‹" +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "フィードを既読ã«ã™ã‚‹éš›ç¢ºèªã™ã‚‹" -#: modules/pref-prefs.php:412 -msgid "Manage profiles" -msgstr "" +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "一度ã«è¡¨ç¤ºã™ã‚‹è¨˜äº‹æ•°" -#: modules/pref-prefs.php:415 -msgid "Reset to defaults" -msgstr "æ¨™æº–ã«æˆ»ã™" +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "æ¨™æº–ã®æ›´æ–°é–“éš”" -#: modules/pref-users.php:7 -msgid "Your access level is insufficient to open this tab." -msgstr "ã“ã®ã‚¿ãƒ–ã‚’é–‹ãã«ã¯ã‚¢ã‚¯ã‚»ã‚¹ãƒ¬ãƒ™ãƒ«ãŒä¸å分ã§ã™ã€‚" +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "更新方法ã«é–¢ã‚らãªã„ã€ãƒ•ã‚£ãƒ¼ãƒ‰ã®æ›´æ–°ãƒã‚§ãƒƒã‚¯ã®æœ€çŸ­é–“éš”" -#: modules/pref-users.php:17 -msgid "User details" -msgstr "ユーザーã®è©³ç´°" +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã®ãƒ€ã‚¤ã‚¸ã‚§ã‚¹ãƒˆã«å«ã¾ã‚Œã‚‹è¨˜äº‹ã‚’既読ã¨ã—ã¦è¨­å®šã™ã‚‹" -#: modules/pref-users.php:31 -msgid "User not found" -msgstr "ユーザーãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã§ã®ãƒ€ã‚¤ã‚¸ã‚§ã‚¹ãƒˆã‚’有効ã«ã™ã‚‹" -#: modules/pref-users.php:50 modules/pref-users.php:428 -msgid "Registered" -msgstr "登録済ã¿" +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "設定ã•れãŸé›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã«æ¯Žæ—¥æ–°ã—ã„(ã‹ã¤æœªèª­ã®)ヘッドラインã®ãƒ€ã‚¤ã‚¸ã‚§ã‚¹ãƒˆã‚’é€ã‚‹" -#: modules/pref-users.php:51 -msgid "Last logged in" -msgstr "最終ログイン" +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "指定ã•ã‚ŒãŸæ™‚刻å‰å¾Œã«ãƒ€ã‚¤ã‚¸ã‚§ã‚¹ãƒˆã®é€ä¿¡ã‚’試ã¿ã‚‹" -#: modules/pref-users.php:58 -msgid "Subscribed feeds count" -msgstr "購読フィード数" +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "UTC タイムゾーンを使用ã™ã‚‹" -#: modules/pref-users.php:62 -msgid "Subscribed feeds" -msgstr "購読ã—ãŸãƒ•ィード" +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "API アクセスを有効ã«ã™ã‚‹" -#: modules/pref-users.php:108 -msgid "User Editor" -msgstr "ユーザーエディター" +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«å¯¾ã™ã‚‹ API 経由ã§ã®å¤–部クライアントã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã™ã‚‹" -#: modules/pref-users.php:145 -msgid "Access level: " -msgstr "アクセスレベル: " +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "フィードカテゴリーを有効ã«ã™ã‚‹" -#: modules/pref-users.php:158 -msgid "Change password to" -msgstr "次ã®ãƒ‘スワードã«å¤‰æ›´ã™ã‚‹:" +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "未読記事数ã«ã‚ˆã‚‹ãƒ•ィードã®ä¸¦ã³æ›¿ãˆ" -#: modules/pref-users.php:167 -msgid "E-mail: " -msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«: " +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "æ–°è¦è¨˜äº‹ã¨ã—ã¦ã®å–ã‚Šæ‰±ã„æœŸé™ (å˜ä½: 時間)" -#: modules/pref-users.php:201 -#, php-format -msgid "Changed password of user %s." -msgstr "ユーザー %s ã®ãƒ‘スワードを変更ã—ã¾ã—ãŸã€‚" +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "未読記事ãŒãªã„フィードをéžè¡¨ç¤ºã«ã™ã‚‹" -#: modules/pref-users.php:249 -#, php-format -msgid "Added user %s with password %s" -msgstr "ユーザーå %s ã¨ãƒ‘スワード %s ã§è¿½åŠ ã—ã¾ã—ãŸ" +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "既読フィードをéžè¡¨ç¤ºã«ã—ãŸéš›ã€ç‰¹åˆ¥ãƒ•ィードを表示ã™ã‚‹" -#: modules/pref-users.php:256 -#, php-format -msgid "Could not create user %s" -msgstr "ユーザー %s ã®è¿½åР䏭ã§ã™ã€‚" +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "å®Œå…¨ãªæ—¥ä»˜ã®å½¢å¼" -#: modules/pref-users.php:260 -#, php-format -msgid "User %s already exists." -msgstr "ユーザー %s ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚" +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "æ—¥ä»˜ã®æ§‹æ–‡ã¯ PHP ã® date() 関数ã¨åŒã˜ã§ã™ã€‚" -#: modules/pref-users.php:280 -#, php-format -msgid "" -"Changed password of user %s\n" -"\t\t\t\t\t to %s" -msgstr "" -"ユーザー %s ã®ãƒ‘スワードを\n" -" %sã«å¤‰æ›´ã—ã¾ã—ãŸ" +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "キャッãƒã‚¢ãƒƒãƒ—æ™‚ã«æ¬¡ã®ãƒ•ィードを表示ã™ã‚‹" -#: modules/pref-users.php:284 -#, php-format -msgid "Notifying %s." -msgstr "%s ã®é€šçŸ¥ä¸­ã§ã™ã€‚" +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "フィードを既読ã«ã—ãŸå¾Œã§è‡ªå‹•çš„ã«æœªèª­è¨˜äº‹ã®ã‚る次ã®ãƒ•ィードを開ã" -#: modules/pref-users.php:321 -msgid "[tt-rss] Password change notification" -msgstr "[tt-rss] パスワード変更通知" +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "ã“ã®æ—¥æ•°ã‚ˆã‚Šã‚ã¨ã®å¤ã„投稿を削除ã™ã‚‹ (0 ã¯ç„¡åйã§ã™)" -#: modules/pref-users.php:370 help/4.php:27 -msgid "Create user" -msgstr "ユーザーã®ä½œæˆ" +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "未読記事を削除ã™ã‚‹" -#: modules/pref-users.php:374 -#, fuzzy -msgid "Details" -msgstr "毎日" +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "ヘッドラインã®é †åºã‚’逆転ã™ã‚‹ (å¤ã„ã‚‚ã®ãŒä¸Š)" -#: modules/pref-users.php:380 -msgid "Reset password" -msgstr "パスワードã®ãƒªã‚»ãƒƒãƒˆ" +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "çŸ­ã„æ—¥ä»˜ã®å½¢å¼" -#: modules/pref-users.php:426 -msgid "Login" -msgstr "ログイン" +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "ヘッドライン一覧ã«å†…容ã®ãƒ—レビューを表示ã™ã‚‹" -#: modules/pref-users.php:427 -msgid "Access Level" -msgstr "アクセスレベル" +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "フィード日時ã«ã‚ˆã‚‹ãƒ˜ãƒƒãƒ‰ãƒ©ã‚¤ãƒ³ã®ä¸¦ã³æ›¿ãˆ" -#: modules/pref-users.php:429 -msgid "Last login" -msgstr "最終ログイン" +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "ヘッドラインã®ä¸¦ã³æ›¿ãˆã«ã‚¤ãƒ³ãƒãƒ¼ãƒˆæ—¥æ™‚ã§ã¯ãªãフィードãŒè¨­å®šã™ã‚‹æ—¥æ™‚を使ã†ã€‚" -#: modules/pref-users.php:487 -msgid "No users defined." -msgstr "ユーザーãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“。" +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "SSL 証明書ã§ãƒ­ã‚°ã‚¤ãƒ³ã™ã‚‹" -#: modules/pref-users.php:489 -msgid "No matching users found." -msgstr "ユーザーãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "クリックã—㦠tt-rss ã« SSL クライアント証明書を登録ã™ã‚‹" -#: help/2.php:1 -msgid "Content filtering" -msgstr "コンテンツフィルタリング" +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "記事内ã«ç”»åƒã‚’表示ã—ãªã„" -#: help/2.php:3 -msgid "" -"Tiny Tiny RSS has support for filtering (or processing) articles. Filtering " -"is done once, when new article is imported to the database from the " -"newsfeed, specified field is matched against regular expression and some " -"action is taken. Regular expression matching is case-insensitive." -msgstr "" +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "記事ã‹ã‚‰å®‰å…¨ã§ãªã„ã‚¿ã‚°ã‚’å–り除ã" -#: help/2.php:5 -msgid "" -"Supported actions are: filter (do not import) article, mark article as read, " -"set starred, assign tag(s), and set score. Filters can be defined globally " -"and for some specific feed." -msgstr "" +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "記事を読ã¿è¾¼ã‚€éš›ã€æœ€ã‚‚一般的㪠HTML タグ以外を除去ã™ã‚‹ã€‚" -#: help/2.php:7 -msgid "" -"Multiple and inverse matching are supported. All matching filters are " -"considered when article is being imported and all actions executed in " -"sequence. Inverse matching reverts matching result, e.g. filter matching " -"XYZZY in title with inverse flag will match all articles, except those " -"containing string XYZZY in title." -msgstr "" +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "スタイルシートã®ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚º" -#: help/2.php:9 -msgid "See also:" -msgstr "å‚考:" +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "ã‚ãªãŸã®å¥½ã¿ã® CSS スタイルシートã«ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚ºã—ã¾ã™ã€‚" -#: help/3.php:1 help/4.php:1 -msgid "Keyboard Shortcuts" -msgstr "キーボードショートカット" +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "タイムゾーン" -#: help/3.php:5 -msgid "Navigation" -msgstr "ナビゲーション" +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "仮想フィードã®ã‚°ãƒ«ãƒ¼ãƒ—ヘッドライン" -#: help/3.php:8 -msgid "Move between feeds" -msgstr "フィード間ã§ç§»å‹•ã™ã‚‹" +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "特別フィードã€ãƒ©ãƒ™ãƒ«ã€ã‚«ãƒ†ã‚´ãƒªã‚’å…ƒã®ãƒ•ィードã§ã‚°ãƒ«ãƒ¼ãƒ—化ã—ã¾ã™ã€‚" -#: help/3.php:9 -msgid "Move between articles" -msgstr "記事間ã§ç§»å‹•ã™ã‚‹" +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "言語" -#: help/3.php:10 -msgid "Show search dialog" -msgstr "検索ダイアログを表示ã™ã‚‹" +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "テーマ" -#: help/3.php:13 -msgid "Active article actions" -msgstr "有効ãªè¨˜äº‹ã®æ“作" +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "CSS ãƒ†ãƒ¼ãƒžã‚’é¸æŠžã—ã¦ãã ã•ã„" -#: help/3.php:16 -msgid "Toggle starred" -msgstr "ãŠæ°—ã«å…¥ã‚Šã‚’切り替ãˆã‚‹" +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "設定をä¿å­˜ã—ã¾ã—ãŸã€‚" -#: help/3.php:17 -msgid "Toggle published" -msgstr "公開を切り替ãˆã‚‹" +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "個人データを変更ã—ã¾ã—ãŸã€‚" -#: help/3.php:18 -msgid "Toggle unread" -msgstr "未読ã«åˆ‡ã‚Šæ›¿ãˆã‚‹" +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "ã‚ãªãŸã®è¨­å®šã¯æ¨™æº–値ã«è¨­å®šã•れã¾ã—ãŸã€‚" -#: help/3.php:19 -msgid "Edit tags" -msgstr "タグを編集ã™ã‚‹" +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "個人データ / èªè¨¼" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "個人データ" -#: help/3.php:20 -msgid "Open article in new window" -msgstr "æ–°ã—ã„ウィンドウã§è¨˜äº‹ã‚’é–‹ã" +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "フルãƒãƒ¼ãƒ " -#: help/3.php:21 -msgid "Mark articles below/above active one as read" -msgstr "" +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«" -#: help/3.php:22 -msgid "Scroll article content" -msgstr "記事ã®å†…容をスクロールã™ã‚‹" +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "アクセスレベル" -#: help/3.php:26 help/4.php:30 -msgid "Other actions" -msgstr "ãã®ä»–ã®æ“作" +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "ä¿å­˜" -#: help/3.php:29 -msgid "Select article under mouse cursor" -msgstr "マウスカーソルã®ä¸‹ã®è¨˜äº‹ã‚’é¸æŠžã™ã‚‹" +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ãŒæ¨™æº–ã®ã¾ã¾ã§ã™ã€‚変更ã—ã¦ãã ã•ã„。" -#: help/3.php:32 -msgid "Collapse sidebar" -msgstr "サイドãƒãƒ¼ã‚’縮å°ã™ã‚‹" +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "ç¾åœ¨ã®ãƒ‘スワードを変更ã™ã‚‹ã¨ OTP ãŒç„¡åŠ¹åŒ–ã•れã¾ã™ã€‚" -#: help/3.php:33 -msgid "Toggle category reordering mode" -msgstr "カテゴリーã®ä¸¦ã³æ›¿ãˆãƒ¢ãƒ¼ãƒ‰ã®åˆ‡ã‚Šæ›¿ãˆ" +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "ç¾åœ¨ã®ãƒ‘スワード" -#: help/3.php:34 help/4.php:34 -msgid "Display this help dialog" -msgstr "ã“ã®ãƒ˜ãƒ«ãƒ—ダイアログã®è¡¨ç¤º" +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "æ–°ã—ã„パスワード" -#: help/3.php:39 -msgid "Feed actions" -msgstr "フィードæ“作" +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "æ–°ã—ã„パスワード(確èª)" -#: help/3.php:42 -msgid "Update active feed" -msgstr "有効ãªãƒ•ã‚£ãƒ¼ãƒ‰ã®æ›´æ–°" +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "パスワードを変更ã™ã‚‹" -#: help/3.php:43 -msgid "Update all feeds" -msgstr "ã™ã¹ã¦ã®ãƒ•ã‚£ãƒ¼ãƒ‰ã®æ›´æ–°" +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "ワンタイムパスワード / Authenticator" -#: help/3.php:46 -msgid "Edit feed" -msgstr "フィードを編集ã™ã‚‹" +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "ワンタイムパスワードãŒç¾åœ¨æœ‰åйã§ã™ã€‚無効ã«ã™ã‚‹ã«ã¯ä»¥ä¸‹ã«ç¾åœ¨ã®ãƒ‘スワードを入力ã—ã¦ãã ã•ã„。" -#: help/3.php:47 -msgid "Sort by name or unread count" -msgstr "åå‰ã‹æœªèª­æ•°ã§ä¸¦ã³æ›¿ãˆã‚‹" +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "パスワードã®å…¥åŠ›" -#: help/3.php:48 -msgid "Hide visible read articles" -msgstr "読んã è¨˜äº‹ãŒè¦‹ãˆãªã„よã†ã«éš ã™" +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "OTP を無効ã«ã™ã‚‹" -#: help/3.php:49 -msgid "Mark feed as read" -msgstr "マークã—ãŸãƒ•ィードを既読ã«ã™ã‚‹" +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "ã“ã®æ©Ÿèƒ½ã‚’使用ã™ã‚‹ã«ã¯äº’æ›æ€§ã®ã‚ã‚‹ Authenticator ãŒå¿…è¦ã§ã™ã€‚ç¾åœ¨ã®ãƒ‘スワードを変更ã™ã‚‹ã¨ OTP ãŒç„¡åŠ¹åŒ–ã•れã¾ã™ã€‚" -#: help/3.php:50 -#, fuzzy -msgid "Reverse headlines order" -msgstr "ヘッドラインã®é€†é † (å¤ã„ã‚‚ã®ãŒã¯ã˜ã‚ã«)" +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "èªè¨¼ã‚¢ãƒ—リケーションã§ä»¥ä¸‹ã®ã‚³ãƒ¼ãƒ‰ã‚’スキャンã—ã¦ãã ã•ã„:" -#: help/3.php:51 -msgid "Mark all feeds as read" -msgstr "ã™ã¹ã¦ã®ãƒ•ィードを既読ã«è¨­å®šã™ã‚‹" +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "生æˆã•れãŸãƒ¯ãƒ³ã‚¿ã‚¤ãƒ ãƒ‘スワードを入力ã—ã¦ãã ã•ã„" -#: help/3.php:52 -msgid "If viewing category, (un)collapse it" -msgstr "" +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "OTP を有効ã«ã™ã‚‹" -#: help/3.php:55 help/4.php:5 -msgid "Go to..." -msgstr "移動..." +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "OTP ã«ã¯ PHP GD 機能ãŒå¿…è¦ã§ã™ã€‚" -#: help/3.php:62 -msgid "Tag cloud" -msgstr "タグクラウド" +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "ã„ãã¤ã‹ã®è¨­å®šã¯æ¨™æº–プロファイルã§ã®ã¿æœ‰åйã§ã™ã€‚" + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "カスタマイズ" + +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "登録" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "消去" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "ç¾åœ¨ã®ã‚µãƒ¼ãƒãƒ¼æ™‚刻: %s (UTC)" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "設定をä¿å­˜ã™ã‚‹" + +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "設定をä¿å­˜ã—ã¦çµ‚了ã™ã‚‹" + +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "プロファイルを管ç†ã™ã‚‹" -#: help/3.php:69 help/4.php:41 -msgid "Press any key to close this window." -msgstr "何ã‹ã‚­ãƒ¼ã‚’押ã—ã¦ã€ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‰ã˜ã¦ãã ã•ã„。" +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "æ¨™æº–ã«æˆ»ã™" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "プラグイン" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "プラグインã®å¤‰æ›´ã‚’åæ˜ ã™ã‚‹ãŸã‚ã«ã¯ Tiny Tiny RSS ã‚’å†èª­ã¿è¾¼ã¿ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "tt-rss.org ã® forums ã‹ wiki ã§ä»–ã®ãƒ—ラグインをダウンロードã§ãã¾ã™ã€‚" + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "システムプラグイン" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "プラグイン" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "説明" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "作者" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "ãã®ä»–情報" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "ãƒ‡ãƒ¼ã‚¿ã®æ¶ˆåŽ»" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "ユーザープラグイン" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "é¸æŠžã—ãŸãƒ—ラグインを有効ã«ã™ã‚‹" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "ãƒ¯ãƒ³ã‚¿ã‚¤ãƒ ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ãŒæ­£ã—ãã‚りã¾ã›ã‚“" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ãŒæ­£ã—ãã‚りã¾ã›ã‚“" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "ç¾åœ¨é¸æŠžã•れã¦ã„るテーマã®è‰²ã€ãƒ•ォントã€ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’ã“ã®ã‚«ã‚¹ã‚¿ãƒ  CSS 宣言ã§ä¸Šæ›¸ãã§ãã¾ã™ã€‚ã“ã®ãƒ•ァイルãŒãƒ™ãƒ¼ã‚¹ãƒ©ã‚¤ãƒ³ã¨ã—ã¦ä½¿ãˆã¾ã™ã€‚" -#: help/4.php:9 -msgid "My Feeds" -msgstr "自分ã®ãƒ•ィード" +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "プロファイルを作æˆã™ã‚‹" -#: help/4.php:10 -msgid "Other Feeds" -msgstr "ãã®ä»–ã®ãƒ•ィード" +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(有効)" -#: help/4.php:19 -msgid "Panel actions" -msgstr "パãƒãƒ«æ“作" +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "é¸æŠžã—ãŸãƒ—ロファイルを削除ã—ã¾ã™ã‹" -#: help/4.php:23 -msgid "Top 25 feeds" -msgstr "トップ 25 フィード" +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "プロファイルを有効ã«ã™ã‚‹" -#: help/4.php:24 -msgid "Edit feed categories" -msgstr "フィードカテゴリーを編集ã™ã‚‹" +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "インãƒãƒ¼ãƒˆã—ãŸãƒ©ãƒ™ãƒ«ã‹ãƒ•ィルタãŒã‚ã‚‹ãªã‚‰ã€æ–°ã—ã„データを見るãŸã‚ã«è¨­å®šã‚’æ›´æ–°(リロード)ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。" -#: help/4.php:33 -msgid "Focus search (if present)" -msgstr "" +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "ã‚ãªãŸã®å…¬é–‹ OPML ã® URL:" -#: help/4.php:39 -msgid "" -"Note: not all actions may be available, depending on Tiny Tiny RSS " -"configuration and your access level." -msgstr "" +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "æ–°ã—ã„ URL を生æˆã™ã‚‹" -#: mobile/functions.php:59 mobile/functions.php:136 mobile/functions.php:172 -#: mobile/functions.php:199 mobile/functions.php:233 mobile/functions.php:356 -#: mobile/prefs.php:25 -msgid "Home" -msgstr "" +#: 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 "更新デーモンãŒè¨­å®šã§æœ‰åйã«ãªã£ã¦ã„ã¾ã™ãŒã€ãƒ‡ãƒ¼ãƒ¢ãƒ³ãŒèµ·å‹•ã—ã¦ã„ãªã„ãŸã‚å…¨ã¦ã®ãƒ•ã‚£ãƒ¼ãƒ‰ãŒæ›´æ–°ã•れã¾ã›ã‚“。デーモンプロセスを起動ã™ã‚‹ã‹ã€ç®¡ç†è€…ã«é€£çµ¡ã—ã¦ãã ã•ã„。" -#: mobile/functions.php:392 -msgid "Nothing found (click to reload feed)." -msgstr "" +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "最終更新:" -#: mobile/prefs.php:30 -#, fuzzy -msgid "Enable categories" -msgstr "フィードカテゴリーを有効ã«ã™ã‚‹" +#: 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 "更新デーモンãŒãƒ•ィードを更新ã™ã‚‹ã®ã«éžå¸¸ã«é•·ã„時間ãŒã‹ã‹ã£ã¦ã„ã¾ã™ã€‚クラッシュã‹ãƒãƒ³ã‚°ã®ã‚ˆã†ãªå•題ãŒèµ·ã“ã£ã¦ã„ã‚‹ã®ã‹ã‚‚ã—れã¾ã›ã‚“。デーモンプロセスを確èªã™ã‚‹ã‹ã€ç®¡ç†è€…ã«é€£çµ¡ã—ã¦ãã ã•ã„。" -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "ON" -msgstr "" +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "ã“ã®ãƒ•ィードã¯ä»¥ä¸‹ã® URL ã§ RSS ã¨ã—ã¦è¦‹ã‚‰ã‚Œã¾ã™:" -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "OFF" +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" msgstr "" -#: mobile/prefs.php:35 +#: plugins/af_psql_trgm/init.php:112 #, fuzzy -msgid "Show images in posts" -msgstr "記事内ã«ç”»åƒã‚’表示ã—ãªã„" +msgid "Show related articles" +msgstr "共有ã—ãŸè¨˜äº‹" -#: mobile/prefs.php:40 +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 #, fuzzy -msgid "Hide read feeds" -msgstr "読んã ãƒ•ィードを隠ã™/å†è¡¨ç¤ºã™ã‚‹" +msgid "Mark similar articles as read" +msgstr "ã™ã¹ã¦ã®è¨˜äº‹ã‚’既読ã«ã—ã¾ã™ã‹?" -#: mobile/prefs.php:45 +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 #, fuzzy -msgid "Sort feeds by unread count" -msgstr "未読記事数ã«ã‚ˆã‚‹ãƒ•ィードã®ä¸¦ã³æ›¿ãˆ" - -#: functions.js:1315 -msgid "Can't add filter: nothing to match on." -msgstr "フィルターを追加ã§ãã¾ã›ã‚“: 一致ã™ã‚‹ã‚‚ã®ãŒã‚りã¾ã›ã‚“。" - -#: functions.js:1350 -msgid "Can't subscribe: no feed URL given." -msgstr "購読ã§ãã¾ã›ã‚“: フィード URL ãŒå…¥åŠ›ã•れã¦ã„ã¾ã›ã‚“。" +msgid "Global settings" +msgstr "設定をå«ã‚ã‚‹" -#: functions.js:1354 -msgid "Subscribing to feed..." -msgstr "フィードを購読ã—ã¦ã„ã¾ã™..." - -#: functions.js:1377 -#, fuzzy -msgid "Subscribed to %s" -msgstr "フィードを購読ã™ã‚‹:" +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "" -#: functions.js:1386 -#, fuzzy -msgid "Can't subscribe to the specified URL." -msgstr "購読ã§ãã¾ã›ã‚“: フィード URL ãŒå…¥åŠ›ã•れã¦ã„ã¾ã›ã‚“。" +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" -#: functions.js:1389 +#: plugins/af_psql_trgm/init.php:178 #, fuzzy -msgid "You are already subscribed to this feed." -msgstr "カテゴリーã‹ã‚‰è³¼èª­ã‚’ã‚„ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。" +msgid "Enable for all feeds:" +msgstr "フィードカテゴリーを有効ã«ã™ã‚‹" -#: functions.js:1952 -msgid "New articles available in this feed (click to show)" +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" msgstr "" -#: functions.js:1989 -#, fuzzy -msgid "Subscribed to %d feed(s)." -msgstr "フィードを購読ã™ã‚‹:" +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" -#: functions.js:1999 functions.js:2030 prefs.js:557 prefs.js:587 prefs.js:619 -#: prefs.js:908 prefs.js:928 prefs.js:1795 -msgid "No feeds are selected." -msgstr "é¸æŠžã•れãŸãƒ•ィードã¯ã‚りã¾ã›ã‚“。" +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "" -#: functions.js:2014 -msgid "" -"Remove selected feeds from the archive? Feeds with stored articles will not " -"be removed." +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" msgstr "" -#: functions.js:2066 -#, fuzzy -msgid "Remove stored feed icon?" -msgstr "ä¿å­˜ã—ãŸãƒ‡ãƒ¼ã‚¿ã‚’削除ã™ã‚‹" +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "記事ã®ãƒŽãƒ¼ãƒˆã‚’編集ã™ã‚‹" -#: functions.js:2098 -#, fuzzy -msgid "Please select an image file to upload." -msgstr "フィードをã²ã¨ã¤é¸æŠžã—ã¦ãã ã•ã„" +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "ファイルãŒã‚¢ãƒƒãƒ—ロードã•れã¦ã„ã¾ã›ã‚“。" -#: functions.js:2100 -msgid "Upload new icon for this feed?" -msgstr "" +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "ã™ã¹ã¦çµ‚了ã—ã¾ã—ãŸã€‚%d ä»¶ (%d 件中) ã®è¨˜äº‹ãŒã‚¤ãƒ³ãƒãƒ¼ãƒˆã•れã¾ã—ãŸã€‚" + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "䏿­£ãªãƒ•ォーマットã§ã™ã€‚" + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "ãŠæ°—ã«å…¥ã‚Šã€ã‚ã‚‹ã„ã¯ã€å…±æœ‰ã—ãŸè¨˜äº‹ã‚’ Google Reader ã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆã™ã‚‹" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "starred.json ã‹ shared.json を以下ã®ãƒ•ォームã«è²¼ã‚Šä»˜ã‘ã¦ãã ã•ã„。" + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "ãŠæ°—ã«å…¥ã‚Šã®é …目をインãƒãƒ¼ãƒˆã™ã‚‹" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[Forwarded]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "複数記事" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "以下ã®ãƒªãƒ³ã‚¯ã‚’クリックã™ã‚‹ã¨ãƒ¡ãƒ¼ãƒ«ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãŒèµ·å‹•ã•れã¾ã™:" + +#: plugins/mailto/init.php:75 +msgid "Forward selected article(s) by email." +msgstr "é¸æŠžã—ãŸè¨˜äº‹ã‚’é›»å­ãƒ¡ãƒ¼ãƒ«ã§è»¢é€ã™ã‚‹" + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "é€ä¿¡å‰ã«ã‚ãªãŸã®é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã§ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ç·¨é›†ãŒå¯èƒ½ã§ã™ã€‚" + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "ã“ã®ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã‚’é–‰ã˜ã‚‹" + +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "インãƒãƒ¼ãƒˆãƒ»ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ" + +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "ä¿è­·ã®ãŸã‚ã€ã‚ã‚‹ã„ã¯ã€åŒä¸€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® tt-rss ã§ç§»è¡Œã™ã‚‹éš›ã«ã€ãŠæ°—ã«å…¥ã‚Šã®è¨˜äº‹ã‚„ä¿ç®¡ã•れãŸè¨˜äº‹ã‚’エクスãƒãƒ¼ãƒˆãƒ»ã‚¤ãƒ³ãƒãƒ¼ãƒˆã§ãã¾ã™ã€‚" + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "データã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "インãƒãƒ¼ãƒˆ" -#: functions.js:2117 -msgid "Please enter label caption:" -msgstr "ラベルã®ã‚­ãƒ£ãƒ—ションを入力ã—ã¦ãã ã•ã„:" +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "インãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸ: スキーマã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒä¸æ­£ã§ã™ã€‚" -#: functions.js:2122 -msgid "Can't create label: missing caption." -msgstr "ラベルãŒä½œæˆã§ãã¾ã›ã‚“: キャプションãŒè¦‹å½“ãŸã‚Šã¾ã›ã‚“。" +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "インãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸ: フォーマットãŒèªè­˜ã§ãã¾ã›ã‚“。" -#: functions.js:2162 tt-rss.js:568 -msgid "Unsubscribe from %s?" -msgstr "%s ã®è³¼èª­ã‚’ã‚„ã‚ã¾ã™ã‹?" +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "完了: " + +#: plugins/import_export/init.php:388 +#, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "%d ä»¶ã®è¨˜äº‹ã‚’処ç†, " -#: offline.js:636 -msgid "Data for offline browsing has not been downloaded yet." -msgstr "オフライン閲覧ã®ãŸã‚ã®ãƒ‡ãƒ¼ã‚¿ã¯ã¾ã ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã•れã¦ã„ã¾ã›ã‚“。" +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "%d 件インãƒãƒ¼ãƒˆæ¸ˆã¿, " -#: offline.js:677 -msgid "Synchronizing feeds..." -msgstr "ãƒ•ã‚£ãƒ¼ãƒ‰ã‚’åŒæœŸã—ã¦ã„ã¾ã™..." +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "%d ä»¶ã®ãƒ•ィードを作æˆã€‚" -#: offline.js:696 -msgid "Synchronizing categories..." -msgstr "ã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’åŒæœŸã—ã¦ã„ã¾ã™..." +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "XML 文書を読ã¿è¾¼ã‚ã¾ã›ã‚“。" -#: offline.js:714 -msgid "Synchronizing labels..." -msgstr "ãƒ©ãƒ™ãƒ«ã‚’åŒæœŸã—ã¦ã„ã¾ã™..." +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "ãƒ‡ãƒ¼ã‚¿ã®æº–å‚™" -#: offline.js:733 -msgid "Synchronizing articles..." -msgstr "è¨˜äº‹ã‚’åŒæœŸã—ã¦ã„ã¾ã™..." +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "è·å ´é–²è¦§ä¸é©åˆ‡ (クリックã§åˆ‡ã‚Šæ›¿ãˆ)" -#: offline.js:778 -msgid "Synchronizing articles (%d)..." -msgstr "記事 (%d) ã‚’åŒæœŸã—ã¦ã„ã¾ã™..." +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "NSFW(Not suitable for work: è·å ´é–²è¦§ä¸é©åˆ‡) プラグイン" -#: offline.js:806 -msgid "Last sync: %s" -msgstr "æœ€çµ‚åŒæœŸ: %s" +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "è·å ´ã§é–²è¦§ã™ã‚‹ã®ãŒä¸é©åˆ‡ã ã¨ã¿ãªã™ã‚¿ã‚° (カンマ区切り)" -#: offline.js:835 -msgid "Last sync: Error receiving data." -msgstr "æœ€çµ‚åŒæœŸ: データã®å—信中ã«ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚" +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "設定をä¿å­˜ã—ã¾ã—ãŸã€‚" -#: offline.js:888 -msgid "Synchronizing..." -msgstr "åŒæœŸã—ã¦ã„ã¾ã™..." +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "ワンタイムパスワードを入力ã—ã¦ãã ã•ã„:" -#: offline.js:1195 -msgid "Switch Tiny Tiny RSS into offline mode?" -msgstr "Tiny Tiny RSS をオフラインモードã«åˆ‡ã‚Šæ›¿ãˆã¾ã™ã‹?" +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "パスワードを変更ã—ã¾ã—ãŸã€‚" -#: offline.js:1223 -msgid "Tiny Tiny RSS will reload. Go online?" -msgstr "Tiny Tiny RSS ã‚’å†èª­ã¿è¾¼ã¿ã™ã‚‹ã§ã—ょã†ã€‚オンライン処ç†ã«ç§»è¡Œã—ã¾ã™ã‹?" +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "å¤ã„パスワードãŒä¸æ­£ç¢ºã§ã™ã€‚" -#: offline.js:1655 -msgid "Last sync: Cancelled." -msgstr "æœ€çµ‚åŒæœŸ: å–り消ã•れã¾ã—ãŸã€‚" +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "記事を閉ã˜ã‚‹" -#: offline.js:1672 -msgid "" -"This will remove all offline data stored by Tiny Tiny RSS on this computer. " -"Continue?" +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." msgstr "" -"ã“れã¯ã“ã®ã‚³ãƒ³ãƒ”ューター上㮠Tiny Tiny RSS ã«ã‚ˆã‚Šä¿å­˜ã•れãŸã™ã¹ã¦ã®ã‚ªãƒ•ライン" -"データを削除ã™ã‚‹ã§ã—ょã†ã€‚ç¶šã‘ã¾ã™ã‹?" -#: offline.js:1743 -msgid "" -"Tiny Tiny RSS has trouble accessing its server. Would you like to go offline?" +#: plugins/mail/init.php:34 +#, fuzzy +msgid "Mail plugin" +msgstr "ユーザープラグイン" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" msgstr "" -"Tiny Tiny RSS ã¯ã‚µãƒ¼ãƒãƒ¼ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ä¸­ã«éšœå®³ãŒã‚りã¾ã—ãŸã€‚オフラインモードã«" -"移行ã—ã¾ã™ã‹?" -#: prefs.js:233 -msgid "Error: No feed URL given." -msgstr "エラー: フィード㮠URL ãŒå…¥åŠ›ã•れã¦ã„ã¾ã›ã‚“。" +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "To:" -#: prefs.js:235 -msgid "Error: Invalid feed URL." -msgstr "エラー: フィード㮠URL ãŒæ­£ã—ãã‚りã¾ã›ã‚“。" +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "題å:" -#: prefs.js:263 -#, fuzzy -msgid "Can't add profile: no name specified." -msgstr "カテゴリーãŒè¿½åŠ ã§ãã¾ã›ã‚“: åå‰ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“。" +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’é€ä¿¡ã™ã‚‹" -#: prefs.js:285 -msgid "Can't add category: no name specified." -msgstr "カテゴリーãŒè¿½åŠ ã§ãã¾ã›ã‚“: åå‰ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“。" +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "リンクã•れãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹" -#: prefs.js:307 -msgid "Please enter login:" -msgstr "ログインåを入力ã—ã¦ãã ã•ã„:" +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" +msgstr "インスタンス" -#: prefs.js:314 -msgid "Can't create user: no login specified." -msgstr "ユーザーãŒè¿½åŠ ã§ãã¾ã›ã‚“: ログインåãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“。" +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "インスタンス URL" -#: prefs.js:438 -msgid "Remove selected labels?" -msgstr "é¸æŠžã—ãŸãƒ©ãƒ™ãƒ«ã‚’削除ã—ã¾ã™ã‹?" +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "アクセスキー:" -#: prefs.js:454 -msgid "No labels are selected." -msgstr "é¸æŠžã•れãŸãƒ©ãƒ™ãƒ«ã¯ã‚りã¾ã›ã‚“。" +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "アクセスキー" -#: prefs.js:468 -msgid "Remove selected users?" -msgstr "é¸æŠžã•れãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’削除ã—ã¾ã™ã‹?" +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "リンクã•れãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®ä¸¡æ–¹ã§åŒã˜ã‚¢ã‚¯ã‚»ã‚¹ã‚­ãƒ¼ã‚’使用ã—ã¦ãã ã•ã„。" -#: prefs.js:485 prefs.js:798 prefs.js:819 prefs.js:858 -msgid "No users are selected." -msgstr "é¸æŠžã•れãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ã‚りã¾ã›ã‚“。" +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "æ–°ã—ã„キーを生æˆã™ã‚‹" -#: prefs.js:503 -msgid "Remove selected filters?" -msgstr "é¸æŠžã•れãŸãƒ•ィルターを削除ã—ã¾ã™ã‹?" +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "インスタンスã®ãƒªãƒ³ã‚¯" -#: prefs.js:519 prefs.js:888 -msgid "No filters are selected." -msgstr "é¸æŠžã•れãŸãƒ•ィルターã¯ã‚りã¾ã›ã‚“。" +#: 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 "人気ã®ã‚るフィードを共有ã™ã‚‹ãŸã‚ã« Tiny Tiny RSS ã®åˆ¥ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¨ãƒªãƒ³ã‚¯ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚Tiny Tiny RSS ã®ã“ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¨ãƒªãƒ³ã‚¯ã™ã‚‹ã«ã¯ã“ã® URL を使用ã—㦠ãã ã•ã„:" -#: prefs.js:538 -msgid "Unsubscribe from selected feeds?" -msgstr "é¸æŠžã•れãŸãƒ•ィードã®è³¼èª­ã‚’ã‚„ã‚ã¾ã™ã‹?" +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "最終リンク" -#: prefs.js:572 -msgid "Please select only one feed." -msgstr "フィードをã²ã¨ã¤ã ã‘é¸æŠžã—ã¦ãã ã•ã„。" +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "状態" -#: prefs.js:578 -msgid "Erase all non-starred articles in selected feed?" -msgstr "" -"é¸æŠžã—ãŸãƒ•ィード内ã®ã™ã¹ã¦ã®ãŠæ°—ã«å…¥ã‚Šã—ã¦ã„ãªã„記事をã™ã¹ã¦å‰Šé™¤ã—ã¾ã™ã‹?" +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "ä¿å­˜ã•れãŸãƒ•ィード" -#: prefs.js:600 -msgid "How many days of articles to keep (0 - use default)?" -msgstr "記事を維æŒã—ãŸã„日数ã¯? (0: 標準を使ã†)" +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "リンクã®ä½œæˆ" -#: prefs.js:632 -msgid "" -"Remove selected profiles? Active and default profiles will not be removed." +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" msgstr "" -#: prefs.js:648 +#: plugins/af_redditimgur/init.php:69 #, fuzzy -msgid "No profiles selected." -msgstr "é¸æŠžã•れãŸè¨˜äº‹ã¯ã‚りã¾ã›ã‚“。" +msgid "Configuration saved" +msgstr "設定をä¿å­˜ã—ã¾ã—ãŸã€‚" -#: prefs.js:660 -msgid "Remove selected categories?" -msgstr "é¸æŠžã•れãŸã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’削除ã—ã¾ã™ã‹?" +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" -#: prefs.js:678 -msgid "No categories are selected." -msgstr "é¸æŠžã•れãŸã‚«ãƒ†ã‚´ãƒªãƒ¼ã¯ã‚りã¾ã›ã‚“。" +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "有効性ã®ç¢ºèª" -#: prefs.js:745 -msgid "Login field cannot be blank." -msgstr "ログインåã®é …ç›®ã¯ç©ºã«ã§ãã¾ã›ã‚“。" +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "記事ã®ãƒŽãƒ¼ãƒˆã‚’編集ã™ã‚‹" -#: prefs.js:803 prefs.js:824 prefs.js:863 -msgid "Please select only one user." -msgstr "ã²ã¨ã¤ã ã‘ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’é¸æŠžã—ã¦ãã ã•ã„。" +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "共有ã—ãŸè¨˜äº‹" -#: prefs.js:828 -msgid "Reset password of selected user?" -msgstr "é¸æŠžã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ‘スワードをリセットã—ã¾ã™ã‹?" +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" -#: prefs.js:893 -msgid "Please select only one filter." -msgstr "フィルターをã²ã¨ã¤ã ã‘é¸æŠžã—ã¦ãã ã•ã„。" +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" -#: prefs.js:969 -msgid "No OPML file to upload." -msgstr "アップロードã™ã‚‹ OPML ファイルãŒã‚りã¾ã›ã‚“。" +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" -#: prefs.js:1229 -msgid "Reset to defaults?" -msgstr "æ¨™æº–ã«æˆ»ã—ã¾ã™ã‹?" +#: plugins/af_sort_bayes/init.php:216 +#, fuzzy +msgid "Statistics" +msgstr "状態" -#: prefs.js:1641 -msgid "Replace current publishing address with a new one?" -msgstr "æ–°ã—ã„ã‚‚ã®ã§ç¾åœ¨ã®å…¬é–‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’ç½®ãæ›ãˆã¾ã™ã‹?" +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" -#: prefs.js:1678 -msgid "Save current configuration?" -msgstr "ç¾åœ¨ã®è¨­å®šã‚’ä¿å­˜ã—ã¾ã™ã‹?" +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "ãŠæ°—ã«å…¥ã‚Šã®è¨˜äº‹" -#: prefs.js:1779 -msgid "Rescore articles in selected feeds?" -msgstr "é¸æŠžã—ãŸãƒ•ィードã®è¨˜äº‹ã®ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã—ã¾ã™ã‹?" +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "ãƒ‡ãƒ¼ã‚¿ã®æ¶ˆåŽ»" -#: prefs.js:1802 -msgid "Rescore all articles? This operation may take a lot of time." +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" msgstr "" -"ã™ã¹ã¦ã®è¨˜äº‹ã®ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã—ã¾ã™ã‹? ã“ã®æ“作ã¯å¤§é‡ã®æ™‚間を使ã†ã§ã—ょã†ã€‚" -#: prefs.js:1821 -msgid "Remove filter %s?" -msgstr "フィルター %s を削除ã—ã¾ã™ã‹?" +#: plugins/af_sort_bayes/init.php:376 +#, fuzzy, php-format +msgid "Currently stored as: %s" +msgstr "ç¾åœ¨ã®ã‚µãƒ¼ãƒãƒ¼æ™‚刻: %s (UTC)" -#: prefs.js:1882 -msgid "Save changes to selected feeds?" -msgstr "é¸æŠžã—ãŸãƒ•ィードã®å¤‰æ›´ã‚’ä¿å­˜ã—ã¾ã™ã‹?" +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" -#: prefs.js:1962 -msgid "Reset label colors to default?" -msgstr "ラベルã®è‰²ã‚’標準ã«ãƒªã‚»ãƒƒãƒˆã—ã¾ã™ã‹?" +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "ブックマークレット" -#: prefs.js:1987 -msgid "Please enter new label foreground color:" -msgstr "æ–°ã—ã„ラベルã®å‰æ™¯è‰²ã‚’入力ã—ã¦ãã ã•ã„:" +#: 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 "以下ã®ãƒªãƒ³ã‚¯ã‚’ブラウザã®ãƒ„ールãƒãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã€èˆˆå‘³ã®ã‚るフィードを開ã„ã¦ãƒªãƒ³ã‚¯ã‚’クリックã™ã‚‹ã¨è³¼èª­ã§ãã¾ã™ã€‚" -#: prefs.js:1989 -msgid "Please enter new label background color:" -msgstr "æ–°ã—ã„ラベルã®èƒŒæ™¯è‰²ã‚’入力ã—ã¦ãã ã•ã„:" +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "%s ã‚’ Tiny Tiny RSS ã§è³¼èª­ã—ã¾ã™ã‹?" -#: prefs.js:2121 -#, fuzzy -msgid "Activate selected profile?" -msgstr "é¸æŠžã•れãŸãƒ•ィルターを削除ã—ã¾ã™ã‹?" +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Tiny Tiny RSS ã§è³¼èª­ã™ã‚‹" -#: prefs.js:2137 -msgid "Please choose a profile to activate." -msgstr "" +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "Tiny Tiny RSS を使ã£ã¦ä»»æ„ã®ãƒšãƒ¼ã‚¸ã‚’公開ã™ã‚‹ãŸã‚ã«ã“ã®ãƒ–ックマークレットを使ã£ã¦ãã ã•ã„。" -#: tt-rss.js:74 -msgid "display feeds" -msgstr "フィードã®è¡¨ç¤º" +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "ユニーク URL ã§å…±æœ‰ã•れãŸå…¨ã¦ã®è¨˜äº‹ã‚’ã“ã“ã§ç„¡åŠ¹åŒ–ã§ãã¾ã™ã€‚" -#: tt-rss.js:251 -msgid "Mark all articles as read?" -msgstr "ã™ã¹ã¦ã®è¨˜äº‹ã‚’既読ã«ã—ã¾ã™ã‹?" +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "å…¨ã¦ã®è¨˜äº‹ã®ãŠæ°—ã«å…¥ã‚Šã‚’解除ã™ã‚‹" -#: tt-rss.js:557 -msgid "You can't unsubscribe from the category." -msgstr "カテゴリーã‹ã‚‰è³¼èª­ã‚’ã‚„ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。" +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "URL ã§å…±æœ‰" -#: tt-rss.js:562 tt-rss.js:755 tt-rss.js:930 -msgid "Please select some feed first." -msgstr "ã¯ã˜ã‚ã«ã„ãã¤ã‹ã®ãƒ•ã‚£ãƒ¼ãƒ‰ã‚’é¸æŠžã—ã¦ãã ã•ã„。" +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "以下ã®ãƒ¦ãƒ‹ãƒ¼ã‚¯ URL ã«ã‚ˆã£ã¦ã“ã®è¨˜äº‹ã‚’共有ã§ãã¾ã™ã€‚" -#: tt-rss.js:618 -msgid "Reset category order?" -msgstr "é¸æŠžã—ãŸã‚«ãƒ†ã‚´ãƒªãƒ¼ã®é †åºã‚’リセットã—ã¾ã™ã‹?" +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "記事ã®å…±æœ‰ã‚’解除" -#: tt-rss.js:727 tt-rss.js:740 -msgid "Mark all articles in %s as read?" -msgstr "「%sã€ã®ã™ã¹ã¦ã®è¨˜äº‹ã‚’既読ã«è¨­å®šã—ã¾ã™ã‹?" +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "設定ã•れãŸãƒ­ã‚°å‡ºåŠ›å…ˆã«ã‚¨ãƒ©ãƒ¼ãŒå‡ºåŠ›ã•れã¾ã™ã€‚" -#: tt-rss.js:760 -msgid "You can't edit this kind of feed." +#: js/functions.js:90 +msgid "Report to tt-rss.org" msgstr "" -#: tt-rss.js:925 -msgid "You can't rescore this kind of feed." +#: js/functions.js:93 +msgid "Close" msgstr "" -#: tt-rss.js:935 -msgid "Rescore articles in %s?" -msgstr "%s ã®è¨˜äº‹ã®ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã—ã¾ã™ã‹?" +#: js/functions.js:104 +#, fuzzy +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "本当ã«ã“ã®ä¾‹å¤–ã‚’ tt-rss.org ã«å ±å‘Šã—ã¦ã‚ˆã‚ã—ã„ã§ã™ã‹?報告ã«ã¯ãƒ–ãƒ©ã‚¦ã‚¶ã®æƒ…å ±ãŒå«ã¾ã‚Œã¾ã™ã€‚ã‚ãªãŸã® IP アドレスãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ä¿å­˜ã•れるã‹ã‚‚ã—れã¾ã›ã‚“。" -#: viewfeed.js:528 viewfeed.js:592 -msgid "Star article" -msgstr "è¨˜äº‹ã‚’ãŠæ°—ã«å…¥ã‚Šã«ã™ã‚‹" +#: js/functions.js:224 +msgid "Click to close" +msgstr "é–‰ã˜ã‚‹ã«ã¯ã‚¯ãƒªãƒƒã‚¯" -#: viewfeed.js:577 -msgid "Unstar article" -msgstr "記事ã®ãŠæ°—ã«å…¥ã‚Šã‚’解除ã™ã‚‹" +#: js/functions.js:1051 +msgid "Edit action" +msgstr "動作ã®ç·¨é›†" -#: viewfeed.js:585 viewfeed.js:652 -msgid "Please wait..." -msgstr "ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„..." +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "フィルターを作æˆã™ã‚‹" -#: viewfeed.js:648 -msgid "Unpublish article" -msgstr "éžå…¬é–‹è¨˜äº‹" +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "購読をリセットã—ã¾ã™ã‹?次回フィード更新時㫠Tiny Tiny RSS ã¯é€šçŸ¥ãƒãƒ–ã«å¯¾ã—ã¦å†è³¼èª­ã‚’試ã¿ã¾ã™ã€‚" -#: viewfeed.js:935 viewfeed.js:971 viewfeed.js:1012 viewfeed.js:1097 -#: viewfeed.js:1141 viewfeed.js:1288 viewfeed.js:1338 viewfeed.js:1394 -msgid "No articles are selected." -msgstr "記事ã¯é¸æŠžã•れã¦ã„ã¾ã›ã‚“。" +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "購読ãŒãƒªã‚»ãƒƒãƒˆã•れã¾ã—ãŸã€‚" -#: viewfeed.js:1256 -msgid "Mark all visible articles in %s as read?" -msgstr "「%sã€ã®ã™ã¹ã¦ã®å¯è¦–記事を既読ã«è¨­å®šã—ã¾ã™ã‹?" +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "%s ã®è³¼èª­ã‚’ã‚„ã‚ã¾ã™ã‹?" -#: viewfeed.js:1298 -#, fuzzy -msgid "Delete %d selected articles in %s?" -msgstr "é¸æŠžã—㟠%d ä»¶ã®è¨˜äº‹ã‚’「%sã€ã«è¨­å®šã—ã¾ã™ã‹?" +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "フィードを削除ã—ã¦ã„ã¾ã™..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "カテゴリーã®é¡Œåを入力ã—ã¦ãã ã•ã„:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "ã“ã®ãƒ•ィードã«å¯¾ã—ã¦æ–°ã—ã„シンジケートアドレスを生æˆã—ã¾ã™ã‹?" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "アドレスã®å¤‰æ›´ã‚’ã—よã†ã¨ã—ã¦ã„ã¾ã™..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "フィードãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。" -#: viewfeed.js:1300 -#, fuzzy -msgid "Delete %d selected articles?" -msgstr "ラベルã‹ã‚‰é¸æŠžã—ãŸè¨˜äº‹ã‚’削除ã—ã¾ã™ã‹?" +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "é¸æŠžã—ãŸãƒ•ィードをä¿ç®¡åº«ã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹?ä¿å­˜ã•れãŸè¨˜äº‹ãŒã‚るフィードã¯å‰Šé™¤ã•れã¾ã›ã‚“。" -#: viewfeed.js:1348 -#, fuzzy -msgid "Archive %d selected articles in %s?" -msgstr "é¸æŠžã—㟠%d ä»¶ã®è¨˜äº‹ã‚’「%sã€ã«è¨­å®šã—ã¾ã™ã‹?" +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "更新エラーã®ã‚るフィード" -#: viewfeed.js:1351 -msgid "Move %d archived articles back?" -msgstr "" +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "é¸æŠžã—ãŸãƒ•ィードを削除ã—ã¾ã™ã‹?" -#: viewfeed.js:1401 -msgid "Mark %d selected articles in %s as read?" -msgstr "é¸æŠžã—㟠%d ä»¶ã®è¨˜äº‹ã‚’「%sã€ã«è¨­å®šã—ã¾ã™ã‹?" +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "é¸æŠžã—ãŸãƒ•ィードを削除ã—ã¦ã„ã¾ã™..." -#: viewfeed.js:1977 -msgid "No article is selected." -msgstr "é¸æŠžã•れãŸè¨˜äº‹ã¯ã‚りã¾ã›ã‚“。" +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "カテゴリーã®ç·¨é›†" -#: viewfeed.js:2018 -msgid "No articles found to mark" -msgstr "マークã—ãŸè¨˜äº‹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "カテゴリーã®å‰Šé™¤" -#: viewfeed.js:2020 -msgid "Mark %d article(s) as read?" -msgstr "%d ä»¶ã®ãƒžãƒ¼ã‚¯ã—ãŸè¨˜äº‹ã‚’既読ã¨ã—ã¦è¨­å®šã—ã¾ã™ã‹?" +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "å転" -#: viewfeed.js:2255 -msgid "Please enter a note for this article:" -msgstr "ã“ã®ã‚¢ãƒ¼ãƒ†ã‚£ã‚¯ãƒ«ã®ãƒŽãƒ¼ãƒˆã‚’入力ã—ã¦ãã ã•ã„:" +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "ログインåを入力ã—ã¦ãã ã•ã„:" -#~ msgid "Adding feed..." -#~ msgstr "フィードを追加ã—ã¦ã„ã¾ã™..." +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "ユーザーãŒè¿½åŠ ã§ãã¾ã›ã‚“: ログインåãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“。" -#~ msgid "Adding feed category..." -#~ msgstr "フィードカテゴリーを追加ã—ã¦ã„ã¾ã™..." +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "ユーザーを追加ã—ã¦ã„ã¾ã™..." -#, fuzzy -#~ msgid "Adding profile..." -#~ msgstr "フィードを追加ã—ã¦ã„ã¾ã™..." +#: js/prefs.js:94 +msgid "User Editor" +msgstr "ユーザーエディター" -#~ msgid "Adding user..." -#~ msgstr "ユーザーを追加ã—ã¦ã„ã¾ã™..." +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "データをä¿å­˜ã—ã¦ã„ã¾ã™..." -#~ msgid "Assign score to article:" -#~ msgstr "記事ã«ã‚¹ã‚³ã‚¢ã‚’割り当ã¦ã‚‹:" +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "フィルターã®ç·¨é›†" -#~ msgid "Assign selected articles to label?" -#~ msgstr "ラベルã«é¸æŠžã—ãŸè¨˜äº‹ã‚’割り当ã¦ã¾ã™ã‹?" +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "フィルターを削除ã—ã¾ã™ã‹?" -#~ msgid "Can't open article: received invalid article link" -#~ msgstr "記事ãŒé–‹ã‘ã¾ã›ã‚“: 無効ãªè¨˜äº‹ãƒªãƒ³ã‚¯ã‚’å—ä¿¡ã—ã¾ã—ãŸ" +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "フィルターを削除ã—ã¦ã„ã¾ã™..." -#~ msgid "Category reordering disabled" -#~ msgstr "カテゴリーã®é †åºå¤‰æ›´ã‚’無効ã«ã—ã¾ã—ãŸ" +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "é¸æŠžã—ãŸãƒ©ãƒ™ãƒ«ã‚’削除ã—ã¾ã™ã‹?" -#~ msgid "Category reordering enabled" -#~ msgstr "カテゴリーã®é †åºå¤‰æ›´ã‚’有効ã«ã—ã¾ã—ãŸ" +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "é¸æŠžã—ãŸãƒ©ãƒ™ãƒ«ã‚’削除ã—ã¦ã„ã¾ã™..." -#, fuzzy -#~ msgid "Changing password..." -#~ msgstr "パスワードを変更ã™ã‚‹" +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "ラベルãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。" -#~ msgid "Clearing feed..." -#~ msgstr "フィードを消去ã—ã¦ã„ã¾ã™..." +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "é¸æŠžã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’削除ã—ã¾ã™ã‹?標準㮠admin ã‚ã‚‹ã„ã¯ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯å‰Šé™¤ã•れã¾ã›ã‚“。" -#~ msgid "Clearing selected feed..." -#~ msgstr "é¸æŠžã•れãŸãƒ•ィードを消去ã—ã¦ã„ã¾ã™..." +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "é¸æŠžã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’削除ã—ã¦ã„ã¾ã™..." -#~ msgid "comments" -#~ msgstr "コメント" +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "ユーザーãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。" -#~ msgid "Could not change feed URL." -#~ msgstr "フィード㮠URL を変更ã§ãã¾ã›ã‚“。" +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "é¸æŠžã—ãŸãƒ•ィルターを削除ã—ã¾ã™ã‹?" -#~ msgid "Could not display article (missing XML object)" -#~ msgstr "記事を表示ã§ãã¾ã›ã‚“ (XML オブジェクトãŒè¦‹å½“ãŸã‚Šã¾ã›ã‚“)" +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "é¸æŠžã—ãŸãƒ•ィルターを削除ã—ã¦ã„ã¾ã™..." -#~ msgid "Could not update headlines (missing XML data)" -#~ msgstr "ヘッドラインを更新ã§ãã¾ã›ã‚“ (XML データãŒè¦‹å½“ãŸã‚Šã¾ã›ã‚“)" +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "フィルターãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。" -#~ msgid "Could not update headlines (missing XML object)" -#~ msgstr "ヘッドラインを更新ã§ãã¾ã›ã‚“ (XML オブジェクトãŒè¦‹å½“ãŸã‚Šã¾ã›ã‚“)" +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "é¸æŠžã—ãŸãƒ•ィードã®è³¼èª­ã‚’ã‚„ã‚ã¾ã™ã‹?" -#~ msgid "Entire feed" -#~ msgstr "å…ƒã®ãƒ•ィード" +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "é¸æŠžã—ãŸãƒ•ィードã®è³¼èª­ã‚’解除ã—ã¦ã„ã¾ã™..." -#~ msgid "Error while trying to load more headlines" -#~ msgstr "ã•らã«ãƒ˜ãƒƒãƒ‰ãƒ©ã‚¤ãƒ³ã‚’読ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚" +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "フィードをã²ã¨ã¤ã ã‘é¸æŠžã—ã¦ãã ã•ã„。" -#~ msgid "Failed to load article in new window" -#~ msgstr "æ–°ã—ã„ウィンドウã§è¨˜äº‹ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“" +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "é¸æŠžã—ãŸãƒ•ィード内ã®ãŠæ°—ã«å…¥ã‚Šã—ã¦ã„ãªã„記事をã™ã¹ã¦å‰Šé™¤ã—ã¾ã™ã‹?" -#~ msgid "Failed to open window for the article" -#~ msgstr "記事用ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“" +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "é¸æŠžã—ãŸãƒ•ィードを消去ã—ã¦ã„ã¾ã™..." -#, fuzzy -#~ msgid "Feed icon removed." -#~ msgstr "フィードãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "記事を維æŒã—ãŸã„日数ã¯? (0: 標準を使ã†)" -#~ msgid "Loading feed list..." -#~ msgstr "フィード一覧を読ã¿è¾¼ã‚“ã§ã„ã¾ã™..." +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "é¸æŠžã—ãŸãƒ•ィードを削除ã—ã¦ã„ã¾ã™..." -#~ msgid "Local data removed." -#~ msgstr "ローカルã®ãƒ‡ãƒ¼ã‚¿ã‚’削除ã—ã¾ã—ãŸã€‚" +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "ユーザーをã²ã¨ã‚Šã ã‘é¸æŠžã—ã¦ãã ã•ã„。" -#~ msgid "Mark as read:" -#~ msgstr "既読ã«ã™ã‚‹:" +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "é¸æŠžã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ‘スワードをリセットã—ã¾ã™ã‹?" -#~ msgid "Marking all feeds as read..." -#~ msgstr "ã™ã¹ã¦ã®ãƒ•ィードを既読ã«è¨­å®šã—ã¦ã„ã¾ã™..." +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "é¸æŠžã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ‘スワードをリセットã—ã¦ã„ã¾ã™..." -#~ msgid "Please wait until operation finishes." -#~ msgstr "æ“作ãŒå®Œäº†ã™ã‚‹ã¾ã§å¾…ã£ã¦ãã ã•ã„。" +#: js/prefs.js:565 +msgid "User details" +msgstr "ユーザーã®è©³ç´°" -#~ msgid "Purging selected feed..." -#~ msgstr "é¸æŠžã—ãŸãƒ•ィードを削除ã—ã¦ã„ã¾ã™..." +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "フィルターをã²ã¨ã¤ã ã‘é¸æŠžã—ã¦ãã ã•ã„。" -#~ msgid "Remove selected articles from label?" -#~ msgstr "ラベルã‹ã‚‰é¸æŠžã—ãŸè¨˜äº‹ã‚’削除ã—ã¾ã™ã‹?" +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "é¸æŠžã—ãŸãƒ•ィルターをçµåˆã—ã¾ã™ã‹?" -#~ msgid "Removing feed..." -#~ msgstr "フィードを削除ã—ã¦ã„ã¾ã™..." +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "フィルターをçµåˆã—ã¦ã„ã¾ã™..." -#~ msgid "Removing filter..." -#~ msgstr "フィルターを削除ã—ã¦ã„ã¾ã™..." +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "複数フィードã®ç·¨é›†" -#~ msgid "Removing offline data..." -#~ msgstr "オフラインデータを削除ã—ã¦ã„ã¾ã™..." +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "é¸æŠžã—ãŸãƒ•ィードã®å¤‰æ›´ã‚’ä¿å­˜ã—ã¾ã™ã‹?" -#~ msgid "Removing selected categories..." -#~ msgstr "é¸æŠžã•れãŸã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’削除ã—ã¦ã„ã¾ã™..." +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "OPML インãƒãƒ¼ãƒˆ" -#~ msgid "Removing selected filters..." -#~ msgstr "é¸æŠžã•れãŸãƒ•ィルターを削除ã—ã¦ã„ã¾ã™..." +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "ã¯ã˜ã‚ã« OPML ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„。" -#~ msgid "Removing selected labels..." -#~ msgstr "é¸æŠžã—ãŸãƒ©ãƒ™ãƒ«ã‚’削除ã—ã¦ã„ã¾ã™..." +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "インãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„..." -#, fuzzy -#~ msgid "Removing selected profiles..." -#~ msgstr "é¸æŠžã•れãŸãƒ•ィルターを削除ã—ã¦ã„ã¾ã™..." +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "æ¨™æº–ã«æˆ»ã—ã¾ã™ã‹?" -#~ msgid "Removing selected users..." -#~ msgstr "é¸æŠžã•れãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’削除ã—ã¦ã„ã¾ã™..." +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "フィードを購読ã—ã¦ã„ã¾ã™..." -#~ msgid "Rescore last 100 articles in selected feeds?" -#~ msgstr "é¸æŠžã—ãŸãƒ•ã‚£ãƒ¼ãƒ‰ã®æœ€å¾Œ 100 ä»¶ã®è¨˜äº‹ã®ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã—ã¾ã™ã‹?" +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "ã“ã®ãƒ—ラグイン用ã«ä¿å­˜ã•れãŸãƒ‡ãƒ¼ã‚¿ã‚’消去ã—ã¾ã™ã‹?" -#~ msgid "Rescoring articles..." -#~ msgstr "記事ã®ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã—ã¦ã„ã¾ã™..." +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "エラーログã®å…¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’消去ã—ã¾ã™ã‹?" -#~ msgid "Resetting password for selected user..." -#~ msgstr "é¸æŠžã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ‘スワードをリセットã—ã¦ã„ã¾ã™..." +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "ã™ã¹ã¦ã®è¨˜äº‹ã‚’既読ã«ã—ã¾ã™ã‹?" -#~ msgid "Saving article tags..." -#~ msgstr "記事ã®ã‚¿ã‚°ã‚’ä¿å­˜ã—ã¦ã„ã¾ã™..." +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "ã™ã¹ã¦ã®ãƒ•ィードを既読ã«è¨­å®šã—ã¦ã„ã¾ã™..." -#~ msgid "Saving feed..." -#~ msgstr "フィードをä¿å­˜ã—ã¦ã„ã¾ã™..." +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "ã¯ã˜ã‚ã«ãƒ¡ãƒ¼ãƒ«ãƒ—ラグインを有効ã«ã—ã¦ãã ã•ã„。" -#~ msgid "Saving feeds..." -#~ msgstr "フィードをä¿å­˜ã—ã¦ã„ã¾ã™..." +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "ã“ã®ç¨®é¡žã®ãƒ•ィードã¯ç·¨é›†ã§ãã¾ã›ã‚“。" -#~ msgid "Saving filter..." -#~ msgstr "フィルターをä¿å­˜ã—ã¦ã„ã¾ã™..." +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "ã¯ã˜ã‚ã« embed_original プラグインを有効ã«ã—ã¦ãã ã•ã„。" -#~ msgid "Saving user..." -#~ msgstr "ユーザーをä¿å­˜ã—ã¦ã„ã¾ã™..." +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "" -#~ msgid "Selection" -#~ msgstr "é¸æŠž" +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "ã“ã®ç¨®é¡žã®ãƒ•ィードã¯ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã§ãã¾ã›ã‚“。" -#~ msgid "Tiny Tiny RSS is in offline mode." -#~ msgstr "Tiny Tiny RSS ã¯ã‚ªãƒ•ラインモードã§ã™ã€‚" +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "ã¯ã˜ã‚ã«ã„ãã¤ã‹ã®ãƒ•ã‚£ãƒ¼ãƒ‰ã‚’é¸æŠžã—ã¦ãã ã•ã„。" -#~ msgid "Trying to change e-mail..." -#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã®å¤‰æ›´ã‚’試ã¿ã¦ã„ã¾ã™..." +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "%s ã®è¨˜äº‹ã®ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã—ã¾ã™ã‹?" +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "記事ã®ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã—ã¦ã„ã¾ã™..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "記事ãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。" + +#: js/viewfeed.js:1018 +#, fuzzy, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "é¸æŠžã—ãŸã€Œ%sã€ã® %d ä»¶ã®è¨˜äº‹ã‚’削除ã—ã¾ã™ã‹?" + +#: js/viewfeed.js:1020 +#, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "é¸æŠžã—㟠%d ä»¶ã®è¨˜äº‹ã‚’削除ã—ã¾ã™ã‹?" + +#: js/viewfeed.js:1062 +#, fuzzy, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "é¸æŠžã—ãŸã€Œ%sã€ã® %d ä»¶ã®è¨˜äº‹ã‚’ä¿ç®¡ã—ã¾ã™ã‹?" + +#: js/viewfeed.js:1065 +#, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "%d ä»¶ã®ä¿ç®¡ã•れãŸè¨˜äº‹ã‚’å…ƒã«æˆ»ã—ã¾ã™ã‹?" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "ãŠæ°—ã«å…¥ã‚Šã‹ã‚‰å¤–ã—ãŸè¨˜äº‹ã¯æ¬¡å›žãƒ•ィード更新時ã«å‰Šé™¤ã•れるã‹ã‚‚ã—れãªã„ç‚¹ã«æ³¨æ„ã—ã¦ãã ã•ã„。" + +#: js/viewfeed.js:1112 +#, fuzzy, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "é¸æŠžã—ãŸã€Œ%sã€ã® %d ä»¶ã®è¨˜äº‹ã‚’既読ã«è¨­å®šã—ã¾ã™ã‹?" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "記事ã®ã‚¿ã‚°ã‚’編集" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "記事ã®ã‚¿ã‚°ã‚’ä¿å­˜ã—ã¦ã„ã¾ã™..." + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 #, fuzzy -#~ msgid "Upload failed." -#~ msgstr "更新済ã¿è¨˜äº‹" +msgid "Click to open next unread feed." +msgstr "編集ã™ã‚‹ã«ã¯ã‚¯ãƒªãƒƒã‚¯" -#, fuzzy -#~ msgid "" -#~ "You have to synchronize some articles before going into offline mode." -#~ msgstr "Google Gears を用ã„ãŸã‚ªãƒ•ライン処ç†ã®æ–°è¦è¨˜äº‹ã‚’åŒæœŸã—ã¾ã™ã€‚" +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "å…ƒã®è¨˜äº‹å†…容を表示" -#~ msgid "Display original article content" -#~ msgstr "å…ƒã®è¨˜äº‹å†…容を表示ã™ã‚‹" +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "ラベルã®å‰²ã‚Šå½“ã¦" -#~ msgid "All feeds updated." -#~ msgstr "ã™ã¹ã¦ã®ãƒ•ィードを更新ã—ã¾ã—ãŸã€‚" +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "ラベルã®å‰Šé™¤" -#~ msgid "Can't open article: received invalid XML" -#~ msgstr "記事を開ã‘ã¾ã›ã‚“: 無効㪠XML ã‚’å—ä¿¡ã—ã¾ã—ãŸ" +#: js/viewfeed.js:2159 +#, fuzzy +msgid "Select articles in group" +msgstr "マウスカーソルã®ä¸‹ã®è¨˜äº‹ã‚’é¸æŠžã™ã‚‹" -#~ msgid "Changing category of selected feeds..." -#~ msgstr "é¸æŠžã•れãŸã‚«ãƒ†ã‚´ãƒªãƒ¼ã®ãƒ•ィードを削除ã—ã¦ã„ã¾ã™..." +#: js/viewfeed.js:2168 +#, fuzzy +msgid "Mark group as read" +msgstr "既読ã«ã™ã‚‹" -#~ msgid "Erase all non-starred articles in %s?" -#~ msgstr "%s ã«ã‚ã‚‹ãŠæ°—ã«å…¥ã‚Šã«è¨­å®šã—ã¦ã„ãªã„記事をã™ã¹ã¦å‰Šé™¤ã—ã¾ã™ã‹?" +#: js/viewfeed.js:2180 +#, fuzzy +msgid "Mark feed as read" +msgstr "ã™ã¹ã¦ã®ãƒ•ィードを既読ã«è¨­å®šã™ã‚‹" -#~ msgid "Published feed URL changed." -#~ msgstr "公開フィード㮠URL を変更ã—ã¾ã—ãŸã€‚" +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "é¸æŠžã—ãŸè¨˜äº‹ã®æ–°ã—ã„スコアを入力ã—ã¦ãã ã•ã„:" -#~ msgid "Trying to change address..." -#~ msgstr "アドレスã®å¤‰æ›´ã‚’試ã¿ã¦ã„ã¾ã™..." +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "ã“ã®è¨˜äº‹ã®æ–°ã—ã„スコアを入力ã—ã¦ãã ã•ã„:" -#~ msgid "Trying to change password..." -#~ msgstr "パスワードã®å¤‰æ›´ã‚’試ã¿ã¦ã„ã¾ã™..." +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "記事㮠URL:" -#~ msgid "Unsubscribing from selected feeds..." -#~ msgstr "é¸æŠžã•れãŸãƒ•ィードã®è³¼èª­ã‚’解除ã—ã¦ã„ã¾ã™..." +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "ã‚ãªãŸã®ãƒ–ラウザã¯ã‚µãƒ³ãƒ‰ãƒœãƒƒã‚¯ã‚¹åŒ–ã•れ㟠iframe をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。" -#~ msgid "You can't clear this type of feed." -#~ msgstr "フィードã®ã“ã®ç¨®é¡žã‚’消去ã§ãã¾ã›ã‚“。" +#: plugins/af_psql_trgm/init.js:11 +#, fuzzy +msgid "Related articles" +msgstr "共有ã—ãŸè¨˜äº‹" -#~ msgid "Clear articles" -#~ msgstr "記事を消去ã™ã‚‹" +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "記事ã®ãƒŽãƒ¼ãƒˆã‚’ä¿å­˜ã—ã¦ã„ã¾ã™..." -#~ msgid "Adding category %s...
    " -#~ msgstr "カテゴリー %s を追加ã—ã¦ã„ã¾ã™...
    " +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Google Reader インãƒãƒ¼ãƒˆ" -#~ msgid "Done." -#~ msgstr "終了ã—ã¾ã—ãŸã€‚" +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "ã¯ã˜ã‚ã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„。" -#~ msgid "Visit official site" -#~ msgstr "オフィシャルサイトã«è¨ªå•ã™ã‚‹" +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã§è¨˜äº‹ã‚’転é€ã™ã‚‹" -#~ msgid "Close" -#~ msgstr "é–‰ã˜ã‚‹" +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "データã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ" -#~ msgid "The configuration was reset to defaults." -#~ msgstr "è¨­å®šã‚’æ¨™æº–ã«æˆ»ã—ã¾ã—ãŸã€‚" +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "%d ä»¶ã®è¨˜äº‹ã‚’エクスãƒãƒ¼ãƒˆå®Œäº†ã€‚ã“ã“ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’ダウンロードã§ãã¾ã™ã€‚" -#~ msgid "Themes" -#~ msgstr "テーマ" +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "データã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ" -#~ msgid "Change theme" -#~ msgstr "テーマを変更ã™ã‚‹" +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "ã¯ã˜ã‚ã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„。" +#: plugins/shorten_expanded/init.js:37 #, fuzzy -#~ msgid "Hide read items" -#~ msgstr "読んã ãƒ•ィードを隠ã™/å†è¡¨ç¤ºã™ã‚‹" +msgid "Click to expand article" +msgstr "編集ã™ã‚‹ã«ã¯ã‚¯ãƒªãƒƒã‚¯" +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" + +#: plugins/mail/mail.js:38 #, fuzzy -#~ msgid "Remove selected feeds from archive?" -#~ msgstr "ラベルã‹ã‚‰é¸æŠžã—ãŸè¨˜äº‹ã‚’削除ã—ã¾ã™ã‹?" +msgid "Your message has been sent." +msgstr "個人データを変更ã—ã¾ã—ãŸã€‚" -#~ msgid "Search results" -#~ msgstr "æ¤œç´¢çµæžœ" +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "インスタンスã®ãƒªãƒ³ã‚¯" -#~ msgid "More feeds..." -#~ msgstr "æ›´ãªã‚‹ãƒ•ィード..." +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "インスタンスã®ç·¨é›†" -#~ msgid "Toggle Feedlist" -#~ msgstr "フィード一覧を切り替ãˆã‚‹" +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "é¸æŠžã—ãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’削除ã—ã¾ã™ã‹?" -#~ msgid "Search:" -#~ msgstr "検索:" +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "é¸æŠžã—ãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’削除ã—ã¦ã„ã¾ã™..." -#~ msgid "Order:" -#~ msgstr "ä¸¦ã¹æ›¿ãˆ:" +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "インスタンスãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。" -#~ msgid "browse more" -#~ msgstr "ã‚‚ã£ã¨å‚ç…§ã™ã‚‹" +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "インスタンスをã²ã¨ã¤ã ã‘é¸æŠžã—ã¦ãã ã•ã„。" -#~ msgid "Feed browser is administratively disabled." -#~ msgstr "フィードブラウザーã¯ç®¡ç†è€…ã«ã‚ˆã£ã¦ç„¡åйã«ãªã£ã¦ã„ã¾ã™ã€‚" +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "ãƒ•ã‚£ãƒ¼ãƒ‰ãƒ‡ãƒ¼ã‚¿ã®æ¶ˆåŽ»" -#~ msgid "Top" -#~ msgstr "トップ" +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "" -#~ msgid "Show" -#~ msgstr "表示" +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "URL ã§è¨˜äº‹ã‚’共有" -#~ msgid "Hide from \"Other Feeds\"" -#~ msgstr "「ãã®ä»–ã®ãƒ•ィードã€ã‹ã‚‰éš ã™" +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "ã“ã®è¨˜äº‹ã®æ–°ã—ã„共有 URL を生æˆã—ã¾ã™ã‹?" -#~ msgid "Unable to delete non empty feed categories." -#~ msgstr "æ®»ã§ãªã„フィードカテゴリーã¯å‰Šé™¤ã§ãã¾ã›ã‚“。" +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "URL ã®å¤‰æ›´ã‚’ã—よã†ã¨ã—ã¦ã„ã¾ã™..." -#~ msgid "Recategorize" -#~ msgstr "カテゴリーå†è¨­å®š" +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "ã“ã®è¨˜äº‹ã®å…±æœ‰ã‚’解除ã—ã¾ã™ã‹?" -#~ msgid "Other:" -#~ msgstr "ãã®ä»–:" +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "記事ã®å…±æœ‰ã‚’解除ã—よã†ã¨ã—ã¦ã„ã¾ã™..." -#~ msgid "Generate another link" -#~ msgstr "別ã®ãƒªãƒ³ã‚¯ã‚’生æˆã™ã‚‹" +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "ã“ã®æ“作ã¯éŽåŽ»ã«å…±æœ‰ã•れãŸè¨˜äº‹ã® URL å…¨ã¦ã‚’無効化ã—ã¾ã™ã€‚ç¶šã‘ã¾ã™ã‹?" -#~ msgid "View feeds" -#~ msgstr "フィードを閲覧ã™ã‚‹" +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "URL を消去ã—ã¦ã„ã¾ã™..." -#~ msgid "View tags" -#~ msgstr "タグを閲覧ã™ã‚‹" +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "共有ã•れ㟠URL を消去ã—ã¾ã—ãŸã€‚" -#~ msgid "Back" -#~ msgstr "戻る" +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "「%sã€ã®ã™ã¹ã¦ã®è¨˜äº‹ã‚’既読ã«è¨­å®šã—ã¾ã™ã‹?" -#~ msgid "Refresh" -#~ msgstr "å†æç”»" +#: js/feedlist.js:435 +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "「%sã€ã® 1 日以上å‰ã®è¨˜äº‹ã‚’既読ã«è¨­å®šã—ã¾ã™ã‹?" -#~ msgid "Page" -#~ msgstr "ページ" +#: js/feedlist.js:438 +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "「%sã€ã® 1 週間以上å‰ã®è¨˜äº‹ã‚’既読ã«è¨­å®šã—ã¾ã™ã‹?" -#, fuzzy -#~ msgid "Back to feedlist" -#~ msgstr "編集ã™ã‚‹ã«ã¯ã‚¯ãƒªãƒƒã‚¯" +#: js/feedlist.js:441 +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "「%sã€ã® 2 週間以上å‰ã®è¨˜äº‹ã‚’既読ã«è¨­å®šã—ã¾ã™ã‹?" -#~ msgid "Tags:" -#~ msgstr "ã‚¿ã‚°:" +#: js/functions.js:615 +msgid "Error explained" +msgstr "エラーã®èª¬æ˜Ž" -#~ msgid "Mark as unread" -#~ msgstr "未読ã«ã™ã‚‹" +#: js/functions.js:697 +msgid "Upload complete." +msgstr "アップロードãŒå®Œäº†ã—ã¾ã—ãŸã€‚" -#~ msgid "Internal error: Function not implemented" -#~ msgstr "インターナルエラー: 機能ãŒå®Ÿè£…ã•れã¦ã„ã¾ã›ã‚“" +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "ä¿å­˜ã—ãŸãƒ•ィードアイコンを削除ã—ã¾ã™ã‹?" -#, fuzzy -#~ msgid "Click to view" -#~ msgstr "編集ã™ã‚‹ã«ã¯ã‚¯ãƒªãƒƒã‚¯" +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "フィードアイコンを削除ã—ã¦ã„ã¾ã™..." -#~ msgid "  Keyboard shortcuts" -#~ msgstr "  ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆ" +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "フィードアイコンを削除ã—ã¾ã—ãŸã€‚" + +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "アップロードã™ã‚‹ç”»åƒãƒ•ァイルをã²ã¨ã¤é¸æŠžã—ã¦ãã ã•ã„。" -#~ msgid "Can't add user: no login specified." -#~ msgstr "ユーザーãŒè¿½åŠ ã§ãã¾ã›ã‚“: ログインåãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“。" +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "ã“ã®ãƒ•ィードã«å¯¾ã—ã¦æ–°ã—ã„アイコンをアップロードã—ã¾ã™ã‹?" -#~ msgid "Can't create label: missing SQL expression." -#~ msgstr "ラベルを作æˆã§ãã¾ã›ã‚“: SQL 表ç¾ãŒè¦‹å½“ãŸã‚Šã¾ã›ã‚“。" +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "アップロードã—ã¦ã„ã¾ã™ã€‚ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„..." -#~ msgid "Loading help..." -#~ msgstr "ヘルプを読ã¿è¾¼ã‚“ã§ã„ã¾ã™..." +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "ラベルã®ã‚­ãƒ£ãƒ—ションを入力ã—ã¦ãã ã•ã„:" -#~ msgid "Saving label..." -#~ msgstr "ラベルをä¿å­˜ã—ã¦ã„ã¾ã™..." +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "ラベルãŒä½œæˆã§ãã¾ã›ã‚“: キャプションãŒè¦‹å½“ãŸã‚Šã¾ã›ã‚“。" -#~ msgid "Please select only one label." -#~ msgstr "ã²ã¨ã¤ã ã‘ãƒ©ãƒ™ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„。" +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "フィードを購読ã™ã‚‹" -#~ msgid "Please select only one category." -#~ msgstr "カテゴリーをã²ã¨ã¤ã ã‘é¸æŠžã—ã¦ãã ã•ã„。" +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "" -#~ msgid "Address changed." -#~ msgstr "アドレスを変更ã—ã¾ã—ãŸã€‚" +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "%s を購読ã—ã¾ã—ãŸ" -#~ msgid "" -#~ "Rescore articles in all feeds? This operation may take a lot of time." -#~ msgstr "" -#~ "ã™ã¹ã¦ã®ãƒ•ィードã®è¨˜äº‹ã®ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã—ã¾ã™ã‹? ã“ã®æ“作ã¯å¤§é‡ã®æ™‚間を使ã†" -#~ "ã§ã—ょã†ã€‚" +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "指定ã•れ㟠URL ã¯ç„¡åйã®ã‚ˆã†ã§ã™ã€‚" -#~ msgid "Rescoring feeds..." -#~ msgstr "フィードã®ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã—ã¦ã„ã¾ã™..." +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "指定ã•れ㟠URL ã«ã¯ãƒ•ィードãŒå«ã¾ã‚Œã¦ã„ãªã‚ˆã†ã§ã™ã€‚" -#~ msgid "Restart in offline mode" -#~ msgstr "オフラインモードをå†èµ·å‹•ã™ã‚‹" +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "é¸æŠžã—ãŸãƒ•ィードを展開ã™ã‚‹" -#~ msgid "Restart in online mode" -#~ msgstr "オンラインモードをå†èµ·å‹•ã™ã‚‹" +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "指定ã•れ㟠URL ãŒãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã§ãã¾ã›ã‚“: %s" -#~ msgid "Remove offline data?" -#~ msgstr "オフラインデータを削除ã—ã¾ã™ã‹?" +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "XML ã®æ¤œè¨¼ã«å¤±æ•—ã—ã¾ã—ãŸ: %s" -#~ msgid "Search to label" -#~ msgstr "ãƒ©ãƒ™ãƒ«ã®æ¤œç´¢" +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "ã“ã®ãƒ•ィードã¯è³¼èª­æ¸ˆã¿ã§ã™ã€‚" -#~ msgid "Toggle:" -#~ msgstr "トグル" +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "ルールã®ç·¨é›†" -#~ msgid "Convert to label" -#~ msgstr "ラベルã®å¤‰æ›" +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "フィードã®ç·¨é›†" -#~ msgid "Dashboard" -#~ msgstr "ダッシュボード" +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "ã•らãªã‚‹ãƒ•ィード" -#~ msgid "Match " -#~ msgstr "一致 " +#: js/functions.js:1878 +msgid "Help" +msgstr "ヘルプ" -#~ msgid "Title contains" -#~ msgstr "題åã®å†…容" +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "カテゴリー %s を削除ã—ã¾ã™ã‹?カテゴリー内ã®ãƒ•ィードã¯å…¨ã¦ã‚«ãƒ†ã‚´ãƒªãƒ¼å‰²ã‚Šå½“ã¦ãªã—ã«é…ç½®ã•れã¾ã™ã€‚" -#~ msgid "Content contains" -#~ msgstr "コンテンツã®å†…容" +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "カテゴリーを削除ã—ã¦ã„ã¾ã™..." -#~ msgid "Score equals" -#~ msgstr "スコアã¨åŒã˜" +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "é¸æŠžã—ãŸã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’削除ã—ã¾ã™ã‹?" -#~ msgid "Score is greater than" -#~ msgstr "スコア以上" +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "é¸æŠžã—ãŸã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’削除ã—ã¦ã„ã¾ã™..." -#~ msgid "Score is less than" -#~ msgstr "スコア以下" +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "カテゴリーãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。" -#~ msgid "Articles newer than X hours" -#~ msgstr "記事㌠X 時間より新ã—ã„" +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "カテゴリーã®é¡Œå:" -#~ msgid "Articles newer than X days" -#~ msgstr "記事㌠X 日より新ã—ã„" +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "カテゴリーを作æˆã—ã¦ã„ã¾ã™..." -#~ msgid "Add" -#~ msgstr "追加" +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "æœ€è¿‘ã®æ›´æ–°ãŒãªã„フィード" -#~ msgid "" -#~ "This script is for Tiny Tiny RSS installations with MySQL backend only." -#~ msgstr "" -#~ "ã“ã®ã‚¹ã‚¯ãƒªãƒ—ト㯠Tiny Tiny RSS ã‚’ MySQL ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã«ã®ã¿ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¾" -#~ "ã™ã€‚" +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "æ–°ã—ã„ã‚‚ã®ã§ç¾åœ¨ã® OPML å…¬é–‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’ç½®ãæ›ãˆã¾ã™ã‹?" -#~ msgid "Converting database..." -#~ msgstr "データベースを変æ›ã—ã¦ã„ã¾ã™..." +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "フィードを消去ã—ã¦ã„ã¾ã™..." -#~ msgid "Unknown Error" -#~ msgstr "未知ã®ã‚¨ãƒ©ãƒ¼" +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "é¸æŠžã—ãŸãƒ•ィードã®è¨˜äº‹ã®ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã—ã¾ã™ã‹?" -#~ msgid "Content Filtering" -#~ msgstr "コンテンツフィルタリング" +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "é¸æŠžã—ãŸãƒ•ィードã®ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã—ã¦ã„ã¾ã™..." -#~ msgid "Label Editor" -#~ msgstr "ラベルエディター" +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "å…¨ã¦ã®è¨˜äº‹ã®ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã—ã¾ã™ã‹?ã“ã®æ“作ã«ã¯é•·ã„時間ãŒã‹ã‹ã‚‹ã‹ã‚‚ã—ã¾ã›ã‚“。" -#~ msgid "User Manager" -#~ msgstr "ユーザー管ç†" +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "フィードã®ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã—ã¦ã„ã¾ã™..." -#~ msgid "" -#~ "Fatal Error: You forgot to copy \n" -#~ "\t\tconfig.php-dist to config.php and edit it.\n" -#~ msgstr "" -#~ "致命的ãªã‚¨ãƒ©ãƒ¼: config.php-dist ã‚’\n" -#~ "\t\tconfig.php ã«ã‚³ãƒ”ーã—ã€ç·¨é›†ã™ã‚‹ã“ã¨ã‚’忘れãªã„ã§ãã ã•ã„。\n" +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "é¸æŠžã—ãŸãƒ©ãƒ™ãƒ«ã®è‰²ã‚’標準ã«ãƒªã‚»ãƒƒãƒˆã—ã¾ã™ã‹?" -#~ msgid "" -#~ "config: your config file version is incorrect. See config.php-dist.\n" -#~ msgstr "" -#~ "設定: 設定ファイルã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒä¸æ­£ç¢ºã§ã™ã€‚config.php-dist ã‚’å‚ç…§ã—ã¦ãã " -#~ "ã•ã„。\n" +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "設定プロファイル" -#~ msgid "" -#~ "Fatal error: RSS_BACKEND_TYPE is deprecated. Please remove this\n" -#~ "\t\t\toption from config.php\n" -#~ msgstr "" -#~ "致命的ãªã‚¨ãƒ©ãƒ¼: RSS_BACKEND_TYPE ã¯éžæŽ¨å¥¨ã§ã™ã€‚\n" -#~ "\t\t\tã“ã®ã‚ªãƒ—ションを config.php ã‹ã‚‰å‰Šé™¤ã—ã¦ãã ã•ã„。\n" +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "é¸æŠžã—ãŸãƒ—ロファイルを削除ã—ã¾ã™ã‹?ç¾åœ¨ã®ãƒ—ãƒ­ãƒ•ã‚¡ã‚¤ãƒ«ã€æ¨™æº–ã®ãƒ—ロファイルã¯å‰Šé™¤ã•れã¾ã›ã‚“。" -#~ msgid "" -#~ "Fatal Error: Please set DAEMON_UPDATE_LOGIN_LIMIT\n" -#~ "\t\t\tto 0 in single user mode.\n" -#~ msgstr "" -#~ "致命的ãªã‚¨ãƒ©ãƒ¼: シングルユーザーモードã§ã¯\n" -#~ "\t\t\t DAEMON_UPDATE_LOGIN_LIMIT ã‚’ 0 ã«è¨­å®šã—ã¦ãã ã•ã„。\n" +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "é¸æŠžã—ãŸãƒ—ロファイルを削除ã—ã¦ã„ã¾ã™..." -#~ msgid "" -#~ "Fatal Error: You have enabled USE_CURL_FOR_ICONS, but your PHP \n" -#~ "\t\t\tdoesn't seem to support CURL functions." -#~ msgstr "" -#~ "致命的ãªã‚¨ãƒ©ãƒ¼: USE_CURL_FOR_ICONS ãŒæœ‰åйã ãŒã€\n" -#~ "\t\t\tPHP 㯠CURL 機能をサãƒãƒ¼ãƒˆã—ã¦ã„ãªã„よã†ã«è¦‹ãˆã¾ã™ã€‚" +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "プロファイルãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。" -#~ msgid "config: SESSION_EXPIRE_TIME is undefined" -#~ msgstr "設定: SESSION_EXPIRE_TIME ãŒæœªå®šç¾©ã§ã™" +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "é¸æŠžã—ãŸãƒ—ロファイルを有効ã«ã—ã¾ã™ã‹?" -#~ msgid "config: SESSION_EXPIRE_TIME is too low (less than 60)" -#~ msgstr "設定: SESSION_EXPIRE_TIME ãŒä½Žã™ãŽã¾ã™ (60 以下)" +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "有効ã«ã™ã‚‹ãƒ—ãƒ­ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„。" -#, fuzzy -#~ msgid "" -#~ "config: SESSION_EXPIRE_TIME should be greater or equal " -#~ "toSESSION_COOKIE_LIFETIME" -#~ msgstr "設定: SESSION_EXPIRE_TIME ã¯æ¬¡ã®æ•°å­—以上ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“:" +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "プロファイルを作æˆã—ã¦ã„ã¾ã™..." -#~ msgid "" -#~ "config: DATABASE_BACKED_SESSIONS is incompatible with SINGLE_USER_MODE" -#~ msgstr "設定: DATABASE_BACKED_SESSIONS 㯠SINGLE_USER_MODE ã¨çŸ›ç›¾ã—ã¾ã™" +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "ã“ã®æ“作ã¯éŽåŽ»ã«ç”Ÿæˆã•れãŸãƒ•ィード㮠URL å…¨ã¦ã‚’無効化ã—ã¾ã™ã€‚ç¶šã‘ã¾ã™ã‹?" -#~ msgid "config: DATABASE_BACKED_SESSIONS are currently broken with MySQL" -#~ msgstr "設定: DATABASE_BACKED_SESSIONS 㯠ç¾åœ¨ MySQL ã§ã¯å£Šã‚Œã¦ã„ã¾ã™" +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "生æˆã•れ㟠URL を消去ã—ã¾ã—ãŸã€‚" -#~ msgid "" -#~ "config: MAIL_FROM has been split into DIGEST_FROM_NAME and " -#~ "DIGEST_FROM_ADDRESS" -#~ msgstr "" -#~ "設定: MAIL_FROM 㯠DIGEST_FROM_NAME 㨠DIGEST_FROM_ADDRESS ã«åˆ†ã‘られã¾ã—" -#~ "ãŸ" +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "ラベルエディター" -#~ msgid "  Subscribe to feed" -#~ msgstr "  ãƒ•ィードを購読ã™ã‚‹" +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "カテゴリーã‹ã‚‰è³¼èª­ã‚’ã‚„ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。" -#~ msgid "  Edit this feed" -#~ msgstr "  ã“ã®ãƒ•ィードを編集ã™ã‚‹" +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "検索ã®å–り消ã—" -#~ msgid "  Clear articles" -#~ msgstr "  è¨˜äº‹ã‚’消ã™" +#: js/viewfeed.js:174 +#, fuzzy +msgid "New articles found, reload feed to continue." +msgstr "表示ã™ã‚‹è¨˜äº‹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" -#~ msgid "  Rescore feed" -#~ msgstr "  ãƒ•ィードã®ã‚¹ã‚³ã‚¢ã‚’å†é›†è¨ˆã™ã‚‹" +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "記事ã®ãŠæ°—ã«å…¥ã‚Šã‚’解除" -#~ msgid "  Unsubscribe" -#~ msgstr "  è³¼èª­ã‚’ã‚„ã‚ã‚‹" +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "è¨˜äº‹ã‚’ãŠæ°—ã«å…¥ã‚Šã«ã™ã‚‹" -#~ msgid "  Mark as read" -#~ msgstr "  æ—¢èª­ã¨ã—ã¦è¨­å®šã™ã‚‹" +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "記事ã®å…¬é–‹ã‚’解除" -#~ msgid "  (Un)hide read feeds" -#~ msgstr "  èª­ã‚“ã ãƒ•ィードを隠ã™/å†è¡¨ç¤ºã™ã‚‹" +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "記事を公開" -#~ msgid "  Create filter" -#~ msgstr "  ãƒ•ィルターを作æˆã™ã‚‹" +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "%d ä»¶ã®è¨˜äº‹ã‚’é¸æŠž" -#~ msgid "  Reset category order" -#~ msgstr "  ã‚«ãƒ†ã‚´ãƒªãƒ¼ã®é †ç•ªã®ãƒªã‚»ãƒƒãƒˆ" +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "記事ãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。" -#~ msgid "Create Label" -#~ msgstr "ラベルã®ä½œæˆ" +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "記事ãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。" -#~ msgid "Caption" -#~ msgstr "キャプション" +#: js/viewfeed.js:1452 +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "%d ä»¶ã®è¨˜äº‹ã‚’既読ã¨ã—ã¦è¨­å®šã—ã¾ã™ã‹?" -#~ msgid "Match SQL" -#~ msgstr "SQL ã®ä¸€è‡´" +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "記事㮠URL を表示" -#~ msgid "Test" -#~ msgstr "テスト" +#~ msgid "Select by tags..." +#~ msgstr "ã‚¿ã‚°ã§é¸æŠž..." -#~ msgid "Feed information:" -#~ msgstr "フィード情報:" +#~ msgid "Limit search to:" +#~ msgstr "対象範囲" -#~ msgid "Site:" -#~ msgstr "サイト:" +#~ msgid "This feed" +#~ msgstr "ã“ã®ãƒ•ィード" -#~ msgid "Last updated:" -#~ msgstr "最終更新:" +#~ msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation." +#~ msgstr "データベースサーãƒã®æ­£è¦è¡¨ç¾å®Ÿè£…ã®å•題ã«ã‚ˆã‚Šã€ãƒ†ã‚¹ãƒˆä¸­ã¯è¤‡é›‘ãªæ­£è¦è¡¨ç¾ã¯çµæžœãŒå¾—られãªã„ã‹ã‚‚ã—れã¾ã›ã‚“。" -#~ msgid "Last headlines:" -#~ msgstr "最終ヘッドライン:" +#~ msgid "Old password cannot be blank." +#~ msgstr "å¤ã„パスワードを空ã«ã§ãã¾ã›ã‚“。" -#~ msgid "Other feeds: Top 25" -#~ msgstr "ãã®ä»–ã®ãƒ•ィード: トップ 25" +#~ msgid "New password cannot be blank." +#~ msgstr "æ–°ã—ã„パスワードを空ã«ã§ãã¾ã›ã‚“。" -#~ msgid "Showing top 25 registered feeds, sorted by popularity:" -#~ msgstr "人気順ã®ç™»éŒ²ãƒ•ィードã€ãƒˆãƒƒãƒ— 25 を表示中:" +#~ msgid "Entered passwords do not match." +#~ msgstr "パスワードãŒä¸€è‡´ã—ã¾ã›ã‚“。" -#~ msgid "Top 25" -#~ msgstr "トップ 25" +#~ msgid "Function not supported by authentication module." +#~ msgstr "èªè¨¼ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ãŒæ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。" -#~ msgid "Error: SQL expression is blank." -#~ msgstr "エラー: SQL 表記ãŒç©ºã§ã™ã€‚" +#~ msgid "Match:" +#~ msgstr "一致:" -#~ msgid "Saved label %s" -#~ msgstr "ラベル %s ã‚’ä¿å­˜ã—ã¾ã—ãŸ" +#~ msgid "Any" +#~ msgstr "ã„ãšã‚Œã‹" -#~ msgid "SQL Expression" -#~ msgstr "SQL 表記" +#~ msgid "All tags." +#~ msgstr "ã™ã¹ã¦" -#~ msgid "[No caption]" -#~ msgstr "[キャプションãªã—]" +#~ msgid "Which Tags?" +#~ msgstr "ã©ã®ã‚¿ã‚°?" -#~ msgid "Labels and SQL Expressions" -#~ msgstr "SQL 表ç¾ã¨ãƒ©ãƒ™ãƒ«" +#~ msgid "Display entries" +#~ msgstr "é …ç›®ã®è¡¨ç¤º" -#~ msgid "Examples" -#~ msgstr "例" +#~ msgid "Select item(s) by tags" +#~ msgstr "ã‚¿ã‚°ã§é …ç›®ã‚’é¸æŠž" -#~ msgid "Match all unread articles:" -#~ msgstr "一致ã—ãŸã™ã¹ã¦ã®æœªèª­è¨˜äº‹:" +#~ msgid "Unread First" +#~ msgstr "未読を最åˆã«" -#~ msgid "Matches all articles for the last week (PostgreSQL):" -#~ msgstr "å†åŽé›†ã®ã™ã¹ã¦ã®è¨˜äº‹ã«ä¸€è‡´ (PostgreSQL):" +#~ msgid "Unknown option: %s" +#~ msgstr "䏿˜Žãªã‚ªãƒ—ション: %s" -#~ msgid "Matches all articles with scores between 100 and 500:" -#~ msgstr "100 ã‹ã‚‰ 500 ã¾ã§ã®ã‚¹ã‚³ã‚¢ã®ã™ã¹ã¦ã®è¨˜äº‹ã«ä¸€è‡´:" +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "Tiny Tiny RSS ã®æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨ã§ãã¾ã™!" -#~ msgid "This program requires XmlHttpRequest " -#~ msgstr "ã“ã®ãƒ—ログラムã¯ã€XmlHttpRequest ã‚’è¦æ±‚ã—ã¾ã™" +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®æ¤œæŸ»ã«å¤±æ•—ã—ã¾ã—㟠(ユーザーエージェントãŒå¤‰æ›´ã•れã¾ã—ãŸ)" -#~ msgid "This program requires cookies " -#~ msgstr "ã“ã®ãƒ—ログラムã¯ã‚¯ãƒƒã‚­ãƒ¼ã‚’è¦æ±‚ã—ã¾ã™" +#~ msgid "Assign articles to labels automatically" +#~ msgstr "自動的ã«è¨˜äº‹ã«ãƒ©ãƒ™ãƒ«ã‚’割り当ã¦ã‚‹" -#~ msgid "description" -#~ msgstr "説明" +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "Tiny Tiny RSS ã®æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³(%s)ãŒåˆ©ç”¨ã§ãã¾ã™ã€‚" -#~ msgid "filter_type_descr" -#~ msgstr "filter_type_descr" +#~ msgid "You can update using built-in updater in the Preferences or by using update.php" +#~ msgstr "設定ã«ã‚る組ã¿è¾¼ã¿ã®æ›´æ–°æ©Ÿèƒ½ã‹ã€update.php を使ã£ã¦æ›´æ–°ã§ãã¾ã™" -#~ msgid "action_description" -#~ msgstr "action_description" +#~ msgid "See the release notes" +#~ msgstr "リリースノートを見る" -#, fuzzy -#~ msgid "Perform action" -#~ msgstr "æ“作ã®å®Ÿè¡Œ" +#~ msgid "Download" +#~ msgstr "ダウンロード" -#~ msgid "Filter expression" -#~ msgstr "フィルター表ç¾" +#~ msgid "Error receiving version information or no new version available." +#~ msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±ã®å–得エラーã‹ã€æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã‚りã¾ã›ã‚“。" -#~ msgid "Change password:" -#~ msgstr "変更パスワード:" +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Tiny Tiny RSS ã‚’æ›´æ–°ã™ã‚‹" -#~ msgid "Category:" -#~ msgstr "カテゴリー:" +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "Tiny Tiny RSS ã¯æœ€æ–°ã§ã™ã€‚" -#~ msgid "Caption:" -#~ msgstr "キャプション:" +#, fuzzy +#~ msgid "Force update" +#~ msgstr "æ›´æ–°ã®å®Ÿè¡Œ" -#~ msgid "SQL Expression:" -#~ msgstr "SQL 表ç¾:" +#~ msgid "Do not close this dialog until updating is finished." +#~ msgstr "æ›´æ–°ãŒçµ‚了ã™ã‚‹ã¾ã§ã“ã®ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã‚’é–‰ã˜ãªã„ã§ãã ã•ã„。" -#~ msgid "Feed:" -#~ msgstr "フィード:" +#~ msgid "It is suggested to backup your tt-rss directory first." +#~ msgstr "ã¾ãš tt-rss ディレクトリをãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚" -#~ msgid "Action:" -#~ msgstr "æ“作:" +#~ msgid "Your database will not be modified." +#~ msgstr "データベースã¯å¤‰æ›´ã•れã¾ã›ã‚“。" -#~ msgid "Params:" -#~ msgstr "パラメーター:" +#~ 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 "ç¾åœ¨ã® tt-rss インストールディレクトリã®å†…容ã¯å¤‰æ›´ã•れã¾ã›ã‚“。リãƒãƒ¼ãƒ ã•れã€è¦ªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æ®‹ã•れã¾ã™ã€‚更新終了後ã€ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚ºã—ãŸãƒ•ァイル全ã¦ã‚’移行ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" -#~ msgid "Title:" -#~ msgstr "題å:" +#~ msgid "Ready to update." +#~ msgstr "更新準備ã¯å®Œäº†ã§ã™ã€‚" -#~ msgid "Enable icons in feedlist" -#~ msgstr "フィード一覧ã®ã‚¢ã‚¤ã‚³ãƒ³ã‚’有効ã«ã™ã‚‹" +#~ msgid "Start update" +#~ msgstr "æ›´æ–°ã‚’é–‹å§‹ã™ã‚‹" -#~ msgid "Toggle" -#~ msgstr "トグル" +#~ msgid "Backup your tt-rss directory before continuing. Please type 'yes' to continue." +#~ msgstr "ç¶šã‘ã‚‹å‰ã« tt-rss ディレクトリをãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã—ã¦ãã ã•ã„。続ã‘ã‚‹ã«ã¯ 'yes' ã¨å…¥åŠ›ã—ã¦ãã ã•ã„。" -#~ msgid "This page" -#~ msgstr "ã“ã®ãƒšãƒ¼ã‚¸" +#~ msgid "New version available!" +#~ msgstr "æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨ã§ãã¾ã™!" -#~ msgid "Next page" -#~ msgstr "次ã®ãƒšãƒ¼ã‚¸" +#~ msgid "LibXML error %s at line %d (column %d): %s" +#~ msgstr "LibXML エラー %s ㌠%d 行 %d 列 ã§ç™ºç”Ÿã—ã¾ã—ãŸ: %s" -#~ msgid "Previous page" -#~ msgstr "å‰ã®ãƒšãƒ¼ã‚¸" +#~ msgid "From:" +#~ msgstr "From:" -#~ msgid "First page" -#~ msgstr "最åˆã®ãƒšãƒ¼ã‚¸" +#~ msgid "Select:" +#~ msgstr "é¸æŠž:" diff --git a/locale/ko_KR/LC_MESSAGES/messages.mo b/locale/ko_KR/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000..d61748cd89 Binary files /dev/null and b/locale/ko_KR/LC_MESSAGES/messages.mo differ diff --git a/locale/ko_KR/LC_MESSAGES/messages.po b/locale/ko_KR/LC_MESSAGES/messages.po new file mode 100644 index 0000000000..db46a155c2 --- /dev/null +++ b/locale/ko_KR/LC_MESSAGES/messages.po @@ -0,0 +1,4843 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# YoungMin Park , 2013 +# +msgid "" +msgstr "" +"Project-Id-Version: tt-rss unstable\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2014-11-04 12:05+0900\n" +"Last-Translator: YoungMin Park \n" +"Language-Team: YoungMin Park \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.6.10\n" +"X-Poedit-SourceCharset: UTF-8\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: backend.php:73 +msgid "Use default" +msgstr "기본 설정 사용" + +#: backend.php:74 +msgid "Never purge" +msgstr "남겨ë‘ì§€ 않ìŒ" + +#: backend.php:75 +msgid "1 week old" +msgstr "1ì£¼ì¼ ì „" + +#: backend.php:76 +msgid "2 weeks old" +msgstr "2ì£¼ì¼ ì „" + +#: backend.php:77 +msgid "1 month old" +msgstr "1달 ì „" + +#: backend.php:78 +msgid "2 months old" +msgstr "2달 ì „" + +#: backend.php:79 +msgid "3 months old" +msgstr "3달 ì „" + +#: backend.php:82 +msgid "Default interval" +msgstr "기본 간격" + +#: backend.php:83 +#: backend.php:93 +msgid "Disable updates" +msgstr "ì—…ë°ì´íЏ 중단" + +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" +msgstr "15분마다" + +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" +msgstr "30분마다" + +#: backend.php:86 +#: backend.php:96 +msgid "Hourly" +msgstr "1시간마다" + +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" +msgstr "4시간마다" + +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" +msgstr "12시간마다" + +#: backend.php:89 +#: backend.php:99 +msgid "Daily" +msgstr "하루 한 번" + +#: backend.php:90 +#: backend.php:100 +msgid "Weekly" +msgstr "1주ì¼ì— 한 번" + +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 +msgid "User" +msgstr "사용ìž" + +#: backend.php:104 +msgid "Power User" +msgstr "고급 사용ìž" + +#: backend.php:105 +msgid "Administrator" +msgstr "관리ìž" + +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "ì´ í”„ë¡œê·¸ëž¨ì´ ì •ìƒ ë™ìž‘ 하기 위해서는 XmlHttpRequestê°€ 필요합니다. 현재 ì‚¬ìš©ì¤‘ì¸ ë¸Œë¼ìš°ì €ëŠ” XmlHttpRequest를 ì§€ì›í•˜ì§€ 않는것으로 보입니다." + +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "ì´ í”„ë¡œê·¸ëž¨ì´ ì •ìƒ ë™ìž‘ 하기 위해서는 쿠키를 사용해야합니다. 현재 ì‚¬ìš©ì¤‘ì¸ ë¸Œë¼ìš°ì €ëŠ” 쿠키를 ì§€ì›í•˜ì§€ 않는것으로 보입니다." + +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "백엔드 설정 확ì¸ì— 실패하였습니다." + +#: errors.php:17 +msgid "Frontend sanity check failed." +msgstr "프론트엔드 설정 확ì¸ì— 실패하였습니다." + +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "ë°ì´í„°ë² ì´ìФ 스키마 ë²„ì „ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤. <a href='update.php'>ì—…ë°ì´íŠ¸ê°€ 필요합니다.</a>。" + +#: errors.php:21 +msgid "Request not authorized." +msgstr "ì¸ì¦ë˜ì§€ ì•Šì€ ìš”ì²­ìž…ë‹ˆë‹¤." + +#: errors.php:23 +msgid "No operation to perform." +msgstr "수행할 ìž‘ì—…ì´ ì—†ìŠµë‹ˆë‹¤." + +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "피드 ë‚´ìš©ì„ í‘œì‹œí•  수 없습니다. ë¼ë²¨ ë¬¸ë²•ì´ ì¼ì¹˜í•˜ëŠ”ì§€, í˜¹ì€ ë¡œì»¬ ì„¤ì •ì„ í™•ì¸í•´ì£¼ì„¸ìš”." + +#: errors.php:27 +msgid "Denied. Your access level is insufficient to access this page." +msgstr "ì´ íŽ˜ì´ì§€ì— 접근할 수 있는 ê¶Œí•œì´ ì—†ì–´ ì ‘ê·¼ì´ ê±°ë¶€ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: errors.php:29 +msgid "Configuration check failed" +msgstr "설정 확ì¸ì— 실패하였습니다." + +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "ì§€ì›í•˜ì§€ 않는 MySQL ë²„ì „ì„ ì‚¬ìš©ì¤‘ìž…ë‹ˆë‹¤. ìžì„¸í•œ ë‚´ìš©ì€ ê³µì‹ ì‚¬ì´íŠ¸ë¥¼ 참고해주세요." + +#: errors.php:35 +msgid "SQL escaping test failed, check your database and PHP configuration" +msgstr "SQL escaping í…ŒìŠ¤íŠ¸ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤. ë°ì´í„°ë² ì´ìФ ë° PHP ì„¤ì •ì„ í™•ì¸í•´ì£¼ì„¸ìš”." + +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "피드가 없습니다." + +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "사용ìžë¥¼ 찾지 못했습니다." + +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "로딩중입니다. ìž ê¹ì˜ 여유를 ê°–ê³  í•˜ëŠ˜ì„ ë°”ë¼ë³´ì•„ìš” ^^" + +#: index.php:167 +msgid "Collapse feedlist" +msgstr "í”¼ë“œëª©ë¡ ì ‘ê¸°" + +#: index.php:170 +msgid "Show articles" +msgstr "ë‚´ìš© 표시" + +#: index.php:173 +msgid "Adaptive" +msgstr "추린 글" + +#: index.php:174 +msgid "All Articles" +msgstr "ì „ì²´ ë‚´ìš©" + +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "중요 표시" + +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "공개ë¨" + +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 +msgid "Unread" +msgstr "안 ì½ì€ 글" + +#: index.php:178 +msgid "With Note" +msgstr "노트가 있는 글" + +#: index.php:179 +msgid "Ignore Scoring" +msgstr "ì ìˆ˜ 무시" + +#: index.php:182 +msgid "Sort articles" +msgstr "ë‚´ìš© ì •ë ¬" + +#: index.php:185 +msgid "Default" +msgstr "기본 ì •ë ¬" + +#: index.php:186 +msgid "Newest first" +msgstr "새 글 먼저" + +#: index.php:187 +msgid "Oldest first" +msgstr "ì˜¤ëž˜ëœ ê¸€ 먼저" + +#: index.php:188 +msgid "Title" +msgstr "제목순으로" + +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 +msgid "Mark as read" +msgstr "ì½ìŒ 표시" + +#: index.php:195 +msgid "Older than one day" +msgstr "하루 넘게 ë¬µì€ ë‚´ìš©" + +#: index.php:198 +msgid "Older than one week" +msgstr "1ì£¼ì¼ ë„˜ê²Œ ë¬µì€ ë‚´ìš©" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "2ì£¼ì¼ ë„˜ê²Œ ë¬µì€ ë‚´ìš©" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "ì„œë²„ì™€ì˜ í†µì‹ ì´ ì›í™œí•˜ì§€ 않습니다." + +#: index.php:223 +msgid "Actions..." +msgstr "ë™ìž‘..." + +#: index.php:225 +msgid "Preferences..." +msgstr "설정..." + +#: index.php:226 +msgid "Search..." +msgstr "검색..." + +#: index.php:227 +msgid "Feed actions:" +msgstr "피드 ë™ìž‘" + +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "피드 구ë…..." + +#: index.php:229 +msgid "Edit this feed..." +msgstr "ì´ í”¼ë“œ 수정..." + +#: index.php:230 +msgid "Rescore feed" +msgstr "피드 ì ìˆ˜ 다시 매기기..." + +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "êµ¬ë… í•´ì œ" + +#: index.php:232 +msgid "All feeds:" +msgstr "ì „ì²´ 피드:" + +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "ì½ì€ ë‚´ìš© 숨김" + +#: index.php:235 +msgid "Other actions:" +msgstr "기타 ë™ìž‘" + +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "와ì´ë“œìФí¬ë¦° 모드 켜기/ë„기" + +#: index.php:237 +msgid "Create label..." +msgstr "ë¼ë²¨ 만들기..." + +#: index.php:238 +msgid "Create filter..." +msgstr "í•„í„° 만들기..." + +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "키보드 단축키 ë„움ë§" + +#: index.php:248 +msgid "Logout" +msgstr "로그아웃" + +#: index.php:254 +msgid "Updates are available from Git." +msgstr "" + +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "설정" + +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "키보드 단축키" + +#: prefs.php:112 +msgid "Exit preferences" +msgstr "설정 완료" + +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "피드" + +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "í•„í„°" + +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "ë¼ë²¨" + +#: prefs.php:133 +msgid "Users" +msgstr "사용ìž" + +#: prefs.php:136 +msgid "System" +msgstr "시스템" + +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "새 계정 ìƒì„±" + +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "관리ìžê°€ ì‹ ê·œ ì‚¬ìš©ìž ë“±ë¡ ê¸°ëŠ¥ì„ ë¹„í™œì„±í™” 한 ìƒíƒœìž…니다." + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Tiny Tiny RSS로 ëŒì•„가기" + +#: register.php:218 +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 "임시 암호가 ì´ë©”ì¼ë¡œ 전송ë©ë‹ˆë‹¤. ì´ë©”ì¼ ì „ì†¡ 후 24시간 ë‚´ì— ë¡œê·¸ì¸í•˜ì§€ 않으면 ê³„ì •ì´ ì‚­ì œë©ë‹ˆë‹¤." + +#: register.php:224 +msgid "Desired login:" +msgstr "ì›í•˜ëŠ” 사용ìžëª…:" + +#: register.php:227 +msgid "Check availability" +msgstr "가능한지 확ì¸" + +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "ì´ë©”ì¼:" + +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "2 + 2 = ?" + +#: register.php:235 +msgid "Submit registration" +msgstr "ë“±ë¡ ì •ë³´ 제출" + +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "ë“±ë¡ ì •ë³´ê°€ 미완성 ìƒíƒœìž…니다." + +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "ì´ë¯¸ ì‚¬ìš©ì¤‘ì¸ ì‚¬ìš©ìžëª…입니다." + +#: register.php:287 +msgid "Registration failed." +msgstr "등ë¡ì— 실패했습니다." + +#: register.php:334 +msgid "Account created successfully." +msgstr "계정 ìƒì„±ì´ 완료ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "현재는 ì‹ ê·œ ì‚¬ìš©ìž ë“±ë¡ì„ í•  수 없습니다." + +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "Tiny Tiny RSS ë°ì´í„° ì—…ë°ì´íЏ 스í¬ë¦½íЏ." + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "카테고리 ì—†ìŒ" + +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "ì €ìž¥ëœ ê¸€(%dê°œ)" + +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "피드가 없습니다." + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "ì´ë™" + +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "ë‹¤ìŒ í”¼ë“œ 열기" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "ì´ì „ 피드 열기" + +#: include/functions2.php:55 +msgid "Open next article" +msgstr "ë‹¤ìŒ ê¸€ 보기" + +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "ì´ì „ 글 보기" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "ë‹¤ìŒ ê¸€ 보기 (긴 글 스í¬ë¡¤ 하지 않ìŒ)" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "ì´ì „ 글 열기 (긴 글 스í¬ë¡¤ 하지 않ìŒ)" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "ë‹¤ìŒ ê¸€ë¡œ ì´ë™(펼치거나 ì½ìŒ 표시하지 않ìŒ)" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "ì´ì „ 글로 ì´ë™(펼치거나 ì½ìŒ 표시하지 않ìŒ)" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "검색 기능 표시" + +#: include/functions2.php:62 +msgid "Article" +msgstr "글" + +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "중요 표시" + +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "공개 설정" + +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "ì½ì§€ ì•ŠìŒ í‘œì‹œ" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "태그 편집" + +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "ì„ íƒ í•´ì œ" + +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "ì½ì§€ì•ŠìŒìœ¼ë¡œ 표시" + +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "새창ì—서 열기" + +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "아래 글 ì½ìŒ 표시" + +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "위 글 ì½ìŒ 표시" + +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "스í¬ë¡¤ 다운" + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "위로 스í¬ë¡¤" + +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "ì»¤ì„œìœ„ì¹˜ì˜ ê¸€ ì„ íƒ" + +#: include/functions2.php:75 +msgid "Email article" +msgstr "ì´ë©”ì¼ë¡œ 글 전송" + +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "글 접기/펴기" + +#: include/functions2.php:77 +msgid "Toggle article expansion (combined mode)" +msgstr "글 확장 (혼합 모드)" + +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "ì›ë¬¸ 표시" + +#: include/functions2.php:80 +msgid "Article selection" +msgstr "글 ì„ íƒ" + +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "ì „ì²´ 글 ì„ íƒ" + +#: include/functions2.php:82 +msgid "Select unread" +msgstr "ì½ì§€ ì•Šì€ ê¸€ ì„ íƒ" + +#: include/functions2.php:83 +msgid "Select starred" +msgstr "중요 표시 글 ì„ íƒ" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "공개한 글 ì„ íƒ" + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "ì„ íƒ ë°˜ì „" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "ì „ì²´ ì„ íƒ í•´ì œ" + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "피드" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "ì´ í”¼ë“œ 새로고침" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "ì½ì€ 피드 숨기기/ë³´ì´ê¸°" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "피드 구ë…" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "피드 편집" + +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "헤드ë¼ì¸ 거꾸로 표시" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "피드 ì—…ë°ì´íЏ 디버그" + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "모든 피드를 ì½ìŒ 표시" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "ì´ ì¹´í…Œê³ ë¦¬ 접기/펴기" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "통합 모드 켜기/ë„기" + +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "통합 모드ì—ì„œì˜ ìžë™ 펼침 켜기/ë„기" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "ì´ë™" + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "ì „ì²´ 글" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "새 글" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "태그 í´ë¼ìš°ë“œ" + +#: include/functions2.php:106 +msgid "Other" +msgstr "기타" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "ë¼ë²¨ ìƒì„±" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "í•„í„° ìƒì„±" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "사ì´ë“œë°” 숨김/표시" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "ë„ì›€ë§ ë³´ì´ê¸°" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "검색 ê²°ê³¼: %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +msgid "comment" +msgid_plural "comments" +msgstr[0] "코멘트" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +msgid "comments" +msgstr "코멘트" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "태그 ì—†ìŒ" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "ì´ ê¸€ì˜ íƒœê·¸ 편집" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "ì› ì¶œì²˜:" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "피드 주소" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "ì´ ì°½ 닫기" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(노트 편집)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "알수 없는 종류" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "첨부" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "ìžë™ 분류" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "모든 피드" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "중요 í‘œì‹œëœ ê¸€" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "공개 글" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "새 글" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "ë³´ê´€ ì²˜ë¦¬ëœ ê¸€" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "ìµœê·¼ì— ì½ì€ 글" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "로그ì¸:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "암호:" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "비밀번호를 잊어버리셨나요?" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "프로필:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "기본 프로필" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "" + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "ID/PW 저장" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "로그ì¸" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "세션 유효성 검사 실패(ìž˜ëª»ëœ IP)" + +#: include/sessions.php:67 +#, fuzzy +msgid "Session failed to validate (schema version changed)" +msgstr "세션 유효성 검사 실패(ìž˜ëª»ëœ IP)" + +#: include/sessions.php:85 +#, fuzzy +msgid "Session failed to validate (user not found)" +msgstr "세션 유효성 검사 실패(ìž˜ëª»ëœ IP)" + +#: include/sessions.php:94 +#, fuzzy +msgid "Session failed to validate (password changed)" +msgstr "세션 유효성 검사 실패(ìž˜ëª»ëœ IP)" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "" + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "키보드 단축키" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "ë„ì›€ë§ ì£¼ì œê°€ 없습니다." + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "Tiny Tiny RSSì— ê³µìœ í•˜ê¸°" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "제목:" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "ë‚´ìš©:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "ë¼ë²¨:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "ê³µìœ ëœ ê¸€ì€ ê³µê°œëœ í”¼ë“œì— í‘œì‹œë©ë‹ˆë‹¤." + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "공유" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "취소" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "로그ì¸ë˜ì§€ 않ìŒ" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "ìž˜ëª»ëœ ì‚¬ìš©ìžëª… / 암호입니다." + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "%s는 ì´ë¯¸ 구ë…중입니다." + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "%s를 구ë…했습니다." + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "%s를 구ë…í•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." + +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "%sì—서 피드를 찾지 못했습니다." + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "ì—¬ëŸ¬ê°œì˜ í”¼ë“œë¥¼ 찾았습니다." + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "%s를 구ë…í•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
    피드 URLì„ ë‹¤ìš´ë¡œë“œ í•  수 없습니다." + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "ì„ íƒëœ 피드 구ë…" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "êµ¬ë… ì˜µì…˜ 편집" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "암호 복구" + +#: classes/handler/public.php:805 +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "" + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "암호 초기화" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "ì¼ë¶€ 필수 파ë¼ë¯¸í„°ê°€ 누ë½ë˜ì—ˆê±°ë‚˜ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "ëŒì•„가기" + +#: classes/handler/public.php:878 +#, fuzzy +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] 암호 변경 안내" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "로그ì¸/ì´ë©”ì¼ ì •ë³´ê°€ 없습니다." + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "현재 계정 권한으로는 ì´ ìŠ¤í¬ë¦½íŠ¸ë¥¼ 실행할 수 없습니다." + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "ë°ì´í„°ë² ì´ìФ ì—…ë°ì´í„°" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "ì—…ë°ì´íЏ 실행" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "RSS 피드로 보기" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "RSS로 보기" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "마지막 ì—…ë°ì´íЏ: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "ì „ì²´" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "ì„ íƒ ë°˜ì „" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "ì„ íƒ ì•ˆ 함" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "기타..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "ì„ íƒ/ì„ íƒí•´ì œ:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "ì„ íƒ:" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "ì ìˆ˜ 매기기" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "ë³´ê´€ 처리" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "ëŒì•„가기" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "ì‚­ì œ" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "ì´ë©”ì¼ë¡œ 전달" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "피드" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "피드가 없습니다." + +#: classes/feeds.php:268 +msgid "Never" +msgstr "ì˜ì›ížˆ" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "%sì—서 불러옴" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +msgid "mark feed as read" +msgstr "피드 ì½ìŒ 표시" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "글 접기" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "ì½ì§€ ì•Šì€ ê¸€ì´ ì—†ìŠµë‹ˆë‹¤." + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "ì—…ë°ì´íŠ¸ëœ ê¸€ì´ ì—†ìŠµë‹ˆë‹¤." + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "중요 í‘œì‹œëœ ê¸€ì´ ì—†ìŠµë‹ˆë‹¤." + +#: classes/feeds.php:778 +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 "표시할 ê¸€ì´ ì—†ìŠµë‹ˆë‹¤. 필터를 사용하거나 글 ì œëª©ì„ ìš°í´ë¦­í•´ì„œ ë¼ë²¨ì„ 추가할 수 있습니다." + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "표시할 ê¸€ì´ ì—†ìŠµë‹ˆë‹¤." + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "%sì— ë§ˆì§€ë§‰ìœ¼ë¡œ ì—…ë°ì´íЏ ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "ì¼ë¶€ í”¼ë“œì— ì—…ë°ì´íЏ 오류가 있습니다 (ìƒì„¸ 정보는 í´ë¦­)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "ì„ íƒëœ 피드가 없습니다." + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "피드나 사ì´íЏ URL" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "카테고리 위치:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "사용 가능한 피드" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "ì¸ì¦" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "로그ì¸" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "암호" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "ì´ í”¼ë“œëŠ” 로그ì¸ì´ 필요합니다." + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "구ë…" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "기타 피드" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "검색" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "ì¸ê¸° 피드" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "피드 ë³´ê´€" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "제한:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "ì‚­ì œ" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +msgid "Search syntax" +msgstr "문법 " + +#: classes/article.php:25 +msgid "Article not found." +msgstr "ê¸€ì´ ì—†ìŠµë‹ˆë‹¤." + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "ì´ ê¸€ì˜ íƒœê·¸ (쉼표로 구분)" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "저장" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "OPML 유틸리티" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "OPML 불러오는중..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "설정으로 ëŒì•„가기" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "%s 피드를 추가하는중..." + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "중복 피드: %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "%sì— ë¼ë²¨ 추가중..." + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "필터를 추가하는중..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "카테고리 처리중: %s" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "ì—…ë¡œë“œëœ íŒŒì¼ì„ ì´ë™í•  수 없습니다." + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "오류: OPML 파ì¼ì„ 업로드 하세요." + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "오류: ì´ë™ëœ OPML 파ì¼ì„ ì°¾ì„ ìˆ˜ 없습니다." + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "문서 ë¶„ì„ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "현재 계정 권한으로는 ì´ íƒ­ì„ ì‚¬ìš©í•  수 없습니다." + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "새로고침" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "로그 지우기" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "ë‚ ì§œ" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "사용ìžë¥¼ 찾지 못했습니다." + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "ë“±ë¡ ì¼ìž" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "마지막 로그ì¸" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "구ë…ì¤‘ì¸ í”¼ë“œ 수" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "구ë…ì¤‘ì¸ í”¼ë“œ" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "계정 권한:" + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "옵션" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "ì‚¬ìš©ìž %s (암호: %s)ê°€ 추가ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "ì‚¬ìš©ìž %s를 만들 수 없습니다." + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "%s는 ì´ë¯¸ 사용중입니다." + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "ì‚¬ìš©ìž %sì˜ ì•”í˜¸ê°€ %s로 변경ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "ì‚¬ìš©ìž %sì˜ ìƒˆ 암호를 %s로 보내중..." + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] 암호 변경 안내" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "ì„ íƒ" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "ì‚¬ìš©ìž ìƒì„±" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "ìƒì„¸ ì •ë³´" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "편집" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "계정 권한" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "마지막 로그ì¸" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "í´ë¦­í•˜ì—¬ 편집" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "ì •ì˜ëœ 사용ìžê°€ 없습니다." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "ì¼ì¹˜í•˜ëŠ” 사용ìžê°€ 없습니다." + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "필드 활성화 확ì¸" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "(%dê°œì˜ í”¼ë“œ)" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "피드 제목" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "ì—…ë°ì´íЏ" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "ê¸€ì„ ìœ ì§€:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "" + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "ì¸ê¸° 피드ì—서 숨김" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "ì´ë©”ì¼ ìš”ì•½ì— í¬í•¨" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "ì´ë¯¸ì§€ë¥¼ ë¡œì»¬ì— ìºì‰¬" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "ì—…ë°ì´íŠ¸ëœ ê¸€ì„ ì½ì§€ ì•ŠìŒ í‘œì‹œ" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "ì•„ì´ì½˜" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "ì—…ë°ì´íЏ ì•Œë¦¼ì„ ìœ„í•´ 다시 구ë…" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "" + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "완료ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "오류가 있는 피드" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "피드 비활성화" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "ì„ íƒëœ 피드 편집" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "ì •ë ¬ 순서 초기화" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "ì¼ê´„ 구ë…" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "카테고리" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "카테고리 추가" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "ì„ íƒëœ 항목 제거" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "기타 ë™ìž‘..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "ìˆ˜ë™ ë‚¨ê¹€" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "피드 ë°ì´í„° 정리" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "글 ì ìˆ˜ 다시 매기기" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "OPMLì„ ì‚¬ìš©í•˜ë©´ 피드/í•„í„°/ë¼ë²¨/ì„¤ì •ì„ ë‚´ë³´ë‚´ê³  불러올 수 있습니다." + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "" + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "ë‚´ OPML 불러오기" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "설정 í¬í•¨" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "OPML 내보내기" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "ì‚¬ìš©ì¤‘ì¸ OPMLì„ ê³µê°œí•˜ë©´, 누구든 아래 URL만으로 구ë…í•  수 있습니다." + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "" + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "공개 OPML URL 표시" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Firefox ì—°ë™" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "Tiny Tiny RSS를 Firefox Feed Reader로 사용하려면 아래 ë§í¬ë¥¼ í´ë¦­í•˜ì„¸ìš”." + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "ì´ ì‚¬ì´íŠ¸ë¥¼ 피드 리ë”로 등ë¡í•˜ë ¤ë©´ 여기를 í´ë¦­í•˜ì„¸ìš”" + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "공개, ê³µìœ ëœ ê¸€ / ìƒì„±ëœ 피드" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "ê³µê°œëœ ê¸€ë“¤ì€ RSS 피드로 공개ë˜ë©°, 누구든 아래 URL만으로 구ë…í•  수 있습니다." + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "URL 표시" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "ì´ë¯¸ 만들어진 URL 제거" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "3개월 ì´ìƒ ì—…ë°ì´íЏ ë˜ì§€ ì•Šì€ í”¼ë“œ(ì˜¤ëž˜ëœ ìˆœì„œ):" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "í´ë¦­í•˜ì—¬ 피드 편집" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "ì„ íƒëœ 피드 êµ¬ë… í•´ì œ 중..." + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "ì¸ì¦ì´ 필요한 피드" + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "" + +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "ì´ í•„í„°ì— í•´ë‹¹í•˜ëŠ” 최근 ê¸€ì´ ì—†ìŠµë‹ˆë‹¤." + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "반전" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "ìžë§‰" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "ì¼ì¹˜" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "추가" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "ë™ìž‘ ì ìš©" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "활성화" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "아무 규칙ì´ë‚˜ ì ìš©" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "반대 ì ìš©" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "테스트" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "병합" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "ìƒì„±" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "필드" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "" + +#: classes/pref/filters.php:947 +#, fuzzy +msgid "Wiki: Filters" +msgstr "í•„í„°" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "규칙 저장" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "규칙 추가" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "ë™ìž‘ 실행" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "파ë¼ë¯¸í„° í¬í•¨:" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "저장 ë™ìž‘" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "ë™ìž‘ 추가" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[ìžë§‰ ì—†ìŒ]" + +#: classes/pref/filters.php:1044 +#, fuzzy, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "규칙 추가" + +#: classes/pref/filters.php:1059 +#, fuzzy, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "ë™ìž‘ 추가" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "색깔" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "전면색" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "배경색" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "%s ë¼ë²¨ì´ ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "색 정리" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "ì¼ë°˜" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "ì¸í„°íŽ˜ì´ìФ" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "고급" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "글 중복 허용" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "ë¸”ëž™ë¦¬ìŠ¤íŠ¸ëœ íƒœê·¸" + +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "" + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "ìžë™ìœ¼ë¡œ ì½ìŒ 표시" + +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "ì´ ì˜µì…˜ì„ ì„ íƒí•˜ë©´, 글 목ë¡ì—서 아래로 스í¬ë¡¤í• ë•Œ ìžë™ìœ¼ë¡œ ì½ìŒ 표시가 ë©ë‹ˆë‹¤." + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "통합 모드ì—서 ìžë™ìœ¼ë¡œ 글 펼침" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "피드 통합 표시" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "제목하고 ë‚´ìš©ì„ ë¶„ë¦¬í•´ì„œ 표시하지 않고, 피드 ë‚´ìš©ì˜ íŽ¼ì³ì§„ 목ë¡ì„ ë³´ì—¬ì¤ë‹ˆë‹¤." + +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "피드를 ì½ìŒí‘œì‹œ í•  때 물어봄" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "한 ë²ˆì— í‘œì‹œí•  ê¸€ì˜ ìˆ˜" + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "피드 ì—…ë°ì´íЏ 주기" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "" + +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "ì´ë©”ì¼ ìš”ì•½ì— ìžˆëŠ” 글 ì½ìŒ 표시" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "ì´ë©”ì¼ ìš”ì•½ë³¸ 활성화" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "특정 ì‹œê°„ì— ì´ë©”ì¼ ìš”ì•½ë³¸ 전송" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "API ì ‘ê·¼ 켜기" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "피드 카테고리 활성화" + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "ì½ì§€ ì•Šì€ ê¸€ ìˆ˜ì— ë”°ë¼ í”¼ë“œ ì •ë ¬" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "새 글로 표시할 기준(시간)" + +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "모든 ê¸€ì„ ì½ì€ 피드 숨기기" + +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "ìžë™ë¶„류ì—서는 다 ì½ì€ 피드를 숨기지 않ìŒ" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "긴 ë‚ ì§œ 형ì‹" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "" + +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "다시 ë³¼ 때 ë‹¤ìŒ í”¼ë“œë¥¼ 표시" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "" + +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "ë©°ì¹ ì´ ì§€ë‚œ ê¸€ì„ ì œê±°í• ì§€ 설정 (0 - 제거하지 않ìŒ)" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "ì½ì§€ ì•Šì€ ê¸€ 남겨둠" + +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "헤드ë¼ì¸ 순서 반전 (오래ëœê²ƒë¶€í„°)" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "ì§§ì€ ë‚ ì§œ 형ì‹" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "헤드ë¼ì¸ 목ë¡ì— ë‚´ìš© 미리보기 표시" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "피드 날짜별 헤드ë¼ì¸ ì •ë ¬" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "SSL ì¸ì¦ì„ 사용하여 로그ì¸" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "" + +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "ê¸€ì— ì´ë¯¸ì§€ 삽입하지 않ìŒ" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "안전하지 ì•Šì€ íƒœê·¸ 제거" + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "" + +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "스타ì¼ì‹œíЏ 변경" + +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "시간대" + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "ê°€ìƒ í”¼ë“œì˜ í—¤ë“œë¼ì¸ì„ 묶ìŒ" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" + +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "언어" + +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "테마" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "ì„¤ì •ì´ ì €ìž¥ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "ê°œì¸ ì •ë³´ê°€ 저장ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "" + +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "ê°œì¸ ì •ë³´ / ì¸ì¦" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "ê°œì¸ ì •ë³´" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "ì´ë©”ì¼" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "계정 권한" + +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "ë°ì´í„° 저장" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "ì‚¬ìš©ì¤‘ì¸ ì•”í˜¸ê°€ 기본 값입니다. 암호를 변경하세요." + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "" + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "ì›ëž˜ 암호" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "새 암호" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "암호 확ì¸" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "암호 변경" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "" + +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "" + +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "암호를 입력하세요" + +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "OTP 비활성화" + +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "" + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "" + +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "ìƒì„±ëœ OTP ìž…ë ¥" + +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "OTP 활성화" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "" + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "" + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "ì‚¬ìš©ìž ì„¤ì •" + +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "등ë¡" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "설정 저장" + +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "저장하고 설정 종료" + +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "프로필 관리" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "초기화" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "플러그ì¸" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "변경 ì‚¬í•­ì„ ì ìš©í•˜ê¸° 위해서는 Tiny Tiny RSS를 새로 고침해야합니다." + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "" + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "시스템 플러그ì¸" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "설명" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "ë°ì´í„° 제거" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "ì‚¬ìš©ìž í”ŒëŸ¬ê·¸ì¸" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "ì„ íƒí•œ í”ŒëŸ¬ê·¸ì¸ ì¼œê¸°" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "ìž˜ëª»ëœ OTP 입니다" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "ìž˜ëª»ëœ ì•”í˜¸ìž…ë‹ˆë‹¤" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "" + +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "프로필 ìƒì„±" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(활성화)" + +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "ì„ íƒëœ 프로필 ì‚­ì œ" + +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "프로필 활성화" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "" + +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "공개 OPML URL: " + +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "새 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 "" + +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "마지막 ì—…ë°ì´íЏ:" + +#: 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 "" + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" + +#: plugins/af_psql_trgm/init.php:112 +#, fuzzy +msgid "Show related articles" +msgstr "중요 í‘œì‹œëœ ê¸€" + +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +#, fuzzy +msgid "Mark similar articles as read" +msgstr "모든 ê¸€ì„ ì½ìŒ 표시 할까요?" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +#, fuzzy +msgid "Global settings" +msgstr "설정 í¬í•¨" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "フィード一覧ã®ã‚¢ã‚¤ã‚³ãƒ³ã‚’有効ã«ã™ã‚‹" + +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" + +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" + +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "" + +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "" + +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "글 노트 편집" + +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "ì—…ë¡œë“œëœ íŒŒì¼ ì—†ìŒ." + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "" + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "" + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "" + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "여러 글" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "" + +#: plugins/mailto/init.php:75 +msgid "Forward selected article(s) by email." +msgstr "ì„ íƒëœ ê¸€ì´ ì´ë©”ì¼ë¡œ 전달ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "" + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "ì´ ì°½ 닫기" + +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "" + +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "" + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "ë‚´ ë°ì´í„° 내보내기" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "불러오기" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "불러오기 실패: ìž˜ëª»ëœ ìŠ¤í‚¤ë§ˆ 버전" + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "" + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "" + +#: plugins/import_export/init.php:388 +#, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "%dê°œì˜ ê¸€ì´ ì²˜ë¦¬ë˜ì—ˆìŠµë‹ˆë‹¤, " + +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "%d를 불러왔습니다," + +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "%dê°œì˜ í”¼ë“œê°€ ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "" + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "ë°ì´í„° 준비" + +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "ì„¤ì •ì´ ì €ìž¥ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "OTP를 입력하세요:" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "암호가 변경ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "현재 암호가 틀립니다." + +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "글 닫기" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "" + +#: plugins/mail/init.php:34 +#, fuzzy +msgid "Mail plugin" +msgstr "ì‚¬ìš©ìž í”ŒëŸ¬ê·¸ì¸" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "" + +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "받는 사람:" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "제목:" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "ì´ë©”ì¼ ì „ì†¡" + +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "ì—°ê²°ë¨" + +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" +msgstr "" + +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "" + +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "ì ‘ê·¼ 키:" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "ì ‘ê·¼ 키" + +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "" + +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "새 키 ìƒì„±" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "ë§í¬ 항목" + +#: 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 "" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "ì €ìž¥ëœ í”¼ë“œ" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "ë§í¬ ìƒì„±" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "ì„¤ì •ì´ ì €ìž¥ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "가능한지 확ì¸" + +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "記事ã®å†…容をスクロールã™ã‚‹" + +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +#, fuzzy +msgid "Shared articles" +msgstr "중요 í‘œì‹œëœ ê¸€" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +msgid "Statistics" +msgstr "" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "중요 í‘œì‹œëœ ê¸€" + +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "ë°ì´í„° 제거" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, php-format +msgid "Currently stored as: %s" +msgstr "" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "" + +#: 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 "" + +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "Tiny Tiny RSSì—서 %s를 구ë…할까요?" + +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Tiny Tiny RSS êµ¬ë… ëª©ë¡" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "ì•„ëž˜ì˜ ê°œë³„ URL로 ê³µìœ ëœ ëª¨ë“  ê¸€ë“¤ì´ ê³µìœ  중단ë©ë‹ˆë‹¤." + +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "모든 글 공유중단" + +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "URL로 공유" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "" + +#: plugins/share/init.php:117 +#, fuzzy +msgid "Unshare article" +msgstr "중요 표시 í•´ì œ" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "" + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "" + +#: js/functions.js:93 +msgid "Close" +msgstr "" + +#: js/functions.js:104 +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "" + +#: js/functions.js:224 +msgid "Click to close" +msgstr "í´ë¦­í•˜ì—¬ 닫기" + +#: js/functions.js:1051 +msgid "Edit action" +msgstr "ë™ìž‘ 편집" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "í•„í„° ìƒì„±" + +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "" + +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "구ë…ì´ ì´ˆê¸°í™”ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "%s를 êµ¬ë… í•´ì œ 할까요?" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "피드 제거중..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "카테고리 ì´ë¦„ì„ ìž…ë ¥í•˜ì„¸ìš”:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "주소 변경중..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "ì„ íƒëœ 피드가 없습니다." + +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "" + +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "ì—…ë°ì´íЏ 오류가 있는 피드" + +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "ì„ íƒëœ 피드를 제거할까요?" + +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "ì„ íƒëœ 피드 제거중..." + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "카테고리 편집" + +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "카테고리 제거" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "반전" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "ë¡œê·¸ì¸ ì •ë³´ ìž…ë ¥:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "ì‚¬ìš©ìž ìƒì„± 실패: ë¡œê·¸ì¸ ì •ë³´ë¥¼ 입력하세요." + +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "ì‚¬ìš©ìž ì¶”ê°€ì¤‘..." + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "ì‚¬ìš©ìž íŽ¸ì§‘ê¸°" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "ë°ì´í„° 저장중..." + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "í•„í„° 편집" + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "필터를 제거할까요?" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "í•„í„° 삭제중..." + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "ì„ íƒí•œ ë¼ë²¨ì„ 삭제할까요?" + +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "ë¼ë²¨ 삭제중..." + +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "ì„ íƒëœ ë¼ë²¨ì´ 없습니다." + +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "" + +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "ì‚¬ìš©ìž ì‚­ì œì¤‘..." + +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "ì„ íƒëœ 사용ìžê°€ 없습니다." + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "ì„ íƒí•œ 필터를 삭제할까요?" + +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "í•„í„° 제거중..." + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "ì„ íƒëœ í•„í„°ê°€ 없습니다." + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "ì„ íƒí•œ 피드를 êµ¬ë… í•´ì œí• ê¹Œìš”?" + +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "êµ¬ë… í•´ì œ 중..." + +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "피드를 하나만 ì„ íƒí•˜ì„¸ìš”." + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "ì„ íƒí•œ 피드ì—서 중요 표시ë˜ì§€ ì•Šì€ ëª¨ë“  ê¸€ì„ ì œê±°í• ê¹Œìš”?" + +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "피드 정리중..." + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "ê¸€ì„ ë©°ì¹ ê°„ 보관할까요? (0 - 기본 설정 사용)" + +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "ì„ íƒëœ 피드 남겨놓는중..." + +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "ì‚¬ìš©ìž í•œ 명만 ì„ íƒí•˜ì„¸ìš”." + +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "ì„ íƒí•œ 사용ìžì˜ 암호를 초기화 할까요?" + +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "ì‚¬ìš©ìž ì•”í˜¸ 초기화중..." + +#: js/prefs.js:565 +msgid "User details" +msgstr "ì‚¬ìš©ìž ìƒì„¸ ì •ë³´" + +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "필터를 하나만 ì„ íƒí•˜ì„¸ìš”." + +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "ì„ íƒëœ 필터를 섞ì„까요?" + +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "í•„í„° 합치는중..." + +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "여러 피드 편집" + +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "ì„ íƒí•œ í”¼ë“œì— ìˆ˜ì • ì‚¬í•­ì„ ë°˜ì˜í• ê¹Œìš”?" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "OPML 불러오기" + +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "먼저 OPML 파ì¼ì„ ì„ íƒí•˜ì„¸ìš”." + +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "불러오는 중입니다. 화장실ì´ë¼ë„ 다녀오시죠?" + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "초기화 할까요?" + +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "피드 구ë…하는중..." + +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "" + +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "" + +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "모든 ê¸€ì„ ì½ìŒ 표시 할까요?" + +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "모든 피드를 ì½ìŒ 표시중..." + +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "먼저 ë©”ì¼ í”ŒëŸ¬ê·¸ì¸ì„ 켜세요." + +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "ì´ í˜•ì‹ì˜ 피드는 편집할 수 없습니다." + +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "먼저 embed_original 플러그ì¸ì„ 켜세요." + +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "" + +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "ì´ í˜•ì‹ì˜ 피드는 ì ìˆ˜ë¥¼ 새로 매길 수 없습니다." + +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "피드를 먼저 ì„ íƒí•˜ì„¸ìš”." + +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "%sì˜ ê¸€ì˜ ì ìˆ˜ë¥¼ 다시 매길까요?" + +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "글 ì ìˆ˜ 다시 매기는중..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "ì„ íƒëœ ê¸€ì´ ì—†ìŠµë‹ˆë‹¤." + +#: js/viewfeed.js:1018 +#, fuzzy, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "%sì—서 ì„ íƒëœ %dê°œ ê¸€ì„ ì‚­ì œ 할까요?" + +#: js/viewfeed.js:1020 +#, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "ì„ íƒëœ %dê°œ ê¸€ì„ ì‚­ì œí• ê¹Œìš”?" + +#: js/viewfeed.js:1062 +#, fuzzy, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "%sì—서 ì„ íƒëœ %dê°œ ê¸€ì„ ë³´ê´€ 처리 할까요?" + +#: js/viewfeed.js:1065 +#, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "ë³´ê´€ ì²˜ë¦¬ëœ %dê°œì˜ ê¸€ì„ ë‹¤ì‹œ 옮길까요?" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "" + +#: js/viewfeed.js:1112 +#, fuzzy, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "%sì—서 ì„ íƒëœ %dê°œ ê¸€ì„ ì½ìŒ 표시 할까요?" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "글 태그 편집" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "ê¸€ì˜ íƒœê·¸ 저장 중..." + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +#, fuzzy +msgid "Click to open next unread feed." +msgstr "í´ë¦­í•˜ì—¬ 피드 편집" + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "ì›ë³¸ 글 열기" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "ë¼ë²¨ ì ìš©" + +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "ë¼ë²¨ 제거" + +#: js/viewfeed.js:2159 +#, fuzzy +msgid "Select articles in group" +msgstr "ì»¤ì„œìœ„ì¹˜ì˜ ê¸€ ì„ íƒ" + +#: js/viewfeed.js:2168 +#, fuzzy +msgid "Mark group as read" +msgstr "ì½ìŒ 표시" + +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "피드 ì½ìŒ 표시" + +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "ì„ íƒëœ ê¸€ì˜ ì ìˆ˜ë¥¼ 새로 매기세요:" + +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "ì´ ê¸€ì˜ ì ìˆ˜ë¥¼ 새로 매기세요:" + +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "글 URL:" + +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "" + +#: plugins/af_psql_trgm/init.js:11 +#, fuzzy +msgid "Related articles" +msgstr "記事を消去ã™ã‚‹" + +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "글 노트 저장중..." + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "" + +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "먼저 파ì¼ì„ ì„ íƒí•˜ì„¸ìš”." + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "ì´ë©”ì¼ë¡œ 글 전달" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "ë°ì´í„° 내보내기" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "" +msgstr[1] "" + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "ë°ì´í„° 불러오기" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "먼저 파ì¼ì„ ì„ íƒí•˜ì„¸ìš”." + +#: plugins/shorten_expanded/init.js:37 +msgid "Click to expand article" +msgstr "ê¸€ì„ íŽ¼ì³ë³´ë ¤ë©´ í´ë¦­í•˜ì„¸ìš”" + +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" + +#: plugins/mail/mail.js:38 +#, fuzzy +msgid "Your message has been sent." +msgstr "ê°œì¸ ì •ë³´ê°€ 저장ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "ë§í¬ 항목" + +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "항목 편집" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "ì„ íƒëœ í•­ëª©ì„ ì œê±°í• ê¹Œìš”?" + +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "ì„ íƒëœ 항목 제거중..." + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "ì„ íƒëœ í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤." + +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "í•­ëª©ì„ í•˜ë‚˜ë§Œ ì„ íƒí•˜ì„¸ìš”." + +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "피드 ë°ì´í„° 정리" + +#: plugins/af_sort_bayes/init.js:70 +#, fuzzy +msgid "Classifier information" +msgstr "フィード情報:" + +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "URL로 글 공유" + +#: plugins/share/share.js:14 +#, fuzzy +msgid "Generate new share URL for this article?" +msgstr "ì´ ê¸€ì˜ ì ìˆ˜ë¥¼ 새로 매기세요:" + +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "URL 변경중..." + +#: plugins/share/share.js:55 +#, fuzzy +msgid "Remove sharing for this article?" +msgstr "ì´ ê¸€ì˜ íƒœê·¸ 편집" + +#: plugins/share/share.js:59 +#, fuzzy +msgid "Trying to unshare..." +msgstr "주소 변경중..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "" + +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "URL 지우는중..." + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "" + +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "%sì˜ ëª¨ë“  ê¸€ì„ ì½ìŒ 표시 할까요?" + +#: js/feedlist.js:435 +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "하루 ì´ìƒ 지난 %sì˜ ëª¨ë“  ê¸€ì„ ì½ìŒ 표시 할까요?" + +#: js/feedlist.js:438 +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "1ì£¼ì¼ ì´ìƒ 지난 %sì˜ ëª¨ë“  ê¸€ì„ ì½ìŒ 표시 할까요?" + +#: js/feedlist.js:441 +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "2ì£¼ì¼ ì´ìƒ 지난 %sì˜ ëª¨ë“  ê¸€ì„ ì½ìŒ 표시 할까요?" + +#: js/functions.js:615 +msgid "Error explained" +msgstr "" + +#: js/functions.js:697 +msgid "Upload complete." +msgstr "업로드 완료." + +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "ì €ìž¥ëœ í”¼ë“œ ì•„ì´ì½˜ì„ 제거할까요?" + +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "피드 ì•„ì´ì½˜ 제거중..." + +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "피드 ì•„ì´ì½˜ì´ 제거ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "업로드할 ì´ë¯¸ì§€ 파ì¼ì„ ì„ íƒí•˜ì„¸ìš”." + +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "" + +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "업로드중입니다. ìž ê¹ ì›¹ì„œí•‘í•˜ê³  계세요." + +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "ë¼ë²¨ ì´ë¦„ì„ ìž…ë ¥í•˜ì„¸ìš”:" + +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "ë¼ë²¨ ìƒì„± 실패: ì´ë¦„ì„ ìž…ë ¥í•˜ì„¸ìš”." + +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "피드 구ë…" + +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "" + +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "%s를 구ë…함" + +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "" + +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "" + +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "ì„ íƒëœ 피드로 확장" + +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "URL %s를 다운로드 í•  수 없습니다." + +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "" + +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "ì´ë¯¸ 구ë…ì¤‘ì¸ í”¼ë“œìž…ë‹ˆë‹¤." + +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "규칙 편집" + +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "피드 편집" + +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "기타 피드" + +#: js/functions.js:1878 +msgid "Help" +msgstr "ë„움ë§" + +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "" + +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "카테고리 제거중..." + +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "ì„ íƒí•œ 카테고리를 삭제할까요?" + +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "카테고리 삭제중..." + +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "ì„ íƒëœ 카테고리가 없습니다." + +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "카테고리 제목:" + +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "카테고리 ìƒì„±ì¤‘..." + +#: js/prefs.js:1165 +#, fuzzy +msgid "Feeds without recent updates" +msgstr "ì—…ë°ì´íЏ 오류가 있는 피드" + +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "현재 OPML 공개 주소를 새 주소로 êµì²´í• ê¹Œìš”?" + +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "피드 정리중..." + +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "ì„ íƒí•œ 피드ì—서 ê¸€ì˜ ì ìˆ˜ë¥¼ 다시 매길까요?" + +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "ì„ íƒëœ í”¼ë“œì˜ ì ìˆ˜ 다시 매기는중..." + +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "모든 ê¸€ì— ì ìˆ˜ë¥¼ 다시 매기겠습니까? (한참 걸릴 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.)" + +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "피드 ì ìˆ˜ 다시매기는 중..." + +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "ì„ íƒëœ ë¼ë²¨ì˜ ìƒ‰ì„ ê¸°ë³¸ê°’ìœ¼ë¡œ 초기화 할까요?" + +#: js/prefs.js:1403 +#, fuzzy +msgid "Settings Profiles" +msgstr "프로필 ìƒì„±ì¤‘..." + +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "" + +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "ì„ íƒëœ 프로필 제거중..." + +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "ì„ íƒëœ í”„ë¡œí•„ì´ ì—†ìŠµë‹ˆë‹¤." + +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "ì„ íƒëœ í”„ë¡œí•„ì„ í™œì„±í™” 할까요?" + +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "활성화할 í”„ë¡œí•„ì„ ì„ íƒí•˜ì„¸ìš”." + +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "프로필 ìƒì„±ì¤‘..." + +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "" + +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "ìƒì„±ëœ URLì´ ì§€ì›Œì¡ŒìŠµë‹ˆë‹¤." + +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "ë¼ë²¨ 편집기" + +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "카테고리ì—서는 êµ¬ë… í•´ì œ í•  수 없습니다." + +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "검색 취소" + +#: js/viewfeed.js:174 +#, fuzzy +msgid "New articles found, reload feed to continue." +msgstr "표시할 ê¸€ì´ ì—†ìŠµë‹ˆë‹¤." + +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "중요 표시 í•´ì œ" + +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "중요 표시" + +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "공개ë˜ì§€ ì•Šì€ ê¸€" + +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "글 공개" + +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "%dê°œì˜ ê¸€ì´ ì„ íƒë˜ì—ˆìŠµë‹ˆë‹¤." + +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "ì„ íƒëœ ê¸€ì´ ì—†ìŠµë‹ˆë‹¤." + +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "표시할 ê¸€ì´ ì—†ìŠµë‹ˆë‹¤." + +#: js/viewfeed.js:1452 +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "%d ê¸€ì„ ì½ìŒ 표시 할까요?" + +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "글 URL 표시" + +#~ msgid "Select by tags..." +#~ msgstr "태그별 ì„ íƒ..." + +#~ msgid "Limit search to:" +#~ msgstr "검색 제한:" + +#~ msgid "This feed" +#~ msgstr "ì´ í”¼ë“œ" + +#~ msgid "Old password cannot be blank." +#~ msgstr "현재 암호를 입력하세요." + +#~ msgid "New password cannot be blank." +#~ msgstr "새 암호를 입력하세요." + +#~ msgid "Entered passwords do not match." +#~ msgstr "ìž…ë ¥ëœ ì•”í˜¸ê°€ ì¼ì¹˜í•˜ì§€ 않습니다." + +#~ msgid "Match:" +#~ msgstr "ì¼ì¹˜:" + +#~ msgid "All tags." +#~ msgstr "모든 태그:" + +#~ msgid "Display entries" +#~ msgstr "제목 표시" + +#, fuzzy +#~ msgid "Select item(s) by tags" +#~ msgstr "태그별 ì„ íƒ..." + +#~ msgid "Unread First" +#~ msgstr "ì½ì§€ ì•Šì€ ë‚´ìš© 먼저" + +#~ msgid "Unknown option: %s" +#~ msgstr "알 수 없는 옵션: %s" + +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "Tiny Tiny RSS 새 ë²„ì „ì´ ë‚˜ì™”ìŠµë‹ˆë‹¤!" + +#, fuzzy +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "세션 유효성 검사 실패(ìž˜ëª»ëœ IP)" + +#~ msgid "Assign articles to labels automatically" +#~ msgstr "ê¸€ì— ìžë™ìœ¼ë¡œ ë¼ë²¨ 추가" + +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "새 ë²„ì „ì˜ Tiny Tiny RSS를 사용할 수 있습니다. (%s)" + +#~ msgid "See the release notes" +#~ msgstr "릴리즈 노트 확ì¸í•˜ê¸°" + +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Tiny Tiny RSS ì—…ë°ì´íЏ" + +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "ì„¤ì¹˜ëœ Tiny Tiny RSSê°€ 최신입니다." + +#, fuzzy +#~ msgid "Force update" +#~ msgstr "ì—…ë°ì´íЏ 실행" + +#~ msgid "Ready to update." +#~ msgstr "ì—…ë°ì´íЏ 준비 완료." + +#~ msgid "Start update" +#~ msgstr "ì—…ë°ì´íЏ 시작" + +#~ msgid "New version available!" +#~ msgstr "새 버전 나왔어요!" + +#~ msgid "Select:" +#~ msgstr "ì„ íƒ" + +#~ msgid "mark as read" +#~ msgstr "ì½ìŒ 표시" + +#~ msgid "Change password to" +#~ msgstr "암호 변경:" + +#~ msgid "E-mail: " +#~ msgstr "ì´ë©”ì¼:" + +#~ msgid "Login field cannot be blank." +#~ msgstr "ë¡œê·¸ì¸ ì •ë³´ë¥¼ 입력하세요." + +#~ msgid "Saving user..." +#~ msgstr "ì‚¬ìš©ìž ì €ìž¥ì¤‘..." + +#~ msgid "Toggle marked" +#~ msgstr "ë§ˆí¬ í‘œì‹œ/제거" + +#, fuzzy +#~ msgid "(Un)hide empty categories" +#~ msgstr "カテゴリーã®ç·¨é›†" + +#, fuzzy +#~ msgid "Published articles and generated feeds" +#~ msgstr "é¸æŠžã—ãŸãƒ•ィードã®è¨˜äº‹ã®ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã—ã¾ã™ã‹?" + +#, fuzzy +#~ msgid "Articles shared by URL" +#~ msgstr "è¨˜äº‹ã‚’ãŠæ°—ã«å…¥ã‚Šã«ã™ã‚‹" + +#~ msgid "These feeds have not been updated because of errors:" +#~ msgstr "エラーã®ãŸã‚ã€ãƒ•ã‚£ãƒ¼ãƒ‰ã¯æ›´æ–°ã•れã¾ã›ã‚“ã§ã—ãŸ:" + +#~ msgid "Hello," +#~ msgstr "よã†ã“ãã€" + +#, fuzzy +#~ msgid "Enable categories" +#~ msgstr "フィードカテゴリーを有効ã«ã™ã‚‹" + +#, fuzzy +#~ msgid "Browse categories like folders" +#~ msgstr "カテゴリーã®é †åºã‚’リセットã™ã‚‹" + +#, fuzzy +#~ msgid "Show images in posts" +#~ msgstr "記事内ã«ç”»åƒã‚’表示ã—ãªã„" + +#, fuzzy +#~ msgid "Hide read articles and feeds" +#~ msgstr "読んã ãƒ•ィードを隠ã™/å†è¡¨ç¤ºã™ã‚‹" + +#, fuzzy +#~ msgid "Sort feeds by unread count" +#~ msgstr "未読記事数ã«ã‚ˆã‚‹ãƒ•ィードã®ä¸¦ã³æ›¿ãˆ" + +#, fuzzy +#~ msgid "Article archive" +#~ msgstr "è¨˜äº‹ã®æ—¥ä»˜" + +#, fuzzy +#~ msgid "Example Pane" +#~ msgstr "例" + +#, fuzzy +#~ msgid "Set value" +#~ msgstr "ãŠæ°—ã«å…¥ã‚Šã«è¨­å®šã™ã‚‹" + +#, fuzzy +#~ msgid "Mark %d displayed article as read?" +#~ msgid_plural "Mark %d displayed articles as read?" +#~ msgstr[0] "%d ä»¶ã®ãƒžãƒ¼ã‚¯ã—ãŸè¨˜äº‹ã‚’既読ã¨ã—ã¦è¨­å®šã—ã¾ã™ã‹?" +#~ msgstr[1] "%d ä»¶ã®ãƒžãƒ¼ã‚¯ã—ãŸè¨˜äº‹ã‚’既読ã¨ã—ã¦è¨­å®šã—ã¾ã™ã‹?" + +#, fuzzy +#~ msgid "Error: unable to load article." +#~ msgstr "エラー: OPML ファイルをアップロードã—ã¦ãã ã•ã„。" + +#, fuzzy +#~ msgid "Click to expand article." +#~ msgstr "é–‹ã„ãŸè¨˜äº‹ã®ã‚¯ãƒªãƒƒã‚¯" + +#, fuzzy +#~ msgid "%d more..." +#~ msgid_plural "%d more..." +#~ msgstr[0] "ヘルプを読ã¿è¾¼ã‚“ã§ã„ã¾ã™..." +#~ msgstr[1] "ヘルプを読ã¿è¾¼ã‚“ã§ã„ã¾ã™..." + +#, fuzzy +#~ msgid "No unread feeds." +#~ msgstr "読んã ãƒ•ィードを隠ã™/å†è¡¨ç¤ºã™ã‚‹" + +#, fuzzy +#~ msgid "Load more..." +#~ msgstr "ヘルプを読ã¿è¾¼ã‚“ã§ã„ã¾ã™..." + +#~ msgid "Switch to digest..." +#~ msgstr "ダイジェストã«ç§»è¡Œ..." + +#, fuzzy +#~ msgid "Show tag cloud..." +#~ msgstr "タグクラウド" + +#, fuzzy +#~ msgid "Click to play" +#~ msgstr "クリックã§è¡¨ç¤º" + +#~ msgid "Play" +#~ msgstr "表示" + +#, fuzzy +#~ msgid "Visit the website" +#~ msgstr "オフィシャルサイトã«è¨ªå•ã™ã‚‹" + +#~ msgid "Select theme" +#~ msgstr "ãƒ†ãƒ¼ãƒžã‚’é¸æŠžã™ã‚‹" + +#, fuzzy +#~ msgid "Playing..." +#~ msgstr "フィード一覧を読ã¿è¾¼ã‚“ã§ã„ã¾ã™..." + +#, fuzzy +#~ msgid "Default interval between feed updates" +#~ msgstr "ãƒ•ã‚£ãƒ¼ãƒ‰ã®æ›´æ–°ã¾ã§ã®æ¨™æº–é–“éš” (å˜ä½:分)" + +#~ msgid "Could not update database" +#~ msgstr "データベースを更新ã§ãã¾ã›ã‚“" + +#~ msgid "Could not find necessary schema file, need version:" +#~ msgstr "å¿…è¦ãªã‚¹ã‚­ãƒ¼ãƒžãƒ•ァイルを見ã¤ã‘られã¾ã›ã‚“ã§ã—ãŸã€‚次ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒå¿…è¦ã§ã™:" + +#~ msgid ", found: " +#~ msgstr ", 以下ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ: " + +#~ msgid "Tiny Tiny RSS database is up to date." +#~ msgstr "Tiny Tiny RSS ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’æ›´æ–°ã—ã¾ã—ãŸã€‚" + +#~ msgid "Please backup your database before proceeding." +#~ msgstr "実行å‰ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã‚’ã—ã¦ãã ã•ã„。" + +#~ msgid "Your Tiny Tiny RSS database needs update to the latest version (%d to %d)." +#~ msgstr "Tiny Tiny RSS ã¯æœ€æ–°ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«æ›´æ–°ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ (%d ã‹ã‚‰ %d)。" + +#~ msgid "Performing updates..." +#~ msgstr "更新を実行ã—ã¦ã„ã¾ã™..." + +#~ msgid "Updating to version %d..." +#~ msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %d を確èªã—ã¦ã„ã¾ã™..." + +#~ msgid "Checking version... " +#~ msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’確èªã—ã¦ã„ã¾ã™..." + +#~ msgid "OK!" +#~ msgstr "OK!" + +#~ msgid "ERROR!" +#~ msgstr "エラー!" + +#, fuzzy +#~ msgid "Finished. Performed %d update up to schema version %d." +#~ msgid_plural "Finished. Performed %d updates up to schema version %d." +#~ msgstr[0] "完了ã—ã¾ã—ãŸã€‚%d 個ã®ãƒ†ãƒ¼ãƒ–ルをスキーマーãƒãƒ¼ã‚¸ãƒ§ãƒ³%d ã«æ›´æ–°ã—ã¾ã—ãŸã€‚" +#~ msgstr[1] "完了ã—ã¾ã—ãŸã€‚%d 個ã®ãƒ†ãƒ¼ãƒ–ルをスキーマーãƒãƒ¼ã‚¸ãƒ§ãƒ³%d ã«æ›´æ–°ã—ã¾ã—ãŸã€‚" + +#~ msgid "Your database schema is from a newer version of Tiny Tiny RSS." +#~ msgstr "Databaseスキーマã¯ã€Tiny Tiny RSSã®æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‹ã‚‰ã®ã‚‚ã®ã§ã™ã€‚" + +#~ msgid "Found schema version: %d, required: %d." +#~ msgstr "スキーマãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒ: %d, ã§ã—ãŸã€‚ 以下ãŒå¿…è¦ã§ã™: %d." + +#~ msgid "Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer version and continue." +#~ msgstr "スキーマアップグレードãŒã§ãã¾ã›ã‚“。Tiny Tiny RSSã‚’æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«æ›´æ–°ã—ã¦ã‹ã‚‰ç¶šã‘ã¦ãã ã•ã„。" + +#~ msgid "Title or Content" +#~ msgstr "題åã‹å†…容" + +#~ msgid "Link" +#~ msgstr "リンク" + +#~ msgid "Content" +#~ msgstr "内容" + +#~ msgid "Article Date" +#~ msgstr "è¨˜äº‹ã®æ—¥ä»˜" + +#~ msgid "Set starred" +#~ msgstr "ãŠæ°—ã«å…¥ã‚Šã«è¨­å®šã™ã‚‹" + +#~ msgid "Assign tags" +#~ msgstr "ã‚¿ã‚°ã®å‰²ã‚Šå½“ã¦" + +#~ msgid "Modify score" +#~ msgstr "スコアを変更ã™ã‚‹" + +#, fuzzy +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "å¤ã„パスワードãŒä¸æ­£ç¢ºã§ã™ã€‚" + +#, fuzzy +#~ msgid "Date syntax is incorrect." +#~ msgstr "å¤ã„パスワードãŒä¸æ­£ç¢ºã§ã™ã€‚" + +#~ msgid "Notice" +#~ msgstr "通知" + +#, fuzzy +#~ msgid "Tag Cloud" +#~ msgstr "タグクラウド" + +#~ msgid "Mark all visible articles in %s as read?" +#~ msgstr "「%sã€ã®ã™ã¹ã¦ã®å¯è¦–記事を既読ã«è¨­å®šã—ã¾ã™ã‹?" + +#~ msgid "Form secret key incorrect. Please enable cookies and try again." +#~ msgstr "ã‚·ãƒ¼ã‚¯ãƒ¬ãƒƒãƒˆã‚­ãƒ¼ãŒæ­£ã—ãã‚りã¾ã›ã‚“。クッキーを有効ã«ã—ã¦å†åº¦å®Ÿè¡Œã—ã¦ãã ã•ã„。" + +#~ msgid "Score" +#~ msgstr "スコア" + +#~ msgid "Completed." +#~ msgstr "完了ã—ã¾ã—ãŸ" + +#, fuzzy +#~ msgid "Share on identi.ca" +#~ msgstr "題å" + +#, fuzzy +#~ msgid "Flattr this article." +#~ msgstr "è¨˜äº‹ã‚’ãŠæ°—ã«å…¥ã‚Šã«ã™ã‚‹" + +#, fuzzy +#~ msgid "Share on Google+" +#~ msgstr "題å" + +#, fuzzy +#~ msgid "Share on Twitter" +#~ msgstr "題å" + +#, fuzzy +#~ msgid "Show additional preferences" +#~ msgstr "設定を終了ã™ã‚‹" + +#, fuzzy +#~ msgid "Back to feeds" +#~ msgstr "編集ã™ã‚‹ã«ã¯ã‚¯ãƒªãƒƒã‚¯" + +#~ msgid "Updated" +#~ msgstr "更新日時" + +#~ msgid "Notifying %s." +#~ msgstr "%s ã®é€šçŸ¥ä¸­ã§ã™ã€‚" + +#~ msgid "Yes" +#~ msgstr "ã¯ã„" + +#~ msgid "No" +#~ msgstr "ã„ã„ãˆ" + +#~ msgid "Comments?" +#~ msgstr "コメントã—ã¾ã™ã‹?" + +#~ msgid "Move between feeds" +#~ msgstr "フィード間ã§ç§»å‹•ã™ã‚‹" + +#~ msgid "Move between articles" +#~ msgstr "記事間ã§ç§»å‹•ã™ã‚‹" + +#~ msgid "Active article actions" +#~ msgstr "有効ãªè¨˜äº‹ã®æ“作" + +#, fuzzy +#~ msgid "Dismiss read articles" +#~ msgstr "読んã è¨˜äº‹ãŒè¦‹ãˆãªã„よã†ã«éš ã™" + +#~ msgid "Other actions" +#~ msgstr "ãã®ä»–ã®æ“作" + +#~ msgid "Display this help dialog" +#~ msgstr "ã“ã®ãƒ˜ãƒ«ãƒ—ダイアログã®è¡¨ç¤º" + +#, fuzzy +#~ msgid "Multiple articles actions" +#~ msgstr "ã™ã¹ã¦ã®è¨˜äº‹" + +#, fuzzy +#~ msgid "Select starred articles" +#~ msgstr "未読記事を削除ã™ã‚‹" + +#~ msgid "Feed actions" +#~ msgstr "フィードæ“作" + +#~ msgid "Press any key to close this window." +#~ msgstr "何ã‹ã‚­ãƒ¼ã‚’押ã—ã¦ã€ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‰ã˜ã¦ãã ã•ã„。" + +#~ msgid "My Feeds" +#~ msgstr "自分ã®ãƒ•ィード" + +#~ msgid "Other Feeds" +#~ msgstr "ãã®ä»–ã®ãƒ•ィード" + +#~ msgid "Panel actions" +#~ msgstr "パãƒãƒ«æ“作" + +#~ msgid "Top 25 feeds" +#~ msgstr "トップ 25 フィード" + +#~ msgid "Edit feed categories" +#~ msgstr "フィードカテゴリーを編集ã™ã‚‹" + +#, fuzzy +#~ msgid "Open article in new tab" +#~ msgstr "æ–°ã—ã„ウィンドウã§è¨˜äº‹ã‚’é–‹ã" + +#~ msgid "Right-to-left content" +#~ msgstr "å³ã‹ã‚‰å·¦ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„" + +#, fuzzy +#~ msgid "Cache content locally" +#~ msgstr "ローカルã«ç”»åƒã‚’キャッシュã™ã‚‹" + +#, fuzzy +#~ msgid "Loading..." +#~ msgstr "フィード一覧を読ã¿è¾¼ã‚“ã§ã„ã¾ã™..." + +#, fuzzy +#~ msgid "View in a tt-rss tab" +#~ msgstr "æ–°ã—ã„ウィンドウã§è¨˜äº‹ã‚’é–‹ã" + +#~ msgid "Magpie" +#~ msgstr "Magpie" + +#~ msgid "SimplePie" +#~ msgstr "SimplePie" + +#, fuzzy +#~ msgid "match on" +#~ msgstr "対象項目:" + +#~ msgid "Title or content" +#~ msgstr "題åã‹å†…容" + +#, fuzzy +#~ msgid "Your request could not be completed." +#~ msgstr "登録情報ãŒå®Œæˆã—ã¦ã„ã¾ã›ã‚“。" + +#, fuzzy +#~ msgid "Can't update this kind of feed." +#~ msgstr "フィードã®ã“ã®ç¨®é¡žã‚’消去ã§ãã¾ã›ã‚“。" + +#, fuzzy +#~ msgid "Original article" +#~ msgstr "å…ƒã®è¨˜äº‹å†…容を表示ã™ã‚‹" + +#, fuzzy +#~ msgid "Update feed" +#~ msgstr "ã™ã¹ã¦ã®ãƒ•ã‚£ãƒ¼ãƒ‰ã®æ›´æ–°" + +#, fuzzy +#~ msgid "With subcategories" +#~ msgstr "カテゴリーã®ç·¨é›†" + +#, fuzzy +#~ msgid "
  • Adding category %s.
  • " +#~ msgstr "カテゴリー %s ã®è¿½åР䏭ã§ã™ã€‚" + +#, fuzzy +#~ msgid "OK" +#~ msgstr "OK!" + +#~ msgid "before" +#~ msgstr "å‰" + +#~ msgid "after" +#~ msgstr "後" + +#, fuzzy +#~ msgid "Apply to category" +#~ msgstr "カテゴリーã®å ´æ‰€:" + +#~ msgid "Category $%s already exists in the database." +#~ msgstr "カテゴリー %s ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚" + +#~ msgid "No feed categories defined." +#~ msgstr "フィードカテゴリーãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“。" + +#, fuzzy +#~ msgid "Remove selected categories" +#~ msgstr "é¸æŠžã•れãŸã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’削除ã—ã¾ã™ã‹?" + +#, fuzzy +#~ msgid "Twitter" +#~ msgstr "題å" + +#, fuzzy +#~ msgid "Clear stored credentials" +#~ msgstr "ãƒ•ã‚£ãƒ¼ãƒ‰ãƒ‡ãƒ¼ã‚¿ã®æ¶ˆåŽ»" + +#~ msgid "Created filter %s" +#~ msgstr "フィルター %s を作æˆã—ã¾ã—ãŸ" + +#~ msgid "Attachment:" +#~ msgstr "添付:" + +#~ msgid "Subscribing to feed..." +#~ msgstr "フィードを購読ã—ã¦ã„ã¾ã™..." + +#, fuzzy +#~ msgid "Filter Test Results" +#~ msgstr "フィルター表ç¾" + +#, fuzzy +#~ msgid "Feed Categories" +#~ msgstr "カテゴリー:" + +#~ msgid "When \"Mark as read\" button is clicked in toolbar, automatically open next feed with unread articles." +#~ msgstr "ツールãƒãƒ¼ã®ã€Œæ—¢èª­ã«è¨­å®šã™ã‚‹ã€ã‚’クリックã—ãŸã¨ãã€è‡ªå‹•çš„ã«æ¬¡ã®ãƒ•ã‚£ãƒ¼ãƒ‰ã®æœªèª­è¨˜äº‹ã‚’é–‹ãã¾ã™ã€‚" + +#, fuzzy +#~ msgid "Importing using DOMXML." +#~ msgstr "OPML ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆä¸­ (DOMXML 機能拡張を用ã„ã¦)..." + +#, fuzzy +#~ msgid "Importing using DOMDocument." +#~ msgstr "OPML ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆä¸­ (DOMDocument 機能拡張を用ã„ã¦)..." + +#~ msgid "DOMXML extension is not found. It is required for PHP versions below 5." +#~ msgstr "DOMXML 機能拡張ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。PHP ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 5 未満ã¯ãã‚Œã‚’è¦æ±‚ã—ã¾ã™ã€‚" + +#, fuzzy +#~ msgid "Cache images locally (SimplePie only)" +#~ msgstr "ローカルã«ç”»åƒã‚’キャッシュã™ã‚‹" + +#, fuzzy +#~ msgid "Publish" +#~ msgstr "公開済ã¿" + +#~ msgid "Changed password of user %s." +#~ msgstr "ユーザー %s ã®ãƒ‘スワードを変更ã—ã¾ã—ãŸã€‚" + +#~ msgid "Content filtering" +#~ msgstr "コンテンツフィルタリング" + +#~ msgid "See also:" +#~ msgstr "å‚考:" + +#, fuzzy +#~ msgid "Remove:" +#~ msgstr "削除" + +#, fuzzy +#~ msgid "Assign:" +#~ msgstr "ラベルã®å‰²ã‚Šå½“ã¦:" + +#~ msgid "Toggle category reordering mode" +#~ msgstr "カテゴリーã®ä¸¦ã³æ›¿ãˆãƒ¢ãƒ¼ãƒ‰ã®åˆ‡ã‚Šæ›¿ãˆ" + +#~ msgid "Update all feeds" +#~ msgstr "ã™ã¹ã¦ã®ãƒ•ã‚£ãƒ¼ãƒ‰ã®æ›´æ–°" + +#~ msgid "Sort by name or unread count" +#~ msgstr "åå‰ã‹æœªèª­æ•°ã§ä¸¦ã³æ›¿ãˆã‚‹" + +#, fuzzy +#~ msgid "feeds" +#~ msgstr "フィード" + +#, fuzzy +#~ msgid "headlines" +#~ msgstr "最終ヘッドライン:" + +#~ msgid "Update post on checksum change" +#~ msgstr "ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã®å¤‰æ›´ã§æŠ•稿を更新ã™ã‚‹" + +#~ msgid "Set articles as unread on update" +#~ msgstr "æ›´æ–°æ™‚ã«æœªèª­ã¨ã—ã¦è¨˜äº‹ã‚’設定ã™ã‚‹" + +#~ msgid "Importing OPML (using DOMXML extension)..." +#~ msgstr "OPML ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆä¸­ (DOMXML 機能拡張を用ã„ã¦)..." + +#~ msgid "Importing OPML (using DOMDocument extension)..." +#~ msgstr "OPML ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆä¸­ (DOMDocument 機能拡張を用ã„ã¦)..." + +#~ msgid "Error: can't find body element." +#~ msgstr "エラー: 本文è¦ç´ ã‚’見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" + +#, fuzzy +#~ msgid "No profiles selected." +#~ msgstr "é¸æŠžã•れãŸè¨˜äº‹ã¯ã‚りã¾ã›ã‚“。" + +#~ msgid "Unknown error" +#~ msgstr "未知ã®ã‚¨ãƒ©ãƒ¼" + +#~ msgid "Could not display feed (query failed). Please check label match syntax or local configuration." +#~ msgstr "フィードを表示ã§ãã¾ã›ã‚“ (å•ã„åˆã‚ã›ã®å¤±æ•—)ã€‚ãƒ©ãƒ™ãƒ«ä¸€è‡´ã®æ–‡æ³•ã‹ãƒ­ãƒ¼ã‚«ãƒ«ã®è¨­å®šã‚’確èªã—ã¦ãã ã•ã„。" + +#~ msgid "Publish article with a note" +#~ msgstr "ノートã¨è¨˜äº‹ã‚’公開ã™ã‚‹" + +#, fuzzy +#~ msgid "View article" +#~ msgstr "記事フィルター" + +#, fuzzy +#~ msgid "Server error while trying to query feed URLs." +#~ msgstr "ã•らã«ãƒ˜ãƒƒãƒ‰ãƒ©ã‚¤ãƒ³ã‚’読ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚" + +#, fuzzy +#~ msgid "Subscribed to %d feed(s)." +#~ msgstr "フィードを購読ã™ã‚‹:" + +#, fuzzy +#~ msgid "Fatal Exception" +#~ msgstr "致命的ãªã‚¨ãƒ©ãƒ¼" + +#~ msgid "audio/mpeg" +#~ msgstr "audio/mpeg" + +#~ msgid "Enable offline reading" +#~ msgstr "オフライン処ç†ã‚’有効ã«ã™ã‚‹" + +#~ msgid "Synchronize new articles for offline reading using Google Gears." +#~ msgstr "Google Gears を用ã„ãŸã‚ªãƒ•ライン処ç†ã®æ–°è¦è¨˜äº‹ã‚’åŒæœŸã—ã¾ã™ã€‚" + +#~ msgid "Default article limit" +#~ msgstr "標準ã®è¨˜äº‹åˆ¶é™" + +#~ msgid "Enable search toolbar" +#~ msgstr "検索ツールãƒãƒ¼ã‚’有効ã«ã™ã‚‹" + +#~ msgid "Open article links in new browser window" +#~ msgstr "æ–°ã—ã„ブラウザーã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã§è¨˜äº‹ã®ãƒªãƒ³ã‚¯ã‚’é–‹ã" + +#~ msgid "Link to user stylesheet to override default style, disabled if empty." +#~ msgstr "標準ã®ã‚¹ã‚¿ã‚¤ãƒ«ã‚’上書ãã™ã‚‹ã‚¹ã‚¿ã‚¤ãƒ«ã‚·ãƒ¼ãƒˆã¸ã®ãƒªãƒ³ã‚¯ã§ã€ç©ºã®å ´åˆã¯ç„¡åйã§ã™ã€‚" + +#~ msgid "Hide feedlist" +#~ msgstr "フィード一覧を隠ã™" + +#~ msgid "Show additional information in feedlist" +#~ msgstr "フィード一覧ã®è¿½åŠ æƒ…å ±ã‚’è¡¨ç¤ºã™ã‚‹" + +#~ msgid "Enable inline MP3 player" +#~ msgstr "インライン MP3 プレイヤーを有効ã«ã™ã‚‹" + +#, fuzzy +#~ msgid "Activate" +#~ msgstr "è¨˜äº‹ã®æ—¥ä»˜" + +#~ msgid "Feed Browser" +#~ msgstr "フィードブラウザー" + +#~ msgid "Update Errors" +#~ msgstr "更新エラー" + +#~ msgid "Show last article times" +#~ msgstr "最後ã®è¨˜äº‹ã®æ™‚間を表示ã™ã‚‹" + +#~ msgid "Last Article" +#~ msgstr "最後ã®è¨˜äº‹" + +#, fuzzy +#~ msgid "You don't have any subscribed feeds." +#~ msgstr "カテゴリーã‹ã‚‰è³¼èª­ã‚’ã‚„ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。" + +#, fuzzy +#~ msgid "No matching feeds found." +#~ msgstr "一致ã™ã‚‹ãƒ•ィルターãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" + +#~ msgid "Filter Editor" +#~ msgstr "フィルターエディター" + +#~ msgid "Params" +#~ msgstr "パラメーター" + +#~ msgid "No filters defined." +#~ msgstr "フィルターãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“。" + +#~ msgid "Click to change color" +#~ msgstr "色を変ãˆã‚‹ãŸã‚ã«ã‚¯ãƒªãƒƒã‚¯" + +#~ msgid "No labels defined." +#~ msgstr "ラベルãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“。" + +#~ msgid "No matching labels found." +#~ msgstr "一致ã™ã‚‹ãƒ©ãƒ™ãƒ«ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" + +#~ msgid "custom color:" +#~ msgstr "カスタム色" + +#~ msgid "Can't add filter: nothing to match on." +#~ msgstr "フィルターを追加ã§ãã¾ã›ã‚“: 一致ã™ã‚‹ã‚‚ã®ãŒã‚りã¾ã›ã‚“。" + +#~ msgid "Can't subscribe: no feed URL given." +#~ msgstr "購読ã§ãã¾ã›ã‚“: フィード URL ãŒå…¥åŠ›ã•れã¦ã„ã¾ã›ã‚“。" + +#~ msgid "Error: No feed URL given." +#~ msgstr "エラー: フィード㮠URL ãŒå…¥åŠ›ã•れã¦ã„ã¾ã›ã‚“。" + +#~ msgid "Error: Invalid feed URL." +#~ msgstr "エラー: フィード㮠URL ãŒæ­£ã—ãã‚りã¾ã›ã‚“。" + +#, fuzzy +#~ msgid "Can't add profile: no name specified." +#~ msgstr "カテゴリーãŒè¿½åŠ ã§ãã¾ã›ã‚“: åå‰ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“。" + +#~ msgid "Can't add category: no name specified." +#~ msgstr "カテゴリーãŒè¿½åŠ ã§ãã¾ã›ã‚“: åå‰ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“。" + +#~ msgid "Save current configuration?" +#~ msgstr "ç¾åœ¨ã®è¨­å®šã‚’ä¿å­˜ã—ã¾ã™ã‹?" + +#~ msgid "Please enter new label foreground color:" +#~ msgstr "æ–°ã—ã„ラベルã®å‰æ™¯è‰²ã‚’入力ã—ã¦ãã ã•ã„:" + +#~ msgid "Please enter new label background color:" +#~ msgstr "æ–°ã—ã„ラベルã®èƒŒæ™¯è‰²ã‚’入力ã—ã¦ãã ã•ã„:" + +#~ msgid "Saved filter %s" +#~ msgstr "フィルター %s ã‚’ä¿å­˜ã—ã¾ã—ãŸ" + +#~ msgid "Tags" +#~ msgstr "ã‚¿ã‚°" + +#~ msgid "Show article summary in new window" +#~ msgstr "記事ã®è¦ç´„ã‚’æ–°ã—ã„ウィンドウã§è¡¨ç¤ºã™ã‚‹" + +#~ msgid "toggle unread" +#~ msgstr "未読/既読を切り替ãˆã‚‹" + +#~ msgid "(remove)" +#~ msgstr "(削除)" + +#~ msgid "Offline reading" +#~ msgstr "オフライン処ç†" + +#~ msgid "Cancel synchronization" +#~ msgstr "åŒæœŸã®å–り消ã—" + +#~ msgid "Synchronize" +#~ msgstr "åŒæœŸ" + +#~ msgid "Remove stored data" +#~ msgstr "ä¿å­˜ã—ãŸãƒ‡ãƒ¼ã‚¿ã‚’削除ã™ã‚‹" + +#~ msgid "Go offline" +#~ msgstr "オフラインã«ç§»è¡Œã™ã‚‹" + +#~ msgid "Go online" +#~ msgstr "オンラインã«ç§»è¡Œã™ã‚‹" + +#~ msgid "Reset UI layout" +#~ msgstr "UI レイアウトをリセットã™ã‚‹" + +#~ msgid "Drag me to resize panels" +#~ msgstr "パãƒãƒ«ã®å¤§ãã•を変更ã™ã‚‹ã«ã¯ã“ã“をドラッグã—ã¾ã™" + +#~ msgid "Showing most popular tags " +#~ msgstr "ã‚‚ã£ã¨ã‚‚人気ã®ã‚るタグを表示中 " + +#, fuzzy +#~ msgid "more tags" +#~ msgstr "ã‚¿ã‚°ãŒã‚りã¾ã›ã‚“" + +#~ msgid "Link to feed:" +#~ msgstr "フィードã¸ã®ãƒªãƒ³ã‚¯:" + +#~ msgid "Not linked" +#~ msgstr "リンクã•れã¦ã„ã¾ã›ã‚“" + +#~ msgid "(linked to %s)" +#~ msgstr "(%s ã¸ãƒªãƒ³ã‚¯ã—ã¾ã—ãŸ)" + +#~ msgid "E-mail has been changed." +#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’変更ã—ã¾ã—ãŸã€‚" + +#~ msgid "Change e-mail" +#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’変更ã™ã‚‹" + +#~ msgid "Please wait..." +#~ msgstr "ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„..." + +#~ msgid "Data for offline browsing has not been downloaded yet." +#~ msgstr "オフライン閲覧ã®ãŸã‚ã®ãƒ‡ãƒ¼ã‚¿ã¯ã¾ã ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã•れã¦ã„ã¾ã›ã‚“。" + +#~ msgid "Synchronizing feeds..." +#~ msgstr "ãƒ•ã‚£ãƒ¼ãƒ‰ã‚’åŒæœŸã—ã¦ã„ã¾ã™..." + +#~ msgid "Synchronizing categories..." +#~ msgstr "ã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’åŒæœŸã—ã¦ã„ã¾ã™..." + +#~ msgid "Synchronizing labels..." +#~ msgstr "ãƒ©ãƒ™ãƒ«ã‚’åŒæœŸã—ã¦ã„ã¾ã™..." + +#~ msgid "Synchronizing articles..." +#~ msgstr "è¨˜äº‹ã‚’åŒæœŸã—ã¦ã„ã¾ã™..." + +#~ msgid "Synchronizing articles (%d)..." +#~ msgstr "記事 (%d) ã‚’åŒæœŸã—ã¦ã„ã¾ã™..." + +#~ msgid "Last sync: %s" +#~ msgstr "æœ€çµ‚åŒæœŸ: %s" + +#~ msgid "Last sync: Error receiving data." +#~ msgstr "æœ€çµ‚åŒæœŸ: データã®å—信中ã«ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚" + +#~ msgid "Synchronizing..." +#~ msgstr "åŒæœŸã—ã¦ã„ã¾ã™..." + +#~ msgid "Switch Tiny Tiny RSS into offline mode?" +#~ msgstr "Tiny Tiny RSS をオフラインモードã«åˆ‡ã‚Šæ›¿ãˆã¾ã™ã‹?" + +#~ msgid "Tiny Tiny RSS will reload. Go online?" +#~ msgstr "Tiny Tiny RSS ã‚’å†èª­ã¿è¾¼ã¿ã™ã‚‹ã§ã—ょã†ã€‚オンライン処ç†ã«ç§»è¡Œã—ã¾ã™ã‹?" + +#~ msgid "Last sync: Cancelled." +#~ msgstr "æœ€çµ‚åŒæœŸ: å–り消ã•れã¾ã—ãŸã€‚" + +#~ msgid "This will remove all offline data stored by Tiny Tiny RSS on this computer. Continue?" +#~ msgstr "ã“れã¯ã“ã®ã‚³ãƒ³ãƒ”ューター上㮠Tiny Tiny RSS ã«ã‚ˆã‚Šä¿å­˜ã•れãŸã™ã¹ã¦ã®ã‚ªãƒ•ラインデータを削除ã™ã‚‹ã§ã—ょã†ã€‚ç¶šã‘ã¾ã™ã‹?" + +#~ msgid "Tiny Tiny RSS has trouble accessing its server. Would you like to go offline?" +#~ msgstr "Tiny Tiny RSS ã¯ã‚µãƒ¼ãƒãƒ¼ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ä¸­ã«éšœå®³ãŒã‚りã¾ã—ãŸã€‚オフラインモードã«ç§»è¡Œã—ã¾ã™ã‹?" + +#~ msgid "Reset category order?" +#~ msgstr "é¸æŠžã—ãŸã‚«ãƒ†ã‚´ãƒªãƒ¼ã®é †åºã‚’リセットã—ã¾ã™ã‹?" + +#~ msgid "No feeds to display." +#~ msgstr "表示ã™ã‚‹ãƒ•ィードãŒã‚りã¾ã›ã‚“。" + +#~ msgid "Published Articles" +#~ msgstr "公開ã•れãŸè¨˜äº‹" + +#, fuzzy +#~ msgid "Your Published articles feed URL is:" +#~ msgstr "公開記事フィードã¸ã®ãƒªãƒ³ã‚¯ã§ã™ã€‚" + +#~ msgid "Replace current publishing address with a new one?" +#~ msgstr "æ–°ã—ã„ã‚‚ã®ã§ç¾åœ¨ã®å…¬é–‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’ç½®ãæ›ãˆã¾ã™ã‹?" + +#~ msgid "Limit bandwidth usage" +#~ msgstr "帯域ã®åˆ¶é™ã‚’使ã†" + +#~ msgid "Remove selected users?" +#~ msgstr "é¸æŠžã•れãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’削除ã—ã¾ã™ã‹?" + +#~ msgid "Adding feed..." +#~ msgstr "フィードを追加ã—ã¦ã„ã¾ã™..." + +#~ msgid "Assign score to article:" +#~ msgstr "記事ã«ã‚¹ã‚³ã‚¢ã‚’割り当ã¦ã‚‹:" + +#~ msgid "Assign selected articles to label?" +#~ msgstr "ラベルã«é¸æŠžã—ãŸè¨˜äº‹ã‚’割り当ã¦ã¾ã™ã‹?" + +#~ msgid "Can't open article: received invalid article link" +#~ msgstr "記事ãŒé–‹ã‘ã¾ã›ã‚“: 無効ãªè¨˜äº‹ãƒªãƒ³ã‚¯ã‚’å—ä¿¡ã—ã¾ã—ãŸ" + +#~ msgid "Category reordering disabled" +#~ msgstr "カテゴリーã®é †åºå¤‰æ›´ã‚’無効ã«ã—ã¾ã—ãŸ" + +#~ msgid "Category reordering enabled" +#~ msgstr "カテゴリーã®é †åºå¤‰æ›´ã‚’有効ã«ã—ã¾ã—ãŸ" + +#, fuzzy +#~ msgid "Changing password..." +#~ msgstr "パスワードを変更ã™ã‚‹" + +#~ msgid "Could not change feed URL." +#~ msgstr "フィード㮠URL を変更ã§ãã¾ã›ã‚“。" + +#~ msgid "Could not display article (missing XML object)" +#~ msgstr "記事を表示ã§ãã¾ã›ã‚“ (XML オブジェクトãŒè¦‹å½“ãŸã‚Šã¾ã›ã‚“)" + +#~ msgid "Could not update headlines (missing XML data)" +#~ msgstr "ヘッドラインを更新ã§ãã¾ã›ã‚“ (XML データãŒè¦‹å½“ãŸã‚Šã¾ã›ã‚“)" + +#~ msgid "Could not update headlines (missing XML object)" +#~ msgstr "ヘッドラインを更新ã§ãã¾ã›ã‚“ (XML オブジェクトãŒè¦‹å½“ãŸã‚Šã¾ã›ã‚“)" + +#~ msgid "Failed to load article in new window" +#~ msgstr "æ–°ã—ã„ウィンドウã§è¨˜äº‹ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“" + +#~ msgid "Failed to open window for the article" +#~ msgstr "記事用ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“" + +#~ msgid "Local data removed." +#~ msgstr "ローカルã®ãƒ‡ãƒ¼ã‚¿ã‚’削除ã—ã¾ã—ãŸã€‚" + +#~ msgid "Mark as read:" +#~ msgstr "既読ã«ã™ã‚‹:" + +#~ msgid "Please wait until operation finishes." +#~ msgstr "æ“作ãŒå®Œäº†ã™ã‚‹ã¾ã§å¾…ã£ã¦ãã ã•ã„。" + +#~ msgid "Remove selected articles from label?" +#~ msgstr "ラベルã‹ã‚‰é¸æŠžã—ãŸè¨˜äº‹ã‚’削除ã—ã¾ã™ã‹?" + +#~ msgid "Removing offline data..." +#~ msgstr "オフラインデータを削除ã—ã¦ã„ã¾ã™..." + +#~ msgid "Rescore last 100 articles in selected feeds?" +#~ msgstr "é¸æŠžã—ãŸãƒ•ã‚£ãƒ¼ãƒ‰ã®æœ€å¾Œ 100 ä»¶ã®è¨˜äº‹ã®ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã—ã¾ã™ã‹?" + +#~ msgid "Saving feeds..." +#~ msgstr "フィードをä¿å­˜ã—ã¦ã„ã¾ã™..." + +#~ msgid "Saving filter..." +#~ msgstr "フィルターをä¿å­˜ã—ã¦ã„ã¾ã™..." + +#~ msgid "Selection" +#~ msgstr "é¸æŠž" + +#~ msgid "Tiny Tiny RSS is in offline mode." +#~ msgstr "Tiny Tiny RSS ã¯ã‚ªãƒ•ラインモードã§ã™ã€‚" + +#, fuzzy +#~ msgid "You have to synchronize some articles before going into offline mode." +#~ msgstr "Google Gears を用ã„ãŸã‚ªãƒ•ライン処ç†ã®æ–°è¦è¨˜äº‹ã‚’åŒæœŸã—ã¾ã™ã€‚" + +#~ msgid "Can't open article: received invalid XML" +#~ msgstr "記事を開ã‘ã¾ã›ã‚“: 無効㪠XML ã‚’å—ä¿¡ã—ã¾ã—ãŸ" + +#~ msgid "Changing category of selected feeds..." +#~ msgstr "é¸æŠžã•れãŸã‚«ãƒ†ã‚´ãƒªãƒ¼ã®ãƒ•ィードを削除ã—ã¦ã„ã¾ã™..." + +#~ msgid "Erase all non-starred articles in %s?" +#~ msgstr "%s ã«ã‚ã‚‹ãŠæ°—ã«å…¥ã‚Šã«è¨­å®šã—ã¦ã„ãªã„記事をã™ã¹ã¦å‰Šé™¤ã—ã¾ã™ã‹?" + +#~ msgid "Trying to change password..." +#~ msgstr "パスワードã®å¤‰æ›´ã‚’試ã¿ã¦ã„ã¾ã™..." + +#~ msgid "Adding category %s...
    " +#~ msgstr "カテゴリー %s を追加ã—ã¦ã„ã¾ã™...
    " + +#~ msgid "Done." +#~ msgstr "終了ã—ã¾ã—ãŸã€‚" + +#~ msgid "The configuration was reset to defaults." +#~ msgstr "è¨­å®šã‚’æ¨™æº–ã«æˆ»ã—ã¾ã—ãŸã€‚" + +#~ msgid "Change theme" +#~ msgstr "テーマを変更ã™ã‚‹" + +#, fuzzy +#~ msgid "Hide read items" +#~ msgstr "読んã ãƒ•ィードを隠ã™/å†è¡¨ç¤ºã™ã‚‹" + +#, fuzzy +#~ msgid "Remove selected feeds from archive?" +#~ msgstr "ラベルã‹ã‚‰é¸æŠžã—ãŸè¨˜äº‹ã‚’削除ã—ã¾ã™ã‹?" + +#~ msgid "More feeds..." +#~ msgstr "æ›´ãªã‚‹ãƒ•ィード..." + +#~ msgid "Toggle Feedlist" +#~ msgstr "フィード一覧を切り替ãˆã‚‹" + +#~ msgid "Search:" +#~ msgstr "検索:" + +#~ msgid "Order:" +#~ msgstr "ä¸¦ã¹æ›¿ãˆ:" + +#~ msgid "browse more" +#~ msgstr "ã‚‚ã£ã¨å‚ç…§ã™ã‚‹" + +#~ msgid "Feed browser is administratively disabled." +#~ msgstr "フィードブラウザーã¯ç®¡ç†è€…ã«ã‚ˆã£ã¦ç„¡åйã«ãªã£ã¦ã„ã¾ã™ã€‚" + +#~ msgid "Show" +#~ msgstr "表示" + +#~ msgid "Hide from \"Other Feeds\"" +#~ msgstr "「ãã®ä»–ã®ãƒ•ィードã€ã‹ã‚‰éš ã™" + +#~ msgid "Unable to delete non empty feed categories." +#~ msgstr "æ®»ã§ãªã„フィードカテゴリーã¯å‰Šé™¤ã§ãã¾ã›ã‚“。" + +#~ msgid "Recategorize" +#~ msgstr "カテゴリーå†è¨­å®š" + +#~ msgid "Generate another link" +#~ msgstr "別ã®ãƒªãƒ³ã‚¯ã‚’生æˆã™ã‚‹" + +#~ msgid "Back" +#~ msgstr "戻る" + +#~ msgid "Page" +#~ msgstr "ページ" + +#~ msgid "Tags:" +#~ msgstr "ã‚¿ã‚°:" + +#~ msgid "Mark as unread" +#~ msgstr "未読ã«ã™ã‚‹" + +#~ msgid "Internal error: Function not implemented" +#~ msgstr "インターナルエラー: 機能ãŒå®Ÿè£…ã•れã¦ã„ã¾ã›ã‚“" + +#, fuzzy +#~ msgid "Click to view" +#~ msgstr "編集ã™ã‚‹ã«ã¯ã‚¯ãƒªãƒƒã‚¯" + +#~ msgid "  Keyboard shortcuts" +#~ msgstr "  ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆ" + +#~ msgid "Can't add user: no login specified." +#~ msgstr "ユーザーãŒè¿½åŠ ã§ãã¾ã›ã‚“: ログインåãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“。" + +#~ msgid "Can't create label: missing SQL expression." +#~ msgstr "ラベルを作æˆã§ãã¾ã›ã‚“: SQL 表ç¾ãŒè¦‹å½“ãŸã‚Šã¾ã›ã‚“。" + +#~ msgid "Saving label..." +#~ msgstr "ラベルをä¿å­˜ã—ã¦ã„ã¾ã™..." + +#~ msgid "Please select only one label." +#~ msgstr "ã²ã¨ã¤ã ã‘ãƒ©ãƒ™ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„。" + +#~ msgid "Please select only one category." +#~ msgstr "カテゴリーをã²ã¨ã¤ã ã‘é¸æŠžã—ã¦ãã ã•ã„。" + +#~ msgid "Address changed." +#~ msgstr "アドレスを変更ã—ã¾ã—ãŸã€‚" + +#~ msgid "Rescore articles in all feeds? This operation may take a lot of time." +#~ msgstr "ã™ã¹ã¦ã®ãƒ•ィードã®è¨˜äº‹ã®ã‚¹ã‚³ã‚¢ã‚’å†è¨ˆç®—ã—ã¾ã™ã‹? ã“ã®æ“作ã¯å¤§é‡ã®æ™‚間を使ã†ã§ã—ょã†ã€‚" + +#~ msgid "Restart in offline mode" +#~ msgstr "オフラインモードをå†èµ·å‹•ã™ã‚‹" + +#~ msgid "Restart in online mode" +#~ msgstr "オンラインモードをå†èµ·å‹•ã™ã‚‹" + +#~ msgid "Remove offline data?" +#~ msgstr "オフラインデータを削除ã—ã¾ã™ã‹?" + +#~ msgid "Toggle:" +#~ msgstr "トグル" + +#~ msgid "Convert to label" +#~ msgstr "ラベルã®å¤‰æ›" + +#~ msgid "Dashboard" +#~ msgstr "ダッシュボード" + +#~ msgid "Match " +#~ msgstr "一致 " + +#~ msgid "Title contains" +#~ msgstr "題åã®å†…容" + +#~ msgid "Content contains" +#~ msgstr "コンテンツã®å†…容" + +#~ msgid "Score equals" +#~ msgstr "スコアã¨åŒã˜" + +#~ msgid "Score is greater than" +#~ msgstr "スコア以上" + +#~ msgid "Score is less than" +#~ msgstr "スコア以下" + +#~ msgid "Articles newer than X hours" +#~ msgstr "記事㌠X 時間より新ã—ã„" + +#~ msgid "Articles newer than X days" +#~ msgstr "記事㌠X 日より新ã—ã„" + +#~ msgid "This script is for Tiny Tiny RSS installations with MySQL backend only." +#~ msgstr "ã“ã®ã‚¹ã‚¯ãƒªãƒ—ト㯠Tiny Tiny RSS ã‚’ MySQL ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã«ã®ã¿ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¾ã™ã€‚" + +#~ msgid "Converting database..." +#~ msgstr "データベースを変æ›ã—ã¦ã„ã¾ã™..." + +#~ msgid "Unknown Error" +#~ msgstr "未知ã®ã‚¨ãƒ©ãƒ¼" + +#~ msgid "Content Filtering" +#~ msgstr "コンテンツフィルタリング" + +#~ msgid "User Manager" +#~ msgstr "ユーザー管ç†" + +#~ msgid "" +#~ "Fatal Error: You forgot to copy \n" +#~ "\t\tconfig.php-dist to config.php and edit it.\n" +#~ msgstr "" +#~ "致命的ãªã‚¨ãƒ©ãƒ¼: config.php-dist ã‚’\n" +#~ "\t\tconfig.php ã«ã‚³ãƒ”ーã—ã€ç·¨é›†ã™ã‚‹ã“ã¨ã‚’忘れãªã„ã§ãã ã•ã„。\n" + +#~ msgid "config: your config file version is incorrect. See config.php-dist.\n" +#~ msgstr "設定: 設定ファイルã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒä¸æ­£ç¢ºã§ã™ã€‚config.php-dist ã‚’å‚ç…§ã—ã¦ãã ã•ã„。\n" + +#~ msgid "" +#~ "Fatal error: RSS_BACKEND_TYPE is deprecated. Please remove this\n" +#~ "\t\t\toption from config.php\n" +#~ msgstr "" +#~ "致命的ãªã‚¨ãƒ©ãƒ¼: RSS_BACKEND_TYPE ã¯éžæŽ¨å¥¨ã§ã™ã€‚\n" +#~ "\t\t\tã“ã®ã‚ªãƒ—ションを config.php ã‹ã‚‰å‰Šé™¤ã—ã¦ãã ã•ã„。\n" + +#~ msgid "" +#~ "Fatal Error: Please set DAEMON_UPDATE_LOGIN_LIMIT\n" +#~ "\t\t\tto 0 in single user mode.\n" +#~ msgstr "" +#~ "致命的ãªã‚¨ãƒ©ãƒ¼: シングルユーザーモードã§ã¯\n" +#~ "\t\t\t DAEMON_UPDATE_LOGIN_LIMIT ã‚’ 0 ã«è¨­å®šã—ã¦ãã ã•ã„。\n" + +#~ msgid "" +#~ "Fatal Error: You have enabled USE_CURL_FOR_ICONS, but your PHP \n" +#~ "\t\t\tdoesn't seem to support CURL functions." +#~ msgstr "" +#~ "致命的ãªã‚¨ãƒ©ãƒ¼: USE_CURL_FOR_ICONS ãŒæœ‰åйã ãŒã€\n" +#~ "\t\t\tPHP 㯠CURL 機能をサãƒãƒ¼ãƒˆã—ã¦ã„ãªã„よã†ã«è¦‹ãˆã¾ã™ã€‚" + +#~ msgid "config: SESSION_EXPIRE_TIME is undefined" +#~ msgstr "設定: SESSION_EXPIRE_TIME ãŒæœªå®šç¾©ã§ã™" + +#~ msgid "config: SESSION_EXPIRE_TIME is too low (less than 60)" +#~ msgstr "設定: SESSION_EXPIRE_TIME ãŒä½Žã™ãŽã¾ã™ (60 以下)" + +#, fuzzy +#~ msgid "config: SESSION_EXPIRE_TIME should be greater or equal toSESSION_COOKIE_LIFETIME" +#~ msgstr "設定: SESSION_EXPIRE_TIME ã¯æ¬¡ã®æ•°å­—以上ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“:" + +#~ msgid "config: DATABASE_BACKED_SESSIONS is incompatible with SINGLE_USER_MODE" +#~ msgstr "設定: DATABASE_BACKED_SESSIONS 㯠SINGLE_USER_MODE ã¨çŸ›ç›¾ã—ã¾ã™" + +#~ msgid "config: DATABASE_BACKED_SESSIONS are currently broken with MySQL" +#~ msgstr "設定: DATABASE_BACKED_SESSIONS 㯠ç¾åœ¨ MySQL ã§ã¯å£Šã‚Œã¦ã„ã¾ã™" + +#~ msgid "config: MAIL_FROM has been split into DIGEST_FROM_NAME and DIGEST_FROM_ADDRESS" +#~ msgstr "設定: MAIL_FROM 㯠DIGEST_FROM_NAME 㨠DIGEST_FROM_ADDRESS ã«åˆ†ã‘られã¾ã—ãŸ" + +#~ msgid "  Subscribe to feed" +#~ msgstr "  ãƒ•ィードを購読ã™ã‚‹" + +#~ msgid "  Edit this feed" +#~ msgstr "  ã“ã®ãƒ•ィードを編集ã™ã‚‹" + +#~ msgid "  Clear articles" +#~ msgstr "  è¨˜äº‹ã‚’消ã™" + +#~ msgid "  Rescore feed" +#~ msgstr "  ãƒ•ィードã®ã‚¹ã‚³ã‚¢ã‚’å†é›†è¨ˆã™ã‚‹" + +#~ msgid "  Unsubscribe" +#~ msgstr "  è³¼èª­ã‚’ã‚„ã‚ã‚‹" + +#~ msgid "  Mark as read" +#~ msgstr "  æ—¢èª­ã¨ã—ã¦è¨­å®šã™ã‚‹" + +#~ msgid "  (Un)hide read feeds" +#~ msgstr "  èª­ã‚“ã ãƒ•ィードを隠ã™/å†è¡¨ç¤ºã™ã‚‹" + +#~ msgid "  Create filter" +#~ msgstr "  ãƒ•ィルターを作æˆã™ã‚‹" + +#~ msgid "  Reset category order" +#~ msgstr "  ã‚«ãƒ†ã‚´ãƒªãƒ¼ã®é †ç•ªã®ãƒªã‚»ãƒƒãƒˆ" + +#~ msgid "Create Label" +#~ msgstr "ラベルã®ä½œæˆ" + +#~ msgid "Match SQL" +#~ msgstr "SQL ã®ä¸€è‡´" + +#~ msgid "Site:" +#~ msgstr "サイト:" + +#~ msgid "Other feeds: Top 25" +#~ msgstr "ãã®ä»–ã®ãƒ•ィード: トップ 25" + +#~ msgid "Showing top 25 registered feeds, sorted by popularity:" +#~ msgstr "人気順ã®ç™»éŒ²ãƒ•ィードã€ãƒˆãƒƒãƒ— 25 を表示中:" + +#~ msgid "Top 25" +#~ msgstr "トップ 25" + +#~ msgid "Error: SQL expression is blank." +#~ msgstr "エラー: SQL 表記ãŒç©ºã§ã™ã€‚" + +#~ msgid "Saved label %s" +#~ msgstr "ラベル %s ã‚’ä¿å­˜ã—ã¾ã—ãŸ" + +#~ msgid "SQL Expression" +#~ msgstr "SQL 表記" + +#~ msgid "Labels and SQL Expressions" +#~ msgstr "SQL 表ç¾ã¨ãƒ©ãƒ™ãƒ«" + +#~ msgid "Matches all articles for the last week (PostgreSQL):" +#~ msgstr "å†åŽé›†ã®ã™ã¹ã¦ã®è¨˜äº‹ã«ä¸€è‡´ (PostgreSQL):" + +#~ msgid "Matches all articles with scores between 100 and 500:" +#~ msgstr "100 ã‹ã‚‰ 500 ã¾ã§ã®ã‚¹ã‚³ã‚¢ã®ã™ã¹ã¦ã®è¨˜äº‹ã«ä¸€è‡´:" + +#~ msgid "This program requires XmlHttpRequest " +#~ msgstr "ã“ã®ãƒ—ログラムã¯ã€XmlHttpRequest ã‚’è¦æ±‚ã—ã¾ã™" + +#~ msgid "This program requires cookies " +#~ msgstr "ã“ã®ãƒ—ログラムã¯ã‚¯ãƒƒã‚­ãƒ¼ã‚’è¦æ±‚ã—ã¾ã™" + +#~ msgid "filter_type_descr" +#~ msgstr "filter_type_descr" + +#~ msgid "action_description" +#~ msgstr "action_description" + +#, fuzzy +#~ msgid "Perform action" +#~ msgstr "æ“作ã®å®Ÿè¡Œ" + +#~ msgid "Change password:" +#~ msgstr "変更パスワード:" + +#~ msgid "Caption:" +#~ msgstr "キャプション:" + +#~ msgid "SQL Expression:" +#~ msgstr "SQL 表ç¾:" + +#~ msgid "Action:" +#~ msgstr "æ“作:" + +#~ msgid "Params:" +#~ msgstr "パラメーター:" + +#~ msgid "Toggle" +#~ msgstr "トグル" + +#~ msgid "This page" +#~ msgstr "ã“ã®ãƒšãƒ¼ã‚¸" + +#~ msgid "Next page" +#~ msgstr "次ã®ãƒšãƒ¼ã‚¸" + +#~ msgid "Previous page" +#~ msgstr "å‰ã®ãƒšãƒ¼ã‚¸" + +#~ msgid "First page" +#~ msgstr "最åˆã®ãƒšãƒ¼ã‚¸" diff --git a/locale/lv_LV/LC_MESSAGES/messages.mo b/locale/lv_LV/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000..e73fd813a3 Binary files /dev/null and b/locale/lv_LV/LC_MESSAGES/messages.mo differ diff --git a/locale/lv_LV/LC_MESSAGES/messages.po b/locale/lv_LV/LC_MESSAGES/messages.po new file mode 100644 index 0000000000..a89225c38a --- /dev/null +++ b/locale/lv_LV/LC_MESSAGES/messages.po @@ -0,0 +1,4121 @@ +# Tiny Tiny RSS resource file. +# Copyright (C) 2014 +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR valdis.vitolins@odo.lv, 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2014-11-01 23:36+0300\n" +"Last-Translator: Valdis VÄ«toliņš \n" +"Language-Team: \n" +"Language: Latvian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" +"plural: EXPRESSION\n" +"nplurals: INTEGER\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: backend.php:73 +msgid "Use default" +msgstr "Lietot noklusÄ“to" + +#: backend.php:74 +msgid "Never purge" +msgstr "Nekad nedzÄ“st" + +#: backend.php:75 +msgid "1 week old" +msgstr "1 nedēļu vecs" + +#: backend.php:76 +msgid "2 weeks old" +msgstr "2 nedēļas vecs" + +#: backend.php:77 +msgid "1 month old" +msgstr "1 mÄ“nesi vecs" + +#: backend.php:78 +msgid "2 months old" +msgstr "2 mÄ“neÅ¡us vecs" + +#: backend.php:79 +msgid "3 months old" +msgstr "3 mÄ“neÅ¡us vecs" + +#: backend.php:82 +msgid "Default interval" +msgstr "NoklusÄ“tais intervÄls" + +#: backend.php:83 +#: backend.php:93 +msgid "Disable updates" +msgstr "AtslÄ“gt atjaunojumus" + +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" +msgstr "Katras 15 minÅ«tes" + +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" +msgstr "Katras 30 minÅ«tes" + +#: backend.php:86 +#: backend.php:96 +msgid "Hourly" +msgstr "Ik stundu" + +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" +msgstr "Katras 4 stundas" + +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" +msgstr "Katras 12 stundas" + +#: backend.php:89 +#: backend.php:99 +msgid "Daily" +msgstr "Ik dienas" + +#: backend.php:90 +#: backend.php:100 +msgid "Weekly" +msgstr "Ik nedēļu" + +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 +msgid "User" +msgstr "LietotÄjs" + +#: backend.php:104 +msgid "Power User" +msgstr "SuperlietotÄjs" + +#: backend.php:105 +msgid "Administrator" +msgstr "Administrators" + +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "Lai šī programma strÄdÄtu pareizi, ir nepiecieÅ¡ams XmlHttpRequest atbalsts. Å Ä·iet, ka jÅ«su pÄrlÅ«kprogramma to neatbalsta." + +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "Lai šī programma strÄdÄtu pareizi, ir nepiecieÅ¡ams sÄ«kfailu atbalsts. Å Ä·iet, ka jÅ«su pÄrlÅ«kprogramma tos neatbalsta." + +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "NeizdevÄs aizmugures pareizÄ«bas pÄrbaude." + +#: errors.php:17 +msgid "Frontend sanity check failed." +msgstr "NeizdevÄs priekÅ¡puses pareizÄ«bas pÄrbaude." + +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "Nepareiza datu bÄzes shÄ“mas versija. <a href='db-updater.php'>LÅ«dzu atjaunojiet</a>." + +#: errors.php:21 +msgid "Request not authorized." +msgstr "NeautorizÄ“ts pieprasÄ«jums." + +#: errors.php:23 +msgid "No operation to perform." +msgstr "Nav veicamÄs darbÄ«bas." + +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "PieprasÄ«jums neizdevÄs un neizdevÄs parÄdÄ«t barotni. LÅ«dzu pÄrbaudiet iezÄ«mes sintaksi vai arÄ« lokÄlos iestatÄ«jumus." + +#: errors.php:27 +msgid "Denied. Your access level is insufficient to access this page." +msgstr "Jums nav nepiecieÅ¡amo tiesÄ«bu šīs lapas aplÅ«koÅ¡anai." + +#: errors.php:29 +msgid "Configuration check failed" +msgstr "NeizdevÄs iestatÄ«jumu pÄrbaude." + +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "JÅ«su izmantotÄ MySQL versija netiek atbalstÄ«ta. LÅ«dzu skatiet papildu informÄciju oficiÄlajÄ vietnÄ“." + +#: errors.php:35 +msgid "SQL escaping test failed, check your database and PHP configuration" +msgstr "NeizdevÄs SQL izņēmumu tests, pÄrbaudiet jÅ«su datu bÄzes un PHP iestatÄ«jumus" + +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "Barotne netika atrasta." + +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "LietotÄjs netika atrasts" + +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "IelÄdÄ“, lÅ«dzu gaidiet..." + +#: index.php:167 +msgid "Collapse feedlist" +msgstr "Sakļaut barotņu sarakstu" + +#: index.php:170 +msgid "Show articles" +msgstr "RÄdÄ«t rakstus" + +#: index.php:173 +msgid "Adaptive" +msgstr "AdaptÄ«vs" + +#: index.php:174 +msgid "All Articles" +msgstr "Visus rakstus" + +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "Zvaigžņotos" + +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "PublicÄ“tos" + +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 +msgid "Unread" +msgstr "NelasÄ«tos" + +#: index.php:178 +msgid "With Note" +msgstr "Ar piezÄ«mi" + +#: index.php:179 +msgid "Ignore Scoring" +msgstr "IgnorÄ“t novÄ“rtÄ“jumu" + +#: index.php:182 +msgid "Sort articles" +msgstr "KÄrtot rakstus" + +#: index.php:185 +msgid "Default" +msgstr "NoklusÄ“tais" + +#: index.php:186 +msgid "Newest first" +msgstr "JaunÄko vispirms" + +#: index.php:187 +msgid "Oldest first" +msgstr "VecÄko vispirms" + +#: index.php:188 +msgid "Title" +msgstr "Virsraksts" + +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 +msgid "Mark as read" +msgstr "AtzÄ«mÄ“t kÄ lasÄ«tu" + +#: index.php:195 +msgid "Older than one day" +msgstr "Par dienu vecÄkus" + +#: index.php:198 +msgid "Older than one week" +msgstr "Par nedēļu vecÄkus" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "Par divÄm nedēļÄm vecÄkus" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "Saziņas kļūda ar serveri." + +#: index.php:223 +msgid "Actions..." +msgstr "DarbÄ«bas..." + +#: index.php:225 +msgid "Preferences..." +msgstr "IestatÄ«jumi..." + +#: index.php:226 +msgid "Search..." +msgstr "MeklÄ“t..." + +#: index.php:227 +msgid "Feed actions:" +msgstr "Barotnes darbÄ«bas" + +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "AbonÄ“t barotni..." + +#: index.php:229 +msgid "Edit this feed..." +msgstr "MainÄ«t Å¡o barotni..." + +#: index.php:230 +msgid "Rescore feed" +msgstr "PÄrvÄ“rtÄ“t barotni" + +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "DzÄ“st" + +#: index.php:232 +msgid "All feeds:" +msgstr "Visas barotnes:" + +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "(Ne)rÄdÄ«t lasÄ«tÄs barotnes" + +#: index.php:235 +msgid "Other actions:" +msgstr "Citas darbÄ«bas:" + +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "PÄrslÄ“gt platekrÄna režīmu" + +#: index.php:237 +msgid "Create label..." +msgstr "Izveido iezÄ«mi..." + +#: index.php:238 +msgid "Create filter..." +msgstr "Izveidot filtru..." + +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "IsinÄjumtaustiņu palÄ«dzÄ«ba" + +#: index.php:248 +msgid "Logout" +msgstr "Atteikties" + +#: index.php:254 +msgid "Updates are available from Git." +msgstr "" + +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "IestatÄ«jumi" + +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "ĪsinÄjumtaustiņi" + +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Iziet no iestatÄ«jumiem" + +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Barotnes" + +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "Filtri" + +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "IezÄ«mes" + +#: prefs.php:133 +msgid "Users" +msgstr "LietotÄji" + +#: prefs.php:136 +msgid "System" +msgstr "SistÄ“ma" + +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "Izveidot jaunu kontu" + +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "Jaunu lietotÄju reÄ£istrēšana ir administratÄ«vi atcelta." + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Atgriezties uz Tiny Tiny RSS" + +#: register.php:218 +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 "JÅ«su Ä«slaicÄ«gÄ parole tiks nosÅ«tÄ«ta uz norÄdÄ«to e-pastu. Konti, kuros ne neviens nav pieteicies, tiek automÄtiski izdzÄ“sti 24 stundu laikÄ pÄ“c Ä«slaicÄ«gÄs paroles nosÅ«tīšanas." + +#: register.php:224 +msgid "Desired login:" +msgstr "VÄ“lamais pieteikÅ¡anÄs vÄrds:" + +#: register.php:227 +msgid "Check availability" +msgstr "PÄrbaudÄ«t pieejamÄ«bu" + +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "E-pasts:" + +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "Cik ir divi un divi:" + +#: register.php:235 +msgid "Submit registration" +msgstr "Iesniegt reÄ£istrÄciju" + +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "JÅ«su reÄ£istrÄcija ir nepilnÄ«ga." + +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "Piedodiet, lietotÄja vÄrds jau tiek izmantots." + +#: register.php:287 +msgid "Registration failed." +msgstr "ReÄ£istrÄcija neizdevÄs." + +#: register.php:334 +msgid "Account created successfully." +msgstr "Konts ir veiksmÄ«gi izveidots." + +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "Jaunu lietotÄju reÄ£istrÄcija Å¡obrÄ«d ir slÄ“gta." + +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "Tiny Tiny RSS datu atjaunoÅ¡anas skripts." + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "NekategorizÄ“ts" + +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d arhivÄ“ts raksts" +msgstr[1] "%d arhivÄ“ti raksti" + +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "Neatradu barotnes." + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "NavigÄcija" + +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "AtvÄ“rt nÄkamo barotni" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "AtvÄ“rt iepriekšējo barotni" + +#: include/functions2.php:55 +msgid "Open next article" +msgstr "AtvÄ“rt nÄkamo rakstu" + +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "AtvÄ“rt iepriekšējo rakstu" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "AtvÄ“rt nÄkamo rakstu (nepÄrtÄ«t garus rakstus)" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "AtvÄ“rt iepriekšējo rakstu (nepÄrtÄ«t garus rakstus)" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "PÄriet uz nÄkamo rakstu (neizvÄ“rst un neatzÄ«mÄ“t kÄ lasÄ«tu)" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "PÄriet uz iepriekšējo rakstu (neizvÄ“rst un neatzÄ«mÄ“t kÄ lasÄ«tu)" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "RÄdÄ«t meklēšanas logu" + +#: include/functions2.php:62 +msgid "Article" +msgstr "Raksts" + +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "PÄrslÄ“gt zvaigžņoÅ¡anu" + +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "PÄrslÄ“gt publicēšanu" + +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "PÄrslÄ“gt nelasÄ«tu" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "MainÄ«t iezÄ«mes" + +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "Atmest atlasÄ«tos" + +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "Atmest lasÄ«tos" + +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "AtvÄ“rt jaunÄ logÄ" + +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "IezÄ«mÄ“t lejup kÄ lasÄ«tus" + +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "IezÄ«mÄ“t augÅ¡up kÄ lasÄ«tus" + +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "PÄrtÄ«t lejup" + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "PÄrtÄ«t uz augÅ¡u" + +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "IzvÄ“lÄ“ties rakstu zem kursora" + +#: include/functions2.php:75 +msgid "Email article" +msgstr "NosÅ«tÄ«t rakstu uz e-pastu" + +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "AizvÄ“rt/sakļaut rakstu" + +#: include/functions2.php:77 +msgid "Toggle article expansion (combined mode)" +msgstr "PÄrslÄ“gt raksta izvÄ“rÅ¡anu (kombinÄ“tais režīms)" + +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "PÄrslÄ“gt oriÄ£inÄla iegulÅ¡anu" + +#: include/functions2.php:80 +msgid "Article selection" +msgstr "Raksta atzÄ«mēšana" + +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "IezÄ«mÄ“t visus rakstus" + +#: include/functions2.php:82 +msgid "Select unread" +msgstr "AtzÄ«mÄ“t nelasÄ«tos" + +#: include/functions2.php:83 +msgid "Select starred" +msgstr "AtzÄ«mÄ“t zvaigžņotos" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "AtzÄ«mÄ“t publicÄ“tos" + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "ApvÄ“rst izvÄ“li" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "NeatzÄ«mÄ“t visu" + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Barotne" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "Atjaunot tekoÅ¡o barotni" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "(Ne)rÄdÄ«t lasÄ«tÄs barotnes" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "AbonÄ“t barotni" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "MainÄ«t barotni" + +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "ApvÄ“rst virsrakstus" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "Atkļūdot barotņu atjaunojumus" + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "AtzÄ«mÄ“t visas barotnes kÄ lasÄ«tas" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "IzvÄ“rst/sakļaut tekoÅ¡o kategoriju" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "PÄrslÄ“gt kombinÄ“to režīmu" + +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "PÄrslÄ“gt autoizvÄ“rÅ¡anu kombinÄ“tajÄ režīmÄ" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "Doties uz" + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "Visi raksti" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "Svaigs" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "IezÄ«mju mÄkonis" + +#: include/functions2.php:106 +msgid "Other" +msgstr "Citi" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "Izveidot etiÄ·eti" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "Izveidot filtru" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "IzvÄ“rst/sakļaut sÄnjoslu" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "RÄdÄ«t palÄ«dzÄ«bas logu" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Meklēšanas rezultÄti: %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +msgid "comment" +msgid_plural "comments" +msgstr[0] "komentÄrs" +msgstr[1] "komentÄri" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +msgid "comments" +msgstr "komentÄri" + +#: include/functions2.php:1303 +msgid " - " +msgstr "–" + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "nav iezÄ«mju" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "MainÄ«t šī raksta iezÄ«mes" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "SÄkotnÄ“jais no:" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "Barotnes URL" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "AizvÄ“rt Å¡o logu" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(mainÄ«t piezÄ«mi)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "nezinÄms tips" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "Pielikumi" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "ĪpaÅ¡i" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Visas barotnes" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Zvaigžņotie raksti" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "PublicÄ“tie raksti" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "JaunÄkie raksti" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "ArhivÄ“tie raksti" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "Nesen lasÄ«tie raksti" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "Pieteikties:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "Parole:" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "Esmu aizmirsis paroli" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "Profils:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "NoklusÄ“tais profils" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "Saspiest datu plÅ«smu" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "NerÄda rakstu attÄ“lus, samazina automÄtisko atjaunojumu izmÄ“ru." + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "AtcerÄ“ties mani" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "Pieteikties" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "NeizdevÄs validÄ“t sesiju (mainÄ«jusies IP adrese)" + +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "NeizdevÄs validÄ“t sesiju (mainÄ«jusies shÄ“mas versija)" + +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "NeizdevÄs validÄ“t sesiju (lietotÄjs nav atrasts)" + +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "NeizdevÄs validÄ“t sesiju (mainÄ«jusies parole)" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "Citi saskarnes padomi ir pieejami Tiny Tiny RSS viki vietnÄ“." + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "ĪsinÄjumtaustiņi" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "Shift" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "PalÄ«dzÄ«bas tÄ“ma netika atrasta." + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "KopÄ«got ar Tiny Tiny RSS" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Virsraksts:" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "Saturs:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "EtiÄ·etes:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "KopÄ«gotais raksts parÄdÄ«sies PublicÄ“ts barotnÄ“" + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "KopÄ«got" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "Atcelt" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "Nav pieteicies" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Nepareizs lietotÄja vÄrds vai parole" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "Jau ir pasÅ«tÄ«jis %s." + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "PasÅ«tÄ«jis %s." + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "NeizdevÄs pasÅ«tÄ«t %s." + +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "%s barotne netika atrasta." + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "Atradu vairÄkus barotņu URLus." + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "NeizdevÄs pasÅ«tÄ«t %s.
    NevarÄ“ju lejuplÄdÄ“t barotnes URL." + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "PasÅ«tÄ«t norÄdÄ«to barotni" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "MainÄ«t barotnes iestatÄ«jumus" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "Parole atjaunoÅ¡ana" + +#: classes/handler/public.php:805 +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "Jums bÅ«s nepiecieÅ¡ams norÄdÄ«t darbojoÅ¡os e-pasta kontu. Uz jÅ«su norÄdÄ«to adresi tiks nosÅ«tÄ«ta paroles pÄrstatīšanas saite." + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "AtstatÄ«t paroli" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "TrÅ«kst daži no obligÄtajiem parametriem, vai tie ir norÄdÄ«ti nepareizi." + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "Doties atpakaļ" + +#: classes/handler/public.php:878 +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] paroles pÄrstatīšanas pieprasÄ«jums" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "Piedodiet, norÄdÄ«tÄ e-pasta un pieteikÅ¡anÄs kombinÄcija netika atrasta." + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "Jums nav nepiecieÅ¡amo skripta palaiÅ¡anas tiesÄ«bu. " + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "Datu bÄzes atjaunotÄjs" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "IzpildÄ«t atjaunojumus" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "SkatÄ«t RSS barotni" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "SkatÄ«t kÄ RSS" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "NesenÄkais atjaunojums: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "Visus" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Apgriezt" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Nevienu" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "VairÄk..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "IzvÄ“les pÄrslÄ“gÅ¡ana:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "IzvÄ“le:" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "IestatÄ«r vÄ“rtÄ“jumu" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "ArhivÄ“t" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "PÄrvietot atpakaļ" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "DzÄ“st" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "PÄrsÅ«tÄ«t e-pastÄ" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Barotne:" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "Barotne netika atrasta." + +#: classes/feeds.php:268 +msgid "Never" +msgstr "Nekad" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "ImportÄ“ts %s" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +msgid "mark feed as read" +msgstr "atzÄ«mÄ“t barotni kÄ lasÄ«tu" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "Sakļaut rakstu" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "Nav neizlasÄ«tu rakstu, ko rÄdÄ«t." + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "Nav atjaunotu rakstu, ko rÄdÄ«t." + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "Nav zvaigžņotu rakstu, ko rÄdÄ«t." + +#: classes/feeds.php:778 +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 "Netika atrasti parÄdÄmi raksti. JÅ«s varat pievienot rakstus etiÄ·etÄ“m manuÄli (ir spÄ“kÄ visiem atlasÄ«tajiem rakstiem), vai arÄ« ar filtru." + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "Netika atrasti raksti, ko rÄdÄ«t." + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "Barotnes pÄ“dÄ“jo reizi atjaunotas %s." + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "Dažas barotnes ir atjaunotas ar kļūdÄm (klikšķiniet lai skatÄ«tu vairÄk)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "Nav izvÄ“lÄ“ta barotne." + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "Barotnes vai vietnes URL" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "Ievietot kategorijÄ:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "PieejamÄs barotnes" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "AutentifikÄcija" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "PieteikÅ¡anÄs" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "Parole" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Å im laukam ir nepiecieÅ¡ams autentificÄ“ties." + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "PasÅ«tÄ«t" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "VairÄk barotnes" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "MeklÄ“t" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "PopulÄrÄs barotnes" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "Barotņu arhÄ«vs" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "ierobežojumi:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "DzÄ“st" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "MeklÄ“t" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +msgid "Search syntax" +msgstr "Meklēšanas sintakse" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "Raksts netika atrasts." + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "Å Ä« raksta iezÄ«mes (atdalÄ«tas ar komatiem):" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "SaglabÄt" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "OPML rÄ«ks" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "ImportÄ“ OPML..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "Atgriezties uz iestatÄ«jumiem" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "Pievieno barotni: %s" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "DublÄ“ta barotne: %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "Pievieno etiÄ·eti %s" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "DublÄ“ta etiÄ·ete: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "SaglabÄ iestatÄ«jumu atslÄ“gu %s lÄ«dz %s" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "Pievieno filtru..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "ApstrÄdÄ kategoriju: %s" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "AugÅ¡uplÄde neizdevÄs ar kļūdas kodu %d" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "NeizdevÄs pÄrvietot augÅ¡uplÄdÄ“to failu." + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "Kļūda: lÅ«dzu augÅ¡uplÄdÄ“jiet OPML failu." + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "Kļūda: neizdevÄs atrast pÄrvietoto OPML failu." + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Dokumenta apstrÄdes kļūda." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "Jums nav pietiekamas pieejas tiesÄ«bas, lai atvÄ“rtu Å¡o cilni." + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "Kļūdu žurnÄls" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "Atjaunot" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "AttÄ«rÄ«t žurnÄlu" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Kļūda" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "Faila nosaukums" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Ziņojums" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Datums" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "LietotÄjs netika atrasts" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "ReÄ£istrÄ“ts" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "PÄ“dÄ“jo reizi pieteicies" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "PasÅ«tÄ«to barotņu skaits" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "PasÅ«tÄ«tÄs barotnes" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Pieejas lÄ«menis:" + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "IespÄ“jas" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "Pievienoja lietotÄju %s ar paroli %s" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "NeizdevÄs izveidot lietotÄju %s" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "LietotÄjs %s jau pastÄv." + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "IzmainÄ«ta parole lietotÄjam no %s uz %s" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "SÅ«ta jauno paroli lietotÄjam %s uz %s" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] paroles maiņas paziņojums" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "IezÄ«mÄ“t" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Izveidot lietotÄju" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "Detaļas" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "MainÄ«t" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Pieejas lÄ«menis" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "PÄ“dÄ“jÄ pieteikÅ¡anÄs" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Klikšķiniet, lai mainÄ«tu" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "Nav definÄ“ti lietotÄji." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "Neatradu atbilstoÅ¡us lietotÄjus." + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "IezÄ«mÄ“jiet, lai ieslÄ“gtu" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "(%d barotne)" +msgstr[1] "(%d barotnes)" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "Barotnes virsraksts" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "Atjaunot" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Dzēšu rakstu:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "Ieteikums: ja jÅ«su barotnei ir nepiecieÅ¡ama autentifikÄcija, jums ir jÄievada pieteikÅ¡anÄs informÄcija. VienÄ«gais izņēmums ir Twitter barotnes." + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "NerÄdÄ«t populÄrajÄs barotnÄ“s" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "Iekļaut e-pasta Ä«ssavilkumu" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "VienmÄ“r rÄdÄ«t attÄ“lu pielikumus" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "Neiegult attÄ“lus" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "KeÅ¡ot attÄ“lus lokÄli" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "AtzÄ«mÄ“t atjaunotos rakstus kÄ nelasÄ«tus" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "Ikona" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "Aizvietot" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "PÄrpasÅ«tÄ«t atjaunojumu grūšanu" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "Atstata PubSubHubbub pasÅ«tÄ«jumu statusu barotnÄ“m ar ieslÄ“gtu atjaunojumu grūšanu." + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Viss izdarÄ«ts." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "Barotnes ar kļūdÄm" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "NeaktÄ«vÄs barotnes" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "MainÄ«t izvÄ“lÄ“tÄs barotnes" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "AtstatÄ«t kÄrtoÅ¡anas secÄ«bu" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "PasÅ«tÄ«juma pakotne" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "Kategorijas" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "Pievienot kategoriju" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "DzÄ“st izvÄ“lÄ“tÄs" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "Papildu iespÄ“jas..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "ManuÄla dzēšana" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "DzÄ“st barotņu datus" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "PÄrvÄ“rtÄ“t rakstus" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "Izmantojot OPML jÅ«s varat eksportÄ“t un importÄ“t savas barotnes, filtrus, etiÄ·etes un Tiny Tiny RSS iestatÄ«jumus." + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "Izmantojot OPML var migrÄ“t tikai galvenos iestatÄ«jumus." + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "ImportÄ“t manu OPML" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "Faila nosaukums:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "Iekļaut iestatÄ«jumus" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "EksportÄ“t OPML" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "JÅ«su OPML var publicÄ“t un to var abonÄ“t katrs, kas zin zemÄk minÄ“to saiti." + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "PublicÄ“tajÄ OPML nav iekļauti: jÅ«su Tiny Tiny RSS iestatÄ«jumi, barotnes, kurÄs nepiecieÅ¡ams autentificÄ“ties un arÄ« barotnes, kas ir paslÄ“ptas no populÄrajÄm barotnÄ“m." + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "PubliskÄ OPML URL (adrese)" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "ParÄdÄ«t publicÄ“tÄ OPML URL" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Firefox integrÄcija" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "Å o Tiny Tiny RSS vietni var izmantot kÄ Firefox Feed Reader, klikšķinot uz zemÄkÄs saites." + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "Klikšķiniet Å¡eit, lai reÄ£istrÄ“tu Å¡o vietni kÄ barotņu avotu." + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "PublicÄ“tie un kopÄ«gotie raksti / sagatavotÄs barotnes" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "PublicÄ“tie raksti tiek eksportÄ“ti kÄ publiskas RSS barotnes un tÄs var izmantot katrs, kas zina zemÄk minÄ“to saiti." + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "ParÄdÄ«t URL" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "AttÄ«rÄ«t visus Ä£enerÄ“tos URL" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "Å ajÄs barotnÄ“s nav bijis jauns saturs vairÄk kÄ 3 mÄ“neÅ¡us (sÄkot ar vecÄkajÄm):" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "Klikšķiniet, lai mainÄ«tu" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "Atcelt izvÄ“lÄ“to barotņu pasÅ«tīšanu" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "Pievienojiet vienu derÄ«gu RSS barotni vienÄ rindÄ (barotnes netiek pÄrbaudÄ«tas)" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "PasÅ«tÄmÄs barotnes, pa vienai katrÄ rindÄ" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "BarotnÄ“m nepiecieÅ¡ama autentifikÄcija" + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "Raksti, kas atbilst Å¡im filtram:" + +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "Neseni raksti ar Å¡Ädiem atlases nosacÄ«jumiem netika atrasti" + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(apvÄ“rst)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "%s uz %s iekÅ¡ %s %s" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Uzraksts" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "AtbilstÄ«ba" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "Pievienot" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "Pielietot darbÄ«bas" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "IeslÄ“gts" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "Atbilst jebkuram likumam" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "AÄgÄrnÄ atbilstÄ«ba" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "PÄrbaudÄ«t" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "Apvienot" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Izveidot" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "AÄgÄrna regulÄro izteiksmju atbilstÄ«ba" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "laukÄ" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "kur" + +#: classes/pref/filters.php:947 +msgid "Wiki: Filters" +msgstr "Wiki: Filtri" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "SaglabÄt likumu" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "Pievienot likumu" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Pielietot darbÄ«bu" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "ar parametriem:" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "SaglabÄt darbÄ«bu" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "Pievienot darbÄ«bu" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[nav paraksta]" + +#: classes/pref/filters.php:1044 +#, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "%s (%d likums)" +msgstr[1] "%s (%d likumi)" + +#: classes/pref/filters.php:1059 +#, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "%s (+%d darbÄ«ba)" +msgstr[1] "%s (+%d darbÄ«bas)" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "KrÄsas" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "Pamats:" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "Virspuse:" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "Izveidoju etiÄ·eti %s" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "AttÄ«rÄ«t krÄsas" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "VispÄrÄ«gi" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Saskarne" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "PaplaÅ¡inÄti" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "Īssavilkums" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "Atļaut dublÄ“tus rakstus" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Tagu melnais saraksts" + +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "AutomÄtiski nosakot rakstu tagus, Å¡ie tagi netiks lietoti (ar komatu atdalÄ«ts saraksts)." + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "AutomÄtiski atzÄ«mÄ“t rakstus kÄ izlasÄ«tus" + +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "Å Ä« iespÄ“ja ļauj automÄtiski atzÄ«mÄ“t rakstu kÄ lasÄ«tu, jums pÄrtinot tÄ saturu." + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "AutomÄtiski rÄdÄ«t rakstus kombinÄ“tajÄ režīmÄ" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "KombinÄ“ts barotņu skatÄ«jums" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Atsevišķa virsraksta un satura vietÄ parÄda paplaÅ¡inÄtu barotnes rakstu sarakstu" + +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "ApstiprinÄt barotnes atzÄ«mēšanu kÄ izlasÄ«tu" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "VienlaicÄ«gi parÄdÄ«to rakstu skaits" + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "NoklusÄ“tais barotnes atjaunoÅ¡anas intervÄls" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "ĪsÄkais periods, pÄ“c kura barotno tiks pÄrbaudÄ«ti jaunumi, neatkarÄ«gi no atjaunoÅ¡anas veida" + +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "AtzÄ«mÄ“t Ä«ssavilkuma rakstus e-pastÄ kÄ lasÄ«tus" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "IeslÄ“gt Ä«ssavilkuma sÅ«tīšanu pa e-pastu" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Å Ä« iespÄ“ja ļauj nosÅ«tÄ«t ikdienas jauno (vai nelasÄ«to) rakstu Ä«ssavilkumu uz norÄdÄ«to e-pasta adresi" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "Censties nosÅ«tÄ«t Ä«ssavilkumus ap norÄdÄ«to laiku" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "Izmanto UTC laika zonu" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "IeslÄ“gt API pieeju" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "Ä»auj ÄrÄ“jiem klientiem piekļūt Å¡im kontam, izmantojot API" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "IeslÄ“gt barotņu kategorijas" + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "KÄrtot barotnes pÄ“c nelasÄ«to ziņu skaita" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "MaksimÄlais svaigo rakstu laiks (stundÄs)" + +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "SlÄ“pt barotnes ar izlasÄ«tiem rakstiem" + +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "SlÄ“pjot izlasÄ«tÄs, rÄdÄ«t Ä«paÅ¡Äs barotnes" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "Garais datumu formÄts" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "IzmantotÄ sintakse ir identiska PHP date() funkcijai." + +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "PÄ“c noÄ·erÅ¡anas rÄdÄ«t nÄkamo barotni" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "AutomÄtiski atver nÄkamo barotni, kad vienÄ visi raksti ir atzÄ«mÄ“ti kÄ lasÄ«ti" + +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "DzÄ“st rakstus pÄ“c norÄdÄ«tÄ dienu skaita (0 – atceļ)" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "DzÄ“st nelasÄ«tos rakstus" + +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "Apgriezt virsrakstu secÄ«bu (vecÄkos vispirms)" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "Īsais datumu formÄts" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "RÄdÄ«t virsrakstu sarakstÄ satura priekÅ¡skatÄ«jumu" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "KÄrtot virsrakstus pÄ“c barotnes laika" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "KÄrtoÅ¡anai izmantot barotnÄ“ norÄdÄ«to raksta laiku nevis tÄ importēšanas laiku" + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "Pieteikties ar SSL sertifikÄtu" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Klikšķiniet, lai reÄ£istrÄ“tu jÅ«su klienta SSL sertifikÄtu tt-rss" + +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "NerÄdÄ«t rakstos attÄ“lus" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "Izdzrest nedroÅ¡os tagus no rakstiem" + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Lasot rakstus, atmest visus, izņemot paÅ¡us svarÄ«gÄkos HTML tagus." + +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "PielÄgot stilu lapu" + +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "PielÄgot CSS stilu lapu" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "Laika zona" + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "Apvienot virsrakstus virtuÄlÄs barotnÄ“s" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "ĪpaÅ¡Äs barotnes, iezÄ«mes un kategorijas tiek grupÄ“tas pÄ“c izcelsmes barotnÄ“m" + +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "Valoda" + +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "TÄ“ma" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "IzvÄ“lieties vienu no pieejamÄm CSS tÄ“mÄm" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "IestatÄ«jumi ir saglabÄti." + +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "JÅ«su personÄ«gie dati ir saglabÄti." + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "JÅ«su izvÄ“les tagad ir iestatÄ«tas uz noklusÄ“tajÄm vÄ“rtÄ«bÄm." + +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "PersonÄ«gie dati/autentifikÄcija" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "PersonÄ«gie dati" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "VÄrds un uzvÄrds" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "E-pasts" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Pieejas lÄ«menis" + +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "SaglabÄt datus" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "Jums ir norÄdÄ«ta noklusÄ“tÄ parole, lÅ«dzu nomainiet to." + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "JÅ«su tekoÅ¡Äs paroles maiņa izslÄ“gs VLP." + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "VecÄ parole" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "JaunÄ parole" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Apstipriniet paroli" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "NomainÄ«t paroli" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "VienreizlietojamÄ parole/autentifikÄcija" + +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "Vienreiz lietojamÄs paroles (VLP) Å¡obrÄ«d ir ieslÄ“gtas. Lai izslÄ“gtu, ievadiet jÅ«su paÅ¡reizÄ“jo paroli." + +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "Ievadiet savu paroli" + +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "AtslÄ“gt vienreizlietojamo paroli" + +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "Lai to lietotu, jums bÅ«s nepiecieÅ¡ams savietojams autentifikators. JÅ«su paroles maiņa automÄtiski atslÄ“gs vienreizlietojamo paroli." + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "Ar autentifikÄcijas moduli noskenÄ“jiet sekojoÅ¡o kodu:" + +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "Ievadiet vienreiz lietojamo paroli:" + +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "IeslÄ“gt vienreizlietojamo paroli" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "Lai ieslÄ“gtu VLP, ir nepiecieÅ¡ams PHP GD atbalsts." + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "Dažas izvÄ“les ir pieejamas tikai noklusÄ“tajÄ profilÄ." + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "PielÄgot" + +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "ReÄ£istrÄ“t" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "AttÄ«rÄ«t" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "TekoÅ¡Ä laika zona ir: %s (UTC)" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "SaglabÄt iestatÄ«jumus" + +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "SaglabÄt un iziet no iestatÄ«jumiem" + +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "PÄrvaldÄ«t profilus" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "AtstatÄ«t uz noklusÄ“tajiem" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "Spraudņi" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "Lai tas sÄktu strÄdÄt, jums bÅ«s nepiecieÅ¡ams pÄrlÄdÄ“t Tiny Tiny RSS spraudni." + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "LejuplÄdÄ“jiet citus spraudņus no tt-rss.org forumiem vai viki." + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "SistÄ“mas spraudņi" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "Spraudnis" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "Apraksts" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "Versija" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "Autors" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "papildu info" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "DzÄ“st datus" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "LietotÄja spraudņi" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "IeslÄ“gt izvÄ“lÄ“tos spraudņus" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "Nepareiza vienreiz lietojamÄ parole" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "Nepareiza parole" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "JÅ«s varat aizstÄt krÄsas, fontus un izklÄjumu, Å¡obrÄ«d izmantotÄ CSS vietÄ izmantojot savus pielÄgojumus. Paraugu varat ņemt no šī faila." + +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "Izveidot profilu" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(aktÄ«vs)" + +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "DzÄ“st iezÄ«mÄ“tos profilus" + +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "AktivizÄ“t profilu" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "Ja esat importÄ“jis etiÄ·etus vai filtrus, iespÄ“jams, ka jums nepiecieÅ¡ams pÄrlÄdÄ“t iestatÄ«jumus, lai redzÄ“tu jaunos datus." + +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "JÅ«su publiskais OPML URL ir:" + +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "Izveidot jaunu 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 "AtjaunoÅ¡anas process iestatÄ«jumos ir ieslÄ“gts, bet tas nedarbojas, tÄpÄ“c barotnes neatjaunojas. LÅ«dzu palaidiet atjaunoÅ¡anas procesu vai arÄ« sazinieties ar servera Ä«paÅ¡nieku." + +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "PÄ“dÄ“jais atjaunojums:" + +#: 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 "AtjaunoÅ¡anas process aizņem pÄrÄk ilgu laiku. IespÄ“jams, ka tas ir tÄpÄ“c, ka process ir \"uzkÄries\". LÅ«dzu pÄrbaudiet atjaunoÅ¡anas procesu vai arÄ« sazinieties ar servera Ä«paÅ¡nieku." + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "JÅ«s varat skatÄ«t so baronti kÄ RSS ar sekojoÅ¡u URL:" + +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" + +#: plugins/af_psql_trgm/init.php:112 +#, fuzzy +msgid "Show related articles" +msgstr "KopÄ«goti raksti" + +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +#, fuzzy +msgid "Mark similar articles as read" +msgstr "Vai atzÄ«mÄ“t visus rakstus kÄ lasÄ«tus?" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +#, fuzzy +msgid "Global settings" +msgstr "Iekļaut iestatÄ«jumus" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "IeslÄ“gt barotņu kategorijas" + +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" + +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" + +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "Ar af_comics atbalstÄ«tÄs barotnes" + +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "Å obrÄ«d tiek atbalstÄ«ti sekojoÅ¡i komiksi:" + +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "MainÄ«t raksta piezÄ«mes" + +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "Fails nav augÅ¡uplÄdÄ“ts." + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "Viss paveikts. ImportÄ“ti %d no %d rakstiem." + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "Dokumentam ir nepareizs formÄts." + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "ImportÄ“t zvaigžņotos vai kopÄ«gotos rakstus no Google Reader" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "Ievietojiet jÅ«su starred.json vai shared.json zemÄk parÄdÄ«tajÄ formÄ." + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "ImportÄ“t manus zvaigžņotos rakstus" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[PÄrsÅ«tÄ«ts]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "VairÄki raksti" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "Klikšķiniet uz šīs saites, lai uzlÅ«gtu jÅ«su e-pasta klientu:" + +#: plugins/mailto/init.php:75 +msgid "Forward selected article(s) by email." +msgstr "PÄrsÅ«tÄ«t izvÄ“lÄ“tos rakstus pa e-pastu." + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "Jums vajadzÄ“tu spÄ“t mainÄ«t ziņu pirms nosÅ«tīšanas jÅ«su e-pasta klientam." + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "AizvÄ“rt Å¡o logu" + +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "Imports un eksports" + +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "JÅ«s varat eksportÄ“t un importÄ“t jÅ«su zvaigžņotos un arhivÄ“tos rakstus, lai saglabÄtu tos, migrÄ“jot tt-rss versiju vai pÄrejot uz citu tt-rss instanci." + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "EksportÄ“t manus datus" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Imports" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "NeizdevÄs importÄ“t: nepareiza shÄ“mas versija." + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "NeizdevÄs importÄ“t: neatpazÄ«ts dokumenta formÄts." + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "Pabeigts:" + +#: plugins/import_export/init.php:388 +#, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "apstrÄdÄts %d raksts," +msgstr[1] "apstrÄdÄti %d raksti, " + +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "%d importÄ“ts, " +msgstr[1] "%d importÄ“ti, " + +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "%d izveidota barotne." +msgstr[1] "izveidotas %d barotnes." + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "NeizdevÄs ielÄdÄ“t XML dokumentu." + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "Sagatavo datus" + +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "Nav droÅ¡s darbam (klikšķiniet, lai pÄrslÄ“gtu)" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "NSFW spraudnis" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "Tagi, kurus izmantot NSFW (atdalÄ«ti ar komatu)" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "IestatÄ«jumi ir saglabÄti." + +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "LÅ«dzu ievadiet vienreizlietojamo paroli:" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "Parole ir nomainÄ«ta." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "VecÄ parole nav pareiza." + +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "AizvÄ“rt rakstu" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "E-pasta adrese saglabÄta." + +#: plugins/mail/init.php:34 +msgid "Mail plugin" +msgstr "E-pasta spraudnis" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "JÅ«s varat Å¡eit iestatÄ«t iepriekÅ¡noteiktas adreses (ar komatu atdalÄ«ts saraksts):" + +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "Uz:" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "Temats:" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "NosÅ«tÄ«t e-pastu" + +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "SaistÄ«ts" + +#: 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:404 +msgid "Instance URL" +msgstr "Instances URL" + +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "Pieejas atslÄ“ga:" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "Pieejas aslÄ“ga" + +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "Izmantot to paÅ¡u pieejas aslÄ“gu abÄm saistÄ«tajÄm instancÄ“m." + +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "Ä¢enerÄ“t jaunu atslÄ“gu" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "Saites 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 "JÅ«s varat pievienot kopÄ«got populÄrÄs barotnes un pieslÄ“gt tai citas Tiny Tiny RSS instances. Pievienoties Å¡ai Tiny Tiny RSS instancei var, izmantojot Å¡o saiti:" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "PÄ“dÄ“jo reizi pieteicies" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "Statuss" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "SaglabÄtÄs barotnes" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "Izveidot saiti" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "IestatÄ«jumi ir saglabÄti." + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "PÄrbaudÄ«t pieejamÄ«bu" + +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "PÄrtÄ«t raksta saturu" + +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "KopÄ«goti raksti" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +#, fuzzy +msgid "Statistics" +msgstr "Statuss" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "Zvaigžņotie raksti" + +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "DzÄ“st datus" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, fuzzy, php-format +msgid "Currently stored as: %s" +msgstr "TekoÅ¡Ä laika zona ir: %s (UTC)" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "GrÄmatzÄ«mes" + +#: 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 "Velciet zemÄk minÄ“to saiti uz jÅ«su pÄrlÅ«kprogrammas rÄ«ku joslu, tad atveriet jÅ«s interesÄ“joÅ¡o saiti un klikšķiniet uz tÄs, lai pasÅ«tÄ«tu tÄs jaunumus" + +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "PasÅ«tÄ«t %s Tiny Tiny RSS?" + +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "PasÅ«tÄ«t Tiny Tiny RSS" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "Izmantojiet grÄmatzÄ«mes lai publicÄ“tu izvÄ“lÄ“tÄs lapas Tiny Tiny RSS" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "JÅ«s varat atcelt ar Å¡o URL kopÄ«gotos rakstus Å¡eit." + +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "Atcelt visu rakstu kopÄ«goÅ¡anu" + +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "KopÄ«got ar URL" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "JÅ«s varat kopÄ«got Å¡o rakstu ar sekojoÅ¡u unikÄlu URL:" + +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "NekopÄ«got rakstu" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "Kļūda tiks reÄ£istrÄ“ta iestatÄ«jumos norÄdÄ«tajÄ Å¾urnÄlÄ." + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "Ziņot tt-rss.org" + +#: js/functions.js:93 +msgid "Close" +msgstr "AizvÄ“rt" + +#: js/functions.js:104 +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "Vai tieÅ¡Äm vÄ“laties ziņot par Å¡o izņēmumu tt-rss.org? ZiņojumÄ tiks iekļauta informÄcija par jÅ«su pÄrlÅ«kprogrammu, un jÅ«su IP adrese tiks saglabÄta datu bÄzÄ“." + +#: js/functions.js:224 +msgid "Click to close" +msgstr "Klikšķiniet, lai aizvÄ“rtu" + +#: js/functions.js:1051 +msgid "Edit action" +msgstr "MainÄ«t darbÄ«bu" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "Izveidot filtru" + +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "AtstatÄ«t pasÅ«tīšanu? Tiny Tiny RSS mēģinÄs savÄkt informÄciju no šīs barotnes kÄrtÄ“jÄ atjaunojuma laikÄ." + +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "Barotnes pÄrstatīšana." + +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "Atteikt pasÅ«tÄ«jumu %s?" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "PÄrsauc barotni..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "LÅ«dzu ievadiet kategorijas virsrakstu:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "Izveidot jaunu šīs barotnes sindikÄcijas adresi?" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Mēģina izmainÄ«t adresi..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "Nav izvÄ“lÄ“ta barotne" + +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "DzÄ“st izvÄ“lÄ“tÄs barotnes no arhÄ«va? Barotnes, kurÄs ir raksti, netiks dzÄ“stas." + +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "Barotnes ar atjaunoÅ¡anas kļūdÄm" + +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "DzÄ“st izvÄ“lÄ“tÄs barotnes?" + +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "Dzēš izvÄ“lÄ“tÄs barotnes..." + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "MainÄ«t kategoriju" + +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "DzÄ“st kategoriju" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "Apgriezt" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "LÅ«dzu ievadiet pieteikÅ¡anÄs vÄrdu:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "NeizdevÄs izveidot lietotÄju: netika norÄdÄ«ts pieteikÅ¡anÄs vÄrds." + +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "Pievieno lietotÄju..." + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "LietotÄja redaktors" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "SaglabÄ datus..." + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "MainÄ«t filtru" + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "DzÄ“st filtru?" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "Dzēš filtru..." + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "DzÄ“st izvÄ“lÄ“tÄs etiÄ·etes?" + +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "Dzēš izvÄ“lÄ“tÄs etiÄ·etes..." + +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "Nav izvÄ“lÄ“ta etiÄ·ete." + +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "DzÄ“st izvÄ“lÄ“tos lietotÄjus? Netiks dzÄ“sts ne jÅ«su konts, ne arÄ« noklusÄ“tais administratora konts." + +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "Dzēš izvÄ“lÄ“tos lietotÄjus..." + +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "Nav izvÄ“lÄ“ts lietotÄjs." + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "DzÄ“st izvÄ“lÄ“tos filtrus?" + +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "Dzēš izvÄ“lÄ“tos filtrus..." + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "Nav izvÄ“lÄ“ts filtrs." + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "DzÄ“st izvÄ“lÄ“to barotni?" + +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "AtrakstÄs no izvÄ“lÄ“tajÄm barotnÄ“m..." + +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "LÅ«dzu norÄdiet tikai vienu barotni." + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "DzÄ“st visus nezvaigžņotos rakstus norÄdÄ«tajÄ barotnÄ“?" + +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "AttÄ«ra izvÄ“lÄ“to barotni..." + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "Cik dienas saglabÄt rakstus (0 – noklusÄ“tais laiks)?" + +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "Dzēš izvÄ“lÄ“to barotni..." + +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "LÅ«dzu izvÄ“lieties tikai vienu lietotÄju." + +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "AtstatÄ«t izvÄ“lÄ“tÄ lietotÄja paroli?" + +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "Atstata izvÄ“lÄ“tÄ lietotÄja paroli..." + +#: js/prefs.js:565 +msgid "User details" +msgstr "LietotÄja detaļas" + +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "LÅ«dzu izvÄ“lieties tikai vienu filtru." + +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "Apvienot izvÄ“lÄ“tos filtrus?" + +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "Apvieno filtrus..." + +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "MainÄ«t vairÄkus filtrus" + +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "SaglabÄt izvÄ“lÄ“to barotņu izmaiņas?" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "OPML imports" + +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "LÅ«dzu vispirms norÄdiet OPML failu." + +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "ImportÄ“, lÅ«dzu gaidiet..." + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "AtsatÄ«t uz noklusÄ“to?" + +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "Barotņu pasÅ«tīšana" + +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "AttÄ«rÄ«t šī spraudņa saglabÄtos datus?" + +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "IzdzÄ“st visus ziņojumus kļūdu žurnÄlÄ?" + +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "Vai atzÄ«mÄ“t visus rakstus kÄ lasÄ«tus?" + +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "AtzÄ«mÄ“ visas barotnes kÄ lasÄ«tas..." + +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "LÅ«dzu, vispirmi ieslÄ“dziet e-pasta spraudni." + +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "JÅ«s nevarat mainÄ«t Å¡Äda veida barotni." + +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "LÅ«dzu, vispirms ieslÄ“dziet embeded_original spraudni." + +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "" + +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "JÅ«s nevarat pÄrvÄ“rtÄ“t šī veida barotni." + +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "LÅ«dzu, vispirms norÄdiet barotni." + +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "PÄrvÄ“rtÄ“t rakstus %s?" + +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "PÄrvÄ“rtÄ“ rakstus..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "Nav norÄdÄ«ts raksts." + +#: js/viewfeed.js:1018 +#, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "DzÄ“st %d izvÄ“lÄ“to rakstu %s?" +msgstr[1] "DzÄ“st %d izvÄ“lÄ“tos rakstus %s?" + +#: js/viewfeed.js:1020 +#, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "DzÄ“st %d izvÄ“lÄ“to rakstu?" +msgstr[1] "DzÄ“st %d izvÄ“lÄ“tos rakstus?" + +#: js/viewfeed.js:1062 +#, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "ArhivÄ“t %d izvÄ“lÄ“to rakstu %s?" +msgstr[1] "ArhivÄ“t %d izvÄ“lÄ“tos rakstus %s?" + +#: js/viewfeed.js:1065 +#, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "PÄrvietot %d arhivÄ“to rakstu atpakaļ?" +msgstr[1] "PÄrvietot %d arhivÄ“tos rakstus atpakaļ?" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "LÅ«dzu ņemiet vÄ“rÄ, ka nezvaigžņotie raksti pÄ“c nÄkamÄ atjaunojuma var tikt dzÄ“sti." + +#: js/viewfeed.js:1112 +#, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "AtzÄ«mÄ“t %d izvÄ“lÄ“to rakstu %s kÄ lasÄ«tu?" +msgstr[1] "AtzÄ«mÄ“t %d izvÄ“lÄ“tos rakstus %s kÄ lasÄ«tus?" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "MainÄ«t rakstu iezÄ«mes" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "SaglabÄ rakstu iezÄ«mes..." + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +msgid "Click to open next unread feed." +msgstr "Klikšķiniet, lai atvÄ“rtu nÄkamo nelasÄ«to barotni." + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "AtvÄ“rt sÄkotnÄ“jo rakstu" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Pievienot etiÄ·eti" + +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "DzÄ“st etiÄ·eti" + +#: js/viewfeed.js:2159 +msgid "Select articles in group" +msgstr "IzvÄ“lÄ“ties grupas rakstus" + +#: js/viewfeed.js:2168 +msgid "Mark group as read" +msgstr "AtzÄ«mÄ“t grupu kÄ lasÄ«tu" + +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "AtzÄ«mÄ“t barotni kÄ lasÄ«tu" + +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "Ievadiet jauno vÄ“rtÄ“jumu izvÄ“lÄ“tajiem rakstiem:" + +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "Ievadiet jaunu vÄ“rtÄ“jumu Å¡im rakstam:" + +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "Raksta vietrÄdis:" + +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "Piedodiet, jÅ«su pÄrlÅ«kprogramma neatbalsta iegultos rÄmjus (iframe) smilÅ¡u kastÄ“." + +#: plugins/af_psql_trgm/init.js:11 +#, fuzzy +msgid "Related articles" +msgstr "DzÄ“st rakstu" + +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "SaglabÄ raksta piezÄ«mes..." + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Google Reader Imports" + +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "LÅ«dzu, vispirms norÄdiet failu." + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "PÄrsÅ«tÄ«t rakstu pa e-pastu" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "EksportÄ“t datus" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "Pabeigts. EksportÄ“ts %d raksts. JÅ«s varat lejuplÄdÄ“t datus Å¡eit." +msgstr[1] "Pabeigts. EksportÄ“ti %d raksti. JÅ«s varat lejuplÄdÄ“t datus Å¡eit." + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Datu imports" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "LÅ«dzu vispirms norÄdiet failu." + +#: plugins/shorten_expanded/init.js:37 +msgid "Click to expand article" +msgstr "Klikšķiniet, lai izvÄ“rstu rakstu" + +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "Kļūda sÅ«tot e-pastu:" + +#: plugins/mail/mail.js:38 +msgid "Your message has been sent." +msgstr "JÅ«su ziņojums ir nosÅ«tÄ«ts." + +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "SaistÄ«t instanci" + +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "MainÄ«t instanci" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "DzÄ“st izvÄ“lÄ“tÄs instances?" + +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "Dzēš izvÄ“lÄ“tÄs instances..." + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "Nav izvÄ“lÄ“ta neviena instance." + +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "LÅ«dzu, izvÄ“lieties tikai vienu instanci." + +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "DzÄ“st barotņu datus" + +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "" + +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "KopÄ«got rakstu ar vietrÄdi" + +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "Izveidot Å¡im rakstam jaunu vietrÄdi?" + +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "Mēģinu mainÄ«t vietrÄdi..." + +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "DzÄ“st šī raksta kopÄ«gojumu?" + +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "Mēģinu atkopÄ«got..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "Tas padarÄ«s nederÄ«gus visu iepriekÅ¡ izveidoto kopÄ«goto rakstu URLus. TurpinÄt?" + +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "AttÄ«ra vietrÄžus..." + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "KopÄ«gotie vietrÄži attÄ«rÄ«ti." + +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "Vai atzÄ«mÄ“t visus rakstus %s kÄ lasÄ«tus?" + +#: js/feedlist.js:435 +#, fuzzy +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "Vai atzÄ«mÄ“t visus rakstus %s kÄ lasÄ«tus?" + +#: js/feedlist.js:438 +#, fuzzy +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "Vai atzÄ«mÄ“t visus rakstus %s kÄ lasÄ«tus?" + +#: js/feedlist.js:441 +#, fuzzy +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "Vai atzÄ«mÄ“t visus rakstus %s kÄ lasÄ«tus?" + +#: js/functions.js:615 +msgid "Error explained" +msgstr "" + +#: js/functions.js:697 +msgid "Upload complete." +msgstr "" + +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "DzÄ“st saglabÄto barotnes ikonu?" + +#: js/functions.js:726 +#, fuzzy +msgid "Removing feed icon..." +msgstr "DzÄ“st saglabÄto barotnes ikonu?" + +#: js/functions.js:731 +#, fuzzy +msgid "Feed icon removed." +msgstr "Barotne netika atrasta." + +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "LÅ«dzu norÄdiet augÅ¡uplÄdÄ“jamo attÄ“la failu." + +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "AugÅ¡uplÄdÄ“t Å¡ai barotnei jaunu ikonu?" + +#: js/functions.js:756 +#, fuzzy +msgid "Uploading, please wait..." +msgstr "IelÄdÄ“, lÅ«dzu gaidiet..." + +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "LÅ«dzu ievadiet etiÄ·etes uzrakstu:" + +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "NeizdevÄs izveidot etiÄ·eti: nav uzraksta." + +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "PasÅ«tÄ«t barotni" + +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "" + +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "PasÅ«tÄ«ta barotne %s" + +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "NorÄdÄ«tais URL ir nepareizs." + +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "NorÄdÄ«tajÄ URL nav nevienas barotnes." + +#: js/functions.js:874 +#, fuzzy +msgid "Expand to select feed" +msgstr "MainÄ«t izvÄ“lÄ“tÄs barotnes" + +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "NeizdevÄs lejuplÄdÄ“t norÄdÄ«to URL: %s" + +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "" + +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "JÅ«s jau esat pasÅ«tÄ«jis Å¡o barotni." + +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "MainÄ«t likumu" + +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "MainÄ«t barotni" + +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "VairÄk barotnes" + +#: js/functions.js:1878 +msgid "Help" +msgstr "PalÄ«dzÄ«ba" + +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "DzÄ“st kategoriju %s? Visas iekļautÄs barotnes tiks pÄrvietotas uz NekategorizÄ“ts kategoriju." + +#: js/prefs.js:1089 +#, fuzzy +msgid "Removing category..." +msgstr "DzÄ“st kategoriju..." + +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "DzÄ“st izvÄ“lÄ“tÄs kategorijas?" + +#: js/prefs.js:1113 +#, fuzzy +msgid "Removing selected categories..." +msgstr "Dzēš izvÄ“lÄ“tÄs kategorijas..." + +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "Nav izvÄ“lÄ“ta kategorija." + +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "Kategorijas virsraksts:" + +#: js/prefs.js:1138 +#, fuzzy +msgid "Creating category..." +msgstr "Izveidot filtru..." + +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "Barotnes bez neseniem jaunumiem" + +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "Aizvietot esoÅ¡o OPML publicÄ“to adresi ar jauno vÄ“rtÄ«bu?" + +#: js/prefs.js:1303 +#, fuzzy +msgid "Clearing feed..." +msgstr "Dzēš barotņu datus..." + +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "Atjaunot rakstus izvÄ“lÄ“tajÄs barotnÄ“s?" + +#: js/prefs.js:1326 +#, fuzzy +msgid "Rescoring selected feeds..." +msgstr "Atjauno rakstus izvÄ“lÄ“tajÄs barotnÄ“s..." + +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "PÄrvÄ“rtÄ“t visus rakstus? Tas var prasÄ«t ilgu laiku." + +#: js/prefs.js:1349 +#, fuzzy +msgid "Rescoring feeds..." +msgstr "PÄrvÄ“rtÄ“ barotni..." + +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "AtstatÄ«t iezÄ«mÄ“tÄs etiÄ·etes uz noklusÄ“tajÄm krÄsÄm?" + +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "Profilu iestatÄ«jumi" + +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "DzÄ“st izvÄ“lÄ“tos profilus? AktÄ«vie un noklusÄ“tie profili netiks dzÄ“sti." + +#: js/prefs.js:1415 +#, fuzzy +msgid "Removing selected profiles..." +msgstr "Dzēš iezÄ«mÄ“tos profilus..." + +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "Nav izvÄ“lÄ“ts profils." + +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "AktivizÄ“t izvÄ“lÄ“to profilu?" + +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "LÅ«dzu norÄdiet aktivizÄ“jamo profilu." + +#: js/prefs.js:1459 +#, fuzzy +msgid "Creating profile..." +msgstr "Izveido profilu..." + +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "Tas padarÄ«s nederÄ«gus visu iepriekÅ¡ izveidoto barotņu URLus. TurpinÄt?" + +#: js/prefs.js:1525 +#, fuzzy +msgid "Generated URLs cleared." +msgstr "Izveidot jaunu URL" + +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "EtiÄ·eÅ¡u redaktors" + +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "JÅ«s nevarat atteikties no kategorijas." + +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "Atcelt meklēšanu" + +#: js/viewfeed.js:174 +#, fuzzy +msgid "New articles found, reload feed to continue." +msgstr "Netika atrasti raksti, ko rÄdÄ«t." + +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Atzvaigžņot rakstu" + +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "Zvaigžņot rakstu" + +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "AtpublicÄ“t rakstu" + +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "PublicÄ“t rakstu" + +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "izvÄ“lÄ“ts %d raksts" +msgstr[1] "izvÄ“lÄ“ti %d raksti" + +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "Nav izvÄ“lÄ“ts raksts." + +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "Nav atrasti iezÄ«mÄ“jamie raksti" + +#: js/viewfeed.js:1452 +#, fuzzy +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "IezÄ«mÄ“t %d rakstu kÄ lasÄ«tu?" +msgstr[1] "IezÄ«mÄ“t %d rakstus kÄ lasÄ«tus?" + +#: js/viewfeed.js:1967 +#, fuzzy +msgid "Display article URL" +msgstr "ParÄdÄ«t URL" + +#~ msgid "Select by tags..." +#~ msgstr "AtlasÄ«t pÄ“c iezÄ«mÄ“m..." + +#~ msgid "Limit search to:" +#~ msgstr "Ierobežot meklēšanu:" + +#~ msgid "This feed" +#~ msgstr "Å ajÄ barotnÄ“" + +#~ msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation." +#~ msgstr "Sarežģītas izteiksmes testÄ“jot var neatgriezt rezultÄtu sakarÄ ar datu bÄzes vai servera regulÄro izteiksmju implementÄciju." + +#~ msgid "Old password cannot be blank." +#~ msgstr "VecÄ parole nedrÄ«kst bÅ«t tukÅ¡a" + +#~ msgid "New password cannot be blank." +#~ msgstr "JaunÄ parole nedrÄ«kst bÅ«t tukÅ¡a" + +#~ msgid "Entered passwords do not match." +#~ msgstr "IevadÄ«tÄs paroles nav vienÄdas." + +#~ msgid "Function not supported by authentication module." +#~ msgstr "Funkiju neatbalsta autentifikÄcijas modulis." + +#~ msgid "Match:" +#~ msgstr "AtbilstÄ«ba:" + +#~ msgid "Any" +#~ msgstr "JebkurÅ¡" + +#~ msgid "All tags." +#~ msgstr "Visas iezÄ«mes." + +#~ msgid "Which Tags?" +#~ msgstr "Kuras iezÄ«mes?" + +#~ msgid "Display entries" +#~ msgstr "RÄdÄ«t ierakstus" + +#~ msgid "Select item(s) by tags" +#~ msgstr "AtlasÄ«t vienumus pÄ“c iezÄ«mÄ“m" + +#~ msgid "Unread First" +#~ msgstr "NelasÄ«tos vispirms" + +#~ msgid "Unknown option: %s" +#~ msgstr "NezinÄma iespÄ“ja %s." + +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "Ir pieejama jauna Tiny Tiny RSS versija!" + +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "NeizdevÄs validÄ“t sesiju (mainÄ«jies lietotÄja aÄ£ents)" + +#~ msgid "Assign articles to labels automatically" +#~ msgstr "Pievienot rakstu iezÄ«mes automÄtiski" + +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "Ir pieejama jauna Tiny Tiny RSS versija (%s)." + +#~ msgid "You can update using built-in updater in the Preferences or by using update.php" +#~ msgstr "JÅ«s varat veikt atjaunojumus, izmantojot iestatÄ«jumos norÄdÄ«to atjaunoÅ¡anas procesu, vai arÄ« atverot update.php lapu" + +#~ msgid "See the release notes" +#~ msgstr "Skatiet laidiena piezÄ«mes" + +#~ msgid "Download" +#~ msgstr "LejuplÄdÄ“t" + +#~ msgid "Error receiving version information or no new version available." +#~ msgstr "Jauna versija nav pieejama, vai arÄ« radÄs kļūda, saņemot versijas informÄciju." + +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Atjaunot Tiny Tiny RSS" + +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "JÅ«su Tiny Tiny RSS ir aktuÄls." + +#~ msgid "Force update" +#~ msgstr "Uzspiest atjaunojumus" + +#~ msgid "Do not close this dialog until updating is finished." +#~ msgstr "LÅ«dzu neaizveriet logu lÄ«dz ir pabeigta atjaunoÅ¡ana." + +#~ msgid "It is suggested to backup your tt-rss directory first." +#~ msgstr "IesakÄm vispirms izveidot jÅ«su tt-rss mapei rezerves kopiju." + +#~ msgid "Your database will not be modified." +#~ msgstr "JÅ«su datubÄze netiks mainÄ«ta." + +#~ 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 "JÅ«su tekoÅ¡Ä tt-rss mape netiks mainÄ«ta. TÄ tiks pÄrsaukta un tiks atstÄta vecÄkajÄ mapÄ“. Jums bÅ«s iespÄ“ja migrÄ“t jÅ«su pielÄgotos failus pÄ“c atjaunoÅ¡anas beigÄm." + +#~ msgid "Ready to update." +#~ msgstr "Gatavs atjaunoÅ¡anai." + +#~ msgid "Start update" +#~ msgstr "SÄkt atjaunoÅ¡anu" + +#~ msgid "Backup your tt-rss directory before continuing. Please type 'yes' to continue." +#~ msgstr "LÅ«dzu, pirms turpinÄt izveidojiet jÅ«su tt-rss rezerves kopiju. Ievadiet 'yes', lai turpinÄtu." + +#~ msgid "New version available!" +#~ msgstr "Ir pieejama jauna versija!" + +#~ msgid "From:" +#~ msgstr "No:" + +#~ msgid "Select:" +#~ msgstr "IezÄ«mÄ“t:" + +#~ msgid "mark as read" +#~ msgstr "iezÄ«mÄ“t kÄ lasÄ«tu" + +#~ msgid "Change password to" +#~ msgstr "NomainÄ«t paroli uz" + +#~ msgid "E-mail: " +#~ msgstr "E-pasts:" + +#~ msgid "Login field cannot be blank." +#~ msgstr "PieteikÅ¡anÄs lauks nevar bÅ«t tukÅ¡s." + +#, fuzzy +#~ msgid "Saving user..." +#~ msgstr "Pievieno lietotÄju..." + +#, fuzzy +#~ msgid "Toggle marked" +#~ msgstr "PÄrslÄ“gt zvaigžņoÅ¡anu" + +#~ msgid "(Un)hide empty categories" +#~ msgstr "(Ne)slÄ“pt tukÅ¡Äs kategorijas" + +#~ msgid "Published articles and generated feeds" +#~ msgstr "PublicÄ“tie raksti un sagatavotÄs barotnes" + +#~ msgid "Articles shared by URL" +#~ msgstr "Raksti, kas kopÄ«goti ar URL" + +#~ msgid "These feeds have not been updated because of errors:" +#~ msgstr "Å Ä«s barotnes netika atjaunotas sekojoÅ¡u kļūdu dēļ:" + +#, fuzzy +#~ msgid "Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings." +#~ msgstr "" +#~ "JÅ«su pÄrlÅ«kprogramma neatbalsta Javascript, kas ir nepiecieÅ¡ams\n" +#~ "\t\t\tlai šī programma strÄdÄtu pareizi. LÅ«dzu pÄrbaudiet savas\n" +#~ "\t\t\tpÄrlÅ«kprogrammas iestatÄ«jumus." + +#~ msgid "Hello," +#~ msgstr "SveicinÄti," + +#~ msgid "Regular version" +#~ msgstr "RegulÄrÄ versija" + +#~ msgid "Home" +#~ msgstr "MÄjas" + +#~ msgid "Nothing found (click to reload feed)." +#~ msgstr "Nekas netika atrasts (klikšķiniet, lai pÄrlÄdÄ“tu barotni)." + +#~ msgid "Open regular version" +#~ msgstr "AtvÄ“rt parasto versiju" + +#~ msgid "Enable categories" +#~ msgstr "IeslÄ“gt kategorijas" + +#~ msgid "ON" +#~ msgstr "IESL." + +#~ msgid "OFF" +#~ msgstr "Izsl." + +#~ msgid "Browse categories like folders" +#~ msgstr "PÄrlÅ«kt kategorijas kÄ mapes." + +#~ msgid "Show images in posts" +#~ msgstr "RÄdÄ«t ziņÄs attÄ“lus." + +#~ msgid "Hide read articles and feeds" +#~ msgstr "NerÄdÄ«t lasÄ«tos rakstus barotnÄ“s" + +#~ msgid "Sort feeds by unread count" +#~ msgstr "KÄrtot barotnes pÄ“c nelasÄ«to skaita" + +#~ msgid "Article archive" +#~ msgstr "Raksta arhÄ«vs" + +#~ msgid "Example Pane" +#~ msgstr "PiemÄ“ra panelis" + +#~ msgid "Sample value" +#~ msgstr "PiemÄ“ra vÄ“rtÄ«ba" + +#~ msgid "Set value" +#~ msgstr "IestatÄ«t vÄ“rtÄ«bu" + +#, fuzzy +#~ msgid "Mark %d displayed article as read?" +#~ msgid_plural "Mark %d displayed articles as read?" +#~ msgstr[0] "IezÄ«mÄ“t %d rakstu kÄ lasÄ«tu?" +#~ msgstr[1] "IezÄ«mÄ“t %d rakstus kÄ lasÄ«tus?" + +#, fuzzy +#~ msgid "Error: unable to load article." +#~ msgstr "Kļūda: lÅ«dzu augÅ¡uplÄdÄ“jiet OPML failu." + +#, fuzzy +#~ msgid "No unread feeds." +#~ msgstr "SaglabÄtÄs barotnes" + +#, fuzzy +#~ msgid "Load more..." +#~ msgstr "IelÄdÄ“..." + +#~ msgid "Switch to digest..." +#~ msgstr "PÄrslÄ“gties uz Ä«ssavilkumu..." + +#~ msgid "Show tag cloud..." +#~ msgstr "RadÄ«t iezÄ«mju mÄkoni..." + +#~ msgid "Click to play" +#~ msgstr "Klikšķiniet, lai atskaņotu" + +#~ msgid "Play" +#~ msgstr "Atskaņot" + +#~ msgid "Visit the website" +#~ msgstr "ApmeklÄ“t vietni" + +#~ msgid "Select theme" +#~ msgstr "IzvÄ“lieties tÄ“mu" + +#~ msgid "I have scanned the code and would like to enable OTP" +#~ msgstr "Esmu noskenÄ“jis Å¡o kodu un vÄ“los ieslÄ“gt vienreizlietojamo paroli" + +#~ msgid "Playing..." +#~ msgstr "Atskaņo..." + +#, fuzzy +#~ msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" +#~ msgstr "" +#~ "NeizdevÄs augÅ¡uplÄdÄ“t failu. IespÄ“jams, jums ir jÄpielÄgo upload_max_filesize iestatÄ«jums\n" +#~ "\t\t\t\tPHP.ini failÄ (tekoÅ¡Ä vÄ“rtÄ«ba = %s)" + +#~ msgid "Default interval between feed updates" +#~ msgstr "NoklusÄ“tais barotņu atjaunoÅ¡anas intervÄls " + +#~ msgid "Could not update database" +#~ msgstr "NeizdevÄs atjaunot datu bÄzi" + +#~ msgid "Could not find necessary schema file, need version:" +#~ msgstr "NeizdevÄs atrast nepiecieÅ¡amo shÄ“mas failu, nepiecieÅ¡ama versija:" + +#~ msgid ", found: " +#~ msgstr ", atradu:" + +#~ msgid "Tiny Tiny RSS database is up to date." +#~ msgstr "Tiny Tiny RSS datubÄze ir aktuÄla." + +#~ msgid "Please backup your database before proceeding." +#~ msgstr "LÅ«dzu pirms turpinÄÅ¡anas atjaunojiet datu bÄzi." + +#~ msgid "Your Tiny Tiny RSS database needs update to the latest version (%d to %d)." +#~ msgstr "JÅ«su Tiny Tiny RSS datubÄzi ir nepiecieÅ¡ams atjaunot uz jaunÄko versiju (no %d uz %d)." + +#~ msgid "Performing updates..." +#~ msgstr "Izpildu atjaunojumus..." + +#~ msgid "Updating to version %d..." +#~ msgstr "Atjaunoju uz versiju %d..." + +#~ msgid "Checking version... " +#~ msgstr "PÄrbaudu versiju..." + +#~ msgid "OK!" +#~ msgstr "KÄrtÄ«bÄ!" + +#~ msgid "ERROR!" +#~ msgstr "Kļūda!" + +#, fuzzy +#~ msgid "Finished. Performed %d update up to schema version %d." +#~ msgid_plural "Finished. Performed %d updates up to schema version %d." +#~ msgstr[0] "" +#~ "Pabeigts. IzpildÄ«ju %d shÄ“mas atjaunojumu(s)\n" +#~ "\t\t\tversija %d." +#~ msgstr[1] "" +#~ "Pabeigts. IzpildÄ«ju %d shÄ“mas atjaunojumu(s)\n" +#~ "\t\t\tversija %d." + +#~ msgid "Your database schema is from a newer version of Tiny Tiny RSS." +#~ msgstr "JÅ«su datu bÄzes shÄ“ma ir no jaunÄkas Tiny Tiny RSS versijas." + +#~ msgid "Found schema version: %d, required: %d." +#~ msgstr "Atradu shÄ“mu ar versiju: %d, nepiecieÅ¡ama: %d." + +#~ msgid "Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer version and continue." +#~ msgstr "Nav iespÄ“jams veikt shÄ“mas atjaunoÅ¡anu. LÅ«dzu, pirms turpiniet, atjaunojiet Tiny Tiny RSS failus uz jaunÄku versiju." + +#~ msgid "Enable external API" +#~ msgstr "IeslÄ“gt ÄrÄ“ju API" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Ja šī iespÄ“ja ir ieslÄ“gta, Ä«paÅ¡o barotņu un iezÄ«mju virsraksti tiek grupÄ“ti pÄ“c barotnÄ“m" + +#~ msgid "Title or Content" +#~ msgstr "Virsraksts vai saturs" + +#~ msgid "Link" +#~ msgstr "Saite" + +#~ msgid "Content" +#~ msgstr "Saturs" + +#~ msgid "Article Date" +#~ msgstr "Raksta datums" + +#~ msgid "Set starred" +#~ msgstr "Uzlikt zvaigzni" + +#~ msgid "Assign tags" +#~ msgstr "Pievienot iezÄ«mi" + +#~ msgid "Modify score" +#~ msgstr "MainÄ«t novÄ“rtÄ“jumu" + +#~ 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 "Å Ä« ir vÄ“rtÄ«ga iespÄ“ja, ja izmantojat planÄ“tas tipa agregatorus ar parklÄjoÅ¡iem datiem. Kad tas ir atslÄ“gts, tas no visÄm lÄ«dzÄ«gÄm barotnÄ“m parÄda tikai vienu unikÄlu rakstu." + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Datuma sintakse ir pareiza:" + +#~ msgid "Date syntax is incorrect." +#~ msgstr "Datuma sintakse ir nepareiza." + +#~ msgid "Notice" +#~ msgstr "PiezÄ«me" + +#~ msgid "Tag Cloud" +#~ msgstr "IezÄ«mju mÄkonis" + +#~ msgid "Mark all visible articles in %s as read?" +#~ msgstr "Vai atzÄ«mÄ“t redzamos rakstus %s kÄ lasÄ«tus?" + +#~ msgid "Score" +#~ msgstr "NovÄ“rtÄ“jums" + +#~ msgid "Enable the options you wish to apply using checkboxes on the right:" +#~ msgstr "IeslÄ“dziet iespÄ“jas, iezÄ«mÄ“jot izvÄ“les rÅ«tiņas labajÄ pusÄ“:" + +#~ msgid "New articles available in this feed (click to show)" +#~ msgstr "Å ajÄ barotnÄ“ pieejami jauni raksti (klikšķiniet, lai parÄdÄ«tu)" + +#~ msgid "Pocket" +#~ msgstr "Kabata" + +#~ msgid "Pinterest" +#~ msgstr "Pinterest" + +#~ msgid "Share on identi.ca" +#~ msgstr "KopÄ«got identi.ca" + +#, fuzzy +#~ msgid "Flattr this article." +#~ msgstr "Flattr raksts" + +#~ msgid "Share on Google+" +#~ msgstr "KopÄ«got Google+" + +#, fuzzy +#~ msgid "Share on Twitter" +#~ msgstr "KopÄ«got identi.ca" + +#~ msgid "Show additional preferences" +#~ msgstr "RÄdÄ«t papildu iestatÄ«jumus" + +#~ msgid "Back to feeds" +#~ msgstr "Atpakaļ uz barotnÄ“m" + +#~ msgid "This will clear your stored authentication information for Twitter. Continue?" +#~ msgstr "Tas izdÄ“sÄ«s jÅ«su Twitter autentifikÄcijas informÄciju. TurpinÄt?" + +#~ msgid "Updated" +#~ msgstr "Atjaunotos" + +#~ msgid "Finished: %d articles processed, %d imported, %d feeds created." +#~ msgstr "Pabeigts: %d apstrÄdÄti raksti, %d importÄ“ti, %d izveidotas barotnes." + +#~ msgid "Related" +#~ msgstr "SaistÄ«ts" + +#~ msgid "Notifying %s." +#~ msgstr "Ziņoju %s." + +#~ msgid "Yes" +#~ msgstr "JÄ" + +#~ msgid "No" +#~ msgstr "NÄ“" + +#~ msgid "News" +#~ msgstr "Jaunumi" + +#~ msgid "Move between feeds" +#~ msgstr "PÄrvietoties starp barotnÄ“m" + +#~ msgid "Move between articles" +#~ msgstr "PÄrvietoties starp rakstiem" + +#~ msgid "Active article actions" +#~ msgstr "AktÄ«vÄ raksta darbÄ«bas" + +#~ msgid "Mark articles below/above active one as read" +#~ msgstr "AtzÄ«mÄ“t rakstus virs/zem aktÄ«vÄ kÄ lasÄ«tus" + +#~ msgid "Other actions" +#~ msgstr "Citas darbÄ«bas" + +#~ msgid "Display this help dialog" +#~ msgstr "ParÄdÄ«t palÄ«dzÄ«bas logu" + +#~ msgid "Multiple articles actions" +#~ msgstr "VairÄku rakstu darbÄ«bas" + +#~ msgid "Select starred articles" +#~ msgstr "IezÄ«mÄ“t zvaigžņotos rakstus" + +#~ msgid "Feed actions" +#~ msgstr "Barotnes darbÄ«bas" + +#~ msgid "If viewing category, (un)collapse it" +#~ msgstr "Skatot kategoriju (at/sa)kļaut to" + +#~ msgid "Press any key to close this window." +#~ msgstr "Spiediet jebkuru taustiņu, lai aizvÄ“rtu logu" + +#~ msgid "My Feeds" +#~ msgstr "Manas barotnes" + +#~ msgid "Panel actions" +#~ msgstr "Paneļa darbÄ«bas" + +#~ msgid "Top 25 feeds" +#~ msgstr "25 barotņu tops" + +#~ msgid "Edit feed categories" +#~ msgstr "MainÄ«t barotņu kategorijas" + +#~ msgid "Focus search (if present)" +#~ msgstr "FokusÄ“t meklēšanu (ja ir)" + +#~ msgid "Note: not all actions may be available, depending on Tiny Tiny RSS configuration and your access level." +#~ msgstr "PiezÄ«me: iespÄ“jams, ka visas darbÄ«bas nav pieejamas, atkarÄ«bÄ no Tiny Tiny RSS iestatÄ«jumiem un jÅ«su pieejas tiesÄ«bÄm." + +#~ msgid "Fatal: authentication module %s not found." +#~ msgstr "FatÄla kļūda: netika atrasts autentifikÄcijas modulis %s." + +#~ msgid "Open article in new tab" +#~ msgstr "AtvÄ“rt jaunÄ cilnÄ“" + +#~ msgid "Right-to-left content" +#~ msgstr "Saturs no labÄs uz kreiso pusi" + +#~ msgid "Cache content locally" +#~ msgstr "KeÅ¡ot attÄ“lus lokÄli" + +#~ msgid "Mark posts as updated on content change" +#~ msgstr "AtzÄ«mÄ“t rakstus ar mainÄ«tu saturu kÄ nelasÄ«tus" + +#~ msgid "Loading..." +#~ msgstr "IelÄdÄ“..." + +#~ msgid "View in a tt-rss tab" +#~ msgstr "SkatÄ«t tt-rss cilnÄ“" diff --git a/locale/nb_NO/LC_MESSAGES/messages.mo b/locale/nb_NO/LC_MESSAGES/messages.mo index 99620fe6a9..b7fdedeef1 100644 Binary files a/locale/nb_NO/LC_MESSAGES/messages.mo and b/locale/nb_NO/LC_MESSAGES/messages.mo differ diff --git a/locale/nb_NO/LC_MESSAGES/messages.po b/locale/nb_NO/LC_MESSAGES/messages.po index 97a2257f33..74edf4b1fe 100644 --- a/locale/nb_NO/LC_MESSAGES/messages.po +++ b/locale/nb_NO/LC_MESSAGES/messages.po @@ -7,2580 +7,4790 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS 1.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-22 22:16+0300\n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" "PO-Revision-Date: 2009-05-02 00:10+0100\n" "Last-Translator: Christian Lomsdalen \n" "Language-Team: Norwegian BokmÃ¥l \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: backend.php:107 +#: backend.php:73 msgid "Use default" msgstr "Bruk standard" -#: backend.php:108 +#: backend.php:74 msgid "Never purge" msgstr "Slett aldri" -#: backend.php:109 +#: backend.php:75 msgid "1 week old" msgstr "1 uke gammel" -#: backend.php:110 +#: backend.php:76 msgid "2 weeks old" msgstr "2 uker gammel" -#: backend.php:111 +#: backend.php:77 msgid "1 month old" msgstr "1 mÃ¥ned gammel" -#: backend.php:112 +#: backend.php:78 msgid "2 months old" msgstr "2 mÃ¥neder gammel" -#: backend.php:113 +#: backend.php:79 msgid "3 months old" msgstr "3 mÃ¥neder gammel" -#: backend.php:116 +#: backend.php:82 msgid "Default interval" msgstr "Standard intervall:" -#: backend.php:117 backend.php:127 +#: backend.php:83 +#: backend.php:93 msgid "Disable updates" msgstr "SlÃ¥ av oppdateringer" -#: backend.php:118 backend.php:128 -msgid "Each 15 minutes" +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" msgstr "Hvert 15. minutt" -#: backend.php:119 backend.php:129 -msgid "Each 30 minutes" +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" msgstr "Hvert 30. minutt" -#: backend.php:120 backend.php:130 +#: backend.php:86 +#: backend.php:96 msgid "Hourly" msgstr "PÃ¥ timen" -#: backend.php:121 backend.php:131 -msgid "Each 4 hours" +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" msgstr "Hver 4. time" -#: backend.php:122 backend.php:132 -msgid "Each 12 hours" +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" msgstr "Hver 12. time" -#: backend.php:123 backend.php:133 +#: backend.php:89 +#: backend.php:99 msgid "Daily" msgstr "Daglig" -#: backend.php:124 backend.php:134 +#: backend.php:90 +#: backend.php:100 msgid "Weekly" msgstr "Ukentlig" -#: backend.php:137 tt-rss.php:220 modules/pref-prefs.php:329 -msgid "Default" -msgstr "Standard" - -#: backend.php:138 -msgid "Magpie" -msgstr "Magpie" - -#: backend.php:139 -msgid "SimplePie" -msgstr "SimplePie" - -#: backend.php:148 modules/pref-users.php:126 +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 msgid "User" msgstr "Bruker" -#: backend.php:149 +#: backend.php:104 msgid "Power User" msgstr "Superbruker" -#: backend.php:150 +#: backend.php:105 msgid "Administrator" msgstr "Administrator" -#: backend.php:538 login_form.php:142 modules/backend-rpc.php:61 -#: modules/popup-dialog.php:106 -#, fuzzy -msgid "Default profile" -msgstr "Standard artikkelbegrensning" - -#: errors.php:3 -msgid "Unknown error" -msgstr "Ukjent feil" - -#: errors.php:5 -msgid "" -"This program requires XmlHttpRequest to function properly. Your browser " -"doesn't seem to support it." -msgstr "" -"Dette programmet krever XmlHttpRequest for Ã¥ fungere slik det skal. Din " -"nettleser ser ikke ut til Ã¥ støtte dette." +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "Dette programmet krever XmlHttpRequest for Ã¥ fungere slik det skal. Din nettleser ser ikke ut til Ã¥ støtte dette." -#: errors.php:8 -msgid "" -"This program requires cookies to function properly. Your browser doesn't " -"seem to support them." -msgstr "" -"Dette programmet krever cookies for Ã¥ fungere ordentlig. Din nettleser ser " -"ikke ut til Ã¥ støtte dette." +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "Dette programmet krever cookies for Ã¥ fungere ordentlig. Din nettleser ser ikke ut til Ã¥ støtte dette." -#: errors.php:11 -msgid "Backend sanity check failed" +#: errors.php:15 +#, fuzzy +msgid "Backend sanity check failed." msgstr "Bakgrunnsprogramsjekk feilet" -#: errors.php:13 +#: errors.php:17 msgid "Frontend sanity check failed." msgstr "Frontprogramsjekk feilet" -#: errors.php:15 -msgid "" -"Incorrect database schema version. <a href='update.php'>Please " -"update</a>." -msgstr "" -"Feil databaseskjemautgave. <a href='update.php'>Vennligst oppdater</" -"a>." +#: errors.php:19 +#, fuzzy +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "Feil databaseskjemautgave. <a href='update.php'>Vennligst oppdater</a>." -#: errors.php:17 +#: errors.php:21 msgid "Request not authorized." msgstr "Forespørsel ikke autorisert" -#: errors.php:19 +#: errors.php:23 msgid "No operation to perform." msgstr "Ingen handling Ã¥ utføre" -#: errors.php:21 -msgid "" -"Could not display feed: query failed. Please check label match syntax or " -"local configuration." -msgstr "" -"Kunne ikke vise nyhetsstrøm: spørring feilet. Vennligst sjekk " -"merkelappsyntaks eller den lokale konfigurasjonen" +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "Kunne ikke vise nyhetsstrøm: spørring feilet. Vennligst sjekk merkelappsyntaks eller den lokale konfigurasjonen" -#: errors.php:23 +#: errors.php:27 msgid "Denied. Your access level is insufficient to access this page." -msgstr "" -"Adgang nektet. Ditt adgangsnivÃ¥ er ikke høyt nok for Ã¥ besøke denne siden." +msgstr "Adgang nektet. Ditt adgangsnivÃ¥ er ikke høyt nok for Ã¥ besøke denne siden." -#: errors.php:25 +#: errors.php:29 msgid "Configuration check failed" msgstr "Konfigurasjonssjekken feilet" -#: errors.php:27 -msgid "" -"Your version of MySQL is not currently supported. Please see \n" -"\t\tofficial site for more information." +#: errors.php:31 +#, fuzzy +msgid "Your version of MySQL is not currently supported. Please see official site for more information." msgstr "" "Din utgave av MySQL er i øyeblikket ikke støttet. Vennligst besøk den \n" "\t\toffisielle siden for mer informasjon." -#: errors.php:32 +#: errors.php:35 msgid "SQL escaping test failed, check your database and PHP configuration" -msgstr "" -"SQL escaping testen feilen, sjekk database og PHP konfigurasjonene dine." - -#: functions.php:1928 -msgid "Session failed to validate (incorrect IP)" -msgstr "Sesjonen kunne ikke valideres (feil IP)" - -#: functions.php:1998 -msgid "Incorrect username or password" -msgstr "Feil brukernavn og/eller passord" +msgstr "SQL escaping testen feilen, sjekk database og PHP konfigurasjonene dine." -#: functions.php:2979 modules/popup-dialog.php:391 -#: modules/pref-filters.php:420 -msgid "All feeds" -msgstr "Alle Nyhetsstrømmer" - -#: functions.php:3011 functions.php:3050 functions.php:4447 functions.php:4475 -#: modules/backend-rpc.php:859 modules/pref-feeds.php:1333 -msgid "Uncategorized" -msgstr "Ukategorisert" - -#: functions.php:3040 functions.php:3689 modules/backend-rpc.php:864 -#: mobile/functions.php:170 -msgid "Special" -msgstr "Snarveier" - -#: functions.php:3042 functions.php:3691 prefs.php:114 -#: modules/backend-rpc.php:869 help/4.php:12 mobile/functions.php:197 -msgid "Labels" -msgstr "Merkelapper" - -#: functions.php:3087 help/3.php:60 offline.js:493 offline.js:1425 -msgid "Starred articles" -msgstr "Favorittartikler" +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "Nyhetsstrømmen ble ikke funnet" -#: functions.php:3089 modules/pref-feeds.php:1492 help/3.php:61 -msgid "Published articles" -msgstr "Publiserte artikler" +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "Brukeren ble ikke funnet" -#: functions.php:3091 help/3.php:59 -msgid "Fresh articles" -msgstr "Ferske artikler" +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "laster, vennligst vent" -#: functions.php:3093 help/3.php:58 offline.js:488 offline.js:1427 -msgid "All articles" -msgstr "Alle artikler" +#: index.php:167 +msgid "Collapse feedlist" +msgstr "Skjul nyhetskanalsslisten" -#: functions.php:3095 +#: index.php:170 #, fuzzy -msgid "Archived articles" +msgid "Show articles" msgstr "Lagrede artikler" -#: functions.php:4200 -msgid "Generated feed" -msgstr "Generert nyhetsstrøm" +#: index.php:173 +msgid "Adaptive" +msgstr "Tilpasset" -#: functions.php:4205 functions.php:5553 modules/popup-dialog.php:82 -#: modules/pref-feeds.php:1087 modules/pref-feeds.php:1297 -#: modules/pref-filters.php:377 modules/pref-labels.php:183 -#: modules/pref-users.php:419 offline.js:408 -msgid "Select:" -msgstr "Velg:" +#: index.php:174 +msgid "All Articles" +msgstr "Alle artikler" -#: functions.php:4206 modules/popup-dialog.php:83 modules/pref-feeds.php:1088 -#: modules/pref-feeds.php:1298 modules/pref-filters.php:378 -#: modules/pref-labels.php:184 modules/pref-users.php:420 -msgid "All" -msgstr "Alle" +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "Favoritter" -#: functions.php:4207 functions.php:4224 tt-rss.php:213 +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "Publisert" + +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 msgid "Unread" msgstr "Ulest" -#: functions.php:4208 -msgid "Invert" -msgstr "Motsatt" +#: index.php:178 +msgid "With Note" +msgstr "" -#: functions.php:4209 modules/popup-dialog.php:84 modules/pref-feeds.php:1089 -#: modules/pref-feeds.php:1299 modules/pref-filters.php:379 -#: modules/pref-labels.php:185 modules/pref-users.php:421 -msgid "None" -msgstr "Ingen" +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Ignorer poenggivning" -#: functions.php:4217 tt-rss.php:178 offline.js:184 -msgid "Actions..." -msgstr "Handlinger..." +#: index.php:182 +#, fuzzy +msgid "Sort articles" +msgstr "Lagrede artikler" -#: functions.php:4223 -msgid "Selection toggle:" -msgstr "Marker utvalg:" +#: index.php:185 +msgid "Default" +msgstr "Standard" -#: functions.php:4225 tt-rss.php:212 -msgid "Starred" -msgstr "Favoritter" +#: index.php:186 +msgid "Newest first" +msgstr "" -#: functions.php:4226 -msgid "Published" -msgstr "Publisert" +#: index.php:187 +msgid "Oldest first" +msgstr "" -#: functions.php:4227 -msgid "Selection:" -msgstr "Utvalg:" +#: index.php:188 +msgid "Title" +msgstr "Tittel" -#: functions.php:4228 localized_schema.php:16 tt-rss.php:187 tt-rss.php:230 +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 msgid "Mark as read" msgstr "Marker som lest" -#: functions.php:4234 -msgid "Archive" +#: index.php:195 +msgid "Older than one day" msgstr "" -#: functions.php:4236 -#, fuzzy -msgid "Move back" -msgstr "GÃ¥ tilbake" +#: index.php:198 +msgid "Older than one week" +msgstr "" -#: functions.php:4237 -#, fuzzy -msgid "Delete" -msgstr "Standard" +#: index.php:201 +msgid "Older than two weeks" +msgstr "" -#: functions.php:4242 -msgid "Assign label:" -msgstr "Tildel stikkord:" +#: index.php:217 +msgid "Communication problem with server." +msgstr "" -#: functions.php:4283 -msgid "Click to collapse category" -msgstr "Velg for Ã¥ slÃ¥ sammen kategorien" +#: index.php:223 +msgid "Actions..." +msgstr "Handlinger..." -#: functions.php:4493 -msgid "No feeds to display." -msgstr "Ingen nyhetstrømmer Ã¥ vise" +#: index.php:225 +#, fuzzy +msgid "Preferences..." +msgstr "Innstillinger" -#: functions.php:4510 -msgid "Tags" -msgstr "Stikkord" +#: index.php:226 +msgid "Search..." +msgstr "Søk..." -#: functions.php:4669 -msgid "audio/mpeg" -msgstr "Lyd/mpeg" +#: index.php:227 +msgid "Feed actions:" +msgstr "Nyhetsstrømshandlinger:" -#: functions.php:4795 -msgid " - " -msgstr "-" +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "Abonner pÃ¥ nyhetsstrøm..." -#: functions.php:4820 functions.php:5580 -msgid "Edit tags for this article" -msgstr "Rediger stikkordene for denne artikkelen" +#: index.php:229 +msgid "Edit this feed..." +msgstr "Rediger nyhetsstrømmen..." -#: functions.php:4826 functions.php:5563 -msgid "Show article summary in new window" -msgstr "Ã…pne artikkelsammendraget i nytt nettleservindu" +#: index.php:230 +msgid "Rescore feed" +msgstr "Sett poeng pÃ¥ nytt for nyhetskanalene" -#: functions.php:4833 functions.php:5570 -msgid "Publish article with a note" -msgstr "Publiser artikelen med notat" +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "Avabonner" -#: functions.php:4850 functions.php:5441 -msgid "Originally from:" -msgstr "" +#: index.php:232 +msgid "All feeds:" +msgstr "Alle nyhetsstrømmer:" -#: functions.php:4863 functions.php:5454 -#, fuzzy -msgid "Feed URL" -msgstr "Nyhetsstrøm" +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Skjul/vis leste nyhetsstrømmer" -#: functions.php:4903 functions.php:5484 -msgid "unknown type" -msgstr "Ukjent type" +#: index.php:235 +msgid "Other actions:" +msgstr "Andre handlinger:" -#: functions.php:4943 functions.php:5527 -msgid "Attachment:" -msgstr "Vedlegg:" +#: index.php:236 +#: include/functions2.php:78 +#, fuzzy +msgid "Toggle widescreen mode" +msgstr "Tillatt endringer i kategorirekkefølgen?" -#: functions.php:4945 functions.php:5529 -msgid "Attachments:" -msgstr "Vedlegg:" +#: index.php:237 +msgid "Create label..." +msgstr "Lag merkelapp..." -#: functions.php:4965 prefs.php:142 tt-rss.php:101 modules/help.php:21 -#: modules/popup-dialog.php:53 modules/popup-dialog.php:154 -#: modules/popup-dialog.php:181 modules/popup-dialog.php:230 -#: modules/popup-dialog.php:575 modules/popup-dialog.php:634 -#: modules/pref-feeds.php:1140 modules/pref-users.php:96 -msgid "Close this window" -msgstr "Lukk dette vinduet" +#: index.php:238 +msgid "Create filter..." +msgstr "Lag filter..." -#: functions.php:5021 -msgid "Feed not found." -msgstr "Nyhetsstrømmen ble ikke funnet" +#: index.php:239 +#, fuzzy +msgid "Keyboard shortcuts help" +msgstr "Tastatursnarveier" -#: functions.php:5090 -msgid "" -"Could not display feed (query failed). Please check label match syntax or " -"local configuration." +#: index.php:248 +msgid "Logout" +msgstr "Logg ut" + +#: index.php:254 +msgid "Updates are available from Git." msgstr "" -"Kunne ikke vise nyhetsstrøm (spørring feilet). Vennligst sjekk " -"merkelappsyntaksen eller lokal konfigurasjon." -#: functions.php:5254 functions.php:5341 -msgid "mark as read" -msgstr "marker som lest" +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "Innstillinger" -#: functions.php:5417 functions.php:5424 -msgid "Click to expand article" -msgstr "Trykk for Ã¥ utvide artikkel" +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "Tastatursnarveier" -#: functions.php:5587 -msgid "toggle unread" -msgstr "sett som ulest" +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Forlat innstillinger" -#: functions.php:5606 -msgid "No unread articles found to display." -msgstr "Ingen uleste artikler funnet som kunne vises" +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Nyhetsstrømmer" -#: functions.php:5609 -msgid "No updated articles found to display." -msgstr "Ingen oppdaterte artikler funnet som kunne vises" +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "Filtre" -#: functions.php:5612 -msgid "No starred articles found to display." -msgstr "Ingen markerte artikler som kan vises" +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Merkelapper" -#: functions.php:5616 -msgid "" -"No articles found to display. You can assign articles to labels manually " -"(see the Actions menu above) or use a filter." +#: prefs.php:133 +msgid "Users" +msgstr "Brukere" + +#: prefs.php:136 +msgid "System" msgstr "" -"Ingen artikler ble funnet. Du kan gi artikler merkelapper manuelt (se aksjon-" -"menyen ovenfor) eller bruke et filter." -#: functions.php:5618 offline.js:443 -msgid "No articles found to display." -msgstr "Ingen artikler funnet som kan vises" +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "Lag ny konto" -#: functions.php:6362 tt-rss.php:192 -msgid "Create label..." -msgstr "Lag merkelapp..." +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "Registrering av nye brukere er administrativt avskrudd" -#: functions.php:6375 -msgid "(remove)" -msgstr "(fjern)" +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Returner til Tiny Tiny RSS" -#: functions.php:6427 -msgid "no tags" -msgstr "Ingen stikkord" +#: register.php:218 +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 midlertidige passord vil bli sendt til den oppgitte e-posten. Kontoer, som ikke blir logget inn pÃ¥, blir slettet automatisk 24 timer etter at passordet ble sendt." -#: functions.php:6456 -msgid "edit note" -msgstr "Rediger notat" +#: register.php:224 +msgid "Desired login:" +msgstr "Ønsket brukernavn:" -#: localized_schema.php:9 tt-rss.php:222 modules/popup-dialog.php:381 -#: modules/pref-feeds.php:1310 modules/pref-feeds.php:1369 -msgid "Title" -msgstr "Tittel" +#: register.php:227 +msgid "Check availability" +msgstr "Sjekk tilgjengeligheten" -#: localized_schema.php:10 -msgid "Title or Content" -msgstr "Tittel eller innhold" +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "E-post:" -#: localized_schema.php:11 -msgid "Link" -msgstr "Lenke" +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "Hvor mye er to pluss to:" -#: localized_schema.php:12 modules/popup-dialog.php:382 -msgid "Content" -msgstr "Innhold" +#: register.php:235 +msgid "Submit registration" +msgstr "Send registreringen" -#: localized_schema.php:13 -msgid "Article Date" -msgstr "Artikkeldato" +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "Registreringsinformasjonen din er ufullstendig." -#: localized_schema.php:15 -msgid "Filter article" -msgstr "Filtrer artikkel" +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "Beklager, brukernavn er allerede tatt." -#: localized_schema.php:17 -msgid "Set starred" -msgstr "Sett som favorittartikkel" +#: register.php:287 +msgid "Registration failed." +msgstr "Registrering feilet" -#: localized_schema.php:18 viewfeed.js:545 viewfeed.js:659 -msgid "Publish article" -msgstr "Publiser artiklen" +#: register.php:334 +msgid "Account created successfully." +msgstr "Kontoen ble opprettet med suksess." -#: localized_schema.php:19 -msgid "Assign tags" -msgstr "Tildel stikkord" +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "Registrering av nye brukere er stengt." -#: localized_schema.php:20 -msgid "Assign label" -msgstr "Tildel stikkord" +#: update.php:62 +#, fuzzy +msgid "Tiny Tiny RSS data update script." +msgstr "Tiny Tiny RSS-databasen er oppdatert" -#: localized_schema.php:24 -msgid "General" -msgstr "Generelt" +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "Ukategorisert" -#: localized_schema.php:26 -msgid "Allow duplicate posts" -msgstr "Tillatt duplikate artikler" +#: include/feedbrowser.php:84 +#, fuzzy, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "Favorittartikler" +msgstr[1] "Favorittartikler" + +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "Ingen nyhetsstrømmer ble funnet." + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "Navigasjon" + +#: include/functions2.php:53 +#, fuzzy +msgid "Open next feed" +msgstr "Generert nyhetsstrøm" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "" + +#: include/functions2.php:55 +#, fuzzy +msgid "Open next article" +msgstr "Vis opprinnelig artikkelinnhold" + +#: include/functions2.php:56 +#, fuzzy +msgid "Open previous article" +msgstr "Vis opprinnelig artikkelinnhold" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Vis søkevinduet" + +#: include/functions2.php:62 +#, fuzzy +msgid "Article" +msgstr "Alle artikler" + +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "Sett som favoritt" + +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "Sett som publisert" + +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "Sett som ulest" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Endre stikkord" + +#: include/functions2.php:67 +#, fuzzy +msgid "Dismiss selected" +msgstr "Fjerne merkede artikler fra merkelappen?" + +#: include/functions2.php:68 +#, fuzzy +msgid "Dismiss read" +msgstr "Publiser artiklen" + +#: include/functions2.php:69 +#, fuzzy +msgid "Open in new window" +msgstr "Ã…pne artikkel i nytt nettleservindu" + +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +#, fuzzy +msgid "Mark below as read" +msgstr "Marker som lest" + +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +#, fuzzy +msgid "Mark above as read" +msgstr "Marker som lest" + +#: include/functions2.php:72 +#, fuzzy +msgid "Scroll down" +msgstr "Alt ferdig." + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "" + +#: include/functions2.php:74 +#, fuzzy +msgid "Select article under cursor" +msgstr "Velg artikkelen under musepekeren" + +#: include/functions2.php:75 +#, fuzzy +msgid "Email article" +msgstr "Alle artikler" + +#: include/functions2.php:76 +#, fuzzy +msgid "Close/collapse article" +msgstr "Fjern artikler" + +#: include/functions2.php:77 +#, fuzzy +msgid "Toggle article expansion (combined mode)" +msgstr "Tillatt endringer i kategorirekkefølgen?" + +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +#, fuzzy +msgid "Toggle embed original" +msgstr "Tillatt endringer i kategorirekkefølgen?" + +#: include/functions2.php:80 +#, fuzzy +msgid "Article selection" +msgstr "Handlinger for aktive artikler" + +#: include/functions2.php:81 +#, fuzzy +msgid "Select all articles" +msgstr "Fjern artikler" + +#: include/functions2.php:82 +#, fuzzy +msgid "Select unread" +msgstr "Slett uleste artikler" + +#: include/functions2.php:83 +#, fuzzy +msgid "Select starred" +msgstr "Sett som favorittartikkel" + +#: include/functions2.php:84 +#, fuzzy +msgid "Select published" +msgstr "Slett uleste artikler" + +#: include/functions2.php:85 +#, fuzzy +msgid "Invert selection" +msgstr "Handlinger for aktive artikler" + +#: include/functions2.php:86 +#, fuzzy +msgid "Deselect everything" +msgstr "Fjern artikler" + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Nyhetsstrøm" + +#: include/functions2.php:88 +#, fuzzy +msgid "Refresh current feed" +msgstr "Oppdater aktive nyhetsstrømmer" + +#: include/functions2.php:89 +#, fuzzy +msgid "Un/hide read feeds" +msgstr "Skjul/vis leste nyhetsstrømmer" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "Abonner pÃ¥ nyhetsstrøm" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Rediger nyhetsstrømmen" + +#: include/functions2.php:93 +#, fuzzy +msgid "Reverse headlines" +msgstr "Motsatt titteloversikt (eldste først)" + +#: include/functions2.php:94 +#, fuzzy +msgid "Debug feed update" +msgstr "Alle nyhetsstrømmer er oppdatert" + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "Marker alle nyhetsstrømmer som lest" + +#: include/functions2.php:96 +#, fuzzy +msgid "Un/collapse current category" +msgstr "Velg for Ã¥ slÃ¥ sammen kategorien" + +#: include/functions2.php:97 +#, fuzzy +msgid "Toggle combined mode" +msgstr "Tillatt endringer i kategorirekkefølgen?" + +#: include/functions2.php:98 +#, fuzzy +msgid "Toggle auto expand in combined mode" +msgstr "Tillatt endringer i kategorirekkefølgen?" + +#: include/functions2.php:99 +#, fuzzy +msgid "Go to" +msgstr "GÃ¥ til..." + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "Alle artikler" + +#: include/functions2.php:101 +#, fuzzy +msgid "Fresh" +msgstr "Oppdater" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Tag-sky" + +#: include/functions2.php:106 +#, fuzzy +msgid "Other" +msgstr "Andre:" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "Lag merkelapp" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "Lag filter" + +#: include/functions2.php:109 +#, fuzzy +msgid "Un/collapse sidebar" +msgstr "Skjul nyhetskanalsslisten" + +#: include/functions2.php:110 +#, fuzzy +msgid "Show help dialog" +msgstr "Vis søkevinduet" + +#: include/functions2.php:636 +#, fuzzy, php-format +msgid "Search results: %s" +msgstr "Søkeresultat" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +#, fuzzy +msgid "comment" +msgid_plural "comments" +msgstr[0] "Kommentarer" +msgstr[1] "Kommentarer" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +msgid "comments" +msgstr "Kommentarer" + +#: include/functions2.php:1303 +msgid " - " +msgstr "-" + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "Ingen stikkord" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "Rediger stikkordene for denne artikkelen" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +#, fuzzy +msgid "Originally from:" +msgstr "Vis opprinnelig artikkelinnhold" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +#, fuzzy +msgid "Feed URL" +msgstr "Nyhetsstrøm" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "Lukk dette vinduet" + +#: include/functions2.php:1622 +#, fuzzy +msgid "(edit note)" +msgstr "Rediger notat" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "Ukjent type" + +#: include/functions2.php:1953 +#, fuzzy +msgid "Attachments" +msgstr "Vedlegg:" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "Snarveier" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Alle Nyhetsstrømmer" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Favorittartikler" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Publiserte artikler" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "Ferske artikler" + +#: include/functions.php:1975 +#, fuzzy +msgid "Archived articles" +msgstr "Lagrede artikler" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "Brukernavn:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "Passord:" + +#: include/login_form.php:206 +#, fuzzy +msgid "I forgot my password" +msgstr "Feil brukernavn og/eller passord" + +#: include/login_form.php:212 +#, fuzzy +msgid "Profile:" +msgstr "Fil:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +#, fuzzy +msgid "Default profile" +msgstr "Standard artikkelbegrensning" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "" + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "Logg inn" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "Sesjonen kunne ikke valideres (feil IP)" + +#: include/sessions.php:67 +#, fuzzy +msgid "Session failed to validate (schema version changed)" +msgstr "Sesjonen kunne ikke valideres (feil IP)" + +#: include/sessions.php:85 +#, fuzzy +msgid "Session failed to validate (user not found)" +msgstr "Sesjonen kunne ikke valideres (feil IP)" + +#: include/sessions.php:94 +#, fuzzy +msgid "Session failed to validate (password changed)" +msgstr "Sesjonen kunne ikke valideres (feil IP)" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "" + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Tastatursnarveier" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Hjelp-emne kunne ikke bli funnet" + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +#, fuzzy +msgid "Share with Tiny Tiny RSS" +msgstr "Returner til Tiny Tiny RSS" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Tittel:" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "Nettadresse:" + +#: classes/handler/public.php:510 +#, fuzzy +msgid "Content:" +msgstr "Innhold" + +#: classes/handler/public.php:512 +#, fuzzy +msgid "Labels:" +msgstr "Merkelapper" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "" + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "Avbryt" + +#: classes/handler/public.php:555 +#, fuzzy +msgid "Not logged in" +msgstr "Sist innlogget" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Feil brukernavn og/eller passord" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "Abonnerer allerede pÃ¥ %s" + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "Abonnerer pÃ¥ %s" + +#: classes/handler/public.php:672 +#, fuzzy, php-format +msgid "Could not subscribe to %s." +msgstr "Abonnerer allerede pÃ¥ %s" + +#: classes/handler/public.php:675 +#, fuzzy, php-format +msgid "No feeds found in %s." +msgstr "Ingen nyhetsstrømmer ble funnet." + +#: classes/handler/public.php:678 +#, fuzzy +msgid "Multiple feed URLs found." +msgstr "Adresse for nyhetsstrømmen for offentliggjorte innlegg har endret seg." + +#: classes/handler/public.php:682 +#, fuzzy, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "Abonnerer allerede på %s" + +#: classes/handler/public.php:700 +#, fuzzy +msgid "Subscribe to selected feed" +msgstr "Fjern abonnement på valgte nyhetsstrømmer" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Rediger abonnementsalternativer" + +#: classes/handler/public.php:762 +#, fuzzy +msgid "Password recovery" +msgstr "Passord:" + +#: classes/handler/public.php:805 +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "" + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "Nullstill passordet" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "" + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +#, fuzzy +msgid "Go back" +msgstr "Gå tilbake" + +#: classes/handler/public.php:878 +#, fuzzy +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] Varsel om endring av passord" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "" + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "Adgangsnivået ditt er for lavt for å kjøre dette scriptet" + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "Databaseoppdaterer" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Utfør oppdateringene" + +#: classes/feeds.php:53 +#, fuzzy +msgid "View as RSS feed" +msgstr "Se nyhetsstrømmene" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +#, fuzzy +msgid "View as RSS" +msgstr "Se stikkord" + +#: classes/feeds.php:62 +#, fuzzy, php-format +msgid "Last updated: %s" +msgstr "Siste oppdatering:" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "Alle" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Motsatt" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Ingen" + +#: classes/feeds.php:99 +#, fuzzy +msgid "More..." +msgstr "Laster hjelp..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Marker utvalg:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Utvalg:" + +#: classes/feeds.php:110 +#, fuzzy +msgid "Set score" +msgstr "Poeng" + +#: classes/feeds.php:113 +#, fuzzy +msgid "Archive" +msgstr "Artikkeldato" + +#: classes/feeds.php:115 +#, fuzzy +msgid "Move back" +msgstr "Gå tilbake" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +#, fuzzy +msgid "Delete" +msgstr "Standard" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +#, fuzzy +msgid "Forward by email" +msgstr "Marker artikkel som favoritt" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Nyhetsstrøm:" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "Nyhetsstrømmen ble ikke funnet" + +#: classes/feeds.php:268 +#, fuzzy +msgid "Never" +msgstr "Slett aldri" + +#: classes/feeds.php:393 +#, fuzzy, php-format +msgid "Imported at %s" +msgstr "Importer" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +#, fuzzy +msgid "mark feed as read" +msgstr "Marker nyhetsstrøm som lest" + +#: classes/feeds.php:608 +#, fuzzy +msgid "Collapse article" +msgstr "Fjern artikler" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "Ingen uleste artikler funnet som kunne vises" + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "Ingen oppdaterte artikler funnet som kunne vises" + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "Ingen markerte artikler som kan vises" + +#: classes/feeds.php:778 +#, fuzzy +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 "Ingen artikler ble funnet. Du kan gi artikler merkelapper manuelt (se aksjon-menyen ovenfor) eller bruke et filter." + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "Ingen artikler funnet som kan vises" + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, fuzzy, php-format +msgid "Feeds last updated at %s" +msgstr "Oppdateringsfeil" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "Noen nyhetsstrømmer har oppdateringsfeil (trykk for detaljer)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "Ingen valgt nyhetsstrøm" + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +#, fuzzy +msgid "Feed or site URL" +msgstr "Nyhetsstrøm" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "Plasser i kategori..." + +#: classes/feeds.php:1036 +#, fuzzy +msgid "Available feeds" +msgstr "Alle Nyhetsstrømmer" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "Autentifisering" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "Logg inn" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +#, fuzzy +msgid "Password" +msgstr "Passord:" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Denne nyhetsstrømmen krever autentifisering" + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "Abonner" + +#: classes/feeds.php:1073 +#, fuzzy +msgid "More feeds" +msgstr "Flere nyhetsstrømmer" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "Søk" + +#: classes/feeds.php:1100 +#, fuzzy +msgid "Popular feeds" +msgstr "Vis nyhetsstrømmer" + +#: classes/feeds.php:1101 +#, fuzzy +msgid "Feed archive" +msgstr "Nyhetsstrømshandlinger" + +#: classes/feeds.php:1104 +#, fuzzy +msgid "limit:" +msgstr "Antall:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "Fjern" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +#, fuzzy +msgid "Search syntax" +msgstr "Søk etter merkelapp" + +#: classes/article.php:25 +#, fuzzy +msgid "Article not found." +msgstr "Nyhetsstrømmen ble ikke funnet" + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "Denne artikkelens stikkord (separert med kommaer):" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Lagre" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "OPML-verktøy" + +#: classes/opml.php:37 +#, fuzzy +msgid "Importing OPML..." +msgstr "Importerer OPML (bruker DOMXML-utvidelsen)..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "Returner til innstillinger" + +#: classes/opml.php:271 +#, fuzzy, php-format +msgid "Adding feed: %s" +msgstr "Legger til nyhetsstrøm..." + +#: classes/opml.php:282 +#, fuzzy, php-format +msgid "Duplicate feed: %s" +msgstr "Lag filter" + +#: classes/opml.php:296 +#, fuzzy, php-format +msgid "Adding label %s" +msgstr "Tildel stikkord" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "" + +#: classes/opml.php:343 +#, fuzzy +msgid "Adding filter..." +msgstr "Legger til nyhetsstrøm..." + +#: classes/opml.php:421 +#, fuzzy, php-format +msgid "Processing category: %s" +msgstr "Plasser i kategori..." + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +#, fuzzy +msgid "Unable to move uploaded file." +msgstr "Feil: Kan ikke laste opp OPMLfil" + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "Feil: Kan ikke laste opp OPMLfil" + +#: classes/opml.php:499 +#, fuzzy +msgid "Error: unable to find moved OPML file." +msgstr "Feil: Kan ikke laste opp OPMLfil" + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Feil under behandling av dokumentet" + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "Adgangsnivået ditt er for lavt for å åpne denne siden." + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +#, fuzzy +msgid "Refresh" +msgstr "Oppdater" + +#: classes/pref/system.php:43 +#, fuzzy +msgid "Clear log" +msgstr "Fjern farger" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Dato" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Brukeren ble ikke funnet" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "Registrert" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Sist innlogget" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "Antall nyhetsstrømmer som abonneres på" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Nyhetsstrømmer som abonneres på" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Tilgangsnivå:" + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Alternativer:" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "La til bruker %s med passordet %s" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "Kunne ikke lage brukeren %s" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "Brukeren %s finnes allerede." + +#: classes/pref/users.php:265 +#, fuzzy, php-format +msgid "Changed password of user %s to %s" +msgstr "" +"Byttet passord forbruker %s\n" +"\t\t\t\t\t til %s" + +#: classes/pref/users.php:267 +#, fuzzy, php-format +msgid "Sending new password of user %s to %s" +msgstr "" +"Byttet passord forbruker %s\n" +"\t\t\t\t\t til %s" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] Varsel om endring av passord" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +#, fuzzy +msgid "Select" +msgstr "Velg:" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Lag bruker" + +#: classes/pref/users.php:346 +#, fuzzy +msgid "Details" +msgstr "Daglig" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Rediger" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Tilgangsnivå" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "Siste innlogging" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Trykk for å endre" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "Ingen brukere er valgt" + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "Ingen matchende brukere ble funnet" + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Marker for å tillate felt" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, fuzzy, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "Rediger nyhetsstrømmen" +msgstr[1] "Rediger nyhetsstrømmen" + +#: classes/pref/feeds.php:556 +#, fuzzy +msgid "Feed Title" +msgstr "Tittel" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "Oppdater" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Slett artikler:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "" + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +#, fuzzy +msgid "Hide from Popular feeds" +msgstr "Skjul fra min nyhetsstrømslisten" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "Inkluder i e-postsammendraget" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Mellomlagre bilder lokalt på serveren" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +#, fuzzy +msgid "Mark updated articles as unread" +msgstr "Marker alle artikler som leste?" + +#: classes/pref/feeds.php:728 +#, fuzzy +msgid "Icon" +msgstr "Handling" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "" + +#: classes/pref/feeds.php:764 +#, fuzzy +msgid "Resubscribe to push updates" +msgstr "Abonnerer på følgende nyhetsstrømmer:" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "" + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Alt ferdig." + +#: classes/pref/feeds.php:1254 +#, fuzzy +msgid "Feeds with errors" +msgstr "Nyhetsstrømsredigerer" + +#: classes/pref/feeds.php:1279 +#, fuzzy +msgid "Inactive feeds" +msgstr "Hele nyhetsstrømmen" + +#: classes/pref/feeds.php:1316 +#, fuzzy +msgid "Edit selected feeds" +msgstr "Sletter den valgte nyhetsstrømmen..." + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +#, fuzzy +msgid "Reset sort order" +msgstr "Nullstill passordet" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +#, fuzzy +msgid "Batch subscribe" +msgstr "Avabonner" + +#: classes/pref/feeds.php:1327 +#, fuzzy +msgid "Categories" +msgstr "Kategori:" + +#: classes/pref/feeds.php:1330 +#, fuzzy +msgid "Add category" +msgstr "Legger til kategori for nyhetsstrømmer" + +#: classes/pref/feeds.php:1334 +#, fuzzy +msgid "Remove selected" +msgstr "Fjerne valgte filtre?" + +#: classes/pref/feeds.php:1345 +#, fuzzy +msgid "More actions..." +msgstr "Handlinger..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "Slett manuelt" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "Slett nyhetsstrømsdata" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Tilbakestill poengsummene for artiklene" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "" + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "" + +#: classes/pref/feeds.php:1419 +#, fuzzy +msgid "Import my OPML" +msgstr "Importerer OPML (bruker DOMXML-utvidelsen)..." + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "" + +#: classes/pref/feeds.php:1425 +#, fuzzy +msgid "Include settings" +msgstr "Inkluder i e-postsammendraget" + +#: classes/pref/feeds.php:1429 +#, fuzzy +msgid "Export OPML" +msgstr "Eksporter OPML" + +#: classes/pref/feeds.php:1433 +#, fuzzy +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "Publiserte artikler kan bli eksportert som en offentlig RSS-nyhetskanal og kan bli abonnert på av alle som vet adressen som blir spesifisert nedenfor." + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "" + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "" + +#: classes/pref/feeds.php:1447 +#, fuzzy +msgid "Firefox integration" +msgstr "Firefox integrering" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "Denne Tiny Tiny RSS siden kan bli brukt som nyhetsstrømsleser for Firefox ved å trykke på lenken nedenfor." + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "Trykk her for å registrere denne siden som nyhetsstrømsleser" + +#: classes/pref/feeds.php:1464 +#, fuzzy +msgid "Published & shared articles / Generated feeds" +msgstr "Sett poeng på nytt for artiklene i de valgte nyhetskanalene?" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "Publiserte artikler kan bli eksportert som en offentlig RSS-nyhetskanal og kan bli abonnert på av alle som vet adressen som blir spesifisert nedenfor." + +#: classes/pref/feeds.php:1474 +#, fuzzy +msgid "Display URL" +msgstr "Vis stikkord" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "" + +#: classes/pref/feeds.php:1555 +#, fuzzy +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "Disse nyhetsstrømmene kunne ikke oppdateres på grunn av feil:" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +#, fuzzy +msgid "Click to edit feed" +msgstr "Trykk for å endre" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +#, fuzzy +msgid "Unsubscribe from selected feeds" +msgstr "Fjern abonnement på valgte nyhetsstrømmer" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "" + +#: classes/pref/feeds.php:1809 +#, fuzzy +msgid "Feeds require authentication." +msgstr "Denne nyhetsstrømmen krever autentifisering" + +#: classes/pref/filters.php:102 +#, fuzzy +msgid "Articles matching this filter:" +msgstr "Ingen filtre ble funnet." + +#: classes/pref/filters.php:185 +#, fuzzy +msgid "No recent articles matching this filter have been found." +msgstr "Ingen filtre ble funnet." + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +#, fuzzy +msgid "(inverse)" +msgstr "(Motsatt)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Overskrift" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "Match" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "Legg til" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +#, fuzzy +msgid "Apply actions" +msgstr "Nyhetsstrømshandlinger" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Tillatt" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +#, fuzzy +msgid "Match any rule" +msgstr "Match på:" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +#, fuzzy +msgid "Inverse matching" +msgstr "Motsatt markering" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "Test" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Lag" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "På felt:" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "i" + +#: classes/pref/filters.php:947 +#, fuzzy +msgid "Wiki: Filters" +msgstr "Filtre" + +#: classes/pref/filters.php:952 +#, fuzzy +msgid "Save rule" +msgstr "Lagre" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +#, fuzzy +msgid "Add rule" +msgstr "Legger til kategori for nyhetsstrømmer" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Utfør handlingen" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "med parametrene:" + +#: classes/pref/filters.php:1019 +#, fuzzy +msgid "Save action" +msgstr "Panelhandlinger" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +#, fuzzy +msgid "Add action" +msgstr "Nyhetsstrømshandlinger" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "Ingen bildetekst" + +#: classes/pref/filters.php:1044 +#, fuzzy, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "Legger til kategori for nyhetsstrømmer" +msgstr[1] "Legger til kategori for nyhetsstrømmer" + +#: classes/pref/filters.php:1059 +#, fuzzy, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "Nyhetsstrømshandlinger" +msgstr[1] "Nyhetsstrømshandlinger" + +#: classes/pref/labels.php:37 +#, fuzzy +msgid "Colors" +msgstr "Steng" + +#: classes/pref/labels.php:42 +#, fuzzy +msgid "Foreground:" +msgstr "Forgrunn" + +#: classes/pref/labels.php:42 +#, fuzzy +msgid "Background:" +msgstr "bakgrunn" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "Laget merkelappen %s" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Fjern farger" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Generelt" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Grensesnitt" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Avansert" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "Tillatt duplikate artikler" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Svartelistede stikkord" + +#: classes/pref/prefs.php:26 +#, fuzzy +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "Når stikkord blir automatisk funnet i artikler skal følgende stikkord ikke bli oppdaget (komma-separert liste)" + +#: classes/pref/prefs.php:27 +#, fuzzy +msgid "Automatically mark articles as read" +msgstr "Utvid artikler automatisk i kombinert modus" + +#: classes/pref/prefs.php:27 +#, fuzzy +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "Dette valge muliggjør markeringen av artikler som leste automatisk i kombinert modus, mens du blar i artikkellisten (med unntak for ferske artikler nyhetsstrømmen)." + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "Utvid artikler automatisk i kombinert modus" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "Kombinert nyhetsstrømsvisning" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Viser en utvidet liste over nyhetsstrømsartikler isteden for en separat visning av titler og artikler." + +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "Bekreft markeringen av nyhetsstrøm som lest" + +#: classes/pref/prefs.php:31 +#, fuzzy +msgid "Amount of articles to display at once" +msgstr "Ingen artikler funnet som kan vises" + +#: classes/pref/prefs.php:32 +#, fuzzy +msgid "Default feed update interval" +msgstr "Standard intervall:" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "" + +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "Marker artikler i e--postsammendrag som leste" + +#: classes/pref/prefs.php:34 +#, fuzzy +msgid "Enable e-mail digest" +msgstr "Tillatt e-postsammendrag" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Dette valget muliggjør utsendingen av daglige sammendrag over nye (og uleste) tittler til din e-postadresse" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "" + +#: classes/pref/prefs.php:36 +#, fuzzy +msgid "Enable API access" +msgstr "Tillat merkelapper" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Tillatt kategorisering av nyhetsstrømmer" + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "Sorter nyhetsstrømer ut i fra antall uleste artikler" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Maksimal alder på ferske artikler (i timer)" + +#: classes/pref/prefs.php:40 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "Skjul nyhetsstrømmer med ingen uleste meldinger" + +#: classes/pref/prefs.php:41 +#, fuzzy +msgid "Show special feeds when hiding read feeds" +msgstr "Vis snarveier selv om leste nyhetskanaler skjules" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "Langt datoformat" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "" + +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "Ved oppdatering vis neste nyhetsstrøm" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "" + +#: classes/pref/prefs.php:44 +#, fuzzy +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Slett gamle poster etter så mange dager (0 - fjerner denne funksjonen)" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "Slett uleste artikler" + +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "Motsatt titteloversikt (eldste først)" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "Kort datoformat" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "Vis innholdsforhåndsvisning i titteloversikten" + +#: classes/pref/prefs.php:49 +#, fuzzy +msgid "Sort headlines by feed date" +msgstr "Sorter nyhetsstrømer ut i fra antall uleste artikler" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "" + +#: classes/pref/prefs.php:51 +#, fuzzy +msgid "Do not embed images in articles" +msgstr "Ikke vis bilder i artiklene" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "Fjern utrygge html-koder fra artiklene" + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Fjern alle HTML-koder utenom de mest vanlige når artikler leses." + +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +#, fuzzy +msgid "Customize stylesheet" +msgstr "URL til brukerbestemt utseendemal (CSS)" + +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "" + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "Grupper overskriftene i virtuelle nyhetskanaler" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" + +#: classes/pref/prefs.php:56 +#, fuzzy +msgid "Language" +msgstr "Språk:" + +#: classes/pref/prefs.php:57 +#, fuzzy +msgid "Theme" +msgstr "Utseender" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "Konfigurasjonen er lagret." + +#: classes/pref/prefs.php:140 +#, fuzzy +msgid "Your personal data has been saved." +msgstr "Passord har blitt endret." + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "" + +#: classes/pref/prefs.php:183 +#, fuzzy +msgid "Personal data / Authentication" +msgstr "Autentifisering" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "Personlig informasjon" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "E-post" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Tilgangsnivå" + +#: classes/pref/prefs.php:233 +#, fuzzy +msgid "Save data" +msgstr "Lagre" + +#: classes/pref/prefs.php:254 +#, fuzzy +msgid "Your password is at default value, please change it." +msgstr "" +"Passordet ditt er et standardpassord, \n" +"\t\t\t\t\t\tVennligst bytt." + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "" + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Gammelt passord" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Nytt passord" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Bekreft passord" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "Endre passord" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "" + +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "" + +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +#, fuzzy +msgid "Enter your password" +msgstr "Feil brukernavn og/eller passord" + +#: classes/pref/prefs.php:358 +#, fuzzy +msgid "Disable OTP" +msgstr "(Avskrudd)" + +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "" + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "" + +#: classes/pref/prefs.php:403 +#, fuzzy +msgid "Enter the generated one time password" +msgstr "Vennligst skriv inn et notat for denne artikkelen:" + +#: classes/pref/prefs.php:417 +#, fuzzy +msgid "Enable OTP" +msgstr "Tillatt" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "" + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "" + +#: classes/pref/prefs.php:564 +#, fuzzy +msgid "Customize" +msgstr "URL til brukerbestemt utseendemal (CSS)" + +#: classes/pref/prefs.php:627 +#, fuzzy +msgid "Register" +msgstr "Registrert" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Lagre konfigurasjonen" + +#: classes/pref/prefs.php:673 +#, fuzzy +msgid "Save and exit preferences" +msgstr "Forlat innstillinger" + +#: classes/pref/prefs.php:678 +#, fuzzy +msgid "Manage profiles" +msgstr "Lag filter" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "Tilbake til standard" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "" + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "" + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +#, fuzzy +msgid "Description" +msgstr "beskrivelse" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +#, fuzzy +msgid "Clear data" +msgstr "Slett nyhetsstrømsdata" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "" + +#: classes/pref/prefs.php:855 +#, fuzzy +msgid "Enable selected plugins" +msgstr "Bruk nyhetsstrømsikoner" + +#: classes/pref/prefs.php:923 +#, fuzzy +msgid "Incorrect one time password" +msgstr "Feil brukernavn og/eller passord" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +#, fuzzy +msgid "Incorrect password" +msgstr "Feil brukernavn og/eller passord" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "" + +#: classes/pref/prefs.php:1008 +#, fuzzy +msgid "Create profile" +msgstr "Lag filter" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +#, fuzzy +msgid "(active)" +msgstr "Tilpasset" + +#: classes/pref/prefs.php:1093 +#, fuzzy +msgid "Remove selected profiles" +msgstr "Fjerne valgte filtre?" + +#: classes/pref/prefs.php:1095 +#, fuzzy +msgid "Activate profile" +msgstr "Fjerne valgte filtre?" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "" + +#: classes/dlg.php:48 +#, fuzzy +msgid "Your Public OPML URL is:" +msgstr "Lenke til nyhetsstrøm for publiserte artikler" -#: localized_schema.php:27 -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." +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +#, fuzzy +msgid "Generate new URL" +msgstr "Generert nyhetsstrøm" + +#: 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 "Oppdateringsprosessen er åpnet for i konfigurasjonsfilen, men prosessen blir ikke kjørt, noe som gjør at ingen nyhetsstrømmer blir oppdatert. Vennligst start prosessen eller konakt administratoren." + +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "Siste oppdatering:" + +#: 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 "TT-RSS har oppdaget at oppdateringsmetoden bruker for lang tid å oppdatere nyhetsstrømmene. Dette kan indikere et krasj eller at noe henger. Vennligst sjekk oppdateringsprosessen eller kontakt vedkommende som innehar nyhetsstrømmen." + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" msgstr "" -"Dette valget er brukervennlig hvis du leser flere globale " -"nyhetsstrømssamlere som har delvis overlappende brukerbase. Når denne er " -"avskrudd kan samme post fra flere forskjellige nyhetsstrømmer vises på en " -"gang." -#: localized_schema.php:28 -msgid "Default interval between feed updates (in minutes)" -msgstr "Standard intervall mellom nyhetsstrømsoppdateringer (i minutter)" +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" -#: localized_schema.php:29 -msgid "Enable e-mail digest" -msgstr "Tillatt e-postsammendrag" +#: plugins/af_psql_trgm/init.php:112 +#, fuzzy +msgid "Show related articles" +msgstr "Favorittartikler" -#: localized_schema.php:30 -msgid "" -"This option enables sending daily digest of new (and unread) headlines on " -"your configured e-mail address" +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +#, fuzzy +msgid "Mark similar articles as read" +msgstr "Marker alle artikler som leste?" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +#, fuzzy +msgid "Global settings" +msgstr "Inkluder i e-postsammendraget" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" msgstr "" -"Dette valget muliggjør utsendingen av daglige sammendrag over nye (og " -"uleste) tittler til din e-postadresse" -#: localized_schema.php:31 -msgid "Purge old posts after this number of days (0 - disables)" -msgstr "Slett gamle poster etter så mange dager (0 - fjerner denne funksjonen)" +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" -#: localized_schema.php:32 -msgid "Update post on checksum change" -msgstr "Oppdaterer artikkel etter checksumbytte" +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "Tillat ikoner i nyhetsstrømslisten" -#: localized_schema.php:33 -msgid "Mark articles in e-mail digest as read" -msgstr "Marker artikler i e--postsammendrag som leste" +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" -#: localized_schema.php:34 -msgid "Enable offline reading" -msgstr "Tillatt lesning uten internett-tilgang" +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" -#: localized_schema.php:35 -msgid "Synchronize new articles for offline reading using Google Gears." +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" msgstr "" -"Synkroniser nye artikler for å kunne bytte modus til å kunne lese uten " -"internett-tilgang med Google Gears." -#: localized_schema.php:37 -msgid "Interface" -msgstr "Grensesnitt" +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "" -#: localized_schema.php:39 -msgid "Combined feed display" -msgstr "Kombinert nyhetsstrømsvisning" +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +#, fuzzy +msgid "Edit article note" +msgstr "Endre Stikkord" -#: localized_schema.php:40 -msgid "" -"Display expanded list of feed articles, instead of separate displays for " -"headlines and article content" +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +#, fuzzy +msgid "No file uploaded." +msgstr "Ingen OPML-fil til å lastes opp." + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." msgstr "" -"Viser en utvidet liste over nyhetsstrømsartikler isteden for en separat " -"visning av titler og artikler." -#: localized_schema.php:41 -msgid "Default article limit" -msgstr "Standard artikkelbegrensning" +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "" -#: localized_schema.php:42 -msgid "" -"Default limit for articles to display, any custom number you like (0 - " -"disables)." +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" msgstr "" -"Standard begrensning for artikler som skal vises, valgfritt antall (0 - " -"fjerner funksjonen)." -#: localized_schema.php:43 -msgid "Enable feed categories" -msgstr "Tillatt kategorisering av nyhetsstrømmer" +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "" -#: localized_schema.php:44 -msgid "Enable search toolbar" -msgstr "Vis søkelinjen" +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "" -#: localized_schema.php:45 -msgid "Hide feeds with no unread messages" -msgstr "Skjul nyhetsstrømmer med ingen uleste meldinger" +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "" -#: localized_schema.php:46 -msgid "Mark articles as read automatically" -msgstr "Marker artikler som leste automatisk" +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +#, fuzzy +msgid "Multiple articles" +msgstr "Alle artikler" -#: localized_schema.php:47 -msgid "" -"This option enables marking articles as read automatically in combined mode " -"(except for Fresh articles feed) while you scroll article list." +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" msgstr "" -"Dette valge muliggjør markeringen av artikler som leste automatisk i " -"kombinert modus, mens du blar i artikkellisten (med unntak for ferske " -"artikler nyhetsstrømmen)." -#: localized_schema.php:48 -msgid "On catchup show next feed" -msgstr "Ved oppdatering vis neste nyhetsstrøm" +#: plugins/mailto/init.php:75 +#, fuzzy +msgid "Forward selected article(s) by email." +msgstr "Marker artikkel som favoritt" -#: localized_schema.php:49 -msgid "" -"When \"Mark as read\" button is clicked in toolbar, automatically open next " -"feed with unread articles." +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." msgstr "" -"Når \"Marker som lest\" knappen blir klikket, åpne neste nyhetsstrøm med " -"uleste artikler." -#: localized_schema.php:50 -msgid "Open article links in new browser window" -msgstr "Åpne artikkel-lenker i nytt nettleservindu" +#: plugins/mailto/init.php:83 +#, fuzzy +msgid "Close this dialog" +msgstr "Lukk dette vinduet" -#: localized_schema.php:51 -msgid "Reverse headline order (oldest first)" -msgstr "Motsatt titteloversikt (eldste først)" +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "" -#: localized_schema.php:52 -msgid "Show content preview in headlines list" -msgstr "Vis innholdsforhåndsvisning i titteloversikten" +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "" -#: localized_schema.php:53 -msgid "Sort feeds by unread articles count" -msgstr "Sorter nyhetsstrømer ut i fra antall uleste artikler" +#: plugins/import_export/init.php:65 +#, fuzzy +msgid "Export my data" +msgstr "Eksporter OPML" -#: localized_schema.php:54 -msgid "User stylesheet URL" -msgstr "URL til brukerbestemt utseendemal (CSS)" +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Importer" + +#: plugins/import_export/init.php:223 +#, fuzzy +msgid "Could not import: incorrect schema version." +msgstr "Kunne ikke finne den nødvendige skjemafilen, nødvendig versjon:" -#: localized_schema.php:55 -msgid "Link to user stylesheet to override default style, disabled if empty." +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." msgstr "" -"Lenke til brukerbestemt utseendemal for å overstyre standarden, avskrudd " -"hvis tomt felt." -#: localized_schema.php:56 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Maksimal alder på ferske artikler (i timer)" +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "" -#: localized_schema.php:57 -msgid "Hide feedlist" -msgstr "Skjul nyhetskanalslisten" +#: plugins/import_export/init.php:388 +#, fuzzy, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "Endre Stikkord" +msgstr[1] "Endre Stikkord" -#: localized_schema.php:58 -msgid "" -"This option hides feedlist and allows it to be toggled on the fly, useful " -"for small screens." +#: plugins/import_export/init.php:389 +#, fuzzy, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "Allerede importert." +msgstr[1] "Allerede importert." + +#: plugins/import_export/init.php:390 +#, fuzzy, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "Ingen valgt nyhetsstrøm" +msgstr[1] "Ingen valgt nyhetsstrøm" + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." msgstr "" -"Dette valget skjuler kanallisten og tillater at den vises etter ønske, " -"brukbart for små skjermer." -#: localized_schema.php:59 -msgid "Group headlines in virtual feeds" -msgstr "Grupper overskriftene i virtuelle nyhetskanaler" +#: plugins/import_export/init.php:407 +#, fuzzy +msgid "Prepare data" +msgstr "Lagre" -#: localized_schema.php:60 -msgid "" -"When this option is enabled, headlines in Special feeds and Labels are " -"grouped by feeds" +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" msgstr "" -"Med dette valget haket av så vil overskriftene i spesielle nyhetskanaler og " -"merkelapper grupperes etter nyhetskanalene" -#: localized_schema.php:62 -msgid "Advanced" -msgstr "Avansert" +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "" -#: localized_schema.php:64 -msgid "Blacklisted tags" -msgstr "Svartelistede stikkord" +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "" -#: localized_schema.php:65 -msgid "" -"When auto-detecting tags in articles these tags will not be applied (comma-" -"separated list)." +#: plugins/nsfw/init.php:100 +#, fuzzy +msgid "Configuration saved." +msgstr "Konfigurasjonen er lagret." + +#: plugins/auth_internal/init.php:65 +#, fuzzy +msgid "Please enter your one time password:" +msgstr "Vennligst skriv inn et notat for denne artikkelen:" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "Passord har blitt endret." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "Gammelt passord er feil" + +#: plugins/close_button/init.php:22 +#, fuzzy +msgid "Close article" +msgstr "Fjern artikler" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." msgstr "" -"Når stikkord blir automatisk funnet i artikler skal følgende stikkord ikke " -"bli oppdaget (komma-separert liste)" -#: localized_schema.php:66 -msgid "Confirm marking feed as read" -msgstr "Bekreft markeringen av nyhetsstrøm som lest" +#: plugins/mail/init.php:34 +msgid "Mail plugin" +msgstr "" -#: localized_schema.php:67 -msgid "Enable feed icons" -msgstr "Bruk nyhetsstrømsikoner" +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "" -#: localized_schema.php:68 -msgid "Enable labels" -msgstr "Tillat merkelapper" +#: plugins/mail/init.php:140 +#, fuzzy +msgid "To:" +msgstr "Topp" -#: localized_schema.php:69 -msgid "" -"Experimental support for virtual feeds based on user crafted SQL queries. " -"This feature is highly experimental and at this point not user friendly. Use " -"with caution." +#: plugins/mail/init.php:155 +#, fuzzy +msgid "Subject:" +msgstr "Velg:" + +#: plugins/mail/init.php:171 +#, fuzzy +msgid "Send e-mail" +msgstr "Skift e-post" + +#: plugins/instances/init.php:141 +#, fuzzy +msgid "Linked" +msgstr "Lenke" + +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" msgstr "" -"Eksperimentel støtte for virtuelle nyhetsstrømmer basert på brukerlagde SQL-" -"spørringer. Denne funksjonen er veldig eksperimentel og er på nåværende " -"tidspunkt ikke brukervennlig. Benytt med varsomhet." -#: localized_schema.php:70 -msgid "Long date format" -msgstr "Langt datoformat" +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "" -#: localized_schema.php:71 -msgid "Set articles as unread on update" -msgstr "Sett artikler som uleste ved oppdatering" +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +#, fuzzy +msgid "Access key:" +msgstr "Tilgangsnivå:" -#: localized_schema.php:72 -msgid "Short date format" -msgstr "Kort datoformat" +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +#, fuzzy +msgid "Access key" +msgstr "Tilgangsnivå" -#: localized_schema.php:73 -msgid "Show additional information in feedlist" -msgstr "Vis tilleggsinformasjon i nyhetsstrømslisten" +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "" -#: localized_schema.php:74 -msgid "Strip unsafe tags from articles" -msgstr "Fjern utrygge html-koder fra artiklene" +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +#, fuzzy +msgid "Generate new key" +msgstr "Generert nyhetsstrøm" -#: localized_schema.php:75 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "Fjern alle HTML-koder utenom de mest vanlige når artikler leses." +#: plugins/instances/init.php:292 +#, fuzzy +msgid "Link instance" +msgstr "Endre stikkord" -#: localized_schema.php:76 -msgid "Use more accessible date/time format for headlines" -msgstr "Bruk mer brukervennlige dato/tidsformater for artiklene" +#: 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 "" -#: localized_schema.php:77 -msgid "Automatically expand articles in combined mode" -msgstr "Utvid artikler automatisk i kombinert modus" +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "" -#: localized_schema.php:78 -msgid "Purge unread articles" -msgstr "Slett uleste artikler" +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "" -#: localized_schema.php:79 -msgid "Show special feeds when hiding read feeds" -msgstr "Vis snarveier selv om leste nyhetskanaler skjules" +#: plugins/instances/init.php:316 +#, fuzzy +msgid "Stored feeds" +msgstr "Flere nyhetsstrømmer" + +#: plugins/instances/init.php:433 +#, fuzzy +msgid "Create link" +msgstr "Lag" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "Konfigurasjonen er lagret." + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "Sjekk tilgjengeligheten" + +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "Rullevisning av artkkelens innhold" + +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +#, fuzzy +msgid "Shared articles" +msgstr "Favorittartikler" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +msgid "Statistics" +msgstr "" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "Favorittartikler" + +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "Slett nyhetsstrømsdata" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, php-format +msgid "Currently stored as: %s" +msgstr "" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "" + +#: 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 "" + +#: plugins/bookmarklets/init.php:26 +#, fuzzy, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "Returner til Tiny Tiny RSS" + +#: plugins/bookmarklets/init.php:31 +#, fuzzy +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Returner til Tiny Tiny RSS" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "" + +#: plugins/share/init.php:44 +#, fuzzy +msgid "Unshare all articles" +msgstr "Uleste artikler" + +#: plugins/share/init.php:77 +#, fuzzy +msgid "Share by URL" +msgstr "Marker artikkel som favoritt" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "" + +#: plugins/share/init.php:117 +#, fuzzy +msgid "Unshare article" +msgstr "Fjern favorittmerkingen fra artiklen" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "" + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "" + +#: js/functions.js:93 +msgid "Close" +msgstr "" + +#: js/functions.js:104 +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "" + +#: js/functions.js:224 +#, fuzzy +msgid "Click to close" +msgstr "Trykk for å endre" + +#: js/functions.js:1051 +#, fuzzy +msgid "Edit action" +msgstr "Nyhetsstrømshandlinger" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "Lag filter" + +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "" + +#: js/functions.js:1229 +#, fuzzy +msgid "Subscription reset." +msgstr "Abonner på nyhetsstrøm..." + +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "Fjerne abonnement på %s?" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "Fjerner nyhetsstrøm..." + +#: js/functions.js:1349 +#, fuzzy +msgid "Please enter category title:" +msgstr "Vennligst skriv inn et notat for denne artikkelen:" -#: localized_schema.php:80 -msgid "Prefer more accurate feedlist counters to UI speed" +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" msgstr "" -"Foretrekk en mer treffsikker nyhetsstrømsliste i motsetning til hastighet på " -"brukergrensesnittet." -#: localized_schema.php:81 -msgid "Enable inline MP3 player" -msgstr "Skru på den innebygde MP3-spilleren" +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Prøver å endre adressen..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "Ingen nyhetsstrømmer er valgt" -#: localized_schema.php:82 -msgid "" -"Enable the Flash-based XSPF Player to play MP3-format podcast enclosures." +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "" -"Bruk den flashbaserte XSPF spilleren for å spille MP3-formaterte podcaster." -#: localized_schema.php:83 -msgid "Do not show images in articles" -msgstr "Ikke vis bilder i artiklene" +#: js/functions.js:1766 +#, fuzzy +msgid "Feeds with update errors" +msgstr "Oppdateringsfeil" -#: localized_schema.php:84 -msgid "Enable external API" -msgstr "" +#: js/functions.js:1777 +#: js/prefs.js:1176 +#, fuzzy +msgid "Remove selected feeds?" +msgstr "Fjerne valgte filtre?" -#: login_form.php:120 modules/popup-dialog.php:271 modules/pref-feeds.php:339 -#: modules/pref-feeds.php:561 mobile/login_form.php:38 -msgid "Login:" -msgstr "Brukernavn:" +#: js/functions.js:1780 +#: js/prefs.js:1179 +#, fuzzy +msgid "Removing selected feeds..." +msgstr "Fjerner valgte filtre..." -#: login_form.php:124 modules/popup-dialog.php:273 modules/pref-feeds.php:344 -#: modules/pref-feeds.php:567 mobile/login_form.php:43 -msgid "Password:" -msgstr "Passord:" +#: js/PrefFeedTree.js:48 +#, fuzzy +msgid "Edit category" +msgstr "Rediger kategorier" -#: login_form.php:129 -msgid "Language:" -msgstr "Språk:" +#: js/PrefFeedTree.js:55 +#, fuzzy +msgid "Remove category" +msgstr "Lag kategori" -#: login_form.php:139 +#: js/PrefFilterTree.js:64 #, fuzzy -msgid "Profile:" -msgstr "Fil:" +msgid "Inverse" +msgstr "(Motsatt)" -#: login_form.php:152 mobile/login_form.php:28 -msgid "Log in" -msgstr "Logg inn" +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "Vennligst skriv inn brukernavn:" -#: login_form.php:155 register.php:148 -msgid "Create new account" -msgstr "Lag ny konto" +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "Kan ikke legge til bruker: brukernavn mangler." -#: login_form.php:169 -msgid "Limit bandwidth usage" -msgstr "Begrens båndbreddebruken" +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "Legger til bruker.." -#: opml.php:99 opml.php:103 -msgid "OPML Utility" -msgstr "OPML-verktøy" +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Brukeradministrering" -#: opml.php:124 -msgid "Importing OPML (using DOMXML extension)..." -msgstr "Importerer OPML (bruker DOMXML-utvidelsen)..." +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +#, fuzzy +msgid "Saving data..." +msgstr "Lagrer Nyhetsstrøm" -#: opml.php:128 -msgid "Importing OPML (using DOMDocument extension)..." -msgstr "Importerer OPML (bruker DOMDocument-utvidelsen)..." +#: js/prefs.js:134 +#, fuzzy +msgid "Edit Filter" +msgstr "Filtre" -#: opml.php:132 modules/popup-dialog.php:45 -msgid "DOMXML extension is not found. It is required for PHP versions below 5." -msgstr "" -"DOMXML-utvidelsen ble ikke funnet. Den er påkrevet for PHPversjoner under 5." +#: js/prefs.js:181 +#, fuzzy +msgid "Remove filter?" +msgstr "Fjerne %s filteret?" -#: opml.php:136 -msgid "Return to preferences" -msgstr "Returner til innstillinger" +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "Fjerner filter..." -#: prefs.php:63 prefs.php:123 tt-rss.php:65 -msgid "Loading, please wait..." -msgstr "laster, vennligst vent" +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "Fjerne merkede merkelapper?" -#: prefs.php:70 prefs.php:126 tt-rss.php:73 -msgid "" -"Your browser doesn't support Javascript, which is required\n" -"\t\tfor this application to function properly. Please check your\n" -"\t\tbrowser settings." -msgstr "" -"Din nettleser støtter ikke Javaskript som er nødvendig\n" -"\t\tfor at dette programmet skal fungere ordentlig. Vennligst sjekk din \n" -"\t\tnettlesers instillinger." +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "Fjerner merkede merkelapper..." -#: prefs.php:90 tt-rss.php:112 -msgid "Hello," -msgstr "Hei, " +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "Ingen merkelapper er markert" -#: prefs.php:92 help/4.php:14 -msgid "Exit preferences" -msgstr "Forlat innstillinger" +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "" -#: prefs.php:94 tt-rss.php:122 mobile/functions.php:60 -#: mobile/functions.php:234 -msgid "Logout" -msgstr "Logg ut" +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "Fjerner markerte brukere..." -#: prefs.php:102 tt-rss.php:196 -msgid "Keyboard shortcuts" -msgstr "Tastatursnarveier" +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "Ingen bruker er markert" -#: prefs.php:108 tt-rss.php:114 help/3.php:63 help/4.php:8 -msgid "Preferences" -msgstr "Innstillinger" +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "Fjerne valgte filtre?" -#: prefs.php:110 -msgid "Feeds" -msgstr "Nyhetsstrømmer" +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "Fjerner valgte filtre..." -#: prefs.php:112 help/4.php:11 -msgid "Filters" -msgstr "Filtre" +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "Ingen filtre er valgt" -#: prefs.php:117 help/4.php:13 -msgid "Users" -msgstr "Brukere" +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "Fjern abonnement på valgte nyhetsstrømmer" -#: prefs.php:140 tt-rss.php:99 -#, fuzzy -msgid "Fatal Exception" -msgstr "Alvorlig feil" +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "Fjerner abonnementer på valgte nyhetsstrømmer..." -#: register.php:152 -msgid "New user registrations are administratively disabled." -msgstr "Registrering av nye brukere er administrativt avskrudd" +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "Vennligst velg kun en nyhetsstrøm" -#: register.php:155 register.php:200 register.php:213 register.php:228 -#: register.php:246 register.php:331 register.php:341 register.php:353 -#: update.php:94 update.php:162 modules/pref-feeds.php:954 -msgid "Return to Tiny Tiny RSS" -msgstr "Returner til Tiny Tiny RSS" +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "Fjern alle ikke-favoriserte artikler i den valgte nyhetsstrømmen?" -#: register.php:176 -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 midlertidige passord vil bli sendt til den oppgitte e-posten. Kontoer, " -"som ikke blir logget inn på, blir slettet automatisk 24 timer etter at " -"passordet ble sendt." +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "Rensker valgt nyhetsstrøm..." -#: register.php:182 -msgid "Desired login:" -msgstr "Ønsket brukernavn:" +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "Hvor mange dager med artikler skal beholdes (0 - bruk standard)?" -#: register.php:185 -msgid "Check availability" -msgstr "Sjekk tilgjengeligheten" +#: js/prefs.js:460 +#, fuzzy +msgid "Purging selected feed..." +msgstr "Rensker valgt nyhetsstrøm..." -#: register.php:187 -msgid "Email:" -msgstr "E-post:" +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "Vennligst velg kun en bruker" -#: register.php:190 -msgid "How much is two plus two:" -msgstr "Hvor mye er to pluss to:" +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "Nullstill passordet til utvalgte bruker?" -#: register.php:193 -msgid "Submit registration" -msgstr "Send registreringen" +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "Nullstiller passordet for utvalgte bruker..." -#: register.php:211 -msgid "Your registration information is incomplete." -msgstr "Registreringsinformasjonen din er ufullstendig." +#: js/prefs.js:565 +msgid "User details" +msgstr "Brukerdetaljer" -#: register.php:226 -msgid "Sorry, this username is already taken." -msgstr "Beklager, brukernavn er allerede tatt." +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "Vennligst velg kun et filter" -#: register.php:244 -msgid "Registration failed." -msgstr "Registrering feilet" +#: js/prefs.js:607 +#, fuzzy +msgid "Combine selected filters?" +msgstr "Fjerne valgte filtre?" -#: register.php:328 -msgid "Account created successfully." -msgstr "Kontoen ble opprettet med suksess." +#: js/prefs.js:610 +#, fuzzy +msgid "Joining filters..." +msgstr "Fjerner filter..." -#: register.php:350 -msgid "New user registrations are currently closed." -msgstr "Registrering av nye brukere er stengt." +#: js/prefs.js:671 +#, fuzzy +msgid "Edit Multiple Feeds" +msgstr "Nyhetsstrømsredigerer" -#: tt-rss.php:118 -msgid "Comments?" -msgstr "Kommentarer?" +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "Lagre endringer til de valgte nyhetsstrømmene?" -#: tt-rss.php:131 -msgid "Offline reading" -msgstr "Lesning uten internett-tilgang" +#: js/prefs.js:772 +#, fuzzy +msgid "OPML Import" +msgstr "Importer" -#: tt-rss.php:138 -msgid "Cancel synchronization" -msgstr "Avbryt synkroniseringen" +#: js/prefs.js:799 +#, fuzzy +msgid "Please choose an OPML file first." +msgstr "Vennligst velg en eller flere nyhetsstrømmer først" -#: tt-rss.php:141 -msgid "Synchronize" -msgstr "Synkroniser" +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +#, fuzzy +msgid "Importing, please wait..." +msgstr "laster, vennligst vent" -#: tt-rss.php:143 -msgid "Remove stored data" -msgstr "Fjern lagrede data" +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "Tilbakefør til standardinnstillingene" -#: tt-rss.php:145 -msgid "Go offline" -msgstr "Benytt modus for lesning uten internett-tilgang" +#: js/prefs.js:1738 +#, fuzzy +msgid "Subscribing to feeds..." +msgstr "Abonnerer på nyhetsstrømmen..." -#: tt-rss.php:151 -msgid "New version of Tiny Tiny RSS is available!" -msgstr "Ny versjon av Tiny Tiny Rss er tilgjengelig!" +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "" -#: tt-rss.php:158 -msgid "Go online" -msgstr "Benytt modus for lesning med internett-tilgang" +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "" -#: tt-rss.php:169 tt-rss.js:79 -msgid "tag cloud" -msgstr "Tag-sky" +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "Marker alle artikler som leste?" -#: tt-rss.php:179 -msgid "Search..." -msgstr "Søk..." +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "Marker alle nyhetsstrømmer som lest" -#: tt-rss.php:180 -msgid "Feed actions:" -msgstr "Nyhetsstrømshandlinger:" +#: js/tt-rss.js:391 +#, fuzzy +msgid "Please enable mail plugin first." +msgstr "Vennligst velg en eller flere nyhetsstrømmer først" -#: tt-rss.php:181 -msgid "Subscribe to feed..." -msgstr "Abonner på nyhetsstrøm..." +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "Du kan ikke endre denne typen nyhetsstrøm" -#: tt-rss.php:182 -msgid "Edit this feed..." -msgstr "Rediger nyhetsstrømmen..." +#: js/tt-rss.js:505 +#, fuzzy +msgid "Please enable embed_original plugin first." +msgstr "Vennligst velg en eller flere nyhetsstrømmer først" -#: tt-rss.php:183 -msgid "Rescore feed" -msgstr "Sett poeng på nytt for nyhetskanalene" +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "" -#: tt-rss.php:184 modules/pref-feeds.php:465 modules/pref-feeds.php:1193 -msgid "Unsubscribe" -msgstr "Avabonner" +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "Du kan ikke endre poengsummen for denne typen nyhetskanal" -#: tt-rss.php:186 -msgid "All feeds:" -msgstr "Alle nyhetsstrømmer:" +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "Vennligst velg en eller flere nyhetsstrømmer først" -#: tt-rss.php:188 help/3.php:44 -msgid "(Un)hide read feeds" -msgstr "Skjul/vis leste nyhetsstrømmer" +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "Endre poengene for artiklene i %s?" -#: tt-rss.php:190 -msgid "Other actions:" -msgstr "Andre handlinger:" +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "Endrer poengsummen for artiklene..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "Ingen artikler er valgt." -#: tt-rss.php:193 -msgid "Create filter..." -msgstr "Lag filter..." +#: js/viewfeed.js:1018 +#, fuzzy, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "Marker %d valgte artikler i %s som leste?" +msgstr[1] "Marker %d valgte artikler i %s som leste?" + +#: js/viewfeed.js:1020 +#, fuzzy, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "Fjerne merkede artikler fra merkelappen?" +msgstr[1] "Fjerne merkede artikler fra merkelappen?" + +#: js/viewfeed.js:1062 +#, fuzzy, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "Marker %d valgte artikler i %s som leste?" +msgstr[1] "Marker %d valgte artikler i %s som leste?" + +#: js/viewfeed.js:1065 +#, fuzzy, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "Favorittartikler" +msgstr[1] "Favorittartikler" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "" -#: tt-rss.php:194 -msgid "Reset UI layout" -msgstr "Tilbakestill de grafiske instillingene" +#: js/viewfeed.js:1112 +#, fuzzy, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "Marker %d valgte artikler i %s som leste?" +msgstr[1] "Marker %d valgte artikler i %s som leste?" -#: tt-rss.php:195 -msgid "Reset category order" -msgstr "Tilbakestill kategorirekkefølgen" +#: js/viewfeed.js:1136 +#, fuzzy +msgid "Edit article Tags" +msgstr "Endre Stikkord" -#: tt-rss.php:205 -msgid "Collapse feedlist" -msgstr "Skjul nyhetskanalsslisten" +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "Lagrer artikkelens kategorier..." -#: tt-rss.php:208 +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 #, fuzzy -msgid "Show articles" -msgstr "Lagrede artikler" +msgid "Click to open next unread feed." +msgstr "Trykk for å endre" -#: tt-rss.php:210 -msgid "Adaptive" -msgstr "Tilpasset" +#: js/viewfeed.js:1961 +#, fuzzy +msgid "Open original article" +msgstr "Vis opprinnelig artikkelinnhold" -#: tt-rss.php:211 -msgid "All Articles" -msgstr "Alle artikler" +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Tildel stikkord" -#: tt-rss.php:214 -msgid "Ignore Scoring" -msgstr "Ignorer poenggivning" +#: js/viewfeed.js:2072 +#, fuzzy +msgid "Remove label" +msgstr "Fjerne merkede merkelapper?" -#: tt-rss.php:215 modules/pref-feeds.php:1316 modules/pref-feeds.php:1377 -msgid "Updated" -msgstr "Oppdatert" +#: js/viewfeed.js:2159 +#, fuzzy +msgid "Select articles in group" +msgstr "Velg artikkelen under musepekeren" -#: tt-rss.php:218 +#: js/viewfeed.js:2168 #, fuzzy -msgid "Sort articles" -msgstr "Lagrede artikler" +msgid "Mark group as read" +msgstr "Marker som lest" -#: tt-rss.php:221 modules/popup-dialog.php:462 modules/pref-filters.php:51 -#: modules/pref-filters.php:469 -msgid "Date" -msgstr "Dato" +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "Marker nyhetsstrøm som lest" -#: tt-rss.php:223 -msgid "Score" -msgstr "Poeng" +#: js/viewfeed.js:2235 +#, fuzzy +msgid "Please enter new score for selected articles:" +msgstr "Vennligst skriv inn et notat for denne artikkelen:" -#: tt-rss.php:227 modules/pref-feeds.php:296 modules/pref-feeds.php:524 -msgid "Update" -msgstr "Oppdater" +#: js/viewfeed.js:2305 +#, fuzzy +msgid "Please enter new score for this article:" +msgstr "Vennligst skriv inn et notat for denne artikkelen:" -#: tt-rss.php:238 tt-rss.php:252 -msgid "No feed selected." -msgstr "Ingen valgt nyhetsstrøm" +#: js/viewfeed.js:2339 +#, fuzzy +msgid "Article URL:" +msgstr "Alle artikler" -#: tt-rss.php:242 -msgid "Drag me to resize panels" -msgstr "Dra i meg for å endre størrelsen på panelene." +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "" -#: update.php:19 -msgid "Your access level is insufficient to run this script." -msgstr "Adgangsnivået ditt er for lavt for å kjøre dette scriptet" +#: plugins/af_psql_trgm/init.js:11 +#, fuzzy +msgid "Related articles" +msgstr "Fjern artikler" -#: update.php:44 -msgid "Database Updater" -msgstr "Databaseoppdaterer" +#: plugins/note/note.js:17 +#, fuzzy +msgid "Saving article note..." +msgstr "Lagrer artikkelens kategorier..." -#: update.php:85 -msgid "Could not update database" -msgstr "Kunne ikke oppdatere databasen" +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "" -#: update.php:88 -msgid "Could not find necessary schema file, need version:" -msgstr "Kunne ikke finne den nødvendige skjemafilen, nødvendig versjon:" +#: plugins/googlereaderimport/init.js:42 +#, fuzzy +msgid "Please choose a file first." +msgstr "Vennligst velg en eller flere nyhetsstrømmer først" -#: update.php:89 -msgid ", found: " -msgstr ", funnet: " +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +#, fuzzy +msgid "Forward article by email" +msgstr "Marker artikkel som favoritt" -#: update.php:92 -msgid "Tiny Tiny RSS database is up to date." -msgstr "Tiny Tiny RSS-databasen er oppdatert" +#: plugins/import_export/import_export.js:13 +#, fuzzy +msgid "Export Data" +msgstr "Eksporter OPML" -#: update.php:102 -msgid "Please backup your database before proceeding." -msgstr "Vennligst gjør backup av din database før du fortsetter." +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "" +msgstr[1] "" -#: update.php:104 -#, php-format -msgid "" -"Your Tiny Tiny RSS database needs update to the latest version (%d to " -"%d)." -msgstr "" -"Din Tiny Tiny RSS-database trenger å oppdateres til siste utgave (%d " -"til %d)." +#: plugins/import_export/import_export.js:93 +#, fuzzy +msgid "Data Import" +msgstr "Importer" -#: update.php:118 -msgid "Perform updates" -msgstr "Utfør oppdateringene" +#: plugins/import_export/import_export.js:112 +#, fuzzy +msgid "Please choose the file first." +msgstr "Vennligst velg en eller flere nyhetsstrømmer først" -#: update.php:123 -msgid "Performing updates..." -msgstr "Utfører oppdateringer..." +#: plugins/shorten_expanded/init.js:37 +msgid "Click to expand article" +msgstr "Trykk for å utvide artikkel" -#: update.php:129 -#, php-format -msgid "Updating to version %d..." -msgstr "Oppdaterer til versjon %d..." +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" -#: update.php:142 -msgid "Checking version... " -msgstr "Sjekker utgave..." +#: plugins/mail/mail.js:38 +#, fuzzy +msgid "Your message has been sent." +msgstr "Passord har blitt endret." -#: update.php:148 -msgid "OK!" -msgstr "OK!" +#: plugins/instances/instances.js:10 +#, fuzzy +msgid "Link Instance" +msgstr "Endre stikkord" -#: update.php:150 -msgid "ERROR!" -msgstr "Feil!" +#: plugins/instances/instances.js:73 +#, fuzzy +msgid "Edit Instance" +msgstr "Endre stikkord" -#: update.php:158 -#, php-format -msgid "" -"Finished. Performed %d update(s) up to schema\n" -"\t\t\tversion %d." -msgstr "" -"Ferdig. %d utførte oppdatering(er)i følge skjema\n" -"\t\t\tversjon %d." +#: plugins/instances/instances.js:122 +#, fuzzy +msgid "Remove selected instances?" +msgstr "Fjerne valgte filtre?" -#: modules/help.php:6 -msgid "Help" -msgstr "Hjelp" +#: plugins/instances/instances.js:125 +#, fuzzy +msgid "Removing selected instances..." +msgstr "Fjerner valgte filtre..." -#: modules/help.php:17 -msgid "Help topic not found." -msgstr "Hjelp-emne kunne ikke bli funnet" +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +#, fuzzy +msgid "No instances are selected." +msgstr "Ingen filtre er valgt" -#: modules/opml_domdoc.php:52 modules/opml_domxml.php:54 -#, fuzzy, php-format -msgid "
  • Adding category %s.
  • " -msgstr "Legger til kategori %s." +#: plugins/instances/instances.js:156 +#, fuzzy +msgid "Please select only one instance." +msgstr "Vennligst velg kun et filter" -#: modules/opml_domdoc.php:101 modules/opml_domxml.php:103 +#: plugins/af_sort_bayes/init.js:26 #, fuzzy -msgid "is already imported." -msgstr "Allerede importert." +msgid "Clear classifier database?" +msgstr "Slett nyhetsstrømsdata" -#: modules/opml_domdoc.php:121 modules/opml_domxml.php:122 +#: plugins/af_sort_bayes/init.js:70 #, fuzzy -msgid "OK" -msgstr "OK!" +msgid "Classifier information" +msgstr "Nyhetsstrømsinformasjon:" -#: modules/opml_domdoc.php:130 modules/opml_domxml.php:134 -msgid "Error while parsing document." -msgstr "Feil under behandling av dokumentet" +#: plugins/share/share.js:10 +#, fuzzy +msgid "Share article by URL" +msgstr "Marker artikkel som favoritt" -#: modules/opml_domdoc.php:134 modules/opml_domxml.php:138 -msgid "Error: please upload OPML file." -msgstr "Feil: Kan ikke laste opp OPMLfil" +#: plugins/share/share.js:14 +#, fuzzy +msgid "Generate new share URL for this article?" +msgstr "Vennligst skriv inn et notat for denne artikkelen:" -#: modules/opml_domxml.php:131 -msgid "Error: can't find body element." -msgstr "Feil: Kan ikke finne hovedelement." +#: plugins/share/share.js:18 +#, fuzzy +msgid "Trying to change URL..." +msgstr "Prøver Ã¥ endre e-posten..." -#: modules/popup-dialog.php:7 +#: plugins/share/share.js:55 #, fuzzy -msgid "OPML Import" -msgstr "Importer" +msgid "Remove sharing for this article?" +msgstr "Rediger stikkordene for denne artikkelen" -#: modules/popup-dialog.php:34 +#: plugins/share/share.js:59 #, fuzzy -msgid "Importing using DOMXML." -msgstr "Importerer OPML (bruker DOMXML-utvidelsen)..." +msgid "Trying to unshare..." +msgstr "Prøver Ã¥ endre adressen..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "" -#: modules/popup-dialog.php:40 +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 #, fuzzy -msgid "Importing using DOMDocument." -msgstr "Importerer OPML (bruker DOMDocument-utvidelsen)..." +msgid "Clearing URLs..." +msgstr "Rensker nyhetsstrøm..." -#: modules/popup-dialog.php:68 -msgid "Settings Profiles" +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." msgstr "" -#: modules/popup-dialog.php:75 +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "Marker alle artikler i %s som leste?" + +#: js/feedlist.js:435 #, fuzzy -msgid "Create profile" -msgstr "Lag filter" +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "Marker alle artikler i %s som leste?" -#: modules/popup-dialog.php:100 modules/popup-dialog.php:128 +#: js/feedlist.js:438 #, fuzzy -msgid "(active)" -msgstr "Tilpasset" +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "Marker alle artikler i %s som leste?" -#: modules/popup-dialog.php:148 modules/popup-dialog.php:350 -#: modules/pref-feeds.php:455 modules/pref-feeds.php:1136 -#: modules/pref-filters.php:153 modules/pref-filters.php:321 -#: modules/pref-labels.php:140 modules/pref-users.php:378 -msgid "Remove" -msgstr "Fjern" +#: js/feedlist.js:441 +#, fuzzy +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "Marker alle artikler i %s som leste?" + +#: js/functions.js:615 +msgid "Error explained" +msgstr "" -#: modules/popup-dialog.php:150 +#: js/functions.js:697 #, fuzzy -msgid "Activate" -msgstr "Tilpasset" +msgid "Upload complete." +msgstr "Oppdaterte artikler" -#: modules/popup-dialog.php:163 -msgid "Published Articles" -msgstr "Publiserte artikler" +#: js/functions.js:721 +#, fuzzy +msgid "Remove stored feed icon?" +msgstr "Fjern lagrede data" -#: modules/popup-dialog.php:168 +#: js/functions.js:726 #, fuzzy -msgid "Your Published articles feed URL is:" -msgstr "Lenke til nyhetsstrøm for publiserte artikler" +msgid "Removing feed icon..." +msgstr "Fjerner nyhetsstrøm..." -#: modules/popup-dialog.php:177 +#: js/functions.js:731 #, fuzzy -msgid "Generate new URL" -msgstr "Generert nyhetsstrøm" +msgid "Feed icon removed." +msgstr "Nyhetsstrømmen ble ikke funnet" -#: modules/popup-dialog.php:190 -msgid "Notice" -msgstr "Notis" +#: js/functions.js:753 +#, fuzzy +msgid "Please select an image file to upload." +msgstr "Vennligst velg en nyhetsstrøm" -#: modules/popup-dialog.php:196 -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." +#: js/functions.js:755 +msgid "Upload new icon for this feed?" msgstr "" -"Oppdateringsprosessen er Ã¥pnet for i konfigurasjonsfilen, men prosessen blir " -"ikke kjørt, noe som gjør at ingen nyhetsstrømmer blir oppdatert. Vennligst " -"start prosessen eller konakt administratoren." -#: modules/popup-dialog.php:200 modules/popup-dialog.php:220 -msgid "Last update:" -msgstr "Siste oppdatering:" +#: js/functions.js:756 +#, fuzzy +msgid "Uploading, please wait..." +msgstr "laster, vennligst vent" -#: modules/popup-dialog.php:208 -msgid "" -"You are running the latest version of Tiny Tiny RSS. The fact that you are " -"seeing this dialog is probably a bug." -msgstr "" -"Du kjører siste utgave av Tiny Tiny RSS. Det at du ser denne dialogboksen er " -"mest sannsynlig en feil." +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "Vennligst skriv inn merkelappstekst:" -#: modules/popup-dialog.php:216 -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 "" -"TT-RSS har oppdaget at oppdateringsmetoden bruker for lang tid Ã¥ oppdatere " -"nyhetsstrømmene. Dette kan indikere et krasj eller at noe henger. Vennligst " -"sjekk oppdateringsprosessen eller kontakt vedkommende som innehar " -"nyhetsstrømmen." +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "Kan ikke skape merkelapp, mangler overskrift." -#: modules/popup-dialog.php:239 +#: js/functions.js:820 msgid "Subscribe to Feed" msgstr "Abonner pÃ¥ nyhetsstrøm" -#: modules/popup-dialog.php:248 modules/pref-feeds.php:197 -#: modules/pref-feeds.php:488 modules/pref-filters.php:407 -msgid "Feed" -msgstr "Nyhetsstrøm" - -#: modules/popup-dialog.php:251 modules/pref-feeds.php:213 -#: modules/pref-feeds.php:502 -msgid "URL:" -msgstr "Nettadresse:" - -#: modules/popup-dialog.php:260 modules/pref-feeds.php:225 -#: modules/pref-feeds.php:514 -msgid "Place in category:" -msgstr "Plasser i kategori..." +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "" -#: modules/popup-dialog.php:268 modules/pref-feeds.php:332 -#: modules/pref-feeds.php:558 modules/pref-prefs.php:235 -#: modules/pref-users.php:142 -msgid "Authentication" -msgstr "Autentifisering" +#: js/functions.js:854 +#, fuzzy +msgid "Subscribed to %s" +msgstr "Abonnerer pÃ¥ følgende nyhetsstrømmer:" -#: modules/popup-dialog.php:283 -msgid "This feed requires authentication." -msgstr "Denne nyhetsstrømmen krever autentifisering" +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "" -#: modules/popup-dialog.php:289 modules/popup-dialog.php:349 -msgid "Subscribe" -msgstr "Abonner" +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "" -#: modules/popup-dialog.php:290 +#: js/functions.js:874 #, fuzzy -msgid "More feeds" -msgstr "Flere nyhetsstrømmer" +msgid "Expand to select feed" +msgstr "Sletter den valgte nyhetsstrømmen..." -#: modules/popup-dialog.php:291 modules/popup-dialog.php:351 -#: modules/popup-dialog.php:425 modules/popup-dialog.php:543 -#: modules/popup-dialog.php:612 modules/pref-feeds.php:468 -#: modules/pref-feeds.php:623 modules/pref-filters.php:160 -#: modules/pref-users.php:181 -msgid "Cancel" -msgstr "Avbryt" +#: js/functions.js:886 +#, fuzzy +msgid "Couldn't download the specified URL: %s" +msgstr "Kan ikke abonnere: Ingen nyhetsstrømsadresse er blitt gitt" -#: modules/popup-dialog.php:298 -msgid "Feed Browser" -msgstr "Nyhetsstrømsredigerer" +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "" -#: modules/popup-dialog.php:317 modules/popup-dialog.php:359 -#: modules/popup-dialog.php:424 modules/pref-feeds.php:1177 -#: modules/pref-filters.php:308 modules/pref-labels.php:131 -#: modules/pref-users.php:361 -msgid "Search" -msgstr "Søk" +#: js/functions.js:895 +#, fuzzy +msgid "You are already subscribed to this feed." +msgstr "Du kan ikke fjerne abonnement fra kategorien." -#: modules/popup-dialog.php:321 +#: js/functions.js:1025 #, fuzzy -msgid "Popular feeds" -msgstr "Vis nyhetsstrømmer" +msgid "Edit rule" +msgstr "Filtre" -#: modules/popup-dialog.php:322 +#: js/functions.js:1586 #, fuzzy -msgid "Feed archive" -msgstr "Nyhetsstrømshandlinger" +msgid "Edit Feed" +msgstr "Rediger nyhetsstrømmen" -#: modules/popup-dialog.php:325 +#: js/functions.js:1624 #, fuzzy -msgid "limit:" -msgstr "Antall:" +msgid "More Feeds" +msgstr "Flere nyhetsstrømmer" -#: modules/popup-dialog.php:371 -msgid "Look for" +#: js/functions.js:1878 +msgid "Help" +msgstr "Hjelp" + +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." msgstr "" -#: modules/popup-dialog.php:378 +#: js/prefs.js:1089 #, fuzzy -msgid "match on" -msgstr "Match pÃ¥:" +msgid "Removing category..." +msgstr "Lag kategori" -#: modules/popup-dialog.php:383 -msgid "Title or content" -msgstr "Tittel eller innhold" +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "Fjerne valgte kategorier?" -#: modules/popup-dialog.php:388 -msgid "Limit search to:" -msgstr "Begrens søket til:" +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "Fjerner valgte kategorier..." -#: modules/popup-dialog.php:404 -msgid "This feed" -msgstr "Denne nyhetsstrømmen" +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "Ingen kategorier er valgt." -#: modules/popup-dialog.php:438 -msgid "Create Filter" -msgstr "Lag filter" +#: js/prefs.js:1134 +#, fuzzy +msgid "Category title:" +msgstr "Kategoriredigerer" -#: modules/popup-dialog.php:457 modules/pref-filters.php:42 -#: modules/pref-filters.php:406 -msgid "Match" -msgstr "Match" +#: js/prefs.js:1138 +#, fuzzy +msgid "Creating category..." +msgstr "Lag filter..." -#: modules/popup-dialog.php:465 modules/pref-filters.php:54 -#: modules/pref-filters.php:441 -msgid "before" -msgstr "før" +#: js/prefs.js:1165 +#, fuzzy +msgid "Feeds without recent updates" +msgstr "Oppdateringsfeil" -#: modules/popup-dialog.php:466 modules/pref-filters.php:55 -#: modules/pref-filters.php:442 -msgid "after" -msgstr "etter" +#: js/prefs.js:1214 +#, fuzzy +msgid "Replace current OPML publishing address with a new one?" +msgstr "Bytt ut nÃ¥værende publiseringsadresse med en ny?" -#: modules/popup-dialog.php:478 modules/pref-filters.php:68 -msgid "Check it" -msgstr "Sjekk det" +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "Rensker nyhetsstrøm..." -#: modules/popup-dialog.php:481 modules/pref-filters.php:71 -msgid "on field" -msgstr "PÃ¥ felt:" +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "Sett poeng pÃ¥ nytt for artiklene i de valgte nyhetskanalene?" -#: modules/popup-dialog.php:487 modules/pref-filters.php:77 -msgid "in" -msgstr "i" +#: js/prefs.js:1326 +#, fuzzy +msgid "Rescoring selected feeds..." +msgstr "Rensker valgt nyhetsstrøm..." -#: modules/popup-dialog.php:492 modules/pref-filters.php:82 -msgid "Perform Action" -msgstr "Utfør handlingen" +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "Endre poengene til artiklene? Dette kan ta lang tid." -#: modules/popup-dialog.php:509 modules/pref-filters.php:102 -msgid "with parameters:" -msgstr "med parametrene:" +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "Setter poeng pÃ¥ nytt for nyhetskanalene..." -#: modules/popup-dialog.php:522 modules/pref-feeds.php:355 -#: modules/pref-feeds.php:576 modules/pref-filters.php:121 -#: modules/pref-users.php:164 -msgid "Options" -msgstr "Alternativer:" +#: js/prefs.js:1366 +#, fuzzy +msgid "Reset selected labels to default colors?" +msgstr "Sett merkelappsfargene til standard?" -#: modules/popup-dialog.php:528 modules/pref-filters.php:133 -msgid "Enabled" -msgstr "Tillatt" +#: js/prefs.js:1403 +#, fuzzy +msgid "Settings Profiles" +msgstr "Lag filter" -#: modules/popup-dialog.php:531 modules/pref-filters.php:142 -msgid "Inverse match" -msgstr "Motsatt markering" +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "" -#: modules/popup-dialog.php:541 -msgid "Create" -msgstr "Lag" +#: js/prefs.js:1415 +#, fuzzy +msgid "Removing selected profiles..." +msgstr "Fjerner valgte filtre..." -#: modules/popup-dialog.php:555 -msgid "Update Errors" -msgstr "Oppdaterer feil" +#: js/prefs.js:1430 +#, fuzzy +msgid "No profiles are selected." +msgstr "Ingen artikkel er valgt." -#: modules/popup-dialog.php:558 -msgid "These feeds have not been updated because of errors:" -msgstr "Disse nyhetsstrømmene kunne ikke oppdateres pÃ¥ grunn av feil:" +#: js/prefs.js:1438 +#: js/prefs.js:1491 +#, fuzzy +msgid "Activate selected profile?" +msgstr "Fjerne valgte filtre?" -#: modules/popup-dialog.php:584 -msgid "Edit Tags" -msgstr "Endre Stikkord" +#: js/prefs.js:1454 +#: js/prefs.js:1507 +#, fuzzy +msgid "Please choose a profile to activate." +msgstr "Vennligst velg en eller flere nyhetsstrømmer først" -#: modules/popup-dialog.php:589 -msgid "Tags for this article (separated by commas):" -msgstr "Denne artikkelens stikkord (separert med kommaer):" +#: js/prefs.js:1459 +#, fuzzy +msgid "Creating profile..." +msgstr "Lag filter" -#: modules/popup-dialog.php:611 modules/pref-feeds.php:467 -#: modules/pref-feeds.php:621 modules/pref-filters.php:157 -#: modules/pref-users.php:179 -msgid "Save" -msgstr "Lagre" +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "" -#: modules/popup-dialog.php:620 +#: js/prefs.js:1525 #, fuzzy -msgid "Tag Cloud" -msgstr "Tag-sky" +msgid "Generated URLs cleared." +msgstr "Generert nyhetsstrøm" -#: modules/popup-dialog.php:623 -msgid "Showing most popular tags " -msgstr "Vis mest populære stikkord" +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Merkelappredigerer" + +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "Du kan ikke fjerne abonnement fra kategorien." -#: modules/popup-dialog.php:624 +#: js/viewfeed.js:113 #, fuzzy -msgid "more tags" -msgstr "Ingen stikkord" +msgid "Cancel search" +msgstr "Avbryt" -#: modules/pref-feeds.php:4 -msgid "Check to enable field" -msgstr "Marker for Ã¥ tillate felt" +#: js/viewfeed.js:174 +#, fuzzy +msgid "New articles found, reload feed to continue." +msgstr "Ingen artikler funnet som kan vises" -#: modules/pref-feeds.php:187 -msgid "Feed Editor" -msgstr "Nyhetsstrømsredigerer" +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Fjern favorittmerkingen fra artiklen" + +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "Marker artikkel som favoritt" -#: modules/pref-feeds.php:242 -msgid "Link to feed:" -msgstr "Lenk til nyhetsstrøm:" +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "Fjern publiseringen av artikkelen." -#: modules/pref-feeds.php:259 -msgid "Not linked" -msgstr "Ikke linket til" +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Publiser artiklen" -#: modules/pref-feeds.php:310 modules/pref-feeds.php:537 -msgid "using" -msgstr "bruker" +#: js/viewfeed.js:662 +#, fuzzy +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "Ingen artikkel er valgt." +msgstr[1] "Ingen artikkel er valgt." -#: modules/pref-feeds.php:322 modules/pref-feeds.php:549 -msgid "Article purging:" -msgstr "Slett artikler:" +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "Ingen artikkel er valgt." + +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "Ingen artikler funnet som kan markeres" -#: modules/pref-feeds.php:369 modules/pref-feeds.php:582 +#: js/viewfeed.js:1452 #, fuzzy -msgid "Hide from Popular feeds" -msgstr "Skjul fra min nyhetsstrømslisten" +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "Marker %d artikkel/artikler som leste?" +msgstr[1] "Marker %d artikkel/artikler som leste?" -#: modules/pref-feeds.php:380 modules/pref-feeds.php:587 -msgid "Right-to-left content" -msgstr "Innhold som vises fra høyre til venstre" +#: js/viewfeed.js:1967 +#, fuzzy +msgid "Display article URL" +msgstr "Vis stikkord" -#: modules/pref-feeds.php:392 modules/pref-feeds.php:593 -msgid "Include in e-mail digest" -msgstr "Inkluder i e-postsammendraget" +#~ msgid "Limit search to:" +#~ msgstr "Begrens søket til:" -#: modules/pref-feeds.php:405 modules/pref-feeds.php:599 -msgid "Always display image attachments" -msgstr "" +#~ msgid "This feed" +#~ msgstr "Denne nyhetsstrømmen" -#: modules/pref-feeds.php:427 modules/pref-feeds.php:607 -msgid "Cache images locally" -msgstr "Mellomlagre bilder lokalt pÃ¥ serveren" +#~ msgid "Old password cannot be blank." +#~ msgstr "Gammelt passord kan ikke være blankt." -#: modules/pref-feeds.php:439 -#, fuzzy -msgid "Icon" -msgstr "Handling" +#~ msgid "New password cannot be blank." +#~ msgstr "Nytt passord kan ikke vært blankt." -#: modules/pref-feeds.php:453 -msgid "Replace" -msgstr "" +#~ msgid "Entered passwords do not match." +#~ msgstr "Innskrivne passord matcher ikke." -#: modules/pref-feeds.php:478 -msgid "Multiple Feed Editor" -msgstr "Nyhetsstrømsredigerer" +#~ msgid "Match:" +#~ msgstr "Matcher:" -#: modules/pref-feeds.php:842 modules/pref-feeds.php:889 -msgid "All done." -msgstr "Alt ferdig." +#, fuzzy +#~ msgid "All tags." +#~ msgstr "Ingen stikkord" -#: modules/pref-feeds.php:920 -#, php-format -msgid "Subscribed to %s." -msgstr "Abonnerer pÃ¥ %s" +#, fuzzy +#~ msgid "Display entries" +#~ msgstr "Vis nyhetsstrømmer" -#: modules/pref-feeds.php:923 -#, fuzzy, php-format -msgid "Could not subscribe to %s." -msgstr "Abonnerer allerede pÃ¥ %s" +#, fuzzy +#~ msgid "Unread First" +#~ msgstr "Ulest" -#: modules/pref-feeds.php:926 -#, php-format -msgid "Already subscribed to %s." -msgstr "Abonnerer allerede pÃ¥ %s" +#~ msgid "Unknown option: %s" +#~ msgstr "Ukjent valg: %s" -#: modules/pref-feeds.php:949 -msgid "Edit subscription options" -msgstr "Rediger abonnementsalternativer" +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "Ny versjon av Tiny Tiny Rss er tilgjengelig!" -#: modules/pref-feeds.php:1033 -msgid "Category editor" -msgstr "Kategoriredigerer" +#, fuzzy +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "Sesjonen kunne ikke valideres (feil IP)" -#: modules/pref-feeds.php:1056 -#, php-format -msgid "Category $%s already exists in the database." -msgstr "Kategorien $%s eksisterer allerede i databasen" +#, fuzzy +#~ msgid "Assign articles to labels automatically" +#~ msgstr "Marker artikler som leste automatisk" -#: modules/pref-feeds.php:1077 -msgid "Create category" -msgstr "Lag kategori" +#, fuzzy +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "Ny versjon av Tiny Tiny Rss er tilgjengelig!" -#: modules/pref-feeds.php:1130 -msgid "No feed categories defined." -msgstr "Ingen kategorier ble markert" +#, fuzzy +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Returner til Tiny Tiny RSS" -#: modules/pref-feeds.php:1160 -msgid "Some feeds have update errors (click for details)" -msgstr "Noen nyhetsstrømmer har oppdateringsfeil (trykk for detaljer)" +#, fuzzy +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "Tiny Tiny RSS-databasen er oppdatert" -#: modules/pref-feeds.php:1181 help/3.php:45 help/4.php:22 -msgid "Subscribe to feed" -msgstr "Abonner pÃ¥ nyhetsstrøm" +#, fuzzy +#~ msgid "Force update" +#~ msgstr "Utfør oppdateringene" + +#, fuzzy +#~ msgid "Ready to update." +#~ msgstr "Siste oppdatering:" + +#, fuzzy +#~ msgid "Start update" +#~ msgstr "Siste oppdatering:" -#: modules/pref-feeds.php:1184 #, fuzzy -msgid "Edit feeds" -msgstr "Rediger nyhetsstrømmen" +#~ msgid "New version available!" +#~ msgstr "Ny versjon av Tiny Tiny Rss er tilgjengelig!" -#: modules/pref-feeds.php:1189 -msgid "Edit categories" -msgstr "Rediger kategorier" +#~ msgid "Select:" +#~ msgstr "Velg:" -#: modules/pref-feeds.php:1198 -#, fuzzy -msgid "More actions..." -msgstr "Handlinger..." +#~ msgid "mark as read" +#~ msgstr "marker som lest" -#: modules/pref-feeds.php:1202 -msgid "Manual purge" -msgstr "Slett manuelt" +#~ msgid "Change password to" +#~ msgstr "Endre passordet til" -#: modules/pref-feeds.php:1206 -msgid "Clear feed data" -msgstr "Slett nyhetsstrømsdata" +#~ msgid "E-mail: " +#~ msgstr "E-post: " -#: modules/pref-feeds.php:1207 modules/pref-filters.php:324 -msgid "Rescore articles" -msgstr "Tilbakestill poengsummene for artiklene" +#~ msgid "Login field cannot be blank." +#~ msgstr "Brukernavn kan ikke være blankt" -#: modules/pref-feeds.php:1296 -msgid "Show last article times" -msgstr "Vis tidspunktene for siste artikkel" +#~ msgid "Saving user..." +#~ msgstr "Lagrer bruker..." -#: modules/pref-feeds.php:1313 modules/pref-feeds.php:1373 -msgid "Last Article" -msgstr "Siste Artikkel" +#, fuzzy +#~ msgid "Toggle marked" +#~ msgstr "Sett som favoritt" -#: modules/pref-feeds.php:1398 modules/pref-filters.php:487 -#: modules/pref-users.php:467 -msgid "Click to edit" -msgstr "Trykk for Ã¥ endre" +#, fuzzy +#~ msgid "(Un)hide empty categories" +#~ msgstr "Rediger kategorier" -#: modules/pref-feeds.php:1412 -#, php-format -msgid "(linked to %s)" -msgstr "(koblet til %s)" +#, fuzzy +#~ msgid "Published articles and generated feeds" +#~ msgstr "Sett poeng pÃ¥ nytt for artiklene i de valgte nyhetskanalene?" -#: modules/pref-feeds.php:1439 #, fuzzy -msgid "You don't have any subscribed feeds." -msgstr "Du kan ikke fjerne abonnement fra kategorien." +#~ msgid "Articles shared by URL" +#~ msgstr "Marker artikkel som favoritt" + +#~ msgid "These feeds have not been updated because of errors:" +#~ msgstr "Disse nyhetsstrømmene kunne ikke oppdateres pÃ¥ grunn av feil:" -#: modules/pref-feeds.php:1441 #, fuzzy -msgid "No matching feeds found." -msgstr "Ingen filtre ble funnet." +#~ msgid "Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings." +#~ msgstr "" +#~ "Din nettleser støtter ikke Javaskript som er nødvendig\n" +#~ "\t\tfor at dette programmet skal fungere ordentlig. Vennligst sjekk din \n" +#~ "\t\tnettlesers instillinger." -#: modules/pref-feeds.php:1447 -msgid "OPML" -msgstr "OPML" +#~ msgid "Hello," +#~ msgstr "Hei, " -#: modules/pref-feeds.php:1470 -msgid "Import" -msgstr "Importer" +#, fuzzy +#~ msgid "Enable categories" +#~ msgstr "Tillatt kategorisering av nyhetsstrømmer" -#: modules/pref-feeds.php:1475 -msgid "Export OPML" -msgstr "Eksporter OPML" +#, fuzzy +#~ msgid "Browse categories like folders" +#~ msgstr "Tilbakestill kategorirekkefølgen" -#: modules/pref-feeds.php:1478 -msgid "Firefox Integration" -msgstr "Firefox integrering" +#, fuzzy +#~ msgid "Show images in posts" +#~ msgstr "Ikke vis bilder i artiklene" -#: modules/pref-feeds.php:1480 -msgid "" -"This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the " -"link below." -msgstr "" -"Denne Tiny Tiny RSS siden kan bli brukt som nyhetsstrømsleser for Firefox " -"ved Ã¥ trykke pÃ¥ lenken nedenfor." +#, fuzzy +#~ msgid "Hide read articles and feeds" +#~ msgstr "Skjul/vis leste nyhetsstrømmer" -#: modules/pref-feeds.php:1487 -msgid "Click here to register this site as a feed reader." -msgstr "Trykk her for Ã¥ registrere denne siden som nyhetsstrømsleser" +#, fuzzy +#~ msgid "Sort feeds by unread count" +#~ msgstr "Sorter nyhetsstrømer ut i fra antall uleste artikler" -#: modules/pref-feeds.php:1498 -msgid "" -"Published articles are exported as a public RSS feed and can be subscribed " -"by anyone who knows the URL specified below." -msgstr "" -"Publiserte artikler kan bli eksportert som en offentlig RSS-nyhetskanal og " -"kan bli abonnert pÃ¥ av alle som vet adressen som blir spesifisert nedenfor." +#, fuzzy +#~ msgid "Article archive" +#~ msgstr "Artikkeldato" -#: modules/pref-feeds.php:1501 #, fuzzy -msgid "Display URL" -msgstr "Vis stikkord" +#~ msgid "Example Pane" +#~ msgstr "Eksempler" -#: modules/pref-feeds.php:1604 -#, fuzzy, php-format -msgid "%d archived articles" -msgstr "Favorittartikler" +#, fuzzy +#~ msgid "Set value" +#~ msgstr "Sett som favorittartikkel" -#: modules/pref-feeds.php:1633 -msgid "No feeds found." -msgstr "Ingen nyhetsstrømmer ble funnet." +#, fuzzy +#~ msgid "Mark %d displayed article as read?" +#~ msgid_plural "Mark %d displayed articles as read?" +#~ msgstr[0] "Marker %d artikkel/artikler som leste?" +#~ msgstr[1] "Marker %d artikkel/artikler som leste?" -#: modules/pref-filters.php:23 -msgid "Filter Editor" -msgstr "Filteradministrering" +#, fuzzy +#~ msgid "Error: unable to load article." +#~ msgstr "Feil: Kan ikke laste opp OPMLfil" -#: modules/pref-filters.php:212 -#, php-format -msgid "Saved filter %s" -msgstr "Lagret filter %s" +#, fuzzy +#~ msgid "Click to expand article." +#~ msgstr "Trykk for Ã¥ utvide artikkel" -#: modules/pref-filters.php:266 -#, php-format -msgid "Created filter %s" -msgstr "Laget filter %s" +#, fuzzy +#~ msgid "%d more..." +#~ msgid_plural "%d more..." +#~ msgstr[0] "Laster hjelp..." +#~ msgstr[1] "Laster hjelp..." -#: modules/pref-filters.php:315 help/3.php:31 help/4.php:25 -msgid "Create filter" -msgstr "Lag filter" +#, fuzzy +#~ msgid "No unread feeds." +#~ msgstr "Skjul/vis leste nyhetsstrømmer" -#: modules/pref-filters.php:318 modules/pref-users.php:376 -msgid "Edit" -msgstr "Rediger" +#, fuzzy +#~ msgid "Load more..." +#~ msgstr "Laster hjelp..." -#: modules/pref-filters.php:408 -msgid "Field" -msgstr "Felt" +#, fuzzy +#~ msgid "Show tag cloud..." +#~ msgstr "Tag-sky" -#: modules/pref-filters.php:409 -msgid "Params" -msgstr "Parametre" +#, fuzzy +#~ msgid "Click to play" +#~ msgstr "Trykk for Ã¥ endre" -#: modules/pref-filters.php:476 -msgid "(Disabled)" -msgstr "(Avskrudd)" +#, fuzzy +#~ msgid "Visit the website" +#~ msgstr "Besøk den offisielle siden" -#: modules/pref-filters.php:492 -msgid "(Inverse)" -msgstr "(Motsatt)" +#~ msgid "Select theme" +#~ msgstr "Velg utseende" -#: modules/pref-filters.php:512 -msgid "No filters defined." -msgstr "Ingen filtre er valgt" +#, fuzzy +#~ msgid "Playing..." +#~ msgstr "Laster nyhetsstrømmer..." -#: modules/pref-filters.php:514 -msgid "No matching filters found." -msgstr "Ingen filtre ble funnet." +#, fuzzy +#~ msgid "Default interval between feed updates" +#~ msgstr "Standard intervall mellom nyhetsstrømsoppdateringer (i minutter)" -#: modules/pref-labels.php:102 -#, php-format -msgid "Created label %s" -msgstr "Laget merkelappen %s" +#~ msgid "Could not update database" +#~ msgstr "Kunne ikke oppdatere databasen" -#: modules/pref-labels.php:137 help/3.php:30 help/4.php:26 -msgid "Create label" -msgstr "Lag merkelapp" +#~ msgid "Could not find necessary schema file, need version:" +#~ msgstr "Kunne ikke finne den nødvendige skjemafilen, nødvendig versjon:" -#: modules/pref-labels.php:143 -msgid "Clear colors" -msgstr "Fjern farger" +#~ msgid ", found: " +#~ msgstr ", funnet: " -#: modules/pref-labels.php:223 -msgid "Click to change color" -msgstr "Trykk for Ã¥ endre farge" +#~ msgid "Tiny Tiny RSS database is up to date." +#~ msgstr "Tiny Tiny RSS-databasen er oppdatert" -#: modules/pref-labels.php:246 -msgid "No labels defined." -msgstr "Ingen merkelapper er valgt" +#~ msgid "Please backup your database before proceeding." +#~ msgstr "Vennligst gjør backup av din database før du fortsetter." -#: modules/pref-labels.php:248 -msgid "No matching labels found." -msgstr "Ingen passende merkelapper ble funnet." +#~ msgid "Your Tiny Tiny RSS database needs update to the latest version (%d to %d)." +#~ msgstr "Din Tiny Tiny RSS-database trenger Ã¥ oppdateres til siste utgave (%d til %d)." -#: modules/pref-labels.php:306 -msgid "custom color:" -msgstr "valgfri farge:" +#~ msgid "Performing updates..." +#~ msgstr "Utfører oppdateringer..." -#: modules/pref-labels.php:307 -msgid "foreground" -msgstr "Forgrunn" +#~ msgid "Updating to version %d..." +#~ msgstr "Oppdaterer til versjon %d..." -#: modules/pref-labels.php:308 -msgid "background" -msgstr "bakgrunn" +#~ msgid "Checking version... " +#~ msgstr "Sjekker utgave..." -#: modules/pref-prefs.php:37 -msgid "Old password cannot be blank." -msgstr "Gammelt passord kan ikke være blankt." +#~ msgid "OK!" +#~ msgstr "OK!" -#: modules/pref-prefs.php:42 -msgid "New password cannot be blank." -msgstr "Nytt passord kan ikke vært blankt." +#~ msgid "ERROR!" +#~ msgstr "Feil!" -#: modules/pref-prefs.php:47 -msgid "Entered passwords do not match." -msgstr "Innskrivne passord matcher ikke." +#, fuzzy +#~ msgid "Finished. Performed %d update up to schema version %d." +#~ msgid_plural "Finished. Performed %d updates up to schema version %d." +#~ msgstr[0] "" +#~ "Ferdig. %d utførte oppdatering(er)i følge skjema\n" +#~ "\t\t\tversjon %d." +#~ msgstr[1] "" +#~ "Ferdig. %d utførte oppdatering(er)i følge skjema\n" +#~ "\t\t\tversjon %d." -#: modules/pref-prefs.php:74 -msgid "Password has been changed." -msgstr "Passord har blitt endret." +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Med dette valget haket av sÃ¥ vil overskriftene i spesielle nyhetskanaler og merkelapper grupperes etter nyhetskanalene" -#: modules/pref-prefs.php:76 -msgid "Old password is incorrect." -msgstr "Gammelt passord er feil" +#~ msgid "Title or Content" +#~ msgstr "Tittel eller innhold" -#: modules/pref-prefs.php:104 -msgid "The configuration was saved." -msgstr "Konfigurasjonen er lagret." +#~ msgid "Link" +#~ msgstr "Lenke" -#: modules/pref-prefs.php:120 -#, php-format -msgid "Unknown option: %s" -msgstr "Ukjent valg: %s" +#~ msgid "Content" +#~ msgstr "Innhold" -#: modules/pref-prefs.php:131 -msgid "E-mail has been changed." -msgstr "E-post har blitt endret." +#~ msgid "Article Date" +#~ msgstr "Artikkeldato" -#: modules/pref-prefs.php:171 -msgid "" -"Your password is at default value, \n" -"\t\t\t\t\t\tplease change it." -msgstr "" -"Passordet ditt er et standardpassord, \n" -"\t\t\t\t\t\tVennligst bytt." +#~ msgid "Set starred" +#~ msgstr "Sett som favorittartikkel" -#: modules/pref-prefs.php:198 -msgid "Personal data" -msgstr "Personlig informasjon" +#~ msgid "Assign tags" +#~ msgstr "Tildel stikkord" -#: modules/pref-prefs.php:205 -msgid "E-mail" -msgstr "E-post" +#~ 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 "Dette valget er brukervennlig hvis du leser flere globale nyhetsstrømssamlere som har delvis overlappende brukerbase. NÃ¥r denne er avskrudd kan samme post fra flere forskjellige nyhetsstrømmer vises pÃ¥ en gang." -#: modules/pref-prefs.php:216 -msgid "Access level" -msgstr "TilgangsnivÃ¥" +#, fuzzy +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Gammelt passord er feil" -#: modules/pref-prefs.php:229 -msgid "Change e-mail" -msgstr "Skift e-post" +#, fuzzy +#~ msgid "Date syntax is incorrect." +#~ msgstr "Gammelt passord er feil" -#: modules/pref-prefs.php:237 -msgid "Old password" -msgstr "Gammelt passord" +#~ msgid "Notice" +#~ msgstr "Notis" -#: modules/pref-prefs.php:244 -msgid "New password" -msgstr "Nytt passord" +#, fuzzy +#~ msgid "Tag Cloud" +#~ msgstr "Tag-sky" -#: modules/pref-prefs.php:252 -msgid "Confirm password" -msgstr "Bekreft passord" +#~ msgid "Mark all visible articles in %s as read?" +#~ msgstr "Marker alle synlige artikler i %s som leste?" -#: modules/pref-prefs.php:268 -msgid "Change password" -msgstr "Endre passord" +#~ msgid "Score" +#~ msgstr "Poeng" -#: modules/pref-prefs.php:323 -msgid "Select theme" -msgstr "Velg utseende" +#, fuzzy +#~ msgid "Share on identi.ca" +#~ msgstr "Tittel" -#: modules/pref-prefs.php:383 modules/pref-prefs.php:388 -msgid "Yes" -msgstr "Ja" +#, fuzzy +#~ msgid "Flattr this article." +#~ msgstr "Marker artikkel som favoritt" -#: modules/pref-prefs.php:385 modules/pref-prefs.php:388 -msgid "No" -msgstr "Nei" +#, fuzzy +#~ msgid "Share on Google+" +#~ msgstr "Tittel" -#: modules/pref-prefs.php:409 -msgid "Save configuration" -msgstr "Lagre konfigurasjonen" +#, fuzzy +#~ msgid "Share on Twitter" +#~ msgstr "Tittel" -#: modules/pref-prefs.php:412 -msgid "Manage profiles" -msgstr "" +#, fuzzy +#~ msgid "Show additional preferences" +#~ msgstr "Forlat innstillinger" -#: modules/pref-prefs.php:415 -msgid "Reset to defaults" -msgstr "Tilbake til standard" +#, fuzzy +#~ msgid "Back to feeds" +#~ msgstr "Trykk for Ã¥ endre" -#: modules/pref-users.php:7 -msgid "Your access level is insufficient to open this tab." -msgstr "AdgangsnivÃ¥et ditt er for lavt for Ã¥ Ã¥pne denne siden." +#, fuzzy +#~ msgid "Clearing credentials..." +#~ msgstr "Slett nyhetsstrømsdata" -#: modules/pref-users.php:17 -msgid "User details" -msgstr "Brukerdetaljer" +#~ msgid "Updated" +#~ msgstr "Oppdatert" -#: modules/pref-users.php:31 -msgid "User not found" -msgstr "Brukeren ble ikke funnet" +#, fuzzy +#~ msgid "" +#~ "Your browser doesn't support Javascript, which is required\n" +#~ "\t\t\tfor this application to function properly. Please check your\n" +#~ "\t\t\tbrowser settings." +#~ msgstr "" +#~ "Din nettleser støtter ikke Javaskript som er nødvendig\n" +#~ "\t\tfor at dette programmet skal fungere ordentlig. Vennligst sjekk din \n" +#~ "\t\tnettlesers instillinger." -#: modules/pref-users.php:50 modules/pref-users.php:428 -msgid "Registered" -msgstr "Registrert" +#~ msgid "Notifying %s." +#~ msgstr "Gir beskjed til %s" -#: modules/pref-users.php:51 -msgid "Last logged in" -msgstr "Sist innlogget" +#~ msgid "Yes" +#~ msgstr "Ja" -#: modules/pref-users.php:58 -msgid "Subscribed feeds count" -msgstr "Antall nyhetsstrømmer som abonneres pÃ¥" +#~ msgid "No" +#~ msgstr "Nei" -#: modules/pref-users.php:62 -msgid "Subscribed feeds" -msgstr "Nyhetsstrømmer som abonneres pÃ¥" +#~ msgid "Comments?" +#~ msgstr "Kommentarer?" -#: modules/pref-users.php:108 -msgid "User Editor" -msgstr "Brukeradministrering" +#~ msgid "Move between feeds" +#~ msgstr "Beveg deg mellom nyhetsstrømmene" -#: modules/pref-users.php:145 -msgid "Access level: " -msgstr "TilgangsnivÃ¥:" +#~ msgid "Move between articles" +#~ msgstr "Beveg deg mellom artikler" -#: modules/pref-users.php:158 -msgid "Change password to" -msgstr "Endre passordet til" +#~ msgid "Active article actions" +#~ msgstr "Handlinger for aktive artikler" -#: modules/pref-users.php:167 -msgid "E-mail: " -msgstr "E-post: " +#, fuzzy +#~ msgid "Dismiss read articles" +#~ msgstr "Skjul synlige leste artikler" -#: modules/pref-users.php:201 -#, php-format -msgid "Changed password of user %s." -msgstr "Byttet passord for bruker %s." +#~ msgid "Mark articles below/above active one as read" +#~ msgstr "Marker alle artikler under/over den aktive som lest" -#: modules/pref-users.php:249 -#, php-format -msgid "Added user %s with password %s" -msgstr "La til bruker %s med passordet %s" +#~ msgid "Other actions" +#~ msgstr "Andre handlinger" -#: modules/pref-users.php:256 -#, php-format -msgid "Could not create user %s" -msgstr "Kunne ikke lage brukeren %s" +#~ msgid "Display this help dialog" +#~ msgstr "Vis denne hjelpdialogen" -#: modules/pref-users.php:260 -#, php-format -msgid "User %s already exists." -msgstr "Brukeren %s finnes allerede." +#, fuzzy +#~ msgid "Multiple articles actions" +#~ msgstr "Alle artikler" -#: modules/pref-users.php:280 -#, php-format -msgid "" -"Changed password of user %s\n" -"\t\t\t\t\t to %s" -msgstr "" -"Byttet passord forbruker %s\n" -"\t\t\t\t\t til %s" +#, fuzzy +#~ msgid "Select starred articles" +#~ msgstr "Slett uleste artikler" -#: modules/pref-users.php:284 -#, php-format -msgid "Notifying %s." -msgstr "Gir beskjed til %s" +#~ msgid "Feed actions" +#~ msgstr "Nyhetsstrømshandlinger" -#: modules/pref-users.php:321 -msgid "[tt-rss] Password change notification" -msgstr "[tt-rss] Varsel om endring av passord" +#~ msgid "If viewing category, (un)collapse it" +#~ msgstr "Hvis kategorien vises, brett ut/klapp den sammen." -#: modules/pref-users.php:370 help/4.php:27 -msgid "Create user" -msgstr "Lag bruker" +#~ msgid "Press any key to close this window." +#~ msgstr "Trykk pÃ¥ en knapp for Ã¥ lukk dette vinduet" -#: modules/pref-users.php:374 -#, fuzzy -msgid "Details" -msgstr "Daglig" +#~ msgid "My Feeds" +#~ msgstr "Mine nyhetsstrømmer" -#: modules/pref-users.php:380 -msgid "Reset password" -msgstr "Nullstill passordet" +#~ msgid "Other Feeds" +#~ msgstr "Andres nyhetsstrømmer" -#: modules/pref-users.php:426 -msgid "Login" -msgstr "Logg inn" +#~ msgid "Panel actions" +#~ msgstr "Panelhandlinger" -#: modules/pref-users.php:427 -msgid "Access Level" -msgstr "TilgangsnivÃ¥" +#~ msgid "Top 25 feeds" +#~ msgstr "Topp 25 nyhetsstrømmer" -#: modules/pref-users.php:429 -msgid "Last login" -msgstr "Siste innlogging" +#~ msgid "Edit feed categories" +#~ msgstr "Rediger nyyhetsstrømskategorier" -#: modules/pref-users.php:487 -msgid "No users defined." -msgstr "Ingen brukere er valgt" +#~ msgid "Focus search (if present)" +#~ msgstr "Fokuser søk (hvis mulig)" -#: modules/pref-users.php:489 -msgid "No matching users found." -msgstr "Ingen matchende brukere ble funnet" +#~ msgid "Note: not all actions may be available, depending on Tiny Tiny RSS configuration and your access level." +#~ msgstr "Advarsel: ikke alle handlinger er nødvendigvis tilgjengelig, det avhenger av konfigureringen av Tiny Tiny RSS og ditt tilgangsnivÃ¥." + +#, fuzzy +#~ msgid "Open article in new tab" +#~ msgstr "Ã…pne artikkel i nytt nettleservindu" -#: help/2.php:1 -msgid "Content filtering" -msgstr "Innholdsfiltering" +#~ msgid "Right-to-left content" +#~ msgstr "Innhold som vises fra høyre til venstre" -#: help/2.php:3 -msgid "" -"Tiny Tiny RSS has support for filtering (or processing) articles. Filtering " -"is done once, when new article is imported to the database from the " -"newsfeed, specified field is matched against regular expression and some " -"action is taken. Regular expression matching is case-insensitive." -msgstr "" -"Tiny Tiny RSS har støtte for filtrering (eller prosesering) av artikler. " -"Filtreringen blir gjort engang, nÃ¥r nye artikler blir importert til " -"databasen fra nyhetsstrømmene, Spesifike felt blir sammenlignet med regulære " -"uttrykk og handlinger blir foretatt pÃ¥ bakgrunn av dette.Sammenligningen med " -"regulære uttrykk tar ikke hensyn til om det er strore eller smÃ¥ bokstaver." - -#: help/2.php:5 -msgid "" -"Supported actions are: filter (do not import) article, mark article as read, " -"set starred, assign tag(s), and set score. Filters can be defined globally " -"and for some specific feed." -msgstr "" -"Støttede handlinger er: filtrering (ikke importering) av artikler, markere " -"artikler som leste, sett som favoritt, tilordne stikkord, og Ã¥ gi poeng. " -"Filtre kan bli definert globalt og/eller for den enkelte nyhetsstrøm." +#, fuzzy +#~ msgid "Cache content locally" +#~ msgstr "Mellomlagre bilder lokalt pÃ¥ serveren" -#: help/2.php:7 -msgid "" -"Multiple and inverse matching are supported. All matching filters are " -"considered when article is being imported and all actions executed in " -"sequence. Inverse matching reverts matching result, e.g. filter matching " -"XYZZY in title with inverse flag will match all articles, except those " -"containing string XYZZY in title." -msgstr "" -"Sammenligning med basis i flere uttrykk og motsatt av uttrykk er støttet. " -"Alle filtre blir vurdert nÃ¥r en artikkel blir importert og alle handlinger " -"blir utført i rekkefølge. Motsatt sammenlignings snur det matchende " -"resultatet slik at for eksempel et filter som søker etter XYZZY i " -"tittelfeltet med beskjed om Ã¥ bli snudd vil vise alle artikler som ikke " -"inneholder XYZZY i tittelen." - -#: help/2.php:9 -msgid "See also:" -msgstr "Se ogsÃ¥:" - -#: help/3.php:1 help/4.php:1 -msgid "Keyboard Shortcuts" -msgstr "Tastatursnarveier" +#, fuzzy +#~ msgid "Loading..." +#~ msgstr "Laster nyhetsstrømmer..." -#: help/3.php:5 -msgid "Navigation" -msgstr "Navigasjon" +#, fuzzy +#~ msgid "View in a tt-rss tab" +#~ msgstr "Ã…pne artikkel i nytt nettleservindu" -#: help/3.php:8 -msgid "Move between feeds" -msgstr "Beveg deg mellom nyhetsstrømmene" +#~ msgid "Magpie" +#~ msgstr "Magpie" -#: help/3.php:9 -msgid "Move between articles" -msgstr "Beveg deg mellom artikler" +#~ msgid "SimplePie" +#~ msgstr "SimplePie" -#: help/3.php:10 -msgid "Show search dialog" -msgstr "Vis søkevinduet" +#~ msgid "using" +#~ msgstr "bruker" -#: help/3.php:13 -msgid "Active article actions" -msgstr "Handlinger for aktive artikler" +#, fuzzy +#~ msgid "match on" +#~ msgstr "Match pÃ¥:" -#: help/3.php:16 -msgid "Toggle starred" -msgstr "Sett som favoritt" +#~ msgid "Title or content" +#~ msgstr "Tittel eller innhold" -#: help/3.php:17 -msgid "Toggle published" -msgstr "Sett som publisert" +#, fuzzy +#~ msgid "Your request could not be completed." +#~ msgstr "Registreringsinformasjonen din er ufullstendig." -#: help/3.php:18 -msgid "Toggle unread" -msgstr "Sett som ulest" +#, fuzzy +#~ msgid "Can't update this kind of feed." +#~ msgstr "Du kan ikke endre denne typen nyhetsstrøm" -#: help/3.php:19 -msgid "Edit tags" -msgstr "Endre stikkord" +#, fuzzy +#~ msgid "Original article" +#~ msgstr "Vis opprinnelig artikkelinnhold" -#: help/3.php:20 -msgid "Open article in new window" -msgstr "Ã…pne artikkel i nytt nettleservindu" +#, fuzzy +#~ msgid "Update feed" +#~ msgstr "Oppdater alle nyhetsstrømmer" -#: help/3.php:21 -msgid "Mark articles below/above active one as read" -msgstr "Marker alle artikler under/over den aktive som lest" +#, fuzzy +#~ msgid "With subcategories" +#~ msgstr "Rediger kategorier" -#: help/3.php:22 -msgid "Scroll article content" -msgstr "Rullevisning av artkkelens innhold" +#, fuzzy +#~ msgid "
  • Adding category %s.
  • " +#~ msgstr "Legger til kategori %s." -#: help/3.php:26 help/4.php:30 -msgid "Other actions" -msgstr "Andre handlinger" +#, fuzzy +#~ msgid "OK" +#~ msgstr "OK!" -#: help/3.php:29 -msgid "Select article under mouse cursor" -msgstr "Velg artikkelen under musepekeren" +#~ msgid "before" +#~ msgstr "før" -#: help/3.php:32 -msgid "Collapse sidebar" -msgstr "Skjul nyhetskanalsslisten" +#~ msgid "after" +#~ msgstr "etter" -#: help/3.php:33 -msgid "Toggle category reordering mode" -msgstr "Tillatt endringer i kategorirekkefølgen?" +#~ msgid "Check it" +#~ msgstr "Sjekk det" -#: help/3.php:34 help/4.php:34 -msgid "Display this help dialog" -msgstr "Vis denne hjelpdialogen" +#, fuzzy +#~ msgid "Apply to category" +#~ msgstr "Plasser i kategori..." -#: help/3.php:39 -msgid "Feed actions" -msgstr "Nyhetsstrømshandlinger" +#~ msgid "Category $%s already exists in the database." +#~ msgstr "Kategorien $%s eksisterer allerede i databasen" -#: help/3.php:42 -msgid "Update active feed" -msgstr "Oppdater aktive nyhetsstrømmer" +#~ msgid "No feed categories defined." +#~ msgstr "Ingen kategorier ble markert" -#: help/3.php:43 -msgid "Update all feeds" -msgstr "Oppdater alle nyhetsstrømmer" +#, fuzzy +#~ msgid "Remove selected categories" +#~ msgstr "Fjerne valgte kategorier?" -#: help/3.php:46 -msgid "Edit feed" -msgstr "Rediger nyhetsstrømmen" +#, fuzzy +#~ msgid "Twitter" +#~ msgstr "Tittel" -#: help/3.php:47 -msgid "Sort by name or unread count" -msgstr "Sorter nyhetsstrømer ut i fra navn eller antall uleste artikler" +#~ msgid "Created filter %s" +#~ msgstr "Laget filter %s" -#: help/3.php:48 -msgid "Hide visible read articles" -msgstr "Skjul synlige leste artikler" +#~ msgid "Attachment:" +#~ msgstr "Vedlegg:" -#: help/3.php:49 -msgid "Mark feed as read" -msgstr "Marker nyhetsstrøm som lest" +#~ msgid "Subscribing to feed..." +#~ msgstr "Abonnerer pÃ¥ nyhetsstrømmen..." -#: help/3.php:50 #, fuzzy -msgid "Reverse headlines order" -msgstr "Motsatt titteloversikt (eldste først)" +#~ msgid "Filter Test Results" +#~ msgstr "Filteruttrykk" -#: help/3.php:51 -msgid "Mark all feeds as read" -msgstr "Marker alle nyhetsstrømmer som lest" +#, fuzzy +#~ msgid "Feed Categories" +#~ msgstr "Kategori:" -#: help/3.php:52 -msgid "If viewing category, (un)collapse it" -msgstr "Hvis kategorien vises, brett ut/klapp den sammen." +#~ msgid "When \"Mark as read\" button is clicked in toolbar, automatically open next feed with unread articles." +#~ msgstr "NÃ¥r \"Marker som lest\" knappen blir klikket, Ã¥pne neste nyhetsstrøm med uleste artikler." -#: help/3.php:55 help/4.php:5 -msgid "Go to..." -msgstr "GÃ¥ til..." +#, fuzzy +#~ msgid "Importing using DOMXML." +#~ msgstr "Importerer OPML (bruker DOMXML-utvidelsen)..." -#: help/3.php:62 -msgid "Tag cloud" -msgstr "Tag-sky" +#, fuzzy +#~ msgid "Importing using DOMDocument." +#~ msgstr "Importerer OPML (bruker DOMDocument-utvidelsen)..." -#: help/3.php:69 help/4.php:41 -msgid "Press any key to close this window." -msgstr "Trykk pÃ¥ en knapp for Ã¥ lukk dette vinduet" +#~ msgid "DOMXML extension is not found. It is required for PHP versions below 5." +#~ msgstr "DOMXML-utvidelsen ble ikke funnet. Den er pÃ¥krevet for PHPversjoner under 5." -#: help/4.php:9 -msgid "My Feeds" -msgstr "Mine nyhetsstrømmer" +#, fuzzy +#~ msgid "Cache images locally (SimplePie only)" +#~ msgstr "Mellomlagre bilder lokalt pÃ¥ serveren" -#: help/4.php:10 -msgid "Other Feeds" -msgstr "Andres nyhetsstrømmer" +#, fuzzy +#~ msgid "Publish" +#~ msgstr "Publisert" -#: help/4.php:19 -msgid "Panel actions" -msgstr "Panelhandlinger" +#~ msgid "Changed password of user %s." +#~ msgstr "Byttet passord for bruker %s." -#: help/4.php:23 -msgid "Top 25 feeds" -msgstr "Topp 25 nyhetsstrømmer" +#~ msgid "Content filtering" +#~ msgstr "Innholdsfiltering" -#: help/4.php:24 -msgid "Edit feed categories" -msgstr "Rediger nyyhetsstrømskategorier" +#~ msgid "Tiny Tiny RSS has support for filtering (or processing) articles. Filtering is done once, when new article is imported to the database from the newsfeed, specified field is matched against regular expression and some action is taken. Regular expression matching is case-insensitive." +#~ msgstr "Tiny Tiny RSS har støtte for filtrering (eller prosesering) av artikler. Filtreringen blir gjort engang, nÃ¥r nye artikler blir importert til databasen fra nyhetsstrømmene, Spesifike felt blir sammenlignet med regulære uttrykk og handlinger blir foretatt pÃ¥ bakgrunn av dette.Sammenligningen med regulære uttrykk tar ikke hensyn til om det er strore eller smÃ¥ bokstaver." -#: help/4.php:33 -msgid "Focus search (if present)" -msgstr "Fokuser søk (hvis mulig)" +#~ msgid "Supported actions are: filter (do not import) article, mark article as read, set starred, assign tag(s), and set score. Filters can be defined globally and for some specific feed." +#~ msgstr "Støttede handlinger er: filtrering (ikke importering) av artikler, markere artikler som leste, sett som favoritt, tilordne stikkord, og Ã¥ gi poeng. Filtre kan bli definert globalt og/eller for den enkelte nyhetsstrøm." -#: help/4.php:39 -msgid "" -"Note: not all actions may be available, depending on Tiny Tiny RSS " -"configuration and your access level." -msgstr "" -"Advarsel: ikke alle handlinger er nødvendigvis tilgjengelig, det " -"avhenger av konfigureringen av Tiny Tiny RSS og ditt tilgangsnivÃ¥." +#~ msgid "Multiple and inverse matching are supported. All matching filters are considered when article is being imported and all actions executed in sequence. Inverse matching reverts matching result, e.g. filter matching XYZZY in title with inverse flag will match all articles, except those containing string XYZZY in title." +#~ msgstr "Sammenligning med basis i flere uttrykk og motsatt av uttrykk er støttet. Alle filtre blir vurdert nÃ¥r en artikkel blir importert og alle handlinger blir utført i rekkefølge. Motsatt sammenlignings snur det matchende resultatet slik at for eksempel et filter som søker etter XYZZY i tittelfeltet med beskjed om Ã¥ bli snudd vil vise alle artikler som ikke inneholder XYZZY i tittelen." -#: mobile/functions.php:59 mobile/functions.php:136 mobile/functions.php:172 -#: mobile/functions.php:199 mobile/functions.php:233 mobile/functions.php:356 -#: mobile/prefs.php:25 -msgid "Home" -msgstr "" +#~ msgid "See also:" +#~ msgstr "Se ogsÃ¥:" -#: mobile/functions.php:392 -msgid "Nothing found (click to reload feed)." -msgstr "" +#~ msgid "short_desc" +#~ msgstr "kort beskrivelse" -#: mobile/prefs.php:30 #, fuzzy -msgid "Enable categories" -msgstr "Tillatt kategorisering av nyhetsstrømmer" +#~ msgid "Remove:" +#~ msgstr "Fjern" -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "ON" -msgstr "" +#, fuzzy +#~ msgid "Assign:" +#~ msgstr "Tildel stikkord:" -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "OFF" -msgstr "" +#~ msgid "Toggle category reordering mode" +#~ msgstr "Tillatt endringer i kategorirekkefølgen?" -#: mobile/prefs.php:35 -#, fuzzy -msgid "Show images in posts" -msgstr "Ikke vis bilder i artiklene" +#~ msgid "Update all feeds" +#~ msgstr "Oppdater alle nyhetsstrømmer" + +#~ msgid "Sort by name or unread count" +#~ msgstr "Sorter nyhetsstrømer ut i fra navn eller antall uleste artikler" -#: mobile/prefs.php:40 #, fuzzy -msgid "Hide read feeds" -msgstr "Skjul/vis leste nyhetsstrømmer" +#~ msgid "feeds" +#~ msgstr "Nyhetsstrømmer" -#: mobile/prefs.php:45 #, fuzzy -msgid "Sort feeds by unread count" -msgstr "Sorter nyhetsstrømer ut i fra antall uleste artikler" +#~ msgid "headlines" +#~ msgstr "Siste artikler:" -#: functions.js:1315 -msgid "Can't add filter: nothing to match on." -msgstr "Kan ikke legge til filter, ingen match pÃ¥ kriteriene" +#~ msgid "Update post on checksum change" +#~ msgstr "Oppdaterer artikkel etter checksumbytte" -#: functions.js:1350 -msgid "Can't subscribe: no feed URL given." -msgstr "Kan ikke abonnere: Ingen nyhetsstrømsadresse er blitt gitt" +#~ msgid "Use more accessible date/time format for headlines" +#~ msgstr "Bruk mer brukervennlige dato/tidsformater for artiklene" -#: functions.js:1354 -msgid "Subscribing to feed..." -msgstr "Abonnerer pÃ¥ nyhetsstrømmen..." +#~ msgid "Set articles as unread on update" +#~ msgstr "Sett artikler som uleste ved oppdatering" -#: functions.js:1377 -#, fuzzy -msgid "Subscribed to %s" -msgstr "Abonnerer pÃ¥ følgende nyhetsstrømmer:" +#~ msgid "Importing OPML (using DOMXML extension)..." +#~ msgstr "Importerer OPML (bruker DOMXML-utvidelsen)..." -#: functions.js:1386 -#, fuzzy -msgid "Can't subscribe to the specified URL." -msgstr "Kan ikke abonnere: Ingen nyhetsstrømsadresse er blitt gitt" +#~ msgid "Importing OPML (using DOMDocument extension)..." +#~ msgstr "Importerer OPML (bruker DOMDocument-utvidelsen)..." + +#~ msgid "Error: can't find body element." +#~ msgstr "Feil: Kan ikke finne hovedelement." -#: functions.js:1389 #, fuzzy -msgid "You are already subscribed to this feed." -msgstr "Du kan ikke fjerne abonnement fra kategorien." +#~ msgid "No profiles selected." +#~ msgstr "Ingen artikkel er valgt." -#: functions.js:1952 -msgid "New articles available in this feed (click to show)" -msgstr "" +#~ msgid "Unknown error" +#~ msgstr "Ukjent feil" -#: functions.js:1989 -#, fuzzy -msgid "Subscribed to %d feed(s)." -msgstr "Abonnerer pÃ¥ følgende nyhetsstrømmer:" +#~ msgid "Could not display feed (query failed). Please check label match syntax or local configuration." +#~ msgstr "Kunne ikke vise nyhetsstrøm (spørring feilet). Vennligst sjekk merkelappsyntaksen eller lokal konfigurasjon." -#: functions.js:1999 functions.js:2030 prefs.js:557 prefs.js:587 prefs.js:619 -#: prefs.js:908 prefs.js:928 prefs.js:1795 -msgid "No feeds are selected." -msgstr "Ingen nyhetsstrømmer er valgt" +#~ msgid "Publish article with a note" +#~ msgstr "Publiser artikelen med notat" -#: functions.js:2014 -msgid "" -"Remove selected feeds from the archive? Feeds with stored articles will not " -"be removed." -msgstr "" +#, fuzzy +#~ msgid "View article" +#~ msgstr "Filtrer artikkel" -#: functions.js:2066 #, fuzzy -msgid "Remove stored feed icon?" -msgstr "Fjern lagrede data" +#~ msgid "Server error while trying to query feed URLs." +#~ msgstr "Feil under forsøk pÃ¥ Ã¥ hente flere overskrifter" -#: functions.js:2098 #, fuzzy -msgid "Please select an image file to upload." -msgstr "Vennligst velg en nyhetsstrøm" +#~ msgid "Subscribed to %d feed(s)." +#~ msgstr "Abonnerer pÃ¥ følgende nyhetsstrømmer:" -#: functions.js:2100 -msgid "Upload new icon for this feed?" -msgstr "" +#, fuzzy +#~ msgid "Fatal Exception" +#~ msgstr "Alvorlig feil" -#: functions.js:2117 -msgid "Please enter label caption:" -msgstr "Vennligst skriv inn merkelappstekst:" +#~ msgid "audio/mpeg" +#~ msgstr "Lyd/mpeg" -#: functions.js:2122 -msgid "Can't create label: missing caption." -msgstr "Kan ikke skape merkelapp, mangler overskrift." +#~ msgid "Enable offline reading" +#~ msgstr "Tillatt lesning uten internett-tilgang" -#: functions.js:2162 tt-rss.js:568 -msgid "Unsubscribe from %s?" -msgstr "Fjerne abonnement pÃ¥ %s?" +#~ msgid "Synchronize new articles for offline reading using Google Gears." +#~ msgstr "Synkroniser nye artikler for Ã¥ kunne bytte modus til Ã¥ kunne lese uten internett-tilgang med Google Gears." -#: offline.js:636 -msgid "Data for offline browsing has not been downloaded yet." -msgstr "Data for lesning uten internett-tilgang er ikke blitt lastet ned enda." +#~ msgid "Default article limit" +#~ msgstr "Standard artikkelbegrensning" -#: offline.js:677 -msgid "Synchronizing feeds..." -msgstr "Synkroniserer nyhetsstrømmene..." +#~ msgid "Default limit for articles to display, any custom number you like (0 - disables)." +#~ msgstr "Standard begrensning for artikler som skal vises, valgfritt antall (0 - fjerner funksjonen)." -#: offline.js:696 -msgid "Synchronizing categories..." -msgstr "Synkroniserer kategorier..." +#~ msgid "Enable search toolbar" +#~ msgstr "Vis søkelinjen" -#: offline.js:714 -msgid "Synchronizing labels..." -msgstr "Synkroniser merkelapper..." +#~ msgid "Open article links in new browser window" +#~ msgstr "Ã…pne artikkel-lenker i nytt nettleservindu" -#: offline.js:733 -msgid "Synchronizing articles..." -msgstr "Synkroniserer artiklene..." +#~ msgid "Link to user stylesheet to override default style, disabled if empty." +#~ msgstr "Lenke til brukerbestemt utseendemal for Ã¥ overstyre standarden, avskrudd hvis tomt felt." -#: offline.js:778 -msgid "Synchronizing articles (%d)..." -msgstr "Synkroniserer artiklene (%d)..." +#~ msgid "Hide feedlist" +#~ msgstr "Skjul nyhetskanalslisten" -#: offline.js:806 -msgid "Last sync: %s" -msgstr "Siste synkronisering: %s" +#~ msgid "This option hides feedlist and allows it to be toggled on the fly, useful for small screens." +#~ msgstr "Dette valget skjuler kanallisten og tillater at den vises etter ønske, brukbart for smÃ¥ skjermer." -#: offline.js:835 -msgid "Last sync: Error receiving data." -msgstr "Siste synkronisering: Feil under mottak av dayta." +#~ msgid "Experimental support for virtual feeds based on user crafted SQL queries. This feature is highly experimental and at this point not user friendly. Use with caution." +#~ msgstr "Eksperimentel støtte for virtuelle nyhetsstrømmer basert pÃ¥ brukerlagde SQL-spørringer. Denne funksjonen er veldig eksperimentel og er pÃ¥ nÃ¥værende tidspunkt ikke brukervennlig. Benytt med varsomhet." -#: offline.js:888 -msgid "Synchronizing..." -msgstr "Synkroniserer..." +#~ msgid "Show additional information in feedlist" +#~ msgstr "Vis tilleggsinformasjon i nyhetsstrømslisten" -#: offline.js:1195 -msgid "Switch Tiny Tiny RSS into offline mode?" -msgstr "Sett Tiny Tinyy RSS i modus for lesning uten internett-tilgang?" +#~ msgid "Prefer more accurate feedlist counters to UI speed" +#~ msgstr "Foretrekk en mer treffsikker nyhetsstrømsliste i motsetning til hastighet pÃ¥ brukergrensesnittet." -#: offline.js:1223 -msgid "Tiny Tiny RSS will reload. Go online?" -msgstr "Tiny Tiny RSS vil oppdatere seg, benytt internett-tilgang for lesning?" +#~ msgid "Enable inline MP3 player" +#~ msgstr "Skru pÃ¥ den innebygde MP3-spilleren" -#: offline.js:1655 -msgid "Last sync: Cancelled." -msgstr "Siste synkronisering: Avbrutt." +#~ msgid "Enable the Flash-based XSPF Player to play MP3-format podcast enclosures." +#~ msgstr "Bruk den flashbaserte XSPF spilleren for Ã¥ spille MP3-formaterte podcaster." -#: offline.js:1672 -msgid "" -"This will remove all offline data stored by Tiny Tiny RSS on this computer. " -"Continue?" -msgstr "" -"Dette vil slette all informasjon lagret for benytte Tiny Tiny RSS uten " -"internett-tilgang pÃ¥ denne datamaskinen. Fortsett?" +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Tilpasset" -#: offline.js:1743 -msgid "" -"Tiny Tiny RSS has trouble accessing its server. Would you like to go offline?" -msgstr "" -"Tiny Tiny RSS har problem med Ã¥ koble til tjeneren. Ønsker du Ã¥ benytte " -"muligheten til Ã¥ lese uten internett-tilgang?" +#~ msgid "You are running the latest version of Tiny Tiny RSS. The fact that you are seeing this dialog is probably a bug." +#~ msgstr "Du kjører siste utgave av Tiny Tiny RSS. Det at du ser denne dialogboksen er mest sannsynlig en feil." -#: prefs.js:233 -msgid "Error: No feed URL given." -msgstr "Feil: Ingen nyhetsstrømsadresse ble oppgitt." +#~ msgid "Feed Browser" +#~ msgstr "Nyhetsstrømsredigerer" -#: prefs.js:235 -msgid "Error: Invalid feed URL." -msgstr "Feil: Ugyldig nyhetsstrømsadresse." +#~ msgid "Update Errors" +#~ msgstr "Oppdaterer feil" -#: prefs.js:263 -#, fuzzy -msgid "Can't add profile: no name specified." -msgstr "Kan ikke legge til kategori: mangler navn" +#~ msgid "Show last article times" +#~ msgstr "Vis tidspunktene for siste artikkel" -#: prefs.js:285 -msgid "Can't add category: no name specified." -msgstr "Kan ikke legge til kategori: mangler navn" +#~ msgid "Last Article" +#~ msgstr "Siste Artikkel" -#: prefs.js:307 -msgid "Please enter login:" -msgstr "Vennligst skriv inn brukernavn:" +#, fuzzy +#~ msgid "You don't have any subscribed feeds." +#~ msgstr "Du kan ikke fjerne abonnement fra kategorien." -#: prefs.js:314 -msgid "Can't create user: no login specified." -msgstr "Kan ikke legge til bruker: brukernavn mangler." +#, fuzzy +#~ msgid "No matching feeds found." +#~ msgstr "Ingen filtre ble funnet." -#: prefs.js:438 -msgid "Remove selected labels?" -msgstr "Fjerne merkede merkelapper?" +#~ msgid "Filter Editor" +#~ msgstr "Filteradministrering" -#: prefs.js:454 -msgid "No labels are selected." -msgstr "Ingen merkelapper er markert" +#~ msgid "Field" +#~ msgstr "Felt" -#: prefs.js:468 -msgid "Remove selected users?" -msgstr "Fjerne markerte brukere?" +#~ msgid "Params" +#~ msgstr "Parametre" -#: prefs.js:485 prefs.js:798 prefs.js:819 prefs.js:858 -msgid "No users are selected." -msgstr "Ingen bruker er markert" +#~ msgid "No filters defined." +#~ msgstr "Ingen filtre er valgt" -#: prefs.js:503 -msgid "Remove selected filters?" -msgstr "Fjerne valgte filtre?" +#~ msgid "Click to change color" +#~ msgstr "Trykk for Ã¥ endre farge" -#: prefs.js:519 prefs.js:888 -msgid "No filters are selected." -msgstr "Ingen filtre er valgt" +#~ msgid "No labels defined." +#~ msgstr "Ingen merkelapper er valgt" -#: prefs.js:538 -msgid "Unsubscribe from selected feeds?" -msgstr "Fjern abonnement pÃ¥ valgte nyhetsstrømmer" +#~ msgid "No matching labels found." +#~ msgstr "Ingen passende merkelapper ble funnet." -#: prefs.js:572 -msgid "Please select only one feed." -msgstr "Vennligst velg kun en nyhetsstrøm" +#~ msgid "custom color:" +#~ msgstr "valgfri farge:" -#: prefs.js:578 -msgid "Erase all non-starred articles in selected feed?" -msgstr "Fjern alle ikke-favoriserte artikler i den valgte nyhetsstrømmen?" +#~ msgid "Can't add filter: nothing to match on." +#~ msgstr "Kan ikke legge til filter, ingen match pÃ¥ kriteriene" -#: prefs.js:600 -msgid "How many days of articles to keep (0 - use default)?" -msgstr "Hvor mange dager med artikler skal beholdes (0 - bruk standard)?" +#~ msgid "Can't subscribe: no feed URL given." +#~ msgstr "Kan ikke abonnere: Ingen nyhetsstrømsadresse er blitt gitt" -#: prefs.js:632 -msgid "" -"Remove selected profiles? Active and default profiles will not be removed." -msgstr "" +#~ msgid "Error: No feed URL given." +#~ msgstr "Feil: Ingen nyhetsstrømsadresse ble oppgitt." + +#~ msgid "Error: Invalid feed URL." +#~ msgstr "Feil: Ugyldig nyhetsstrømsadresse." -#: prefs.js:648 #, fuzzy -msgid "No profiles selected." -msgstr "Ingen artikkel er valgt." +#~ msgid "Can't add profile: no name specified." +#~ msgstr "Kan ikke legge til kategori: mangler navn" -#: prefs.js:660 -msgid "Remove selected categories?" -msgstr "Fjerne valgte kategorier?" +#~ msgid "Can't add category: no name specified." +#~ msgstr "Kan ikke legge til kategori: mangler navn" -#: prefs.js:678 -msgid "No categories are selected." -msgstr "Ingen kategorier er valgt." +#~ msgid "Save current configuration?" +#~ msgstr "Lagre nÃ¥værende konfigurasjon?" -#: prefs.js:745 -msgid "Login field cannot be blank." -msgstr "Brukernavn kan ikke være blankt" +#~ msgid "Please enter new label foreground color:" +#~ msgstr "Vennligst legg inn forgrunnsfarge for merkelappen:" -#: prefs.js:803 prefs.js:824 prefs.js:863 -msgid "Please select only one user." -msgstr "Vennligst velg kun en bruker" +#~ msgid "Please enter new label background color:" +#~ msgstr "Vennligst skriv inn bakgrunnsfarge for merkelappen:" -#: prefs.js:828 -msgid "Reset password of selected user?" -msgstr "Nullstill passordet til utvalgte bruker?" +#~ msgid "Saved filter %s" +#~ msgstr "Lagret filter %s" -#: prefs.js:893 -msgid "Please select only one filter." -msgstr "Vennligst velg kun et filter" +#~ msgid "Tags" +#~ msgstr "Stikkord" -#: prefs.js:969 -msgid "No OPML file to upload." -msgstr "Ingen OPML-fil til Ã¥ lastes opp." +#~ msgid "Show article summary in new window" +#~ msgstr "Ã…pne artikkelsammendraget i nytt nettleservindu" -#: prefs.js:1229 -msgid "Reset to defaults?" -msgstr "Tilbakefør til standardinnstillingene" +#~ msgid "toggle unread" +#~ msgstr "sett som ulest" -#: prefs.js:1641 -msgid "Replace current publishing address with a new one?" -msgstr "Bytt ut nÃ¥værende publiseringsadresse med en ny?" +#~ msgid "(remove)" +#~ msgstr "(fjern)" -#: prefs.js:1678 -msgid "Save current configuration?" -msgstr "Lagre nÃ¥værende konfigurasjon?" +#~ msgid "Offline reading" +#~ msgstr "Lesning uten internett-tilgang" -#: prefs.js:1779 -msgid "Rescore articles in selected feeds?" -msgstr "Sett poeng pÃ¥ nytt for artiklene i de valgte nyhetskanalene?" +#~ msgid "Cancel synchronization" +#~ msgstr "Avbryt synkroniseringen" -#: prefs.js:1802 -msgid "Rescore all articles? This operation may take a lot of time." -msgstr "Endre poengene til artiklene? Dette kan ta lang tid." +#~ msgid "Synchronize" +#~ msgstr "Synkroniser" -#: prefs.js:1821 -msgid "Remove filter %s?" -msgstr "Fjerne %s filteret?" +#~ msgid "Remove stored data" +#~ msgstr "Fjern lagrede data" -#: prefs.js:1882 -msgid "Save changes to selected feeds?" -msgstr "Lagre endringer til de valgte nyhetsstrømmene?" +#~ msgid "Go offline" +#~ msgstr "Benytt modus for lesning uten internett-tilgang" -#: prefs.js:1962 -msgid "Reset label colors to default?" -msgstr "Sett merkelappsfargene til standard?" +#~ msgid "Go online" +#~ msgstr "Benytt modus for lesning med internett-tilgang" + +#~ msgid "Reset UI layout" +#~ msgstr "Tilbakestill de grafiske instillingene" -#: prefs.js:1987 -msgid "Please enter new label foreground color:" -msgstr "Vennligst legg inn forgrunnsfarge for merkelappen:" +#~ msgid "Drag me to resize panels" +#~ msgstr "Dra i meg for Ã¥ endre størrelsen pÃ¥ panelene." -#: prefs.js:1989 -msgid "Please enter new label background color:" -msgstr "Vennligst skriv inn bakgrunnsfarge for merkelappen:" +#~ msgid "Showing most popular tags " +#~ msgstr "Vis mest populære stikkord" -#: prefs.js:2121 #, fuzzy -msgid "Activate selected profile?" -msgstr "Fjerne valgte filtre?" +#~ msgid "more tags" +#~ msgstr "Ingen stikkord" -#: prefs.js:2137 -msgid "Please choose a profile to activate." -msgstr "" +#~ msgid "Link to feed:" +#~ msgstr "Lenk til nyhetsstrøm:" -#: tt-rss.js:74 -msgid "display feeds" -msgstr "Vis nyhetsstrømmer" +#~ msgid "Not linked" +#~ msgstr "Ikke linket til" -#: tt-rss.js:251 -msgid "Mark all articles as read?" -msgstr "Marker alle artikler som leste?" +#~ msgid "(linked to %s)" +#~ msgstr "(koblet til %s)" -#: tt-rss.js:557 -msgid "You can't unsubscribe from the category." -msgstr "Du kan ikke fjerne abonnement fra kategorien." +#~ msgid "E-mail has been changed." +#~ msgstr "E-post har blitt endret." -#: tt-rss.js:562 tt-rss.js:755 tt-rss.js:930 -msgid "Please select some feed first." -msgstr "Vennligst velg en eller flere nyhetsstrømmer først" +#~ msgid "Change e-mail" +#~ msgstr "Skift e-post" -#: tt-rss.js:618 -msgid "Reset category order?" -msgstr "Tilbakestill kategorirekkefølgen?" +#~ msgid "Please wait..." +#~ msgstr "Vennligst vent..." -#: tt-rss.js:727 tt-rss.js:740 -msgid "Mark all articles in %s as read?" -msgstr "Marker alle artikler i %s som leste?" +#~ msgid "Data for offline browsing has not been downloaded yet." +#~ msgstr "Data for lesning uten internett-tilgang er ikke blitt lastet ned enda." -#: tt-rss.js:760 -msgid "You can't edit this kind of feed." -msgstr "Du kan ikke endre denne typen nyhetsstrøm" +#~ msgid "Synchronizing feeds..." +#~ msgstr "Synkroniserer nyhetsstrømmene..." -#: tt-rss.js:925 -msgid "You can't rescore this kind of feed." -msgstr "Du kan ikke endre poengsummen for denne typen nyhetskanal" +#~ msgid "Synchronizing categories..." +#~ msgstr "Synkroniserer kategorier..." -#: tt-rss.js:935 -msgid "Rescore articles in %s?" -msgstr "Endre poengene for artiklene i %s?" +#~ msgid "Synchronizing labels..." +#~ msgstr "Synkroniser merkelapper..." -#: viewfeed.js:528 viewfeed.js:592 -msgid "Star article" -msgstr "Marker artikkel som favoritt" +#~ msgid "Synchronizing articles..." +#~ msgstr "Synkroniserer artiklene..." -#: viewfeed.js:577 -msgid "Unstar article" -msgstr "Fjern favorittmerkingen fra artiklen" +#~ msgid "Synchronizing articles (%d)..." +#~ msgstr "Synkroniserer artiklene (%d)..." -#: viewfeed.js:585 viewfeed.js:652 -msgid "Please wait..." -msgstr "Vennligst vent..." +#~ msgid "Last sync: %s" +#~ msgstr "Siste synkronisering: %s" -#: viewfeed.js:648 -msgid "Unpublish article" -msgstr "Fjern publiseringen av artikkelen." +#~ msgid "Last sync: Error receiving data." +#~ msgstr "Siste synkronisering: Feil under mottak av dayta." -#: viewfeed.js:935 viewfeed.js:971 viewfeed.js:1012 viewfeed.js:1097 -#: viewfeed.js:1141 viewfeed.js:1288 viewfeed.js:1338 viewfeed.js:1394 -msgid "No articles are selected." -msgstr "Ingen artikler er valgt." +#~ msgid "Synchronizing..." +#~ msgstr "Synkroniserer..." -#: viewfeed.js:1256 -msgid "Mark all visible articles in %s as read?" -msgstr "Marker alle synlige artikler i %s som leste?" +#~ msgid "Switch Tiny Tiny RSS into offline mode?" +#~ msgstr "Sett Tiny Tinyy RSS i modus for lesning uten internett-tilgang?" -#: viewfeed.js:1298 -#, fuzzy -msgid "Delete %d selected articles in %s?" -msgstr "Marker %d valgte artikler i %s som leste?" +#~ msgid "Tiny Tiny RSS will reload. Go online?" +#~ msgstr "Tiny Tiny RSS vil oppdatere seg, benytt internett-tilgang for lesning?" -#: viewfeed.js:1300 -#, fuzzy -msgid "Delete %d selected articles?" -msgstr "Fjerne merkede artikler fra merkelappen?" +#~ msgid "Last sync: Cancelled." +#~ msgstr "Siste synkronisering: Avbrutt." -#: viewfeed.js:1348 -#, fuzzy -msgid "Archive %d selected articles in %s?" -msgstr "Marker %d valgte artikler i %s som leste?" +#~ msgid "This will remove all offline data stored by Tiny Tiny RSS on this computer. Continue?" +#~ msgstr "Dette vil slette all informasjon lagret for benytte Tiny Tiny RSS uten internett-tilgang pÃ¥ denne datamaskinen. Fortsett?" -#: viewfeed.js:1351 -msgid "Move %d archived articles back?" -msgstr "" +#~ msgid "Tiny Tiny RSS has trouble accessing its server. Would you like to go offline?" +#~ msgstr "Tiny Tiny RSS har problem med Ã¥ koble til tjeneren. Ønsker du Ã¥ benytte muligheten til Ã¥ lese uten internett-tilgang?" -#: viewfeed.js:1401 -msgid "Mark %d selected articles in %s as read?" -msgstr "Marker %d valgte artikler i %s som leste?" +#~ msgid "Reset category order?" +#~ msgstr "Tilbakestill kategorirekkefølgen?" -#: viewfeed.js:1977 -msgid "No article is selected." -msgstr "Ingen artikkel er valgt." +#~ msgid "No feeds to display." +#~ msgstr "Ingen nyhetstrømmer Ã¥ vise" -#: viewfeed.js:2018 -msgid "No articles found to mark" -msgstr "Ingen artikler funnet som kan markeres" +#~ msgid "Published Articles" +#~ msgstr "Publiserte artikler" -#: viewfeed.js:2020 -msgid "Mark %d article(s) as read?" -msgstr "Marker %d artikkel/artikler som leste?" +#, fuzzy +#~ msgid "Your Published articles feed URL is:" +#~ msgstr "Lenke til nyhetsstrøm for publiserte artikler" -#: viewfeed.js:2255 -msgid "Please enter a note for this article:" -msgstr "Vennligst skriv inn et notat for denne artikkelen:" +#~ msgid "Replace current publishing address with a new one?" +#~ msgstr "Bytt ut nÃ¥værende publiseringsadresse med en ny?" -#~ msgid "Adding feed..." -#~ msgstr "Legger til nyhetsstrøm..." +#~ msgid "Limit bandwidth usage" +#~ msgstr "Begrens bÃ¥ndbreddebruken" -#~ msgid "Adding feed category..." -#~ msgstr "Legger til kategori for nyhetsstrømmer" +#~ msgid "Remove selected users?" +#~ msgstr "Fjerne markerte brukere?" -#, fuzzy -#~ msgid "Adding profile..." +#~ msgid "Adding feed..." #~ msgstr "Legger til nyhetsstrøm..." -#~ msgid "Adding user..." -#~ msgstr "Legger til bruker.." - #~ msgid "Assign score to article:" #~ msgstr "Sett poengsum for artikkel:" @@ -2600,15 +4810,6 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ msgid "Changing password..." #~ msgstr "Endre passord" -#~ msgid "Clearing feed..." -#~ msgstr "Rensker nyhetsstrøm..." - -#~ msgid "Clearing selected feed..." -#~ msgstr "Rensker valgt nyhetsstrøm..." - -#~ msgid "comments" -#~ msgstr "Kommentarer" - #~ msgid "Could not change feed URL." #~ msgstr "Adressen for nyhetsstrømmen kunne ikke endres" @@ -2621,83 +4822,29 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ msgid "Could not update headlines (missing XML object)" #~ msgstr "Kunne ikke oppdatere overskriftene (manglende XML objekt)." -#~ msgid "Entire feed" -#~ msgstr "Hele nyhetsstrømmen" - -#~ msgid "Error while trying to load more headlines" -#~ msgstr "Feil under forsøk pÃ¥ Ã¥ hente flere overskrifter" - #~ msgid "Failed to load article in new window" #~ msgstr "Feilet med Ã¥ Ã¥pne artikkel i nytt nettleservindu." #~ msgid "Failed to open window for the article" #~ msgstr "Klarte ikke Ã¥ Ã¥pne et vindu til artikkelen" -#, fuzzy -#~ msgid "Feed icon removed." -#~ msgstr "Nyhetsstrømmen ble ikke funnet" - -#~ msgid "Loading feed list..." -#~ msgstr "Laster nyhetsstrømmer..." - #~ msgid "Local data removed." #~ msgstr "Lokal data fjernet." #~ msgid "Mark as read:" #~ msgstr "Marker som lest:" -#~ msgid "Marking all feeds as read..." -#~ msgstr "Marker alle nyhetsstrømmer som lest" - #~ msgid "Please wait until operation finishes." #~ msgstr "Vennligst venn til operasjonen avsluttes." -#~ msgid "Purging selected feed..." -#~ msgstr "Sletter den valgte nyhetsstrømmen..." - #~ msgid "Remove selected articles from label?" #~ msgstr "Fjerne merkede artikler fra merkelappen?" -#~ msgid "Removing feed..." -#~ msgstr "Fjerner nyhetsstrøm..." - -#~ msgid "Removing filter..." -#~ msgstr "Fjerner filter..." - #~ msgid "Removing offline data..." #~ msgstr "Fjerner data for lesning uten internett-tilgang..." -#~ msgid "Removing selected categories..." -#~ msgstr "Fjerner valgte kategorier..." - -#~ msgid "Removing selected filters..." -#~ msgstr "Fjerner valgte filtre..." - -#~ msgid "Removing selected labels..." -#~ msgstr "Fjerner merkede merkelapper..." - -#, fuzzy -#~ msgid "Removing selected profiles..." -#~ msgstr "Fjerner valgte filtre..." - -#~ msgid "Removing selected users..." -#~ msgstr "Fjerner markerte brukere..." - #~ msgid "Rescore last 100 articles in selected feeds?" -#~ msgstr "" -#~ "Sett poeng pÃ¥ nytt for de 100 siste artiklene i de valgte nyhetskanalene?" - -#~ msgid "Rescoring articles..." -#~ msgstr "Endrer poengsummen for artiklene..." - -#~ msgid "Resetting password for selected user..." -#~ msgstr "Nullstiller passordet for utvalgte bruker..." - -#~ msgid "Saving article tags..." -#~ msgstr "Lagrer artikkelens kategorier..." - -#~ msgid "Saving feed..." -#~ msgstr "Lagrer Nyhetsstrøm" +#~ msgstr "Sett poeng pÃ¥ nytt for de 100 siste artiklene i de valgte nyhetskanalene?" #~ msgid "Saving feeds..." #~ msgstr "Lagrer Nyhetsstrømmene..." @@ -2705,40 +4852,17 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ msgid "Saving filter..." #~ msgstr "Lagrer filter..." -#~ msgid "Saving user..." -#~ msgstr "Lagrer bruker..." - #~ msgid "Selection" #~ msgstr "Utvalg" #~ msgid "Tiny Tiny RSS is in offline mode." #~ msgstr "Tiny Tinyy RSS er i modus for lesning uten internett-tilgang." -#~ msgid "Trying to change e-mail..." -#~ msgstr "Prøver Ã¥ endre e-posten..." - -#, fuzzy -#~ msgid "Upload failed." -#~ msgstr "Oppdaterte artikler" - -#~ msgid "" -#~ "You have to synchronize some articles before going into offline mode." -#~ msgstr "" -#~ "Du mÃ¥ synkronisere noen artikler før du kan bytte modus til Ã¥ kunne lese " -#~ "uten internett-tilgang." - -#~ msgid "" -#~ "You won't be able to access offline version of Tiny Tiny RSS until you " -#~ "switch it into offline mode again. Go online?" -#~ msgstr "" -#~ "Du kan ikke benytte tilgang til lesning uten internett-tilgang før du " -#~ "bytter til denne modusen neste gang. Les med internett-tilgang?" - -#~ msgid "Display original article content" -#~ msgstr "Vis opprinnelig artikkelinnhold" +#~ msgid "You have to synchronize some articles before going into offline mode." +#~ msgstr "Du mÃ¥ synkronisere noen artikler før du kan bytte modus til Ã¥ kunne lese uten internett-tilgang." -#~ msgid "All feeds updated." -#~ msgstr "Alle nyhetsstrømmer er oppdatert" +#~ msgid "You won't be able to access offline version of Tiny Tiny RSS until you switch it into offline mode again. Go online?" +#~ msgstr "Du kan ikke benytte tilgang til lesning uten internett-tilgang før du bytter til denne modusen neste gang. Les med internett-tilgang?" #~ msgid "Can't open article: received invalid XML" #~ msgstr "Kan ikke Ã¥pne artikkelen: mottok uriktig XML" @@ -2749,43 +4873,21 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ msgid "Erase all non-starred articles in %s?" #~ msgstr "Fjern alle ikke-favoriserte artikler i %s?" -#~ msgid "Published feed URL changed." -#~ msgstr "" -#~ "Adresse for nyhetsstrømmen for offentliggjorte innlegg har endret seg." - -#~ msgid "Trying to change address..." -#~ msgstr "Prøver Ã¥ endre adressen..." - #~ msgid "Trying to change password..." #~ msgstr "Prøver Ã¥ endre passordet..." -#~ msgid "Unsubscribing from selected feeds..." -#~ msgstr "Fjerner abonnementer pÃ¥ valgte nyhetsstrømmer..." - #~ msgid "You can't clear this type of feed." #~ msgstr "Du kan ikke rydde opp i denne typen nyhetsstrøm" -#~ msgid "Clear articles" -#~ msgstr "Fjern artikler" - #~ msgid "Adding category %s...
    " #~ msgstr "Legger til kategori %s...
    " #~ msgid "Done." #~ msgstr "Ferdig." -#~ msgid "Visit official site" -#~ msgstr "Besøk den offisielle siden" - -#~ msgid "Close" -#~ msgstr "Steng" - #~ msgid "The configuration was reset to defaults." #~ msgstr "Konfigurasjonen er satt tilbake til standard" -#~ msgid "Themes" -#~ msgstr "Utseender" - #~ msgid "Change theme" #~ msgstr "Endre utseende" @@ -2797,9 +4899,6 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ msgid "Remove selected feeds from archive?" #~ msgstr "Fjerne merkede artikler fra merkelappen?" -#~ msgid "Search results" -#~ msgstr "Søkeresultat" - #~ msgid "Searched for" #~ msgstr "Søkte etter" @@ -2821,9 +4920,6 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ msgid "Feed browser is administratively disabled." #~ msgstr "Nyhetsstrømsutforsker er administrativt avskrudd" -#~ msgid "Top" -#~ msgstr "Topp" - #~ msgid "Show" #~ msgstr "Vis" @@ -2839,34 +4935,18 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ msgid "Recategorize" #~ msgstr "Rekategoriser" -#~ msgid "Other:" -#~ msgstr "Andre:" - #~ msgid "Generate another link" #~ msgstr "Genererer en ny adresse" -#~ msgid "View feeds" -#~ msgstr "Se nyhetsstrømmene" - -#~ msgid "View tags" -#~ msgstr "Se stikkord" - #~ msgid "Back" #~ msgstr "Tilbake" #~ msgid "View:" #~ msgstr "Vis:" -#~ msgid "Refresh" -#~ msgstr "Oppdater" - #~ msgid "Page" #~ msgstr "Side" -#, fuzzy -#~ msgid "Back to feedlist" -#~ msgstr "Trykk for Ã¥ endre" - #~ msgid "Tags:" #~ msgstr "Stikkord:" @@ -2876,9 +4956,6 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ msgid "Where:" #~ msgstr "Hvor:" -#~ msgid "Match on:" -#~ msgstr "Match pÃ¥:" - #~ msgid "Internal error: Function not implemented" #~ msgstr "Intern feil: funksjonen er ikke implementert" @@ -2895,27 +4972,18 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ msgid "  Keyboard shortcuts" #~ msgstr "  Tastatursnarveier" -#~ msgid "description" -#~ msgstr "beskrivelse" - #~ msgid "filter_type_descr" #~ msgstr "Beskrivelse av filtertype" #~ msgid "action_description" #~ msgstr "Handlingsbeskrivelse" -#~ msgid "short_desc" -#~ msgstr "kort beskrivelse" - #~ msgid "Can't add user: no login specified." #~ msgstr "Kan ikke legge til bruker: brukernavn mangler." #~ msgid "Can't create label: missing SQL expression." #~ msgstr "Kan ikke lage merkelapp, SQL-uttrykk mangler" -#~ msgid "Loading help..." -#~ msgstr "Laster hjelp..." - #~ msgid "Saving label..." #~ msgstr "Lagrer merkelapp..." @@ -2928,13 +4996,8 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ msgid "Address changed." #~ msgstr "Adresse er endret" -#~ msgid "" -#~ "Rescore articles in all feeds? This operation may take a lot of time." -#~ msgstr "" -#~ "Endre poengene til artiklene i alle nyhetskanalene? Dette kan ta lang tid." - -#~ msgid "Rescoring feeds..." -#~ msgstr "Setter poeng pÃ¥ nytt for nyhetskanalene..." +#~ msgid "Rescore articles in all feeds? This operation may take a lot of time." +#~ msgstr "Endre poengene til artiklene i alle nyhetskanalene? Dette kan ta lang tid." #, fuzzy #~ msgid "Restart in offline mode" @@ -2943,23 +5006,17 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ msgid "MySQL Charset Updater" #~ msgstr "MySQL tegnsettsoppdaterer" -#~ msgid "" -#~ "This script is for Tiny Tiny RSS installations with MySQL backend only." -#~ msgstr "" -#~ "Dette skriptet er for Tiny Tiny RSS installasjoner med MySQL i bakgrunnen" +#~ msgid "This script is for Tiny Tiny RSS installations with MySQL backend only." +#~ msgstr "Dette skriptet er for Tiny Tiny RSS installasjoner med MySQL i bakgrunnen" #~ msgid "" #~ "This script will convert your Tiny Tiny RSS database to UTF-8. \n" -#~ "\t\t\tDepending on current database charset you may experience data " -#~ "corruption (lost accent characters, etc.). \n" -#~ "\t\t\tAfter update, you'll have to set MYSQL_CHARSET option in " -#~ "config.php to 'utf8'." +#~ "\t\t\tDepending on current database charset you may experience data corruption (lost accent characters, etc.). \n" +#~ "\t\t\tAfter update, you'll have to set MYSQL_CHARSET option in config.php to 'utf8'." #~ msgstr "" #~ "Dette skriptet vil konvertere din Tiny Tiny RSS database til UTF-8. \n" -#~ "\t\t\tAvhengig av din nÃ¥vørende databasetegnsett kan du oppleve korrupt " -#~ "databaseinnhold (manglende aksenter, osv.). \n" -#~ "\t\t\tEtter oppdateringen mÃ¥ du endre MYSQL_CHARSET valget i " -#~ "config.php til 'utf8'." +#~ "\t\t\tAvhengig av din nÃ¥vørende databasetegnsett kan du oppleve korrupt databaseinnhold (manglende aksenter, osv.). \n" +#~ "\t\t\tEtter oppdateringen mÃ¥ du endre MYSQL_CHARSET valget i config.php til 'utf8'." #~ msgid "Converting database..." #~ msgstr "Konverterer database..." @@ -2971,27 +5028,21 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ "Alvorlig feil: Du har glemt Ã¥ kopier \n" #~ "\t\tconfig.php-dist til config.php og redigert den.\n" -#~ msgid "" -#~ "config: your config file version is incorrect. See config.php-dist.\n" +#~ msgid "config: your config file version is incorrect. See config.php-dist.\n" #~ msgstr "Config: Konfigurasjonsfilens versjon er feil. Se config.php-dist.\n" #~ msgid "" #~ "Fatal error: RSS_BACKEND_TYPE is deprecated. Please remove this\n" #~ "\t\t\toption from config.php\n" -#~ msgstr "" -#~ "Alvorlig feil: RSS-bakgrunnstype er avlegs, vennligst fjern dette " -#~ "valget fra config.php\n" +#~ msgstr "Alvorlig feil: RSS-bakgrunnstype er avlegs, vennligst fjern dette valget fra config.php\n" #~ msgid "" #~ "Fatal Error: XML Import/Export tools (xml-export.php\n" -#~ "\t\tand xml-import.php) could be used maliciously. Please remove " -#~ "them \n" +#~ "\t\tand xml-import.php) could be used maliciously. Please remove them \n" #~ "\t\tfrom your TT-RSS instance.\n" #~ msgstr "" -#~ "Alvorlig feil: XML Import/Eksport-verktøyet (xml-export.php\n" -#~ "\t\tog xml-import.php) kan bli brukt ondskapsfullt. Vennligst " -#~ "fjern dem fra din TT-RSS-installasjon.\n" +#~ "Alvorlig feil: XML Import/Eksport-verktøyet (xml-export.php\n" +#~ "\t\tog xml-import.php) kan bli brukt ondskapsfullt. Vennligst fjern dem fra din TT-RSS-installasjon.\n" #~ msgid "" #~ "Fatal Error: Please set DAEMON_UPDATE_LOGIN_LIMIT\n" @@ -3004,8 +5055,7 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ "Fatal Error: You have enabled USE_CURL_FOR_ICONS, but your PHP \n" #~ "\t\t\tdoesn't seem to support CURL functions." #~ msgstr "" -#~ "Alvorlig feil: Du har Ã¥pnet for USE_CURL_FOR_ICONS, men din utgave " -#~ "av PHP \n" +#~ "Alvorlig feil: Du har Ã¥pnet for USE_CURL_FOR_ICONS, men din utgave av PHP \n" #~ "\t\t\tser ikke ut til Ã¥ støtte CURL." #~ msgid "config: SESSION_EXPIRE_TIME is undefined" @@ -3016,54 +5066,29 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #, fuzzy #~ msgid "config: SESSION_EXPIRE_TIME should be greater or equal to" -#~ msgstr "" -#~ "Konfigurer: SESSION_EXPIRE_TIME mÃ¥ være høyere eller lik " -#~ "SESSION_COOKIE_LIFETIME" +#~ msgstr "Konfigurer: SESSION_EXPIRE_TIME mÃ¥ være høyere eller lik SESSION_COOKIE_LIFETIME" -#~ msgid "" -#~ "config: DATABASE_BACKED_SESSIONS is incompatible with SINGLE_USER_MODE" -#~ msgstr "" -#~ "config: DATABASE_BACKED_SESSIONS er ukompatibelt med SINGLE_USER_MODE" +#~ msgid "config: DATABASE_BACKED_SESSIONS is incompatible with SINGLE_USER_MODE" +#~ msgstr "config: DATABASE_BACKED_SESSIONS er ukompatibelt med SINGLE_USER_MODE" #~ msgid "config: DATABASE_BACKED_SESSIONS are currently broken with MySQL" -#~ msgstr "" -#~ "config: DATABASE_BACKED_SESSIONS er i øyeblikket ukompatibelt i forhold " -#~ "til MySQL" +#~ msgstr "config: DATABASE_BACKED_SESSIONS er i øyeblikket ukompatibelt i forhold til MySQL" -#~ msgid "" -#~ "config: MAIL_FROM has been split into DIGEST_FROM_NAME and " -#~ "DIGEST_FROM_ADDRESS" -#~ msgstr "" -#~ "config: MAIL_FROM har blitt splittet fra DIGEST_FROM_NAME og " -#~ "DIGEST_FROM_ADDRESS" +#~ msgid "config: MAIL_FROM has been split into DIGEST_FROM_NAME and DIGEST_FROM_ADDRESS" +#~ msgstr "config: MAIL_FROM har blitt splittet fra DIGEST_FROM_NAME og DIGEST_FROM_ADDRESS" #~ msgid "config: option COUNTERS_MAX_AGE expected, but not defined" #~ msgstr "config: valget COUNTERS_MAX_AGE er forventet, men ikke definert" -#~ msgid "" -#~ "config: option DAEMON_REFRESH_ONLY is obsolete. Please remove this option " -#~ "and read about other ways to update feeds on the wiki." -#~ msgstr "" -#~ "config: valget DAEMON_REFRESH_ONLY er avlegs. Vennligst fjern dette " -#~ "valget og les om andre mÃ¥ter Ã¥ oppdatere nyhetsstrømmer i wikien." +#~ msgid "config: option DAEMON_REFRESH_ONLY is obsolete. Please remove this option and read about other ways to update feeds on the wiki." +#~ msgstr "config: valget DAEMON_REFRESH_ONLY er avlegs. Vennligst fjern dette valget og les om andre mÃ¥ter Ã¥ oppdatere nyhetsstrømmer i wikien." #~ msgid "Unknown Error" #~ msgstr "Ukjent feil" -#~ msgid "Feed information:" -#~ msgstr "Nyhetsstrømsinformasjon:" - #~ msgid "Site:" #~ msgstr "Side:" -#~ msgid "Last updated:" -#~ msgstr "Siste oppdatering:" - -#~ msgid "Last headlines:" -#~ msgstr "Siste artikler:" - #~ msgid "Other feeds: Top 25" #~ msgstr "Andre nyhetsstrømmer: Topp 25" @@ -3076,9 +5101,6 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ msgid "Content Filtering" #~ msgstr "Innholdsfilter" -#~ msgid "Label Editor" -#~ msgstr "Merkelappredigerer" - #~ msgid "User Manager" #~ msgstr "Brukeradministrering" @@ -3116,19 +5138,12 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ msgid "  Reset category order" #~ msgstr "  Endre rekkefølgen pÃ¥ kategoriene" -#~ msgid "" -#~ "This panel shows feeds subscribed by other users of this system, just in " -#~ "case you are interested in them too." -#~ msgstr "" -#~ "Denne siden viser nyhetsstrømmer som andre brukere av systemet abonnerer " -#~ "pÃ¥, i tilfelle du skulle være interessert i de ogsÃ¥." +#~ msgid "This panel shows feeds subscribed by other users of this system, just in case you are interested in them too." +#~ msgstr "Denne siden viser nyhetsstrømmer som andre brukere av systemet abonnerer pÃ¥, i tilfelle du skulle være interessert i de ogsÃ¥." #~ msgid "Match " #~ msgstr "Match" -#~ msgid "Unread articles" -#~ msgstr "Uleste artikler" - #~ msgid "Title contains" #~ msgstr "Tittel inneholder" @@ -3150,20 +5165,8 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ msgid "Articles newer than X days" #~ msgstr "Artikler nyere enn X dager" -#~ msgid "Add" -#~ msgstr "Legg til" - -#~ msgid "" -#~ "Sorry, labels have been administratively disabled for this installation. " -#~ "Please contact instance owner or edit configuration file to enable this " -#~ "functionality." -#~ msgstr "" -#~ "Beklager, merkelapper har blitt administrativt avskrudd for denne " -#~ "installasjonen. Vennligst kontakt sideadministratoren eller rediger " -#~ "konfigurasjonsfilen for Ã¥ Ã¥pne for denne funksjonaliteten." - -#~ msgid "Caption" -#~ msgstr "Overskrift" +#~ msgid "Sorry, labels have been administratively disabled for this installation. Please contact instance owner or edit configuration file to enable this functionality." +#~ msgstr "Beklager, merkelapper har blitt administrativt avskrudd for denne installasjonen. Vennligst kontakt sideadministratoren eller rediger konfigurasjonsfilen for Ã¥ Ã¥pne for denne funksjonaliteten." #~ msgid "Match SQL" #~ msgstr "Match SQL" @@ -3177,28 +5180,11 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ msgid "SQL Expression" #~ msgstr "SQL-uttrykk" -#~ msgid "[No caption]" -#~ msgstr "Ingen bildetekst" - #~ msgid "Labels and SQL Expressions" #~ msgstr "Navnelapper og SQL-uttrykk" -#~ msgid "" -#~ "Label content is generated using SQL expressions. The «SQL " -#~ "expression» is added to WHERE clause of view feed query. You can " -#~ "match on ttrss_entries table fields and even use subselect to query " -#~ "additional information. This \tfunctionality is considered to be advanced " -#~ "and requires some understanding of SQL." -#~ msgstr "" -#~ "Navnelapper blir generert ut i fra SQL-uttrykk. «SQL-uttrykket» " -#~ "blir lagt til i WHERE-klausulen i nyhetsstrømsforespørselen. Du kan " -#~ "matche mot ttrss_entries tabellen felter og til og med bruke " -#~ "«subselect» for Ã¥ etterspørre ytterligere informasjon. Denne " -#~ "funksjonaliteten bllir regnet som avansert og forutsetter noe kjennskap " -#~ "til SQL." - -#~ msgid "Examples" -#~ msgstr "Eksempler" +#~ msgid "Label content is generated using SQL expressions. The «SQL expression» is added to WHERE clause of view feed query. You can match on ttrss_entries table fields and even use subselect to query additional information. This \tfunctionality is considered to be advanced and requires some understanding of SQL." +#~ msgstr "Navnelapper blir generert ut i fra SQL-uttrykk. «SQL-uttrykket» blir lagt til i WHERE-klausulen i nyhetsstrømsforespørselen. Du kan matche mot ttrss_entries tabellen felter og til og med bruke «subselect» for Ã¥ etterspørre ytterligere informasjon. Denne funksjonaliteten bllir regnet som avansert og forutsetter noe kjennskap til SQL." #~ msgid "Match all unread articles:" #~ msgstr "Match alle uleste artikler:" @@ -3212,9 +5198,6 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ msgid "Matches all articles with scores between 100 and 500:" #~ msgstr "Viser alle artikler med mellom 100 og 500 poeng:" -#~ msgid "Search to label" -#~ msgstr "Søk etter merkelapp" - #~ msgid "Convert to label" #~ msgstr "Konverter til merkelapp" @@ -3224,43 +5207,22 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ msgid "Create Label" #~ msgstr "Lag merkelapp" -#~ msgid "Test" -#~ msgstr "Test" - #, fuzzy #~ msgid "Perform action" #~ msgstr "Utfør handlingen" -#~ msgid "Filter expression" -#~ msgstr "Filteruttrykk" - -#~ msgid "Enable icons in feedlist" -#~ msgstr "Tillat ikoner i nyhetsstrømslisten" - -#~ msgid "Category:" -#~ msgstr "Kategori:" - #~ msgid "Caption:" #~ msgstr "Overskrift:" #~ msgid "SQL Expression:" #~ msgstr "SQL-uttrykk:" -#~ msgid "Match:" -#~ msgstr "Matcher:" - -#~ msgid "Feed:" -#~ msgstr "Nyhetsstrøm:" - #~ msgid "Action:" #~ msgstr "Handling:" #~ msgid "Params:" #~ msgstr "Parametre:" -#~ msgid "Title:" -#~ msgstr "Tittel:" - #~ msgid "Update using:" #~ msgstr "Oppdater med:" @@ -3270,9 +5232,6 @@ msgstr "Vennligst skriv inn et notat for denne artikkelen:" #~ msgid "Placeholder" #~ msgstr "Navneholder" -#~ msgid "Update errors" -#~ msgstr "Oppdateringsfeil" - #~ msgid "Toggle" #~ msgstr "Vis" diff --git a/locale/nl_NL/LC_MESSAGES/messages.mo b/locale/nl_NL/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000..3e58e3cc50 Binary files /dev/null and b/locale/nl_NL/LC_MESSAGES/messages.mo differ diff --git a/locale/nl_NL/LC_MESSAGES/messages.po b/locale/nl_NL/LC_MESSAGES/messages.po new file mode 100644 index 0000000000..f7fb42e9b0 --- /dev/null +++ b/locale/nl_NL/LC_MESSAGES/messages.po @@ -0,0 +1,4056 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: TT-RSS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2013-05-02 13:55+0100\n" +"Last-Translator: ArmyOfPirates\n" +"Language-Team: translations \n" +"Language: DUTCH\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.5\n" +"X-Poedit-SourceCharset: UTF-8\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-KeywordsList: _\n" +"X-Poedit-Basepath: .\n" + +#: backend.php:73 +msgid "Use default" +msgstr "Gebruik standaardwaarde" + +#: backend.php:74 +msgid "Never purge" +msgstr "Nooit opschonen" + +#: backend.php:75 +msgid "1 week old" +msgstr "1 week oud" + +#: backend.php:76 +msgid "2 weeks old" +msgstr "2 weken oud" + +#: backend.php:77 +msgid "1 month old" +msgstr "1 maand oud" + +#: backend.php:78 +msgid "2 months old" +msgstr "2 maanden oud" + +#: backend.php:79 +msgid "3 months old" +msgstr "3 maanden oud" + +#: backend.php:82 +msgid "Default interval" +msgstr "Standaard interval" + +#: backend.php:83 +#: backend.php:93 +msgid "Disable updates" +msgstr "updates uitschakelen" + +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" +msgstr "Elke 15 minuten" + +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" +msgstr "Elke 30 minuten" + +#: backend.php:86 +#: backend.php:96 +msgid "Hourly" +msgstr "Ieder uur" + +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" +msgstr "Om de 4 uur" + +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" +msgstr "Om de 12 uur" + +#: backend.php:89 +#: backend.php:99 +msgid "Daily" +msgstr "Dagelijks" + +#: backend.php:90 +#: backend.php:100 +msgid "Weekly" +msgstr "Wekelijks" + +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 +msgid "User" +msgstr "Gebruiker" + +#: backend.php:104 +msgid "Power User" +msgstr "Hoofdgebruiker" + +#: backend.php:105 +msgid "Administrator" +msgstr "Beheerder" + +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "Dit programma vereist XmlHttpRequest om goed te functioneren. Uw browser lijkt dit niet te ondersteunen." + +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "Dit programma vereist cookies om goed te functioneren. Uw browser lijkt dit niet te ondersteunen." + +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "Gezondheidscontrole server is mislukt." + +#: errors.php:17 +msgid "Frontend sanity check failed." +msgstr "Frontend gezondheidscontrole mislukt." + +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "Onjuiste database schema versie. <a href='db-updater.php'>Bijwerken aub!</a>." + +#: errors.php:21 +msgid "Request not authorized." +msgstr "Verzoek niet toegestaan." + +#: errors.php:23 +msgid "No operation to perform." +msgstr "Geen uit te voeren opdracht." + +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "Kon feed niet weergeven: de zoekopdracht is mislukt. Controleer aub de syntax van de labelzoektekst of de lokale configuratie. " + +#: errors.php:27 +msgid "Denied. Your access level is insufficient to access this page." +msgstr "Niet toegestaan. Uw toegangsniveau is onvoldoende voor deze pagina." + +#: errors.php:29 +msgid "Configuration check failed" +msgstr "Configuratiecontrole mislukt" + +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "Uw versie van MySQL wordt niet ondersteund. Zie de officiële website voor meer informatie." + +#: errors.php:35 +msgid "SQL escaping test failed, check your database and PHP configuration" +msgstr "SQL escaping test mislukt. Controleer uw database en de PHP configuratie" + +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "Feed niet gevonden." + +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "Gebruiker niet gevonden" + +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "Aan 't laden, even wachten aub..." + +#: index.php:167 +msgid "Collapse feedlist" +msgstr "Feedlijst inklappen" + +#: index.php:170 +msgid "Show articles" +msgstr "Toon artikelen" + +#: index.php:173 +msgid "Adaptive" +msgstr "Aangepast" + +#: index.php:174 +msgid "All Articles" +msgstr "Alle artikelen" + +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "Met ster" + +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "Gepubliceerd" + +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 +msgid "Unread" +msgstr "Ongelezen" + +#: index.php:178 +msgid "With Note" +msgstr "Met notitie" + +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Scores negeren" + +#: index.php:182 +msgid "Sort articles" +msgstr "Artikelen sorteren" + +#: index.php:185 +msgid "Default" +msgstr "Standaard" + +#: index.php:186 +msgid "Newest first" +msgstr "Nieuwste eerst" + +#: index.php:187 +msgid "Oldest first" +msgstr "Oudste eerst" + +#: index.php:188 +msgid "Title" +msgstr "Titel" + +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 +msgid "Mark as read" +msgstr "Markeren als gelezen" + +#: index.php:195 +msgid "Older than one day" +msgstr "Ouder dan een dag" + +#: index.php:198 +msgid "Older than one week" +msgstr "Ouder dan een week" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "Ouder dan twee weken" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "Communicatieprobleem met de server." + +#: index.php:223 +msgid "Actions..." +msgstr "Acties..." + +#: index.php:225 +msgid "Preferences..." +msgstr "Voorkeuren…" + +#: index.php:226 +msgid "Search..." +msgstr "Zoeken..." + +#: index.php:227 +msgid "Feed actions:" +msgstr "Feed acties:" + +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "Abonneren op feed..." + +#: index.php:229 +msgid "Edit this feed..." +msgstr "Bewerk deze feed..." + +#: index.php:230 +msgid "Rescore feed" +msgstr "Feed opnieuw score geven" + +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "Abonnement opzeggen" + +#: index.php:232 +msgid "All feeds:" +msgstr "Alle feeds:" + +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Toon/Verberg gelezen feeds" + +#: index.php:235 +msgid "Other actions:" +msgstr "Andere acties:" + +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "Wisselen breedbeeld modus" + +#: index.php:237 +msgid "Create label..." +msgstr "Label aanmaken…" + +#: index.php:238 +msgid "Create filter..." +msgstr "Filter aanmaken…" + +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "Hulp bij sneltoetscombinaties" + +#: index.php:248 +msgid "Logout" +msgstr "Afmelden" + +#: index.php:254 +msgid "Updates are available from Git." +msgstr "" + +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "Voorkeuren" + +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "Sneltoetscombinaties" + +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Verlaat voorkeuren" + +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Feeds" + +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "Filters" + +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Labels" + +#: prefs.php:133 +msgid "Users" +msgstr "Gebruikers" + +#: prefs.php:136 +msgid "System" +msgstr "Systeem" + +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "Maak nieuw account aan" + +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "Het registreren van nieuwe gebruikers is door de beheerder uitgeschakeld." + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Ga terug naar Tiny Tiny RSS" + +#: register.php:218 +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 "Uw tijdelijke wachtwoord wordt naar het vermelde e-mailadres verstuurd. Accounts waarin niet wordt ingelogd, worden automatisch 24 uur na het verzenden van het tijdelijk wachtwoord verwijderd." + +#: register.php:224 +msgid "Desired login:" +msgstr "Gewenst loginID:" + +#: register.php:227 +msgid "Check availability" +msgstr "Controleer beschikbaarheid" + +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "E-mail:" + +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "Hoeveel is twee plus twee:" + +#: register.php:235 +msgid "Submit registration" +msgstr "Registratie indienen" + +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "Uw registratie informatie is incompleet." + +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "Sorry, deze naam is al in gebruik." + +#: register.php:287 +msgid "Registration failed." +msgstr "Registratie is mislukt." + +#: register.php:334 +msgid "Account created successfully." +msgstr "Het account is met succes aangemaakt." + +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "Nieuwe gebruikersregistratie is op dit moment niet mogelijk." + +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "Tiny Tiny RSS data update script." + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "Ongecategoriseerd" + +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d gearchiveerd artikel" +msgstr[1] "%d gearchiveerde artikelen" + +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "Geen feeds gevonden." + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "Navigatie" + +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "Open volgende feed" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "Open voorgaande feed" + +#: include/functions2.php:55 +msgid "Open next article" +msgstr "Open volgende artikel" + +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "Open voorgaand artikel" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "Open volgend artikel (lange artikelen niet scrollen)" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "Open vorig artikel (lange artikelen niet scrollen)" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "Open volgend artikel (niet uitklappen of markeren als gelezen)" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "Open vorig artikel (niet uitklappen of markeren als gelezen)" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Toon zoekdialoogvenster" + +#: include/functions2.php:62 +msgid "Article" +msgstr "Artikel" + +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "In/uitschakelen sterren" + +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "In/uitschakelen gepubliceerd" + +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "In/uitschakelen gelezen" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Bewerk tags" + +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "Geselecteerde negeren" + +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "Gelezene negeren" + +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "Open in nieuw venster" + +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "Hieronder markeren als gelezen" + +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "Hierboven markeren als gelezen" + +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "Omlaag scrollen" + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "Omhoog scrollen" + +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "Selecteer artikel onder de cursor" + +#: include/functions2.php:75 +msgid "Email article" +msgstr "E-mail artikel" + +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "Sluiten/inklappen artikel" + +#: include/functions2.php:77 +msgid "Toggle article expansion (combined mode)" +msgstr "In/uitschakelen artikel uitklappen (gecombineerde modus)" + +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "In/uitschakelen origineel insluiten" + +#: include/functions2.php:80 +msgid "Article selection" +msgstr "Artikelselectie" + +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "Selecteer alle artikelen" + +#: include/functions2.php:82 +msgid "Select unread" +msgstr "Selecteer ongelezen" + +#: include/functions2.php:83 +msgid "Select starred" +msgstr "Selecteer met ster" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "Selecteer gepubliceerde" + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "Keer selectie om" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "Deselecteer alles" + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Feed" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "Ververs huidige feed" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "Toon/Verberg gelezen feeds" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "Abonneer op feed" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Bewerk feed" + +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "Draai kopteksten om" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "Debug feed update" + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "Markeer alle feeds als gelezen" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "Uit/Inklappen huidige categorie" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "In/uitschakelen gecombineerde modus" + +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "In/uitschakelen automatisch uitklappen in gecombineerde modus" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "Ga naar" + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "Alle artikelen" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "Nieuw" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Tag wolk" + +#: include/functions2.php:106 +msgid "Other" +msgstr "Andere" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "Maak label" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "Maak filter" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "Uit/Inklappen zijbalk" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "Toon helpdialoogvenster" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Zoekresultaten: %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +msgid "comment" +msgid_plural "comments" +msgstr[0] "" +msgstr[1] "" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +#, fuzzy +msgid "comments" +msgstr "Bijlagen" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "geen tags" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "Bewerk tags voor dit artikel" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "Oorspronkelijk uit:" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "Feed URL" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "Sluit dit venster" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(bewerk notitie)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "onbekend type" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "Bijlagen" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "Speciaal" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Alle feeds" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Artikelen met ster" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Gepubliceerde artikelen" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "Nieuwe artikelen" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "Gearchiveerde artikelen" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "Recent gelezen" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "Aanmelden:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "Wachtwoord:" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "Ik ben mijn wachtwoord vergeten" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "Profiel:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "Standaard profiel" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "Gebruik minder dataverkeer" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "Geeft geen afbeeldingen weer in artikelen, vermindert automatisch herladen." + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "Onthoud mij" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "Aanmelden" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "De sessie kon niet worden gevalideerd (onjuist IP)" + +#: include/sessions.php:67 +#, fuzzy +msgid "Session failed to validate (schema version changed)" +msgstr "De sessie kon niet worden gevalideerd (onjuist IP)" + +#: include/sessions.php:85 +#, fuzzy +msgid "Session failed to validate (user not found)" +msgstr "De sessie kon niet worden gevalideerd (onjuist IP)" + +#: include/sessions.php:94 +#, fuzzy +msgid "Session failed to validate (password changed)" +msgstr "De sessie kon niet worden gevalideerd (onjuist IP)" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "Andere interface tips zijn te vinden in de Tiny Tiny RSS wiki." + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Sneltoetscombinaties" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "Shift" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Help onderwerp niet gevonden." + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "Deel met Tiny Tiny RSS" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Titel:" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "Inhoud:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "Labels:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "Gedeeld artikel zal verschijnen in de Gepubliceerd feed." + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "Delen" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "Annuleren" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "Niet ingelogd" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Onjuiste gebruikersnaam of wachtwoord" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "Reeds geabonneerd op %s." + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "Geabonneerd op %s." + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "Kon niet abonneren op %s." + +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "Geen feeds gevonden in %s." + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "Meerdere feed-URL's gevonden." + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "Kon niet abonneren op %s.
    Kon de feed URL niet downloaden." + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "Abonneren op de geselecteerde feed" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Bewerk abonnement opties" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "Wachtwoordherstel" + +#: classes/handler/public.php:805 +#, fuzzy +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "Je moet een geldige naam en emailadres opgeven. Het nieuwe wachtwoord wordt naar je emailadres verzonden." + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "Herstel wachtwoord" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "Sommige vereiste velden ontbreken of zijn onjuist." + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "Ga terug" + +#: classes/handler/public.php:878 +#, fuzzy +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] Melding verandering van wachtwoord" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "Sorry, deze combinatie van naam en wachtwoord is onbekend." + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "Uw toegangsrechten zijn niet voldoende om dit script uit te voeren." + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "Database updater" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Voor de updates uit" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "Toon als RSS feed" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "Toon als RSS" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "Laatst geüpdatet: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "Alles" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Omkeren" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Niets" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "Meer…" + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Selectie schakelaar:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Selectie:" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "Geef score" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "Archiveer" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "Terugzetten" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "Verwijderen" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "Doorsturen per e-mail" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Feed:" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "Feed niet gevonden." + +#: classes/feeds.php:268 +msgid "Never" +msgstr "Nooit" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "Geïmporteerd op %s" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +#, fuzzy +msgid "mark feed as read" +msgstr "Markeer alle feeds als gelezen" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "Artikel inklappen" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "Er zijn geen ongelezen artikelen gevonden om weer te geven." + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "Geen bijgewerkte artikelen gevonden om weer te geven." + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "Er zijn geen artikelen met ster gevonden om weer te geven." + +#: classes/feeds.php:778 +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 "Geen artikelen gevonden voor weergave. U kunt handmatig labels aan artikels toekennen (zie het Actie menu hierboven) of een filter gebruiken." + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "Geen artikelen gevonden om weer te geven." + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "Feeds laatst bijgewerkt op %s" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "Sommige feeds hebben update fouten (klik voor details)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "Geen feeds geselecteerd." + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "Feed of website URL" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "Plaats in categorie:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "Beschikbare feeds" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "Authenticatie" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "LoginID" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "Wachtwoord" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Deze feed vereist authenticatie." + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "Abonneren" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "Meer feeds" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "Zoeken" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "Populaire feeds" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "Feed archief" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "beperking:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "Verwijderen" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "Zoek naar" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +#, fuzzy +msgid "Search syntax" +msgstr "Zoeken" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "Artikel niet gevonden." + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "Tags voor dit artikel (komma gescheiden):" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Opslaan" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "OPML hulpprogramma" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "OPML aan 't importeren…" + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "Terug naar voorkeuren" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "Feed toevoegen: %s" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "Dubbele feed: %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "Toevoegen label %s" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "Dubbele label: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "Instellen voorkeursleutel %s op %s" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "Filter toevoegen..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "Verwerken categorie: %s" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "Upload mislukt met fout nummer %d" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "Kan het geüploade bestand niet verplaatsen." + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "Fout: OPML bestand uploaden aub." + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "Fout: kan het verplaatste OPML bestand niet vinden." + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Fout bij het parsen van het document." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "Uw toegangsniveau is niet toereikend om deze tab te openen." + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "Fouten Log" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "Herlaad" + +#: classes/pref/system.php:43 +#, fuzzy +msgid "Clear log" +msgstr "Wis kleuren" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Fout" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "Bestandsnaam" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Bericht" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Datum" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Gebruiker niet gevonden" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "Geregistreerd" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Laatst ingelogd" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "Aantal geabonneerde feeds" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Geabonneerde feeds" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Toegangsniveau:" + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Opties" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "Gebruiker %s toegevoegd met wachtwoord %s" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "Kon gebruiker %s niet aanmaken" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "Gebruiker %s bestaat al." + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "Wachtwoord van gebruiker%s naar %s gewijzigd" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "Wachtwoord van gebruiker%snaar %s versturen" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] Melding verandering van wachtwoord" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "Selecteer" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Gebruiker aanmaken" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "Details" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Bewerken" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Toegangsniveau" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "Laatste loginID" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Klik om te bewerken" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "Geen gebruikers gedefinieerd." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "Geen overeenkomstige gebruikers gevonden." + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Aanvinken om veld in te schakelen" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, fuzzy, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "(%d feeds)" +msgstr[1] "(%d feeds)" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "Feed titel" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "Bijwerken" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Artikelopschoning:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "Hint: U moet uw aanmeld informatie invullen als uw feed authenticatie vereist, behalve voor Twitter feeds." + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "Verbergen voor populaire feeds" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "Toevoegen aan e-mail samenvatting" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Altijd afbeeldingsbijlagen weergeven" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "Afbeeldingen niet insluiten." + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Afbeelding lokaal in cache plaatsen" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "Markeer bijgewerkte artikelen als niet-gelezen" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "Pictogram" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "Vervangen" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "Herabonneren voor push updates" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "Herstelt PubSubHubbub abonnement status voor gepushte feeds." + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Alles gedaan." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "Feeds met fouten" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "Inactieve feeds" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "Bewerk geselecteerde feeds" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "Herstel sorteervolgorde" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "Batchmatig abonneren" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "Categorieën" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "Categorie toevoegen" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "Verwijder geselecteerde" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "Meer acties…" + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "Handmatig opschonen" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "Wis feed data" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Artikelen nieuwe score geven" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "Met OPML kunt u feeds, filters, labels en Tiny Tiny RSS instellingen exporteren en importeren." + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "Alleen instellingen van het hoofdprofiel kunnen worden overgebracht met OPML." + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "Importeer mijn OPML" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "Bestandsnaam:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "Toevoegingsinstellingen" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "OPML exporteren" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "Uw OPML kan openbaar worden gepubliceerd en er kan op worden geabonneerd door iedereen die de URL hieronder kent." + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "De gepubliceerde OPML bevatten niet uw Tiny Tiny RSS instellingen, feeds die authenticatie vereisen of feeds verborgen voor Populaire feeds." + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "Publieke OPML URL" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "Gepubliceerde OPML URL weergeven" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Firefox integratie" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "Deze Tiny Tiny RSS site kan gebruikt worden als een Firefox Feed Reader door op de link hieronder te klikken." + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "Klik hier om deze site te registreren als een feed reader." + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "Gepubliceerde & gedeelde artikelen / Gegenereerde feeds" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "Gepubliceerde artikelen worden geëxporteerd als publieke RSS-feed en er kan door iedereen die de URL hieronder kent op worden geabonneerd." + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "Toon URL" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "Wis alle gegenereerde URL's" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "Deze feeds hebben al 3 maanden geen nieuwe inhoud (oudste eerst):" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "Klik om feed te bewerken" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "Abonnement opzeggen voor geselecteerde feeds" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "Een geldige RSS feed per regel toevoegen (er wordt geen feed detectie uitgevoerd)" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "Te abonneren feeds: één per regel" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "Feeds vereisen authenticatie." + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "Artikelen volgens dit filter:" + +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "Er zijn geen recente artikelen die overeenkomen met dit filter gevonden." + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(omgekeerd)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "%s op %s in %s %s" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Onderschrift" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "Match" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "Toevoegen" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "Acties toepassen" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Ingeschakeld" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "Match elke regel" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "Omgekeerde matching" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "Test" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "Combineren" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Aanmaken" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "Omgekeerde regular expression matching" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "op veld" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "in" + +#: classes/pref/filters.php:947 +#, fuzzy +msgid "Wiki: Filters" +msgstr "Filters" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "Regel opslaan" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "Regel toevoegen" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Actie uitvoeren" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "met parameters:" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "Actie opslaan" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "Actie toevoegen" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[Geen onderschrift]" + +#: classes/pref/filters.php:1044 +#, fuzzy, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "Regel toevoegen" +msgstr[1] "Regel toevoegen" + +#: classes/pref/filters.php:1059 +#, fuzzy, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "Actie toevoegen" +msgstr[1] "Actie toevoegen" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "Kleuren" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "Voorgrond:" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "Achtergrond:" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "Label %s aangemaakt" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Wis kleuren" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Algemeen" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Interface" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Geavanceerd" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "Samenvatting" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "Sta dubbele artikels toe" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Op de zwarte lijst geplaatste tags" + +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "Wanneer tags automatisch worden gedetecteerd in artikelen, zullen deze tags niet worden toegekend (komma-gescheiden lijst)." + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "Artikelen automatisch als gelezen markeren" + +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "Deze optie schakelt het automatisch markeren als gelezen van artikelen (terwijl u door de artikellijst scrolt) in." + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "Artikelen automatisch uitklappen in gecombineerde modus" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "Gecombineerde feed weergave" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Uitgeklapte lijst van artikelen weergeven in plaats van afzonderlijke weergave van kopteksten en artikelinhoud" + +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "Bevestig feed markeren als gelezen" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "Aantal tegelijkertijd weer te geven artikelen " + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "Standaard feed update interval" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "Kortste interval waarmee een feed wordt gecontroleerd op updates, onafhankelijk van upate methode" + +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "Markeer artikelen in e-mail samenvatting als gelezen" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "Schakel e-mail samenvatting in" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Deze optie schakelt het verzenden van een dagelijkse samenvatting van nieuwe (en ongelezen) kopteksten naar het door u ingestelde e-mailadres in" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "Tracht samenvattingen te verzenden rond een bepaalde tijd" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "Gebruikt UTC tijdzone" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "Sta API toegang toe" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "Laat externe clienten to tot dit account via de API" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Inschakelen feed categorieën" + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "Sorteer feeds op aantal ongelezen artikelen" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Maximum leeftijd van nieuwe artikelen (uren) " + +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "Feeds zonder ongelezen artikelen verbergen" + +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "Toon speciale feeds bij verbergen gelezen feeds" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "Lang datumformaat" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "" + +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "Toon volgende feed na bijwerken" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Automatisch volgende feed met ongelezen artikelen openen nadat er een is gemarkeerd als gelezen" + +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Permanent verwijderen van artikelen na dit aantal dagen (0 - zet dit uit)" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "Ongelezen artikelen permanent verwijderen" + +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "Draai de koptekst volgorde om (oudste eerst)" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "Korte datumformaat" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "Toon voorbeeld van inhoud in lijst van kopteksten" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "Sorteer kopteksten op feed datum" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "Door feed gespecificeerde data gebruiken om kopteksten te sorteren in plaats van lokaal geïmporteerde data." + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "Aanmelden met een SSL-certificaat" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Klik om uw SSL cliëntcertificaat te registreren bij tt-rss" + +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "Afbeeldingen niet insluiten in artikelen" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "Verwijder onveilige tags uit artikelen" + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Verwijder alles behalve de meest algemene HTML tags bij het lezen van artikelen." + +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "Aanpassen opmaakmodel" + +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "Aanpassen CSS opmaakmodel aan uw voorkeur" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "Gebruiker's tijdzone" + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "Kopteksten in virtuele feeds groeperen" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "Speciale feeds, labels en categorieën worden gegroepeerd op oorspronkelijke feeds" + +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "Taal" + +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "Thema" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "Selecteer een van de beschikbare CSS themas" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "De configuratie is opgeslagen." + +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "Uw persoonlijke gegevens zijn opgeslagen." + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "Je voorkeuren zijn nu ingesteld op de standaardwaarden." + +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "Persoonlijke gegevens / Authenticatie" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "Persoonlijke gegevens" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "Volledige naam" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "E-mail" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Toegangsniveau" + +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Gegevens opslaan" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "Uw wachtwoord staat op de standaard waarde. Verander het aub." + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "Je wachtwoord wijzigen schakelt Eenmalig Wachtwoord uit." + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Oud wachtwoord" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Nieuw wachtwoord" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Bevestig wachtwoord" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "Wijzig wachtwoord" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "Eenmalig wachtwoord / Authenticator" + +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "Eenmalig wachtwoord is geactiveerd. Voer je huidige wachtwoord in om dit uit te schakelen." + +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "Vul uw wachtwoord in" + +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "EW (Eenmalig wachtwoord) uitschakelen" + +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "U heeft een compatibele Authenticator nodig om dit te gebruiken. Veranderen van wachtwoord schakelt automatisch EW uit." + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "Scan de volgende code met de Authenticator applicatie:" + +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "Geef aub uw eenmalig wachtwoord" + +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "Inschakelen EW" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "PHP GD functies zijn noodzakelijk voor EW ondersteuning." + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "Sommige instellingen zijn alleen beschikbaar in het standaard profiel." + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "Aanpassen" + +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "Registreren" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "Wissen" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "Huidige servertijd: %s (UTC)" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Configuratie opslaan" + +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "Verlaat voorkeuren" + +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "Profielbeheer" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "Terugzetten naar de standaardwaarden" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "Plug-ins" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "Je moet Tiny Tiny RSS herladen om wijzigingen te kunnen zien." + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "Download meer plugins van tt-rss.org forum of wiki." + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "Systeem plug-ins" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "Plug-in" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "Omschrijving" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "Versie" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "Auteur" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "meer info" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "Wis data" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "Gebruiker's plug-ins" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "Geselecteerd plug-ins inschakelen" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "Onjuist Eenmalig Wachtwoord" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "Onjuist wachtwoord" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "U kunt door de CSS-declaraties aan te passen de kleuren, lettertypen en lay-out van uw huidige thema hier aanpassen. Dit bestand kan als richtlijn worden gebruikt." + +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "Maak profiel" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(actief)" + +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "Verwijder geselecteerde profielen" + +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "Activeer profiel" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "Indien u labels en/of filters heeft geïmporteerd moet u waarschijnlijk te voorkeuren herladen om uw bijgewerkte gegevens te zien." + +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "Uw publieke OPML URL is:" + +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "Genereer nieuwe 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 "De update daemon is ingeschakeld in de configuratie, maar het achtergrondproces loopt niet. Dit voorkomt dat alle feeds wordt bijgewerkt. Start het achtergrondproces of contacteer de eigenaar van deze instantie." + +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "Laatste update:" + +#: 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 "De update daemon neemt te veel tijd om een feed bij te werken. Dit kan betekenen dat het proces is gescrashed of hangt. Controleer het achtergrondproces of contacteer de eigenaar van deze instantie." + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "u kunt deze feed bekijken als RSS via de volgende URL:" + +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" + +#: plugins/af_psql_trgm/init.php:112 +#, fuzzy +msgid "Show related articles" +msgstr "Artikelen met ster" + +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +#, fuzzy +msgid "Mark similar articles as read" +msgstr "Markeer alle artikelen als gelezen?" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +#, fuzzy +msgid "Global settings" +msgstr "Toevoegingsinstellingen" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "Inschakelen feed categorieën" + +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" + +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" + +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "" + +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "" + +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "Bewerk artikel notitie" + +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "Geen bestand geupload." + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "Klaar. %d van de %d artikels geïmporteerd." + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "Het document heeft een onbekende indeling." + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "Importeer gedeelde items of items met ster van Google Reader" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "Plak je starred.json of shared.json hieronder." + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "Importeer items met Ster" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[Doorgestuurd]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "Meerdere artikelen" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "Klikken op de volgende link om uw e-mail cliënt te starten:" + +#: plugins/mailto/init.php:75 +msgid "Forward selected article(s) by email." +msgstr "Geselecteerde artikel(en) doorsturen per e-mail." + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "U zou in staat moeten zijn het bericht te bewerken vóórdat u het verzendt met uw e-mail cliënt." + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "Sluit dit dialoogvenster" + +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "Import en export" + +#: 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 "U kunt uw gearchiveerde of artikelen met ster exporteren en importeren om veilig te bewaren wanneer u migreert tussen tt-rss instanties." + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "Exporteer mijn data" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Importeren" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "Kon niet importeren: onjuiste schema versie." + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "Kon niet importeren: onbekend documentindeling." + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "Klaar:" + +#: plugins/import_export/init.php:388 +#, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "%d artikel verwerkt, " +msgstr[1] "%d artikels verwerkt, " + +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "%d geïmporteerd, " +msgstr[1] "%d geïmporteerd, " + +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "%d feed gemaakt." +msgstr[1] "%d feeds gemaakt." + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "Kon XML-document niet laden." + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "Voorbereiden data" + +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "NVVW (Niet Veilig Voor Werk) (klik om in/uit te schakelen)" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "NVVW (Niet Veilig Voor Werk) Plug-in" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "Tags te overwegen als NVVW (komma gescheiden)" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "Configuratie opgeslagen." + +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "Geef aub uw eenmalig wachtwoord:" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "Wachtwoord is veranderd." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "Oud wachtwoord is onjuist." + +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "Sluit artikel" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "" + +#: plugins/mail/init.php:34 +#, fuzzy +msgid "Mail plugin" +msgstr "Gebruiker's plug-ins" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "" + +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "Naar:" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "Onderwerp:" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "Verzend e-mail" + +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "Gekoppeld" + +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" +msgstr "Instantie" + +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "Instantie URL" + +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "Toegangssleutel:" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "Toegangssleutel" + +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "Gebruik één toegang-sleutel voor beide gekoppelde instanties." + +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "Genereer nieuwe sleutel" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "Link instantie" + +#: 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 "U kunt deze instantie verbinden met andere instanties van Tiny Tiny RSS om Populaire feeds te delen. Verbindt deze instantie van Tiny Tiny RSS met deze URL:" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "Laatst verbonden" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "Status" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "Opgeslagen feeds" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "Link aanmaken" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "Configuratie opgeslagen." + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "Controleer beschikbaarheid" + +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "Bewerk artikel notitie" + +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +#, fuzzy +msgid "Shared articles" +msgstr "Artikelen met ster" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +#, fuzzy +msgid "Statistics" +msgstr "Status" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "Artikelen met ster" + +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "Wis data" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, fuzzy, php-format +msgid "Currently stored as: %s" +msgstr "Huidige servertijd: %s (UTC)" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +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 "Sleep de link hieronder naar uw browser's werkbalk, open de feed waar u geïnteresseerd in bent in uw browser en klik op de link om u er op te abonneren." + +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "Abonneren op %s in Tiny Tiny RSS?" + +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Abonneren in Tiny Tiny RSS" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "Gebruik deze bookmarklet om willekeurige pagina's met Tiny Tiny RSS te publiceren" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "U kunt alle artikelen gedeeld via unieke URL's hier uitschakelen." + +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "Delen alle artikelen teniet doen" + +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "Deel via URL" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "U kunt dit artikel delen via de volgende unieke URL:" + +#: plugins/share/init.php:117 +#, fuzzy +msgid "Unshare article" +msgstr "Ster weghalen bij artikel" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "De fout wordt in het geconfigureerde log vastgelegd." + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "" + +#: js/functions.js:93 +msgid "Close" +msgstr "" + +#: js/functions.js:104 +#, fuzzy +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "Weet u zeker dat u deze uitzondering wilt rapporteren aan tt-rss.org? Het rapport zal uw browser informatie bevatten. Uw IP-adres zal bewaard worden in een database." + +#: js/functions.js:224 +msgid "Click to close" +msgstr "Klik om te sluiten" + +#: js/functions.js:1051 +msgid "Edit action" +msgstr "Bewerk actie" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "Filter aanmaken" + +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "Abonnement opnieuw instellen? Tiny Tiny RSS zal proberen zich opnieuw op de notification hub te abonneren bij de volgende feed update." + +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "Abonnement hersteld." + +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "Abonnement opzeggen voor %s?" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "Feed wordt verwijderd..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "Vul titel van categorie in aub:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "Nieuw syndicatie-adres voor deze feed genereren?" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Adres aan het aanpassen..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "Er zijn geen feeds geselecteerd." + +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "Geselecteerde feeds uit het archief verwijderen? Feeds met opgeslagen artikelen zullen niet worden verwijderd." + +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "Feeds met update fouten" + +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "Geselecteerde feeds verwijderen?" + +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "Geselecteerde feeds verwijderen..." + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "Bewerk categorie" + +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "Categorie verwijderen" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "Omgekeerd" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "Geef loginID aub:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "Kan gebruiker niet aanmaken: geen loginID gespecificeerd." + +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "Gebruiker toevoegen..." + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Gebruikers bewerken" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "Gegevens opslaan..." + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "Bewerk filter" + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "Filter verwijderen?" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "Filter verwijderen..." + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "Geselecteerde labels verwijderen?" + +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "Geselecteerde labels verwijderen..." + +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "Er zijn geen labels geselecteerd." + +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "Geselecteerde gebruikers verwijderen? Noch de standaard admin gebruiker, noch uw eigen account zal worden verwijderd." + +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "Geselecteerde gebruikers verwijderen..." + +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "Er zijn geen gebruikers geselecteerd." + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "Geselecteerde filters verwijderen?" + +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "Geselecteerde filters verwijderen..." + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "Er zijn geen filters geselecteerd." + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "Abonnement opzeggen voor geselecteerde feeds?" + +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "Abonnement opzeggen voor geselecteerde feeds..." + +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "Selecteer aub slecht één feed." + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "Alle artikelen zonder ster in deze feed wissen?" + +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "Geselecteerde feed opruimen..." + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "Hoeveel dagen moeten artikelen worden bewaard (0 = gebruik standaardwaarde)?" + +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "Geselecteerde feeds opschonen..." + +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "Selecteer aub slechts één gebruiker." + +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "Wachtwoord van geselecteerde gebruiker opnieuw instellen?" + +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "Wachtwoord van geselecteerde gebruiker opnieuw instellen..." + +#: js/prefs.js:565 +msgid "User details" +msgstr "Gebruiker's details" + +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "Selecteer aub slecht één filter." + +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "Geselecteerde filters combineren?" + +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "Filters samenvoegen..." + +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "Bewerk meervoudige feeds" + +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "Veranderingen aan geselecteerde feeds opslaan?" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "OPML import" + +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "kies eerst een OPML-bestand aub." + +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "Aan 't importeren, even wachten aub..." + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "Terugzetten naar de standaardwaarden?" + +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "Abonneren op feeds..." + +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "Wis opgeslagen data voor deze plug-in?" + +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "" + +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "Markeer alle artikelen als gelezen?" + +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "Alle feeds als gelezen markeren..." + +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "Eerst de e-mail plug-in inschakelen aub." + +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "U kunt dit type feed niet bewerken." + +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "Eerst embed_original plug-in inschakelen aub." + +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "" + +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "U kunt dit type feed geen andere score geven." + +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "Selecteer aub eerst een feed." + +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "Artikelen in %s opnieuw een score geven?" + +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "Artikelen nieuwe score geven..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "Geen artikelen geselecteerd." + +#: js/viewfeed.js:1018 +#, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "Verwijder %d geselecteerd artikel in %s?" +msgstr[1] "Verwijder %d geselecteerde artikelen in %s?" + +#: js/viewfeed.js:1020 +#, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "Verwijder %d geselecteerd artikel?" +msgstr[1] "Verwijder %d geselecteerde artikelen?" + +#: js/viewfeed.js:1062 +#, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "%d geselecteerd artikel archiveren in %s?" +msgstr[1] "%d geselecteerd artikelen archiveren in %s?" + +#: js/viewfeed.js:1065 +#, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "%d gearchiveerd artikel terugzetten?" +msgstr[1] "%d gearchiveerde artikelen terugzetten?" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "Let op, artikels zonder ster kunnen verloren gaan bij de volgende feed update." + +#: js/viewfeed.js:1112 +#, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "Markeer %d geselecteerd artikel in %s als gelezen?" +msgstr[1] "Markeer %d geselecteerde artikelen in %s als gelezen?" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "Bewerk artikel tags" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "Artikel tags opslaan..." + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +#, fuzzy +msgid "Click to open next unread feed." +msgstr "Klik om feed te bewerken" + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "Open origineel artikel" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Labels toevoegen" + +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "Label verwijderen" + +#: js/viewfeed.js:2159 +#, fuzzy +msgid "Select articles in group" +msgstr "Selecteer artikel onder de cursor" + +#: js/viewfeed.js:2168 +#, fuzzy +msgid "Mark group as read" +msgstr "Markeren als gelezen" + +#: js/viewfeed.js:2180 +#, fuzzy +msgid "Mark feed as read" +msgstr "Markeer alle feeds als gelezen" + +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "Geef aub een nieuwe score voor de geselecteerde artikelen:" + +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "Geef aub een nieuwe score voor dit artikel:" + +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "Artikel URL:" + +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "Sorry, uw browser lijkt iframes in een sandbox niet te ondersteunen." + +#: plugins/af_psql_trgm/init.js:11 +#, fuzzy +msgid "Related articles" +msgstr "Verwijder artikel" + +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "Artikel notitie opslaan..." + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Google Reader Importeerder" + +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "Kies eerst een bestand aub." + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "Artikel doorsturen per e-mail" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "Data exporteren" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "Klaar met exporteren van %d artikel. U kunt de data hier downloaden." +msgstr[1] "Klaar met exporteren van %d artikelen. U kunt de data hier downloaden." + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Data importeren" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "Kies het bestand eerst aub." + +#: plugins/shorten_expanded/init.js:37 +#, fuzzy +msgid "Click to expand article" +msgstr "Klik om artikel uit te klappen." + +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" + +#: plugins/mail/mail.js:38 +#, fuzzy +msgid "Your message has been sent." +msgstr "Uw persoonlijke gegevens zijn opgeslagen." + +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "Link Instantie" + +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "Bewerk instantie" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "Geselecteerde instanties verwijderen?" + +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "Geselecteerde instanties verwijderen..." + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "Er zijn geen instanties geselecteerd." + +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "Selecteer aub slechts één instantie." + +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "Wis feed data" + +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "" + +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "Deel artikel via URL" + +#: plugins/share/share.js:14 +#, fuzzy +msgid "Generate new share URL for this article?" +msgstr "Geef aub een nieuwe score voor dit artikel:" + +#: plugins/share/share.js:18 +#, fuzzy +msgid "Trying to change URL..." +msgstr "Adres aan het aanpassen..." + +#: plugins/share/share.js:55 +#, fuzzy +msgid "Remove sharing for this article?" +msgstr "Bewerk tags voor dit artikel" + +#: plugins/share/share.js:59 +#, fuzzy +msgid "Trying to unshare..." +msgstr "Adres aan het aanpassen..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "Dit zal all eerder gedeelde artikel-URL's ongeldig maken. Doorgaan?" + +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "URLs opruimen..." + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "Gedeelde URLs opgeruimd." + +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "Markeer alle artikelen in %s als gelezen?" + +#: js/feedlist.js:435 +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "Markeer alle artikelen in %s ouder dan 1 dag als gelezen?" + +#: js/feedlist.js:438 +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "Markeer alle artikelen in %s ouder dan 1 week als gelezen?" + +#: js/feedlist.js:441 +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "Markeer alle artikelen in %s ouder dan 2 weken als gelezen?" + +#: js/functions.js:615 +msgid "Error explained" +msgstr "Fout uitleg" + +#: js/functions.js:697 +msgid "Upload complete." +msgstr "Upload voltooid." + +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "Opgeslagen feed pictogram verwijderen?" + +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "Opgeslagen feed pictogram verwijderen..." + +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "Feed pictogram verwijderd." + +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "Selecteer aub een afbeeldingsbestand om te uploaden." + +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "Nieuw pictogram voor deze feed uploaden?" + +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "Aan 't uploaden, even wachten aub..." + +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "Geeft een onderschrift voor label:" + +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "Kan label niet aanmaken: onderschrift ontbreekt." + +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "Abonneren op feed" + +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "" + +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "Geabonneerd op %s" + +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "Gespecificeerde URL lijkt ongeldig te zijn." + +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "Gespecificeerde URL lijkt geen feeds te bevatten." + +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "Uitklappen tot geselecteerde feed" + +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "Kon de gespecificeerde URL: %s niet downloaden" + +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "XML validatie mislukt: %s" + +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "U bent al geabonneerd op deze feed." + +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "Bewerk regel" + +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "Bewerk feed" + +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "Meer feeds" + +#: js/functions.js:1878 +msgid "Help" +msgstr "Help" + +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "Categorie %s verwijderen? elke genestelde feed zal in de rubriek 'Ongecategoriseerd' worden geplaatst." + +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "Categorie verwijderen..." + +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "Geselecteerde categorieën verwijderen?" + +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "Geselecteerde categorieën verwijderen..." + +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "Geen categorieën geselecteerd." + +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "Categorie titel:" + +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "Aanmaken categorie…" + +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "Feeds zonder recente updates" + +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "Huidig OPML publicatieadres vervangen door een nieuwe?" + +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "Feed opruimen..." + +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "Artikelen in geselecteerde feeds opnieuw een score geven?" + +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "Geselecteerde feeds nieuwe score geven..." + +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "Alle artikelen opnieuw een score geven? Dit kan veel tijd in beslag nemen." + +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "Feed opnieuw score geven..." + +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "Geselecteerd label naar de standaard kleur terugzetten?" + +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "Instellingsprofielen" + +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "Geselecteerde profielen verwijderen? Actieve en standaard profielen zullen niet worden verwijderd." + +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "Geselecteerde profielen verwijderen..." + +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "Er zijn geen profielen geselecteerd." + +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "Geselecteerd profiel activeren?" + +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "Kies een te activeren profiel aub." + +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "Profiel aanmaken..." + +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "Dit zal alle eerder gegenereerde feed-URL's ongeldig maken. Doorgaan?" + +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "Genereerde URLs gewist." + +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Label editor" + +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "U kunt het abonnementen niet opzeggen in deze categorie." + +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "Zoeken annuleren" + +#: js/viewfeed.js:174 +#, fuzzy +msgid "New articles found, reload feed to continue." +msgstr "Geen artikelen gevonden om weer te geven." + +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Ster weghalen bij artikel" + +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "Geef artikel een ster" + +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "Ongepubliceerd artikel" + +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Artikel publiceren" + +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "%d artikel geselecteerd" +msgstr[1] "%d artikelen geselecteerd" + +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "Geen artikel geselecteerd." + +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "Geen artikelen gevonden om te markeren" + +#: js/viewfeed.js:1452 +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "Markeer %d artikel als gelezen?" +msgstr[1] "Markeer %d artikelen als gelezen?" + +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "Toon artikel URL" + +#~ msgid "Select by tags..." +#~ msgstr "Selectie met tags..." + +#~ msgid "Limit search to:" +#~ msgstr "Beperk zoeken naar:" + +#~ msgid "This feed" +#~ msgstr "Deze feed" + +#~ msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation." +#~ msgstr "Complexe expressies kunnen geen resultaat geven bij het testen, tengevolge van problemen bij de database server's regexp implementatie." + +#~ msgid "Old password cannot be blank." +#~ msgstr "Oud wachtwoord kan niet leeg zijn." + +#~ msgid "New password cannot be blank." +#~ msgstr "Nieuw wachtwoord kan niet leeg zijn." + +#~ msgid "Entered passwords do not match." +#~ msgstr "Ingevulde wachtwoorden komen niet overeen." + +#~ msgid "Function not supported by authentication module." +#~ msgstr "Functie niet ondersteund door authenticatiemodule." + +#~ msgid "Match:" +#~ msgstr "Match:" + +#~ msgid "Any" +#~ msgstr "Elke" + +#~ msgid "All tags." +#~ msgstr "Alle tags." + +#~ msgid "Which Tags?" +#~ msgstr "Welke tags?" + +#~ msgid "Display entries" +#~ msgstr "Items weergeven" + +#~ msgid "Select item(s) by tags" +#~ msgstr "Selecteer item(s) via tags" + +#~ msgid "Unread First" +#~ msgstr "Ongelezen eerst" + +#~ msgid "Unknown option: %s" +#~ msgstr "Onbekende optie: %s" + +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "Er is een nieuwe versie van Tiny Tiny RSS beschikbaar!" + +#, fuzzy +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "De sessie kon niet worden gevalideerd (onjuist IP)" + +#~ msgid "Assign articles to labels automatically" +#~ msgstr "Artikelen automatisch toekennen aan labels" + +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "Nieuwe versie van Tiny Tiny RSS is beschikbaar (%s)." + +#~ msgid "You can update using built-in updater in the Preferences or by using update.php" +#~ msgstr "U kunt updaten met behulp van de ingebouwde updater in de Voorkeuren of via update.php" + +#~ msgid "See the release notes" +#~ msgstr "Zie de uitgave opmerkingen" + +#~ msgid "Download" +#~ msgstr "Downloaden" + +#~ msgid "Error receiving version information or no new version available." +#~ msgstr "Fout bij verkrijgen van versie informatie, of geen nieuwe versie beschikbaar." + +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Tiny Tiny RSS bijwerken" + +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "Uw Tiny Tiny RSS installatie is up-to-date." + +#, fuzzy +#~ msgid "Force update" +#~ msgstr "Voor de updates uit" + +#~ msgid "Do not close this dialog until updating is finished." +#~ msgstr "Sluit dit dialoogvenster niet voordat het bijwerken klaar is." + +#~ msgid "It is suggested to backup your tt-rss directory first." +#~ msgstr "Het is raadzaam eerst een backup van je tt-rss map te maken." + +#~ msgid "Your database will not be modified." +#~ msgstr "Je database wordt niet aangepast." + +#~ 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 "Je huidige tt-rss installatie map wordt niet aangepast. Deze wordt hernoemd en in de hoofdmap gelaten. Je kan al je aangepaste bestanden overzetten nadat de update voltooid is." + +#~ msgid "Ready to update." +#~ msgstr "Klaar om bij te werken." + +#~ msgid "Start update" +#~ msgstr "Start update" + +#~ msgid "Backup your tt-rss directory before continuing. Please type 'yes' to continue." +#~ msgstr "Maak een back-up van uw tt-rss map alvorens door te gaan. Typ 'yes' om door te gaan. " + +#~ msgid "New version available!" +#~ msgstr "Nieuwe versie beschikbaar!" + +#~ msgid "LibXML error %s at line %d (column %d): %s" +#~ msgstr "LibXML fout %s op regel %d (kolom %d): %s" + +#~ msgid "From:" +#~ msgstr "Van:" + +#~ msgid "Select:" +#~ msgstr "Selecteer:" + +#~ msgid "mark as read" +#~ msgstr "markeer als gelezen" + +#~ msgid "Change password to" +#~ msgstr "Wijzig wachtwoord naar" + +#~ msgid "E-mail: " +#~ msgstr "E-mail: " + +#~ msgid "Login field cannot be blank." +#~ msgstr "Het loginID veld kan niet leeg zijn." + +#~ msgid "Saving user..." +#~ msgstr "Gebruiker opslaan..." + +#~ msgid "Toggle marked" +#~ msgstr "Markeer als (on)gelezen" + +#~ msgid "(Un)hide empty categories" +#~ msgstr "Verberg/Toon lege categorieën" + +#~ msgid "Published articles and generated feeds" +#~ msgstr "Gepubliceerde artikelen en gegenereerde feeds" + +#~ msgid "Articles shared by URL" +#~ msgstr "Artikelen gedeeld met URL" + +#~ msgid "These feeds have not been updated because of errors:" +#~ msgstr "Deze feeds zijn niet bijgewerkt omdat er fouten zijn opgetreden:" + +#~ msgid "Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings." +#~ msgstr "Uw browser ondersteunt geen Javascript. Dit is vereist voor het goed functioneren van deze applicatie. Controleer aub uw browser instellingen." + +#~ msgid "Hello," +#~ msgstr "Hallo," + +#~ msgid "Regular version" +#~ msgstr "Reguliere versie" + +#~ msgid "Home" +#~ msgstr "Startpagina" + +#~ msgid "Nothing found (click to reload feed)." +#~ msgstr "Niets gevonden (klik om feed opnieuw te laden)." + +#~ msgid "Open regular version" +#~ msgstr "Open de reguliere versie" + +#~ msgid "Enable categories" +#~ msgstr "Inschakelen categorieën" + +#~ msgid "ON" +#~ msgstr "AAN" + +#~ msgid "OFF" +#~ msgstr "UIT" + +#~ msgid "Browse categories like folders" +#~ msgstr "Geef categorieën als mappen weer" + +#~ msgid "Show images in posts" +#~ msgstr "Toon afbeeldingen in berichten" + +#~ msgid "Hide read articles and feeds" +#~ msgstr "Verberg gelezen artikelen en feeds" + +#~ msgid "Sort feeds by unread count" +#~ msgstr "Sorteer feeds op ongelezen aantallen" + +#~ msgid "Article archive" +#~ msgstr "Artikelarchief" + +#~ msgid "Example Pane" +#~ msgstr "Voorbeeldpaneel" + +#~ msgid "Sample value" +#~ msgstr "Voorbeeld waarde" + +#~ msgid "Set value" +#~ msgstr "Geef waarde" + +#~ msgid "Mark %d displayed article as read?" +#~ msgid_plural "Mark %d displayed articles as read?" +#~ msgstr[0] "Markeer %d getoond artikel als gelezen?" +#~ msgstr[1] "Markeer %d getoonde artikelen als gelezen?" + +#~ msgid "Error: unable to load article." +#~ msgstr "Fout: kan artikel niet laden." + +#~ msgid "%d more..." +#~ msgid_plural "%d more..." +#~ msgstr[0] "%d meer…" +#~ msgstr[1] "%d meer…" + +#~ msgid "No unread feeds." +#~ msgstr "Geen ongelezen feeds." + +#~ msgid "Load more..." +#~ msgstr "Laad meer..." + +#~ msgid "Switch to digest..." +#~ msgstr "Omschakelen naar samenvatting…" + +#~ msgid "Show tag cloud..." +#~ msgstr "Toon tagwolk..." + +#~ msgid "Click to play" +#~ msgstr "Klik om af te spelen" + +#~ msgid "Play" +#~ msgstr "Afspelen" + +#~ msgid "Visit the website" +#~ msgstr "Bezoek de website" + +#, fuzzy +#~ msgid "Select theme" +#~ msgstr "Selecteer met ster" + +#~ msgid "I have scanned the code and would like to enable OTP" +#~ msgstr "Ik heb de code gescanned en wil nu EWW inschakelen" + +#~ msgid "Playing..." +#~ msgstr "aan 't afspelen..." + +#, fuzzy +#~ msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" +#~ msgstr "" +#~ "Kon bestand niet uploaden. U moet misschien de upload_max_filesize\n" +#~ "\t\t\t\tin PHP.ini aanpassen (huidige waarde = %s)" + +#~ msgid "Default interval between feed updates" +#~ msgstr "Standaard interval voor feed updates" + +#~ msgid "Could not update database" +#~ msgstr "Kon de database niet bijwerken" + +#~ msgid "Could not find necessary schema file, need version:" +#~ msgstr "Kon geen juist updateschemabestand vinden. Benodigde versie:" + +#~ msgid ", found: " +#~ msgstr ", gevonden: " + +#~ msgid "Tiny Tiny RSS database is up to date." +#~ msgstr "Tiny Tiny RSS database is bijgewerkt." + +#~ msgid "Please backup your database before proceeding." +#~ msgstr "Maak aub een back-up van uw database voordat u verder gaat." + +#~ msgid "Your Tiny Tiny RSS database needs update to the latest version (%d to %d)." +#~ msgstr "Uw Tiny Tiny RSS database moet worden geüpdate naar de laatste versie (%d naar %d)." + +#~ msgid "Performing updates..." +#~ msgstr "Uitvoeren van updates..." + +#~ msgid "Updating to version %d..." +#~ msgstr "Updaten naar versie %d..." + +#~ msgid "Checking version... " +#~ msgstr "Versie controleren..." + +#~ msgid "OK!" +#~ msgstr "OK!" + +#~ msgid "ERROR!" +#~ msgstr "FOUT!" + +#, fuzzy +#~ msgid "Finished. Performed %d update up to schema version %d." +#~ msgid_plural "Finished. Performed %d updates up to schema version %d." +#~ msgstr[0] "" +#~ "Klaar. %d update(s) uitgevoerd volgens schema naar\n" +#~ "\t\t\tversie %d." +#~ msgstr[1] "" +#~ "Klaar. %d update(s) uitgevoerd volgens schema naar\n" +#~ "\t\t\tversie %d." + +#~ msgid "Your database schema is from a newer version of Tiny Tiny RSS." +#~ msgstr "Uw database schema is van een nieuwere versie van Tiny Tiny RSS." + +#~ msgid "Found schema version: %d, required: %d." +#~ msgstr "Versie schema gevonden: %d, vereist: %d." + +#~ msgid "Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer version and continue." +#~ msgstr "Schema update onmogelijk. Update Tiny Tiny RSS bestanden naar de nieuwere versie en gaan door." + +#~ msgid "Enable external API" +#~ msgstr "Inschakelen externe API" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Als deze optie is ingeschakeld worden kopteksten in de Speciale feedsrubriek en Labels gegroepeerd per feed" + +#~ msgid "Title or Content" +#~ msgstr "Titel of inhoud" + +#~ msgid "Link" +#~ msgstr "Koppeling" + +#~ msgid "Content" +#~ msgstr "Inhoud" + +#~ msgid "Article Date" +#~ msgstr "Datum artikel" + +#~ msgid "Set starred" +#~ msgstr "Ster toevoegen" + +#~ msgid "Assign tags" +#~ msgstr "Tags toevoegen" + +#~ msgid "Modify score" +#~ msgstr "verander de 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 "Deze optie is nuttig als u verscheidene planet-type nieuws aggregators leest met een ten dele overeenkomende gebruikersgroep. Indien uitgeschakeld forceert het berichten van verschillende feeds slechts eenmaal te verschijnen." + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Data syntax lijkt correct:" + +#~ msgid "Date syntax is incorrect." +#~ msgstr "Data syntax is onjuist." + +#~ msgid "Notice" +#~ msgstr "NB!" + +#~ msgid "Tag Cloud" +#~ msgstr "Tag Wolk" + +#~ msgid "Mark all visible articles in %s as read?" +#~ msgstr "Markeer alle zichtbare artikelen in %s als gelezen?" + +#~ msgid "Score" +#~ msgstr "Score" + +#~ msgid "Enable the options you wish to apply using checkboxes on the right:" +#~ msgstr "Inschakelen van toe te passen opties met de selectievakjes rechts:" + +#~ msgid "New articles available in this feed (click to show)" +#~ msgstr "Nieuwe artikelen beschikbaar in deze feed (klik voor weergave)" + +#~ msgid "Pocket" +#~ msgstr "Pocket" + +#~ msgid "Pinterest" +#~ msgstr "Pinterest" + +#~ msgid "Share on identi.ca" +#~ msgstr "Deel op identi.ca" + +#~ msgid "Owncloud" +#~ msgstr "Owncloud" + +#~ msgid "Owncloud url" +#~ msgstr "Owncloud url" + +#~ msgid "Bookmark on OwnCloud " +#~ msgstr "Bladwijzers op OwnCloud" + +#~ msgid "Flattr this article." +#~ msgstr "Flattr dit artikel." + +#~ msgid "Share on Google+" +#~ msgstr "Deel op Google+" + +#~ msgid "Share on Twitter" +#~ msgstr "Deel op Twitter" + +#~ msgid "Show additional preferences" +#~ msgstr "Toon additionele voorkeuren" + +#~ msgid "Back to feeds" +#~ msgstr "Terug naar de feeds" + +#~ msgid "This will clear your stored authentication information for Twitter. Continue?" +#~ msgstr "Dit zal uw opgeslagen authenticatie informatie voor Twitter verwijderen. Doorgaan?" + +#~ msgid "Updated" +#~ msgstr "Bijgewerkt" + +#~ msgid "Finished: %d articles processed, %d imported, %d feeds created." +#~ msgstr "Klaar: %d artikelen afgehandeld, %d geïmporteerd, %d feeds aangemaakt." + +#~ msgid "Related" +#~ msgstr "Gerelateerd" + +#~ msgid "Notifying %s." +#~ msgstr "Melden aan %s." diff --git a/locale/pl_PL/LC_MESSAGES/messages.mo b/locale/pl_PL/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000..63df234b10 Binary files /dev/null and b/locale/pl_PL/LC_MESSAGES/messages.mo differ diff --git a/locale/pl_PL/LC_MESSAGES/messages.po b/locale/pl_PL/LC_MESSAGES/messages.po new file mode 100644 index 0000000000..1aa9bebd57 --- /dev/null +++ b/locale/pl_PL/LC_MESSAGES/messages.po @@ -0,0 +1,4271 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# mariom <11mariom@gmail.com>, 2011. +# Mirosław Lach , 2012. +msgid "" +msgstr "" +"Project-Id-Version: Tiny Tiny RSS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2013-08-02 08:25+0100\n" +"Last-Translator: Mirosław Lach \n" +"Language-Team: \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: backend.php:73 +msgid "Use default" +msgstr "Użyj domyślnych" + +#: backend.php:74 +msgid "Never purge" +msgstr "Nigdy nie usuwaj" + +#: backend.php:75 +msgid "1 week old" +msgstr "Jednotygodniowe" + +#: backend.php:76 +msgid "2 weeks old" +msgstr "Dwutygodniowe" + +#: backend.php:77 +msgid "1 month old" +msgstr "Miesięczne" + +#: backend.php:78 +msgid "2 months old" +msgstr "Dwumiesięczne" + +#: backend.php:79 +msgid "3 months old" +msgstr "Trzymiesięczne" + +#: backend.php:82 +msgid "Default interval" +msgstr "Domyślna częstotliwość" + +#: backend.php:83 +#: backend.php:93 +msgid "Disable updates" +msgstr "Wyłącz aktualizacje" + +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" +msgstr "Co 15 minut" + +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" +msgstr "Co 30 minut" + +#: backend.php:86 +#: backend.php:96 +msgid "Hourly" +msgstr "Co godzinę" + +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" +msgstr "Co 4 godziny" + +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" +msgstr "Co 12 godzin" + +#: backend.php:89 +#: backend.php:99 +msgid "Daily" +msgstr "Codziennie" + +#: backend.php:90 +#: backend.php:100 +msgid "Weekly" +msgstr "Cotygodniowo" + +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 +msgid "User" +msgstr "Użytkownik" + +#: backend.php:104 +msgid "Power User" +msgstr "Zaawansowany użytkownik" + +#: backend.php:105 +msgid "Administrator" +msgstr "Administrator" + +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "Ten program wymaga poprawnie działającej funkcji XmlHttpRequest. Wygląda na to, iż Twoja przeglądarka jej nie obsługuje." + +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "Ten program, do prawidłowego działania, wymaga włączonej obsługi ciasteczek. Wygląda na to, iż Twoja przeglądarka ich nie obsługuje." + +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "Weryfikacja poprawności mechanizmów wewnętrznych nie powiodła się." + +#: errors.php:17 +msgid "Frontend sanity check failed." +msgstr "Weryfikacja poprawności interfejsu użytkownika nie powiodła się" + +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "Nieprawidłowa wersja schematu bazy danych. <a href='db-updater.php'>Przeprowadź aktualizację</a>." + +#: errors.php:21 +msgid "Request not authorized." +msgstr "Operacja niedozwolona." + +#: errors.php:23 +msgid "No operation to perform." +msgstr "Brak czynności do wykonania." + +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "Nie udało się wyświetlić zawartości kanału. Sprawdź składnię dopasowania etykiety i konfigurację lokalną.0" + +#: errors.php:27 +msgid "Denied. Your access level is insufficient to access this page." +msgstr "Odmowa dostępu. Twój poziom uprawnień jest niewystarczający aby uzyskać dostęp do tej strony." + +#: errors.php:29 +msgid "Configuration check failed" +msgstr "Weryfikacja poprawności konfiguracji nie powiodła się." + +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "Twoja wersja serwera MySQL nie jest obecnie wspierana. Zapoznaj się z zawartością oficjalnej strony aby uzyskać więcej informacji." + +#: errors.php:35 +msgid "SQL escaping test failed, check your database and PHP configuration" +msgstr "Test escape'owania SQL nie powiódł się. Sprawdź konfigurację swojej bazy danych i PHP." + +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "Kanał nie został odnaleziony." + +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "Użytkownik nie został odnaleziony" + +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "Trwa ładowanie, proszę czekać..." + +#: index.php:167 +msgid "Collapse feedlist" +msgstr "Rozwiń listę kanałów" + +#: index.php:170 +msgid "Show articles" +msgstr "Pokaż artykuły" + +#: index.php:173 +msgid "Adaptive" +msgstr "Adaptacyjny" + +#: index.php:174 +msgid "All Articles" +msgstr "Wszystkie artykuły" + +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "Oznaczone gwiazdką" + +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "Opublikowane" + +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 +msgid "Unread" +msgstr "Nieprzeczytane" + +#: index.php:178 +msgid "With Note" +msgstr "Z adnotacją" + +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Ignoruj punktację" + +#: index.php:182 +msgid "Sort articles" +msgstr "Sortuj artykuły" + +#: index.php:185 +msgid "Default" +msgstr "Domyślne" + +#: index.php:186 +msgid "Newest first" +msgstr "Najpierw najnowsze" + +#: index.php:187 +msgid "Oldest first" +msgstr "Najpierw najstarsze" + +#: index.php:188 +msgid "Title" +msgstr "Tytuł" + +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 +msgid "Mark as read" +msgstr "Oznacz jako przeczytane" + +#: index.php:195 +msgid "Older than one day" +msgstr "Starsze niż jeden dzień" + +#: index.php:198 +msgid "Older than one week" +msgstr "Starsze niż jeden tydzień" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "Starsze niż dwa tygodnie" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "Problem w komunikacji z serwerem." + +#: index.php:223 +msgid "Actions..." +msgstr "Działania..." + +#: index.php:225 +msgid "Preferences..." +msgstr "Ustawienia..." + +#: index.php:226 +msgid "Search..." +msgstr "Szukaj..." + +#: index.php:227 +msgid "Feed actions:" +msgstr "Działania dla kanałów:" + +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "Prenumeruj kanał..." + +#: index.php:229 +msgid "Edit this feed..." +msgstr "Edytuj ten kanał..." + +#: index.php:230 +msgid "Rescore feed" +msgstr "Przelicz punktację kanału" + +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "Wypisz się" + +#: index.php:232 +msgid "All feeds:" +msgstr "Wszystkie kanały:" + +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Pokaż/Ukryj przeczytane kanały" + +#: index.php:235 +msgid "Other actions:" +msgstr "Inne działania:" + +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "Przełącz tryb szerokoekranowy" + +#: index.php:237 +msgid "Create label..." +msgstr "Utwórz etykietę..." + +#: index.php:238 +msgid "Create filter..." +msgstr "Utwórz filtr..." + +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "O skrótach klawiszowych" + +#: index.php:248 +msgid "Logout" +msgstr "Wyloguj" + +#: index.php:254 +msgid "Updates are available from Git." +msgstr "" + +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "Ustawienia" + +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "Skróty klawiszowe" + +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Wyjdź z ustawień" + +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Kanały" + +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "Filtry" + +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Etykiety" + +#: prefs.php:133 +msgid "Users" +msgstr "Użytkowników" + +#: prefs.php:136 +msgid "System" +msgstr "Systemowe" + +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "Utwórz nowe konto" + +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "Rejestracja nowych użytkowników został zablokowana przez administratora." + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Wróć do Tiny Tiny RSS" + +#: register.php:218 +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 "Twoje tymczasowe hasło zostanie wysłane na podany adres email. Konta, na które nikt nie zalogował się, są usuwane automatycznie 24 godziny po wysłaniu hasła tymczasowego." + +#: register.php:224 +msgid "Desired login:" +msgstr "Pożądana nazwa użytkownika:" + +#: register.php:227 +msgid "Check availability" +msgstr "Sprawdź dostępność" + +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "Email:" + +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "Ile wynosi dwa plus dwa:" + +#: register.php:235 +msgid "Submit registration" +msgstr "Zarejestruj się" + +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "Wprowadzone informacje są niekompletne." + +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "Niestety, ta nazwa użytkownika jest już zajęta." + +#: register.php:287 +msgid "Registration failed." +msgstr "Rejestracja nie powiodła się." + +#: register.php:334 +msgid "Account created successfully." +msgstr "Konto zostało założone." + +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "Możliwość rejestracji jest obecnie wyłączona." + +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "Skrypt aktualizacji danych Tiny Tiny RSS." + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "Bez kategorii" + +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d zarchiwizowany artykuł" +msgstr[1] "%d zarchiwizowane artykuły" +msgstr[2] "%d zarchiwizowanych artykułów" + +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "Nie znaleziono kanałów." + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "Nawigacja" + +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "Przejdź do następnego kanału" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "Otwórz poprzedni kanał" + +#: include/functions2.php:55 +msgid "Open next article" +msgstr "Otwórz następny artykuł" + +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "Otwórz poprzedni artykuł" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "Otwórz następny artykuł (nie przewijaj długich artykułów)" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "Otwórz poprzeni artykuł (nie przewijaj długich artykułów)" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "Otwórz następny artykuł (nie rozszerzaj lub oznaczaj jako przeczytane)" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "Otwórz poprzeni artykuł (nie rozszerzaj lub oznaczaj jako przeczytane)" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Otwórz okno wyszukiwania" + +#: include/functions2.php:62 +msgid "Article" +msgstr "Artykuł" + +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "Przełącz oznaczenie gwiazdką" + +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "Przełącz flagę publikacji" + +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "Przełącz flagę \"przeczytano\"" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Edytuj tagi" + +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "Odrzuć wybrane" + +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "Odrzuć przeczytane" + +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "Otwórz w nowym oknie" + +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "Oznacz poniższe jako przeczytane" + +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "Oznacz powyższe jako przeczytane" + +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "Przewiń w dół" + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "Przewiń do góry" + +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "Wybierz artykuł pod kursorem" + +#: include/functions2.php:75 +msgid "Email article" +msgstr "Prześlij artykuł emailem" + +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "Zamknij/zwiń artykuł" + +#: include/functions2.php:77 +msgid "Toggle article expansion (combined mode)" +msgstr "Przełącz rozszerzanie artykułów (tryb scalony)" + +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "Przełącza flagę \"wbuduj oryginalny artykuł\"" + +#: include/functions2.php:80 +msgid "Article selection" +msgstr "Wybór artykułów" + +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "Wybierz wszystkie artykuły" + +#: include/functions2.php:82 +msgid "Select unread" +msgstr "Wybierz nieprzeczytane" + +#: include/functions2.php:83 +msgid "Select starred" +msgstr "Wybierz oznaczone gwiazdką" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "Wybierz opublikowane" + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "Odwróć zaznaczenie" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "Odznacz wszystko" + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Kanał" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "Odśwież bieżący kanał" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "Pokaż/Ukryj przeczytane kanały" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "Prenumeruj kanał" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Edytuj kanał" + +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "Odwróć kolejność nagłówków" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "Testuj aktualizację kanałów" + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "Oznacz wszystkie kanały jako przeczytane" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "Zwiń/rozwiń bieżącą kategorię" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "Przełącz tryb scalony" + +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "Przełącz automatyczne rozszerzanie artykułów w trybie scalonym" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "Idź do" + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "Wszystkie artykuły" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "Świeży" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Chmura tagów" + +#: include/functions2.php:106 +msgid "Other" +msgstr "Inne" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "Utwórz etykietę" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "Utwórz filtr" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "Zwin/rozwiń pasek boczny" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "Otwórz okno pomocy" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Wyniki wyszukiwania: %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +#, fuzzy +msgid "comment" +msgid_plural "comments" +msgstr[0] "Komentarze?" +msgstr[1] "Komentarze?" +msgstr[2] "Komentarze?" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +#, fuzzy +msgid "comments" +msgstr "Komentarze?" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "brak tagów" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "Edytuj tagi dla tego artykułu" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "Oryginał pochodzi z:" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "Adres kanału" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "Zamknij to okno" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(edytuj notatkę)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "nieznany typ" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "Załączniki" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "Specjalne" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Wszystkie kanały" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Artykuły oznaczone gwiazdką" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Opublikowane artykuły" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "Świeże artykuły" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "Zarchiwizowane artykuły" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "Ostatnio czytane" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "Nazwa użytkownika:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "Hasło:" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "Zapomniałem hasła" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "Profil:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "Domyślny profil" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "Wersja lekka" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "Nie wyświetla obrazków w artykułach, zmniejsza częstotliwość odświeżania." + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "Pamiętaj mnie" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "Zaloguj" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "Nie powiodła się weryfikacja sesji (nieprawidłowy adres IP)" + +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "Nie powiodła się weryfikacja sesji (zmieniona wersja schematu)" + +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "Nie powiodła się weryfikacja sesji (nie znaleziono użytkownika)" + +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "Nie powiodła się weryfikacja sesji (zmienione hasło)" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "Inne wskazówki dotyczące interfejsu znajdziesz na wiki Tiny Tiny RSS." + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Skróty klawiszowe" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "Shift" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Temat pomocy nie został znaleziony." + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "Udostępnij za pomocą Tiny Tiny RSS" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Tytuł:" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "Adres:" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "Treść:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "Etykiety:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "Udostępniany artykuł będzie wyświetlany w Publikowanych kanałach." + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "Udostępnij" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "Anuluj" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "Nie zalogowany" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Nieprawidłowa nazwa użytkownika lub hasło" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "Prenumerujesz już kanał %s." + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "Zaprenumerowano kanał %s." + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "Nie udało się zaprenumerować %s." + +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "Nie znaleziono kanałów w %s." + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "Znaleziono wiele adresów kanałów." + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "Nie udaÅ‚o siÄ™ zaprenumerować %s. Nie udaÅ‚o siÄ™ pobrać adresu kanaÅ‚u." + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "Prenumeruj wybrany kanaÅ‚" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Edytuj opcje prenumeraty" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "Odzyskiwanie hasÅ‚a" + +#: classes/handler/public.php:805 +#, fuzzy +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "BÄ™dziesz musiaÅ‚ podać prawidÅ‚owÄ… nazwÄ™ konta oraz adres email. Nowe hasÅ‚o zostanie przesÅ‚ane na Twój adres email." + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "Resetuj hasÅ‚o" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "Niektóre z wymaganych parametrów sÄ… nieprawidÅ‚owe lub nie zostaÅ‚y wprowadzone." + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "Cofnij" + +#: classes/handler/public.php:878 +#, fuzzy +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] Informacja o zmianie hasÅ‚a" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "Przykro mi, podana kombinacja nazwy użytkownika i adresu email nie zostaÅ‚a oznaleziona." + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "Twój poziom dostÄ™pu jest niewystarczajÄ…cy do uruchomienia tego skryptu." + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "Aktualizator bazy danych" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Przeprowadź aktualizacje" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "Zobacz jako kanaÅ‚ RSS" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "WyÅ›wietl jako RSS" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "Ostatnia aktualizacja: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "Wszystko" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Odwróć" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Nic" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "WiÄ™cej..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Przełącz zaznaczenie:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Zaznaczenie:" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "OceÅ„" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "Archiwizuj" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "Cofnij" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "UsuÅ„" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "Przekaż za pomocÄ… emaila" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "KanaÅ‚:" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "KanaÅ‚ nie zostaÅ‚ odnaleziony." + +#: classes/feeds.php:268 +msgid "Never" +msgstr "Nigdy" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "Zaimportowane do %s" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +#, fuzzy +msgid "mark feed as read" +msgstr "Oznacz kanaÅ‚ jako przeczytany" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "ZwiÅ„ artykuÅ‚" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "Nie znaleziono nieprzeczytanych artykułów." + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "Nie znaleziono uaktualnionych artykułów." + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "Nie znaleziono artykułów oznaczonych gwiazdkÄ…." + +#: classes/feeds.php:778 +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 "Nie znaleziono artykułów do wyÅ›wietlenia. Możesz rÄ™cznie przypisać artykuÅ‚y do etykiet z menu kontekstowego artykuÅ‚u (ma zastosowanie do wszystkich zaznaczonych artykułów) lub użyć filtru." + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "Nie znaleziono artykułów." + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "KanaÅ‚y ostatnio uaktualnione o %s" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "WystÄ…piÅ‚y błędy aktualizacji niektórych kanałów (kliknij aby zobaczyć szczegóły)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "Nie wybrano kanaÅ‚u." + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "Adres kanaÅ‚u lub strony" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "Umieść w kategorii:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "DostÄ™pne kanaÅ‚y" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "Uwierzytelnianie" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "Nazwa użytkownika" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "HasÅ‚o" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Ten kanaÅ‚ wymaga uwierzytelniania." + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "Prenumeruj" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "WiÄ™cej kanałów" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "Szukaj" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "Popularne kanaÅ‚y" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "Archiwum kanaÅ‚u" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "limit:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "UsuÅ„" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "Szukaj napisu" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +#, fuzzy +msgid "Search syntax" +msgstr "Szukaj" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "ArtykuÅ‚ nie zostaÅ‚ znaleziony." + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "Tagi dla tego artykuÅ‚u (oddzielone przecinkami):" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Zapisz" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "NarzÄ™dzie OPML" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "Importowanie OPML..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "Wróć do ustawieÅ„" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "DodajÄ™ kanaÅ‚: %s" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "Duplikat kanaÅ‚u: %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "DodajÄ™ etykietÄ™ %s" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "Duplikat etykiety: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "Ustawiam wartość parametru %s na %s" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "DodajÄ™ filtr..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "Przetwarzam kategoriÄ™: %s" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "PrzesyÅ‚anie pliku zakoÅ„czone błędem numer %d" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "Nie udaÅ‚o siÄ™ przenieść przesÅ‚anego pliku." + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "Błąd: proszÄ™ wgrać plik OPML." + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "Błąd: nie udaÅ‚o siÄ™ przenieść pliku OPML." + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Błąd przetwarzania dokumentu." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "Twój poziom uprawnieÅ„ jest niewystarczajÄ…cy aby otworzyć tÄ™ zakÅ‚adkÄ™." + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "Dziennik błędów" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "OdÅ›wież" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "Wyczyść dziennik" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Błąd" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "Nazwa pliku" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Wiadomość" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Data" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Użytkownik nie zostaÅ‚ odnaleziony" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "Zarejestrowany" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Ostatnio zalogowany" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "Ilość prenumerowanych kanałów" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Prenumerowane kanaÅ‚y" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Poziom dostÄ™pu: " + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Opcje" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "Dodano użytkownika %s używajÄ…cego hasÅ‚a %s" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "Nie udaÅ‚o siÄ™ utworzyć użytkownika %s" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "Użytkownik %s już istnieje." + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "Zmieniono hasÅ‚o użytkownika %s na %s" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "WysyÅ‚am nowe hasÅ‚o dla użytkownika %s na adres %s" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] Informacja o zmianie hasÅ‚a" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "Wybierz" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Utwórz użytkownika" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "Szczegóły" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Edytuj" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Poziom dostÄ™pu" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "Ostatnie logowanie" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Kliknij aby edytować" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "Nie zdefiniowano żadnego użytkownika." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "Nie odnaleziono pasujÄ…cego użytkownika." + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Zaznacz aby uaktywnić pole" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "(%d kanaÅ‚)" +msgstr[1] "(%d kanaÅ‚y)" +msgstr[2] "(%d kanałów)" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "TytuÅ‚ kanaÅ‚u" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "Aktualizuj" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Czyszczenie artykułów:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "Wskazówka: musisz wypeÅ‚nić dane logowania jeżeli Twój kanaÅ‚ wymaga uwierzytelniania. Nie dotyczy to kanałów z Twittera." + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "Ukryj przed umieszczeniem w Popularnych kanaÅ‚ach" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "Umieść w przeglÄ…dzie emailowym" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Zawsze wyÅ›wietlaj załączniki graficzne" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "Nie osadzaj obrazków" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Przechowuj obrazki lokalnie" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "Oznacz zaktualizowane artykuÅ‚y jako nieprzeczytane" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "Ikona" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "ZamieÅ„" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "Odnów prenumeratÄ™ aktualizacji typu PUSH" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "Resetuje status prenumerat PubSubHubbub dla kanałów obsÅ‚ugujÄ…cych PUSH." + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Zrobione." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "KanaÅ‚y z błędami" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "Nieaktywne kanaÅ‚y" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "Edytuj wybrane kanaÅ‚y" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "Zresetuj porzÄ…dek sortowania" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "Prenumerata wsadowa" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "Kategorie" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "Dodaj kategoriÄ™" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "UsuÅ„ wybrane" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "WiÄ™cej dziaÅ‚aÅ„..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "Czyszczenie rÄ™czne" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "Wyczyść dane kanaÅ‚u" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Przywróć artykuÅ‚y" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "KorzystajÄ…c z OPML możesz eksportować i importować kanaÅ‚y, filtry, etykiety i ustawienia Tiny Tiny RSS." + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "Tylko główne ustawienia profilu mogÄ… być migrowane korzystajÄ…c z OPML." + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "Importuj mój OPML" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "Nazwa pliku:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "Załącz ustawienia" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "Eksportuj OPML" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "Twój OPML może zostać opublikowany i być prenumerowany przez każdego kto zna poniższy adres." + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "Opublikowany OPML nie zawiera ustawieÅ„ Twojego Tiny Tiny RSS, kanałów wymagajÄ…cych uwierzytelniania i kanałów ukrytych przed umieszczeniem w Popularnych kanaÅ‚ach." + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "Publiczny adres OPML" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "WyÅ›wietl opublikowany adres OPML" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Integracja z Firefoxem" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "Tiny Tiny RSS może być ustawiona jako domyÅ›lny czytnik kanałów w Firefoxie poprzez klikniÄ™cie odnoÅ›nika poniżej." + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "Kliknij tutaj aby ustawić tÄ™ stronÄ™ jako czytnik kanałów." + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "Opublikowane i udostÄ™pnione artykuÅ‚y / Wygenerowane kanaÅ‚y" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "Opublikowane artykuÅ‚y sÄ… eksportowane jako publiczny kanaÅ‚ RSS i mogÄ… być prenumerowane przez każdego kto zna adres podany poniżej." + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "WyÅ›wietl adres" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "Wyczyść wszystkie wygenerowane adresy" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "Niniejsze kanaÅ‚y nie zostaÅ‚y uaktualnione przez 3 miesiÄ…ce (najstarsze pierwsze):" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "Kliknij aby edytować kanaÅ‚" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "ZakoÅ„cz prenumeratÄ™ wybranych kanałów:" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "Wpisz jeden prawidÅ‚owy adres kanaÅ‚u RSS w każdej linii (nie jest przeprowadzana automatyczna detekcja adresu kanaÅ‚u)" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "KanaÅ‚y do prenumeraty. Każdy w osobnej linii" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "KanaÅ‚y wymagajÄ… uwierzytelniania." + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "ArtykuÅ‚y pasujÄ…ce do filtra:" + +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "Nie znaleziono żadnych ostatnich artykułów pasujÄ…cych do filtra." + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(odwróć)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "%s na %s w %s %s" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Opis" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "Dopasuj" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "Dodaj" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "Zastosuj dziaÅ‚ania" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Włączone" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "Pasuje do dowolnej reguÅ‚y" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "Odwróć dopasowanie" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "Testuj" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "Połącz" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Utwórz" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "Odwróć dopasowywanie wyrażeniami regularnymi" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "pole" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "w" + +#: classes/pref/filters.php:947 +#, fuzzy +msgid "Wiki: Filters" +msgstr "Filtry" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "Zapisz regułę" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "Dodaj regułę" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Wykonaj operacjÄ™" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "z parametrami:" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "Zapisz dziaÅ‚anie" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "Dodaj dziaÅ‚ania" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[Brak opisu]" + +#: classes/pref/filters.php:1044 +#, fuzzy, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "Dodaj regułę" +msgstr[1] "Dodaj regułę" +msgstr[2] "Dodaj regułę" + +#: classes/pref/filters.php:1059 +#, fuzzy, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "Dodaj dziaÅ‚ania" +msgstr[1] "Dodaj dziaÅ‚ania" +msgstr[2] "Dodaj dziaÅ‚ania" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "Kolory" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "Pierwszoplanowy:" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "TÅ‚o:" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "Utworzono etykietÄ™ %s" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Wyczyść kolory" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Ogólne" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Interfejs" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Zaawansowane" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "WyciÄ…g" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "Zezwalaj na powielanie artykułów" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Czarna lista tagów" + +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "Podczas automatycznego wykrywania tagów wymienione obok tagi nie zostanÄ… zastosowane (kolejne tagi oddzielaj przecinkiem)." + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "Automatycznie oznacz artykuÅ‚y jako przeczytane" + +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "Opcja uruchamia automatyczne oznaczanie artykułów jako przeczytanych podczas przewijania listy artykułów," + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "Automatycznie powiÄ™ksz okno artykuÅ‚u w trybie zintegrowanym" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "Tryb zintegrowany widoku kanaÅ‚u" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "WyÅ›wietl rozwiniÄ™tÄ… listÄ™ artykułów z kanaÅ‚u zamiast osobnych okien dla nagłówków i treÅ›ci" + +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "Potwierdź oznaczanie kanaÅ‚u jako przeczytanego" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "Ilość artykułów do wyÅ›wietlenia za jednym razem" + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "DomyÅ›lna czÄ™stotliwość aktualizacji kanałów" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "Najkrótszy odstÄ™p czasu co który kanaÅ‚ bÄ™dzie sprawdzany w poszukiwaniu zmian, niezależnie od metody aktualizacji" + +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "Oznacz jako przeczytane artykuÅ‚y przesÅ‚ane emailem jako przeglÄ…d" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "Włącz przeglÄ…d artykułów wysyÅ‚any emailem" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Opcja powoduje włączenie wysyÅ‚ania na Twój adres email codziennych podsumowaÅ„ zawierajÄ…cych nagłówki nowych (i nieprzeczytanych) artykułów." + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "Spróbuj wysÅ‚ać podsumowanie w pobliżu wskazanej godziny" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "Używa strefy UTC" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "Włącz dostÄ™p do API" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "Zezwój zewnÄ™trznym klientom/aplikacjom korzystać z tego konta przez API" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Włącz kategorie kanałów" + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "Sortuj kanaÅ‚y wedÅ‚ug liczby nieprzeczytanych artykułów" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Przez ile czasu uznawać artykuÅ‚ za Å›wieży (w godzinach)" + +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "Ukryj kanaÅ‚y nie zawierajÄ…ce nieprzeczytanych artykułów" + +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "Pokaż kanaÅ‚y specjalne gdy włączone jest ukrywanie przeczytanych kanałów." + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "DÅ‚ugi format daty" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "SkÅ‚adnia jest identyczna ze skÅ‚adniÄ… PHPowej funkcji date()." + +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "Przejdź do nastÄ™pnego kanaÅ‚u po zakoÅ„czeniu lektury ostatniego artykuÅ‚u" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Automatycznie otwórz kolejny kanaÅ‚ z nieprzeczytanymi artykuÅ‚ami po oznaczeniu poprzedniego jako przeczytany" + +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "UsuÅ„ artykuÅ‚y po X dniach (0 - wyłącza)" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "Czyszczenie nieprzeczytanych artykułów" + +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "Odwrotny porzÄ…dek nagłówków (najstarsze pierwsze)" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "Krótki format daty" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "WyÅ›wietl podglÄ…d treÅ›ci w widoku nagłówków" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "Sortuj nagłówki wedÅ‚ug daty kanaÅ‚u" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "Użyj do sortowania nagłówków daty artykuÅ‚u z kanaÅ‚u zamiast lokalnej daty zaimportowania artykuÅ‚u." + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "Logowanie z wykorzystaniem certyfikatu SSL" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Kliknij aby zarejestrować swój certyfikat klienta SSL w tt-rss" + +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "Nie osadzaj obrazków w artykuÅ‚ach" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "UsuÅ„ niebezpieczne tagi z artykułów" + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Podczas czytania artykuÅ‚u usuÅ„ wszystkie poza najpopularniejszymi znaczniki HTML." + +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "Dostosuj arkusz styli" + +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "Dostosuj arkusz styli CSS wedle swojego uznania" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "Strefa czasowa" + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "Grupuj nagłówki w wirtualnych kanaÅ‚ach" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "KanaÅ‚y specjalne, etykiety i kategorie sÄ… grupowane wedÅ‚ug źródÅ‚owego kanaÅ‚u" + +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "JÄ™zyk" + +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "Styl" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "Wybierz jeden z dostÄ™pnych styli CSS" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "Konfiguracja zostaÅ‚a zapisana." + +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "Dwoje dane osobiste zostaÅ‚y zapisane." + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "Twoje ustawienie zostaÅ‚y zresetowane do wartoÅ›ci domyÅ›lnych." + +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "Dane osobiste / Uwierzytelnianie" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "Informacje osobiste" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "Nazwa" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "E-mail" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Poziom dostÄ™pu" + +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Zapisz dane" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "Używasz domyÅ›lnego hasÅ‚a, zmieÅ„ je proszÄ™." + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "Zmiana Twojego bieżącego hasÅ‚a spowoduje wyłączenie mechanizmu OTP." + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Stare hasÅ‚o" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Nowe hasÅ‚o" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Potwierdź hasÅ‚o" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "ZmieÅ„ hasÅ‚o" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "HasÅ‚o jednorazowe / Uwierzytelnianie" + +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "HasÅ‚a jednorazowe sÄ… obecnie włączone. Wprowadź swoje obecne hasÅ‚o aby je wyłączyć." + +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "Wprowadź hasÅ‚o" + +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "Wyłącz hasÅ‚a jednorazowe" + +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "Potrzebujesz wÅ‚aÅ›ciwego moduÅ‚u uwierzytelniajÄ…cego aby użyć tej funkcji. Zmiana hasÅ‚a spowoduje automatyczne wyłączenie OTP." + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "Zeskanuj poniższy kod przy użyciu aplikacji uwierzytelniajÄ…cej:" + +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "Wprowadź wygenerowane hasÅ‚o jednorazowe:" + +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "Włącz hasÅ‚a jednorazowe" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "Funkcje dostarczane przez PHP GD sÄ… niezbÄ™dne do uruchomienia OTP." + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "Niektóre ustawienia dostÄ™pne sÄ… jedynie dla domyÅ›lnego profilu." + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "Dostosuj" + +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "Zarejestruj" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "Wyczyść" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "Czas serwera to: %s (UTC)" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Zapisz konfiguracjÄ™" + +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "Zapisz i wyjdź z ustawieÅ„" + +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "ZarzÄ…dzaj profilami" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "Przywróć domyÅ›lne" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "Wtyczki" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "Musisz przeÅ‚adować Tiny Tiny RSS aby zastosować zmiany we wtyczkach." + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "Pobierz wiÄ™cej wtyczek z forum lub wiki tt-rss.org." + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "Wtyczki systemowe" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "Wtyczka" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "Opis" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "Wersja" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "Autor" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "wiÄ™cej informacji" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "Wyczyść dane" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "Wtyczki użytkowników" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "Włącz wybrane wtyczki" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "NieprawidÅ‚owe hasÅ‚o jednorazowe" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "NieprawidÅ‚owe hasÅ‚o" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "Możesz nadpisać ustawienia kolorów, czcionek i ukÅ‚adu wybranego stylu przy użyciu wÅ‚asnych deklaracji CSS. Ten plik może posÅ‚użyć jako przykÅ‚ad." + +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "Utwórz profil" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(aktywny)" + +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "UsuÅ„ wybrane profile" + +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "Aktywuj profil" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "Jeżeli posiadasz zaimportowane etykiety i/lub filtry, aby zobaczyć nowe dane możesz musieć przeÅ‚adować ustawienia." + +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "Twój publiczny adres OPML to:" + +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "Wygeneruj nowy adres" + +#: 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 "W konfiguracji wybrano wykorzystywanie zewnÄ™trznego procesu aktualizacji, jednak proces ten nie dziaÅ‚a co powoduje iż kanaÅ‚y nie sÄ… aktualizowane. ProszÄ™ uruchomić zewnÄ™trzny proces aktualizacji lub skontaktować siÄ™ z wÅ‚aÅ›cicielem tej instalacji." + +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "Ostatnia aktualizacja:" + +#: 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 "Aktualizacja kanaÅ‚u z wykorzystaniem zewnÄ™trznego procesu aktualizacji trwa zbyt dÅ‚ugo. Może to wskazywać na jego awariÄ™/unieruchomienie (crash) lub zawieszenie. Sprawdź poprawność dziaÅ‚ania zewnÄ™trznego procesu aktualizacji lub skontaktuj siÄ™ z wÅ‚aÅ›cicielem tej instalacji." + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "Możesz obejrzeć ten kanaÅ‚ jako RSS korzystajÄ…c z adresu:" + +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" + +#: plugins/af_psql_trgm/init.php:112 +#, fuzzy +msgid "Show related articles" +msgstr "UdostÄ™pnione artykuÅ‚y" + +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +#, fuzzy +msgid "Mark similar articles as read" +msgstr "Oznaczyć wszystkie artykuÅ‚y jako przeczytane?" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +#, fuzzy +msgid "Global settings" +msgstr "Załącz ustawienia" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "Włącz kategorie kanałów" + +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" + +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" + +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "" + +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "" + +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "Edytuj notatkÄ™ do artykuÅ‚u" + +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "Nie przesÅ‚ano żadnego pliku." + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "ZakoÅ„czone. Zaimportowano %d z %d artykułów." + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "Dokument ma nieprawidÅ‚owy format." + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "Zaimportuj oznaczone gwiazdkÄ… lub udostÄ™pnione elementy z Google Reader" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "Wklej swój plik starred.json lub shared.json do poniższego formularza." + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "Importuj elementy Oznaczone gwiazdkÄ…" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[Przekazane]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "Wiele artykułów" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "Kliknij odnoÅ›nik aby uruchomić Twój program pocztowy:" + +#: plugins/mailto/init.php:75 +msgid "Forward selected article(s) by email." +msgstr "PrzeÅ›lij artykuÅ‚ emailem." + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "PowinieneÅ› mieć jeszcze możliwość edycji wiamoÅ›ci przed wysÅ‚aniem w poziomu programu pocztowego." + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "Zamknij to okno" + +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "Import i eksport" + +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "Możesz eksportować i importować artykuÅ‚y oznaczone gwiazdkÄ… oraz zarchiwizowane dla zachowania lub na czas migracji pomiÄ™dzy instalacjami tej samej wersji tt-rss." + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "Eksportuj moje dane" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Importuj" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "Nieudany import: nieprawidÅ‚owa wersja schematu." + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "Nieudany import: nierozpoznany typ dokumentu." + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "ZakoÅ„czono: " + +#: plugins/import_export/init.php:388 +#, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "%d artykuÅ‚ przetworzony." +msgstr[1] "%d artykuÅ‚y przetworzone." +msgstr[2] "%d artykułów przetworzonych." + +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "%d zaimportowany." +msgstr[1] "%d zaimportowane." +msgstr[2] "%d zaimportowanych." + +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "%d kanaÅ‚ utworzony." +msgstr[1] "%d kanaÅ‚y utworzone." +msgstr[2] "%d kanałów utworzonych." + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "Nie udaÅ‚o siÄ™ wczytać dokumentu XML." + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "Przygotuj dane" + +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "NiewÅ‚aÅ›ciwe w pracy (wciÅ›nij aby przełączyć)" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "Wtyczka \"NiewÅ‚aÅ›ciwe w pracy\"" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "Znaczniki uznawane za niewÅ‚aÅ›ciwe w pracy (oddzielone przecinkami)" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "Konfiguracja zostaÅ‚a zapisana." + +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "Wprowadź hasÅ‚o jednorazowe:" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "HasÅ‚o zostaÅ‚o zmienione." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "NieprawidÅ‚owe stare hasÅ‚o." + +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "Zamknij artykuÅ‚" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "" + +#: plugins/mail/init.php:34 +#, fuzzy +msgid "Mail plugin" +msgstr "Wtyczki użytkowników" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "" + +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "Do:" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "Temat:" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "WyÅ›lij email" + +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "Połączone instancje" + +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" +msgstr "Instancja" + +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "Adres instancji:" + +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "Klucz dostÄ™pu:" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "Klucz dostÄ™pu" + +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "Użyj jednego klucza dostÄ™pu dla obydwóch połączonych instancji." + +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "Wygeneruj nowy klucz" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "Połącz instalacjÄ™" + +#: 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 "Możesz podłączyć inne instalacje Tiny Tiny RSS do bieżącej aby współdzielić informacje o Popularnych kanaÅ‚ach. Połącz z tÄ… instancjÄ… Tiny Tiny RSS używajÄ…c tego adresu:" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "Ostatnio połączony" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "Status" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "Zapisane kanaÅ‚y" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "Utwórz łącze" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "Konfiguracja zostaÅ‚a zapisana." + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "Sprawdź dostÄ™pność" + +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "Przewijanie treÅ›ci artykuÅ‚u" + +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "UdostÄ™pnione artykuÅ‚y" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +#, fuzzy +msgid "Statistics" +msgstr "Status" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "ArtykuÅ‚y oznaczone gwiazdkÄ…" + +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "Wyczyść dane" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, fuzzy, php-format +msgid "Currently stored as: %s" +msgstr "Czas serwera to: %s (UTC)" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "SkryptozakÅ‚adki" + +#: 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 "PrzeciÄ…gnij poniższy odnoÅ›nik na pasek zakÅ‚adek Twojej przeglÄ…darki, otwórz kanaÅ‚ który Cie interesuje w przeglÄ…darce i kliknij na utworzonym odnoÅ›niku aby zaprenumerować kanaÅ‚." + +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "Prenumerować %s w Tiny Tiny RSS?" + +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Prenumeruj w Tiny Tiny RSS" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "Użyj tej SkryptozakÅ‚adki aby publikować dowolne strony używajÄ…c Tiny Tiny RSS" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "Możesz wyłączyć wszystkie unikalne adresy prowadzÄ…ce do udostÄ™pnionych artykułów." + +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "ZakoÅ„cz udostÄ™pnianie wszystkich artykułów" + +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "UdostÄ™pnij adres" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "Możesz udostÄ™pnić ten artykuÅ‚ korzystajÄ…c z tego unikalnego adresu:" + +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "ZakoÅ„cz udostÄ™pnianie artykuÅ‚u" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "Błąd zostanie zapisany we wskazanym dzienniku systemu." + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "" + +#: js/functions.js:93 +#, fuzzy +msgid "Close" +msgstr "zamknij" + +#: js/functions.js:104 +#, fuzzy +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "Czy jesteÅ› pewien, że chcesz zgÅ‚osić ten wyjÄ…tek do tt-rss.org? ZgÅ‚oszenie bÄ™dzie zawieraÅ‚o informacje o Twojej przeglÄ…darce. Twój adres IP zostanie zapisany w naszej bazie danych." + +#: js/functions.js:224 +msgid "Click to close" +msgstr "Kliknij aby zamknąć" + +#: js/functions.js:1051 +msgid "Edit action" +msgstr "Edytuj dziaÅ‚anie" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "Utwórz filtr" + +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "Zresetować prenumeraty? Tiny Tiny RSS spróbuje zaprenumerować powiadomienia przy nastÄ™pnej aktualizacji." + +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "Zresetowano prenumerate." + +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "ZakoÅ„czyć prenumeratÄ™ %s?" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "Usuwanie kanaÅ‚u..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "Wprowadź tytuÅ‚ kategorii:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "WygenerowaÅ„ nowy adres do dzielenia siÄ™ tym kanaÅ‚em?" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Próbuje zmienić adres..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "Nie wybrano żadnego kanaÅ‚u." + +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "Usunąć wybrane kanaÅ‚y z archiwum? KanaÅ‚y z zachowanymi artykuÅ‚ami nie zostanÄ… usuniÄ™te." + +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "KanaÅ‚y z błędami aktualizacji" + +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "Usunąć wybrane kanaÅ‚y?" + +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "Usuwanie wybranych kanałów..." + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "Edytuj kategoriÄ™" + +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "UsuÅ„ kategoriÄ™" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "Odwróć" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "Wprowadź nazwÄ™ użytkownika:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "Nie stworzono użytkownika: nie wprowadzono nazwy użytkownika." + +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "Dodawanie użytkownika..." + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Edytor użytkowników" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "Zapisywanie danych..." + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "Edytuj filtr" + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "Usunąć filtr?" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "Usuwanie filtra..." + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "Usunąć wybrane etykiety?" + +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "Usuwanie wybranych etykiet..." + +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "Nie wybrano żadnych etykiet." + +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "Usunąć wybranych użytkowników? DomyÅ›lny administrator ani Twoje konto nie zostanÄ… skasowane." + +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "Usuwanie wybranych użytkowników..." + +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "Nie wybrano użytkowników." + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "Usunąć wybrane filtry?" + +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "Usuwanie wybranych filtrów..." + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "Å»adne filtry nie zostaÅ‚y wybrane." + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "ZakoÅ„czyć prenumeratÄ™ wybranych kanałów?" + +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "KoÅ„czenie prenumeraty wybranych kanałów..." + +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "Wybierz tylko jeden kanaÅ‚." + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "Usunąć z tego kanaÅ‚u wszystkie artykuÅ‚y, które nie zostaÅ‚y oznaczone gwiazdkÄ…?" + +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "Czyszczenie wybranych kanałów..." + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "Ile dni przechowywać artykuÅ‚y (0 - użyj wartoÅ›ci domyÅ›lnej)?" + +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "Opróżnianie wybranych kanałów..." + +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "Wybierz tylko jednego użytkownika." + +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "Zresetować hasÅ‚o wybranego użytkownika?" + +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "Resetowanie hasÅ‚a wybranego użytkownika..." + +#: js/prefs.js:565 +msgid "User details" +msgstr "Szczegóły użytkownika" + +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "Wybierz tylko jeden filtr." + +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "Połączyć wybrane filtry?" + +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "Scalanie filtrów..." + +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "Edytuj wiele kanałów" + +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "Zapisać zmiany w wybranych kanaÅ‚ach?" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "Import OPML" + +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "Najpierw wybierz plik OPML." + +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "Trwa import, proszÄ™ czekać..." + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "Przywrócić ustawienia domyÅ›lne?" + +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "Prenumerowanie kanałów..." + +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "WyczyÅ›cić zapamiÄ™tane dane tej wtyczki?" + +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "Usunąć wszystkie wiadomoÅ›ci z dziennika błędów?" + +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "Oznaczyć wszystkie artykuÅ‚y jako przeczytane?" + +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "Oznaczam wszystkie kanaÅ‚y jako przeczytane..." + +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "Włącz najpierw wtyczkÄ™ obsÅ‚ugi poczty (mail)." + +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "Nie możesz edytować kanaÅ‚u tego typu." + +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "Włącz najpierw wtyczkÄ™ osadzania oryginalnej wiadomoÅ›ci (embed_original)." + +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "" + +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "Nie możesz przeliczyć punktacji kanaÅ‚u tego rodzaju." + +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "Wybierz najpierw jakiÅ› kanaÅ‚." + +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "Przeliczyć punktacjÄ™ artykułów w %s?" + +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "Przeliczanie punktacji kanałów..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "Nie wybrano żadnych artykułów" + +#: js/viewfeed.js:1018 +#, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "Usunąć %d zaznaczony artykuÅ‚ z %s?" +msgstr[1] "Usunąć %d zaznaczone artykuÅ‚y z %s?" +msgstr[2] "Usunąć %d zaznaczonych artykułów z %s?" + +#: js/viewfeed.js:1020 +#, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "Usunąć %d zaznaczony artykuÅ‚?" +msgstr[1] "Usunąć %d zaznaczone artykuÅ‚y?" +msgstr[2] "Usunąć %d zaznaczonych artykułów?" + +#: js/viewfeed.js:1062 +#, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "Zarchiwizować %d zaznaczony artykuÅ‚ z %s?" +msgstr[1] "Zarchiwizować %d zaznaczone artykuÅ‚y z %s?" +msgstr[2] "Zarchiwizować %d zaznaczonych artykułów z %s?" + +#: js/viewfeed.js:1065 +#, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "Przywrócić %d zarchiwizowany artykuÅ‚?" +msgstr[1] "Przywrócić %d zarchiwizowane artykuÅ‚y?" +msgstr[2] "Przywrócić %d zarchiwizowanych artykułów?" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "PamiÄ™taj, iż artykuÅ‚y nie oznaczone gwiazdkÄ… mogÄ… zostać usuniÄ™te podczas nastÄ™pnej aktualizacji." + +#: js/viewfeed.js:1112 +#, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "Oznaczyć %d wybrany artykuÅ‚ z %s jako przeczytany?" +msgstr[1] "Oznaczyć %d wybrane artykuÅ‚y z %s jako przeczytane?" +msgstr[2] "Oznaczyć %d wybranych artykułów z %s jako przeczytane?" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "Edytuj tagi artykuÅ‚u" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "ZapisujÄ™ tagi artykuÅ‚u..." + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +#, fuzzy +msgid "Click to open next unread feed." +msgstr "Kliknij aby edytować kanaÅ‚" + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "Otwórz oryginalny artykuÅ‚" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Przypisz etykietÄ™" + +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "UsuÅ„ etykietÄ™" + +#: js/viewfeed.js:2159 +#, fuzzy +msgid "Select articles in group" +msgstr "Wybierz artykuÅ‚ pod kursorem" + +#: js/viewfeed.js:2168 +#, fuzzy +msgid "Mark group as read" +msgstr "Oznacz jako przeczytane" + +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "Oznacz kanaÅ‚ jako przeczytany" + +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "Wprowadź nowÄ… punktacjÄ™ dla wybranych artykułów:" + +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "Wprowadź nowÄ… punktacjÄ™ dla tego artykuÅ‚u:" + +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "Adres artykuÅ‚u:" + +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "Przykro mi, Twoja przeglÄ…darka nie wspiera izolowanych obiektów iframe." + +#: plugins/af_psql_trgm/init.js:11 +#, fuzzy +msgid "Related articles" +msgstr "UsuÅ„ artykuÅ‚" + +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "ZapisujÄ™ notatkÄ™ do artykuÅ‚u..." + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Import z Google Reader" + +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "Najpierw wybierz plik." + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "PrzeÅ›lij artykuÅ‚ emailem" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "Eksportuj dane" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "ZakoÅ„czono, wyeksportowano %d artykuÅ‚. Możesz pobrać dane tutaj." +msgstr[1] "ZakoÅ„czono, wyeksportowano %d artykuÅ‚y. Możesz pobrać dane tutaj." +msgstr[2] "ZakoÅ„czono, wyeksportowano %d artykułów. Możesz pobrać dane tutaj." + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Importuj dane" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "Najpierw wybierz plik." + +#: plugins/shorten_expanded/init.js:37 +#, fuzzy +msgid "Click to expand article" +msgstr "Kliknij aby powiÄ™kszyć artykuÅ‚." + +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" + +#: plugins/mail/mail.js:38 +#, fuzzy +msgid "Your message has been sent." +msgstr "Dwoje dane osobiste zostaÅ‚y zapisane." + +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "Połącz instancjÄ™" + +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "Edytuj instancjÄ™" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "Usunąć wybrane instancje?" + +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "Usuwanie wybranych instancji..." + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "Nie wybrano żadnych instancji." + +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "Wybierz tylko jednÄ… instancjÄ™." + +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "Wyczyść dane kanaÅ‚u" + +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "" + +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "UdostÄ™pnij artykuÅ‚" + +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "Wygenerować nowy URL dla udostÄ™pnianego artukuÅ‚u?" + +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "PróbujÄ™ zmienić adres..." + +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "Wyłączyć udostÄ™pnianie tego artykuÅ‚u?" + +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "Próbuje zakoÅ„czyć udostÄ™pnianie..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "Operacja spowoduje unieważnienie adresów wszystkich poprzednio udostÄ™pnionych artykułów. Kontynuować?" + +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "CzyszczÄ™ URLe..." + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "UdostÄ™pniane adresy zostaÅ‚y wyczyszczone." + +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "Oznaczyć wszystkie artykuÅ‚y w %s jako przeczytane?" + +#: js/feedlist.js:435 +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "Oznaczyć wszystkie w kanale %s starsze jak 1 dzieÅ„ jako przeczytane?" + +#: js/feedlist.js:438 +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "Oznaczyć wszystkie w kanale %s starsze jak tydzieÅ„ jako przeczytane?" + +#: js/feedlist.js:441 +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "Oznaczyć wszystkie w kanale %s starsze jak 2 tygodnie jako przeczytane?" + +#: js/functions.js:615 +msgid "Error explained" +msgstr "WyjaÅ›nienie błędu" + +#: js/functions.js:697 +msgid "Upload complete." +msgstr "PrzesyÅ‚anie ukoÅ„czone." + +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "UsuÅ„ zapisanÄ… ikonÄ™ kanaÅ‚u." + +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "Usuwanie ikony kanaÅ‚u..." + +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "Ikona kanaÅ‚u usuniÄ™ta." + +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "Wybierz obrazek do wysÅ‚ania." + +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "Wgrać nowÄ… ikonÄ™ dla tego kanaÅ‚u?" + +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "Trwa Å‚adowanie, proszÄ™ czekać..." + +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "ProszÄ™ wprowadzić opis etykiety:" + +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "Nie udaÅ‚o siÄ™ utworzyć etykiety: brak opisu." + +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "Prenumeruj kanaÅ‚" + +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "" + +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "Zaprenumerowano kanaÅ‚ %s" + +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "Wprowadzony adres jest niepoprawny." + +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "Wprowadzony adres nie zawiera żadnych kanałów." + +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "RozwiÅ„ aby wybrać kanaÅ‚" + +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "Nie udaÅ‚o siÄ™ pobrać wprowadzonego adresu: %s" + +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "Weryfikacja XML niepowiodÅ‚a siÄ™: %s" + +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "Prenumerujesz już ten kanaÅ‚." + +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "Edytuj regułę" + +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "Edytuj kanaÅ‚" + +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "WiÄ™cej kanałów" + +#: js/functions.js:1878 +msgid "Help" +msgstr "Pomoc" + +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "Usunąć kategoriÄ™ %s? Wszystkie zagnieżdżone kanaÅ‚y zostanÄ… umieszczone w Bez kategorii." + +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "Usuwanie kategorii..." + +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "Usunąć wybrane kategoriÄ™?" + +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "Usuwanie wybranych kategorii..." + +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "Nie wybrano żadnej kategorii." + +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "TytuÅ‚ kategorii:" + +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "Tworzenie kategorii..." + +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "KanaÅ‚y nieaktualizowane ostatnio" + +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "ZastÄ…pić obecny adres publikacji OPML nowym adresem?" + +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "Czyszczenie kanaÅ‚u..." + +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "Przeliczyć punktacjÄ™ w wybranych kanaÅ‚ach?" + +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "Przeliczanie punktacji wybranych kanałów..." + +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "Przeliczyć punktacjÄ™ wszystkich artykułów? Ta czynność może zająć dużo czasu." + +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "Przeliczanie punktacji kanałów..." + +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "Przywrócić domyÅ›lne kolory wybranym etykietom?" + +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "Profile ustawieÅ„" + +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "Usunąć wybrane profile? Aktywne i domyÅ›lne profile nie zostanÄ… usuniÄ™te." + +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "Usuwanie wybranych profili..." + +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "Nie wybrano żadnych profili." + +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "Uaktywnić wybrany profil?" + +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "Wybierz profil do uaktywnienia." + +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "Tworzenie profili...." + +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "Operacja spowoduje unieważnienie wszystkich poprzednio wygenerowanych adresów kanałów. Kontynuować?" + +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "Wyczyszczono wygenerowane adresy URL." + +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Edytor etykiet" + +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "Nie możesz zrezygnować z prenumeraty tej kategorii." + +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "Anuluj wyszukiwanie" + +#: js/viewfeed.js:174 +#, fuzzy +msgid "New articles found, reload feed to continue." +msgstr "Nie znaleziono artykułów." + +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "UsuÅ„ oznaczenie gwiazdkÄ…" + +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "Oznacz artykuÅ‚ gwiazdkÄ…" + +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "Anuluj publikacje artykuÅ‚u" + +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Opublikuj" + +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "Wybrano artykuÅ‚." +msgstr[1] "Wybrano %d artykuÅ‚y." +msgstr[2] "Wybrano %d artykułów." + +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "Nie wybrano żadnego artykuÅ‚u." + +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "Nie znaleziono artykułów do oznaczenia" + +#: js/viewfeed.js:1452 +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "Oznaczyć %d artykuÅ‚ jako przeczytany?" +msgstr[1] "Oznaczyć %d artykuÅ‚y jako przeczytane?" +msgstr[2] "Oznaczyć %d artykułów jako przeczytane?" + +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "WyÅ›wietl adres artykuÅ‚u" + +#~ msgid "Select by tags..." +#~ msgstr "Wybierz używajÄ…c tagów..." + +#~ msgid "Limit search to:" +#~ msgstr "Ogranicz wyszukiwanie do:" + +#~ msgid "This feed" +#~ msgstr "Ten kanaÅ‚" + +#~ msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation." +#~ msgstr "ZÅ‚ozone wyrażenia mogÄ… nie przynosić spodziewanych rezultatów podczas testów ze wzglÄ™du na różnice w implementacji wyrażeÅ„ regularnych na serwerze bazy danych." + +#~ msgid "Old password cannot be blank." +#~ msgstr "Stare hasÅ‚o nie może być puste." + +#~ msgid "New password cannot be blank." +#~ msgstr "Nowe hasÅ‚o nie może być puste." + +#~ msgid "Entered passwords do not match." +#~ msgstr "Wprowadzone hasÅ‚a sÄ… różne." + +#~ msgid "Function not supported by authentication module." +#~ msgstr "Metoda nie wspierana przez mechanizm uwierzytelniajÄ…cy." + +#~ msgid "Match:" +#~ msgstr "Dopasuj:" + +#~ msgid "Any" +#~ msgstr "Dowolny" + +#~ msgid "All tags." +#~ msgstr "Wszystkie znaczniki" + +#~ msgid "Which Tags?" +#~ msgstr "Które tagi?" + +#~ msgid "Display entries" +#~ msgstr "WyÅ›wietl wpisy" + +#~ msgid "Select item(s) by tags" +#~ msgstr "Wybierz element(y) przy użyciu tagów" + +#~ msgid "Unread First" +#~ msgstr "Najpierw nieprzeczytane" + +#~ msgid "Unknown option: %s" +#~ msgstr "Nieznana opcja: %s" + +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "DostÄ™pna jest nowa wersja Tiny Tiny RSS!" + +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "Nie powiodÅ‚a siÄ™ weryfikacja sesji (zmieniona przeglÄ…darka)" + +#~ msgid "Assign articles to labels automatically" +#~ msgstr "Automatycznie przypisz etykiety do artykułów" + +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "DostÄ™pna jest nowa wersja Tiny Tiny RSS (%s)." + +#~ msgid "You can update using built-in updater in the Preferences or by using update.php" +#~ msgstr "Możesz przeprowadzić aktualizacjÄ™ wykorzystujÄ…c wbudowany aktualizator dostÄ™pny w Ustawieniach lub korzystajÄ…c z update.php" + +#~ msgid "See the release notes" +#~ msgstr "Zobacz informacje o wydaniu" + +#~ msgid "Download" +#~ msgstr "Pobierz" + +#~ msgid "Error receiving version information or no new version available." +#~ msgstr "Błąd podczas odbierania informacji o wersji lub brak dostÄ™pnej nowej wersji." + +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Aktualizuj Tiny Tiny RSS" + +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "Twoja instalacja Tiny Tiny RSS jest aktualna." + +#, fuzzy +#~ msgid "Force update" +#~ msgstr "Przeprowadź aktualizacje" + +#~ msgid "Do not close this dialog until updating is finished." +#~ msgstr "Nie zamykaj tego okna dopóki aktualizacja nia zakoÅ„czy siÄ™." + +#~ msgid "It is suggested to backup your tt-rss directory first." +#~ msgstr "Sugerujemy wykonać wczeÅ›niej kopiÄ™ zapasowÄ… katalogu tt-rss." + +#~ msgid "Your database will not be modified." +#~ msgstr "Baza danych nie zostanie zmodyfikowana." + +#~ 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 "Twój obecny katalog tt-rss nie zostanie zmodyfikowany. Jego nazwa zostanie zmieniona i pozostawiona w katalogu poziom wyżej. BÄ™dziesz mógÅ‚ przemigrować dostosowane przez siebie pliki po zakoÅ„czeniu aktualizacji." + +#~ msgid "Ready to update." +#~ msgstr "Gotowy do aktualizacji." + +#~ msgid "Start update" +#~ msgstr "Rozpocznik aktualizacjÄ™" + +#~ msgid "Backup your tt-rss directory before continuing. Please type 'yes' to continue." +#~ msgstr "Wykonaj kopiÄ™ swojego katalogu tt-rss przed kontynuowaniem. Wpisz 'yes' aby kontynuować." + +#~ msgid "New version available!" +#~ msgstr "DostÄ™pna jest nowa wersja!" + +#~ msgid "LibXML error %s at line %d (column %d): %s" +#~ msgstr "Biblioteka LibXML zwróciÅ‚a błąd %s w linii %d (kolumna %d): %s" + +#~ msgid "From:" +#~ msgstr "Od:" + +#~ msgid "Select:" +#~ msgstr "Wybierz: " + +#~ msgid "mark as read" +#~ msgstr "oznacz jako przeczytane" + +#~ msgid "Change password to" +#~ msgstr "ZmieÅ„ hasÅ‚o na" + +#~ msgid "E-mail: " +#~ msgstr "E-mail: " + +#~ msgid "Login field cannot be blank." +#~ msgstr "Pole nazwa użytkownika nie może być puste." + +#~ msgid "Saving user..." +#~ msgstr "Zapisywanie użytkownika..." + +#~ msgid "Toggle marked" +#~ msgstr "Przełącz oznaczenie gwiazdkÄ…" + +#~ msgid "(Un)hide empty categories" +#~ msgstr "Pokaż/Ukryj puste kategorie" + +#~ msgid "Published articles and generated feeds" +#~ msgstr "Opublikowane artykuÅ‚y i wygenerowane kanaÅ‚y" + +#~ msgid "Articles shared by URL" +#~ msgstr "Wszystkie artykuÅ‚y udostÄ™pnione przez adresy" + +#~ msgid "These feeds have not been updated because of errors:" +#~ msgstr "Te kanaÅ‚y nie zostaÅ‚y uaktualnione ponieważ wystÄ…piÅ‚y błędy:" + +#~ msgid "Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings." +#~ msgstr "Twoja przeglÄ…darka nie obsÅ‚uguje Javascript, który jest wymagany aby aplikacja dziaÅ‚aÅ‚a poprawnie. ProszÄ™ sprawdź ustawienia swojej przeglÄ…darki." + +#~ msgid "Hello," +#~ msgstr "Cześć," + +#~ msgid "Regular version" +#~ msgstr "Wersja standardowa" + +#~ msgid "Home" +#~ msgstr "Stron główna" + +#~ msgid "Nothing found (click to reload feed)." +#~ msgstr "Nic nie znaleziono (kliknij aby odÅ›wieżyć kanaÅ‚)." + +#~ msgid "Open regular version" +#~ msgstr "Otwórz standardowÄ… wersjÄ™" + +#~ msgid "Enable categories" +#~ msgstr "Włącz kategorie" + +#~ msgid "ON" +#~ msgstr "WÅÄ„CZONE" + +#~ msgid "OFF" +#~ msgstr "WYÅÄ„CZONE" + +#~ msgid "Browse categories like folders" +#~ msgstr "PrzeglÄ…daj kategorie jak katalogi" + +#~ msgid "Show images in posts" +#~ msgstr "WyÅ›wietlaj obrazki w artykuÅ‚ach" + +#~ msgid "Hide read articles and feeds" +#~ msgstr "Ukryj przeczytane artykuÅ‚y i kanaÅ‚y" + +#~ msgid "Sort feeds by unread count" +#~ msgstr "Sortuj kanaÅ‚y wedÅ‚ug liczby nieprzeczytanych" + +#~ msgid "Article archive" +#~ msgstr "Archiwum artykułów" + +#~ msgid "Example Pane" +#~ msgstr "PrzykÅ‚adowe onko" + +#~ msgid "Sample value" +#~ msgstr "PrzykÅ‚adowa wartość" + +#~ msgid "Set value" +#~ msgstr "Ustaw wartość" + +#~ msgid "Mark %d displayed article as read?" +#~ msgid_plural "Mark %d displayed articles as read?" +#~ msgstr[0] "Oznaczyć %d wyÅ›wietlony artykuÅ‚ jako przeczytany?" +#~ msgstr[1] "Oznaczyć %d wyÅ›wietlone artykuÅ‚y jako przeczytane?" +#~ msgstr[2] "Oznaczyć %d wyÅ›wietlonych artykułów jako przeczytane?" + +#~ msgid "Error: unable to load article." +#~ msgstr "Błąd: nie udaÅ‚o siÄ™ wczytać artykuÅ‚u." + +#~ msgid "%d more..." +#~ msgid_plural "%d more..." +#~ msgstr[0] "%d wiÄ™cej..." +#~ msgstr[1] "%d wiÄ™cej..." +#~ msgstr[2] "%d wiÄ™cej..." + +#~ msgid "No unread feeds." +#~ msgstr "Brak nieprzeczytanych kanałów." + +#~ msgid "Load more..." +#~ msgstr "Wczytaj wiÄ™cej..." + +#~ msgid "Switch to digest..." +#~ msgstr "Przełącz na przeglÄ…d..." + +#~ msgid "Show tag cloud..." +#~ msgstr "Pokaż chmurÄ™ tagów..." + +#~ msgid "Click to play" +#~ msgstr "WciÅ›nij aby odtworzyć" + +#~ msgid "Play" +#~ msgstr "Odtwórz" + +#~ msgid "Visit the website" +#~ msgstr "Odwiedź stronÄ™ internetowÄ…" + +#~ msgid "Select theme" +#~ msgstr "Wybierz styl" + +#~ msgid "I have scanned the code and would like to enable OTP" +#~ msgstr "ZeskanowaÅ‚em kod i chciaÅ‚bym włączyć OTP." + +#~ msgid "Playing..." +#~ msgstr "Odtwarzam..." + +#~ msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" +#~ msgstr "Nie udaÅ‚o siÄ™ wgrać pliku. Możliwe, że bÄ™dziesz musiaÅ‚ dostosować wartość parametru upload_max_filesize (maksymalny rozmiar przesyÅ‚anego pliku) w PHP.ini (obecna wartość = %s)" + +#~ msgid "Default interval between feed updates" +#~ msgstr "DomyÅ›lny czas pomiÄ™dzy aktualizacjami kanaÅ‚u" + +#~ msgid "Could not update database" +#~ msgstr "Nie można zaktualizować bazy danych" + +#~ msgid "Could not find necessary schema file, need version:" +#~ msgstr "Nie udaÅ‚o siÄ™ odnaleźć niezbÄ™dnych plików schematu, potrzebna wersja: " + +#~ msgid ", found: " +#~ msgstr ", odnaleziono: " + +#~ msgid "Tiny Tiny RSS database is up to date." +#~ msgstr "Schemat bazy danych Tiny Tiny RSS jest aktualny." + +#~ msgid "Please backup your database before proceeding." +#~ msgstr "Wykonaj kopiÄ™ bazy przed rozpoczÄ™ciem procesu." + +#~ msgid "Your Tiny Tiny RSS database needs update to the latest version (%d to %d)." +#~ msgstr "Baza Tiny Tiny RSS musi być zaktualizowana do aktualnej wersji (%d do %d)." + +#~ msgid "Performing updates..." +#~ msgstr "Trwa aktualizacja..." + +#~ msgid "Updating to version %d..." +#~ msgstr "Aktualizacja do wersji %d..." + +#~ msgid "Checking version... " +#~ msgstr "Sprawdzanie wersji... " + +#~ msgid "OK!" +#~ msgstr "OK!" + +#~ msgid "ERROR!" +#~ msgstr "BÅÄ„D!" + +#~ msgid "Finished. Performed %d update up to schema version %d." +#~ msgid_plural "Finished. Performed %d updates up to schema version %d." +#~ msgstr[0] "ZakoÅ„czono. Wykonano %d aktualizacjÄ™ do wersji %d schematu bazy danych." +#~ msgstr[1] "ZakoÅ„czono. Wykonano %d aktualizacji do wersji %d schematu bazy danych." +#~ msgstr[2] "ZakoÅ„czono. Wykonano %d aktualizacji do wersji %d schematu bazy danych." + +#~ msgid "Your database schema is from a newer version of Tiny Tiny RSS." +#~ msgstr "Wersja schematu Twojej bazy danych jest nowsza niż wersja Tiny Tiny RSS." + +#~ msgid "Found schema version: %d, required: %d." +#~ msgstr "Wykryta wersja bazy: %d, wymagana %d." + +#~ msgid "Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer version and continue." +#~ msgstr "Aktualizacja schematu bazy niemożliwa do wykonania. Uaktualnij pliki Tiny Tiny RSS do nowszej wersji i ponów próbÄ™." + +#~ msgid "Enable external API" +#~ msgstr "Włącz zewnÄ™trzne API" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Gdy ta opcja jest zaznaczona, nagłówki w kanaÅ‚ach specjalnych i widoku etykiet grupowane sÄ… wedÅ‚ug kanałów." + +#~ msgid "Title or Content" +#~ msgstr "TytuÅ‚ lub Treść" + +#~ msgid "Link" +#~ msgstr "ÅÄ…cze" + +#~ msgid "Content" +#~ msgstr "Treść" + +#~ msgid "Article Date" +#~ msgstr "Dane artykuÅ‚u" + +#~ msgid "Set starred" +#~ msgstr "Oznacz gwiazdkÄ…" + +#~ msgid "Assign tags" +#~ msgstr "Przypisz tagi" + +#~ msgid "Modify score" +#~ msgstr "ZmieÅ„ punktacjÄ™" + +#~ 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 "Opcja ta jest przydatna gdy czytasz kilka globalnych, grupujÄ…cych artykuÅ‚y z różnych źródeÅ‚, kanałów RSS majÄ…cych częściowo pokrywajÄ…cÄ… siÄ™ grupÄ™ użytkowników. Gdy wyłączona, powoduje iż ten sam artykuÅ‚ pochodzÄ…cy z różnych kanałów bÄ™dzie wyÅ›wietlony tylko raz." + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Format daty wyglÄ…da na poprawnÄ…:" + +#~ msgid "Date syntax is incorrect." +#~ msgstr "Format daty jest niepoprawny." + +#~ msgid "Notice" +#~ msgstr "Uwaga" + +#~ msgid "Tag Cloud" +#~ msgstr "Chmura tagów" + +#~ msgid "Mark all visible articles in %s as read?" +#~ msgstr "Oznaczyć wszystkie widoczne artykuÅ‚y z %s jako przeczytane?" + +#~ msgid "Form secret key incorrect. Please enable cookies and try again." +#~ msgstr "NieprawidÅ‚owa wartość poufnego klucza. Włącz ciasteczka i spróbuj ponownie." + +#~ msgid "Score" +#~ msgstr "Punktacja" + +#~ msgid "Completed." +#~ msgstr "ZakoÅ„czono." + +#~ msgid "Enable the options you wish to apply using checkboxes on the right:" +#~ msgstr "KorzystajÄ… z pól po prawej, zanacz opcje które chcesz zastosować:" + +#~ msgid "New articles available in this feed (click to show)" +#~ msgstr "Nowe artykuÅ‚y dostÄ™pne na tym kanale (kliknij aby wyÅ›wietlić)" + +#~ msgid "Pocket" +#~ msgstr "KieszeÅ„" + +#~ msgid "Pinterest" +#~ msgstr "Pinterest" + +#~ msgid "Share on identi.ca" +#~ msgstr "UdostÄ™pnij na identi.ca" + +#~ msgid "Owncloud" +#~ msgstr "Owncloud" + +#~ msgid "Owncloud url" +#~ msgstr "Adres Owncloud" + +#~ msgid "Bookmark on OwnCloud " +#~ msgstr "Dodaj zakÅ‚adkÄ™ w Owncloud" + +#~ msgid "Flattr this article." +#~ msgstr "Pochwal ten artykuÅ‚ (Flattr)." + +#~ msgid "Share on Google+" +#~ msgstr "UdostÄ™pnij na Google+" + +#~ msgid "Share on Twitter" +#~ msgstr "UdostÄ™pnij na Twitterze" + +#~ msgid "Show additional preferences" +#~ msgstr "Pokaż dodatkowe ustawienia" + +#~ msgid "Back to feeds" +#~ msgstr "Wróć do kanałów" + +#~ msgid "This will clear your stored authentication information for Twitter. Continue?" +#~ msgstr "Operacja spowoduje usuniÄ™cie zapisanych danych uwierzytelniania w usÅ‚udze Twitter. Kontynuować?" + +#~ msgid "Clearing credentials..." +#~ msgstr "Czyszczenie zapisanych dany uwierzytelniania..." + +#~ msgid "Twitter credentials have been cleared." +#~ msgstr "Dane uwierzytelniania usÅ‚ugi Twitter zostaÅ‚y wyczyszczone." + +#~ msgid "Updated" +#~ msgstr "Zaktualizowany" + +#~ msgid "Finished: %d articles processed, %d imported, %d feeds created." +#~ msgstr "ZakoÅ„czono: %d przetworzonych artykułów, %d zaimportowanych, %d kanałów utworzonych." + +#~ msgid "Related" +#~ msgstr "Pokrewne" + +#~ msgid "Yes" +#~ msgstr "Tak" + +#~ msgid "No" +#~ msgstr "Nie" + +#~ msgid "News" +#~ msgstr "NowoÅ›ci" + +#~ msgid "Move between feeds" +#~ msgstr "Przechodzenie pomiÄ™dzy kanaÅ‚ami" + +#~ msgid "Move between articles" +#~ msgstr "Przechodzenie pomiÄ™dzy artykuÅ‚ami" + +#~ msgid "Active article actions" +#~ msgstr "DziaÅ‚ania dla bieżącego artykuÅ‚u" + +#~ msgid "Mark articles below/above active one as read" +#~ msgstr "Oznacz artykuÅ‚y poniżej/powyżej bieżącego jako przeczytane" + +#~ msgid "Other actions" +#~ msgstr "Inne dziaÅ‚ania" + +#~ msgid "Display this help dialog" +#~ msgstr "WyÅ›wietl to okno pomocy" + +#~ msgid "Multiple articles actions" +#~ msgstr "DziaÅ‚ania na wielu artykuÅ‚ach" + +#, fuzzy +#~ msgid "Select starred articles" +#~ msgstr "Wybierz nieprzeczytane artykuÅ‚y" + +#~ msgid "Feed actions" +#~ msgstr "DziaÅ‚ania na kanaÅ‚ach" + +#~ msgid "If viewing category, (un)collapse it" +#~ msgstr "W trybie kategorii, rozwiÅ„/zwiÅ„" + +#~ msgid "Press any key to close this window." +#~ msgstr "WciÅ›nij dowolny klawisz aby zamknąć to okno." + +#~ msgid "My Feeds" +#~ msgstr "Moje kanaÅ‚y" + +#~ msgid "Panel actions" +#~ msgstr "DziaÅ‚ania na panelach" + +#~ msgid "Top 25 feeds" +#~ msgstr "Top 25 kanałów" + +#~ msgid "Edit feed categories" +#~ msgstr "Edytuj kategorie kanaÅ‚u" + +#~ msgid "Focus search (if present)" +#~ msgstr "Aktywuj pole wyszukiwarki (jeżeli jest)" + +#~ msgid "Note: not all actions may be available, depending on Tiny Tiny RSS configuration and your access level." +#~ msgstr "Uwaga: nie wszystkie dziaÅ‚ania mogÄ… być dostÄ™pne, zależnie od konfiguracji Tiny Tiny RSS i Twojego poziomu uprawnieÅ„." + +#~ msgid "Fatal: authentication module %s not found." +#~ msgstr "Błąd fatalny: moduÅ‚ uwierzytelniania %s nie zostaÅ‚ odnaleziony." + +#~ msgid "Open article in new tab" +#~ msgstr "Otwórz artykuÅ‚ w nowej zakÅ‚adce" + +#~ msgid "Right-to-left content" +#~ msgstr "Treść czytana od prawej do lewej" + +#, fuzzy +#~ msgid "Cache content locally" +#~ msgstr "Przechowuj obrazki lokalnie" + +#~ msgid "Mark posts as updated on content change" +#~ msgstr "Oznacz artykuÅ‚y jako zaktualizowane gdy zmieni siÄ™ ich treść" + +#~ msgid "Loading..." +#~ msgstr "Wczytywanie..." + +#~ msgid "View in a tt-rss tab" +#~ msgstr "Otwórz w zakÅ‚adce tt-rss" + +#~ msgid "Magpie" +#~ msgstr "Magpie" + +#~ msgid "SimplePie" +#~ msgstr "SimplePie" + +#~ msgid "using" +#~ msgstr "używajÄ…c" + +#~ msgid "OAuth will be used automatically for Twitter feeds." +#~ msgstr "Dla kanałów z Twittera automatycznie zostanie użyty OAuth." + +#~ msgid "match on" +#~ msgstr "w" + +#~ msgid "Title or content" +#~ msgstr "TytuÅ‚ lub treść" + +#~ msgid "Your request could not be completed." +#~ msgstr "Twoje żądanie nie mogÅ‚o zostać zrealizowane." + +#~ msgid "Feed update has been scheduled." +#~ msgstr "Aktualizacja kanaÅ‚u zostaÅ‚a zaplanowana." + +#~ msgid "Category update has been scheduled." +#~ msgstr "Aktualizacja kategorii zostaÅ‚a zaplanowana." + +#~ msgid "Can't update this kind of feed." +#~ msgstr "Nie można aktualizować kanaÅ‚u tego rodzaju." + +#~ msgid "Original article" +#~ msgstr "ArtykuÅ‚ oryginalny" + +#~ msgid "Update feed" +#~ msgstr "Uaktualnij kanaÅ‚" + +#~ msgid "With subcategories" +#~ msgstr "Z podkategoriami" + +#~ msgid "Twitter OAuth" +#~ msgstr "Twitter OAuth" + +#~ msgid "before" +#~ msgstr "przed" + +#~ msgid "after" +#~ msgstr "po" + +#~ msgid "Check it" +#~ msgstr "Sprawdź" + +#~ msgid "Apply to category" +#~ msgstr "Zastosuj dla kategorii" + +#~ msgid "No feed categories defined." +#~ msgstr "Nie zdefiniowano żadnych kategorii kanaÅ‚u." + +#~ msgid "Edit categories" +#~ msgstr "Edytuj kategorie" + +#~ msgid "Hint: you can drag feeds and categories around." +#~ msgstr "Wskazówka: możesz swobodnie przeciÄ…gać kanaÅ‚y i kategorie." + +#~ msgid "Subscribing using bookmarklet" +#~ msgstr "Prenumerowanie z wykorzystaniem komponentu zakÅ‚adek" + +#~ 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 "Zanim bÄ™dziesz mógÅ‚ uaktualniać swoje kanaÅ‚y Twittera, musisz zarejestrować tÄ™ instalacjÄ™ Tiny Tiny RSS na Twitterze." + +#~ msgid "You have been successfully registered with Twitter.com and should be able to access your Twitter feeds." +#~ msgstr "ZakoÅ„czyÅ‚eÅ› proces rejestracji na Twitter.com i powinieneÅ› móc dostać siÄ™ do swoich kanałów z Twittera." + +#~ msgid "Register with Twitter.com" +#~ msgstr "Zarejestruj na Twitter.com" + +#~ msgid "
  • Adding category %s.
  • " +#~ msgstr "
  • Dodawanie kategorii %s.
  • " + +#~ msgid "Adding filter %s" +#~ msgstr "Dodawanie filtra %s" + +#~ msgid "Duplicate filter %s" +#~ msgstr "Kopiowanie filtra %s" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Purge old posts after this number of days (0 - disables)" +#~ msgstr "Wyczyść stare artykuÅ‚y po X dniach (0 - wyłącza)" + +#~ msgid "Attachment:" +#~ msgstr "Załącznik:" + +#~ msgid "Attachments:" +#~ msgstr "Załączniki:" + +#~ msgid "Register with Twitter" +#~ msgstr "Zarejestrowano na Twitterze" + +#~ msgid "Could not connect to Twitter. Refresh the page or try again later." +#~ msgstr "Nie udaÅ‚o siÄ™ połączyć z Twitterem. OdÅ›wież stronÄ™ lub spróbuj ponownie." + +#~ msgid "Congratulations! You have successfully registered with Twitter." +#~ msgstr "Gratulacje! Rejestracja konta Twittera zakoÅ„czyÅ‚a siÄ™ powodzeniem." + +#~ msgid "MySQL Charset Updater" +#~ msgstr "Aktualizator kodowania bazy MySQL" + +#~ msgid "This script is for Tiny Tiny RSS installations with MySQL backend only." +#~ msgstr "Ten skrypt sÅ‚uży do instalacji Tiny Tiny RSS tylko na bazie MySQL." + +#~ msgid "" +#~ "This script will convert your Tiny Tiny RSS database to UTF-8. \n" +#~ "\t\t\tDepending on current database charset you may experience data corruption (lost accent characters, etc.). \n" +#~ "\t\t\tAfter update, you'll have to set MYSQL_CHARSET option in config.php to 'utf8'." +#~ msgstr "" +#~ "Ten skrypt przeprowadzi konwersjÄ™ Twojej bazy Tiny Tiny RSS do kodowania UTF-8. \n" +#~ "\t\t\tZależnie od bieżącego kodowania bazy danych możesz doÅ›wiadczyć uszkodzenia danych (zgubione znaki narodowe, akcenty itp). \n" +#~ "\t\t\tPo aktualizacji bÄ™dziesz musiaÅ‚ ustawić opcjÄ™ MYSQL_CHARSET w pliku config.php na 'utf8'." + +#~ msgid "Converting database..." +#~ msgstr "Konwersja bazy danych..." diff --git a/locale/pt_BR/LC_MESSAGES/messages.mo b/locale/pt_BR/LC_MESSAGES/messages.mo old mode 100644 new mode 100755 index 550fe99c2e..b3a37c6c76 Binary files a/locale/pt_BR/LC_MESSAGES/messages.mo and b/locale/pt_BR/LC_MESSAGES/messages.mo differ diff --git a/locale/pt_BR/LC_MESSAGES/messages.po b/locale/pt_BR/LC_MESSAGES/messages.po index 945cbb1020..05bde80ada 100644 --- a/locale/pt_BR/LC_MESSAGES/messages.po +++ b/locale/pt_BR/LC_MESSAGES/messages.po @@ -1,2693 +1,4226 @@ -# Brazilian Portuguese translation of tt-rss. -# Copyright (C) 2007 THE tt-rss'S COPYRIGHT HOLDER -# This file is distributed under the same license as the tt-rss package. -# Marcelo Jorge VIeira (metal) , 2007. -# -# +# Brazilian Portuguese translation of tt-rss. +# Copyright (C) 2013 THE tt-rss'S COPYRIGHT HOLDER +# This file is distributed under the same license as the tt-rss package. +# Perry Werneck 2013. +# +# msgid "" msgstr "" "Project-Id-Version: tt-rss 1.2.14.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-22 22:16+0300\n" -"PO-Revision-Date: 2007-10-24 00:47-0200\n" -"Last-Translator: Marcelo Jorge VIeira (metal) \n" -"Language-Team: Portuguese/Brazil\n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2013-08-08 23:19-0300\n" +"Last-Translator: Perry Werneck \n" +"Language-Team: Portuguese/Brazil \n" +"Language: Portuguese\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Poedit 1.5.7\n" +"X-Poedit-SourceCharset: UTF-8\n" -#: backend.php:107 +#: backend.php:73 msgid "Use default" msgstr "Usar o padrão" -#: backend.php:108 +#: backend.php:74 msgid "Never purge" msgstr "Nunca remover" -#: backend.php:109 +#: backend.php:75 msgid "1 week old" msgstr "1 semana atrás" -#: backend.php:110 +#: backend.php:76 msgid "2 weeks old" msgstr "2 semanas atrás" -#: backend.php:111 +#: backend.php:77 msgid "1 month old" msgstr "1 mês atrás" -#: backend.php:112 +#: backend.php:78 msgid "2 months old" msgstr "2 meses atrás" -#: backend.php:113 +#: backend.php:79 msgid "3 months old" msgstr "3 meses atrás" -#: backend.php:116 -#, fuzzy +#: backend.php:82 msgid "Default interval" -msgstr "Padrão" +msgstr "Intervalo padrão" -#: backend.php:117 backend.php:127 +#: backend.php:83 +#: backend.php:93 msgid "Disable updates" msgstr "Desabilitar updates" -#: backend.php:118 backend.php:128 -msgid "Each 15 minutes" +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" msgstr "Cada 15 minutos" -#: backend.php:119 backend.php:129 -msgid "Each 30 minutes" +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" msgstr "Cada 30 minutos" -#: backend.php:120 backend.php:130 +#: backend.php:86 +#: backend.php:96 msgid "Hourly" msgstr "Toda hora" -#: backend.php:121 backend.php:131 -msgid "Each 4 hours" +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" msgstr "Cada 4 horas" -#: backend.php:122 backend.php:132 -msgid "Each 12 hours" +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" msgstr "Cada 12 horas" -#: backend.php:123 backend.php:133 +#: backend.php:89 +#: backend.php:99 msgid "Daily" msgstr "Diariamente" -#: backend.php:124 backend.php:134 +#: backend.php:90 +#: backend.php:100 msgid "Weekly" msgstr "Semanalmente" -#: backend.php:137 tt-rss.php:220 modules/pref-prefs.php:329 -msgid "Default" -msgstr "Padrão" - -#: backend.php:138 -#, fuzzy -msgid "Magpie" -msgstr "Página" - -#: backend.php:139 -msgid "SimplePie" -msgstr "" - -#: backend.php:148 modules/pref-users.php:126 +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 msgid "User" msgstr "Usuário" -#: backend.php:149 +#: backend.php:104 msgid "Power User" -msgstr "" +msgstr "Usuário avançado" -#: backend.php:150 +#: backend.php:105 msgid "Administrator" msgstr "Administrador" -#: backend.php:538 login_form.php:142 modules/backend-rpc.php:61 -#: modules/popup-dialog.php:106 -#, fuzzy -msgid "Default profile" -msgstr "Padrão" - -#: errors.php:3 -msgid "Unknown error" -msgstr "Erro desconhecido" - -#: errors.php:5 -msgid "" -"This program requires XmlHttpRequest to function properly. Your browser " -"doesn't seem to support it." -msgstr "" +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "Este programa precisa que a função XmlHttpRequest funcione corretamente. Seu browser parece não suportar isso." -#: errors.php:8 -msgid "" -"This program requires cookies to function properly. Your browser doesn't " -"seem to support them." -msgstr "" +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "Este programa precisa de cookies para funcionar corretamente. Seu browser parece não suportá-los." -#: errors.php:11 -msgid "Backend sanity check failed" -msgstr "" +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "Verificação de sanidade do backend falhou." -#: errors.php:13 +#: errors.php:17 msgid "Frontend sanity check failed." -msgstr "" +msgstr "Verificação de sanidade do frontend falhou." -#: errors.php:15 -msgid "" -"Incorrect database schema version. <a href='update.php'>Please " -"update</a>." +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." msgstr "" -#: errors.php:17 +#: errors.php:21 msgid "Request not authorized." msgstr "Pedido não autorizado." -#: errors.php:19 +#: errors.php:23 msgid "No operation to perform." -msgstr "" +msgstr "Nenhuma operação a executar." -#: errors.php:21 -msgid "" -"Could not display feed: query failed. Please check label match syntax or " -"local configuration." -msgstr "" +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "Não foi possível mostrar a assinatura: Consulta falhou. Verifique se a sintaxe do label bate com a configuração local." -#: errors.php:23 +#: errors.php:27 msgid "Denied. Your access level is insufficient to access this page." msgstr "Negado. Seu nível de acesso é insuficiente para acessar esta página." -#: errors.php:25 +#: errors.php:29 msgid "Configuration check failed" msgstr "A checagem da configuração falhou" -#: errors.php:27 -msgid "" -"Your version of MySQL is not currently supported. Please see \n" -"\t\tofficial site for more information." -msgstr "" -"Sua versão do MySQL não é atualmente suportada. Por favor acesse \n" -"\t\to site oficial para mais informações." +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "Sua versão do MySQL não é atualmente suportada. Por favor acesse o site oficial para mais informações." -#: errors.php:32 +#: errors.php:35 msgid "SQL escaping test failed, check your database and PHP configuration" -msgstr "" +msgstr "Teste de conversão de escapes no SQL falhou, verifique sua configuração de banco de dados e PHP" -#: functions.php:1928 -msgid "Session failed to validate (incorrect IP)" -msgstr "" +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "Feed não encontrado." -#: functions.php:1998 -msgid "Incorrect username or password" -msgstr "" +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "Usuário não encontrado" + +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "Carregando, por favor aguarde..." -#: functions.php:2979 modules/popup-dialog.php:391 -#: modules/pref-filters.php:420 -msgid "All feeds" +#: index.php:167 +#, fuzzy +msgid "Collapse feedlist" msgstr "Todos os feeds" -#: functions.php:3011 functions.php:3050 functions.php:4447 functions.php:4475 -#: modules/backend-rpc.php:859 modules/pref-feeds.php:1333 -msgid "Uncategorized" -msgstr "Não Categorizado" +#: index.php:170 +msgid "Show articles" +msgstr "Mostrar artigos" -#: functions.php:3040 functions.php:3689 modules/backend-rpc.php:864 -#: mobile/functions.php:170 -msgid "Special" -msgstr "Especial" +#: index.php:173 +msgid "Adaptive" +msgstr "Adaptativa" -#: functions.php:3042 functions.php:3691 prefs.php:114 -#: modules/backend-rpc.php:869 help/4.php:12 mobile/functions.php:197 -msgid "Labels" -msgstr "" +#: index.php:174 +msgid "All Articles" +msgstr "Todos os artigos" -#: functions.php:3087 help/3.php:60 offline.js:493 offline.js:1425 -msgid "Starred articles" -msgstr "" +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "Favoritos" -#: functions.php:3089 modules/pref-feeds.php:1492 help/3.php:61 -msgid "Published articles" -msgstr "" +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "Publicados" -#: functions.php:3091 help/3.php:59 -msgid "Fresh articles" -msgstr "" +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 +msgid "Unread" +msgstr "Não Lidos" -#: functions.php:3093 help/3.php:58 offline.js:488 offline.js:1427 -#, fuzzy -msgid "All articles" -msgstr "Favoritos" +#: index.php:178 +msgid "With Note" +msgstr "Com anotação" -#: functions.php:3095 -#, fuzzy -msgid "Archived articles" -msgstr "Favoritos" +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Ignorar pontuação" -#: functions.php:4200 -msgid "Generated feed" -msgstr "" +#: index.php:182 +msgid "Sort articles" +msgstr "Ordenar artigos" -#: functions.php:4205 functions.php:5553 modules/popup-dialog.php:82 -#: modules/pref-feeds.php:1087 modules/pref-feeds.php:1297 -#: modules/pref-filters.php:377 modules/pref-labels.php:183 -#: modules/pref-users.php:419 offline.js:408 -msgid "Select:" -msgstr "Selecione:" +#: index.php:185 +msgid "Default" +msgstr "Padrão" -#: functions.php:4206 modules/popup-dialog.php:83 modules/pref-feeds.php:1088 -#: modules/pref-feeds.php:1298 modules/pref-filters.php:378 -#: modules/pref-labels.php:184 modules/pref-users.php:420 -msgid "All" -msgstr "Todos" +#: index.php:186 +msgid "Newest first" +msgstr "Mais novos primeiro" -#: functions.php:4207 functions.php:4224 tt-rss.php:213 -msgid "Unread" -msgstr "Não Lido" +#: index.php:187 +msgid "Oldest first" +msgstr "Mais antigos primeiro" -#: functions.php:4208 -#, fuzzy -msgid "Invert" -msgstr "(Inverso)" +#: index.php:188 +msgid "Title" +msgstr "Título" -#: functions.php:4209 modules/popup-dialog.php:84 modules/pref-feeds.php:1089 -#: modules/pref-feeds.php:1299 modules/pref-filters.php:379 -#: modules/pref-labels.php:185 modules/pref-users.php:421 -msgid "None" -msgstr "Nenhum" +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 +msgid "Mark as read" +msgstr "Marcar como lido" -#: functions.php:4217 tt-rss.php:178 offline.js:184 +#: index.php:195 +msgid "Older than one day" +msgstr "Com mais de um dia" + +#: index.php:198 +msgid "Older than one week" +msgstr "Com mais de uma semana" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "Com mais de duas semanas" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "Problemas na comunicação com o servidor" + +#: index.php:223 msgid "Actions..." msgstr "Ações..." -#: functions.php:4223 -#, fuzzy -msgid "Selection toggle:" -msgstr "Seleção" +#: index.php:225 +msgid "Preferences..." +msgstr "Preferências" -#: functions.php:4225 tt-rss.php:212 -msgid "Starred" -msgstr "Favoritos" +#: index.php:226 +msgid "Search..." +msgstr "Pesquisar" -#: functions.php:4226 -msgid "Published" -msgstr "Publicado" +#: index.php:227 +msgid "Feed actions:" +msgstr "Ações do Feed:" -#: functions.php:4227 -#, fuzzy -msgid "Selection:" -msgstr "Seleção" +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "Inscrever-se" -#: functions.php:4228 localized_schema.php:16 tt-rss.php:187 tt-rss.php:230 -msgid "Mark as read" -msgstr "Marcar como lido" +#: index.php:229 +msgid "Edit this feed..." +msgstr "Editar inscrição" -#: functions.php:4234 -msgid "Archive" -msgstr "" +#: index.php:230 +msgid "Rescore feed" +msgstr "Reclassificar inscrição" -#: functions.php:4236 -msgid "Move back" -msgstr "" +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "Cancelar inscrição" -#: functions.php:4237 -#, fuzzy -msgid "Delete" -msgstr "Padrão" +#: index.php:232 +msgid "All feeds:" +msgstr "Todos os Feeds:" -#: functions.php:4242 -msgid "Assign label:" -msgstr "" +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Mostrar/Ocultar inscrições lidas" -#: functions.php:4283 -msgid "Click to collapse category" -msgstr "" +#: index.php:235 +msgid "Other actions:" +msgstr "Outras ações:" -#: functions.php:4493 -msgid "No feeds to display." -msgstr "Sem Feeds para exibir." +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "Ativa/Desativa modo tela-cheia" -#: functions.php:4510 -msgid "Tags" -msgstr "Tags" +#: index.php:237 +msgid "Create label..." +msgstr "Criar marcador..." -#: functions.php:4669 -msgid "audio/mpeg" -msgstr "" +#: index.php:238 +msgid "Create filter..." +msgstr "Cria um filtro..." -#: functions.php:4795 -#, fuzzy -msgid " - " -msgstr " - por " +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "Ajuda para atalhos de teclado" -#: functions.php:4820 functions.php:5580 -msgid "Edit tags for this article" -msgstr "" +#: index.php:248 +msgid "Logout" +msgstr "Sair" -#: functions.php:4826 functions.php:5563 -msgid "Show article summary in new window" +#: index.php:254 +msgid "Updates are available from Git." msgstr "" -#: functions.php:4833 functions.php:5570 -msgid "Publish article with a note" -msgstr "" +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "Preferências" -#: functions.php:4850 functions.php:5441 -msgid "Originally from:" -msgstr "" +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "Atalhos de teclado" -#: functions.php:4863 functions.php:5454 -#, fuzzy -msgid "Feed URL" -msgstr "Feed" +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Sair das preferências" -#: functions.php:4903 functions.php:5484 -#, fuzzy -msgid "unknown type" -msgstr "Erro desconhecido" +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Inscrições" -#: functions.php:4943 functions.php:5527 -msgid "Attachment:" -msgstr "" +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "Filtros" -#: functions.php:4945 functions.php:5529 -msgid "Attachments:" -msgstr "" +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Marcadores" -#: functions.php:4965 prefs.php:142 tt-rss.php:101 modules/help.php:21 -#: modules/popup-dialog.php:53 modules/popup-dialog.php:154 -#: modules/popup-dialog.php:181 modules/popup-dialog.php:230 -#: modules/popup-dialog.php:575 modules/popup-dialog.php:634 -#: modules/pref-feeds.php:1140 modules/pref-users.php:96 -msgid "Close this window" -msgstr "Fechar esta janela" +#: prefs.php:133 +msgid "Users" +msgstr "Usuários" -#: functions.php:5021 -msgid "Feed not found." -msgstr "Feed não encontrado." +#: prefs.php:136 +msgid "System" +msgstr "Sistema" -#: functions.php:5090 -msgid "" -"Could not display feed (query failed). Please check label match syntax or " -"local configuration." -msgstr "" +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "Criar uma nova conta" -#: functions.php:5254 functions.php:5341 -#, fuzzy -msgid "mark as read" -msgstr "Marcar como lido" +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "Registro de novos usuários foi desativado pelo administrador" + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Retornar ao TT-Rss" -#: functions.php:5417 functions.php:5424 -#, fuzzy -msgid "Click to expand article" -msgstr "Favoritos" +#: register.php:218 +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 "Sua senha temporária será enviada para o e-mail informado. Contas que não recebam pelo menos um acesso são apagadas automaticamente 24 horas depois do envio da senha temporária." -#: functions.php:5587 -#, fuzzy -msgid "toggle unread" -msgstr "Marcar como favorito" +#: register.php:224 +msgid "Desired login:" +msgstr "Nome de usuário:" -#: functions.php:5606 -#, fuzzy -msgid "No unread articles found to display." -msgstr "Sem Feeds para exibir." +#: register.php:227 +msgid "Check availability" +msgstr "Verificar disponibilidade" -#: functions.php:5609 -#, fuzzy -msgid "No updated articles found to display." -msgstr "Sem Feeds para exibir." +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "E-mail: " -#: functions.php:5612 -#, fuzzy -msgid "No starred articles found to display." -msgstr "Sem Feeds para exibir." +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "Quanto é dois mais dois:" -#: functions.php:5616 -msgid "" -"No articles found to display. You can assign articles to labels manually " -"(see the Actions menu above) or use a filter." -msgstr "" +#: register.php:235 +msgid "Submit registration" +msgstr "Enviar o cadastro" -#: functions.php:5618 offline.js:443 -#, fuzzy -msgid "No articles found to display." -msgstr "Sem Feeds para exibir." +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "Sua informação de cadastro está incompleta." -#: functions.php:6362 tt-rss.php:192 -#, fuzzy -msgid "Create label..." -msgstr "Criar um usuário" +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "Desculpe, esse nome de usuário já está sendo usado." -#: functions.php:6375 -#, fuzzy -msgid "(remove)" -msgstr "Remover" +#: register.php:287 +msgid "Registration failed." +msgstr "Processo de registro falhou." -#: functions.php:6427 -msgid "no tags" -msgstr "sem tags" +#: register.php:334 +msgid "Account created successfully." +msgstr "Conta criada com sucesso." -#: functions.php:6456 -msgid "edit note" -msgstr "" +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "Registro de novos usuários está suspenso." + +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "Script de atualização do Tiny Tiny RSS." + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "Não Categorizado" -#: localized_schema.php:9 tt-rss.php:222 modules/popup-dialog.php:381 -#: modules/pref-feeds.php:1310 modules/pref-feeds.php:1369 -msgid "Title" -msgstr "Título" +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d artigo arquivado" +msgstr[1] "%d artigos arquivados" +msgstr[2] "%d artigos arquivados" -#: localized_schema.php:10 -msgid "Title or Content" -msgstr "Título ou Conteúdo" +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "Sem inscrições para exibir." -#: localized_schema.php:11 -msgid "Link" -msgstr "Link" +#: include/functions2.php:52 +msgid "Navigation" +msgstr "Navegação" -#: localized_schema.php:12 modules/popup-dialog.php:382 -msgid "Content" -msgstr "Conteúdo" +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "Abrir a próxima assinatura" -#: localized_schema.php:13 -msgid "Article Date" -msgstr "" +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "Abrir a assinatura anterior" -#: localized_schema.php:15 -msgid "Filter article" -msgstr "" +#: include/functions2.php:55 +msgid "Open next article" +msgstr "Abrir o próximo artigo" -#: localized_schema.php:17 -msgid "Set starred" -msgstr "Marcar como favorito" +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "Abrir o artigo anterior" -#: localized_schema.php:18 viewfeed.js:545 viewfeed.js:659 -msgid "Publish article" -msgstr "" +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "Abrir o próximo artigo (não rolar artigos longos)" -#: localized_schema.php:19 -msgid "Assign tags" -msgstr "" +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "Abrir o artigo anterior (não rolar artigos longos)" -#: localized_schema.php:20 -msgid "Assign label" -msgstr "" +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "Mover para o próximo artigo (não expandir ou marcar como lido)" -#: localized_schema.php:24 -msgid "General" -msgstr "Geral" +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "Mover para o artigo anterior (não expandir ou marcar como lido)" -#: localized_schema.php:26 -msgid "Allow duplicate posts" -msgstr "Permitir publicações duplicadas" +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Mostrar diálogo de pesquisa" -#: localized_schema.php:27 -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 "" +#: include/functions2.php:62 +msgid "Article" +msgstr "Artigo" -#: localized_schema.php:28 -msgid "Default interval between feed updates (in minutes)" -msgstr "" +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "Incluir/Remover estrela" -#: localized_schema.php:29 -msgid "Enable e-mail digest" -msgstr "" +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "Marcar/Desmarcar como publicado" -#: localized_schema.php:30 -msgid "" -"This option enables sending daily digest of new (and unread) headlines on " -"your configured e-mail address" -msgstr "" +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "Marcar como não lido" -#: localized_schema.php:31 -msgid "Purge old posts after this number of days (0 - disables)" -msgstr "" +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Editar Tags" -#: localized_schema.php:32 -msgid "Update post on checksum change" -msgstr "" +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "Descartar selecionados?" -#: localized_schema.php:33 -#, fuzzy -msgid "Mark articles in e-mail digest as read" -msgstr "Marcando todos os feeds como lidos..." +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "Descartar lidos" -#: localized_schema.php:34 -msgid "Enable offline reading" -msgstr "" +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "Abrir em uma nova janela" -#: localized_schema.php:35 -msgid "Synchronize new articles for offline reading using Google Gears." -msgstr "" +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "Marcar abaixo como lido" -#: localized_schema.php:37 -msgid "Interface" -msgstr "Interface" +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "Marcar acima como lido" -#: localized_schema.php:39 -msgid "Combined feed display" -msgstr "" +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "Rolar para baixo" -#: localized_schema.php:40 -msgid "" -"Display expanded list of feed articles, instead of separate displays for " -"headlines and article content" -msgstr "" +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "Rolar para cima" -#: localized_schema.php:41 -msgid "Default article limit" -msgstr "" +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "Selecionar artigo sob o cursor" -#: localized_schema.php:42 -msgid "" -"Default limit for articles to display, any custom number you like (0 - " -"disables)." -msgstr "" +#: include/functions2.php:75 +msgid "Email article" +msgstr "Enviar artigo por e-mail" -#: localized_schema.php:43 -msgid "Enable feed categories" -msgstr "" +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "Fechar/Abrir artigo" -#: localized_schema.php:44 -msgid "Enable search toolbar" -msgstr "" +#: include/functions2.php:77 +msgid "Toggle article expansion (combined mode)" +msgstr "Ativar/Desativar expansão de artigo (modo combinado)" -#: localized_schema.php:45 -msgid "Hide feeds with no unread messages" -msgstr "" +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "Ativar/Desativar inclusão do original" -#: localized_schema.php:46 -msgid "Mark articles as read automatically" -msgstr "" +#: include/functions2.php:80 +msgid "Article selection" +msgstr "Seleção de artigos" -#: localized_schema.php:47 -msgid "" -"This option enables marking articles as read automatically in combined mode " -"(except for Fresh articles feed) while you scroll article list." -msgstr "" +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "Selecionar todos os artigos" -#: localized_schema.php:48 -msgid "On catchup show next feed" -msgstr "" +#: include/functions2.php:82 +msgid "Select unread" +msgstr "Selecionar os não lidos" -#: localized_schema.php:49 -msgid "" -"When \"Mark as read\" button is clicked in toolbar, automatically open next " -"feed with unread articles." +#: include/functions2.php:83 +msgid "Select starred" +msgstr "Selecionar artigos com estrela" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "Selecionar artigos publicados" + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "Inverter seleção" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "Desmarcar tudo" + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Feed" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "Atualizar inscrição atual" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "Ocultar/mostrar inscrições lidas" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "Assinar" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Editar inscrição" + +#: include/functions2.php:93 +#, fuzzy +msgid "Reverse headlines" +msgstr "Remover as categorias selecionadas?" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "Debugar atualização de inscrições" + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "Marcar todas as inscrições como lidas" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "Mostrar/Ocultar categoria atual" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "Ativar/Desativar modo combinado" + +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "Ativar/Desativar expansão no modo combinado" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "Ir para" + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "Todas as inscrições" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "Recentes" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Núvem de tags" + +#: include/functions2.php:106 +msgid "Other" +msgstr "Outros" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "Criar marcador" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "Criar filtro" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "Mostrar/Ocultar barra lateral" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "Mostrar dialogo de ajuda" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Resultados da pesquisa: %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +#, fuzzy +msgid "comment" +msgid_plural "comments" +msgstr[0] "Conteúdo" +msgstr[1] "Conteúdo" +msgstr[2] "Conteúdo" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +#, fuzzy +msgid "comments" +msgstr "Conteúdo" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "sem tags" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "Editar tags deste artigo" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "Originalmente de:" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "URL da inscrição" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "Fechar esta janela" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "Editar nota" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "tipo desconhecido" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "Anexos" + +#: include/functions.php:964 +#, php-format +msgid "%d min" msgstr "" -#: localized_schema.php:50 -msgid "Open article links in new browser window" +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "Especial" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Todos os feeds" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Artigos com estrela" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Artigos publicados" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "Últimas notícias" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "Artigos arquivados" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "Lidos recentemente" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "Nome de usuário:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "Senha:" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "Esqueci minha senha" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "Perfil:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "Perfil padrão" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "Usar menos tráfego" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "Não mostra imagens em artigos, reduz as atualizações automáticas" + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "Continuar conectado" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "Login" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "Falha ao validar a sessão (IP incorreto)" + +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "Falha ao validar a sessão (Versão do banco de dados mudou)" + +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "Falha ao validar a sessão (Usuário não encontrado)" + +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "Falha ao validar a sessão (A senha foi alterada)" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "Outras dicas de interface estão disponíveis no wiki to Tiny Tiny RSS." + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Atalhos de teclado" + +#: classes/backend.php:61 +msgid "Shift" msgstr "" -#: localized_schema.php:51 -msgid "Reverse headline order (oldest first)" +#: classes/backend.php:64 +msgid "Ctrl" msgstr "" -#: localized_schema.php:52 -msgid "Show content preview in headlines list" +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Tópico de ajuda não encontrado." + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "Compartilhar com TT-Rss" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Título" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "Conteúdo:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "Marcadores:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "Artigo compartilhado vai aparecer nos publicados." + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "Compartilhar" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "Cancelar" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "Não logado" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Usuário ou senha inválidos" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "Já inscrito em %s" + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "Inscrito em %s." + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "Não foi possível inscrever em %s" + +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "Nenhum feed encontrado em %s." + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "Multiplas URLs encontradas." + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "A inscrição em %s não foi possível.
    Incapaz de baixar a URL do feed RSS." + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "Inscrever no feed selecionado" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Editar opções de assinatura" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "Recuperação de senha" + +#: classes/handler/public.php:805 +#, fuzzy +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "Você precisa informar um nome de usuário válido e endereço de e-mail. Uma nova senha será enviada para seu endereço de e-mail." + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "Redefinir a senha" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "Alguns dos parâmetros necessários estão faltando ou incorretos." + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "Voltar" + +#: classes/handler/public.php:878 +#, fuzzy +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] Notificação de troca de senh" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "Desculpe, Nome de usuário e e-mail não encontrados." + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "Seu nível de acesso é insuficiente para executar esse script." + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "Atualizador do banco de dados" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Executar atualização" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "Ver como um feed rss" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "Ver como RSS" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "Última atualização em: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "Tudo" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Inverter" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Nenhum" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "Mais..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Inverter seleção:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Seleção:" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "Classificar" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "Arquivar" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "Retornar" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "Apaga" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "Encaminhar por e-mail" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Feed:" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "Feed não encontrado." + +#: classes/feeds.php:268 +msgid "Never" +msgstr "Nunca" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "Importado em %s" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +#, fuzzy +msgid "mark feed as read" +msgstr "Marcar como lido" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "Fechar artigo" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "Sem artigos não lidos para exibir." + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "Sem artigos atualizados para exibir." + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "Sem artigos com estrela para exibir." + +#: classes/feeds.php:778 +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 "Nenhum artigo encontrado para mostrar. Você pode associar artigos a marcadores manualmente pelo menu de contexto no título (altera todos os artigos selecionados) ou usar um filtro." + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "Nenhum artigo foi encontrado para exibir." + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "Inscrições atualizadas em %s" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "Alguns feeds estão com erros (clique aqui para detalhes)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "Nenhum feed foi selecionado." + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "URL do site ou feed" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "Colocar na categoria:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "Feeds disponíveis" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "Autenticação" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "Login" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "Senha" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Este feed requer autenticação." + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "Assinar" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "Mais inscrições" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "Pesquisar" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "Inscrições populares" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "Arquivo de inscrições" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "limite:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "Remover" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "Procurar por" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" msgstr "" -#: localized_schema.php:53 -msgid "Sort feeds by unread articles count" +#: classes/feeds.php:1152 +#, fuzzy +msgid "Search syntax" +msgstr "Pesquisar" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "Artigo não encontrado." + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "Tags para esse artigo (separadas por vírgula):" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Salvar" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "Utilitário OPML" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "Importando OPML..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "Retornar às preferências" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "Adicionando feed: %s" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "Feed duplicado: %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "Adicionando marcador %s" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "Marcador duplicado: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "Ajustando chave de configuração %s para %s" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "Adicionando filtro..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "Processando categoria: %s" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "Enviou falhou com o código de erro %d" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "Incapaz de mover arquivo enviado." + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "Erro: Por favor envie um arquivo OPML." + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "Erro: Arquivo OPML movido não foi encontrado" + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Erro ao processar o documento." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "Seu nível de acesso é insuficiente para abrir esta aba." + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "Registro de erros" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "Atualizar" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "Limpar o log" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Erro" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "Nome do arquivo" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Mensagem" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Data" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Usuário não encontrado" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "Registrado" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Último acesso em" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "Contador de inscrições" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Inscrições" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Nível de acesso:" + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Opções" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "Adicionado usuário %s com senha %s" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "Não pode criar o usuário %s" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "O usuário %s já existe." + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "Senha do usuário %salterada para %s" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "Enviando nova senha do usuário %s para %s" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] Notificação de troca de senh" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "Selecione" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Criar um usuário" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "Detalhes" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Editar" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Nível de acesso" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "Último Login" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Clique para editar" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "Nenhum usuário definido." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "Nenhum usuário encontrado." + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Clique para habilitar campo" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, fuzzy, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "Editar" +msgstr[1] "Editar" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "Título da inscrição" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "Atualizar" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Apagando artigo:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "Hint: Você precisa preencher suas informações de login se a assinatura precisa de autenticação, exceto para as assinaturas do Twitter." + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "Ocultar das inscrições populares" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "Incluir no resumo por e-mail" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Sempre mostrar imagens anexas" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "Não embutir imagens" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Guardar imagens no cache local" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "Marcar artigos atualizados como não lidos" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "Ãcone" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "Substituir" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "Reassine para atualizar" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." msgstr "" -#: localized_schema.php:54 -msgid "User stylesheet URL" +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Completo." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "Inscrições com erro" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "Inscrições inativas" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "Editar inscrições selecionadas" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "Reiniciar ordenação" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "Assinatura em lote" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "Categorias" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "Adicionar categoria" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "Remover selecionados" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "Mais ações..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "Apagar manualmente" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "Limpar dados da inscrição" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Reclassificar artigos" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "Usando OPML você pode exportar e importar suas assinaturas, filtros, marcadores e configurações do Tiny Tin RSS." + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." msgstr "" -#: localized_schema.php:55 -msgid "Link to user stylesheet to override default style, disabled if empty." +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "Importar OPML" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "Nome do arquivo:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "Incluir configurações" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "Exportar OPML" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "Seu OPML pode ser publicado e assinado por qualquer um que conheça a URL abaixo." + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." msgstr "" -#: localized_schema.php:56 -msgid "Maximum age of fresh articles (in hours)" +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "URL OPML pública" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "Mostrar a URL OPML publicada" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Integração com o firefox" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "Este Tiny Tiny RSS pode ser usado como um leitor de feeds no firefox clicando no link abaixo." + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "Clique aqui para registrar esse site com um leitor de feeds." + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "Artigos publicados & compartilhados / Feeds gerados" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." msgstr "" -#: localized_schema.php:57 -msgid "Hide feedlist" +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "Mostrar URL" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "Limpar todas as URLs geradas" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "Estas assinaturas não foram atualizadas a 3 meses (mais antiga primeiro):" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "Clique para editar inscrição" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "Cancelar inscrições selecionadas" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "Inclua uma assinatura RSS por linha (detecção de feeds não será feita)" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "Feeds para assinar, um por linha" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "Inscrição requer autenticação." + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "Artigos de acordo com este filtro:" + +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "Nenhum artigo recente que atenda este filtro foi encontrado." + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(invertido)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" msgstr "" -#: localized_schema.php:58 -msgid "" -"This option hides feedlist and allows it to be toggled on the fly, useful " -"for small screens." +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Título" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" msgstr "" -#: localized_schema.php:59 -msgid "Group headlines in virtual feeds" +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" msgstr "" -#: localized_schema.php:60 -msgid "" -"When this option is enabled, headlines in Special feeds and Labels are " -"grouped by feeds" +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "Aplicar ações" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Ativado" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +#, fuzzy +msgid "Match any rule" +msgstr "Favoritos" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +#, fuzzy +msgid "Inverse matching" +msgstr "Favoritos" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "Teste" + +#: classes/pref/filters.php:728 +msgid "Combine" msgstr "" -#: localized_schema.php:62 +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Criar" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "Inverter o teste da expressão regular" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "no campo" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "em" + +#: classes/pref/filters.php:947 +#, fuzzy +msgid "Wiki: Filters" +msgstr "Filtros" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "Salvar regra" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "Adicionar regra" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Executar ação" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "Com os parâmetros:" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "Salvar ação" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "Adicionar ação" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[Sem título]" + +#: classes/pref/filters.php:1044 +#, fuzzy, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "Adicionar regra" +msgstr[1] "Adicionar regra" +msgstr[2] "Adicionar regra" + +#: classes/pref/filters.php:1059 +#, fuzzy, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "Adicionar ação" +msgstr[1] "Adicionar ação" +msgstr[2] "Adicionar ação" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "Cores" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "Cor do texto:" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "Cor de fundo:" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "Marcador %s criado" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Limpar cores" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Geral" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Interface" + +#: classes/pref/prefs.php:20 msgid "Advanced" msgstr "Avançado" -#: localized_schema.php:64 +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "Resumo" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "Permitir artigos duplicados" + +#: classes/pref/prefs.php:26 msgid "Blacklisted tags" -msgstr "" +msgstr "Tags bloqueadas" -#: localized_schema.php:65 -msgid "" -"When auto-detecting tags in articles these tags will not be applied (comma-" -"separated list)." -msgstr "" +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "Durante a detecção automática de tags essas não serão aplicadas (lista separada por vírgulas)." + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "Marcar artigos como lidos automaticamente" + +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "Esta opção ativa a marcação de artigos como lidos automaticamente enquanto você roda a lista." + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "Expandir artigos automaticamente no modo combinado" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "Mostrar no modo combinado" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Mostrar a lista de assinaturas com título e conteúdo junto ao invés de uma caixa com os títulos e outra com o conteúdo" + +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "Confirme marcando o Feed como lido" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "Quantidade de artigos a exibir de uma vez" + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "Intervalo de atualização padrão" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "Intervalo mais curto em que um feed será verificado por update, não importando o mecanismo selecionado." + +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "Marcar artigos do resumo por e-mail como lidos" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "Habilitar resumo por e-mail" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Esta opção habilita o envio diário de um resumo com os títulos dos artigos novos (e não lidos) no seu e-mail configurado" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "Tenta enviar resumos ao redor da hora especificada" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "Usa horário UTC" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "Habilitar acesso por API" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "Permite que clientes externos acessem essa conta pela API" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Habilitar categorias de inscrição." + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "Ordenar assinaturas pela quantidade de artigos" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Tempo máximo para artigos recentes (em horas)" + +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "Esconder assinaturas sem artigos não lidos" + +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "Sempre mostrar as assinaturas especiais" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "Formato de data longo" -#: localized_schema.php:66 -msgid "Confirm marking feed as read" -msgstr "Confirme marcando o Feed como lido" +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "O formato de data é idêntico à função date() do PHP." -#: localized_schema.php:67 -msgid "Enable feed icons" +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" msgstr "" -#: localized_schema.php:68 -msgid "Enable labels" -msgstr "" +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Abrir a próxima assinatura com artigos não lidos automaticamente depois de marcar como lido" -#: localized_schema.php:69 -msgid "" -"Experimental support for virtual feeds based on user crafted SQL queries. " -"This feature is highly experimental and at this point not user friendly. Use " -"with caution." -msgstr "" +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Apagar artigos depois de quantos dias (0 = nunca)" -#: localized_schema.php:70 -msgid "Long date format" -msgstr "Formato de data longo" +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "Apagar artigos não lidos" -#: localized_schema.php:71 -msgid "Set articles as unread on update" -msgstr "" +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "Inverter ordem dos cabeçalhos (mais antigos primeiro)" -#: localized_schema.php:72 +#: classes/pref/prefs.php:47 msgid "Short date format" msgstr "Formato de data curto" -#: localized_schema.php:73 -msgid "Show additional information in feedlist" +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "Mostrar prévia do conteúdo na lista de cabeçalhos" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "Ordenar os títulos pela data na assinatura" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." msgstr "" -#: localized_schema.php:74 +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "Login com um certificado SSL" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Clique para registrar seu certificado SSL no tt-rss" + +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "Não incluir imagens nos artigos" + +#: classes/pref/prefs.php:52 msgid "Strip unsafe tags from articles" -msgstr "" +msgstr "Remover tags inseguras dos artigos" -#: localized_schema.php:75 +#: classes/pref/prefs.php:52 msgid "Strip all but most common HTML tags when reading articles." -msgstr "" +msgstr "Remover todas as tags HTML exceto as mais comuns ao ler artigos." -#: localized_schema.php:76 -msgid "Use more accessible date/time format for headlines" -msgstr "" +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "Personalize a folha de estilo" -#: localized_schema.php:77 -msgid "Automatically expand articles in combined mode" -msgstr "" +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "Personalize a folha de estilo de acordo com seu gosto" -#: localized_schema.php:78 -msgid "Purge unread articles" -msgstr "" +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "Fuso horário" -#: localized_schema.php:79 -msgid "Show special feeds when hiding read feeds" -msgstr "" +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "Agrupar títulos em assinaturas virtuais" -#: localized_schema.php:80 -msgid "Prefer more accurate feedlist counters to UI speed" -msgstr "" +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "Assinaturas, marcadores e categorias especiais são agrupadas pelos feeds de origem" -#: localized_schema.php:81 -msgid "Enable inline MP3 player" -msgstr "" +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "Língua" -#: localized_schema.php:82 -msgid "" -"Enable the Flash-based XSPF Player to play MP3-format podcast enclosures." -msgstr "" +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "Tema" -#: localized_schema.php:83 -msgid "Do not show images in articles" -msgstr "" +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "Selecione um dos temas CSS disponíveis" -#: localized_schema.php:84 -msgid "Enable external API" -msgstr "" +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "A configuração foi salva" -#: login_form.php:120 modules/popup-dialog.php:271 modules/pref-feeds.php:339 -#: modules/pref-feeds.php:561 mobile/login_form.php:38 -msgid "Login:" -msgstr "Login:" +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "Seus dados pessoais foram salvos." -#: login_form.php:124 modules/popup-dialog.php:273 modules/pref-feeds.php:344 -#: modules/pref-feeds.php:567 mobile/login_form.php:43 -msgid "Password:" -msgstr "Senha:" +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "Sua configuração foi ajustada para os valores padrão." -#: login_form.php:129 -msgid "Language:" -msgstr "Língua:" +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "Dados pessoais / Autenticação" -#: login_form.php:139 -#, fuzzy -msgid "Profile:" -msgstr "Arquivo:" +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "Dados pessoais" -#: login_form.php:152 mobile/login_form.php:28 -#, fuzzy -msgid "Log in" -msgstr "Login" +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "Nome completo" -#: login_form.php:155 register.php:148 -msgid "Create new account" -msgstr "" +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "E-mail" -#: login_form.php:169 -msgid "Limit bandwidth usage" -msgstr "" +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Nível de acesso" -#: opml.php:99 opml.php:103 -msgid "OPML Utility" -msgstr "Utilitário OPML" +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Salvar" -#: opml.php:124 -msgid "Importing OPML (using DOMXML extension)..." -msgstr "Importando OPML (usando a extensão DOMXML)..." +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "Sua senha é a padrão, você deve mudá-la." -#: opml.php:128 -msgid "Importing OPML (using DOMDocument extension)..." -msgstr "Importando OPML (usando a extensão DOMDocument)…" +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "Trocar sua senha atual vai desabilitar a senha descartável." -#: opml.php:132 modules/popup-dialog.php:45 -msgid "DOMXML extension is not found. It is required for PHP versions below 5." -msgstr "" -"A extensão DOMXML não foi encontrada. Ela é exigida para versões do PHP " -"menores que 5." +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Senha antiga" -#: opml.php:136 -msgid "Return to preferences" -msgstr "Retornar às preferências" +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Senha nova" -#: prefs.php:63 prefs.php:123 tt-rss.php:65 -msgid "Loading, please wait..." -msgstr "" +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Confirmar senha" -#: prefs.php:70 prefs.php:126 tt-rss.php:73 -msgid "" -"Your browser doesn't support Javascript, which is required\n" -"\t\tfor this application to function properly. Please check your\n" -"\t\tbrowser settings." -msgstr "" +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "Mudar senha" -#: prefs.php:90 tt-rss.php:112 -msgid "Hello," -msgstr "Olá," +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "Senhas descartáveis / Autenticador" -#: prefs.php:92 help/4.php:14 -msgid "Exit preferences" -msgstr "Sair das preferências" +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "Senhas descartáveis estão ativas. Entre sua senha atual para desabilitar." -#: prefs.php:94 tt-rss.php:122 mobile/functions.php:60 -#: mobile/functions.php:234 -msgid "Logout" -msgstr "Sair" +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "Entre sua senha" -#: prefs.php:102 tt-rss.php:196 -#, fuzzy -msgid "Keyboard shortcuts" -msgstr "  Criar filtro" +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "Desabilitar OTP" -#: prefs.php:108 tt-rss.php:114 help/3.php:63 help/4.php:8 -msgid "Preferences" -msgstr "Preferências" +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "Você precisa de um autenticador compatível para usar esse recurso. Trocar a sua senha principal vai desativar automaticamente o uso de senhas descartáveis." -#: prefs.php:110 -#, fuzzy -msgid "Feeds" -msgstr "Feed" +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "Leia o código abaixo com a aplicação autenticadora." -#: prefs.php:112 help/4.php:11 -#, fuzzy -msgid "Filters" -msgstr "Arquivo:" +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "Entre a senha provisória gerada" -#: prefs.php:117 help/4.php:13 -#, fuzzy -msgid "Users" -msgstr "Usuário" +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "Habilitar OTP" -#: prefs.php:140 tt-rss.php:99 -#, fuzzy -msgid "Fatal Exception" -msgstr "Erro Fatal" +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "É necessário ter o PHP GD para suporte OTP." -#: register.php:152 -msgid "New user registrations are administratively disabled." -msgstr "" +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "Algumas opções só estão disponíveis no perfil padrão." -#: register.php:155 register.php:200 register.php:213 register.php:228 -#: register.php:246 register.php:331 register.php:341 register.php:353 -#: update.php:94 update.php:162 modules/pref-feeds.php:954 -msgid "Return to Tiny Tiny RSS" -msgstr "" +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "Personalizar" -#: register.php:176 -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 "" +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "Registrar" -#: register.php:182 -msgid "Desired login:" -msgstr "" +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "Limpar" -#: register.php:185 -msgid "Check availability" -msgstr "" +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "Hora atual no servidor: %s (UTC)" -#: register.php:187 -#, fuzzy -msgid "Email:" -msgstr "E-mail:" +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Salvar configuração" -#: register.php:190 -msgid "How much is two plus two:" -msgstr "" +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "Salvar e sair das preferências" -#: register.php:193 -msgid "Submit registration" -msgstr "" +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "Gerenciar perfis" -#: register.php:211 -msgid "Your registration information is incomplete." -msgstr "" +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "Reiniciar para o padrão" -#: register.php:226 -msgid "Sorry, this username is already taken." +#: classes/pref/prefs.php:704 +msgid "Plugins" msgstr "" -#: register.php:244 -#, fuzzy -msgid "Registration failed." -msgstr "A checagem da configuração falhou" +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "Você precisa reiniciar o TT-RSS para que as mudanças de plugin façam efeito." -#: register.php:328 -msgid "Account created successfully." -msgstr "" +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "Obtenha mais plugins no forum ou wiki do tt-rss." -#: register.php:350 -msgid "New user registrations are currently closed." -msgstr "" +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "Plugins de sistema" -#: tt-rss.php:118 -#, fuzzy -msgid "Comments?" -msgstr "Conteúdo" +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "Plugin" -#: tt-rss.php:131 -msgid "Offline reading" -msgstr "" +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "Descrição" -#: tt-rss.php:138 -#, fuzzy -msgid "Cancel synchronization" -msgstr "Salvar configuração" +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "Versão" -#: tt-rss.php:141 -msgid "Synchronize" -msgstr "" +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "Autor" -#: tt-rss.php:143 -#, fuzzy -msgid "Remove stored data" -msgstr "Remover as categorias selecionadas?" +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "Mais informações" -#: tt-rss.php:145 -msgid "Go offline" -msgstr "" +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "Limpar dados" -#: tt-rss.php:151 -msgid "New version of Tiny Tiny RSS is available!" -msgstr "" +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "Plugins de usuário" -#: tt-rss.php:158 -msgid "Go online" -msgstr "" +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "Habilitar plugins selecionados" -#: tt-rss.php:169 tt-rss.js:79 -msgid "tag cloud" -msgstr "núvem de tags" +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "Senha provisória é inválida" -#: tt-rss.php:179 -msgid "Search..." -msgstr "" +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "Senha inválida" -#: tt-rss.php:180 -msgid "Feed actions:" -msgstr "Ações do Feed:" +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "Você pode alterar cores, fontes e layout do tema atual com um CSS personalizado. Esse arquivo pode ser usado como referência." -#: tt-rss.php:181 -#, fuzzy -msgid "Subscribe to feed..." -msgstr "Removendo o Feed..." +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "Criar perfil" -#: tt-rss.php:182 -#, fuzzy -msgid "Edit this feed..." -msgstr "Editar" +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(ativo)" -#: tt-rss.php:183 -#, fuzzy -msgid "Rescore feed" -msgstr "Removendo o Feed..." +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "Remover os perfis selecionados?" -#: tt-rss.php:184 modules/pref-feeds.php:465 modules/pref-feeds.php:1193 -msgid "Unsubscribe" +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "Ativar perfil" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." msgstr "" -#: tt-rss.php:186 -msgid "All feeds:" -msgstr "Todos os Feeds:" +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "Sua URL OPML pública é:" -#: tt-rss.php:188 help/3.php:44 -msgid "(Un)hide read feeds" -msgstr "" +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "Gerar nova URL" -#: tt-rss.php:190 -msgid "Other actions:" -msgstr "Outras ações:" +#: 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 "Serviço de atualização está habilitado na configuração, porém, o processo de atualização não está rodando. Isso impede a atualização de todas as assinaturas. Por favor inicie o serviço ou contacte o administrador." -#: tt-rss.php:193 -#, fuzzy -msgid "Create filter..." -msgstr "Criar um usuário" +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "Última atualização:" -#: tt-rss.php:194 -#, fuzzy -msgid "Reset UI layout" -msgstr "  Editar esse Feed" +#: 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 "O serviço de atualização está demorando demais para atualizar um feed. Isso pode indicar um problema. Por favor verifique o processo correspondente ou contacte o administrador." -#: tt-rss.php:195 -#, fuzzy -msgid "Reset category order" -msgstr "Remover as categorias selecionadas?" +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "Você pode ver essa assinatura como RSS usando a seguinte URL:" + +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" -#: tt-rss.php:205 +#: plugins/af_psql_trgm/init.php:112 #, fuzzy -msgid "Collapse feedlist" -msgstr "Todos os feeds" +msgid "Show related articles" +msgstr "Artigos compartilhados" -#: tt-rss.php:208 +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 #, fuzzy -msgid "Show articles" -msgstr "Favoritos" +msgid "Mark similar articles as read" +msgstr "Marcar todos os artigos como lidos?" -#: tt-rss.php:210 -msgid "Adaptive" -msgstr "" +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +#, fuzzy +msgid "Global settings" +msgstr "Incluir configurações" -#: tt-rss.php:211 -msgid "All Articles" +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" msgstr "" -#: tt-rss.php:214 -msgid "Ignore Scoring" +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" msgstr "" -#: tt-rss.php:215 modules/pref-feeds.php:1316 modules/pref-feeds.php:1377 -msgid "Updated" -msgstr "Atualizado" - -#: tt-rss.php:218 +#: plugins/af_psql_trgm/init.php:178 #, fuzzy -msgid "Sort articles" +msgid "Enable for all feeds:" msgstr "Favoritos" -#: tt-rss.php:221 modules/popup-dialog.php:462 modules/pref-filters.php:51 -#: modules/pref-filters.php:469 -#, fuzzy -msgid "Date" -msgstr "Atualizar" - -#: tt-rss.php:223 -msgid "Score" +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" msgstr "" -#: tt-rss.php:227 modules/pref-feeds.php:296 modules/pref-feeds.php:524 -msgid "Update" -msgstr "Atualizar" - -#: tt-rss.php:238 tt-rss.php:252 -msgid "No feed selected." -msgstr "Nenhum feed foi selecionado." - -#: tt-rss.php:242 -msgid "Drag me to resize panels" +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" msgstr "" -#: update.php:19 -msgid "Your access level is insufficient to run this script." -msgstr "Seu nível de acesso é insuficiente para executar esse script." - -#: update.php:44 -msgid "Database Updater" +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" msgstr "" -#: update.php:85 -msgid "Could not update database" +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" msgstr "" -#: update.php:88 -msgid "Could not find necessary schema file, need version:" -msgstr "" +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "Editar anotação sobre o artigo" -#: update.php:89 -msgid ", found: " -msgstr ", encontrou:" +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "Nenhum arquivo enviado." -#: update.php:92 -msgid "Tiny Tiny RSS database is up to date." -msgstr "" +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "Feito. %d de %d artigos importados." + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "O documento está no formato errado." + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "Importar ítens com estrela do Google Reader" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "Cole o arquivo starred.json ou shared.json no formulário abaixo." + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "Importar meus ítens com estrela" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[Encaminhado]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "Múltiplos artigos" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "Clique no link seguinte para ativar seu cliente de e-mail:" + +#: plugins/mailto/init.php:75 +msgid "Forward selected article(s) by email." +msgstr "Encaminhar artigo(s) selecionados por e-mail." + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "Você deve poder editar a mensagem antes de enviar em seu cliente de e-mail." + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "Fechar esta janela" -#: update.php:102 -msgid "Please backup your database before proceeding." -msgstr "Faça uma cópia-de-segurança de seus dados antes de prosseguir." +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "Importar e exportar" -#: update.php:104 -#, php-format -msgid "" -"Your Tiny Tiny RSS database needs update to the latest version (%d to " -"%d)." +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." msgstr "" -#: update.php:118 -msgid "Perform updates" -msgstr "" +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "Exportar meus dados" -#: update.php:123 -msgid "Performing updates..." -msgstr "" +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Importar" -#: update.php:129 -#, php-format -msgid "Updating to version %d..." -msgstr "Atualizando para a versão %d..." +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "" -#: update.php:142 -msgid "Checking version... " -msgstr "Verificando a versão…" +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "Não foi possível importar: Formato de documento desconhecido." -#: update.php:148 -msgid "OK!" -msgstr "OK!" +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "Terminado:" -#: update.php:150 -msgid "ERROR!" -msgstr "ERRO!" +#: plugins/import_export/init.php:388 +#, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "%d artigo processado," +msgstr[1] "%d artigos processados," +msgstr[2] "%d artigos processados," -#: update.php:158 +#: plugins/import_export/init.php:389 #, php-format -msgid "" -"Finished. Performed %d update(s) up to schema\n" -"\t\t\tversion %d." -msgstr "" +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "%d importado," +msgstr[1] "%d importados," +msgstr[2] "%d importados," -#: modules/help.php:6 -#, fuzzy -msgid "Help" -msgstr "Olá," +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "%d feed criado." +msgstr[1] "%d feeds criados." +msgstr[2] "%d feeds criados." -#: modules/help.php:17 -msgid "Help topic not found." -msgstr "Tópico de ajuda não encontrado." +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "Não foi possível ler o documento XML." -#: modules/opml_domdoc.php:52 modules/opml_domxml.php:54 -#, fuzzy, php-format -msgid "
  • Adding category %s.
  • " -msgstr "Adicionando a categoria %s." +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "Preparar dados" -#: modules/opml_domdoc.php:101 modules/opml_domxml.php:103 -msgid "is already imported." +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" msgstr "" -#: modules/opml_domdoc.php:121 modules/opml_domxml.php:122 -#, fuzzy -msgid "OK" -msgstr "OK!" - -#: modules/opml_domdoc.php:130 modules/opml_domxml.php:134 -msgid "Error while parsing document." +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" msgstr "" -#: modules/opml_domdoc.php:134 modules/opml_domxml.php:138 -msgid "Error: please upload OPML file." -msgstr "" +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "Tags para considerar NSFW (separadas por vírgula)" -#: modules/opml_domxml.php:131 -msgid "Error: can't find body element." -msgstr "" +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "Configuração salva." -#: modules/popup-dialog.php:7 -#, fuzzy -msgid "OPML Import" -msgstr "Importar" +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "Por favor, entre sua senha temporária" -#: modules/popup-dialog.php:34 -#, fuzzy -msgid "Importing using DOMXML." -msgstr "Importando OPML (usando a extensão DOMXML)..." +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "Senha foi alterada." -#: modules/popup-dialog.php:40 -#, fuzzy -msgid "Importing using DOMDocument." -msgstr "Importando OPML (usando a extensão DOMDocument)…" +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "Senha antiga incorreta" -#: modules/popup-dialog.php:68 -msgid "Settings Profiles" +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "Fechar artigo" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." msgstr "" -#: modules/popup-dialog.php:75 +#: plugins/mail/init.php:34 #, fuzzy -msgid "Create profile" -msgstr "Criar um usuário" +msgid "Mail plugin" +msgstr "Plugins de usuário" -#: modules/popup-dialog.php:100 modules/popup-dialog.php:128 -msgid "(active)" +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" msgstr "" -#: modules/popup-dialog.php:148 modules/popup-dialog.php:350 -#: modules/pref-feeds.php:455 modules/pref-feeds.php:1136 -#: modules/pref-filters.php:153 modules/pref-filters.php:321 -#: modules/pref-labels.php:140 modules/pref-users.php:378 -msgid "Remove" -msgstr "Remover" - -#: modules/popup-dialog.php:150 -msgid "Activate" -msgstr "" +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "Para:" -#: modules/popup-dialog.php:163 -#, fuzzy -msgid "Published Articles" -msgstr "Publicado" +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "Assunto:" -#: modules/popup-dialog.php:168 -msgid "Your Published articles feed URL is:" -msgstr "" +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "Enviar e-mail" -#: modules/popup-dialog.php:177 +#: plugins/instances/init.php:141 #, fuzzy -msgid "Generate new URL" -msgstr "Gerar um outro endereço" +msgid "Linked" +msgstr "Link" -#: modules/popup-dialog.php:190 -msgid "Notice" -msgstr "" +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" +msgstr "Instância" -#: modules/popup-dialog.php:196 -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 "" +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "URL da instância" -#: modules/popup-dialog.php:200 modules/popup-dialog.php:220 -msgid "Last update:" -msgstr "" +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "Chave de acesso:" -#: modules/popup-dialog.php:208 -msgid "" -"You are running the latest version of Tiny Tiny RSS. The fact that you are " -"seeing this dialog is probably a bug." -msgstr "" +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "Chave de acesso" -#: modules/popup-dialog.php:216 -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 "" +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "Use uma chave de acesso para ambas as instâncias." -#: modules/popup-dialog.php:239 -msgid "Subscribe to Feed" -msgstr "" +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "Gerar uma nova chave" -#: modules/popup-dialog.php:248 modules/pref-feeds.php:197 -#: modules/pref-feeds.php:488 modules/pref-filters.php:407 -msgid "Feed" -msgstr "Feed" +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "Conectar instância" -#: modules/popup-dialog.php:251 modules/pref-feeds.php:213 -#: modules/pref-feeds.php:502 -#, fuzzy -msgid "URL:" -msgstr "Feed URL:" +#: 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 "Você pode conectar outras instâncias to Tiny Tiny RSS a esta para compartilhar assinaturas populares. Conecte a esta instância do Tiny Tiny RSS usando esta URL:" -#: modules/popup-dialog.php:260 modules/pref-feeds.php:225 -#: modules/pref-feeds.php:514 -#, fuzzy -msgid "Place in category:" -msgstr "Salvando categoria..." +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "Última conexão" -#: modules/popup-dialog.php:268 modules/pref-feeds.php:332 -#: modules/pref-feeds.php:558 modules/pref-prefs.php:235 -#: modules/pref-users.php:142 -msgid "Authentication" +#: plugins/instances/init.php:315 +msgid "Status" msgstr "" -#: modules/popup-dialog.php:283 -msgid "This feed requires authentication." -msgstr "Este feed requer autenticação." +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "Inscrições armazenadas" -#: modules/popup-dialog.php:289 modules/popup-dialog.php:349 -msgid "Subscribe" -msgstr "" +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "Criar link" -#: modules/popup-dialog.php:290 -#, fuzzy -msgid "More feeds" -msgstr "Removendo o Feed..." +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" -#: modules/popup-dialog.php:291 modules/popup-dialog.php:351 -#: modules/popup-dialog.php:425 modules/popup-dialog.php:543 -#: modules/popup-dialog.php:612 modules/pref-feeds.php:468 -#: modules/pref-feeds.php:623 modules/pref-filters.php:160 -#: modules/pref-users.php:181 -msgid "Cancel" -msgstr "Cancelar" +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" -#: modules/popup-dialog.php:298 +#: plugins/af_redditimgur/init.php:69 #, fuzzy -msgid "Feed Browser" -msgstr "Editor de Feed" +msgid "Configuration saved" +msgstr "Configuração salva." -#: modules/popup-dialog.php:317 modules/popup-dialog.php:359 -#: modules/popup-dialog.php:424 modules/pref-feeds.php:1177 -#: modules/pref-filters.php:308 modules/pref-labels.php:131 -#: modules/pref-users.php:361 -msgid "Search" +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" msgstr "" -#: modules/popup-dialog.php:321 +#: plugins/af_readability/init.php:57 #, fuzzy -msgid "Popular feeds" -msgstr "Todos os feeds" +msgid "Readability" +msgstr "Verificar disponibilidade" -#: modules/popup-dialog.php:322 +#: plugins/af_readability/init.php:68 #, fuzzy -msgid "Feed archive" -msgstr "Ações do Feed:" +msgid "Inline article content" +msgstr "Editar anotação sobre o artigo" -#: modules/popup-dialog.php:325 -#, fuzzy -msgid "limit:" -msgstr "Limite:" +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "Artigos compartilhados" -#: modules/popup-dialog.php:371 -msgid "Look for" +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" msgstr "" -#: modules/popup-dialog.php:378 -msgid "match on" +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" msgstr "" -#: modules/popup-dialog.php:383 -msgid "Title or content" -msgstr "Título ou conteúdo" +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" -#: modules/popup-dialog.php:388 -msgid "Limit search to:" +#: plugins/af_sort_bayes/init.php:216 +msgid "Statistics" msgstr "" -#: modules/popup-dialog.php:404 -msgid "This feed" +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" msgstr "" -#: modules/popup-dialog.php:438 +#: plugins/af_sort_bayes/init.php:235 #, fuzzy -msgid "Create Filter" -msgstr "Criar um usuário" +msgid "Last matched articles" +msgstr "Artigos com estrela" -#: modules/popup-dialog.php:457 modules/pref-filters.php:42 -#: modules/pref-filters.php:406 -msgid "Match" -msgstr "" +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "Limpar dados" -#: modules/popup-dialog.php:465 modules/pref-filters.php:54 -#: modules/pref-filters.php:441 -msgid "before" +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" msgstr "" -#: modules/popup-dialog.php:466 modules/pref-filters.php:55 -#: modules/pref-filters.php:442 -#, fuzzy -msgid "after" -msgstr "Atualizar" +#: plugins/af_sort_bayes/init.php:376 +#, fuzzy, php-format +msgid "Currently stored as: %s" +msgstr "Hora atual no servidor: %s (UTC)" -#: modules/popup-dialog.php:478 modules/pref-filters.php:68 -msgid "Check it" +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" msgstr "" -#: modules/popup-dialog.php:481 modules/pref-filters.php:71 -msgid "on field" +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" msgstr "" -#: modules/popup-dialog.php:487 modules/pref-filters.php:77 -#, fuzzy -msgid "in" -msgstr "Link" +#: 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 "Arraste o link abaixo para a barra de ferramentas do seu navegador, abra o feed que você se interessar em seu navegador e clique no link para assinar." -#: modules/popup-dialog.php:492 modules/pref-filters.php:82 -#, fuzzy -msgid "Perform Action" -msgstr "Ação" +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "Assinar %s em TT-Rss?" -#: modules/popup-dialog.php:509 modules/pref-filters.php:102 -msgid "with parameters:" +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Assinar em TT-Rss" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "" -#: modules/popup-dialog.php:522 modules/pref-feeds.php:355 -#: modules/pref-feeds.php:576 modules/pref-filters.php:121 -#: modules/pref-users.php:164 -#, fuzzy -msgid "Options" -msgstr "Opções:" +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "Você pode desabilitar todos os artigos compartilhados por URLs únicas aqui." -#: modules/popup-dialog.php:528 modules/pref-filters.php:133 -msgid "Enabled" -msgstr "Ativado" +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "Cancelar compartilhamento de todos os artigos" -#: modules/popup-dialog.php:531 modules/pref-filters.php:142 -msgid "Inverse match" -msgstr "" +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "Compartilhar pela URL" -#: modules/popup-dialog.php:541 -msgid "Create" -msgstr "Criar" +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "Você pode compartilhar esse artigo pela seguinte URL:" + +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "Remover compartilhamento" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "O erro será enviado para o arquivo de log configurado." -#: modules/popup-dialog.php:555 -msgid "Update Errors" +#: js/functions.js:90 +msgid "Report to tt-rss.org" msgstr "" -#: modules/popup-dialog.php:558 -msgid "These feeds have not been updated because of errors:" +#: js/functions.js:93 +msgid "Close" msgstr "" -#: modules/popup-dialog.php:584 -msgid "Edit Tags" -msgstr "Editar Tags" +#: js/functions.js:104 +#, fuzzy +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "Tem certeza de que deseja enviar esta excessão para o site tt-rss.org? O relatório vai incluir informações sobre o seu navegador. Seu endereço IP será salvo no banco de dados." -#: modules/popup-dialog.php:589 -msgid "Tags for this article (separated by commas):" -msgstr "" +#: js/functions.js:224 +msgid "Click to close" +msgstr "Clique para fechar" -#: modules/popup-dialog.php:611 modules/pref-feeds.php:467 -#: modules/pref-feeds.php:621 modules/pref-filters.php:157 -#: modules/pref-users.php:179 -msgid "Save" -msgstr "Salvar" +#: js/functions.js:1051 +msgid "Edit action" +msgstr "Editar ação" -#: modules/popup-dialog.php:620 -#, fuzzy -msgid "Tag Cloud" -msgstr "Núvem de tags" +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "Criar um filtro" -#: modules/popup-dialog.php:623 -msgid "Showing most popular tags " -msgstr "Exibir as Tags mais populares." +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "Reiniciar a assinatura? Tiny Tiny RSS vai tentar reassinar no hub de notificações na próxima atualização." -#: modules/popup-dialog.php:624 -#, fuzzy -msgid "more tags" -msgstr "sem tags" +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "Reiniciar assinatura." -#: modules/pref-feeds.php:4 -msgid "Check to enable field" -msgstr "" +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "Cancelar inscrição de %s?" -#: modules/pref-feeds.php:187 -#, fuzzy -msgid "Feed Editor" -msgstr "Editor de Feed" +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "Removendo o Feed..." -#: modules/pref-feeds.php:242 -msgid "Link to feed:" -msgstr "" +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "Por favor entre o título da categoria:" -#: modules/pref-feeds.php:259 -msgid "Not linked" +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" msgstr "" -#: modules/pref-feeds.php:310 modules/pref-feeds.php:537 -msgid "using" -msgstr "" +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Tentando alterar endereço ..." -#: modules/pref-feeds.php:322 modules/pref-feeds.php:549 -msgid "Article purging:" -msgstr "" +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "Nenhum feed foi selecionado." -#: modules/pref-feeds.php:369 modules/pref-feeds.php:582 -msgid "Hide from Popular feeds" -msgstr "" +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "Remover as assinaturas selecionadas do arquivo? Assinaturas com artigos armazenados não serão removidas." -#: modules/pref-feeds.php:380 modules/pref-feeds.php:587 -msgid "Right-to-left content" -msgstr "" +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "Inscrições com erro na atualização" -#: modules/pref-feeds.php:392 modules/pref-feeds.php:593 -msgid "Include in e-mail digest" -msgstr "" +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "Remover inscrições selecionadas?" -#: modules/pref-feeds.php:405 modules/pref-feeds.php:599 -msgid "Always display image attachments" -msgstr "" +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "Removendo inscrições selecionadas…" -#: modules/pref-feeds.php:427 modules/pref-feeds.php:607 -msgid "Cache images locally" -msgstr "" +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "Editar categoria" -#: modules/pref-feeds.php:439 -#, fuzzy -msgid "Icon" -msgstr "Ação" +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "Remover categoria" -#: modules/pref-feeds.php:453 -msgid "Replace" -msgstr "" +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "Invertido" -#: modules/pref-feeds.php:478 -#, fuzzy -msgid "Multiple Feed Editor" -msgstr "Editor de Feed" +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "Por favor entre login:" -#: modules/pref-feeds.php:842 modules/pref-feeds.php:889 -msgid "All done." -msgstr "" +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "Não foi possível criar o usuário: Nenhum nome foi especificado." -#: modules/pref-feeds.php:920 -#, php-format -msgid "Subscribed to %s." -msgstr "" +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "Adicionando o usuário…" -#: modules/pref-feeds.php:923 -#, fuzzy, php-format -msgid "Could not subscribe to %s." -msgstr "Não pode criar o usuário %s" +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Editor de usuários" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "Salvando dados..." + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "Editar filtros" + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "Remover filtro?" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "Removendo filtro..." + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "Remover marcadores selecionados?" -#: modules/pref-feeds.php:926 -#, php-format -msgid "Already subscribed to %s." -msgstr "" +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "Removendo marcadores selecionados..." -#: modules/pref-feeds.php:949 -msgid "Edit subscription options" -msgstr "" +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "Nenhum marcador está selecionado." -#: modules/pref-feeds.php:1033 -msgid "Category editor" -msgstr "Editor de Categoria" +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "Remover usuários selecionados? A sua conta e a do administrador não serão removidas." -#: modules/pref-feeds.php:1056 -#, php-format -msgid "Category $%s already exists in the database." -msgstr "A categoria $%s já existe na base de dados." +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "Removendo usuários selecionados…" -#: modules/pref-feeds.php:1077 -msgid "Create category" -msgstr "Criar categoria" +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "Nenhum usuário foi selecionado." -#: modules/pref-feeds.php:1130 -msgid "No feed categories defined." -msgstr "" +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "Remover os filtros selecionados?" -#: modules/pref-feeds.php:1160 -msgid "Some feeds have update errors (click for details)" -msgstr "Alguns feeds estão com erros (clique aqui para detalhes)" +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "Removendo filtros selecionados…" -#: modules/pref-feeds.php:1181 help/3.php:45 help/4.php:22 -msgid "Subscribe to feed" -msgstr "" +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "Nenhum filtro foi selecionado." -#: modules/pref-feeds.php:1184 -#, fuzzy -msgid "Edit feeds" -msgstr "Editar" +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "Cancelar inscrição dos feeds selecionados?" -#: modules/pref-feeds.php:1189 -msgid "Edit categories" -msgstr "Editar categorias" +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "Cancelando inscrição dos feeds selecionados..." -#: modules/pref-feeds.php:1198 -#, fuzzy -msgid "More actions..." -msgstr "Ações..." +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "Por favor selecione somente um feed" -#: modules/pref-feeds.php:1202 -msgid "Manual purge" -msgstr "" +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "Apagar todos os arquivos sem estrela na inscrição selecionada?" -#: modules/pref-feeds.php:1206 -#, fuzzy -msgid "Clear feed data" -msgstr "Salvando o Feed..." +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "Limpando inscrição selecionada..." -#: modules/pref-feeds.php:1207 modules/pref-filters.php:324 -#, fuzzy -msgid "Rescore articles" -msgstr "Favoritos" +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "Manter os artigos por quantos dias (0 para usar o padrão)?" -#: modules/pref-feeds.php:1296 -msgid "Show last article times" -msgstr "" +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "Apagando assinatura selecionada..." -#: modules/pref-feeds.php:1313 modules/pref-feeds.php:1373 -msgid "Last Article" -msgstr "" +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "Por favor selecione somente um usuário." -#: modules/pref-feeds.php:1398 modules/pref-filters.php:487 -#: modules/pref-users.php:467 -msgid "Click to edit" -msgstr "" +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "Reiniciar a senha do usuário selecionado?" -#: modules/pref-feeds.php:1412 -#, php-format -msgid "(linked to %s)" -msgstr "" +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "Reiniciando a senha do usuário selecionado..." -#: modules/pref-feeds.php:1439 -msgid "You don't have any subscribed feeds." -msgstr "" +#: js/prefs.js:565 +msgid "User details" +msgstr "Detalhes do usuário" -#: modules/pref-feeds.php:1441 -#, fuzzy -msgid "No matching feeds found." -msgstr "Sem Feeds para exibir." +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "Por favor selecione somente um filtro." -#: modules/pref-feeds.php:1447 -msgid "OPML" -msgstr "OPML" +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "Combinar os filtros selecionados?" -#: modules/pref-feeds.php:1470 -msgid "Import" -msgstr "Importar" +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "Combinando filtros..." -#: modules/pref-feeds.php:1475 -msgid "Export OPML" -msgstr "Exportar OPML" +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "Editar múltiplas assinaturas" -#: modules/pref-feeds.php:1478 -msgid "Firefox Integration" -msgstr "" +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "Salvar alterações nas inscrições selecionadas?" -#: modules/pref-feeds.php:1480 -msgid "" -"This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the " -"link below." -msgstr "" +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "Importar OPML" -#: modules/pref-feeds.php:1487 -msgid "Click here to register this site as a feed reader." -msgstr "" +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "Por favor selecione um arquivo OPML." -#: modules/pref-feeds.php:1498 -msgid "" -"Published articles are exported as a public RSS feed and can be subscribed " -"by anyone who knows the URL specified below." -msgstr "" +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "Importando, por favor aguarde..." -#: modules/pref-feeds.php:1501 -msgid "Display URL" -msgstr "" +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "Usar o padrão?" -#: modules/pref-feeds.php:1604 -#, fuzzy, php-format -msgid "%d archived articles" -msgstr "Favoritos" +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "Adicionando inscrições..." -#: modules/pref-feeds.php:1633 -#, fuzzy -msgid "No feeds found." -msgstr "Sem Feeds para exibir." +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "Limpar dados armazenados para este plugin?" -#: modules/pref-filters.php:23 -#, fuzzy -msgid "Filter Editor" -msgstr "Editor de Feed" +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "Limpar todas as mensagems no registro de erro?" -#: modules/pref-filters.php:212 -#, php-format -msgid "Saved filter %s" -msgstr "" +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "Marcar todos os artigos como lidos?" -#: modules/pref-filters.php:266 -#, php-format -msgid "Created filter %s" -msgstr "" +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "Marcando todos os feeds como lidos..." -#: modules/pref-filters.php:315 help/3.php:31 help/4.php:25 -msgid "Create filter" -msgstr "" +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "Por favor habilite o plugin de e-mail." -#: modules/pref-filters.php:318 modules/pref-users.php:376 -msgid "Edit" -msgstr "Editar" +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "Você não pode editar esse tipo de feed." -#: modules/pref-filters.php:408 -#, fuzzy -msgid "Field" -msgstr "Feed" +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "Por favor, habilite o plugin \"embed_original\"." -#: modules/pref-filters.php:409 -msgid "Params" +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." msgstr "" -#: modules/pref-filters.php:476 -msgid "(Disabled)" -msgstr "(Desativado)" +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "Você não pode classificar esse tipo de assinatura." -#: modules/pref-filters.php:492 -msgid "(Inverse)" -msgstr "(Inverso)" +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "Por favor selecione alguma inscrição." -#: modules/pref-filters.php:512 -msgid "No filters defined." -msgstr "" +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "Reclassificar artigos em %s?" + +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "Reclassificando artigos..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "Nenhum artigo foi selecionado." + +#: js/viewfeed.js:1018 +#, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "Apagar %d artigo selecionado em %s?" +msgstr[1] "Apagar %d artigos selecionados em %s?" +msgstr[2] "Apagar %d artigos selecionados em %s?" + +#: js/viewfeed.js:1020 +#, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "Apagar %d artigo selecionado?" +msgstr[1] "Apagar %d artigos selecionados?" +msgstr[2] "Apagar %d artigos selecionados?" + +#: js/viewfeed.js:1062 +#, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "Arquivar %d artigo em %s?" +msgstr[1] "Arquivar %d artigos em %s?" +msgstr[2] "Arquivar %d artigos em %s?" + +#: js/viewfeed.js:1065 +#, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "Mover %d artigo de volta?" +msgstr[1] "Mover %d artigos de volta?" +msgstr[2] "Mover %d artigos de volta?" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "Por favor note que artigos sem estrela podem ser removidos na próxima atualização." + +#: js/viewfeed.js:1112 +#, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "Marcar %d artigo selecionado em %s como lido?" +msgstr[1] "Marcar %d artigos selecionados em %s como lidos?" +msgstr[2] "Marcar %d artigos selecionados em %s como lidos?" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "Editar Tags do artigo" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "Salvando tags..." + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +#, fuzzy +msgid "Click to open next unread feed." +msgstr "Clique para editar inscrição" + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "Abrir o artigo original" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Incluir marcador" -#: modules/pref-filters.php:514 -msgid "No matching filters found." -msgstr "" +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "Remover marcador" -#: modules/pref-labels.php:102 -#, php-format -msgid "Created label %s" -msgstr "" +#: js/viewfeed.js:2159 +#, fuzzy +msgid "Select articles in group" +msgstr "Selecionar artigo sob o cursor" -#: modules/pref-labels.php:137 help/3.php:30 help/4.php:26 -msgid "Create label" +#: js/viewfeed.js:2168 +#, fuzzy +msgid "Mark group as read" +msgstr "Marcar como lido" + +#: js/viewfeed.js:2180 +#, fuzzy +msgid "Mark feed as read" +msgstr "Marcar como lido" + +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "Por favor entre uma nova classificação para os artigos selecionados:" + +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "Por favor entre uma nova classificação para esse artigo:" + +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "URL do artigo:" + +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." msgstr "" -#: modules/pref-labels.php:143 +#: plugins/af_psql_trgm/init.js:11 #, fuzzy -msgid "Clear colors" +msgid "Related articles" msgstr "Favoritos" -#: modules/pref-labels.php:223 +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "Salvando anotação..." + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Importar do Google Reader" + +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "Por favor selecione primeiro um arquivo." + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "Encaminhar artigo por email" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "Exportar dados" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "Exportação de %d artigo terminada. Você pode baixar os dados aqui." +msgstr[1] "Exportação de %d artigos terminada. Você pode baixar os dados aqui." +msgstr[2] "Exportação de %d artigos terminada. Você pode baixar os dados aqui." + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Importar dados" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "Por favor selecione primeiro o arquivo." + +#: plugins/shorten_expanded/init.js:37 #, fuzzy -msgid "Click to change color" +msgid "Click to expand article" msgstr "Favoritos" -#: modules/pref-labels.php:246 -msgid "No labels defined." +#: plugins/mail/mail.js:36 +msgid "Error sending email:" msgstr "" -#: modules/pref-labels.php:248 -msgid "No matching labels found." -msgstr "" +#: plugins/mail/mail.js:38 +#, fuzzy +msgid "Your message has been sent." +msgstr "Seus dados pessoais foram salvos." -#: modules/pref-labels.php:306 -msgid "custom color:" -msgstr "" +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "Conectar instância" -#: modules/pref-labels.php:307 -msgid "foreground" -msgstr "" +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "Editar instância" -#: modules/pref-labels.php:308 -msgid "background" -msgstr "" +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "Remover as instâncias selecionadas?" -#: modules/pref-prefs.php:37 -msgid "Old password cannot be blank." -msgstr "A senha antiga não pode ser vazia." +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "Removendo instâncias selecionadas..." -#: modules/pref-prefs.php:42 -msgid "New password cannot be blank." -msgstr "A nova senha não pode ser vazia." +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "Nenhuma instância foi selecionada." -#: modules/pref-prefs.php:47 -msgid "Entered passwords do not match." -msgstr "As senhas informadas não conferem." +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "Por favor selecione apenas uma instância" -#: modules/pref-prefs.php:74 -msgid "Password has been changed." -msgstr "" +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "Limpar dados da inscrição" -#: modules/pref-prefs.php:76 -msgid "Old password is incorrect." -msgstr "Senha antiga incorreta" +#: plugins/af_sort_bayes/init.js:70 +#, fuzzy +msgid "Classifier information" +msgstr "Ação" -#: modules/pref-prefs.php:104 -msgid "The configuration was saved." -msgstr "" +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "Compartilhar artigo pela URL" -#: modules/pref-prefs.php:120 -#, php-format -msgid "Unknown option: %s" -msgstr "" +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "Gerar uma nova URL de compartilhamento para esse artigo?" -#: modules/pref-prefs.php:131 -msgid "E-mail has been changed." -msgstr "E-mail alterado." +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "Tentando mudar a URL..." -#: modules/pref-prefs.php:171 -msgid "" -"Your password is at default value, \n" -"\t\t\t\t\t\tplease change it." +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "Remover compartilhamento deste artigo?" + +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "Tentando remover compartilhamento ..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" msgstr "" -"Sua senha é a padrão, \n" -"\t\t\t\t\t\tvocê deve mudá-la." -#: modules/pref-prefs.php:198 -msgid "Personal data" +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "Limpando URLs..." + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." msgstr "" -#: modules/pref-prefs.php:205 -msgid "E-mail" -msgstr "E-mail" +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "Marcar todos os artigos em %s como lidos?" -#: modules/pref-prefs.php:216 -#, fuzzy -msgid "Access level" -msgstr "Nível de acesso:" +#: js/feedlist.js:435 +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "Marcar todos os artigos em %s e com mais de 1 dia como lidos?" -#: modules/pref-prefs.php:229 -msgid "Change e-mail" -msgstr "Mudar E-mail" +#: js/feedlist.js:438 +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "Marcar todos os artigos em %s e com mais de 1 semana como lidos?" -#: modules/pref-prefs.php:237 -msgid "Old password" -msgstr "Senha antiga" +#: js/feedlist.js:441 +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "Marcar todos os artigos em %s e com mais de 2 semanas como lidos?" -#: modules/pref-prefs.php:244 -msgid "New password" -msgstr "Senha nova" +#: js/functions.js:615 +msgid "Error explained" +msgstr "Detalhamento do erro" -#: modules/pref-prefs.php:252 -msgid "Confirm password" -msgstr "Confirmar senha" +#: js/functions.js:697 +msgid "Upload complete." +msgstr "Upload completo." -#: modules/pref-prefs.php:268 -msgid "Change password" -msgstr "Mudar senha" +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "Remover o ícone armazenado para essa assinatura?" + +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "Removendo icone da assinatura..." -#: modules/pref-prefs.php:323 -msgid "Select theme" -msgstr "Selecionar o tema" +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "Ãcone da inscrição foi removido." + +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "Por favor selecione um arquivo de imagem para enviar." + +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "Enviar novo icone para essa inscrição?" -#: modules/pref-prefs.php:383 modules/pref-prefs.php:388 -msgid "Yes" -msgstr "Sim" +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "Enviando, por favor aguarde..." -#: modules/pref-prefs.php:385 modules/pref-prefs.php:388 -msgid "No" -msgstr "Não" +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "Por favor entre o título do marcador:" -#: modules/pref-prefs.php:409 -msgid "Save configuration" -msgstr "Salvar configuração" +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "Não foi posso criar o marcador: Falta o título" -#: modules/pref-prefs.php:412 -msgid "Manage profiles" -msgstr "" +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "Assinar inscrição" -#: modules/pref-prefs.php:415 -msgid "Reset to defaults" +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." msgstr "" -#: modules/pref-users.php:7 -#, fuzzy -msgid "Your access level is insufficient to open this tab." -msgstr "Seu nível de acesso é insuficiente para executar esse script." +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "%s assinado" -#: modules/pref-users.php:17 -msgid "User details" -msgstr "Detalhes do usuário" +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "URL informada parece ser inválida." -#: modules/pref-users.php:31 -#, fuzzy -msgid "User not found" -msgstr "Feed não encontrado." +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "A URL informada não parece conter nenhum feed." -#: modules/pref-users.php:50 modules/pref-users.php:428 -msgid "Registered" -msgstr "" +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "Expandir inscrição selecionada" -#: modules/pref-users.php:51 -#, fuzzy -msgid "Last logged in" -msgstr "Último Login" +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "Não foi possível baixar a URL informada: %s" -#: modules/pref-users.php:58 -msgid "Subscribed feeds count" -msgstr "" +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "Erro na validação do XML: %s" -#: modules/pref-users.php:62 -msgid "Subscribed feeds" -msgstr "" +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "Você já assinou este feed." -#: modules/pref-users.php:108 -#, fuzzy -msgid "User Editor" -msgstr "Editor de usuário" +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "Editar regra" -#: modules/pref-users.php:145 -#, fuzzy -msgid "Access level: " -msgstr "Nível de acesso:" +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "Editar inscrição" -#: modules/pref-users.php:158 -#, fuzzy -msgid "Change password to" -msgstr "Mudar senha" +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "Mais inscrições" -#: modules/pref-users.php:167 -#, fuzzy -msgid "E-mail: " -msgstr "E-mail:" +#: js/functions.js:1878 +msgid "Help" +msgstr "Ajuda," -#: modules/pref-users.php:201 -#, php-format -msgid "Changed password of user %s." -msgstr "Alterada a senha do usuário %s." +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "Remover a categoria %s? As assinaturas associadas serão colocadas em \"Não categorizadas\"." -#: modules/pref-users.php:249 -#, php-format -msgid "Added user %s with password %s" -msgstr "Adicionado usuário %s com senha %s" +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "Removendo categoria..." -#: modules/pref-users.php:256 -#, php-format -msgid "Could not create user %s" -msgstr "Não pode criar o usuário %s" +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "Remover as categorias selecionadas?" -#: modules/pref-users.php:260 -#, php-format -msgid "User %s already exists." -msgstr "O usuário %s já existe." +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "Removendo categorias selecionadas…" -#: modules/pref-users.php:280 -#, php-format -msgid "" -"Changed password of user %s\n" -"\t\t\t\t\t to %s" -msgstr "" -"Alterada a senha do usuário %s\n" -"\t\t\t\t\t para %s" +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "Nenhuma categoria foi selecionada." -#: modules/pref-users.php:284 -#, fuzzy, php-format -msgid "Notifying %s." -msgstr "Adicionando a categoria %s." +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "Título da categoria..." -#: modules/pref-users.php:321 -msgid "[tt-rss] Password change notification" -msgstr "" +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "Criando categoria..." -#: modules/pref-users.php:370 help/4.php:27 -msgid "Create user" -msgstr "Criar um usuário" +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "Inscrições sem atualização recente" -#: modules/pref-users.php:374 -#, fuzzy -msgid "Details" -msgstr "Diariamente" +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "Substituir o endereço de publicação OPML por um novo?" -#: modules/pref-users.php:380 -msgid "Reset password" -msgstr "" +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "Limpando inscrição..." -#: modules/pref-users.php:426 -msgid "Login" -msgstr "Login" +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "Reclassificar artigos nas inscrições selecionadas?" -#: modules/pref-users.php:427 -msgid "Access Level" -msgstr "Nível de acesso" +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "Removendo inscrições selecionadas…" -#: modules/pref-users.php:429 -msgid "Last login" -msgstr "Último Login" +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "Reclassificar todos os artigos? Esta operação pode demorar um bom tempo." -#: modules/pref-users.php:487 -#, fuzzy -msgid "No users defined." -msgstr "Nenhum usuário foi selecionado." +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "Reclassificando assinaturas..." -#: modules/pref-users.php:489 -msgid "No matching users found." -msgstr "" +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "Reiniciar marcadores selecionados para a cor padrão?" -#: help/2.php:1 +#: js/prefs.js:1403 #, fuzzy -msgid "Content filtering" -msgstr "Filtrando o conteúdo" +msgid "Settings Profiles" +msgstr "Criando perfil..." -#: help/2.php:3 -msgid "" -"Tiny Tiny RSS has support for filtering (or processing) articles. Filtering " -"is done once, when new article is imported to the database from the " -"newsfeed, specified field is matched against regular expression and some " -"action is taken. Regular expression matching is case-insensitive." -msgstr "" +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "Remover os perfis selecionados? O perfil ativo e os perfis padrão não serão removidos." -#: help/2.php:5 -msgid "" -"Supported actions are: filter (do not import) article, mark article as read, " -"set starred, assign tag(s), and set score. Filters can be defined globally " -"and for some specific feed." -msgstr "" +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "Removendo perfis selecionados…" -#: help/2.php:7 -msgid "" -"Multiple and inverse matching are supported. All matching filters are " -"considered when article is being imported and all actions executed in " -"sequence. Inverse matching reverts matching result, e.g. filter matching " -"XYZZY in title with inverse flag will match all articles, except those " -"containing string XYZZY in title." -msgstr "" +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "Nenhum perfil está selecionado." -#: help/2.php:9 -msgid "See also:" -msgstr "" +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "Ativar o perfil selecionado?" -#: help/3.php:1 help/4.php:1 -#, fuzzy -msgid "Keyboard Shortcuts" -msgstr "  Criar filtro" +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "Por favor, selecione um perfil para ativar." -#: help/3.php:5 -#, fuzzy -msgid "Navigation" -msgstr "Salvar configuração" +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "Criando perfil..." -#: help/3.php:8 -msgid "Move between feeds" +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" msgstr "" -#: help/3.php:9 -#, fuzzy -msgid "Move between articles" -msgstr "Favoritos" +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "URLs automaticas limpas." -#: help/3.php:10 -#, fuzzy -msgid "Show search dialog" -msgstr "Favoritos" +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Editor de marcador" -#: help/3.php:13 -#, fuzzy -msgid "Active article actions" -msgstr "Favoritos" +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "Você não pode cancelar a inscrição dessa categoria." -#: help/3.php:16 -#, fuzzy -msgid "Toggle starred" -msgstr "Marcar como favorito" +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "Cancelar pesquisa" -#: help/3.php:17 +#: js/viewfeed.js:174 #, fuzzy -msgid "Toggle published" -msgstr "Publicado" - -#: help/3.php:18 -msgid "Toggle unread" -msgstr "" +msgid "New articles found, reload feed to continue." +msgstr "Nenhum artigo foi encontrado para exibir." -#: help/3.php:19 -#, fuzzy -msgid "Edit tags" -msgstr "Editar Tags" +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Remover estrela" -#: help/3.php:20 -msgid "Open article in new window" -msgstr "" +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "Incluir estrela" -#: help/3.php:21 -#, fuzzy -msgid "Mark articles below/above active one as read" -msgstr "Marcando todos os feeds como lidos..." +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "Cancelar publicação" -#: help/3.php:22 -msgid "Scroll article content" -msgstr "" +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Publicar artigo" -#: help/3.php:26 help/4.php:30 -#, fuzzy -msgid "Other actions" -msgstr "Outras ações:" +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "%d artigo selecionado" +msgstr[1] "%d artigos selecionados" +msgstr[2] "%d artigos selecionados" -#: help/3.php:29 -msgid "Select article under mouse cursor" -msgstr "" +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "Nenhum artigo foi selecionado." -#: help/3.php:32 -#, fuzzy -msgid "Collapse sidebar" -msgstr "Todos os feeds" +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "Nenhum artigo foi encontrado para marcar" -#: help/3.php:33 -#, fuzzy -msgid "Toggle category reordering mode" -msgstr "Remover as categorias selecionadas?" +#: js/viewfeed.js:1452 +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "Marcar %d artigo como lido?" +msgstr[1] "Marcar %d artigos como lidos?" +msgstr[2] "Marcar %d artigos como lidos?" -#: help/3.php:34 help/4.php:34 -msgid "Display this help dialog" -msgstr "" +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "Mostrar URL do artigo" -#: help/3.php:39 -#, fuzzy -msgid "Feed actions" -msgstr "Ações do Feed:" +#~ msgid "Select by tags..." +#~ msgstr "Selecionar por marcadores..." -#: help/3.php:42 -#, fuzzy -msgid "Update active feed" -msgstr "Favoritos" +#~ msgid "Limit search to:" +#~ msgstr "Limitar pesquisa a:" -#: help/3.php:43 -#, fuzzy -msgid "Update all feeds" -msgstr "Favoritos" +#~ msgid "This feed" +#~ msgstr "Esta assinatura" -#: help/3.php:46 -#, fuzzy -msgid "Edit feed" -msgstr "Editar" +#~ msgid "Old password cannot be blank." +#~ msgstr "A senha antiga não pode ser vazia." -#: help/3.php:47 -msgid "Sort by name or unread count" -msgstr "" +#~ msgid "New password cannot be blank." +#~ msgstr "A nova senha não pode ser vazia." -#: help/3.php:48 -#, fuzzy -msgid "Hide visible read articles" -msgstr "Favoritos" +#~ msgid "Entered passwords do not match." +#~ msgstr "As senhas informadas não conferem." -#: help/3.php:49 -#, fuzzy -msgid "Mark feed as read" -msgstr "Marcar como lido" +#~ msgid "Function not supported by authentication module." +#~ msgstr "Função não suportada pelo módulo de autenticação." -#: help/3.php:50 -#, fuzzy -msgid "Reverse headlines order" -msgstr "Remover as categorias selecionadas?" +#~ msgid "All tags." +#~ msgstr "Todas as tags" -#: help/3.php:51 -#, fuzzy -msgid "Mark all feeds as read" -msgstr "Marcando todos os feeds como lidos..." +#~ msgid "Which Tags?" +#~ msgstr "Quais tags?" -#: help/3.php:52 -msgid "If viewing category, (un)collapse it" -msgstr "" +#~ msgid "Select item(s) by tags" +#~ msgstr "Selecionar item(s) pelas tags" -#: help/3.php:55 help/4.php:5 -msgid "Go to..." -msgstr "" +#~ msgid "Unread First" +#~ msgstr "Não Lidos primeiro" -#: help/3.php:62 -msgid "Tag cloud" -msgstr "Núvem de tags" +#~ msgid "Unknown option: %s" +#~ msgstr "Opção desconhecida: %s" -#: help/3.php:69 help/4.php:41 -#, fuzzy -msgid "Press any key to close this window." -msgstr "Fechar esta janela" +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "Uma nova versão do TT-Rss está disponível!" -#: help/4.php:9 -msgid "My Feeds" -msgstr "Meus Feeds" +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "Falha ao validar a sessão (Mudança de navegador)" -#: help/4.php:10 -msgid "Other Feeds" -msgstr "Outros Feeds" +#~ msgid "Assign articles to labels automatically" +#~ msgstr "Incluir marcadores nos artigos automaticamente" -#: help/4.php:19 -#, fuzzy -msgid "Panel actions" -msgstr "Ações do Feed:" +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "Uma nova versão do Tiny Tiny RSS está disponível (%s)" -#: help/4.php:23 -msgid "Top 25 feeds" -msgstr "" +#~ msgid "You can update using built-in updater in the Preferences or by using update.php" +#~ msgstr "Você pode atualizar usando o atualizador interno nas preferências ou usando update.php" -#: help/4.php:24 -#, fuzzy -msgid "Edit feed categories" -msgstr "Editar categorias" +#~ msgid "See the release notes" +#~ msgstr "Veja as notas de lançamento" -#: help/4.php:33 -msgid "Focus search (if present)" -msgstr "" +#~ msgid "Download" +#~ msgstr "Baixar" -#: help/4.php:39 -msgid "" -"Note: not all actions may be available, depending on Tiny Tiny RSS " -"configuration and your access level." -msgstr "" +#~ msgid "Error receiving version information or no new version available." +#~ msgstr "Erro ao receber informação de versão ou nenhuma atualização disponível." -#: mobile/functions.php:59 mobile/functions.php:136 mobile/functions.php:172 -#: mobile/functions.php:199 mobile/functions.php:233 mobile/functions.php:356 -#: mobile/prefs.php:25 -msgid "Home" -msgstr "" +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Atualizar TT-RSS" -#: mobile/functions.php:392 -msgid "Nothing found (click to reload feed)." -msgstr "" +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "Sua instalação do TT-Rss está atualizada." -#: mobile/prefs.php:30 #, fuzzy -msgid "Enable categories" -msgstr "Editar categorias" +#~ msgid "Force update" +#~ msgstr "Executar atualização" -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "ON" -msgstr "" +#~ msgid "Do not close this dialog until updating is finished." +#~ msgstr "Não feche esta janela até que a atualização esteja terminada." -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "OFF" -msgstr "" +#~ msgid "It is suggested to backup your tt-rss directory first." +#~ msgstr "É recomendado fazer um backup do diretório do tt-rss antes." -#: mobile/prefs.php:35 -msgid "Show images in posts" -msgstr "" +#~ msgid "Your database will not be modified." +#~ msgstr "Seu banco de dados não será modificado." -#: mobile/prefs.php:40 -#, fuzzy -msgid "Hide read feeds" -msgstr "Favoritos" +#~ 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 "Seu diretório atual da instalação do tt-rss não será modificado. Ele será apenas renomeado. Você poderá migrar seus arquivos personalizados após o término da atualização." -#: mobile/prefs.php:45 -msgid "Sort feeds by unread count" -msgstr "" +#~ msgid "Ready to update." +#~ msgstr "Pronto para atualizar." -#: functions.js:1315 -msgid "Can't add filter: nothing to match on." -msgstr "" +#~ msgid "Start update" +#~ msgstr "Iniciar atualização" -#: functions.js:1350 -msgid "Can't subscribe: no feed URL given." -msgstr "" +#~ msgid "Backup your tt-rss directory before continuing. Please type 'yes' to continue." +#~ msgstr "Salve uma cópia do seu diretório do tt-rss antes de continuar. Por favor, digite 'yes' para continuar." -#: functions.js:1354 -#, fuzzy -msgid "Subscribing to feed..." -msgstr "Removendo o Feed..." +#~ msgid "New version available!" +#~ msgstr "Nova versão disponível!" -#: functions.js:1377 -#, fuzzy -msgid "Subscribed to %s" -msgstr "Removendo o Feed..." +#~ msgid "LibXML error %s at line %d (column %d): %s" +#~ msgstr "Erro LibXML %s na linha %d (coluna %d): %s" -#: functions.js:1386 -msgid "Can't subscribe to the specified URL." -msgstr "" +#~ msgid "From:" +#~ msgstr "De:" -#: functions.js:1389 -msgid "You are already subscribed to this feed." -msgstr "" +#~ msgid "Select:" +#~ msgstr "Selecione:" -#: functions.js:1952 -msgid "New articles available in this feed (click to show)" -msgstr "" +#~ msgid "mark as read" +#~ msgstr "marcar como lido" -#: functions.js:1989 -#, fuzzy -msgid "Subscribed to %d feed(s)." -msgstr "Removendo o Feed..." +#~ msgid "Change password to" +#~ msgstr "Mudar senha para" -#: functions.js:1999 functions.js:2030 prefs.js:557 prefs.js:587 prefs.js:619 -#: prefs.js:908 prefs.js:928 prefs.js:1795 -msgid "No feeds are selected." -msgstr "Nenhum feed foi selecionado." +#~ msgid "E-mail: " +#~ msgstr "E-mail:" -#: functions.js:2014 -msgid "" -"Remove selected feeds from the archive? Feeds with stored articles will not " -"be removed." -msgstr "" +#~ msgid "Login field cannot be blank." +#~ msgstr "O campo de Login não pode ser vazio." -#: functions.js:2066 -#, fuzzy -msgid "Remove stored feed icon?" -msgstr "Remover as categorias selecionadas?" +#~ msgid "Saving user..." +#~ msgstr "Salvando usuário" -#: functions.js:2098 -#, fuzzy -msgid "Please select an image file to upload." -msgstr "Por favor selecione um feed." +#~ msgid "Toggle marked" +#~ msgstr "Marcar/Desmarcar" -#: functions.js:2100 -msgid "Upload new icon for this feed?" -msgstr "" +#, fuzzy +#~ msgid "(Un)hide empty categories" +#~ msgstr "Editar categorias" -#: functions.js:2117 -msgid "Please enter label caption:" -msgstr "" +#, fuzzy +#~ msgid "Published articles and generated feeds" +#~ msgstr "Remover os filtros selecionados?" -#: functions.js:2122 -msgid "Can't create label: missing caption." -msgstr "" +#, fuzzy +#~ msgid "Articles shared by URL" +#~ msgstr "Favoritos" -#: functions.js:2162 tt-rss.js:568 -msgid "Unsubscribe from %s?" -msgstr "" +#~ msgid "Hello," +#~ msgstr "Olá," -#: offline.js:636 -msgid "Data for offline browsing has not been downloaded yet." -msgstr "" +#, fuzzy +#~ msgid "Enable categories" +#~ msgstr "Editar categorias" -#: offline.js:677 #, fuzzy -msgid "Synchronizing feeds..." -msgstr "Salvando o Feed..." +#~ msgid "Hide read articles and feeds" +#~ msgstr "Favoritos" -#: offline.js:696 #, fuzzy -msgid "Synchronizing categories..." -msgstr "Salvando categoria..." +#~ msgid "Article archive" +#~ msgstr "Feed não encontrado." -#: offline.js:714 -msgid "Synchronizing labels..." -msgstr "" +#, fuzzy +#~ msgid "Set value" +#~ msgstr "Marcar como favorito" -#: offline.js:733 #, fuzzy -msgid "Synchronizing articles..." -msgstr "Favoritos" +#~ msgid "Mark %d displayed article as read?" +#~ msgid_plural "Mark %d displayed articles as read?" +#~ msgstr[0] "Marcando todos os feeds como lidos..." +#~ msgstr[1] "Marcando todos os feeds como lidos..." -#: offline.js:778 #, fuzzy -msgid "Synchronizing articles (%d)..." -msgstr "Favoritos" +#~ msgid "Error: unable to load article." +#~ msgstr "Favoritos" -#: offline.js:806 -msgid "Last sync: %s" -msgstr "" +#, fuzzy +#~ msgid "Click to expand article." +#~ msgstr "Favoritos" -#: offline.js:835 -msgid "Last sync: Error receiving data." -msgstr "" +#, fuzzy +#~ msgid "%d more..." +#~ msgid_plural "%d more..." +#~ msgstr[0] "Salvando o Feed..." +#~ msgstr[1] "Salvando o Feed..." -#: offline.js:888 -msgid "Synchronizing..." -msgstr "" +#, fuzzy +#~ msgid "No unread feeds." +#~ msgstr "Favoritos" -#: offline.js:1195 -msgid "Switch Tiny Tiny RSS into offline mode?" -msgstr "" +#, fuzzy +#~ msgid "Load more..." +#~ msgstr "Salvando o Feed..." -#: offline.js:1223 -msgid "Tiny Tiny RSS will reload. Go online?" -msgstr "" +#, fuzzy +#~ msgid "Show tag cloud..." +#~ msgstr "núvem de tags" -#: offline.js:1655 -msgid "Last sync: Cancelled." -msgstr "" +#, fuzzy +#~ msgid "Click to play" +#~ msgstr "Favoritos" -#: offline.js:1672 -msgid "" -"This will remove all offline data stored by Tiny Tiny RSS on this computer. " -"Continue?" -msgstr "" +#~ msgid "Select theme" +#~ msgstr "Selecionar o tema" -#: offline.js:1743 -msgid "" -"Tiny Tiny RSS has trouble accessing its server. Would you like to go offline?" -msgstr "" +#, fuzzy +#~ msgid "Playing..." +#~ msgstr "Salvando o Feed..." -#: prefs.js:233 -msgid "Error: No feed URL given." -msgstr "" +#, fuzzy +#~ msgid "Default interval between feed updates" +#~ msgstr "Padrão" -#: prefs.js:235 -msgid "Error: Invalid feed URL." -msgstr "" +#~ msgid ", found: " +#~ msgstr ", encontrou:" -#: prefs.js:263 -msgid "Can't add profile: no name specified." -msgstr "" +#~ msgid "Please backup your database before proceeding." +#~ msgstr "Faça uma cópia-de-segurança de seus dados antes de prosseguir." -#: prefs.js:285 -msgid "Can't add category: no name specified." -msgstr "" +#~ msgid "Updating to version %d..." +#~ msgstr "Atualizando para a versão %d..." -#: prefs.js:307 -#, fuzzy -msgid "Please enter login:" -msgstr "Último Login" +#~ msgid "Checking version... " +#~ msgstr "Verificando a versão…" -#: prefs.js:314 -msgid "Can't create user: no login specified." -msgstr "" +#~ msgid "OK!" +#~ msgstr "OK!" -#: prefs.js:438 -msgid "Remove selected labels?" -msgstr "" +#~ msgid "ERROR!" +#~ msgstr "ERRO!" -#: prefs.js:454 -msgid "No labels are selected." -msgstr "" +#~ msgid "Title or Content" +#~ msgstr "Título ou Conteúdo" -#: prefs.js:468 -msgid "Remove selected users?" -msgstr "Remover os usuários selecionados?" +#~ msgid "Link" +#~ msgstr "Link" -#: prefs.js:485 prefs.js:798 prefs.js:819 prefs.js:858 -msgid "No users are selected." -msgstr "Nenhum usuário foi selecionado." +#~ msgid "Content" +#~ msgstr "Conteúdo" -#: prefs.js:503 -msgid "Remove selected filters?" -msgstr "Remover os filtros selecionados?" +#, fuzzy +#~ msgid "Article Date" +#~ msgstr "Feed não encontrado." -#: prefs.js:519 prefs.js:888 -msgid "No filters are selected." -msgstr "Nenhum filtro foi selecionado." +#~ msgid "Set starred" +#~ msgstr "Marcar como favorito" -#: prefs.js:538 -msgid "Unsubscribe from selected feeds?" -msgstr "" +#, fuzzy +#~ msgid "Assign tags" +#~ msgstr "sem tags" -#: prefs.js:572 -msgid "Please select only one feed." -msgstr "Por favor selecione somente um feed" +#, fuzzy +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Senha antiga incorreta" -#: prefs.js:578 #, fuzzy -msgid "Erase all non-starred articles in selected feed?" -msgstr "Remover os filtros selecionados?" +#~ msgid "Date syntax is incorrect." +#~ msgstr "Senha antiga incorreta" -#: prefs.js:600 -msgid "How many days of articles to keep (0 - use default)?" -msgstr "" +#, fuzzy +#~ msgid "Tag Cloud" +#~ msgstr "Núvem de tags" -#: prefs.js:632 -msgid "" -"Remove selected profiles? Active and default profiles will not be removed." -msgstr "" +#, fuzzy +#~ msgid "Mark all visible articles in %s as read?" +#~ msgstr "Marcando todos os feeds como lidos..." -#: prefs.js:648 #, fuzzy -msgid "No profiles selected." -msgstr "Nenhum filtro foi selecionado." +#~ msgid "Share on identi.ca" +#~ msgstr "Título" -#: prefs.js:660 -msgid "Remove selected categories?" -msgstr "Remover as categorias selecionadas?" +#, fuzzy +#~ msgid "Flattr this article." +#~ msgstr "Favoritos" -#: prefs.js:678 -msgid "No categories are selected." -msgstr "Nenhuma categoria foi selecionada." +#, fuzzy +#~ msgid "Share on Google+" +#~ msgstr "Título" -#: prefs.js:745 -msgid "Login field cannot be blank." -msgstr "O campo de Login não pode ser vazio." +#, fuzzy +#~ msgid "Share on Twitter" +#~ msgstr "Título" -#: prefs.js:803 prefs.js:824 prefs.js:863 -msgid "Please select only one user." -msgstr "Por favor selecione somente um usuário." +#, fuzzy +#~ msgid "Show additional preferences" +#~ msgstr "Sair das preferências" -#: prefs.js:828 -msgid "Reset password of selected user?" -msgstr "" +#, fuzzy +#~ msgid "Back to feeds" +#~ msgstr "Todos os feeds" -#: prefs.js:893 -msgid "Please select only one filter." -msgstr "Por favor selecione somente um filtro." +#, fuzzy +#~ msgid "Clearing credentials..." +#~ msgstr "Salvando o Feed..." -#: prefs.js:969 -msgid "No OPML file to upload." -msgstr "Nenhum arquivo OPML para upload." +#~ msgid "Updated" +#~ msgstr "Atualizado" -#: prefs.js:1229 -msgid "Reset to defaults?" -msgstr "" +#, fuzzy +#~ msgid "Notifying %s." +#~ msgstr "Adicionando a categoria %s." -#: prefs.js:1641 -msgid "Replace current publishing address with a new one?" -msgstr "" +#~ msgid "Yes" +#~ msgstr "Sim" -#: prefs.js:1678 -msgid "Save current configuration?" -msgstr "Salvar a configuração atual?" +#~ msgid "No" +#~ msgstr "Não" -#: prefs.js:1779 #, fuzzy -msgid "Rescore articles in selected feeds?" -msgstr "Remover os filtros selecionados?" +#~ msgid "Move between articles" +#~ msgstr "Favoritos" -#: prefs.js:1802 -msgid "Rescore all articles? This operation may take a lot of time." -msgstr "" +#, fuzzy +#~ msgid "Active article actions" +#~ msgstr "Favoritos" -#: prefs.js:1821 #, fuzzy -msgid "Remove filter %s?" -msgstr "Remover os filtros selecionados?" +#~ msgid "Mark articles below/above active one as read" +#~ msgstr "Marcando todos os feeds como lidos..." -#: prefs.js:1882 #, fuzzy -msgid "Save changes to selected feeds?" -msgstr "Remover os filtros selecionados?" +#~ msgid "Other actions" +#~ msgstr "Outras ações:" -#: prefs.js:1962 -msgid "Reset label colors to default?" -msgstr "" +#, fuzzy +#~ msgid "Multiple articles actions" +#~ msgstr "Favoritos" -#: prefs.js:1987 -msgid "Please enter new label foreground color:" -msgstr "" +#, fuzzy +#~ msgid "Select starred articles" +#~ msgstr "Favoritos" -#: prefs.js:1989 -msgid "Please enter new label background color:" -msgstr "" +#, fuzzy +#~ msgid "Feed actions" +#~ msgstr "Ações do Feed:" -#: prefs.js:2121 #, fuzzy -msgid "Activate selected profile?" -msgstr "Remover os filtros selecionados?" +#~ msgid "Press any key to close this window." +#~ msgstr "Fechar esta janela" -#: prefs.js:2137 -msgid "Please choose a profile to activate." -msgstr "" +#~ msgid "My Feeds" +#~ msgstr "Meus Feeds" -#: tt-rss.js:74 -msgid "display feeds" -msgstr "" +#~ msgid "Other Feeds" +#~ msgstr "Outros Feeds" -#: tt-rss.js:251 #, fuzzy -msgid "Mark all articles as read?" -msgstr "Marcando todos os feeds como lidos..." +#~ msgid "Panel actions" +#~ msgstr "Ações do Feed:" -#: tt-rss.js:557 -msgid "You can't unsubscribe from the category." -msgstr "" +#, fuzzy +#~ msgid "Edit feed categories" +#~ msgstr "Editar categorias" -#: tt-rss.js:562 tt-rss.js:755 tt-rss.js:930 -msgid "Please select some feed first." -msgstr "" +#, fuzzy +#~ msgid "Right-to-left content" +#~ msgstr "Título ou conteúdo" -#: tt-rss.js:618 #, fuzzy -msgid "Reset category order?" -msgstr "Remover as categorias selecionadas?" +#~ msgid "Loading..." +#~ msgstr "Salvando o Feed..." -#: tt-rss.js:727 tt-rss.js:740 #, fuzzy -msgid "Mark all articles in %s as read?" -msgstr "Marcando todos os feeds como lidos..." +#~ msgid "Magpie" +#~ msgstr "Página" -#: tt-rss.js:760 -msgid "You can't edit this kind of feed." -msgstr "" +#, fuzzy +#~ msgid "Original article" +#~ msgstr "Favoritos" -#: tt-rss.js:925 -msgid "You can't rescore this kind of feed." -msgstr "" +#, fuzzy +#~ msgid "Update feed" +#~ msgstr "Favoritos" -#: tt-rss.js:935 #, fuzzy -msgid "Rescore articles in %s?" -msgstr "Favoritos" +#~ msgid "With subcategories" +#~ msgstr "Editar categorias" -#: viewfeed.js:528 viewfeed.js:592 #, fuzzy -msgid "Star article" -msgstr "Favoritos" +#~ msgid "
  • Adding category %s.
  • " +#~ msgstr "Adicionando a categoria %s." -#: viewfeed.js:577 -msgid "Unstar article" -msgstr "" +#, fuzzy +#~ msgid "OK" +#~ msgstr "OK!" -#: viewfeed.js:585 viewfeed.js:652 -msgid "Please wait..." -msgstr "" +#, fuzzy +#~ msgid "after" +#~ msgstr "Atualizar" -#: viewfeed.js:648 -msgid "Unpublish article" -msgstr "" +#, fuzzy +#~ msgid "Apply to category" +#~ msgstr "Salvando categoria..." -#: viewfeed.js:935 viewfeed.js:971 viewfeed.js:1012 viewfeed.js:1097 -#: viewfeed.js:1141 viewfeed.js:1288 viewfeed.js:1338 viewfeed.js:1394 -msgid "No articles are selected." -msgstr "" +#~ msgid "Category $%s already exists in the database." +#~ msgstr "A categoria $%s já existe na base de dados." -#: viewfeed.js:1256 -msgid "Mark all visible articles in %s as read?" -msgstr "" +#, fuzzy +#~ msgid "Remove selected categories" +#~ msgstr "Remover as categorias selecionadas?" -#: viewfeed.js:1298 #, fuzzy -msgid "Delete %d selected articles in %s?" -msgstr "Favoritos" +#~ msgid "Twitter" +#~ msgstr "Título" -#: viewfeed.js:1300 #, fuzzy -msgid "Delete %d selected articles?" -msgstr "Remover os filtros selecionados?" +#~ msgid "Subscribing to feed..." +#~ msgstr "Removendo o Feed..." -#: viewfeed.js:1348 #, fuzzy -msgid "Archive %d selected articles in %s?" -msgstr "Favoritos" +#~ msgid "Feed Categories" +#~ msgstr "Categoria:" -#: viewfeed.js:1351 -msgid "Move %d archived articles back?" -msgstr "" +#, fuzzy +#~ msgid "Importing using DOMXML." +#~ msgstr "Importando OPML (usando a extensão DOMXML)..." -#: viewfeed.js:1401 -msgid "Mark %d selected articles in %s as read?" -msgstr "" +#, fuzzy +#~ msgid "Importing using DOMDocument." +#~ msgstr "Importando OPML (usando a extensão DOMDocument)…" -#: viewfeed.js:1977 -msgid "No article is selected." -msgstr "" +#~ msgid "DOMXML extension is not found. It is required for PHP versions below 5." +#~ msgstr "A extensão DOMXML não foi encontrada. Ela é exigida para versões do PHP menores que 5." -#: viewfeed.js:2018 -msgid "No articles found to mark" -msgstr "" +#, fuzzy +#~ msgid "Publish" +#~ msgstr "Publicado" -#: viewfeed.js:2020 -msgid "Mark %d article(s) as read?" -msgstr "" +#~ msgid "Changed password of user %s." +#~ msgstr "Alterada a senha do usuário %s." -#: viewfeed.js:2255 -msgid "Please enter a note for this article:" -msgstr "" +#, fuzzy +#~ msgid "Content filtering" +#~ msgstr "Filtrando o conteúdo" -#~ msgid "Adding feed..." -#~ msgstr "Adicionando o Feed..." +#~ msgid "short_desc" +#~ msgstr "short_desc" #, fuzzy -#~ msgid "Adding feed category..." -#~ msgstr "Adicionando o Feed..." +#~ msgid "Remove:" +#~ msgstr "Remover" #, fuzzy -#~ msgid "Adding profile..." -#~ msgstr "Adicionando o Feed..." +#~ msgid "Toggle category reordering mode" +#~ msgstr "Remover as categorias selecionadas?" -#~ msgid "Adding user..." -#~ msgstr "Adicionando o usuário…" +#, fuzzy +#~ msgid "feeds" +#~ msgstr "Feed" + +#~ msgid "Importing OPML (using DOMXML extension)..." +#~ msgstr "Importando OPML (usando a extensão DOMXML)..." + +#~ msgid "Importing OPML (using DOMDocument extension)..." +#~ msgstr "Importando OPML (usando a extensão DOMDocument)…" + +#~ msgid "Unknown error" +#~ msgstr "Erro desconhecido" #, fuzzy -#~ msgid "Assign score to article:" +#~ msgid "View article" #~ msgstr "Favoritos" #, fuzzy -#~ msgid "Assign selected articles to label?" -#~ msgstr "Remover os filtros selecionados?" +#~ msgid "Fatal Exception" +#~ msgstr "Erro Fatal" #, fuzzy -#~ msgid "Category reordering disabled" -#~ msgstr "Remover as categorias selecionadas?" +#~ msgid "Feed Browser" +#~ msgstr "Editor de Feed" #, fuzzy -#~ msgid "Category reordering enabled" -#~ msgstr "Remover as categorias selecionadas?" +#~ msgid "Filter Editor" +#~ msgstr "Editor de Feed" #, fuzzy -#~ msgid "Changing password..." -#~ msgstr "Mudar senha" +#~ msgid "Click to change color" +#~ msgstr "Favoritos" -#, fuzzy -#~ msgid "Clearing feed..." -#~ msgstr "Salvando o Feed..." +#~ msgid "Save current configuration?" +#~ msgstr "Salvar a configuração atual?" + +#~ msgid "Tags" +#~ msgstr "Tags" #, fuzzy -#~ msgid "Clearing selected feed..." -#~ msgstr "Removendo filtros selecionados…" +#~ msgid "toggle unread" +#~ msgstr "Marcar como favorito" #, fuzzy -#~ msgid "comments" -#~ msgstr "Conteúdo" +#~ msgid "(remove)" +#~ msgstr "Remover" #, fuzzy -#~ msgid "Entire feed" -#~ msgstr "Editar" +#~ msgid "Cancel synchronization" +#~ msgstr "Salvar configuração" #, fuzzy -#~ msgid "Feed icon removed." -#~ msgstr "Feed não encontrado." +#~ msgid "Remove stored data" +#~ msgstr "Remover as categorias selecionadas?" #, fuzzy -#~ msgid "Loading feed list..." -#~ msgstr "Salvando o Feed..." +#~ msgid "Reset UI layout" +#~ msgstr "  Editar esse Feed" -#~ msgid "Mark as read:" -#~ msgstr "Marcar como lido:" +#~ msgid "Showing most popular tags " +#~ msgstr "Exibir as Tags mais populares." -#~ msgid "Marking all feeds as read..." -#~ msgstr "Marcando todos os feeds como lidos..." +#, fuzzy +#~ msgid "more tags" +#~ msgstr "sem tags" + +#~ msgid "Change e-mail" +#~ msgstr "Mudar E-mail" #, fuzzy -#~ msgid "Purging selected feed..." -#~ msgstr "Removendo filtros selecionados…" +#~ msgid "Synchronizing feeds..." +#~ msgstr "Salvando o Feed..." #, fuzzy -#~ msgid "Remove selected articles from label?" -#~ msgstr "Remover os filtros selecionados?" +#~ msgid "Synchronizing categories..." +#~ msgstr "Salvando categoria..." -#~ msgid "Removing feed..." -#~ msgstr "Removendo o Feed..." +#, fuzzy +#~ msgid "Synchronizing articles..." +#~ msgstr "Favoritos" #, fuzzy -#~ msgid "Removing filter..." -#~ msgstr "Removendo o Feed..." +#~ msgid "Synchronizing articles (%d)..." +#~ msgstr "Favoritos" #, fuzzy -#~ msgid "Removing offline data..." -#~ msgstr "Removendo o Feed..." +#~ msgid "Reset category order?" +#~ msgstr "Remover as categorias selecionadas?" -#~ msgid "Removing selected categories..." -#~ msgstr "Removendo categorias selecionadas…" +#~ msgid "No feeds to display." +#~ msgstr "Sem Feeds para exibir." -#~ msgid "Removing selected filters..." -#~ msgstr "Removendo filtros selecionados…" +#~ msgid "Remove selected users?" +#~ msgstr "Remover os usuários selecionados?" -#, fuzzy -#~ msgid "Removing selected labels..." -#~ msgstr "Removendo filtros selecionados…" +#~ msgid "Adding feed..." +#~ msgstr "Adicionando o Feed..." #, fuzzy -#~ msgid "Removing selected profiles..." -#~ msgstr "Removendo filtros selecionados…" +#~ msgid "Assign score to article:" +#~ msgstr "Favoritos" -#~ msgid "Removing selected users..." -#~ msgstr "Removendo usuários selecionados…" +#, fuzzy +#~ msgid "Category reordering disabled" +#~ msgstr "Remover as categorias selecionadas?" #, fuzzy -#~ msgid "Rescore last 100 articles in selected feeds?" -#~ msgstr "Remover os filtros selecionados?" +#~ msgid "Category reordering enabled" +#~ msgstr "Remover as categorias selecionadas?" #, fuzzy -#~ msgid "Rescoring articles..." -#~ msgstr "Favoritos" +#~ msgid "Changing password..." +#~ msgstr "Mudar senha" + +#~ msgid "Mark as read:" +#~ msgstr "Marcar como lido:" #, fuzzy -#~ msgid "Resetting password for selected user..." -#~ msgstr "Removendo usuários selecionados…" +#~ msgid "Remove selected articles from label?" +#~ msgstr "Remover os filtros selecionados?" #, fuzzy -#~ msgid "Saving article tags..." -#~ msgstr "Salvando categoria..." +#~ msgid "Removing offline data..." +#~ msgstr "Removendo o Feed..." -#~ msgid "Saving feed..." -#~ msgstr "Salvando o Feed..." +#, fuzzy +#~ msgid "Rescore last 100 articles in selected feeds?" +#~ msgstr "Remover os filtros selecionados?" #, fuzzy #~ msgid "Saving feeds..." @@ -2696,42 +4229,18 @@ msgstr "" #~ msgid "Saving filter..." #~ msgstr "Salvando o filtro..." -#~ msgid "Saving user..." -#~ msgstr "Salvando usuário" - #~ msgid "Selection" #~ msgstr "Seleção" -#, fuzzy -#~ msgid "Tiny Tiny RSS is in offline mode." -#~ msgstr "A checagem da configuração falhou" - -#~ msgid "Trying to change e-mail..." -#~ msgstr "Tentando mudar o E-mail..." - #~ msgid "Changing category of selected feeds..." #~ msgstr "Alterando a categoria dos feeds selecionados…" -#, fuzzy -#~ msgid "Trying to change address..." -#~ msgstr "Tentando alterar senha ..." - #~ msgid "Trying to change password..." #~ msgstr "Tentando alterar senha ..." -#, fuzzy -#~ msgid "Clear articles" -#~ msgstr "Favoritos" - #~ msgid "Done." #~ msgstr "Feito." -#~ msgid "Close" -#~ msgstr "Fechar" - -#~ msgid "Themes" -#~ msgstr "Temas" - #~ msgid "Change theme" #~ msgstr "Mudar Tema" @@ -2747,18 +4256,6 @@ msgstr "" #~ msgid "Order:" #~ msgstr "Onde:" -#, fuzzy -#~ msgid "Other:" -#~ msgstr "Onde:" - -#, fuzzy -#~ msgid "View feeds" -#~ msgstr "Todos os feeds" - -#, fuzzy -#~ msgid "View tags" -#~ msgstr "Editar Tags" - #, fuzzy #~ msgid "View:" #~ msgstr "Título" @@ -2766,10 +4263,6 @@ msgstr "" #~ msgid "Page" #~ msgstr "Página" -#, fuzzy -#~ msgid "Back to feedlist" -#~ msgstr "Todos os feeds" - #, fuzzy #~ msgid "Tags:" #~ msgstr "Tags" @@ -2781,10 +4274,6 @@ msgstr "" #~ msgid "Where:" #~ msgstr "Onde:" -#, fuzzy -#~ msgid "Click to view" -#~ msgstr "Favoritos" - #~ msgid "This program requires XmlHttpRequest " #~ msgstr "Este programa requer XmlHttpRequest" @@ -2795,33 +4284,20 @@ msgstr "" #~ msgid "  Keyboard shortcuts" #~ msgstr "  Criar filtro" -#~ msgid "description" -#~ msgstr "descrição" - #~ msgid "filter_type_descr" #~ msgstr "filter_type_descr" #~ msgid "action_description" #~ msgstr "action_description" -#~ msgid "short_desc" -#~ msgstr "short_desc" - #~ msgid "Please select only one category." #~ msgstr "Por favor selecione somente uma categoria." #~ msgid "Address changed." #~ msgstr "Endereço alterado." -#, fuzzy -#~ msgid "Rescoring feeds..." -#~ msgstr "Removendo o Feed..." - -#~ msgid "" -#~ "config: your config file version is incorrect. See config.php-dist.\n" -#~ msgstr "" -#~ "config: a versão do seu arquivo de configuração é incorreta. Veja em " -#~ "config.php-dist.\n" +#~ msgid "config: your config file version is incorrect. See config.php-dist.\n" +#~ msgstr "config: a versão do seu arquivo de configuração é incorreta. Veja em config.php-dist.\n" #~ msgid "config: SESSION_EXPIRE_TIME is undefined" #~ msgstr "config: SESSION_EXPIRE_TIME não definida" @@ -2832,10 +4308,8 @@ msgstr "" #~ msgid "config: SESSION_EXPIRE_TIME should be greater or equal to" #~ msgstr "config: SESSION_EXPIRE_TIME deveria ser maior ou igual" -#~ msgid "" -#~ "config: DATABASE_BACKED_SESSIONS is incompatible with SINGLE_USER_MODE" -#~ msgstr "" -#~ "config: DATABASE_BACKED_SESSIONS é incompatível com SINGLE_USER_MODE" +#~ msgid "config: DATABASE_BACKED_SESSIONS is incompatible with SINGLE_USER_MODE" +#~ msgstr "config: DATABASE_BACKED_SESSIONS é incompatível com SINGLE_USER_MODE" #~ msgid "config: DATABASE_BACKED_SESSIONS are currently broken with MySQL" #~ msgstr "config: DATABASE_BACKED_SESSIONS esta atualmente quebrado com MySQL" @@ -2843,17 +4317,10 @@ msgstr "" #~ msgid "Unknown Error" #~ msgstr "Erro desconhecido" -#~ msgid "Feed information:" -#~ msgstr "Informações do Feed:" - #, fuzzy #~ msgid "Site:" #~ msgstr "Título" -#, fuzzy -#~ msgid "Last updated:" -#~ msgstr "Atualizado" - #~ msgid "Content Filtering" #~ msgstr "Filtrando o conteúdo" @@ -2900,32 +4367,12 @@ msgstr "" #~ msgid "Labels and SQL Expressions" #~ msgstr "Expressão SQL" -#, fuzzy -#~ msgid "Match all unread articles:" -#~ msgstr "Favoritos" - -#~ msgid "Test" -#~ msgstr "Teste" - -#, fuzzy -#~ msgid "Perform action" -#~ msgstr "Ação" - -#~ msgid "Category:" -#~ msgstr "Categoria:" - #~ msgid "SQL Expression:" #~ msgstr "Expressão SQL:" -#~ msgid "Feed:" -#~ msgstr "Feed:" - #~ msgid "Action:" #~ msgstr "Ação:" -#~ msgid "Title:" -#~ msgstr "Título" - #, fuzzy #~ msgid "Update using:" #~ msgstr "Atualizar" @@ -2933,10 +4380,6 @@ msgstr "" #~ msgid "Change password:" #~ msgstr "Mudar senha:" -#, fuzzy -#~ msgid "Update errors" -#~ msgstr "Atualizar" - #~ msgid "Next page" #~ msgstr "Próxima página" diff --git a/locale/pt_PT/LC_MESSAGES/messages.mo b/locale/pt_PT/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000..d0be0453f4 Binary files /dev/null and b/locale/pt_PT/LC_MESSAGES/messages.mo differ diff --git a/locale/pt_PT/LC_MESSAGES/messages.po b/locale/pt_PT/LC_MESSAGES/messages.po new file mode 100644 index 0000000000..387622b069 --- /dev/null +++ b/locale/pt_PT/LC_MESSAGES/messages.po @@ -0,0 +1,4393 @@ +# Portuguese translation of tt-rss. +# Copyright (C) 2013 THE tt-rss'S COPYRIGHT HOLDER +# This file is distributed under the same license as the tt-rss package. +# Duarte Velez Grilo 2014. Based on work of Perry Werneck +# +# +msgid "" +msgstr "" +"Project-Id-Version: tt-rss 1.2.14.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2013-08-08 23:19-0300\n" +"Last-Translator: Duarte Velez Grilo \n" +"Language-Team: Portuguese/Portugal \n" +"Language: Portuguese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Poedit 1.5.7\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: backend.php:73 +msgid "Use default" +msgstr "Usar o padrão" + +#: backend.php:74 +msgid "Never purge" +msgstr "Nunca remover" + +#: backend.php:75 +msgid "1 week old" +msgstr "1 semana atrás" + +#: backend.php:76 +msgid "2 weeks old" +msgstr "2 semanas atrás" + +#: backend.php:77 +msgid "1 month old" +msgstr "1 mês atrás" + +#: backend.php:78 +msgid "2 months old" +msgstr "2 meses atrás" + +#: backend.php:79 +msgid "3 months old" +msgstr "3 meses atrás" + +#: backend.php:82 +msgid "Default interval" +msgstr "Intervalo padrão" + +#: backend.php:83 +#: backend.php:93 +msgid "Disable updates" +msgstr "Desactivar actualizações" + +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" +msgstr "A cada 15 minutos" + +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" +msgstr "A cada 30 minutos" + +#: backend.php:86 +#: backend.php:96 +msgid "Hourly" +msgstr "Hora a hora" + +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" +msgstr "A cada 4 horas" + +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" +msgstr "A cada 12 horas" + +#: backend.php:89 +#: backend.php:99 +msgid "Daily" +msgstr "Diariamente" + +#: backend.php:90 +#: backend.php:100 +msgid "Weekly" +msgstr "Semanalmente" + +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 +msgid "User" +msgstr "Utilizador" + +#: backend.php:104 +msgid "Power User" +msgstr "Utilizador avançado" + +#: backend.php:105 +msgid "Administrator" +msgstr "Administrador" + +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "Este programa precisa que a função XmlHttpRequest funcione correctamente. O seu browser parece não suportar isso." + +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "Este programa precisa de cookies para funcionar correctamente. O seu browser parece não suportá-los." + +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "Verificação de sanidade do backend falhou." + +#: errors.php:17 +msgid "Frontend sanity check failed." +msgstr "Verificação de sanidade do frontend falhou." + +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "A versão do schema da base de dados está incorrecto. <a href='db-updater.php'>Please update</a>." + +#: errors.php:21 +msgid "Request not authorized." +msgstr "Pedido não autorizado." + +#: errors.php:23 +msgid "No operation to perform." +msgstr "Nenhuma operação a executar." + +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "Não foi possível mostrar o feed: a consulta falhou. Verifique a sintaxe da etiqueta ou a configuração local." + +#: errors.php:27 +msgid "Denied. Your access level is insufficient to access this page." +msgstr "Negado. O seu nível de acesso é insuficiente para acessar esta página." + +#: errors.php:29 +msgid "Configuration check failed" +msgstr "A verificação da configuração falhou" + +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "A sua versão do MySQL não é actualmente suportada. Por favor aceda ao site oficial para mais informações." + +#: errors.php:35 +msgid "SQL escaping test failed, check your database and PHP configuration" +msgstr "Teste de conversão de escapes no SQL falhou, verifique a configuração da sua base de dados e PHP" + +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "Feed não encontrado." + +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "Usuário não encontrado" + +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "A carregar, por favor aguarde..." + +#: index.php:167 +#, fuzzy +msgid "Collapse feedlist" +msgstr "Fechar lista de feeds" + +#: index.php:170 +msgid "Show articles" +msgstr "Mostrar artigos" + +#: index.php:173 +msgid "Adaptive" +msgstr "Adaptativa" + +#: index.php:174 +msgid "All Articles" +msgstr "Todos os artigos" + +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "Favoritos" + +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "Publicados" + +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 +msgid "Unread" +msgstr "Não Lidos" + +#: index.php:178 +msgid "With Note" +msgstr "Com Anotação" + +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Ignorar Pontuação" + +#: index.php:182 +msgid "Sort articles" +msgstr "Ordenar artigos" + +#: index.php:185 +msgid "Default" +msgstr "Padrão" + +#: index.php:186 +msgid "Newest first" +msgstr "Mais recentes primeiro" + +#: index.php:187 +msgid "Oldest first" +msgstr "Mais antigos primeiro" + +#: index.php:188 +msgid "Title" +msgstr "Título" + +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 +msgid "Mark as read" +msgstr "Marcar como lido" + +#: index.php:195 +msgid "Older than one day" +msgstr "Com mais de um dia" + +#: index.php:198 +msgid "Older than one week" +msgstr "Com mais de uma semana" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "Com mais de duas semanas" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "Problemas de comunicação com o servidor" + +#: index.php:223 +msgid "Actions..." +msgstr "Acções..." + +#: index.php:225 +msgid "Preferences..." +msgstr "Preferências" + +#: index.php:226 +msgid "Search..." +msgstr "Pesquisar" + +#: index.php:227 +msgid "Feed actions:" +msgstr "Acções do Feed:" + +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "Assinar feed..." + +#: index.php:229 +msgid "Edit this feed..." +msgstr "Editar assinatura..." + +#: index.php:230 +msgid "Rescore feed" +msgstr "Reclassificar assinatura" + +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "Cancelar assinatura" + +#: index.php:232 +msgid "All feeds:" +msgstr "Todos os Feeds:" + +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Mostrar/Ocultar feeds lidos" + +#: index.php:235 +msgid "Other actions:" +msgstr "Outras acções:" + +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "Activa/Desactiva modo widescreen" + +#: index.php:237 +msgid "Create label..." +msgstr "Criar marcador..." + +#: index.php:238 +msgid "Create filter..." +msgstr "Criar filtro..." + +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "Ajuda para atalhos de teclado" + +#: index.php:248 +msgid "Logout" +msgstr "Sair" + +#: index.php:254 +msgid "Updates are available from Git." +msgstr "" + +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "Preferências" + +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "Atalhos de teclado" + +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Sair das preferências" + +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Assinaturas" + +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "Filtros" + +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Marcadores" + +#: prefs.php:133 +msgid "Users" +msgstr "Utilizadores" + +#: prefs.php:136 +msgid "System" +msgstr "Sistema" + +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "Criar uma nova conta" + +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "O registro de novos utilizadores foi desactivado pelo administrador" + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Voltar ao TT-Rss" + +#: register.php:218 +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 "A sua palavra-pasee temporária será enviada para o e-mail especificado. Contas que não recebam, pelo menos, um acesso são apagadas automaticamente 24 horas depois do envio da palavra-passe temporária." + +#: register.php:224 +msgid "Desired login:" +msgstr "Nome de utilizador:" + +#: register.php:227 +msgid "Check availability" +msgstr "Verificar disponibilidade" + +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "E-mail: " + +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "Quanto é dois mais dois:" + +#: register.php:235 +msgid "Submit registration" +msgstr "Submeter registo" + +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "A sua informação de registo está incompleta." + +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "Desculpe, esse nome de utilizador já está em uso." + +#: register.php:287 +msgid "Registration failed." +msgstr "Processo de registo falhou." + +#: register.php:334 +msgid "Account created successfully." +msgstr "Conta criada com sucesso." + +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "O registro de novos utilizador está actualmente suspenso." + +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "Script de actualização do Tiny Tiny RSS." + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "Não Categorizado" + +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d artigo arquivado" +msgstr[1] "%d artigos arquivados" +msgstr[2] "%d artigos arquivados" + +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "Sem assinaturas para exibir." + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "Navegação" + +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "Abrir a próxima assinatura" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "Abrir a assinatura anterior" + +#: include/functions2.php:55 +msgid "Open next article" +msgstr "Abrir o próximo artigo" + +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "Abrir o artigo anterior" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "Abrir o próximo artigo (não rolar artigos longos)" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "Abrir o artigo anterior (não rolar artigos longos)" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "Mover para o próximo artigo (não expandir ou marcar como lido)" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "Mover para o artigo anterior (não expandir ou marcar como lido)" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Mostrar diálogo de pesquisa" + +#: include/functions2.php:62 +msgid "Article" +msgstr "Artigo" + +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "Incluir/Remover estrela" + +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "Marcar/Desmarcar como publicado" + +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "Marcar como não lido" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Editar Tags" + +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "Descartar selecionados?" + +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "Descartar lidos" + +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "Abrir em uma nova janela" + +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "Marcar abaixo como lido" + +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "Marcar acima como lido" + +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "Rolar para baixo" + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "Rolar para cima" + +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "Selecionar artigo sob o cursor" + +#: include/functions2.php:75 +msgid "Email article" +msgstr "Enviar artigo por e-mail" + +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "Fechar/Abrir artigo" + +#: include/functions2.php:77 +msgid "Toggle article expansion (combined mode)" +msgstr "Ativar/Desativar expansão de artigo (modo combinado)" + +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "Ativar/Desativar inclusão do original" + +#: include/functions2.php:80 +msgid "Article selection" +msgstr "Seleção de artigos" + +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "Selecionar todos os artigos" + +#: include/functions2.php:82 +msgid "Select unread" +msgstr "Selecionar os não lidos" + +#: include/functions2.php:83 +msgid "Select starred" +msgstr "Selecionar artigos com estrela" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "Selecionar artigos publicados" + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "Inverter seleção" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "Desmarcar tudo" + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Feed" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "Atualizar inscrição atual" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "Ocultar/mostrar inscrições lidas" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "Assinar" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Editar inscrição" + +#: include/functions2.php:93 +#, fuzzy +msgid "Reverse headlines" +msgstr "Remover as categorias selecionadas?" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "Debugar atualização de inscrições" + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "Marcar todas as inscrições como lidas" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "Mostrar/Ocultar categoria atual" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "Ativar/Desativar modo combinado" + +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "Ativar/Desativar expansão no modo combinado" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "Ir para" + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "Todas as inscrições" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "Recentes" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Núvem de tags" + +#: include/functions2.php:106 +msgid "Other" +msgstr "Outros" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "Criar marcador" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "Criar filtro" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "Mostrar/Ocultar barra lateral" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "Mostrar dialogo de ajuda" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Resultados da pesquisa: %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +#, fuzzy +msgid "comment" +msgid_plural "comments" +msgstr[0] "Conteúdo" +msgstr[1] "Conteúdo" +msgstr[2] "Conteúdo" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +#, fuzzy +msgid "comments" +msgstr "Conteúdo" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "sem tags" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "Editar tags deste artigo" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "Originalmente de:" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "URL da inscrição" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "Fechar esta janela" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "Editar nota" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "tipo desconhecido" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "Anexos" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "Especial" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Todos os feeds" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Artigos com estrela" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Artigos publicados" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "Últimas notícias" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "Artigos arquivados" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "Lidos recentemente" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "Nome de usuário:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "Senha:" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "Esqueci minha senha" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "Perfil:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "Perfil padrão" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "Usar menos tráfego" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "Não mostra imagens em artigos, reduz as atualizações automáticas" + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "Continuar conectado" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "Login" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "Falha ao validar a sessão (IP incorreto)" + +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "Falha ao validar a sessão (Versão do banco de dados mudou)" + +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "Falha ao validar a sessão (Usuário não encontrado)" + +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "Falha ao validar a sessão (A senha foi alterada)" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "Outras dicas de interface estão disponíveis no wiki to Tiny Tiny RSS." + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Atalhos de teclado" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Tópico de ajuda não encontrado." + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "Compartilhar com TT-Rss" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Título" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "Conteúdo:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "Marcadores:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "Artigo compartilhado vai aparecer nos publicados." + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "Compartilhar" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "Cancelar" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "Não logado" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Usuário ou senha inválidos" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "Já inscrito em %s" + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "Inscrito em %s." + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "Não foi possível inscrever em %s" + +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "Nenhum feed encontrado em %s." + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "Multiplas URLs encontradas." + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "A inscrição em %s não foi possível.
    Incapaz de baixar a URL do feed RSS." + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "Inscrever no feed selecionado" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Editar opções de assinatura" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "Recuperação de senha" + +#: classes/handler/public.php:805 +#, fuzzy +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "Você precisa informar um nome de usuário válido e endereço de e-mail. Uma nova senha será enviada para seu endereço de e-mail." + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "Redefinir a senha" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "Alguns dos parâmetros necessários estão faltando ou incorretos." + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "Voltar" + +#: classes/handler/public.php:878 +#, fuzzy +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] Notificação de troca de senh" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "Desculpe, Nome de usuário e e-mail não encontrados." + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "Seu nível de acesso é insuficiente para executar esse script." + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "Atualizador do banco de dados" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Executar atualização" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "Ver como um feed rss" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "Ver como RSS" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "Última atualização em: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "Tudo" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Inverter" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Nenhum" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "Mais..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Inverter seleção:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Seleção:" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "Classificar" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "Arquivar" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "Retornar" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "Apaga" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "Encaminhar por e-mail" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Feed:" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "Feed não encontrado." + +#: classes/feeds.php:268 +msgid "Never" +msgstr "Nunca" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "Importado em %s" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +#, fuzzy +msgid "mark feed as read" +msgstr "Marcar como lido" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "Fechar artigo" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "Sem artigos não lidos para exibir." + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "Sem artigos atualizados para exibir." + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "Sem artigos com estrela para exibir." + +#: classes/feeds.php:778 +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 "Nenhum artigo encontrado para mostrar. Você pode associar artigos a marcadores manualmente pelo menu de contexto no título (altera todos os artigos selecionados) ou usar um filtro." + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "Nenhum artigo foi encontrado para exibir." + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "Inscrições atualizadas em %s" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "Alguns feeds estão com erros (clique aqui para detalhes)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "Nenhum feed foi selecionado." + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "URL do site ou feed" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "Colocar na categoria:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "Feeds disponíveis" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "Autenticação" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "Login" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "Senha" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Este feed requer autenticação." + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "Assinar" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "Mais inscrições" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "Pesquisar" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "Inscrições populares" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "Arquivo de inscrições" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "limite:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "Remover" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "Procurar por" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +#, fuzzy +msgid "Search syntax" +msgstr "Pesquisar" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "Artigo não encontrado." + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "Tags para esse artigo (separadas por vírgula):" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Salvar" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "Utilitário OPML" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "Importando OPML..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "Retornar às preferências" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "Adicionando feed: %s" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "Feed duplicado: %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "Adicionando marcador %s" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "Marcador duplicado: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "Ajustando chave de configuração %s para %s" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "Adicionando filtro..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "Processando categoria: %s" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "Enviou falhou com o código de erro %d" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "Incapaz de mover arquivo enviado." + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "Erro: Por favor envie um arquivo OPML." + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "Erro: Arquivo OPML movido não foi encontrado" + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Erro ao processar o documento." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "Seu nível de acesso é insuficiente para abrir esta aba." + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "Registro de erros" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "Atualizar" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "Limpar o log" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Erro" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "Nome do arquivo" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Mensagem" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Data" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Usuário não encontrado" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "Registrado" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Último acesso em" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "Contador de inscrições" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Inscrições" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Nível de acesso:" + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Opções" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "Adicionado usuário %s com senha %s" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "Não pode criar o usuário %s" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "O usuário %s já existe." + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "Senha do usuário %salterada para %s" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "Enviando nova senha do usuário %s para %s" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] Notificação de troca de senh" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "Selecione" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Criar um usuário" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "Detalhes" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Editar" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Nível de acesso" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "Último Login" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Clique para editar" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "Nenhum usuário definido." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "Nenhum usuário encontrado." + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Clique para habilitar campo" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, fuzzy, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "Editar" +msgstr[1] "Editar" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "Título da inscrição" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "Atualizar" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Apagando artigo:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "Hint: Você precisa preencher suas informações de login se a assinatura precisa de autenticação, exceto para as assinaturas do Twitter." + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "Ocultar das inscrições populares" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "Incluir no resumo por e-mail" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Sempre mostrar imagens anexas" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "Não embutir imagens" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Guardar imagens no cache local" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "Marcar artigos atualizados como não lidos" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "Ãcone" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "Substituir" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "Reassine para atualizar" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "" + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Completo." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "Inscrições com erro" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "Inscrições inativas" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "Editar inscrições selecionadas" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "Reiniciar ordenação" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "Assinatura em lote" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "Categorias" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "Adicionar categoria" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "Remover selecionados" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "Mais ações..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "Apagar manualmente" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "Limpar dados da inscrição" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Reclassificar artigos" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "Usando OPML você pode exportar e importar suas assinaturas, filtros, marcadores e configurações do Tiny Tin RSS." + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "" + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "Importar OPML" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "Nome do arquivo:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "Incluir configurações" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "Exportar OPML" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "Seu OPML pode ser publicado e assinado por qualquer um que conheça a URL abaixo." + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "" + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "URL OPML pública" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "Mostrar a URL OPML publicada" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Integração com o firefox" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "Este Tiny Tiny RSS pode ser usado como um leitor de feeds no firefox clicando no link abaixo." + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "Clique aqui para registrar esse site com um leitor de feeds." + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "Artigos publicados & compartilhados / Feeds gerados" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "" + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "Mostrar URL" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "Limpar todas as URLs geradas" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "Estas assinaturas não foram atualizadas a 3 meses (mais antiga primeiro):" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "Clique para editar inscrição" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "Cancelar inscrições selecionadas" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "Inclua uma assinatura RSS por linha (detecção de feeds não será feita)" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "Feeds para assinar, um por linha" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "Inscrição requer autenticação." + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "Artigos de acordo com este filtro:" + +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "Nenhum artigo recente que atenda este filtro foi encontrado." + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(invertido)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Título" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "Aplicar ações" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Ativado" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +#, fuzzy +msgid "Match any rule" +msgstr "Favoritos" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +#, fuzzy +msgid "Inverse matching" +msgstr "Favoritos" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "Teste" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Criar" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "Inverter o teste da expressão regular" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "no campo" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "em" + +#: classes/pref/filters.php:947 +#, fuzzy +msgid "Wiki: Filters" +msgstr "Filtros" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "Salvar regra" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "Adicionar regra" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Executar ação" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "Com os parâmetros:" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "Salvar ação" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "Adicionar ação" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[Sem título]" + +#: classes/pref/filters.php:1044 +#, fuzzy, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "Adicionar regra" +msgstr[1] "Adicionar regra" +msgstr[2] "Adicionar regra" + +#: classes/pref/filters.php:1059 +#, fuzzy, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "Adicionar ação" +msgstr[1] "Adicionar ação" +msgstr[2] "Adicionar ação" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "Cores" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "Cor do texto:" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "Cor de fundo:" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "Marcador %s criado" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Limpar cores" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Geral" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Interface" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Avançado" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "Resumo" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "Permitir artigos duplicados" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Tags bloqueadas" + +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "Durante a detecção automática de tags essas não serão aplicadas (lista separada por vírgulas)." + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "Marcar artigos como lidos automaticamente" + +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "Esta opção ativa a marcação de artigos como lidos automaticamente enquanto você roda a lista." + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "Expandir artigos automaticamente no modo combinado" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "Mostrar no modo combinado" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Mostrar a lista de assinaturas com título e conteúdo junto ao invés de uma caixa com os títulos e outra com o conteúdo" + +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "Confirme marcando o Feed como lido" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "Quantidade de artigos a exibir de uma vez" + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "Intervalo de atualização padrão" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "Intervalo mais curto em que um feed será verificado por update, não importando o mecanismo selecionado." + +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "Marcar artigos do resumo por e-mail como lidos" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "Habilitar resumo por e-mail" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Esta opção habilita o envio diário de um resumo com os títulos dos artigos novos (e não lidos) no seu e-mail configurado" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "Tenta enviar resumos ao redor da hora especificada" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "Usa horário UTC" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "Habilitar acesso por API" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "Permite que clientes externos acessem essa conta pela API" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Habilitar categorias de inscrição." + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "Ordenar assinaturas pela quantidade de artigos" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Tempo máximo para artigos recentes (em horas)" + +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "Esconder assinaturas sem artigos não lidos" + +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "Sempre mostrar as assinaturas especiais" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "Formato de data longo" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "O formato de data é idêntico à função date() do PHP." + +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Abrir a próxima assinatura com artigos não lidos automaticamente depois de marcar como lido" + +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Apagar artigos depois de quantos dias (0 = nunca)" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "Apagar artigos não lidos" + +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "Inverter ordem dos cabeçalhos (mais antigos primeiro)" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "Formato de data curto" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "Mostrar prévia do conteúdo na lista de cabeçalhos" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "Ordenar os títulos pela data na assinatura" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "Login com um certificado SSL" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Clique para registrar seu certificado SSL no tt-rss" + +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "Não incluir imagens nos artigos" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "Remover tags inseguras dos artigos" + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Remover todas as tags HTML exceto as mais comuns ao ler artigos." + +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "Personalize a folha de estilo" + +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "Personalize a folha de estilo de acordo com seu gosto" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "Fuso horário" + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "Agrupar títulos em assinaturas virtuais" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "Assinaturas, marcadores e categorias especiais são agrupadas pelos feeds de origem" + +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "Língua" + +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "Tema" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "Selecione um dos temas CSS disponíveis" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "A configuração foi salva" + +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "Seus dados pessoais foram salvos." + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "Sua configuração foi ajustada para os valores padrão." + +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "Dados pessoais / Autenticação" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "Dados pessoais" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "Nome completo" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "E-mail" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Nível de acesso" + +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Salvar" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "Sua senha é a padrão, você deve mudá-la." + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "Trocar sua senha atual vai desabilitar a senha descartável." + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Senha antiga" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Senha nova" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Confirmar senha" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "Mudar senha" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "Senhas descartáveis / Autenticador" + +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "Senhas descartáveis estão ativas. Entre sua senha atual para desabilitar." + +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "Entre sua senha" + +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "Desabilitar OTP" + +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "Você precisa de um autenticador compatível para usar esse recurso. Trocar a sua senha principal vai desativar automaticamente o uso de senhas descartáveis." + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "Leia o código abaixo com a aplicação autenticadora." + +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "Entre a senha provisória gerada" + +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "Habilitar OTP" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "É necessário ter o PHP GD para suporte OTP." + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "Algumas opções só estão disponíveis no perfil padrão." + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "Personalizar" + +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "Registrar" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "Limpar" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "Hora atual no servidor: %s (UTC)" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Salvar configuração" + +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "Salvar e sair das preferências" + +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "Gerenciar perfis" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "Reiniciar para o padrão" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "Você precisa reiniciar o TT-RSS para que as mudanças de plugin façam efeito." + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "Obtenha mais plugins no forum ou wiki do tt-rss." + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "Plugins de sistema" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "Plugin" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "Descrição" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "Versão" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "Autor" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "Mais informações" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "Limpar dados" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "Plugins de usuário" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "Habilitar plugins selecionados" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "Senha provisória é inválida" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "Senha inválida" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "Você pode alterar cores, fontes e layout do tema atual com um CSS personalizado. Esse arquivo pode ser usado como referência." + +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "Criar perfil" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(ativo)" + +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "Remover os perfis selecionados?" + +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "Ativar perfil" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "" + +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "Sua URL OPML pública é:" + +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "Gerar nova 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 "Serviço de atualização está habilitado na configuração, porém, o processo de atualização não está rodando. Isso impede a atualização de todas as assinaturas. Por favor inicie o serviço ou contacte o administrador." + +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "Última atualização:" + +#: 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 "O serviço de atualização está demorando demais para atualizar um feed. Isso pode indicar um problema. Por favor verifique o processo correspondente ou contacte o administrador." + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "Você pode ver essa assinatura como RSS usando a seguinte URL:" + +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" + +#: plugins/af_psql_trgm/init.php:112 +#, fuzzy +msgid "Show related articles" +msgstr "Artigos compartilhados" + +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +#, fuzzy +msgid "Mark similar articles as read" +msgstr "Marcar todos os artigos como lidos?" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +#, fuzzy +msgid "Global settings" +msgstr "Incluir configurações" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "Favoritos" + +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" + +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" + +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "" + +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "" + +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "Editar anotação sobre o artigo" + +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "Nenhum arquivo enviado." + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "Feito. %d de %d artigos importados." + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "O documento está no formato errado." + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "Importar ítens com estrela do Google Reader" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "Cole o arquivo starred.json ou shared.json no formulário abaixo." + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "Importar meus ítens com estrela" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[Encaminhado]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "Múltiplos artigos" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "Clique no link seguinte para ativar seu cliente de e-mail:" + +#: plugins/mailto/init.php:75 +msgid "Forward selected article(s) by email." +msgstr "Encaminhar artigo(s) selecionados por e-mail." + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "Você deve poder editar a mensagem antes de enviar em seu cliente de e-mail." + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "Fechar esta janela" + +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "Importar e exportar" + +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "" + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "Exportar meus dados" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Importar" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "" + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "Não foi possível importar: Formato de documento desconhecido." + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "Terminado:" + +#: plugins/import_export/init.php:388 +#, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "%d artigo processado," +msgstr[1] "%d artigos processados," +msgstr[2] "%d artigos processados," + +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "%d importado," +msgstr[1] "%d importados," +msgstr[2] "%d importados," + +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "%d feed criado." +msgstr[1] "%d feeds criados." +msgstr[2] "%d feeds criados." + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "Não foi possível ler o documento XML." + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "Preparar dados" + +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "Tags para considerar NSFW (separadas por vírgula)" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "Configuração salva." + +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "Por favor, entre sua senha temporária" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "Senha foi alterada." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "Senha antiga incorreta" + +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "Fechar artigo" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "" + +#: plugins/mail/init.php:34 +#, fuzzy +msgid "Mail plugin" +msgstr "Plugins de usuário" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "" + +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "Para:" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "Assunto:" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "Enviar e-mail" + +#: plugins/instances/init.php:141 +#, fuzzy +msgid "Linked" +msgstr "Link" + +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" +msgstr "Instância" + +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "URL da instância" + +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "Chave de acesso:" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "Chave de acesso" + +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "Use uma chave de acesso para ambas as instâncias." + +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "Gerar uma nova chave" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "Conectar instância" + +#: 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 "Você pode conectar outras instâncias to Tiny Tiny RSS a esta para compartilhar assinaturas populares. Conecte a esta instância do Tiny Tiny RSS usando esta URL:" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "Última conexão" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "Inscrições armazenadas" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "Criar link" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "Configuração salva." + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "Verificar disponibilidade" + +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "Editar anotação sobre o artigo" + +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "Artigos compartilhados" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +msgid "Statistics" +msgstr "" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "Artigos com estrela" + +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "Limpar dados" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, fuzzy, php-format +msgid "Currently stored as: %s" +msgstr "Hora atual no servidor: %s (UTC)" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "" + +#: 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 "Arraste o link abaixo para a barra de ferramentas do seu navegador, abra o feed que você se interessar em seu navegador e clique no link para assinar." + +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "Assinar %s em TT-Rss?" + +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Assinar em TT-Rss" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "Você pode desabilitar todos os artigos compartilhados por URLs únicas aqui." + +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "Cancelar compartilhamento de todos os artigos" + +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "Compartilhar pela URL" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "Você pode compartilhar esse artigo pela seguinte URL:" + +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "Remover compartilhamento" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "O erro será enviado para o arquivo de log configurado." + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "" + +#: js/functions.js:93 +msgid "Close" +msgstr "" + +#: js/functions.js:104 +#, fuzzy +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "Tem certeza de que deseja enviar esta excessão para o site tt-rss.org? O relatório vai incluir informações sobre o seu navegador. Seu endereço IP será salvo no banco de dados." + +#: js/functions.js:224 +msgid "Click to close" +msgstr "Clique para fechar" + +#: js/functions.js:1051 +msgid "Edit action" +msgstr "Editar ação" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "Criar um filtro" + +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "Reiniciar a assinatura? Tiny Tiny RSS vai tentar reassinar no hub de notificações na próxima atualização." + +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "Reiniciar assinatura." + +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "Cancelar inscrição de %s?" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "Removendo o Feed..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "Por favor entre o título da categoria:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Tentando alterar endereço ..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "Nenhum feed foi selecionado." + +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "Remover as assinaturas selecionadas do arquivo? Assinaturas com artigos armazenados não serão removidas." + +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "Inscrições com erro na atualização" + +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "Remover inscrições selecionadas?" + +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "Removendo inscrições selecionadas…" + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "Editar categoria" + +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "Remover categoria" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "Invertido" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "Por favor entre login:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "Não foi possível criar o usuário: Nenhum nome foi especificado." + +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "Adicionando o usuário…" + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Editor de usuários" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "Salvando dados..." + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "Editar filtros" + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "Remover filtro?" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "Removendo filtro..." + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "Remover marcadores selecionados?" + +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "Removendo marcadores selecionados..." + +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "Nenhum marcador está selecionado." + +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "Remover usuários selecionados? A sua conta e a do administrador não serão removidas." + +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "Removendo usuários selecionados…" + +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "Nenhum usuário foi selecionado." + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "Remover os filtros selecionados?" + +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "Removendo filtros selecionados…" + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "Nenhum filtro foi selecionado." + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "Cancelar inscrição dos feeds selecionados?" + +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "Cancelando inscrição dos feeds selecionados..." + +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "Por favor selecione somente um feed" + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "Apagar todos os arquivos sem estrela na inscrição selecionada?" + +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "Limpando inscrição selecionada..." + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "Manter os artigos por quantos dias (0 para usar o padrão)?" + +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "Apagando assinatura selecionada..." + +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "Por favor selecione somente um usuário." + +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "Reiniciar a senha do usuário selecionado?" + +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "Reiniciando a senha do usuário selecionado..." + +#: js/prefs.js:565 +msgid "User details" +msgstr "Detalhes do usuário" + +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "Por favor selecione somente um filtro." + +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "Combinar os filtros selecionados?" + +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "Combinando filtros..." + +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "Editar múltiplas assinaturas" + +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "Salvar alterações nas inscrições selecionadas?" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "Importar OPML" + +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "Por favor selecione um arquivo OPML." + +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "Importando, por favor aguarde..." + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "Usar o padrão?" + +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "Adicionando inscrições..." + +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "Limpar dados armazenados para este plugin?" + +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "Limpar todas as mensagems no registro de erro?" + +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "Marcar todos os artigos como lidos?" + +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "Marcando todos os feeds como lidos..." + +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "Por favor habilite o plugin de e-mail." + +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "Você não pode editar esse tipo de feed." + +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "Por favor, habilite o plugin \"embed_original\"." + +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "" + +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "Você não pode classificar esse tipo de assinatura." + +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "Por favor selecione alguma inscrição." + +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "Reclassificar artigos em %s?" + +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "Reclassificando artigos..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "Nenhum artigo foi selecionado." + +#: js/viewfeed.js:1018 +#, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "Apagar %d artigo selecionado em %s?" +msgstr[1] "Apagar %d artigos selecionados em %s?" +msgstr[2] "Apagar %d artigos selecionados em %s?" + +#: js/viewfeed.js:1020 +#, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "Apagar %d artigo selecionado?" +msgstr[1] "Apagar %d artigos selecionados?" +msgstr[2] "Apagar %d artigos selecionados?" + +#: js/viewfeed.js:1062 +#, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "Arquivar %d artigo em %s?" +msgstr[1] "Arquivar %d artigos em %s?" +msgstr[2] "Arquivar %d artigos em %s?" + +#: js/viewfeed.js:1065 +#, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "Mover %d artigo de volta?" +msgstr[1] "Mover %d artigos de volta?" +msgstr[2] "Mover %d artigos de volta?" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "Por favor note que artigos sem estrela podem ser removidos na próxima atualização." + +#: js/viewfeed.js:1112 +#, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "Marcar %d artigo selecionado em %s como lido?" +msgstr[1] "Marcar %d artigos selecionados em %s como lidos?" +msgstr[2] "Marcar %d artigos selecionados em %s como lidos?" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "Editar Tags do artigo" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "Salvando tags..." + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +#, fuzzy +msgid "Click to open next unread feed." +msgstr "Clique para editar inscrição" + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "Abrir o artigo original" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Incluir marcador" + +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "Remover marcador" + +#: js/viewfeed.js:2159 +#, fuzzy +msgid "Select articles in group" +msgstr "Selecionar artigo sob o cursor" + +#: js/viewfeed.js:2168 +#, fuzzy +msgid "Mark group as read" +msgstr "Marcar como lido" + +#: js/viewfeed.js:2180 +#, fuzzy +msgid "Mark feed as read" +msgstr "Marcar como lido" + +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "Por favor entre uma nova classificação para os artigos selecionados:" + +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "Por favor entre uma nova classificação para esse artigo:" + +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "URL do artigo:" + +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "" + +#: plugins/af_psql_trgm/init.js:11 +#, fuzzy +msgid "Related articles" +msgstr "Favoritos" + +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "Salvando anotação..." + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Importar do Google Reader" + +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "Por favor selecione primeiro um arquivo." + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "Encaminhar artigo por email" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "Exportar dados" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "Exportação de %d artigo terminada. Você pode baixar os dados aqui." +msgstr[1] "Exportação de %d artigos terminada. Você pode baixar os dados aqui." +msgstr[2] "Exportação de %d artigos terminada. Você pode baixar os dados aqui." + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Importar dados" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "Por favor selecione primeiro o arquivo." + +#: plugins/shorten_expanded/init.js:37 +#, fuzzy +msgid "Click to expand article" +msgstr "Favoritos" + +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" + +#: plugins/mail/mail.js:38 +#, fuzzy +msgid "Your message has been sent." +msgstr "Seus dados pessoais foram salvos." + +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "Conectar instância" + +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "Editar instância" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "Remover as instâncias selecionadas?" + +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "Removendo instâncias selecionadas..." + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "Nenhuma instância foi selecionada." + +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "Por favor selecione apenas uma instância" + +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "Limpar dados da inscrição" + +#: plugins/af_sort_bayes/init.js:70 +#, fuzzy +msgid "Classifier information" +msgstr "Acção" + +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "Compartilhar artigo pela URL" + +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "Gerar uma nova URL de compartilhamento para esse artigo?" + +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "Tentando mudar a URL..." + +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "Remover compartilhamento deste artigo?" + +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "Tentando remover compartilhamento ..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "" + +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "Limpando URLs..." + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "" + +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "Marcar todos os artigos em %s como lidos?" + +#: js/feedlist.js:435 +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "Marcar todos os artigos em %s e com mais de 1 dia como lidos?" + +#: js/feedlist.js:438 +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "Marcar todos os artigos em %s e com mais de 1 semana como lidos?" + +#: js/feedlist.js:441 +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "Marcar todos os artigos em %s e com mais de 2 semanas como lidos?" + +#: js/functions.js:615 +msgid "Error explained" +msgstr "Detalhamento do erro" + +#: js/functions.js:697 +msgid "Upload complete." +msgstr "Upload completo." + +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "Remover o ícone armazenado para essa assinatura?" + +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "Removendo icone da assinatura..." + +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "Ãcone da inscrição foi removido." + +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "Por favor selecione um arquivo de imagem para enviar." + +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "Enviar novo icone para essa inscrição?" + +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "Enviando, por favor aguarde..." + +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "Por favor entre o título do marcador:" + +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "Não foi posso criar o marcador: Falta o título" + +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "Assinar inscrição" + +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "" + +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "%s assinado" + +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "URL informada parece ser inválida." + +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "A URL informada não parece conter nenhum feed." + +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "Expandir inscrição selecionada" + +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "Não foi possível baixar a URL informada: %s" + +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "Erro na validação do XML: %s" + +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "Você já assinou este feed." + +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "Editar regra" + +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "Editar inscrição" + +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "Mais inscrições" + +#: js/functions.js:1878 +msgid "Help" +msgstr "Ajuda," + +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "Remover a categoria %s? As assinaturas associadas serão colocadas em \"Não categorizadas\"." + +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "Removendo categoria..." + +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "Remover as categorias selecionadas?" + +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "Removendo categorias selecionadas…" + +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "Nenhuma categoria foi selecionada." + +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "Título da categoria..." + +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "Criando categoria..." + +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "Inscrições sem atualização recente" + +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "Substituir o endereço de publicação OPML por um novo?" + +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "Limpando inscrição..." + +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "Reclassificar artigos nas inscrições selecionadas?" + +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "Removendo inscrições selecionadas…" + +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "Reclassificar todos os artigos? Esta operação pode demorar um bom tempo." + +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "Reclassificando assinaturas..." + +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "Reiniciar marcadores selecionados para a cor padrão?" + +#: js/prefs.js:1403 +#, fuzzy +msgid "Settings Profiles" +msgstr "Criando perfil..." + +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "Remover os perfis selecionados? O perfil ativo e os perfis padrão não serão removidos." + +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "Removendo perfis selecionados…" + +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "Nenhum perfil está selecionado." + +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "Ativar o perfil selecionado?" + +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "Por favor, selecione um perfil para ativar." + +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "Criando perfil..." + +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "" + +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "URLs automaticas limpas." + +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Editor de marcador" + +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "Você não pode cancelar a inscrição dessa categoria." + +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "Cancelar pesquisa" + +#: js/viewfeed.js:174 +#, fuzzy +msgid "New articles found, reload feed to continue." +msgstr "Nenhum artigo foi encontrado para exibir." + +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Remover estrela" + +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "Incluir estrela" + +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "Cancelar publicação" + +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Publicar artigo" + +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "%d artigo selecionado" +msgstr[1] "%d artigos selecionados" +msgstr[2] "%d artigos selecionados" + +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "Nenhum artigo foi selecionado." + +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "Nenhum artigo foi encontrado para marcar" + +#: js/viewfeed.js:1452 +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "Marcar %d artigo como lido?" +msgstr[1] "Marcar %d artigos como lidos?" +msgstr[2] "Marcar %d artigos como lidos?" + +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "Mostrar URL do artigo" + +#~ msgid "Select by tags..." +#~ msgstr "Selecionar por marcadores..." + +#~ msgid "Limit search to:" +#~ msgstr "Limitar pesquisa a:" + +#~ msgid "This feed" +#~ msgstr "Esta assinatura" + +#~ msgid "Old password cannot be blank." +#~ msgstr "A senha antiga não pode ser vazia." + +#~ msgid "New password cannot be blank." +#~ msgstr "A nova senha não pode ser vazia." + +#~ msgid "Entered passwords do not match." +#~ msgstr "As senhas informadas não conferem." + +#~ msgid "Function not supported by authentication module." +#~ msgstr "Função não suportada pelo módulo de autenticação." + +#~ msgid "All tags." +#~ msgstr "Todas as tags" + +#~ msgid "Which Tags?" +#~ msgstr "Quais tags?" + +#~ msgid "Select item(s) by tags" +#~ msgstr "Selecionar item(s) pelas tags" + +#~ msgid "Unread First" +#~ msgstr "Não Lidos Primeiro" + +#~ msgid "Unknown option: %s" +#~ msgstr "Opção desconhecida: %s" + +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "Uma nova versão do TT-Rss está disponível!" + +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "Falha ao validar a sessão (Mudança de navegador)" + +#~ msgid "Assign articles to labels automatically" +#~ msgstr "Incluir marcadores nos artigos automaticamente" + +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "Uma nova versão do Tiny Tiny RSS está disponível (%s)" + +#~ msgid "You can update using built-in updater in the Preferences or by using update.php" +#~ msgstr "Você pode atualizar usando o atualizador interno nas preferências ou usando update.php" + +#~ msgid "See the release notes" +#~ msgstr "Veja as notas de lançamento" + +#~ msgid "Download" +#~ msgstr "Baixar" + +#~ msgid "Error receiving version information or no new version available." +#~ msgstr "Erro ao receber informação de versão ou nenhuma atualização disponível." + +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Atualizar TT-RSS" + +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "Sua instalação do TT-Rss está atualizada." + +#, fuzzy +#~ msgid "Force update" +#~ msgstr "Executar atualização" + +#~ msgid "Do not close this dialog until updating is finished." +#~ msgstr "Não feche esta janela até que a atualização esteja terminada." + +#~ msgid "It is suggested to backup your tt-rss directory first." +#~ msgstr "É recomendado fazer um backup do diretório do tt-rss antes." + +#~ msgid "Your database will not be modified." +#~ msgstr "Seu banco de dados não será modificado." + +#~ 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 "Seu diretório atual da instalação do tt-rss não será modificado. Ele será apenas renomeado. Você poderá migrar seus arquivos personalizados após o término da atualização." + +#~ msgid "Ready to update." +#~ msgstr "Pronto para atualizar." + +#~ msgid "Start update" +#~ msgstr "Iniciar atualização" + +#~ msgid "Backup your tt-rss directory before continuing. Please type 'yes' to continue." +#~ msgstr "Salve uma cópia do seu diretório do tt-rss antes de continuar. Por favor, digite 'yes' para continuar." + +#~ msgid "New version available!" +#~ msgstr "Nova versão disponível!" + +#~ msgid "LibXML error %s at line %d (column %d): %s" +#~ msgstr "Erro LibXML %s na linha %d (coluna %d): %s" + +#~ msgid "From:" +#~ msgstr "De:" + +#~ msgid "Select:" +#~ msgstr "Selecione:" + +#~ msgid "mark as read" +#~ msgstr "marcar como lido" + +#~ msgid "Change password to" +#~ msgstr "Mudar senha para" + +#~ msgid "E-mail: " +#~ msgstr "E-mail:" + +#~ msgid "Login field cannot be blank." +#~ msgstr "O campo de Login não pode ser vazio." + +#~ msgid "Saving user..." +#~ msgstr "Salvando usuário" + +#~ msgid "Toggle marked" +#~ msgstr "Marcar/Desmarcar" + +#, fuzzy +#~ msgid "(Un)hide empty categories" +#~ msgstr "Editar categorias" + +#, fuzzy +#~ msgid "Published articles and generated feeds" +#~ msgstr "Remover os filtros selecionados?" + +#, fuzzy +#~ msgid "Articles shared by URL" +#~ msgstr "Favoritos" + +#~ msgid "Hello," +#~ msgstr "Olá," + +#, fuzzy +#~ msgid "Enable categories" +#~ msgstr "Editar categorias" + +#, fuzzy +#~ msgid "Hide read articles and feeds" +#~ msgstr "Favoritos" + +#, fuzzy +#~ msgid "Article archive" +#~ msgstr "Feed não encontrado." + +#, fuzzy +#~ msgid "Set value" +#~ msgstr "Marcar como favorito" + +#, fuzzy +#~ msgid "Mark %d displayed article as read?" +#~ msgid_plural "Mark %d displayed articles as read?" +#~ msgstr[0] "Marcando todos os feeds como lidos..." +#~ msgstr[1] "Marcando todos os feeds como lidos..." + +#, fuzzy +#~ msgid "Error: unable to load article." +#~ msgstr "Favoritos" + +#, fuzzy +#~ msgid "Click to expand article." +#~ msgstr "Favoritos" + +#, fuzzy +#~ msgid "%d more..." +#~ msgid_plural "%d more..." +#~ msgstr[0] "Salvando o Feed..." +#~ msgstr[1] "Salvando o Feed..." + +#, fuzzy +#~ msgid "No unread feeds." +#~ msgstr "Favoritos" + +#, fuzzy +#~ msgid "Load more..." +#~ msgstr "Salvando o Feed..." + +#, fuzzy +#~ msgid "Show tag cloud..." +#~ msgstr "núvem de tags" + +#, fuzzy +#~ msgid "Click to play" +#~ msgstr "Favoritos" + +#~ msgid "Select theme" +#~ msgstr "Selecionar o tema" + +#, fuzzy +#~ msgid "Playing..." +#~ msgstr "Salvando o Feed..." + +#, fuzzy +#~ msgid "Default interval between feed updates" +#~ msgstr "Padrão" + +#~ msgid ", found: " +#~ msgstr ", encontrou:" + +#~ msgid "Please backup your database before proceeding." +#~ msgstr "Faça uma cópia-de-segurança de seus dados antes de prosseguir." + +#~ msgid "Updating to version %d..." +#~ msgstr "Atualizando para a versão %d..." + +#~ msgid "Checking version... " +#~ msgstr "Verificando a versão…" + +#~ msgid "OK!" +#~ msgstr "OK!" + +#~ msgid "ERROR!" +#~ msgstr "ERRO!" + +#~ msgid "Title or Content" +#~ msgstr "Título ou Conteúdo" + +#~ msgid "Link" +#~ msgstr "Link" + +#~ msgid "Content" +#~ msgstr "Conteúdo" + +#, fuzzy +#~ msgid "Article Date" +#~ msgstr "Feed não encontrado." + +#~ msgid "Set starred" +#~ msgstr "Marcar como favorito" + +#, fuzzy +#~ msgid "Assign tags" +#~ msgstr "sem tags" + +#, fuzzy +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Senha antiga incorreta" + +#, fuzzy +#~ msgid "Date syntax is incorrect." +#~ msgstr "Senha antiga incorreta" + +#, fuzzy +#~ msgid "Tag Cloud" +#~ msgstr "Núvem de tags" + +#, fuzzy +#~ msgid "Mark all visible articles in %s as read?" +#~ msgstr "Marcando todos os feeds como lidos..." + +#, fuzzy +#~ msgid "Share on identi.ca" +#~ msgstr "Título" + +#, fuzzy +#~ msgid "Flattr this article." +#~ msgstr "Favoritos" + +#, fuzzy +#~ msgid "Share on Google+" +#~ msgstr "Título" + +#, fuzzy +#~ msgid "Share on Twitter" +#~ msgstr "Título" + +#, fuzzy +#~ msgid "Show additional preferences" +#~ msgstr "Sair das preferências" + +#, fuzzy +#~ msgid "Back to feeds" +#~ msgstr "Todos os feeds" + +#, fuzzy +#~ msgid "Clearing credentials..." +#~ msgstr "Salvando o Feed..." + +#~ msgid "Updated" +#~ msgstr "Atualizado" + +#, fuzzy +#~ msgid "Notifying %s." +#~ msgstr "Adicionando a categoria %s." + +#~ msgid "Yes" +#~ msgstr "Sim" + +#~ msgid "No" +#~ msgstr "Não" + +#, fuzzy +#~ msgid "Move between articles" +#~ msgstr "Favoritos" + +#, fuzzy +#~ msgid "Active article actions" +#~ msgstr "Favoritos" + +#, fuzzy +#~ msgid "Mark articles below/above active one as read" +#~ msgstr "Marcando todos os feeds como lidos..." + +#, fuzzy +#~ msgid "Other actions" +#~ msgstr "Outras ações:" + +#, fuzzy +#~ msgid "Multiple articles actions" +#~ msgstr "Favoritos" + +#, fuzzy +#~ msgid "Select starred articles" +#~ msgstr "Favoritos" + +#, fuzzy +#~ msgid "Feed actions" +#~ msgstr "Ações do Feed:" + +#, fuzzy +#~ msgid "Press any key to close this window." +#~ msgstr "Fechar esta janela" + +#~ msgid "My Feeds" +#~ msgstr "Meus Feeds" + +#~ msgid "Other Feeds" +#~ msgstr "Outros Feeds" + +#, fuzzy +#~ msgid "Panel actions" +#~ msgstr "Ações do Feed:" + +#, fuzzy +#~ msgid "Edit feed categories" +#~ msgstr "Editar categorias" + +#, fuzzy +#~ msgid "Right-to-left content" +#~ msgstr "Título ou conteúdo" + +#, fuzzy +#~ msgid "Loading..." +#~ msgstr "Salvando o Feed..." + +#, fuzzy +#~ msgid "Magpie" +#~ msgstr "Página" + +#, fuzzy +#~ msgid "Original article" +#~ msgstr "Favoritos" + +#, fuzzy +#~ msgid "Update feed" +#~ msgstr "Favoritos" + +#, fuzzy +#~ msgid "With subcategories" +#~ msgstr "Editar categorias" + +#, fuzzy +#~ msgid "
  • Adding category %s.
  • " +#~ msgstr "Adicionando a categoria %s." + +#, fuzzy +#~ msgid "OK" +#~ msgstr "OK!" + +#, fuzzy +#~ msgid "after" +#~ msgstr "Atualizar" + +#, fuzzy +#~ msgid "Apply to category" +#~ msgstr "Salvando categoria..." + +#~ msgid "Category $%s already exists in the database." +#~ msgstr "A categoria $%s já existe na base de dados." + +#, fuzzy +#~ msgid "Remove selected categories" +#~ msgstr "Remover as categorias selecionadas?" + +#, fuzzy +#~ msgid "Twitter" +#~ msgstr "Título" + +#, fuzzy +#~ msgid "Subscribing to feed..." +#~ msgstr "Removendo o Feed..." + +#, fuzzy +#~ msgid "Feed Categories" +#~ msgstr "Categoria:" + +#, fuzzy +#~ msgid "Importing using DOMXML." +#~ msgstr "Importando OPML (usando a extensão DOMXML)..." + +#, fuzzy +#~ msgid "Importing using DOMDocument." +#~ msgstr "Importando OPML (usando a extensão DOMDocument)…" + +#~ msgid "DOMXML extension is not found. It is required for PHP versions below 5." +#~ msgstr "A extensão DOMXML não foi encontrada. Ela é exigida para versões do PHP menores que 5." + +#, fuzzy +#~ msgid "Publish" +#~ msgstr "Publicado" + +#~ msgid "Changed password of user %s." +#~ msgstr "Alterada a senha do usuário %s." + +#, fuzzy +#~ msgid "Content filtering" +#~ msgstr "Filtrando o conteúdo" + +#~ msgid "short_desc" +#~ msgstr "short_desc" + +#, fuzzy +#~ msgid "Remove:" +#~ msgstr "Remover" + +#, fuzzy +#~ msgid "Toggle category reordering mode" +#~ msgstr "Remover as categorias selecionadas?" + +#, fuzzy +#~ msgid "feeds" +#~ msgstr "Feed" + +#~ msgid "Importing OPML (using DOMXML extension)..." +#~ msgstr "Importando OPML (usando a extensão DOMXML)..." + +#~ msgid "Importing OPML (using DOMDocument extension)..." +#~ msgstr "Importando OPML (usando a extensão DOMDocument)…" + +#~ msgid "Unknown error" +#~ msgstr "Erro desconhecido" + +#, fuzzy +#~ msgid "View article" +#~ msgstr "Favoritos" + +#, fuzzy +#~ msgid "Fatal Exception" +#~ msgstr "Erro Fatal" + +#, fuzzy +#~ msgid "Feed Browser" +#~ msgstr "Editor de Feed" + +#, fuzzy +#~ msgid "Filter Editor" +#~ msgstr "Editor de Feed" + +#, fuzzy +#~ msgid "Click to change color" +#~ msgstr "Favoritos" + +#~ msgid "Save current configuration?" +#~ msgstr "Salvar a configuração atual?" + +#~ msgid "Tags" +#~ msgstr "Tags" + +#, fuzzy +#~ msgid "toggle unread" +#~ msgstr "Marcar como favorito" + +#, fuzzy +#~ msgid "(remove)" +#~ msgstr "Remover" + +#, fuzzy +#~ msgid "Cancel synchronization" +#~ msgstr "Salvar configuração" + +#, fuzzy +#~ msgid "Remove stored data" +#~ msgstr "Remover as categorias selecionadas?" + +#, fuzzy +#~ msgid "Reset UI layout" +#~ msgstr "  Editar esse Feed" + +#~ msgid "Showing most popular tags " +#~ msgstr "Exibir as Tags mais populares." + +#, fuzzy +#~ msgid "more tags" +#~ msgstr "sem tags" + +#~ msgid "Change e-mail" +#~ msgstr "Mudar E-mail" + +#, fuzzy +#~ msgid "Synchronizing feeds..." +#~ msgstr "Salvando o Feed..." + +#, fuzzy +#~ msgid "Synchronizing categories..." +#~ msgstr "Salvando categoria..." + +#, fuzzy +#~ msgid "Synchronizing articles..." +#~ msgstr "Favoritos" + +#, fuzzy +#~ msgid "Synchronizing articles (%d)..." +#~ msgstr "Favoritos" + +#, fuzzy +#~ msgid "Reset category order?" +#~ msgstr "Remover as categorias selecionadas?" + +#~ msgid "No feeds to display." +#~ msgstr "Sem Feeds para exibir." + +#~ msgid "Remove selected users?" +#~ msgstr "Remover os usuários selecionados?" + +#~ msgid "Adding feed..." +#~ msgstr "Adicionando o Feed..." + +#, fuzzy +#~ msgid "Assign score to article:" +#~ msgstr "Favoritos" + +#, fuzzy +#~ msgid "Category reordering disabled" +#~ msgstr "Remover as categorias selecionadas?" + +#, fuzzy +#~ msgid "Category reordering enabled" +#~ msgstr "Remover as categorias selecionadas?" + +#, fuzzy +#~ msgid "Changing password..." +#~ msgstr "Mudar senha" + +#~ msgid "Mark as read:" +#~ msgstr "Marcar como lido:" + +#, fuzzy +#~ msgid "Remove selected articles from label?" +#~ msgstr "Remover os filtros selecionados?" + +#, fuzzy +#~ msgid "Removing offline data..." +#~ msgstr "Removendo o Feed..." + +#, fuzzy +#~ msgid "Rescore last 100 articles in selected feeds?" +#~ msgstr "Remover os filtros selecionados?" + +#, fuzzy +#~ msgid "Saving feeds..." +#~ msgstr "Salvando o Feed..." + +#~ msgid "Saving filter..." +#~ msgstr "Salvando o filtro..." + +#~ msgid "Selection" +#~ msgstr "Seleção" + +#~ msgid "Changing category of selected feeds..." +#~ msgstr "Alterando a categoria dos feeds selecionados…" + +#~ msgid "Trying to change password..." +#~ msgstr "Tentando alterar senha ..." + +#~ msgid "Done." +#~ msgstr "Feito." + +#~ msgid "Change theme" +#~ msgstr "Mudar Tema" + +#, fuzzy +#~ msgid "Remove selected feeds from archive?" +#~ msgstr "Remover os filtros selecionados?" + +#, fuzzy +#~ msgid "More feeds..." +#~ msgstr "Removendo o Feed..." + +#, fuzzy +#~ msgid "Order:" +#~ msgstr "Onde:" + +#, fuzzy +#~ msgid "View:" +#~ msgstr "Título" + +#~ msgid "Page" +#~ msgstr "Página" + +#, fuzzy +#~ msgid "Tags:" +#~ msgstr "Tags" + +#, fuzzy +#~ msgid "Mark as unread" +#~ msgstr "Marcar como lido" + +#~ msgid "Where:" +#~ msgstr "Onde:" + +#~ msgid "This program requires XmlHttpRequest " +#~ msgstr "Este programa requer XmlHttpRequest" + +#~ msgid "This program requires cookies " +#~ msgstr "Este programa requer cookies " + +#, fuzzy +#~ msgid "  Keyboard shortcuts" +#~ msgstr "  Criar filtro" + +#~ msgid "filter_type_descr" +#~ msgstr "filter_type_descr" + +#~ msgid "action_description" +#~ msgstr "action_description" + +#~ msgid "Please select only one category." +#~ msgstr "Por favor selecione somente uma categoria." + +#~ msgid "Address changed." +#~ msgstr "Endereço alterado." + +#~ msgid "config: your config file version is incorrect. See config.php-dist.\n" +#~ msgstr "config: a versão do seu arquivo de configuração é incorrecta. Veja em config.php-dist.\n" + +#~ msgid "config: SESSION_EXPIRE_TIME is undefined" +#~ msgstr "config: SESSION_EXPIRE_TIME não definida" + +#~ msgid "config: SESSION_EXPIRE_TIME is too low (less than 60)" +#~ msgstr "config: SESSION_EXPIRE_TIME é muito baixo (menor que 60)" + +#~ msgid "config: SESSION_EXPIRE_TIME should be greater or equal to" +#~ msgstr "config: SESSION_EXPIRE_TIME deveria ser maior ou igual" + +#~ msgid "config: DATABASE_BACKED_SESSIONS is incompatible with SINGLE_USER_MODE" +#~ msgstr "config: DATABASE_BACKED_SESSIONS é incompatível com SINGLE_USER_MODE" + +#~ msgid "config: DATABASE_BACKED_SESSIONS are currently broken with MySQL" +#~ msgstr "config: DATABASE_BACKED_SESSIONS esta atualmente quebrado com MySQL" + +#~ msgid "Unknown Error" +#~ msgstr "Erro desconhecido" + +#, fuzzy +#~ msgid "Site:" +#~ msgstr "Título" + +#~ msgid "Content Filtering" +#~ msgstr "Filtrando o conteúdo" + +#~ msgid "User Manager" +#~ msgstr "Gestão de utilizador" + +#~ msgid "  Edit this feed" +#~ msgstr "  Editar esse Feed" + +#, fuzzy +#~ msgid "  Clear articles" +#~ msgstr "  Criar filtro" + +#, fuzzy +#~ msgid "  Rescore feed" +#~ msgstr "  Editar esse Feed" + +#~ msgid "  Mark as read" +#~ msgstr "  Marcar como lido" + +#, fuzzy +#~ msgid "  Create label" +#~ msgstr "  Criar etiqueta" + +#~ msgid "  Create filter" +#~ msgstr "  Criar filtro" + +#, fuzzy +#~ msgid "  Reset category order" +#~ msgstr "  Editar esse Feed" + +#, fuzzy +#~ msgid "Title contains" +#~ msgstr "Título contêm" + +#, fuzzy +#~ msgid "Content contains" +#~ msgstr "Filtrando o conteúdo" + +#~ msgid "SQL Expression" +#~ msgstr "Expressão SQL" + +#, fuzzy +#~ msgid "Labels and SQL Expressions" +#~ msgstr "Expressão SQL" + +#~ msgid "SQL Expression:" +#~ msgstr "Expressão SQL:" + +#~ msgid "Action:" +#~ msgstr "Acção:" + +#, fuzzy +#~ msgid "Update using:" +#~ msgstr "Actualizar" + +#~ msgid "Change password:" +#~ msgstr "Mudar senha:" + +#~ msgid "Next page" +#~ msgstr "Próxima página" + +#~ msgid "Previous page" +#~ msgstr "Página anterior" + +#~ msgid "First page" +#~ msgstr "Primeira página" + +#~ msgid "  Update" +#~ msgstr "  Atualizar" diff --git a/locale/ru_RU/LC_MESSAGES/messages.mo b/locale/ru_RU/LC_MESSAGES/messages.mo index fd177e279f..2c59292239 100644 Binary files a/locale/ru_RU/LC_MESSAGES/messages.mo and b/locale/ru_RU/LC_MESSAGES/messages.mo differ diff --git a/locale/ru_RU/LC_MESSAGES/messages.po b/locale/ru_RU/LC_MESSAGES/messages.po index c9088d6175..a95b2f38bc 100644 --- a/locale/ru_RU/LC_MESSAGES/messages.po +++ b/locale/ru_RU/LC_MESSAGES/messages.po @@ -1,2580 +1,4592 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -# +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# cyberbat, 2013. msgid "" msgstr "" -"Project-Id-Version: 1.0\n" +"Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-22 22:16+0300\n" -"PO-Revision-Date: 2009-05-29 14:38+0300\n" -"Last-Translator: Max Kamashev \n" -"Language-Team: РуÑÑкий \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2013-07-16 23:45+0400\n" +"Last-Translator: cyberbat \n" +"Language-Team: Russian <>\n" +"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%" -"10>=2 && n% 10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\n" -"X-Poedit-Language: Russian\n" -"X-Poedit-Country: RUSSIAN FEDERATION\n" -"X-Poedit-SourceCharset: utf-8\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Lokalize 1.5\n" -#: backend.php:107 +#: backend.php:73 msgid "Use default" msgstr "По умолчанию" -#: backend.php:108 +#: backend.php:74 msgid "Never purge" msgstr "Ðикогда" -#: backend.php:109 +#: backend.php:75 msgid "1 week old" msgstr "ÐеделÑ" -#: backend.php:110 +#: backend.php:76 msgid "2 weeks old" msgstr "Две недели" -#: backend.php:111 +#: backend.php:77 msgid "1 month old" msgstr "Один меÑÑц" -#: backend.php:112 +#: backend.php:78 msgid "2 months old" msgstr "Два меÑÑца" -#: backend.php:113 +#: backend.php:79 msgid "3 months old" msgstr "Три меÑÑца" -#: backend.php:116 +#: backend.php:82 msgid "Default interval" msgstr "Интервал обновлениÑ:" -#: backend.php:117 backend.php:127 +#: backend.php:83 +#: backend.php:93 msgid "Disable updates" msgstr "Ðе обновлÑть" -#: backend.php:118 backend.php:128 -msgid "Each 15 minutes" +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" msgstr "Каждые 15 минут" -#: backend.php:119 backend.php:129 -msgid "Each 30 minutes" +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" msgstr "Каждые 30 минут" -#: backend.php:120 backend.php:130 +#: backend.php:86 +#: backend.php:96 msgid "Hourly" msgstr "Каждый чаÑ" -#: backend.php:121 backend.php:131 -msgid "Each 4 hours" +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" msgstr "Каждые 4 чаÑа" -#: backend.php:122 backend.php:132 -msgid "Each 12 hours" +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" msgstr "Каждые 12 чаÑов" -#: backend.php:123 backend.php:133 +#: backend.php:89 +#: backend.php:99 msgid "Daily" msgstr "Раз в день" -#: backend.php:124 backend.php:134 +#: backend.php:90 +#: backend.php:100 msgid "Weekly" msgstr "Раз в неделю" -#: backend.php:137 tt-rss.php:220 modules/pref-prefs.php:329 -msgid "Default" -msgstr "По умолчанию" - -#: backend.php:138 -msgid "Magpie" -msgstr "Magpie" - -#: backend.php:139 -msgid "SimplePie" -msgstr "SimplePie" - -#: backend.php:148 modules/pref-users.php:126 +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 msgid "User" msgstr "Пользователь" -#: backend.php:149 +#: backend.php:104 msgid "Power User" msgstr "Ðктивный пользователь" -#: backend.php:150 +#: backend.php:105 msgid "Administrator" msgstr "ÐдминиÑтратор" -#: backend.php:538 login_form.php:142 modules/backend-rpc.php:61 -#: modules/popup-dialog.php:106 -#, fuzzy -msgid "Default profile" -msgstr "КоличеÑтво Ñтатей по умолчанию" - -#: errors.php:3 -msgid "Unknown error" -msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "Программе требуетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¾Ð½Ð°Ð» XmlHttpRequest. Ваш браузер его не поддерживает." -#: errors.php:5 -msgid "" -"This program requires XmlHttpRequest to function properly. Your browser " -"doesn't seem to support it." -msgstr "" -"Программе требуетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¾Ð½Ð°Ð» XmlHttpRequest. Ваш браузер его не " -"поддерживает." - -#: errors.php:8 -msgid "" -"This program requires cookies to function properly. Your browser doesn't " -"seem to support them." +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." msgstr "Ð”Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ программы необходимы куки. Ваш браузер их не поддерживает." -#: errors.php:11 -msgid "Backend sanity check failed" -msgstr "" +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "Произошла ошибка проверки бÑкÑнда" -#: errors.php:13 +#: errors.php:17 msgid "Frontend sanity check failed." -msgstr "" +msgstr "Произошла ошибка проверки фронтÑнда" -#: errors.php:15 -msgid "" -"Incorrect database schema version. <a href='update.php'>Please " -"update</a>." -msgstr "" -"ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð±Ð°Ð·Ñ‹ данных. <a href='update.php'>ПожалуйÑта " -"обновите её</a>." +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð±Ð°Ð·Ñ‹ данных. <a href='update.php'>ПожалуйÑта обновите её</a>." -#: errors.php:17 +#: errors.php:21 msgid "Request not authorized." msgstr "Ð’ доÑтупе отказано." -#: errors.php:19 +#: errors.php:23 msgid "No operation to perform." msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ задана." -#: errors.php:21 -msgid "" -"Could not display feed: query failed. Please check label match syntax or " -"local configuration." -msgstr "" -"Ðе могу показать канал: ошибка в запроÑе. ПожалуйÑта, проверьте ÑинтакÑÐ¸Ñ " -"или локальную конфигурацию." +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "Ðе могу показать канал: ошибка в запроÑе. ПожалуйÑта, проверьте ÑинтакÑÐ¸Ñ Ð¸Ð»Ð¸ локальную конфигурацию." -#: errors.php:23 +#: errors.php:27 msgid "Denied. Your access level is insufficient to access this page." msgstr "Ð’ доÑтупе отказано - недоÑтаточный уровень привилегий." -#: errors.php:25 +#: errors.php:29 msgid "Configuration check failed" msgstr "ТеÑÑ‚ конфигурации неудачен" -#: errors.php:27 -msgid "" -"Your version of MySQL is not currently supported. Please see \n" -"\t\tofficial site for more information." +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." msgstr "" "Ваша верÑÐ¸Ñ MySQL ÑÐµÐ¹Ñ‡Ð°Ñ Ð½Ðµ поддерживаетÑÑ. ПожалуйÑта \n" "\t\tпрочитайте на официальном Ñайте подробную информацию." -#: errors.php:32 +#: errors.php:35 msgid "SQL escaping test failed, check your database and PHP configuration" -msgstr "" -"неудавшийÑÑ Ñ‚ÐµÑÑ‚ ÑÐºÑ€Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ SQL, проверьте вашу базу данных и " -"конфигурацию PHP" - -#: functions.php:1928 -msgid "Session failed to validate (incorrect IP)" -msgstr "Ошибка проверки ÑеÑÑии (некорректный IP)" - -#: functions.php:1998 -msgid "Incorrect username or password" -msgstr "Ðекорректное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ пароль" +msgstr "неудавшийÑÑ Ñ‚ÐµÑÑ‚ ÑÐºÑ€Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ SQL, проверьте вашу базу данных и конфигурацию PHP" -#: functions.php:2979 modules/popup-dialog.php:391 -#: modules/pref-filters.php:420 -msgid "All feeds" -msgstr "Ð’Ñе каналы" - -#: functions.php:3011 functions.php:3050 functions.php:4447 functions.php:4475 -#: modules/backend-rpc.php:859 modules/pref-feeds.php:1333 -msgid "Uncategorized" -msgstr "Ðет категории" +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "Канал не найден." -#: functions.php:3040 functions.php:3689 modules/backend-rpc.php:864 -#: mobile/functions.php:170 -msgid "Special" -msgstr "ОÑобые" +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "Пользователь не найден" -#: functions.php:3042 functions.php:3691 prefs.php:114 -#: modules/backend-rpc.php:869 help/4.php:12 mobile/functions.php:197 -msgid "Labels" -msgstr "Метки" +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "Идет загрузка..." -#: functions.php:3087 help/3.php:60 offline.js:493 offline.js:1425 -msgid "Starred articles" -msgstr "Отмеченные" +#: index.php:167 +msgid "Collapse feedlist" +msgstr "Свернуть ÑпиÑок каналов" -#: functions.php:3089 modules/pref-feeds.php:1492 help/3.php:61 -msgid "Published articles" -msgstr "Опубликованные" +#: index.php:170 +msgid "Show articles" +msgstr "Показать Ñтатьи" -#: functions.php:3091 help/3.php:59 -msgid "Fresh articles" -msgstr "Свежие" +#: index.php:173 +msgid "Adaptive" +msgstr "Ðдаптивно" -#: functions.php:3093 help/3.php:58 offline.js:488 offline.js:1427 -msgid "All articles" +#: index.php:174 +msgid "All Articles" msgstr "Ð’Ñе Ñтатьи" -#: functions.php:3095 -#, fuzzy -msgid "Archived articles" -msgstr "Сохранённые Ñтатьи" - -#: functions.php:4200 -msgid "Generated feed" -msgstr "Генерировать канал" - -#: functions.php:4205 functions.php:5553 modules/popup-dialog.php:82 -#: modules/pref-feeds.php:1087 modules/pref-feeds.php:1297 -#: modules/pref-filters.php:377 modules/pref-labels.php:183 -#: modules/pref-users.php:419 offline.js:408 -msgid "Select:" -msgstr "Выбрать:" - -#: functions.php:4206 modules/popup-dialog.php:83 modules/pref-feeds.php:1088 -#: modules/pref-feeds.php:1298 modules/pref-filters.php:378 -#: modules/pref-labels.php:184 modules/pref-users.php:420 -msgid "All" -msgstr "Ð’Ñе" +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "Отмеченные" + +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "Опубликован" -#: functions.php:4207 functions.php:4224 tt-rss.php:213 +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 msgid "Unread" msgstr "Ðовые" -#: functions.php:4208 -msgid "Invert" -msgstr "Инвертировать" +#: index.php:178 +msgid "With Note" +msgstr "С заметкой" -#: functions.php:4209 modules/popup-dialog.php:84 modules/pref-feeds.php:1089 -#: modules/pref-feeds.php:1299 modules/pref-filters.php:379 -#: modules/pref-labels.php:185 modules/pref-users.php:421 -msgid "None" -msgstr "Ðичего" +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Игнорировать Оценки" -#: functions.php:4217 tt-rss.php:178 offline.js:184 -msgid "Actions..." -msgstr "ДейÑтвиÑ..." +#: index.php:182 +msgid "Sort articles" +msgstr "Сортировать Ñтатьи" -#: functions.php:4223 -msgid "Selection toggle:" -msgstr "Переключить выбранное:" +#: index.php:185 +msgid "Default" +msgstr "По умолчанию" -#: functions.php:4225 tt-rss.php:212 -msgid "Starred" -msgstr "Отмеченные" +#: index.php:186 +msgid "Newest first" +msgstr "Сначала новые" -#: functions.php:4226 -msgid "Published" -msgstr "Опубликован" +#: index.php:187 +msgid "Oldest first" +msgstr "Сначала Ñтарые" -#: functions.php:4227 -msgid "Selection:" -msgstr "Выбрано:" +#: index.php:188 +msgid "Title" +msgstr "Заголовок" -#: functions.php:4228 localized_schema.php:16 tt-rss.php:187 tt-rss.php:230 +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 msgid "Mark as read" msgstr "Как прочитанные" -#: functions.php:4234 -msgid "Archive" -msgstr "" +#: index.php:195 +msgid "Older than one day" +msgstr "Старше одного днÑ" -#: functions.php:4236 -#, fuzzy -msgid "Move back" -msgstr "Идти назад" +#: index.php:198 +msgid "Older than one week" +msgstr "Старше одной недели" -#: functions.php:4237 -#, fuzzy -msgid "Delete" -msgstr "По умолчанию" +#: index.php:201 +msgid "Older than two weeks" +msgstr "Старше двух недель" -#: functions.php:4242 -msgid "Assign label:" -msgstr "Применить метку:" +#: index.php:217 +msgid "Communication problem with server." +msgstr "Проблема ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ñервером" -#: functions.php:4283 -msgid "Click to collapse category" -msgstr "Щёлкните, чтобы развернуть категорию" +#: index.php:223 +msgid "Actions..." +msgstr "ДейÑтвиÑ..." -#: functions.php:4493 -msgid "No feeds to display." -msgstr "Ðет каналов Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ." +#: index.php:225 +msgid "Preferences..." +msgstr "ÐаÑтройки" -#: functions.php:4510 -msgid "Tags" -msgstr "Теги" +#: index.php:226 +msgid "Search..." +msgstr "ПоиÑк..." -#: functions.php:4669 -msgid "audio/mpeg" -msgstr "audio/mpeg" +#: index.php:227 +msgid "Feed actions:" +msgstr "ДейÑÑ‚Ð²Ð¸Ñ Ð½Ð°Ð´ каналами:" -#: functions.php:4795 -msgid " - " -msgstr " - " +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "ПодпиÑатьÑÑ Ð½Ð° канал..." -#: functions.php:4820 functions.php:5580 -msgid "Edit tags for this article" -msgstr "Редактировать теги Ñтатьи" +#: index.php:229 +msgid "Edit this feed..." +msgstr "Редактировать канал..." -#: functions.php:4826 functions.php:5563 -msgid "Show article summary in new window" -msgstr "Показать детали Ñтатьи в новом окне" +#: index.php:230 +msgid "Rescore feed" +msgstr "Заново оценить канал" -#: functions.php:4833 functions.php:5570 -msgid "Publish article with a note" -msgstr "Опубликовать Ñтатью Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ¾Ð¹" +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "ОтпиÑатьÑÑ" -#: functions.php:4850 functions.php:5441 -msgid "Originally from:" -msgstr "" +#: index.php:232 +msgid "All feeds:" +msgstr "Ð’Ñе каналы:" -#: functions.php:4863 functions.php:5454 -#, fuzzy -msgid "Feed URL" -msgstr "Канал" +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Показать/Ñкрыть прочитанные" -#: functions.php:4903 functions.php:5484 -msgid "unknown type" -msgstr "ÐеизвеÑтный тип" +#: index.php:235 +msgid "Other actions:" +msgstr "Другие дейÑтвиÑ:" -#: functions.php:4943 functions.php:5527 -msgid "Attachment:" -msgstr "Вложение:" +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "Переключить широкоÑкранный режим" -#: functions.php:4945 functions.php:5529 -msgid "Attachments:" -msgstr "ВложениÑ:" +#: index.php:237 +msgid "Create label..." +msgstr "Создать метку..." -#: functions.php:4965 prefs.php:142 tt-rss.php:101 modules/help.php:21 -#: modules/popup-dialog.php:53 modules/popup-dialog.php:154 -#: modules/popup-dialog.php:181 modules/popup-dialog.php:230 -#: modules/popup-dialog.php:575 modules/popup-dialog.php:634 -#: modules/pref-feeds.php:1140 modules/pref-users.php:96 -msgid "Close this window" -msgstr "Закрыть Ñто окно" +#: index.php:238 +msgid "Create filter..." +msgstr "Создать фильтр..." -#: functions.php:5021 -msgid "Feed not found." -msgstr "Канал не найден." +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "ГорÑчие клавиши" -#: functions.php:5090 -msgid "" -"Could not display feed (query failed). Please check label match syntax or " -"local configuration." +#: index.php:248 +msgid "Logout" +msgstr "Выход" + +#: index.php:254 +msgid "Updates are available from Git." msgstr "" -"Ðе могу показать канал (ошибка в запроÑе). ПожалуйÑта проверьте ÑинтакÑÐ¸Ñ " -"или локальную конфигурацию." -#: functions.php:5254 functions.php:5341 -msgid "mark as read" -msgstr "Отметить как прочитанные" +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "ÐаÑтройки" -#: functions.php:5417 functions.php:5424 -msgid "Click to expand article" -msgstr "Щёлкните чтобы развернуть Ñтатью" +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "ГорÑчие Клавиши" -#: functions.php:5587 -msgid "toggle unread" -msgstr "переключить непрочитанные" +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Закрыть наÑтройки" -#: functions.php:5606 -msgid "No unread articles found to display." -msgstr "Ðе найдено не прочитанных Ñтатей" +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Каналы" -#: functions.php:5609 -msgid "No updated articles found to display." -msgstr "Ðе найдено не прочитанных Ñтатей." +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "Фильтры" -#: functions.php:5612 -msgid "No starred articles found to display." -msgstr "Ðе найдено отмеченных Ñтатей" +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Метки" -#: functions.php:5616 -msgid "" -"No articles found to display. You can assign articles to labels manually " -"(see the Actions menu above) or use a filter." -msgstr "" -"Ðет Ñтатей Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°. Ð’Ñ‹ можете приÑвоить метку вручную (Ñмотрите выше меню " -"ДейÑтвиÑ) или иÑпользуйте фильтр." +#: prefs.php:133 +msgid "Users" +msgstr "Пользователи" -#: functions.php:5618 offline.js:443 -msgid "No articles found to display." -msgstr "Статей не найдено." +#: prefs.php:136 +msgid "System" +msgstr "СиÑтема" -#: functions.php:6362 tt-rss.php:192 -msgid "Create label..." -msgstr "Создать метку..." +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "Создать новый аккаунт" -#: functions.php:6375 -msgid "(remove)" -msgstr "(удалить)" +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð¾Ð²Ñ‹Ñ… пользователей запрещена." -#: functions.php:6427 -msgid "no tags" -msgstr "нет тегов" +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "ВернутьÑÑ Ðº Tiny Tiny RSS" -#: functions.php:6456 -msgid "edit note" -msgstr "править заметку" +#: register.php:218 +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 "Временный пароль будет отправлен на указанный e-mail. ЕÑли аккаунт не будет активирован в течении 24 чаÑов, то он будет удалён." -#: localized_schema.php:9 tt-rss.php:222 modules/popup-dialog.php:381 -#: modules/pref-feeds.php:1310 modules/pref-feeds.php:1369 -msgid "Title" -msgstr "Заголовок" +#: register.php:224 +msgid "Desired login:" +msgstr "Желаемый логин:" -#: localized_schema.php:10 -msgid "Title or Content" -msgstr "Заголовок или Ñодержимое" +#: register.php:227 +msgid "Check availability" +msgstr "Проверить доÑтупноÑть" -#: localized_schema.php:11 -msgid "Link" -msgstr "СÑылка" +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "E-mail: " -#: localized_schema.php:12 modules/popup-dialog.php:382 -msgid "Content" -msgstr "Содержимое" +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "Сколько будет, два Ð¿Ð»ÑŽÑ Ð´Ð²Ð°:" -#: localized_schema.php:13 -msgid "Article Date" -msgstr "Дата Статьи" +#: register.php:235 +msgid "Submit registration" +msgstr "ЗарегиÑтрироватьÑÑ" -#: localized_schema.php:15 -msgid "Filter article" -msgstr "Отфильтровать Ñтатью" +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "Ðе полноÑтью заполнена ваша региÑÑ‚Ñ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ." -#: localized_schema.php:17 -msgid "Set starred" -msgstr "Отметить" +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "Извините, такое Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÐ¶Ðµ ÑущеÑтвует." -#: localized_schema.php:18 viewfeed.js:545 viewfeed.js:659 -msgid "Publish article" -msgstr "Опубликовать" +#: register.php:287 +msgid "Registration failed." +msgstr "ÐÐµÑƒÐ´Ð°Ñ‡Ð½Ð°Ñ Ñ€ÐµÐ³Ð¸ÑтрациÑ." -#: localized_schema.php:19 -msgid "Assign tags" -msgstr "Применить теги" +#: register.php:334 +msgid "Account created successfully." +msgstr "Ðккаунт уÑпешно Ñоздан." -#: localized_schema.php:20 -msgid "Assign label" -msgstr "Применить метку" +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð¾Ð²Ñ‹Ñ… пользователей временно закрыта." -#: localized_schema.php:24 -msgid "General" -msgstr "Общие" +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "Скрипт Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… Tiny Tiny RSS" + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "Без категории" -#: localized_schema.php:26 -msgid "Allow duplicate posts" -msgstr "Разрешить дубликаты Ñтатей" +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d Ð°Ñ€Ñ…Ð¸Ð²Ð½Ð°Ñ ÑтатьÑ" +msgstr[1] "%d архивных Ñтатьи" +msgstr[2] "%d архивных Ñтатей" -#: localized_schema.php:27 -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 "" -"Эта Ð¾Ð¿Ñ†Ð¸Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð°, еÑли вы читаете неÑколько агрегаторов типа \"планета\" Ñ " -"переÑекающимиÑÑ ÑтатьÑми. Когда запрещено, ÑÑ‚Ð°Ñ‚ÑŒÑ Ð¿Ð¾ÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ÑÑ Ð»Ð¸ÑˆÑŒ один раз." +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "Каналы не найдены." -#: localized_schema.php:28 -msgid "Default interval between feed updates (in minutes)" -msgstr "Интервал между обновлениÑми каналов по умолчанию (в минутах)" +#: include/functions2.php:52 +msgid "Navigation" +msgstr "ÐавигациÑ" -#: localized_schema.php:29 -msgid "Enable e-mail digest" -msgstr "Включить почтовый дайджеÑÑ‚" +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "Открыть Ñледующий канал" -#: localized_schema.php:30 -msgid "" -"This option enables sending daily digest of new (and unread) headlines on " -"your configured e-mail address" -msgstr "" -"Эта Ð¾Ð¿Ñ†Ð¸Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ°ÐµÑ‚ отправку ежедневного обзора новых (и непрочитанных) " -"заголовков на ваш Ð°Ð´Ñ€ÐµÑ Ñлектронной почты" +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "Открыть предыдущий канал" -#: localized_schema.php:31 -msgid "Purge old posts after this number of days (0 - disables)" -msgstr "Стирать Ñтатьи Ñтарше Ñтого количеÑтва дней (0 - выключает)" +#: include/functions2.php:55 +msgid "Open next article" +msgstr "Открыть Ñледующую Ñтатью" -#: localized_schema.php:32 -msgid "Update post on checksum change" -msgstr "ОбновлÑть Ñтатью при изменении контрольной Ñуммы" +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "Открыть предыдущую Ñтатью" -#: localized_schema.php:33 -msgid "Mark articles in e-mail digest as read" -msgstr "Отметить вÑе Ñтатьи в e-mail дайджеÑте как прочитанные?" +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "Открыть Ñледующую Ñтатью (не прокручивать длинные Ñтатьи)" -#: localized_schema.php:34 -msgid "Enable offline reading" -msgstr "Разрешить чтение оффлайн" +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "Открыть предыдущую Ñтатью (не прокручивать длинные Ñтатьи)" -#: localized_schema.php:35 -msgid "Synchronize new articles for offline reading using Google Gears." -msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð¾Ð²Ñ‹Ñ… Ñтатей Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¾Ñ„Ñ„Ð»Ð°Ð¹Ð½, иÑпользую Google Gears." +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "Перейти к Ñледующей Ñтатье (не разворачивать или помечать прочитанной)" -#: localized_schema.php:37 -msgid "Interface" -msgstr "ИнтерфейÑ" +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "Перейти к предыдущей Ñтатье (не разворачивать или помечать прочитанной)" -#: localized_schema.php:39 -msgid "Combined feed display" -msgstr "Комбинированный режим отображениÑ" +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Показать диалог поиÑка" -#: localized_schema.php:40 -msgid "" -"Display expanded list of feed articles, instead of separate displays for " -"headlines and article content" -msgstr "" -"Показывать развёрнутый ÑпиÑок Ñтатей, вмеÑто Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ñкрана на заголовки " -"и Ñодержимое Ñтатей" +#: include/functions2.php:62 +msgid "Article" +msgstr "СтатьÑ" -#: localized_schema.php:41 -msgid "Default article limit" -msgstr "КоличеÑтво Ñтатей по умолчанию" +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "Отметить / ÑнÑть отметку" -#: localized_schema.php:42 -msgid "" -"Default limit for articles to display, any custom number you like (0 - " -"disables)." -msgstr "" -"По умолчанию ограничивать количеÑтво Ñтатей Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°. Любое чиÑло, какое " -"вам нравитÑÑ (0 - выключить)" +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "Опубликовано / не опубликовано" -#: localized_schema.php:43 -msgid "Enable feed categories" -msgstr "Включить категории каналов" +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "Прочитано / не прочитано" -#: localized_schema.php:44 -msgid "Enable search toolbar" -msgstr "Разрешить панель поиÑка" +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Редактировать теги" -#: localized_schema.php:45 -msgid "Hide feeds with no unread messages" -msgstr "СпрÑтать каналы без непрочитанных Ñтатей" +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "Скрыть выбранные Ñтатьи" -#: localized_schema.php:46 -msgid "Mark articles as read automatically" -msgstr "Отмечать Ñтатьи как прочитанные автоматичеÑки" +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "Скрыть прочитанные" -#: localized_schema.php:47 -msgid "" -"This option enables marking articles as read automatically in combined mode " -"(except for Fresh articles feed) while you scroll article list." -msgstr "" -"Эта Ð¾Ð¿Ñ†Ð¸Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ°ÐµÑ‚ автоматичеÑки отмечать Ñтатьи как прочитанные в " -"комбинированном режиме (иÑключение Ð´Ð»Ñ Ñпециального канала \"Свежие Ñтатьи" -"\" ), пока вы прокручиваете ÑпиÑок Ñтатей." +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "Открыть в новом окне" -#: localized_schema.php:48 -msgid "On catchup show next feed" -msgstr "Показывать Ñледующий канал при отметке как прочитанный" +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "Отметить Ñтатьи ниже как прочитанные" -#: localized_schema.php:49 -msgid "" -"When \"Mark as read\" button is clicked in toolbar, automatically open next " -"feed with unread articles." -msgstr "" -"ПоÑле выбора опции \"Отметить как прочитанное\" в верхней панели, " -"автоматичеÑки открывать Ñледующий канал Ñ Ð½Ðµ прочитанными ÑтатьÑми." +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "Отметить Ñтатьи выше как прочитанные" -#: localized_schema.php:50 -msgid "Open article links in new browser window" -msgstr "Открыть ÑÑылку на Ñтатью в новом окне браузера" +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "ПролиÑтать вниз" -#: localized_schema.php:51 +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "ПролиÑтать вверх" + +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "Выбрать Ñтатью под курÑором мыши" + +#: include/functions2.php:75 +msgid "Email article" +msgstr "Отправить по почте" + +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "Закрыть Ñтатью" + +#: include/functions2.php:77 +msgid "Toggle article expansion (combined mode)" +msgstr "Переключить раÑÑ‚Ñжение Ñтатьи (комбинированный режим)" + +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "Переключить отображение оригинала" + +#: include/functions2.php:80 +msgid "Article selection" +msgstr "Выбрать Ñтатью" + +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "Выбрать вÑе Ñтатьи" + +#: include/functions2.php:82 +msgid "Select unread" +msgstr "Выбрать непрочитанные" + +#: include/functions2.php:83 +msgid "Select starred" +msgstr "Выбрать отмеченные" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "Выбрать опубликованные" + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "Инвертировать выделение" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "СнÑть выделение" + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Канал" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "Обновить активный канал" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "Показать/Ñкрыть прочитанные" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "ПодпиÑатьÑÑ Ð½Ð° канал" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Редактировать канал" + +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "Обратный порÑдок заголовков" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "Отлаживать обновление канала" + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "Отметить вÑе каналы как прочитанные" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "Свернуть/развернуть категорию" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "Переключить комбинированный режим" + +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "Переключить автоматичеÑкое разворачивание в комбинированном режиме" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "Перейти к.." + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "Ð’Ñе Ñтатьи" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "Свежие" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Облако тегов" + +#: include/functions2.php:106 +msgid "Other" +msgstr "Другой" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "Создать метку" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "Создать фильтр" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "Свернуть/развернуть боковую панель" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "Показать диалог помощи" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Результаты поиÑка: %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +msgid "comment" +msgid_plural "comments" +msgstr[0] "комментарий" +msgstr[1] "комментариÑ" +msgstr[2] "комментариев" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +msgid "comments" +msgstr "комментарии" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "нет тегов" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "Редактировать теги Ñтатьи" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "Оригинал:" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "URL канала" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "Закрыть Ñто окно" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(править заметку)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "неизвеÑтный тип" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "ВложениÑ" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "ОÑобые" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Ð’Ñе каналы" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Отмеченные" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Опубликованные" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "Свежие" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "Ðрхив Ñтатей" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "Ðедавно прочитанные" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "Логин:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "Пароль:" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "ВоÑÑтановить пароль" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "Профиль:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "Профиль по умолчанию" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "ИÑпользовать меньше трафика" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "Ðе отображать Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² ÑтатьÑÑ…, уменьшает количеÑтво автоматичеÑких обновлений." + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "Запомнить менÑ" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "Войти" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "Ошибка проверки ÑеÑÑии (некорректный IP)" + +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "Ошибка проверки ÑеÑÑии (изменилаÑÑŒ верÑÐ¸Ñ Ñхемы)" + +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "Ошибка проверки ÑеÑÑии (пользователь не найден)" + +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "Ошибка проверки ÑеÑÑии (пароль изменен)" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "Другие Ñоветы по иÑпользованию доÑтупны в вики проекта Tiny Tiny RSS." + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "ГорÑчие Клавиши" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "Shift" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Раздел помощи не найден." + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "Опубликовать Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Tiny Tiny RSS" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Заголовок:" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "Содержимое:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "Метки:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "ÐžÐ¿ÑƒÐ±Ð»Ð¸ÐºÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÑÑ‚Ð°Ñ‚ÑŒÑ Ð¿Ð¾ÑвитÑÑ Ð² канале \"Опубликованные\"" + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "Опубликовать" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "Отмена" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "Вход не произведен" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Ðекорректное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ пароль" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "Канал %s уже подпиÑан." + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "Добавлена подпиÑка на %s." + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "Ðе могу подпиÑатьÑÑ Ð½Ð° %s." + +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "Ðе найдены каналы в %s." + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "Обнаружено неÑколько URL канала." + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "Ðе могу подпиÑатьÑÑ Ð½Ð° %s. Ðе могу загрузить URL канала." + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "ПодпиÑатьÑÑ Ð½Ð° выбранные каналы" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Редактировать опции подпиÑки" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "ВоÑÑтановление паролÑ" + +#: classes/handler/public.php:805 +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "Введите ваш логин и Ñлектронный адреÑ. Ðовый пароль будет выÑлан на указанный адреÑ." + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "СброÑить пароль" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "Ðекоторые Ð¿Ð¾Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ñ‹ пуÑты или некорректно заполнены" + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "Перейти назад" + +#: classes/handler/public.php:878 +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] Уведомление о Ñмене паролÑ" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "Извините, ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð»Ð¾Ð³Ð¸Ð½Ð° и Ñлектронного адреÑа не обнаружена." + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "Ð’ доÑтупе отказано - недоÑтаточный уровень привилегий." + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "Обновление базы данных" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Применить обновлениÑ" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "Показать в виде RSS-канала" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "Показать в формате RSS" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "ПоÑледнее обновление: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "Ð’Ñе" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Инвертировать" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Ðичего" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "Еще..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Переключить выбранное:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Выбрано:" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "Оценить" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "Ðрхивировать" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "ПеремеÑтить назад" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "Удалить" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "Отправить по почте" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Канал:" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "Канал не найден." + +#: classes/feeds.php:268 +msgid "Never" +msgstr "Ðикогда" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "Импортировано в %s" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +msgid "mark feed as read" +msgstr "Отметить канал как прочитанный" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "Свернуть Ñтатью" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "Ðе найдено не прочитанных Ñтатей" + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "Ðе найдено не прочитанных Ñтатей." + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "Ðе найдено отмеченных Ñтатей" + +#: classes/feeds.php:778 +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 "Ðет Ñтатей Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°. Ð’Ñ‹ можете приÑвоить метку вручную из контекÑтного меню заголовка Ñтатьи (будет приÑвоено вÑем выбранным ÑтатьÑм) или иÑпользуйте фильтр." + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "Статей не найдено." + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "ПоÑледнее обновление в %s" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "Ðекоторые каналы не могут быть обновлены (щёлкните Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð½Ð¾Ñтей)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "Канал не выбран." + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "Канал или URL Ñайта" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "ПомеÑтить в категорию:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "ДоÑтупные каналы" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "ÐвторизациÑ" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "Пользователь:" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "Пароль" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Этот канал требует авторизации." + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "ПодпиÑатьÑÑ" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "Другие каналы" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "ПоиÑк" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "ПопулÑрные каналы" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "Ðрхив канала" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "Ограничение:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "Удалить" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "ИÑкать" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +msgid "Search syntax" +msgstr "ИÑкать метку" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "Ð¡Ñ‚Ð°Ñ‚ÑŒÑ Ð½Ðµ найдена" + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "Теги Ð´Ð»Ñ Ñтой Ñтатьи (разделенные запÑтыми):" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Сохранить" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "Утилита OPML" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "Импортирую OPML..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "ВернутьÑÑ Ðº наÑтройкам" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "ДобавлÑÑŽ канал: %s" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "Канал уже ÑущеÑтвует: %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "ДобавлÑÑŽ метку %s" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "Метка уже ÑущеÑтвует: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "УÑтанавливаю ключ наÑтроек %s в %s" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "ДобавлÑÑŽ фильтр..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "Обрабатываю категорию: %s" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "Ошибка загрузки, код ошибки: %d" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "Ðе могу перемеÑтить загруженный файл." + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "Ошибка: пожалуйÑта загрузите OPML файл." + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "Ошибка: не могу найти перемещенный OPML файл." + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Ошибка при разборе документа." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "Вашего ÑƒÑ€Ð¾Ð²Ð½Ñ Ð´Ð¾Ñтупа недоÑтаточно Ð´Ð»Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñтой вкладки." + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "Журнал ошибок" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "Обновить" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "ОчиÑтить журнал" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Ошибка" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Сообщение" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Дата" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Пользователь не найден" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "ЗарегиÑтрирован" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "ПоÑледний вход" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "КоличеÑтво подпиÑанных каналов" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "ПодпиÑан на каналы" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Уровень доÑтупа:" + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Опции:" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "Добавлен пользователь %s Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼ %s" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "Ðе могу добавить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %s" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "Пользователь %s уже ÑущеÑтвует." + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "Пароль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %s изменен на %s" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "Пароль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %s изменен на %s" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] Уведомление о Ñмене паролÑ" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "Выбрать" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Добавить пользователÑ" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "Подробнее" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Редактировать" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Уровень доÑтупа:" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "ПоÑледний вход" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Щёлкните Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "Пользователи не определены." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "ПодходÑщих пользователей не найдено." + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Проверить доÑтупноÑть полÑ" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "(%d канал)" +msgstr[1] "(%d канала)" +msgstr[2] "(%d каналов)" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "Заголовок" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "Обновить" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Удаление Ñообщений:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "ПодÑказка: Вам потребуетÑÑ Ð·Ð°Ð´Ð°Ñ‚ÑŒ Ваши учетные данные, еÑли канал требует авторизацию, за иÑключением каналов в Twitter." + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "СпрÑтать из ÑпиÑка популÑрных каналов" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "Включить в e-mail дайджеÑÑ‚" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Ð’Ñегда показывать вложенные изображениÑ" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "Ðе показывать изображениÑ" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "КÑшировать Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "Пометить вÑе Ñтатьи как прочитанные?" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "Иконка" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "Заменить" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "ПереподпиÑатьÑÑ Ð½Ð° PUSH обновлениÑ" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "СбраÑывает ÑтатуÑподпиÑки Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ механизма PubSubHubbub" + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Ð’ÑÑ‘ выполнено." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "Каналы Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð¼Ð¸" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "Ðеактивные каналы" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "Редактировать выбранные каналы" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "СброÑить Ñортировку" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "МаÑÑÐ¾Ð²Ð°Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñка" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "Категории" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "Добавить категорию" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "Удалить выбранное" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "ДейÑтвиÑ..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ð¾Ñ‡Ð¸Ñтка" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "ОчиÑтить данные канала." + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Заново оценить Ñтатьи" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ OPML Ð’Ñ‹ можете ÑкÑпортировать и импортировать Ваши каналы, фильтры, метки и наÑтройки Tiny Tiny RSS." + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "Только главный профиль наÑтроек будет ÑкÑпортирован в OPML." + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "Импортировать мой OPML" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "Включить наÑтройки" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "ЭкÑпортировать OPML" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "Ваш OPML может быть опубликован и на него могут подпиÑатьÑÑ Ñ‚Ðµ, кто знает URL, указанный ниже." + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "Опубликованный OPML не Ñодержит наÑтроек Tiny Tiny RSS settings, каналов Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸ÐµÐ¹ или каналов Ñкрытых из ÑпиÑка \"ПопулÑрные\"." + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "ÐŸÑƒÐ±Ð»Ð¸Ñ‡Ð½Ð°Ñ ÑÑылка на OPML" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "Отобразить публичный OPML URL" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Ð˜Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ð¸Ñ Ð² Firefox" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "Этот Ñайт Ñ Tiny Tiny RSS можно иÑпользовать в Firefox как агрегатор RSS. Ð”Ð»Ñ Ñтого щёлкните по ÑÑылке ниже." + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "Щёлкните здеÑÑŒ Ð´Ð»Ñ Ñ€ÐµÐ³Ð¸Ñтрации Ñайта в роли RSS агрегатора" + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "Опубликованные & общие каналы / ÐвтоматичеÑки Ñозданные каналы" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "Опубликованные Ñтатьи ÑкÑпортируетÑÑ Ð² качеÑтве общего RSS канала и могут быть подпиÑаны кем-либо ещё, кто знает URL, указанный ниже." + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "Показать URL" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "ОчиÑтить вÑе Ñозданные URL" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "Эти каналы не были обновлены в течение трех меÑÑцев:" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "Щёлкните Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "ОтпиÑатьÑÑ Ð¾Ñ‚ выбранных каналов?" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "Впишите по одному дейÑтвительному RSS каналу на Ñтрочку (валидноÑть канала не проверÑетÑÑ)" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "Каналы Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñки. По одному на Ñтрочку" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "Каналы требуют авторизацию." + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "Статьи, удовлетворÑющие фильтру:" + +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "Ðе найдено недавних Ñтатей, удовлетворÑющих фильтру." + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(Инвертирован)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "%s на %s в %s %s" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Заголовок" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "ИÑкать" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "Добавить" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "Применить дейÑтвиÑ" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Включен" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "УдовлетворÑет любому правилу" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "Инвертировать фильтр" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "Проверить" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "Комбинировать" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Создать" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "Инвертировать Ñовпадение Ñ Ñ€ÐµÐ³ÑƒÐ»Ñрным выражением" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "по полю:" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "в" + +#: classes/pref/filters.php:947 +msgid "Wiki: Filters" +msgstr "Фильтры на Вики" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "Сохранить правило" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "Добавить правило..." + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Выполнить дейÑтвиÑ" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸:" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "Сохранить дейÑтвие" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "Добавить дейÑтвие" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[Ðет заголовка]" + +#: classes/pref/filters.php:1044 +#, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "%s (%d метка)" +msgstr[1] "%s (%d метки)" +msgstr[2] "%s (%d меток)" + +#: classes/pref/filters.php:1059 +#, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "%s (+%d дейÑтвие)" +msgstr[1] "%s (+%d дейÑтвиÑ)" +msgstr[2] "%s (+%d дейÑтвий)" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "Цвета" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "Передний план:" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "Фон:" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "Добавлена метка %s" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "ОчиÑтить цвета" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Общие" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "ИнтерфейÑ" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "РаÑширенные" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "ДайджеÑÑ‚" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "Разрешить дубликаты Ñтатей" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Черный ÑпиÑок тегов" + +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "Когда иÑпользуетÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкое назначение тегов ÑтатьÑм, Ñти теги не будут иÑпользоватьÑÑ (ÑпиÑок значений, разделённых запÑтыми)." + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "ÐвтоматичеÑки помечать Ñтатьи как прочитанные" + +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "Эта Ð¾Ð¿Ñ†Ð¸Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ°ÐµÑ‚ автоматичеÑки отмечать Ñтатьи как прочитанные, когда вы прокручиваете ÑпиÑок Ñтатей." + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "ÐвтоматичеÑки раÑкрывать Ñтатьи в комбинированном режиме" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "Комбинированный режим отображениÑ" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Показывать развёрнутый ÑпиÑок Ñтатей, вмеÑто Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ñкрана на заголовки и Ñодержимое Ñтатей" + +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "Подтвердить отметку каналка как прочитанный" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "КоличеÑтво Ñтатей на Ñтранице" + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "Интервал Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ°Ð½Ð°Ð»Ð° по умолчанию" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "Кратчайший интервал, за который канал будет проверен на обновлениÑ, вне завиÑимоÑти от метода обновлений" + +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "Отметить вÑе Ñтатьи в e-mail дайджеÑте как прочитанные?" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "Включить дайджеÑÑ‚ по Ñлектронной почте" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Эта Ð¾Ð¿Ñ†Ð¸Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ°ÐµÑ‚ отправку ежедневного обзора новых (и непрочитанных) заголовков на ваш Ð°Ð´Ñ€ÐµÑ Ñлектронной почты" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "ПопытатьÑÑ Ð¿Ð¾Ñылать дайджеÑты в районе Ñтого времени" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "ИÑпользовать временную зону UTC" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "Разрешить доÑтуп через API" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "Разрешить внешним клиентам доÑтуп к данному аккаунту через API" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Включить категории каналов" + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "Сортировать каналы по количеÑтву непрочитанных Ñтатей" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "МакÑимальный возраÑÑ‚ Ñвежих Ñтатей (в чаÑах)" + +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "Скрыть каналы без непрочитанных Ñтатей" + +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "Показывать Ñпециальные каналы, когда ÑкрываютÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ‹Ðµ каналы" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "Длинный формат даты" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "ИÑпользуетÑÑ ÑинтакÑиÑ, аналогичный функции date() в PHP." + +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "Показывать Ñледующий канал при отметке как прочитанный" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "ÐвтоматичеÑки открывать Ñледующий канал Ñ Ð½ÐµÐ¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ‹Ð¼Ð¸ ÑтатьÑми, когда текущий помечаетÑÑ ÐºÐ°Ðº прочитанный " + +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Стирать Ñтатьи Ñтарше Ñтого количеÑтва дней (0 - выключает)" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "ОчиÑтить непрочитанные Ñтатьи" + +#: classes/pref/prefs.php:46 msgid "Reverse headline order (oldest first)" msgstr "Обратный порÑдок заголовков (Ñтарые впереди)" -#: localized_schema.php:52 -msgid "Show content preview in headlines list" -msgstr "Показать предпроÑмотр Ñодержимого в ÑпиÑке заголовков" +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "Короткий формат даты" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "Показать предпроÑмотр Ñодержимого в ÑпиÑке заголовков" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "Сортировать каналы по дате, указанной в канале" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "ИÑпользовать заданную Ð´Ð»Ñ ÐºÐ°Ð½Ð°Ð»Ð° дату Ð´Ð»Ñ Ñортировки заголовков вмеÑто даты импорта" + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "Вход Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ SSL Ñертификата" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Кликните, чтобы зарегиÑтрировать Ваш клиентÑкий SSL Ñертифика в tt-rss" + +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "Ðе показывать Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² ÑтатьÑÑ…" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "Вырезать небезопаÑные теги из Ñтатей" + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Вырезать вÑе, кроме оÑновных HTML тегов при показе Ñтатей." + +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "Изменить пользовательÑкие Ñтили" + +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "ÐаÑтройте таблицу CSS по Вашему вкуÑу" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "ЧаÑовой поÑÑ" + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "Группировать заголовки в виртуальные каналы" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "Специальные каналы, метки и категории группируютÑÑ Ð¿Ð¾ иÑходным каналам" + +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "Язык" + +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "Тема" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "Выберите одну из доÑтупных тем CSS" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñохранена." + +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "Ваши данные были Ñохранены." + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "Ваши наÑтройки Ñброшены по умолчанию." + +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "ПерÑональные данные / ÐутентификациÑ" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "Личные данные" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "Полное имÑ" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "E-mail" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Уровень доÑтупа:" + +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Сохранить" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "ИÑпользуетÑÑ Ð¿Ð°Ñ€Ð¾Ð»ÑŒ по умолчанию, пожалуйÑта, измените его." + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "" + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Старый пароль" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Ðовый пароль" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Подтверждение паролÑ" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "Изменить пароль" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "Одноразовые пароли / Ðутентификатор" + +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð¾Ð´Ð½Ð¾Ñ€Ð°Ð·Ð¾Ð²Ñ‹Ðµ пароли включены. Введите Ñвой текущий пароль, чтобы выключить." + +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "Введите Ваш пароль" + +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "Отключить одноразовый пароль" + +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "Чтоб иÑпользовать Ñто Вам понадобитÑÑ ÑовмеÑтимый Ðутентификатор. Смена Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки отключит иÑпользование одноразовых паролей." + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "ПроÑканируйте Ñледующий код в программу Ðутентификатор:" + +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "Введите Ñозданный одноразовый пароль" + +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "Включить одноразовые пароли" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "Ð”Ð»Ñ Ð¾Ð´Ð½Ð¾Ñ€Ð°Ð·Ð¾Ð²Ñ‹Ñ… паролей требуетÑÑ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ функций GD в PHP" + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "Ðекоторые наÑтройки доÑтупны только в профиле по умолчанию." + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "Изменить пользовательÑкие Ñтили" -#: localized_schema.php:53 -msgid "Sort feeds by unread articles count" -msgstr "Сортировать каналы по количеÑтву непрочитанных Ñтатей" +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "РегиÑтрациÑ" -#: localized_schema.php:54 -msgid "User stylesheet URL" -msgstr "URL пользовательÑкого файла Ñтилей" +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "ОчиÑтить" -#: localized_schema.php:55 -msgid "Link to user stylesheet to override default style, disabled if empty." -msgstr "" -"СÑылка на пользовательÑкий файл Ñтилей замещает файл Ñтилей по умолчанию, " -"запрещает еÑли пуÑто" +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "Текущее Ð²Ñ€ÐµÐ¼Ñ Ð½Ð° Ñервере: %s (UTC)" -#: localized_schema.php:56 -msgid "Maximum age of fresh articles (in hours)" -msgstr "МакÑимальный возраÑÑ‚ Ñвежих Ñтатей (в чаÑах)" +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Сохранить конфигурацию" -#: localized_schema.php:57 -msgid "Hide feedlist" -msgstr "СпрÑтать ÑпиÑок каналов" +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "Сохранить и закрыть наÑтройки" -#: localized_schema.php:58 -msgid "" -"This option hides feedlist and allows it to be toggled on the fly, useful " -"for small screens." +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "Управление профилÑми" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "СброÑить наÑтройки" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "Плагины" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "Вам понадобитÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ Tiny Tiny RSS, чтобы Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² плагинах возымели Ñилу." + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "Скачайте больше плагинов на tt-rss.org форумах или вики." + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "СиÑтемные плагины" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "Плагин" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "ОпиÑание" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "ВерÑиÑ" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "Ðвтор" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "подробнее" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "ОчиÑтить данные" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "ПользовательÑкие плагины" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "Ðктивировать выбранные плагины" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "Ðеверный одноразовый пароль" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "Ðеверный пароль" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "Ð’Ñ‹ можете задавать Ñвои цвета, шрифты и макет Вашей текущей Ñхемы Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑобÑтвенных CSS здеÑÑŒ. Этот файл может иÑпользоватьÑÑ Ð² качеÑтве оÑновы." + +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "Создать профиль" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(активно)" + +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "Удалить выбранные профили?" + +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "Ðктивировать профиль" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "ЕÑли вы импортировали метки или фильтры, вам возможно придетÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ наÑтройки чтобы увидеть новые данные." + +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "СÑылка на ваш опубликованный OPML:" + +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "Создать новую ÑÑылку" + +#: 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 "" -"Эта Ð¾Ð¿Ñ†Ð¸Ñ Ñкрывает ÑпиÑок каналов и позволÑет его переключать на лету, " -"удобно Ð´Ð»Ñ Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¸Ñ… Ñкранов" +"Демон обновлений разрешён в вашей конфигурации, но процеÑÑ Ð´ÐµÐ¼Ð¾Ð½Ð° не запущен. Он необходим Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñех каналов.\n" +"ПожалуйÑта, запуÑтите демон обновлений или Ñообщите админиÑтратору." -#: localized_schema.php:59 -msgid "Group headlines in virtual feeds" -msgstr "Группировать заголовки в виртуальные каналы" +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "ПоÑледнее обновление:" -#: localized_schema.php:60 -msgid "" -"When this option is enabled, headlines in Special feeds and Labels are " -"grouped by feeds" +#: 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 "" -"Когда Ñта Ð¾Ð¿Ñ†Ð¸Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°, заголовки в ОÑобом канале и Метки группируютÑÑ Ð¿Ð¾ " -"каналам" +"Tiny Tiny RSS определил что демон обновлений не работает уже очень давно.\n" +"Это обозначает что ÑущеÑтвует проблема Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð°Ñ ÐºÑ€Ð°Ñ…Ñƒ или завиÑанию демона.\n" +"ПожалуйÑта проверьте процеÑÑ Ð´ÐµÐ¼Ð¾Ð½Ð° или Ñообщите админиÑтратору." -#: localized_schema.php:62 -msgid "Advanced" -msgstr "РаÑширенные" +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "Ð’Ñ‹ можете иÑпользовать данный канал через RSS Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñледующего URL:" -#: localized_schema.php:64 -msgid "Blacklisted tags" -msgstr "Черный ÑпиÑок тегов" +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" -#: localized_schema.php:65 -msgid "" -"When auto-detecting tags in articles these tags will not be applied (comma-" -"separated list)." +#: plugins/af_psql_trgm/init.php:112 +msgid "Show related articles" +msgstr "Показать похожие Ñтатьи" + +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +msgid "Mark similar articles as read" +msgstr "Пометить похожие Ñтатьи как прочитанные?" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +msgid "Global settings" +msgstr "Общие наÑтройки" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" msgstr "" -"Когда автоопределение тегов в ÑтатьÑÑ…, Ñти теги не будут применÑтьÑÑ (ÑпиÑок " -"значений, разделённых запÑтыми)." -#: localized_schema.php:66 -msgid "Confirm marking feed as read" -msgstr "Подтвердить отметку каналка как прочитанный" +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" -#: localized_schema.php:67 -msgid "Enable feed icons" -msgstr "Разрешить иконки каналов" +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "Обновить вÑе каналы" -#: localized_schema.php:68 -msgid "Enable labels" -msgstr "Включить метки" +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" -#: localized_schema.php:69 -msgid "" -"Experimental support for virtual feeds based on user crafted SQL queries. " -"This feature is highly experimental and at this point not user friendly. Use " -"with caution." +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" msgstr "" -"ЭкÑÐ¿ÐµÑ€Ð¸Ð¼ÐµÐ½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° виртуальных каналов оÑнована на пользовательÑких " -"группировках SQL запроÑов. Эта возможноÑть Ñтрого ÑкÑÐ¿ÐµÑ€Ð¸Ð¼ÐµÐ½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¸ не " -"удобна в работе. ИÑпользовать Ñ Ð¾ÑторожноÑтью." -#: localized_schema.php:70 -msgid "Long date format" -msgstr "Длинный формат даты" +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "" -#: localized_schema.php:71 -msgid "Set articles as unread on update" -msgstr "УÑтановить Ñтатьи как не прочитанные при обновлении" +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "" -#: localized_schema.php:72 -msgid "Short date format" -msgstr "Короткий формат даты" +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "Редактировать заметку" -#: localized_schema.php:73 -msgid "Show additional information in feedlist" -msgstr "Показывать раÑширенную информацию в ÑпиÑке каналов" +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "Ðи одного файла не загружено." -#: localized_schema.php:74 -msgid "Strip unsafe tags from articles" -msgstr "Вырезать небезопаÑные теги из Ñтатей" +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "Ð’Ñе Ñделано. %d из of %d Ñтатей импортированы." + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "Ðекорректный формат документа" + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "Импортировать отмеченные или общие Ñлементы из Google Reader" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "Ð’Ñтавьте Ваш starred.json или shared.json в форму ниже." + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "Импортировать мои \"Отмеченные\" Ñлементы" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[ПереÑлано]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "Ð’Ñе Ñтатьи" -#: localized_schema.php:75 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "Вырезать вÑе, кроме оÑновных HTML тегов при показе Ñтатей." +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "Кликните по Ñледующей ÑÑылке, чтоб запуÑтить Ваш почтовый клиент:" -#: localized_schema.php:76 -msgid "Use more accessible date/time format for headlines" -msgstr "ИÑпользовать более удобный формат Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð°Ñ‚Ñ‹/времени" +#: plugins/mailto/init.php:75 +msgid "Forward selected article(s) by email." +msgstr "ПереÑлать выбранные Ñтатьи по Ñлектронной почте" -#: localized_schema.php:77 -msgid "Automatically expand articles in combined mode" -msgstr "ÐвтоматичеÑки раÑкрывать Ñтатьи в комбинированном режиме" +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "Ð’Ñ‹ Ñможете отредактировать Ñообщение перед поÑылкой в почтовом клиенте." -#: localized_schema.php:78 -msgid "Purge unread articles" -msgstr "ОчиÑтить непрочитанные Ñтатьи" +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "Закрыть Ñто окно" -#: localized_schema.php:79 -msgid "Show special feeds when hiding read feeds" -msgstr "Показывать Ñпециальные каналы, когда ÑкрываютÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ‹Ðµ каналы" +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "Импорт и ÑкÑпорт" + +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "Ð’Ñ‹ можете ÑкÑпортировать и импортировать Ваши \"Отмеченные\" и \"Ðрхивированные\" Ñтатьи Ð´Ð»Ñ ÑохранноÑти или переноÑÑ Ð¼ÐµÐ¶Ð´Ñƒ различными tt-rss одной верÑии." + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "ЭкÑпортировать данные" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Импортировать" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "Ðе могу импортировать данные: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ñхемы." + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "Ðе могу импортировать данные: неизвеÑтный формат данных." + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "Завершено:" + +#: plugins/import_export/init.php:388 +#, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "%d ÑÑ‚Ð°Ñ‚ÑŒÑ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð°" +msgstr[1] "%d Ñтатьи обработано" +msgstr[2] "%d Ñтатей обработано" + +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "%d импортирован." +msgstr[1] "%d импортировано." +msgstr[2] "%d импортировано." + +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "%d канал Ñоздан." +msgstr[1] "%d канала Ñоздано." +msgstr[2] "%d каналов Ñоздано." + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "Ðе могу загрузить XML документ." + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "Подготовить данные" + +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "Ðе безопаÑно на работе (кликните, чтоб переключить)" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "Ðе-безопаÑно-на-работе плагин" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "Теги Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ð½Ð¸Ñ Ðе БезопаÑным на Работе (разделенные запÑтой)" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñохранена." + +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "ПожалуйÑта, введите Ваш одноразовый пароль:" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "Пароль был изменен." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "Старый пароль неправилен." + +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "Закрыть Ñтатью" -#: localized_schema.php:80 -msgid "Prefer more accurate feedlist counters to UI speed" +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." msgstr "" -"Предпочитать более точные Ñчётчики ÑпиÑка каналов Ð´Ð»Ñ ÑкороÑти " -"пользовательÑкого интерфейÑа" -#: localized_schema.php:81 -msgid "Enable inline MP3 player" -msgstr "Разрешить вÑтроенный MP3 плеер" +#: plugins/mail/init.php:34 +msgid "Mail plugin" +msgstr "Почтовый плагин" -#: localized_schema.php:82 -msgid "" -"Enable the Flash-based XSPF Player to play MP3-format podcast enclosures." -msgstr "Разрешить XSPF Flash плеер Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÐºÐ°Ñтов в MP3 формате" +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "" -#: localized_schema.php:83 -msgid "Do not show images in articles" -msgstr "Ðе показывать Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² ÑтатьÑÑ…" +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "Кому:" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "Заголовок:" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "Отправить пиÑьмо" + +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "СвÑзанные" + +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" +msgstr "ИнÑталлÑциÑ" + +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "URL инÑталлÑции" + +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "Ключ доÑтупа:" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "Ключ доÑтупа" + +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "ИÑпользуйте один ключ доÑтупа Ð´Ð»Ñ Ð¾Ð±Ð¾Ð¸Ñ… инÑталлÑций" + +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "Создать новый ключ" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "СвÑзать инÑталлÑцию" + +#: 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 "Ð’Ñ‹ можете ÑвÑзывать другие инÑталлÑции Tiny Tiny RSS Ñ Ñтой, чтоб объединÑть \"ПопулÑрные\" каналы. СвÑжите Ñ Ñтой инÑталлÑцией Tiny Tiny RSS, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñтот URL:" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "ПоÑледнее Ñоединение" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "СтатуÑ" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "Хранимые каналы" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "Создать ÑÑылку" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" -#: localized_schema.php:84 -msgid "Enable external API" +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" msgstr "" -#: login_form.php:120 modules/popup-dialog.php:271 modules/pref-feeds.php:339 -#: modules/pref-feeds.php:561 mobile/login_form.php:38 -msgid "Login:" -msgstr "Логин:" +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñохранена." -#: login_form.php:124 modules/popup-dialog.php:273 modules/pref-feeds.php:344 -#: modules/pref-feeds.php:567 mobile/login_form.php:43 -msgid "Password:" -msgstr "Пароль:" +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" -#: login_form.php:129 -msgid "Language:" -msgstr "Язык:" +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "Проверить доÑтупноÑть" -#: login_form.php:139 +#: plugins/af_readability/init.php:68 #, fuzzy -msgid "Profile:" -msgstr "Файл:" +msgid "Inline article content" +msgstr "Прокрутить Ñодержимое Ñтатьи" -#: login_form.php:152 mobile/login_form.php:28 -msgid "Log in" -msgstr "Войти" +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "Общие Ñтатьи" -#: login_form.php:155 register.php:148 -msgid "Create new account" -msgstr "Создать новый аккаунт" +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" -#: login_form.php:169 -msgid "Limit bandwidth usage" -msgstr "Ограничить ÑкороÑть передачи" +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" -#: opml.php:99 opml.php:103 -msgid "OPML Utility" -msgstr "Утилита OPML" +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" -#: opml.php:124 -msgid "Importing OPML (using DOMXML extension)..." -msgstr "Импортирую OPML (Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ DOMXML)..." +#: plugins/af_sort_bayes/init.php:216 +#, fuzzy +msgid "Statistics" +msgstr "СтатуÑ" -#: opml.php:128 -msgid "Importing OPML (using DOMDocument extension)..." -msgstr "Импортирую OPML (Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ DOMDocument)..." +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" -#: opml.php:132 modules/popup-dialog.php:45 -msgid "DOMXML extension is not found. It is required for PHP versions below 5." -msgstr "РаÑширение DOMXML не найдено. Оно необходимо Ð´Ð»Ñ Ð²ÐµÑ€Ñий PHP Ñтарее 5." +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "Отмеченные" -#: opml.php:136 -msgid "Return to preferences" -msgstr "ВернутьÑÑ Ðº наÑтройкам" +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "ОчиÑтить данные" -#: prefs.php:63 prefs.php:123 tt-rss.php:65 -msgid "Loading, please wait..." -msgstr "Идет загрузка..." +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" -#: prefs.php:70 prefs.php:126 tt-rss.php:73 -msgid "" -"Your browser doesn't support Javascript, which is required\n" -"\t\tfor this application to function properly. Please check your\n" -"\t\tbrowser settings." +#: plugins/af_sort_bayes/init.php:376 +#, fuzzy, php-format +msgid "Currently stored as: %s" +msgstr "Текущее Ð²Ñ€ÐµÐ¼Ñ Ð½Ð° Ñервере: %s (UTC)" + +#: plugins/af_sort_bayes/init.php:380 +#, fuzzy +msgid "Classifier result" +msgstr "Результаты поиÑка" + +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "Букмарклеты" + +#: 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 "Перетащите ÑÑылку ниже на панель Вашего броузера, откройте интереÑующий Ð’Ð°Ñ ÐºÐ°Ð½Ð°Ð» и нажмите на ÑÑылку, чтоб подпиÑатьÑÑ Ð½Ð° него." + +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "ПодпиÑатьÑÑ Ð½Ð° %s в Tiny Tiny RSS?" + +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "ПодпиÑатьÑÑ Ð² Tiny Tiny RSS" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "ИÑпользуйте Ñтот букмарклет Ð´Ð»Ñ Ð¾Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ñтраниц Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Tiny Tiny RSS" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "ЗдеÑÑŒ Ð’Ñ‹ можете отключить вÑе Ñтатьи в общем доÑтупе через уникальные URL." + +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "Убрать вÑе Ñтатьи из общего доÑтупа" + +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "Опубликовать Ñтатью по URL" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "Ð’Ñ‹ можете опубликовать данную Ñтатью Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñледующего уникального URL:" + +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "Убрать Ñтатью из общего доÑтупа" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "Ошибка будет зафикÑирована в указанном логе." + +#: js/functions.js:90 +msgid "Report to tt-rss.org" msgstr "" -"Ваш браузер не поддерживает Javascript, который требуетÑÑ\n" -"\t\tÐ´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¾Ð½Ð°Ð»Ð° Ñтой программы. ПожалуйÑта, проверьте\n" -"\t\tнаÑтройки вашего браузера." -#: prefs.php:90 tt-rss.php:112 -msgid "Hello," -msgstr "Привет," +#: js/functions.js:93 +msgid "Close" +msgstr "" -#: prefs.php:92 help/4.php:14 -msgid "Exit preferences" -msgstr "Закрыть наÑтройки" +#: js/functions.js:104 +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "Ð’Ñ‹ дейÑтвительно хотите Ñообщить об иÑключении на tt-rss.org? Ваш отчет будет Ñодержать информацию о Вашем броузере. Ваш IP будет Ñохранен в базе данных." -#: prefs.php:94 tt-rss.php:122 mobile/functions.php:60 -#: mobile/functions.php:234 -msgid "Logout" -msgstr "Выход" +#: js/functions.js:224 +msgid "Click to close" +msgstr "Ðажмите, чтобы закрыть" -#: prefs.php:102 tt-rss.php:196 -msgid "Keyboard shortcuts" -msgstr "ГорÑчие Клавиши" +#: js/functions.js:1051 +msgid "Edit action" +msgstr "Редактировать дейÑтвие" -#: prefs.php:108 tt-rss.php:114 help/3.php:63 help/4.php:8 -msgid "Preferences" -msgstr "ÐаÑтройки" +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "Создать фильтр" -#: prefs.php:110 -msgid "Feeds" -msgstr "Каналы" +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "Перезагрузить подпиÑку? Tiny Tiny RSS попытаетÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑатьÑÑ Ðº хабу обновлений в Ñледующее обновление каналов." -#: prefs.php:112 help/4.php:11 -msgid "Filters" -msgstr "Фильтры" +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "ПодпиÑка перезагружена." + +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "ОтпиÑатьÑÑ Ð¾Ñ‚ %s?" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "Канал удалÑетÑÑ..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "ПожалуйÑта, введите название категории:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "Создать новый Ð°Ð´Ñ€ÐµÑ Ñ€Ð°ÑпроÑÑ‚Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñтого канала?" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Попытка изменить адреÑ.." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "Ðет выбранных каналов." + +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "Удалить выбранные каналы из архива? Каналы Ñ Ñохраненным ÑтатьÑми удалены не будут." + +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "Канала Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð¼Ð¸ обновлениÑ" + +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "Удалить выбранные каналы?" + +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "Выбранные каналы удалÑÑŽÑ‚ÑÑ..." + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "Редактировать категорию" + +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "Удалить категорию" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "(Инвертировать)" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "ПожалуйÑта, введите логин:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "Ðе могу добавить пользователÑ: не указан логин." + +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "Пользователь добавлÑетÑÑ..." + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Редактор пользователей" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "Идёт Ñохранение..." + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "Редактировать фильтр" + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "Удалить фильтр?" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "Удаление фильтра..." + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "Удалить выбранные метки?" + +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "Выбранные метки удалÑÑŽÑ‚ÑÑ..." + +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "Ðет выбранных меток." + +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "Удалить выбранных пользователей? Ðи админиÑтратор по умолчанию, ни Ваш аккаунт не могут быть удалены." + +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "Выбранные пользователи удалÑÑŽÑ‚ÑÑ..." + +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "Ðет выбранных пользователей." + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "Удалить выбранные фильтры?" + +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "Выбранные фильтры удалÑÑŽÑ‚ÑÑ..." + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "Ðет выбранных фильтров." + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "ОтпиÑатьÑÑ Ð¾Ñ‚ выбранных каналов?" + +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "Выбранные каналы удалÑÑŽÑ‚ÑÑ..." + +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "ПожалуйÑта выберите только один канал." + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "Стереть вÑе не отмеченные Ñтатьи в выбранном канале?" + +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "ОчиÑтка выбранных каналов..." + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "Сколько дней хранить Ñтатьи (0 - по умолчанию)?" + +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "ОчиÑтка выбранных каналов..." + +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "ПожалуйÑта выберите только одного пользователÑ." + +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "СброÑить пароль выбранного пользователÑ?" + +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "Пароль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑбраÑываетÑÑ..." + +#: js/prefs.js:565 +msgid "User details" +msgstr "Подробнее..." + +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "ПожалуйÑта выберите только один фильтр." + +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "Комбинировать выбранные фильтры?" + +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "Объединение фильтров..." + +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "Редактировать неÑколько каналов" + +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "Сохранить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ñ… каналов?" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "Импорт OPML" + +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "ПожалуйÑта выберите файл OPML." + +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "Идет импорт, пожалуйÑта, подождите..." + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "СброÑить наÑтройки?" + +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "ПодпиÑываюÑÑŒ на каналы..." + +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "Удалить Ñохраненные данные Ð´Ð»Ñ Ñтого плагина?" + +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "Удалить вÑе ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² логе ошибок?" + +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "Пометить вÑе Ñтатьи как прочитанные?" -#: prefs.php:117 help/4.php:13 -msgid "Users" -msgstr "Пользователи" +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "Помечаю вÑе каналы как прочитанные..." -#: prefs.php:140 tt-rss.php:99 -#, fuzzy -msgid "Fatal Exception" -msgstr "Ð¤Ð°Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ ÐžÑˆÐ¸Ð±ÐºÐ°" +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "ПожалуйÑта, Ñначала включите плагин mail." -#: register.php:152 -msgid "New user registrations are administratively disabled." -msgstr "РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð¾Ð²Ñ‹Ñ… пользователей запрещена." +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "Ð’Ñ‹ не можете редактировать Ñтот канал." -#: register.php:155 register.php:200 register.php:213 register.php:228 -#: register.php:246 register.php:331 register.php:341 register.php:353 -#: update.php:94 update.php:162 modules/pref-feeds.php:954 -msgid "Return to Tiny Tiny RSS" -msgstr "ВернутьÑÑ Ðº Tiny Tiny RSS" +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "ПожалуйÑта, Ñначала включите плагин embed_original." -#: register.php:176 -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." +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." msgstr "" -"Временный пароль будет отправлен на указанный e-mail. ЕÑли аккаунт не будет " -"активирован в течении 24 чаÑов, то он будет удалён." -#: register.php:182 -msgid "Desired login:" -msgstr "Желаемый логин:" +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "Ð’Ñ‹ не можете Ñнова оценить Ñтот канал." -#: register.php:185 -msgid "Check availability" -msgstr "Проверить доÑтупноÑть" +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "ПожалуйÑта выберите какой-нибудь канал." -#: register.php:187 -msgid "Email:" -msgstr "E-mail: " +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "УÑтановить оценку ÑтатьÑм в %s?" -#: register.php:190 -msgid "How much is two plus two:" -msgstr "Сколько будет, два Ð¿Ð»ÑŽÑ Ð´Ð²Ð°:" +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "Переоценка Ñтатей..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "Ðет выбранных Ñтатей." -#: register.php:193 -msgid "Submit registration" -msgstr "ЗарегиÑтрироватьÑÑ" +#: js/viewfeed.js:1018 +#, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "Удалить %d выбранную Ñтатью в %s?" +msgstr[1] "Удалить %d выбранных Ñтатьи(ей) в %s?" +msgstr[2] "Удалить %d выбранных Ñтатьи(ей) в %s?" + +#: js/viewfeed.js:1020 +#, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "Удалить %d выбранную Ñтатью?" +msgstr[1] "Удалить %d выбранных Ñтатьи(ей)?" +msgstr[2] "Удалить %d выбранных Ñтатьи(ей)?" + +#: js/viewfeed.js:1062 +#, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "Ðрхивировать %d выбранную Ñтатью в %s?" +msgstr[1] "Ðрхивировать %d выбранных Ñтатьи(ей) в %s?" +msgstr[2] "Ðрхивировать %d выбранных Ñтатьи(ей) в %s?" + +#: js/viewfeed.js:1065 +#, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "ПеремеÑтить %d архивированную Ñтатью назад?" +msgstr[1] "ПеремеÑтить %d архивированных Ñтатьи(ей) назад?" +msgstr[2] "ПеремеÑтить %d архивированных Ñтатьи(ей) назад?" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "ПожалуйÑта, учтите, что не отмеченные звездочкой Ñтатьи могут быть удалены при Ñледующем обновлении каналов" + +#: js/viewfeed.js:1112 +#, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "Отметить %d выбранную Ñтатью в %s как прочитанную?" +msgstr[1] "Отметить %d выбранных(ые) Ñтатьи(ей) в %s как прочитанные?" +msgstr[2] "Отметить %d выбранных(ые) Ñтатьи(ей) в %s как прочитанные?" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "Редактировать теги" -#: register.php:211 -msgid "Your registration information is incomplete." -msgstr "Ðе полноÑтью заполнена ваша региÑÑ‚Ñ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ." +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "Сохранить теги Ñтатьи..." -#: register.php:226 -msgid "Sorry, this username is already taken." -msgstr "Извините, такое Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÐ¶Ðµ ÑущеÑтвует." +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +msgid "Click to open next unread feed." +msgstr "Щёлкните чтоб открыть Ñледующий непрочитанный канал." -#: register.php:244 -msgid "Registration failed." -msgstr "ÐÐµÑƒÐ´Ð°Ñ‡Ð½Ð°Ñ Ñ€ÐµÐ³Ð¸ÑтрациÑ." +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "Показать оригинальное Ñодержимое Ñтатьи" -#: register.php:328 -msgid "Account created successfully." -msgstr "Ðккаунт уÑпешно Ñоздан." +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Применить метку" -#: register.php:350 -msgid "New user registrations are currently closed." -msgstr "РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð¾Ð²Ñ‹Ñ… пользователей временно закрыта." +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "Удалить метку" -#: tt-rss.php:118 -msgid "Comments?" -msgstr "Комментарии?" +#: js/viewfeed.js:2159 +msgid "Select articles in group" +msgstr "Выбрать Ñтатьи в группе" -#: tt-rss.php:131 -msgid "Offline reading" -msgstr "Оффлайн чтение" +#: js/viewfeed.js:2168 +msgid "Mark group as read" +msgstr "Пометить группу как прочитанную" -#: tt-rss.php:138 -msgid "Cancel synchronization" -msgstr "Отменить Ñинхронизацию" +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "Отметить канал как прочитанный" -#: tt-rss.php:141 -msgid "Synchronize" -msgstr "СинхронизациÑ" +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "ПожалуйÑта, укажите новый рейтинг Ð´Ð»Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ñ… Ñтатей:" -#: tt-rss.php:143 -msgid "Remove stored data" -msgstr "Удалить Ñохранённые данные" +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "ПожалуйÑта, укажите новый рейтинг Ð´Ð»Ñ Ñтой Ñтатьи:" -#: tt-rss.php:145 -msgid "Go offline" -msgstr "Перейти в оффлайн" +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "URL Ñтатьи:" -#: tt-rss.php:151 -msgid "New version of Tiny Tiny RSS is available!" -msgstr "ДоÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Tiny Tiny RSS!" +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "Извините, Ваш броузер не поддерживает sandboxed iframes." -#: tt-rss.php:158 -msgid "Go online" -msgstr "Перейти в онлайн" +#: plugins/af_psql_trgm/init.js:11 +msgid "Related articles" +msgstr "Похожие Ñтатьи" -#: tt-rss.php:169 tt-rss.js:79 -msgid "tag cloud" -msgstr "облако тегов" +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "СохранÑÑŽ заметку..." -#: tt-rss.php:179 -msgid "Search..." -msgstr "ПоиÑк..." +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Импорт из Google Reader" -#: tt-rss.php:180 -msgid "Feed actions:" -msgstr "ДейÑÑ‚Ð²Ð¸Ñ Ð½Ð°Ð´ каналами:" +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "ПожалуйÑта, Ñначала выберите файл." -#: tt-rss.php:181 -msgid "Subscribe to feed..." -msgstr "ПодпиÑатьÑÑ Ð½Ð° канал..." +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "ПереÑлать Ñтатью по Ñлектронной почте" -#: tt-rss.php:182 -msgid "Edit this feed..." -msgstr "Редактировать канал..." +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "ЭкÑпортировать данные" -#: tt-rss.php:183 -msgid "Rescore feed" -msgstr "Заново оценить канал" +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "Завершено, ÑкÑпортировано %d ÑтатьÑ. Ð’Ñ‹ можете Ñкачать данные тут." +msgstr[1] "Завершено, ÑкÑпортировано %d Ñтатьи(ей). Ð’Ñ‹ можете Ñкачать данные тут." +msgstr[2] "Завершено, ÑкÑпортировано %d Ñтатьи(ей). Ð’Ñ‹ можете Ñкачать данные тут." -#: tt-rss.php:184 modules/pref-feeds.php:465 modules/pref-feeds.php:1193 -msgid "Unsubscribe" -msgstr "ОтпиÑатьÑÑ" +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Импортировать данные" -#: tt-rss.php:186 -msgid "All feeds:" -msgstr "Ð’Ñе каналы:" +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "ПожалуйÑта выберите файл." -#: tt-rss.php:188 help/3.php:44 -msgid "(Un)hide read feeds" -msgstr "  ÐŸÐ¾ÐºÐ°Ð·Ð°Ñ‚ÑŒ/Ñкрыть прочитанные" +#: plugins/shorten_expanded/init.js:37 +msgid "Click to expand article" +msgstr "Щёлкните чтобы развернуть Ñтатью" -#: tt-rss.php:190 -msgid "Other actions:" -msgstr "Другие дейÑтвиÑ:" +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" -#: tt-rss.php:193 -msgid "Create filter..." -msgstr "Создать фильтр..." +#: plugins/mail/mail.js:38 +msgid "Your message has been sent." +msgstr "Ваше Ñообщение было отправлено." -#: tt-rss.php:194 -msgid "Reset UI layout" -msgstr "СброÑить панели" +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "СвÑзать инÑталлÑцию" -#: tt-rss.php:195 -msgid "Reset category order" -msgstr "СброÑить порÑдок категорий" +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "Редактировать инÑталлÑцию" -#: tt-rss.php:205 -msgid "Collapse feedlist" -msgstr "Свернуть ÑпиÑок каналов" +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "Удалить выбранные инÑталлÑции?" + +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "Выбранные инÑталлÑции удалÑÑŽÑ‚ÑÑ..." + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "Ðет выбранных инÑталлÑций." + +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "ПожалуйÑта выберите только одну инÑталлÑцию." -#: tt-rss.php:208 +#: plugins/af_sort_bayes/init.js:26 #, fuzzy -msgid "Show articles" -msgstr "Сохранённые Ñтатьи" +msgid "Clear classifier database?" +msgstr "ОчиÑтить данные канала." -#: tt-rss.php:210 -msgid "Adaptive" -msgstr "Ðдаптивно" +#: plugins/af_sort_bayes/init.js:70 +#, fuzzy +msgid "Classifier information" +msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ канале:" -#: tt-rss.php:211 -msgid "All Articles" -msgstr "Ð’Ñе Ñтатьи" +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "РаÑшарить Ñтатью по ÑÑылке" -#: tt-rss.php:214 -msgid "Ignore Scoring" -msgstr "Игнорировать Оценки" +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "Создать новый публичный URL Ð´Ð»Ñ Ñтой Ñтатьи?" -#: tt-rss.php:215 modules/pref-feeds.php:1316 modules/pref-feeds.php:1377 -msgid "Updated" -msgstr "Обновлено" +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "ПытаюÑÑŒ изменить URL..." -#: tt-rss.php:218 -#, fuzzy -msgid "Sort articles" -msgstr "Сохранённые Ñтатьи" +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "Убрать данную Ñтатью из публичного доÑтупа?" -#: tt-rss.php:221 modules/popup-dialog.php:462 modules/pref-filters.php:51 -#: modules/pref-filters.php:469 -msgid "Date" -msgstr "Дата" +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "ПытаюÑÑŒ убрать из публичного доÑтупа..." -#: tt-rss.php:223 -msgid "Score" -msgstr "Оценка" +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "Это Ñделает недейÑтвительными вÑе ранее опубликованные URL Ñтатьи. Продолжить?" -#: tt-rss.php:227 modules/pref-feeds.php:296 modules/pref-feeds.php:524 -msgid "Update" -msgstr "Обновить" +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "ОчиÑтка URL..." -#: tt-rss.php:238 tt-rss.php:252 -msgid "No feed selected." -msgstr "Канал не выбран." +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "Общие URL очищены." -#: tt-rss.php:242 -msgid "Drag me to resize panels" -msgstr "ПотÑни за Ð¼ÐµÐ½Ñ Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° панелей" +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "Отметить вÑе Ñтатьи в %s как прочитанные?" -#: update.php:19 -msgid "Your access level is insufficient to run this script." -msgstr "Ð’ доÑтупе отказано - недоÑтаточный уровень привилегий." +#: js/feedlist.js:435 +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "Отметить вÑе Ñтатьи в %s Ñтарше 1 Ð´Ð½Ñ ÐºÐ°Ðº прочитанные?" -#: update.php:44 -msgid "Database Updater" -msgstr "Обновление базы данных" +#: js/feedlist.js:438 +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "Отметить вÑе Ñтатьи в %s Ñтарше 1 недели как прочитанные?" -#: update.php:85 -msgid "Could not update database" -msgstr "Ðе могу обновить базу данных" +#: js/feedlist.js:441 +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "Отметить вÑе Ñтатьи в %s Ñтарше 2 недель как прочитанные?" -#: update.php:88 -msgid "Could not find necessary schema file, need version:" -msgstr "Ðе могу найти необходимый файл Ñхемы, требуетÑÑ Ð²ÐµÑ€ÑиÑ:" +#: js/functions.js:615 +msgid "Error explained" +msgstr "Ошибка разъÑÑнена" -#: update.php:89 -msgid ", found: " -msgstr ", найдена: " +#: js/functions.js:697 +msgid "Upload complete." +msgstr "Загрузка завершена" -#: update.php:92 -msgid "Tiny Tiny RSS database is up to date." -msgstr "Tiny Tiny RSS база данных обновлена." +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "Удалить Ñохраненную иконку канала?" -#: update.php:102 -msgid "Please backup your database before proceeding." -msgstr "ПожалуйÑта, Ñохраните вашу базу данных перед продолжением." +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "УдалÑетÑÑ Ð¸ÐºÐ¾Ð½ÐºÐ° канала..." -#: update.php:104 -#, php-format -msgid "" -"Your Tiny Tiny RSS database needs update to the latest version (%d to " -"%d)." -msgstr "" -"Вашей базе данных Tiny Tiny RSS необходимо обновитьÑÑ Ð´Ð¾ поÑледней верÑии " -"(%d до %d)." +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "Иконка канала удалена." -#: update.php:118 -msgid "Perform updates" -msgstr "Применить обновлениÑ" +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "ПожалуйÑта, выберите файл Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÐ¼ Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸." -#: update.php:123 -msgid "Performing updates..." -msgstr "Идет обновление..." +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "Загрузить новую иконку Ð´Ð»Ñ ÐºÐ°Ð½Ð°Ð»Ð°?" -#: update.php:129 -#, php-format -msgid "Updating to version %d..." -msgstr "ОбновлÑетÑÑ Ð´Ð¾ верÑии %d..." +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "Идет загрузка, пожалуйÑта подождите..." -#: update.php:142 -msgid "Checking version... " -msgstr "ПроверÑетÑÑ Ð²ÐµÑ€ÑиÑ... " +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "ПожалуйÑта, введите заголовок метки:" -#: update.php:148 -msgid "OK!" -msgstr "OK!" +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "Ðе могу Ñоздать метку: отÑутÑтвует заголовок." -#: update.php:150 -msgid "ERROR!" -msgstr "Ошибка!" +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "ПодпиÑатьÑÑ Ð½Ð° канал" -#: update.php:158 -#, php-format -msgid "" -"Finished. Performed %d update(s) up to schema\n" -"\t\t\tversion %d." +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." msgstr "" -"Обновление завершено. Выполнено %d обновление(ий) Ñхемы базы данных " -"до верÑии %d." -#: modules/help.php:6 -msgid "Help" -msgstr "Помощь" +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "ПодпиÑаны на %s" -#: modules/help.php:17 -msgid "Help topic not found." -msgstr "Раздел помощи не найден." +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "Указанный URL выглÑдит неправильно." -#: modules/opml_domdoc.php:52 modules/opml_domxml.php:54 -#, fuzzy, php-format -msgid "
  • Adding category %s.
  • " -msgstr "ДобавлÑетÑÑ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ %s." +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "Указанный URL не Ñодержит каналов." -#: modules/opml_domdoc.php:101 modules/opml_domxml.php:103 -#, fuzzy -msgid "is already imported." -msgstr "Уже импортирован." +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "Развернуть к выбранному каналу" -#: modules/opml_domdoc.php:121 modules/opml_domxml.php:122 -#, fuzzy -msgid "OK" -msgstr "OK!" +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "Ðе могу загрузить указанный URL: %s" -#: modules/opml_domdoc.php:130 modules/opml_domxml.php:134 -msgid "Error while parsing document." -msgstr "Ошибка при разборе документа." +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "Проверка XML прошла неудачно: %s" -#: modules/opml_domdoc.php:134 modules/opml_domxml.php:138 -msgid "Error: please upload OPML file." -msgstr "Ошибка: пожалуйÑта загрузите OPML файл." +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "Ð’Ñ‹ уже подпиÑаны на Ñтот канал." -#: modules/opml_domxml.php:131 -msgid "Error: can't find body element." -msgstr "Ошибка: не могу найти тело Ñлемента" +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "Редактировать правило" -#: modules/popup-dialog.php:7 -#, fuzzy -msgid "OPML Import" -msgstr "Импортировать" +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "Редактировать канал" -#: modules/popup-dialog.php:34 -#, fuzzy -msgid "Importing using DOMXML." -msgstr "Импортирую OPML (Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ DOMXML)..." +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "Больше каналов" -#: modules/popup-dialog.php:40 -#, fuzzy -msgid "Importing using DOMDocument." -msgstr "Импортирую OPML (Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ DOMDocument)..." +#: js/functions.js:1878 +msgid "Help" +msgstr "Помощь" -#: modules/popup-dialog.php:68 -msgid "Settings Profiles" -msgstr "" +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "Удалите категорию %s? Ð’Ñе вложенные каналы будут помещены в \"Без категории\"." -#: modules/popup-dialog.php:75 -#, fuzzy -msgid "Create profile" -msgstr "Создать фильтр" +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "УдалÑÑŽ категорию..." -#: modules/popup-dialog.php:100 modules/popup-dialog.php:128 -#, fuzzy -msgid "(active)" -msgstr "Ðдаптивно" +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "Удалить выбранные категории?" -#: modules/popup-dialog.php:148 modules/popup-dialog.php:350 -#: modules/pref-feeds.php:455 modules/pref-feeds.php:1136 -#: modules/pref-filters.php:153 modules/pref-filters.php:321 -#: modules/pref-labels.php:140 modules/pref-users.php:378 -msgid "Remove" -msgstr "Удалить" +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "Выбранные категории удалÑÑŽÑ‚ÑÑ..." -#: modules/popup-dialog.php:150 -#, fuzzy -msgid "Activate" -msgstr "Ðдаптивно" +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "Ðет выбранных категорий." -#: modules/popup-dialog.php:163 -msgid "Published Articles" -msgstr "Опубликованные Ñтатьи" +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "Ðазвание категории:" -#: modules/popup-dialog.php:168 -#, fuzzy -msgid "Your Published articles feed URL is:" -msgstr "СÑылка на общий канал Ñо ÑтатьÑми." +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "Создаю категорию..." -#: modules/popup-dialog.php:177 -#, fuzzy -msgid "Generate new URL" -msgstr "Генерировать канал" +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "Давно не обновлÑвшиеÑÑ ÐºÐ°Ð½Ð°Ð»Ñ‹" -#: modules/popup-dialog.php:190 -msgid "Notice" -msgstr "Сообщение" +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "Изменить текущий Ð°Ð´Ñ€ÐµÑ Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ OPML на новый?" -#: modules/popup-dialog.php:196 -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 "" -"Демон обновлений разрешён в вашей конфигурации, но процеÑÑ Ð´ÐµÐ¼Ð¾Ð½Ð° не " -"запущен. Он необходим Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñех каналов.\n" -"ПожалуйÑта, запуÑтите демон обновлений или Ñообщите админиÑтратору." +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "ОчиÑтка канала..." -#: modules/popup-dialog.php:200 modules/popup-dialog.php:220 -msgid "Last update:" -msgstr "ПоÑледнее обновление:" +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "Заново оценить Ñтатьи в выбранных каналах?" -#: modules/popup-dialog.php:208 -msgid "" -"You are running the latest version of Tiny Tiny RSS. The fact that you are " -"seeing this dialog is probably a bug." -msgstr "" -"Ð’Ñ‹ запуÑтили поÑледнюю верÑию Tiny Tiny RSS. ЕÑли вы видите Ñтот диалог, " -"Ñкорее вÑего обозначает ошибку." +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "Переоценка выбранных каналов..." -#: modules/popup-dialog.php:216 -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 "" -"Tiny Tiny RSS определил что демон обновлений не работает уже очень давно.\n" -"Это обозначает что ÑущеÑтвует проблема Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð°Ñ ÐºÑ€Ð°Ñ…Ñƒ или завиÑанию демона.\n" -"ПожалуйÑта проверьте процеÑÑ Ð´ÐµÐ¼Ð¾Ð½Ð° или Ñообщите админиÑтратору." +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "Оценить заново вÑе Ñтатьи? Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ продолжатьÑÑ Ð´Ð»Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ времÑ." -#: modules/popup-dialog.php:239 -msgid "Subscribe to Feed" -msgstr "ПодпиÑатьÑÑ Ð½Ð° канал" +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "Переоценка каналов..." -#: modules/popup-dialog.php:248 modules/pref-feeds.php:197 -#: modules/pref-feeds.php:488 modules/pref-filters.php:407 -msgid "Feed" -msgstr "Канал" +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "СброÑить текущие метки на цвета по умолчанию?" -#: modules/popup-dialog.php:251 modules/pref-feeds.php:213 -#: modules/pref-feeds.php:502 -msgid "URL:" -msgstr "URL:" +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "Профили наÑтроек" -#: modules/popup-dialog.php:260 modules/pref-feeds.php:225 -#: modules/pref-feeds.php:514 -msgid "Place in category:" -msgstr "ПомеÑтить в категорию..." +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "Удалить выбранные профили? Ðктивный и профиль по умолчанию удалены не будут." -#: modules/popup-dialog.php:268 modules/pref-feeds.php:332 -#: modules/pref-feeds.php:558 modules/pref-prefs.php:235 -#: modules/pref-users.php:142 -msgid "Authentication" -msgstr "ÐвторизациÑ" +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "Выбранные профили удалÑÑŽÑ‚ÑÑ..." -#: modules/popup-dialog.php:283 -msgid "This feed requires authentication." -msgstr "Этот канал требует авторизации." +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "Профиль не выбран" -#: modules/popup-dialog.php:289 modules/popup-dialog.php:349 -msgid "Subscribe" -msgstr "ПодпиÑатьÑÑ" +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "Ðктивировать выбранный профиль?" -#: modules/popup-dialog.php:290 -#, fuzzy -msgid "More feeds" -msgstr "Больше каналов" +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "ПожалуйÑта выберите какой-нибудь профиль." -#: modules/popup-dialog.php:291 modules/popup-dialog.php:351 -#: modules/popup-dialog.php:425 modules/popup-dialog.php:543 -#: modules/popup-dialog.php:612 modules/pref-feeds.php:468 -#: modules/pref-feeds.php:623 modules/pref-filters.php:160 -#: modules/pref-users.php:181 -msgid "Cancel" -msgstr "Отмена" +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "Создаю профиль..." -#: modules/popup-dialog.php:298 -msgid "Feed Browser" -msgstr "Обзор Каналов" +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "Это Ñделает недейÑтвительными вÑе ранее Ñозданные URL канала. Продолжить?" -#: modules/popup-dialog.php:317 modules/popup-dialog.php:359 -#: modules/popup-dialog.php:424 modules/pref-feeds.php:1177 -#: modules/pref-filters.php:308 modules/pref-labels.php:131 -#: modules/pref-users.php:361 -msgid "Search" -msgstr "ПоиÑк" +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "Созданные URL очищены." -#: modules/popup-dialog.php:321 -#, fuzzy -msgid "Popular feeds" -msgstr "показать каналы" +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Редактор Меток" -#: modules/popup-dialog.php:322 -#, fuzzy -msgid "Feed archive" -msgstr "ДейÑÑ‚Ð²Ð¸Ñ Ð½Ð°Ð´ каналом:" +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¿Ð¸ÑатьÑÑ Ð¾Ñ‚ категории." -#: modules/popup-dialog.php:325 +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "Отменить поиÑк" + +#: js/viewfeed.js:174 #, fuzzy -msgid "limit:" -msgstr "Сколько:" +msgid "New articles found, reload feed to continue." +msgstr "Статей не найдено." -#: modules/popup-dialog.php:371 -msgid "Look for" -msgstr "" +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Ðе отмеченные" -#: modules/popup-dialog.php:378 -#, fuzzy -msgid "match on" -msgstr "ÑоответÑтвие:" +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "Отмеченные" -#: modules/popup-dialog.php:383 -msgid "Title or content" -msgstr "Заголовок или Ñодержимое" +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "Ðе публиковать" -#: modules/popup-dialog.php:388 -msgid "Limit search to:" -msgstr "Ограничить поиÑк:" +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Опубликовать" -#: modules/popup-dialog.php:404 -msgid "This feed" -msgstr "Этот канал" +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "%d ÑÑ‚Ð°Ñ‚ÑŒÑ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð°" +msgstr[1] "%d Ñтатьи(ей) выбрано" +msgstr[2] "%d Ñтатьи(ей) выбрано" -#: modules/popup-dialog.php:438 -msgid "Create Filter" -msgstr "Создать фильтр" +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "Ð¡Ñ‚Ð°Ñ‚ÑŒÑ Ð½Ðµ выбрана" -#: modules/popup-dialog.php:457 modules/pref-filters.php:42 -#: modules/pref-filters.php:406 -msgid "Match" -msgstr "ИÑкать" +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "Статей Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ¸ не найдено." -#: modules/popup-dialog.php:465 modules/pref-filters.php:54 -#: modules/pref-filters.php:441 -msgid "before" -msgstr "перед" +#: js/viewfeed.js:1452 +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "Отметить %d Ñтатью как прочитанную?" +msgstr[1] "Отметить %d Ñтатьи(ей) как прочитанные?" +msgstr[2] "Отметить %d Ñтатьи(ей) как прочитанные?" -#: modules/popup-dialog.php:466 modules/pref-filters.php:55 -#: modules/pref-filters.php:442 -msgid "after" -msgstr "поÑле" +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "Отобразить URL Ñтатьи" -#: modules/popup-dialog.php:478 modules/pref-filters.php:68 -msgid "Check it" -msgstr "Проверить" +#~ msgid "Select by tags..." +#~ msgstr "Выбрать по тегам..." -#: modules/popup-dialog.php:481 modules/pref-filters.php:71 -msgid "on field" -msgstr "по полю:" +#~ msgid "Limit search to:" +#~ msgstr "Ограничить поиÑк:" -#: modules/popup-dialog.php:487 modules/pref-filters.php:77 -msgid "in" -msgstr "в" +#~ msgid "This feed" +#~ msgstr "Этот канал" -#: modules/popup-dialog.php:492 modules/pref-filters.php:82 -msgid "Perform Action" -msgstr "Выполнить дейÑтвиÑ" +#~ msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation." +#~ msgstr "Сложные Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ не принеÑти желаемый результат во Ð²Ñ€ÐµÐ¼Ñ Ñ‚ÐµÑÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð·-за реализации регулÑрных выражений в Ñервере базы данных." -#: modules/popup-dialog.php:509 modules/pref-filters.php:102 -msgid "with parameters:" -msgstr "Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸:" +#~ msgid "Old password cannot be blank." +#~ msgstr "Старый пароль не может быть пуÑтым." -#: modules/popup-dialog.php:522 modules/pref-feeds.php:355 -#: modules/pref-feeds.php:576 modules/pref-filters.php:121 -#: modules/pref-users.php:164 -msgid "Options" -msgstr "Опции:" +#~ msgid "New password cannot be blank." +#~ msgstr "Ðовый пароль не может быть пуÑтым." -#: modules/popup-dialog.php:528 modules/pref-filters.php:133 -msgid "Enabled" -msgstr "Включен" +#~ msgid "Entered passwords do not match." +#~ msgstr "Пароли не Ñовпадают." -#: modules/popup-dialog.php:531 modules/pref-filters.php:142 -msgid "Inverse match" -msgstr "Инвертировать фильтр" +#~ msgid "Function not supported by authentication module." +#~ msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ðµ поддерживаетÑÑ Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¼ аутентификации" -#: modules/popup-dialog.php:541 -msgid "Create" -msgstr "Создать" +#~ msgid "Match:" +#~ msgstr "ПоиÑк:" -#: modules/popup-dialog.php:555 -msgid "Update Errors" -msgstr "Ошибки обновлениÑ" +#~ msgid "Any" +#~ msgstr "Любой" -#: modules/popup-dialog.php:558 -msgid "These feeds have not been updated because of errors:" -msgstr "Эти каналы не были обновлены из-за ошибок:" +#~ msgid "All tags." +#~ msgstr "Ð’Ñе теги." -#: modules/popup-dialog.php:584 -msgid "Edit Tags" -msgstr "Редактировать теги" +#~ msgid "Which Tags?" +#~ msgstr "Какие теги?" -#: modules/popup-dialog.php:589 -msgid "Tags for this article (separated by commas):" -msgstr "Теги Ð´Ð»Ñ Ñтой Ñтатьи (разделенные запÑтыми):" +#~ msgid "Display entries" +#~ msgstr "Показать Ñлементы" -#: modules/popup-dialog.php:611 modules/pref-feeds.php:467 -#: modules/pref-feeds.php:621 modules/pref-filters.php:157 -#: modules/pref-users.php:179 -msgid "Save" -msgstr "Сохранить" +#~ msgid "Select item(s) by tags" +#~ msgstr "Выбрать Ñлемент(Ñ‹) по тегам" -#: modules/popup-dialog.php:620 -#, fuzzy -msgid "Tag Cloud" -msgstr "Облако тегов" +#~ msgid "Unread First" +#~ msgstr "Сначала непрочитанные" + +#~ msgid "Unknown option: %s" +#~ msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ: %s" -#: modules/popup-dialog.php:623 -msgid "Showing most popular tags " -msgstr "Самые популÑрные теги " +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "ДоÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Tiny Tiny RSS!" -#: modules/popup-dialog.php:624 #, fuzzy -msgid "more tags" -msgstr "нет тегов" +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "Ошибка проверки ÑеÑÑии (изменилÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ броузера)" -#: modules/pref-feeds.php:4 -msgid "Check to enable field" -msgstr "Проверить доÑтупноÑть полÑ" +#, fuzzy +#~ msgid "Assign articles to labels automatically" +#~ msgstr "ÐвтоматичеÑки назначать ÑтатьÑм метки" -#: modules/pref-feeds.php:187 -msgid "Feed Editor" -msgstr "Редактор канала" +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "ДоÑтупна Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Tiny Tiny RSS (%s)." -#: modules/pref-feeds.php:242 -msgid "Link to feed:" -msgstr "СвÑзать Ñ:" +#, fuzzy +#~ msgid "You can update using built-in updater in the Preferences or by using update.php" +#~ msgstr "Ð’Ñ‹ можете обновить программу, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð²Ñтроенное ÑредÑтво Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð² ÐаÑтройках или иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ update.php" -#: modules/pref-feeds.php:259 -msgid "Not linked" -msgstr "Ðет ÑвÑзей" +#, fuzzy +#~ msgid "See the release notes" +#~ msgstr "Смотрите Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Ðº выпуÑку" -#: modules/pref-feeds.php:310 modules/pref-feeds.php:537 -msgid "using" -msgstr "иÑпользование" +#~ msgid "Download" +#~ msgstr "Скачать" -#: modules/pref-feeds.php:322 modules/pref-feeds.php:549 -msgid "Article purging:" -msgstr "Удаление Ñообщений:" +#, fuzzy +#~ msgid "Error receiving version information or no new version available." +#~ msgstr "Ошибка Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ о верÑии или Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð½ÐµÐ´Ð¾Ñтупна." -#: modules/pref-feeds.php:369 modules/pref-feeds.php:582 #, fuzzy -msgid "Hide from Popular feeds" -msgstr "СпрÑтать из моего ÑпиÑка каналов" +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Обновить Tiny Tiny RSS" -#: modules/pref-feeds.php:380 modules/pref-feeds.php:587 -msgid "Right-to-left content" -msgstr "Язык канала пишетÑÑ Ñправа налево" +#, fuzzy +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "База данных Tiny Tiny RSS обновлена." -#: modules/pref-feeds.php:392 modules/pref-feeds.php:593 -msgid "Include in e-mail digest" -msgstr "Включить в e-mail дайджеÑÑ‚" +#, fuzzy +#~ msgid "Force update" +#~ msgstr "Применить обновлениÑ" -#: modules/pref-feeds.php:405 modules/pref-feeds.php:599 -msgid "Always display image attachments" -msgstr "" +#, fuzzy +#~ msgid "Do not close this dialog until updating is finished." +#~ msgstr "Ðе закрывайте Ñто окно пока обновление не завершитÑÑ." -#: modules/pref-feeds.php:427 modules/pref-feeds.php:607 -msgid "Cache images locally" -msgstr "КÑшировать Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾" +#, fuzzy +#~ msgid "It is suggested to backup your tt-rss directory first." +#~ msgstr "РекомендуетÑÑ Ñначала Ñделать резервную копию директории Ñ tt-rss." -#: modules/pref-feeds.php:439 #, fuzzy -msgid "Icon" -msgstr "ДейÑтвие" +#~ msgid "Your database will not be modified." +#~ msgstr "Ваша база данных не будет изменена." -#: modules/pref-feeds.php:453 -msgid "Replace" -msgstr "" +#, fuzzy +#~ 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 "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ñ tt-rss не будет изменена. Она будет переименована и оÑтанетÑÑ Ð² родительÑкой директории. Ð’Ñ‹ Ñможете перенеÑти вÑе измененные Вами файлы, когда обновление завершитÑÑ." -#: modules/pref-feeds.php:478 -msgid "Multiple Feed Editor" -msgstr "Редактор канала" +#, fuzzy +#~ msgid "Ready to update." +#~ msgstr "Готовы к обновлению." -#: modules/pref-feeds.php:842 modules/pref-feeds.php:889 -msgid "All done." -msgstr "Ð’ÑÑ‘ выполнено." +#, fuzzy +#~ msgid "Start update" +#~ msgstr "Обновить" -#: modules/pref-feeds.php:920 -#, php-format -msgid "Subscribed to %s." -msgstr "Добавлена подпиÑка на %s." +#~ msgid "Backup your tt-rss directory before continuing. Please type 'yes' to continue." +#~ msgstr "Сделайте резервную копию директории Ñ tt-rss прежде, чем продолжить. Введите 'yes' Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ." -#: modules/pref-feeds.php:923 -#, fuzzy, php-format -msgid "Could not subscribe to %s." -msgstr "Канал %s уже подпиÑан." +#, fuzzy +#~ msgid "New version available!" +#~ msgstr "ДоÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑ€ÑиÑ!" -#: modules/pref-feeds.php:926 -#, php-format -msgid "Already subscribed to %s." -msgstr "Канал %s уже подпиÑан." +#, fuzzy +#~ msgid "LibXML error %s at line %d (column %d): %s" +#~ msgstr "Ошибка LibXML %s в Ñтроке %d (Ñтолбец %d): %s" -#: modules/pref-feeds.php:949 -msgid "Edit subscription options" -msgstr "Редактировать опции подпиÑки" +#~ msgid "From:" +#~ msgstr "От:" -#: modules/pref-feeds.php:1033 -msgid "Category editor" -msgstr "Редактор категорий" +#~ msgid "Select:" +#~ msgstr "Выбрать:" -#: modules/pref-feeds.php:1056 -#, php-format -msgid "Category $%s already exists in the database." -msgstr "ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ $%s уже ÑущеÑтвует." +#~ msgid "mark as read" +#~ msgstr "Отметить как прочитанные" -#: modules/pref-feeds.php:1077 -msgid "Create category" -msgstr "Создать категорию" +#~ msgid "Change password to" +#~ msgstr "Изменить пароль на" -#: modules/pref-feeds.php:1130 -msgid "No feed categories defined." -msgstr "Категории отÑутÑтвуют." +#~ msgid "E-mail: " +#~ msgstr "E-mail: " -#: modules/pref-feeds.php:1160 -msgid "Some feeds have update errors (click for details)" -msgstr "Ðекоторые каналы не могут быть обновлены (щёлкните Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð½Ð¾Ñтей)" +#~ msgid "Login field cannot be blank." +#~ msgstr "Поле логина не может быть пуÑтым." -#: modules/pref-feeds.php:1181 help/3.php:45 help/4.php:22 -msgid "Subscribe to feed" -msgstr "ПодпиÑатьÑÑ Ð½Ð° канал" +#~ msgid "Saving user..." +#~ msgstr "Идет Ñохранение пользователÑ..." -#: modules/pref-feeds.php:1184 #, fuzzy -msgid "Edit feeds" -msgstr "Редактировать канал" +#~ msgid "Toggle marked" +#~ msgstr "Изм. отмеченное" -#: modules/pref-feeds.php:1189 -msgid "Edit categories" -msgstr "Редактировать категории" +#, fuzzy +#~ msgid "(Un)hide empty categories" +#~ msgstr "Редактировать категории" -#: modules/pref-feeds.php:1198 #, fuzzy -msgid "More actions..." -msgstr "ДейÑтвиÑ..." +#~ msgid "Published articles and generated feeds" +#~ msgstr "Заново оценить Ñтатьи в выбранных каналах?" -#: modules/pref-feeds.php:1202 -msgid "Manual purge" -msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ð¾Ñ‡Ð¸Ñтка" +#, fuzzy +#~ msgid "Articles shared by URL" +#~ msgstr "РаÑшарить Ñтатью по ÑÑылке" -#: modules/pref-feeds.php:1206 -msgid "Clear feed data" -msgstr "ОчиÑтить данные канала." +#~ msgid "These feeds have not been updated because of errors:" +#~ msgstr "Эти каналы не были обновлены из-за ошибок:" -#: modules/pref-feeds.php:1207 modules/pref-filters.php:324 -msgid "Rescore articles" -msgstr "Заново оценить Ñтатьи" +#, fuzzy +#~ msgid "Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings." +#~ msgstr "" +#~ "Ваш браузер не поддерживает Javascript, который требуетÑÑ\n" +#~ "\t\tÐ´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¾Ð½Ð°Ð»Ð° Ñтой программы. ПожалуйÑта, проверьте\n" +#~ "\t\tнаÑтройки вашего браузера." -#: modules/pref-feeds.php:1296 -msgid "Show last article times" -msgstr "Показать дату поÑледней Ñтатьи" +#~ msgid "Hello," +#~ msgstr "Привет," -#: modules/pref-feeds.php:1313 modules/pref-feeds.php:1373 -msgid "Last Article" -msgstr "ПоÑледнÑÑ ÑтатьÑ" +#, fuzzy +#~ msgid "Enable categories" +#~ msgstr "Включить категории каналов" -#: modules/pref-feeds.php:1398 modules/pref-filters.php:487 -#: modules/pref-users.php:467 -msgid "Click to edit" -msgstr "Щёлкните Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ" +#, fuzzy +#~ msgid "Browse categories like folders" +#~ msgstr "СброÑить порÑдок категорий" -#: modules/pref-feeds.php:1412 -#, php-format -msgid "(linked to %s)" -msgstr "(ÑÑылка на %s)" +#, fuzzy +#~ msgid "Show images in posts" +#~ msgstr "Ðе показывать Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² ÑтатьÑÑ…" -#: modules/pref-feeds.php:1439 #, fuzzy -msgid "You don't have any subscribed feeds." -msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¿Ð¸ÑатьÑÑ Ð¾Ñ‚ категории." +#~ msgid "Hide read articles and feeds" +#~ msgstr "  ÐŸÐ¾ÐºÐ°Ð·Ð°Ñ‚ÑŒ/Ñкрыть прочитанные" -#: modules/pref-feeds.php:1441 #, fuzzy -msgid "No matching feeds found." -msgstr "Ðе найдено Ñовпадений Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð¾Ð¼." +#~ msgid "Sort feeds by unread count" +#~ msgstr "Сортировать каналы по количеÑтву непрочитанных Ñтатей" -#: modules/pref-feeds.php:1447 -msgid "OPML" -msgstr "OPML" +#~ msgid "Article archive" +#~ msgstr "Ðрхив Ñтатей" -#: modules/pref-feeds.php:1470 -msgid "Import" -msgstr "Импортировать" +#, fuzzy +#~ msgid "Example Pane" +#~ msgstr "Примеры" -#: modules/pref-feeds.php:1475 -msgid "Export OPML" -msgstr "ЭкÑпортировать OPML" +#, fuzzy +#~ msgid "Set value" +#~ msgstr "Отметить" -#: modules/pref-feeds.php:1478 -msgid "Firefox Integration" -msgstr "Ð˜Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ð¸Ñ Ð² Firefox" +#, fuzzy +#~ msgid "Mark %d displayed article as read?" +#~ msgid_plural "Mark %d displayed articles as read?" +#~ msgstr[0] "Отметить %d Ñтатью(ей) как прочитанные?" +#~ msgstr[1] "Отметить %d Ñтатью(ей) как прочитанные?" +#~ msgstr[2] "Отметить %d Ñтатью(ей) как прочитанные?" -#: modules/pref-feeds.php:1480 -msgid "" -"This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the " -"link below." -msgstr "" -"Этот Ñайт Ñ Tiny Tiny RSS можно иÑпользовать в Firefox как агрегатор RSS. " -"Ð”Ð»Ñ Ñтого щёлкните по ÑÑылке ниже." +#, fuzzy +#~ msgid "Error: unable to load article." +#~ msgstr "Ошибка: пожалуйÑта загрузите OPML файл." -#: modules/pref-feeds.php:1487 -msgid "Click here to register this site as a feed reader." -msgstr "Щёлкните здеÑÑŒ Ð´Ð»Ñ Ñ€ÐµÐ³Ð¸Ñтрации Ñайта в роли RSS агрегатора" +#, fuzzy +#~ msgid "Click to expand article." +#~ msgstr "Щёлкните чтобы развернуть Ñтатью" -#: modules/pref-feeds.php:1498 -msgid "" -"Published articles are exported as a public RSS feed and can be subscribed " -"by anyone who knows the URL specified below." -msgstr "" -"Опубликованные Ñтатьи ÑкÑпортируетÑÑ Ð² качеÑтве общего RSS канала и могут " -"быть подпиÑаны кем-либо ещё, кто знает URL, указанный ниже." +#, fuzzy +#~ msgid "%d more..." +#~ msgid_plural "%d more..." +#~ msgstr[0] "Идет загрузка помощи..." +#~ msgstr[1] "Идет загрузка помощи..." +#~ msgstr[2] "Идет загрузка помощи..." -#: modules/pref-feeds.php:1501 #, fuzzy -msgid "Display URL" -msgstr "показать теги" +#~ msgid "No unread feeds." +#~ msgstr "  ÐŸÐ¾ÐºÐ°Ð·Ð°Ñ‚ÑŒ/Ñкрыть прочитанные" -#: modules/pref-feeds.php:1604 -#, fuzzy, php-format -msgid "%d archived articles" -msgstr "Отмеченные" +#, fuzzy +#~ msgid "Load more..." +#~ msgstr "Идет загрузка помощи..." -#: modules/pref-feeds.php:1633 -msgid "No feeds found." -msgstr "Каналы не найдены." +#~ msgid "Switch to digest..." +#~ msgstr "Перейти в дайджеÑÑ‚..." -#: modules/pref-filters.php:23 -msgid "Filter Editor" -msgstr "Редактор фильтров" +#~ msgid "Show tag cloud..." +#~ msgstr "Показать облако тегов..." -#: modules/pref-filters.php:212 -#, php-format -msgid "Saved filter %s" -msgstr "Фильтр %s Ñохранен" +#~ msgid "Click to play" +#~ msgstr "Щёлкните Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ð½Ð¸Ñ" -#: modules/pref-filters.php:266 -#, php-format -msgid "Created filter %s" -msgstr "Добавлен фильтр %s" +#~ msgid "Play" +#~ msgstr "Играть" -#: modules/pref-filters.php:315 help/3.php:31 help/4.php:25 -msgid "Create filter" -msgstr "Создать фильтр" +#~ msgid "Visit the website" +#~ msgstr "ПоÑетить официальный Ñайт" -#: modules/pref-filters.php:318 modules/pref-users.php:376 -msgid "Edit" -msgstr "Редактировать" +#~ msgid "Select theme" +#~ msgstr "Выбор темы" -#: modules/pref-filters.php:408 -msgid "Field" -msgstr "Поле" +#~ msgid "Playing..." +#~ msgstr "Проигрываю..." -#: modules/pref-filters.php:409 -msgid "Params" -msgstr "Параметры:" +#~ msgid "Default interval between feed updates" +#~ msgstr "Интервал между обновлениÑми каналов по умолчанию (в минутах)" -#: modules/pref-filters.php:476 -msgid "(Disabled)" -msgstr "(Отключен)" +#~ msgid "Could not update database" +#~ msgstr "Ðе могу обновить базу данных" -#: modules/pref-filters.php:492 -msgid "(Inverse)" -msgstr "(Инвертирован)" +#~ msgid "Could not find necessary schema file, need version:" +#~ msgstr "Ðе могу найти необходимый файл Ñхемы, требуетÑÑ Ð²ÐµÑ€ÑиÑ:" -#: modules/pref-filters.php:512 -msgid "No filters defined." -msgstr "Фильтры отÑутÑтвуют." +#~ msgid ", found: " +#~ msgstr ", найдена: " -#: modules/pref-filters.php:514 -msgid "No matching filters found." -msgstr "Ðе найдено Ñовпадений Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð¾Ð¼." +#~ msgid "Tiny Tiny RSS database is up to date." +#~ msgstr "Tiny Tiny RSS база данных обновлена." -#: modules/pref-labels.php:102 -#, php-format -msgid "Created label %s" -msgstr "Добавлена метка %s" +#~ msgid "Please backup your database before proceeding." +#~ msgstr "ПожалуйÑта, Ñохраните вашу базу данных перед продолжением." -#: modules/pref-labels.php:137 help/3.php:30 help/4.php:26 -msgid "Create label" -msgstr "Создать метку" +#~ msgid "Your Tiny Tiny RSS database needs update to the latest version (%d to %d)." +#~ msgstr "Вашей базе данных Tiny Tiny RSS необходимо обновитьÑÑ Ð´Ð¾ поÑледней верÑии (%d до %d)." -#: modules/pref-labels.php:143 -msgid "Clear colors" -msgstr "ОчиÑтить цвета" +#~ msgid "Performing updates..." +#~ msgstr "Идет обновление..." -#: modules/pref-labels.php:223 -msgid "Click to change color" -msgstr "Щёлкните Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ†Ð²ÐµÑ‚Ð°" +#~ msgid "Updating to version %d..." +#~ msgstr "ОбновлÑетÑÑ Ð´Ð¾ верÑии %d..." -#: modules/pref-labels.php:246 -msgid "No labels defined." -msgstr "Метки отÑутÑтвуют." +#~ msgid "Checking version... " +#~ msgstr "ПроверÑетÑÑ Ð²ÐµÑ€ÑиÑ... " -#: modules/pref-labels.php:248 -msgid "No matching labels found." -msgstr "Ðе найдено Ñовпадений Ñ Ð¼ÐµÑ‚ÐºÐ°Ð¼Ð¸." +#~ msgid "OK!" +#~ msgstr "OK!" -#: modules/pref-labels.php:306 -msgid "custom color:" -msgstr "пользовательÑкий цвет:" +#~ msgid "ERROR!" +#~ msgstr "Ошибка!" -#: modules/pref-labels.php:307 -msgid "foreground" -msgstr "передний план" +#, fuzzy +#~ msgid "Finished. Performed %d update up to schema version %d." +#~ msgid_plural "Finished. Performed %d updates up to schema version %d." +#~ msgstr[0] "Обновление завершено. Выполнено %d обновление(ий) Ñхемы базы данных до верÑии %d." +#~ msgstr[1] "Обновление завершено. Выполнено %d обновление(ий) Ñхемы базы данных до верÑии %d." +#~ msgstr[2] "Обновление завершено. Выполнено %d обновление(ий) Ñхемы базы данных до верÑии %d." -#: modules/pref-labels.php:308 -msgid "background" -msgstr "фон" +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Когда Ñта Ð¾Ð¿Ñ†Ð¸Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°, заголовки в ОÑобом канале и Метки группируютÑÑ Ð¿Ð¾ каналам" -#: modules/pref-prefs.php:37 -msgid "Old password cannot be blank." -msgstr "Старый пароль не может быть пуÑтым." +#~ msgid "Title or Content" +#~ msgstr "Заголовок или Ñодержимое" -#: modules/pref-prefs.php:42 -msgid "New password cannot be blank." -msgstr "Ðовый пароль не может быть пуÑтым." +#~ msgid "Link" +#~ msgstr "СÑылка" -#: modules/pref-prefs.php:47 -msgid "Entered passwords do not match." -msgstr "Пароли не Ñовпадают." +#~ msgid "Content" +#~ msgstr "Содержимое" -#: modules/pref-prefs.php:74 -msgid "Password has been changed." -msgstr "Пароль был изменен." +#~ msgid "Article Date" +#~ msgstr "Дата Статьи" -#: modules/pref-prefs.php:76 -msgid "Old password is incorrect." -msgstr "Старый пароль неправилен." +#~ msgid "Set starred" +#~ msgstr "Отметить" -#: modules/pref-prefs.php:104 -msgid "The configuration was saved." -msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñохранена." +#~ msgid "Assign tags" +#~ msgstr "Применить теги" -#: modules/pref-prefs.php:120 -#, php-format -msgid "Unknown option: %s" -msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ: %s" +#~ msgid "Modify score" +#~ msgstr "Изменить оценку" -#: modules/pref-prefs.php:131 -msgid "E-mail has been changed." -msgstr "E-mail был изменен." +#~ 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 "Эта Ð¾Ð¿Ñ†Ð¸Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð°, еÑли вы читаете неÑколько агрегаторов типа \"планета\" Ñ Ð¿ÐµÑ€ÐµÑекающимиÑÑ ÑтатьÑми. Когда запрещено, ÑÑ‚Ð°Ñ‚ÑŒÑ Ð¿Ð¾ÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ÑÑ Ð»Ð¸ÑˆÑŒ один раз." -#: modules/pref-prefs.php:171 -msgid "" -"Your password is at default value, \n" -"\t\t\t\t\t\tplease change it." -msgstr "" -"ИÑпользуетÑÑ Ð¿Ð°Ñ€Ð¾Ð»ÑŒ по умолчанию, \n" -"\t\t\t\t\t\tпожалуйÑта, измените его." +#, fuzzy +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Старый пароль неправилен." -#: modules/pref-prefs.php:198 -msgid "Personal data" -msgstr "Личные данные" +#, fuzzy +#~ msgid "Date syntax is incorrect." +#~ msgstr "Старый пароль неправилен." -#: modules/pref-prefs.php:205 -msgid "E-mail" -msgstr "E-mail" +#~ msgid "Notice" +#~ msgstr "Сообщение" -#: modules/pref-prefs.php:216 -msgid "Access level" -msgstr "Уровень доÑтупа:" +#, fuzzy +#~ msgid "Tag Cloud" +#~ msgstr "Облако тегов" -#: modules/pref-prefs.php:229 -msgid "Change e-mail" -msgstr "Изменить e-mail" +#~ msgid "Mark all visible articles in %s as read?" +#~ msgstr "Отметить вÑе видимые Ñтатьи в %s как прочитанные?" -#: modules/pref-prefs.php:237 -msgid "Old password" -msgstr "Старый пароль" +#~ msgid "Score" +#~ msgstr "Оценка" -#: modules/pref-prefs.php:244 -msgid "New password" -msgstr "Ðовый пароль" +#, fuzzy +#~ msgid "Share on identi.ca" +#~ msgstr "Заголовок" -#: modules/pref-prefs.php:252 -msgid "Confirm password" -msgstr "Подтверждение паролÑ" +#, fuzzy +#~ msgid "Flattr this article." +#~ msgstr "Отмеченные" -#: modules/pref-prefs.php:268 -msgid "Change password" -msgstr "Изменить пароль" +#, fuzzy +#~ msgid "Share on Google+" +#~ msgstr "Заголовок" -#: modules/pref-prefs.php:323 -msgid "Select theme" -msgstr "Выбор темы" +#, fuzzy +#~ msgid "Share on Twitter" +#~ msgstr "Заголовок" -#: modules/pref-prefs.php:383 modules/pref-prefs.php:388 -msgid "Yes" -msgstr "Да" +#, fuzzy +#~ msgid "Show additional preferences" +#~ msgstr "Закрыть наÑтройки" -#: modules/pref-prefs.php:385 modules/pref-prefs.php:388 -msgid "No" -msgstr "Ðет" +#, fuzzy +#~ msgid "Back to feeds" +#~ msgstr "Щёлкните Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ" -#: modules/pref-prefs.php:409 -msgid "Save configuration" -msgstr "Сохранить конфигурацию" +#, fuzzy +#~ msgid "Clearing credentials..." +#~ msgstr "ОчиÑтить данные канала." -#: modules/pref-prefs.php:412 -msgid "Manage profiles" -msgstr "" +#~ msgid "Updated" +#~ msgstr "Обновлено" -#: modules/pref-prefs.php:415 -msgid "Reset to defaults" -msgstr "СброÑить наÑтройки" +#~ msgid "" +#~ "Your browser doesn't support Javascript, which is required\n" +#~ "\t\t\tfor this application to function properly. Please check your\n" +#~ "\t\t\tbrowser settings." +#~ msgstr "" +#~ "Ваш браузер не поддерживает Javascript, который требуетÑÑ\n" +#~ "\t\tÐ´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¾Ð½Ð°Ð»Ð° Ñтой программы. ПожалуйÑта, проверьте\n" +#~ "\t\tнаÑтройки вашего браузера." -#: modules/pref-users.php:7 -msgid "Your access level is insufficient to open this tab." -msgstr "Вашего ÑƒÑ€Ð¾Ð²Ð½Ñ Ð´Ð¾Ñтупа недоÑтаточно Ð´Ð»Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñтой вкладки." +#~ msgid "Notifying %s." +#~ msgstr "Уведомление %s." -#: modules/pref-users.php:17 -msgid "User details" -msgstr "Подробнее..." +#~ msgid "Yes" +#~ msgstr "Да" -#: modules/pref-users.php:31 -msgid "User not found" -msgstr "Пользователь не найден" +#~ msgid "No" +#~ msgstr "Ðет" -#: modules/pref-users.php:50 modules/pref-users.php:428 -msgid "Registered" -msgstr "ЗарегиÑтрирован" +#~ msgid "Comments?" +#~ msgstr "Комментарии?" -#: modules/pref-users.php:51 -msgid "Last logged in" -msgstr "ПоÑледний вход" +#~ msgid "Move between feeds" +#~ msgstr "ПеремещатьÑÑ Ð¼ÐµÐ¶Ð´Ñƒ каналами" -#: modules/pref-users.php:58 -msgid "Subscribed feeds count" -msgstr "КоличеÑтво подпиÑанных каналов" +#~ msgid "Move between articles" +#~ msgstr "ПеремещатьÑÑ Ð¼ÐµÐ¶Ð´Ñƒ ÑтатьÑми" -#: modules/pref-users.php:62 -msgid "Subscribed feeds" -msgstr "ПодпиÑан на каналы" +#~ msgid "Active article actions" +#~ msgstr "ДейÑÑ‚Ð²Ð¸Ñ Ð½Ð°Ð´ текущей Ñтатьёй" -#: modules/pref-users.php:108 -msgid "User Editor" -msgstr "Редактор пользователей" +#~ msgid "Dismiss read articles" +#~ msgstr "Скрыть прочитанные Ñтатьи" -#: modules/pref-users.php:145 -msgid "Access level: " -msgstr "Уровень доÑтупа:" +#~ msgid "Mark articles below/above active one as read" +#~ msgstr "Отметить Ñтатью выше/ниже текущей, как прочитанную" -#: modules/pref-users.php:158 -msgid "Change password to" -msgstr "Изменить пароль на" +#~ msgid "Other actions" +#~ msgstr "Другие дейÑтвиÑ:" -#: modules/pref-users.php:167 -msgid "E-mail: " -msgstr "E-mail: " +#~ msgid "Display this help dialog" +#~ msgstr "Показать Ñтот диалог помощи" -#: modules/pref-users.php:201 -#, php-format -msgid "Changed password of user %s." -msgstr "Пароль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %s изменен." +#~ msgid "Multiple articles actions" +#~ msgstr "ДейÑÑ‚Ð²Ð¸Ñ Ð½Ð°Ð´ неÑколькими ÑтатьÑми" -#: modules/pref-users.php:249 -#, php-format -msgid "Added user %s with password %s" -msgstr "Добавлен пользователь %s Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼ %s" +#, fuzzy +#~ msgid "Select starred articles" +#~ msgstr "Выбрать непрочитанные Ñтатьи" -#: modules/pref-users.php:256 -#, php-format -msgid "Could not create user %s" -msgstr "Ðе могу добавить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %s" +#~ msgid "Feed actions" +#~ msgstr "ДейÑÑ‚Ð²Ð¸Ñ Ð½Ð°Ð´ каналом" -#: modules/pref-users.php:260 -#, php-format -msgid "User %s already exists." -msgstr "Пользователь %s уже ÑущеÑтвует." +#~ msgid "If viewing category, (un)collapse it" +#~ msgstr "ЕÑли ÐºÐ¾Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Ð²Ð¸Ð´Ð½Ð°, (раз)Ñвернуть её" -#: modules/pref-users.php:280 -#, php-format -msgid "" -"Changed password of user %s\n" -"\t\t\t\t\t to %s" -msgstr "Пароль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %s изменен на %s" +#~ msgid "Press any key to close this window." +#~ msgstr "Ðажмите любую клавишу Ð´Ð»Ñ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñтого окна" -#: modules/pref-users.php:284 -#, php-format -msgid "Notifying %s." -msgstr "Уведомление %s." +#~ msgid "My Feeds" +#~ msgstr "Мои каналы" -#: modules/pref-users.php:321 -msgid "[tt-rss] Password change notification" -msgstr "[tt-rss] Уведомление о Ñмене паролÑ" +#~ msgid "Other Feeds" +#~ msgstr "Другие каналы" -#: modules/pref-users.php:370 help/4.php:27 -msgid "Create user" -msgstr "Добавить пользователÑ" +#~ msgid "Panel actions" +#~ msgstr "ДейÑÑ‚Ð²Ð¸Ñ Ð½Ð°Ð´ каналами" -#: modules/pref-users.php:374 -#, fuzzy -msgid "Details" -msgstr "Раз в день" +#~ msgid "Top 25 feeds" +#~ msgstr "Лучшие 25 каналов" -#: modules/pref-users.php:380 -msgid "Reset password" -msgstr "СброÑить пароль" +#~ msgid "Edit feed categories" +#~ msgstr "Редактировать категории канала" -#: modules/pref-users.php:426 -msgid "Login" -msgstr "Пользователь:" +#~ msgid "Focus search (if present)" +#~ msgstr "Ð¤Ð¾ÐºÑƒÑ Ð½Ð° поиÑк (еÑли поиÑк показан)" -#: modules/pref-users.php:427 -msgid "Access Level" -msgstr "Уровень доÑтупа:" +#~ msgid "Note: not all actions may be available, depending on Tiny Tiny RSS configuration and your access level." +#~ msgstr "Замечание: не вÑе дейÑÑ‚Ð²Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть доÑтупны. Это завиÑит от конфигурации Tiny Tiny RSS и вашего ÑƒÑ€Ð¾Ð²Ð½Ñ Ð´Ð¾Ñтупа." -#: modules/pref-users.php:429 -msgid "Last login" -msgstr "ПоÑледний вход" +#~ msgid "Open article in new tab" +#~ msgstr "Открыть Ñтатью в новом табе" -#: modules/pref-users.php:487 -msgid "No users defined." -msgstr "Пользователи не определены." +#~ msgid "Right-to-left content" +#~ msgstr "Язык канала пишетÑÑ Ñправа налево" -#: modules/pref-users.php:489 -msgid "No matching users found." -msgstr "ПодходÑщих пользователей не найдено." +#, fuzzy +#~ msgid "Cache content locally" +#~ msgstr "КÑшировать Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾" -#: help/2.php:1 -msgid "Content filtering" -msgstr "Фильтровать Ñодержимое" +#~ msgid "Mark posts as updated on content change" +#~ msgstr "При изменении текÑта Ñтатьи, помечать ее как обновленную" -#: help/2.php:3 -msgid "" -"Tiny Tiny RSS has support for filtering (or processing) articles. Filtering " -"is done once, when new article is imported to the database from the " -"newsfeed, specified field is matched against regular expression and some " -"action is taken. Regular expression matching is case-insensitive." -msgstr "" -"Tiny Tiny RSS поддерживает фильтрацию (обработку) Ñтатей. Ð¤Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ñ " -"выполнÑетÑÑ Ð¾Ð´Ð½Ð°Ð¶Ð´Ñ‹, когда Ð½Ð¾Ð²Ð°Ñ ÑÑ‚Ð°Ñ‚ÑŒÑ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÑ‚ÑÑ Ð² базу данных из " -"новоÑтного канала, затем ищетÑÑ Ñовпадение Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼ регулÑрным выражением " -"и выполнÑетÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ðµ дейÑтвие. РегулÑрное выражение не чувÑтвительно к " -"региÑтру." +#~ msgid "Loading..." +#~ msgstr "Идет загрузка..." -#: help/2.php:5 -msgid "" -"Supported actions are: filter (do not import) article, mark article as read, " -"set starred, assign tag(s), and set score. Filters can be defined globally " -"and for some specific feed." -msgstr "" -"ПоддерживаютÑÑ ÑобытиÑ: фильтр (не импорт) Ñтатьи, отметить Ñтатью как " -"прочитанную, пометить Ñтатью, назначить тег, и уÑтановить оценку. Фильтры " -"могут быть определены глобально и локально Ð´Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… ÑпецифичеÑких " -"каналов." +#~ msgid "View in a tt-rss tab" +#~ msgstr "Открыть Ñтатью в новой закладке tt-rss" -#: help/2.php:7 -msgid "" -"Multiple and inverse matching are supported. All matching filters are " -"considered when article is being imported and all actions executed in " -"sequence. Inverse matching reverts matching result, e.g. filter matching " -"XYZZY in title with inverse flag will match all articles, except those " -"containing string XYZZY in title." -msgstr "" -"СоÑтавные и инверÑионные фильтры поддерживаютÑÑ. Ð’Ñе ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð¾Ð² " -"обÑчитываютÑÑ Ð¿Ñ€Ð¸ импорте Ñтатьей и вÑе дейÑÑ‚Ð²Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑÑŽÑ‚ÑÑ " -"поÑледовательно. ИнверÑное Ñовпадение возвращает результат ÑовпадениÑ, Ñ‚.е. " -"фильтр Ñовпадающий Ñ XYZZY в заголовке Ñ Ð¸Ð½Ð²ÐµÑ€Ñным флагом, отфильтрует вÑе " -"Ñтатьи кроме тех, где заголовок Ñодержит Ñтроку XYZZY." +#~ msgid "Magpie" +#~ msgstr "Magpie" -#: help/2.php:9 -msgid "See also:" -msgstr "Смотри также:" +#~ msgid "SimplePie" +#~ msgstr "SimplePie" -#: help/3.php:1 help/4.php:1 -msgid "Keyboard Shortcuts" -msgstr "ГорÑчие Клавиши" +#~ msgid "using" +#~ msgstr "иÑпользование" -#: help/3.php:5 -msgid "Navigation" -msgstr "ÐавигациÑ" +#, fuzzy +#~ msgid "match on" +#~ msgstr "ÑоответÑтвие:" -#: help/3.php:8 -msgid "Move between feeds" -msgstr "ПеремещатьÑÑ Ð¼ÐµÐ¶Ð´Ñƒ каналами" +#~ msgid "Title or content" +#~ msgstr "Заголовок или Ñодержимое" -#: help/3.php:9 -msgid "Move between articles" -msgstr "ПеремещатьÑÑ Ð¼ÐµÐ¶Ð´Ñƒ ÑтатьÑми" +#, fuzzy +#~ msgid "Your request could not be completed." +#~ msgstr "Ðе полноÑтью заполнена ваша региÑÑ‚Ñ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ." -#: help/3.php:10 -msgid "Show search dialog" -msgstr "Показать диалог поиÑка" +#~ msgid "Feed update has been scheduled." +#~ msgstr "Обновление канала запланировано" -#: help/3.php:13 -msgid "Active article actions" -msgstr "ДейÑÑ‚Ð²Ð¸Ñ Ð½Ð°Ð´ текущей Ñтатьёй" +#~ msgid "Can't update this kind of feed." +#~ msgstr "Ð’Ñ‹ не можете обновить Ñтот канал." -#: help/3.php:16 -msgid "Toggle starred" -msgstr "Изм. отмеченное" +#, fuzzy +#~ msgid "Original article" +#~ msgstr "Показать оригинальное Ñодержимое Ñтатьи" -#: help/3.php:17 -msgid "Toggle published" -msgstr "Отметить / ÑнÑть отметку" +#, fuzzy +#~ msgid "Update feed" +#~ msgstr "Обновить вÑе каналы" -#: help/3.php:18 -msgid "Toggle unread" -msgstr "Прочитано / не прочитано" +#, fuzzy +#~ msgid "With subcategories" +#~ msgstr "Редактировать категории" -#: help/3.php:19 -msgid "Edit tags" -msgstr "Редактировать теги" +#~ msgid "
  • Adding category %s.
  • " +#~ msgstr "
  • ДобавлÑетÑÑ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ %s.
  • " -#: help/3.php:20 -msgid "Open article in new window" -msgstr "Открыть Ñтатью в новом окне" +#~ msgid "Duplicate filter %s" +#~ msgstr "Фильтр %s уже ÑущеÑтвует" -#: help/3.php:21 -msgid "Mark articles below/above active one as read" -msgstr "Отметить Ñтатью выше/ниже текущей, как прочитанную" +#~ msgid "OK" +#~ msgstr "OK" -#: help/3.php:22 -msgid "Scroll article content" -msgstr "Прокрутить Ñодержимое Ñтатьи" +#~ msgid "before" +#~ msgstr "перед" -#: help/3.php:26 help/4.php:30 -msgid "Other actions" -msgstr "Другие дейÑтвиÑ:" +#~ msgid "after" +#~ msgstr "поÑле" -#: help/3.php:29 -msgid "Select article under mouse cursor" -msgstr "Выбрать Ñтатью под курÑором мыши" +#~ msgid "Check it" +#~ msgstr "Проверить" -#: help/3.php:32 -msgid "Collapse sidebar" -msgstr "Развернуть боковую панель" +#~ msgid "Apply to category" +#~ msgstr "Применить к категории" -#: help/3.php:33 -msgid "Toggle category reordering mode" -msgstr "Переключить изменение режима категории" +#~ msgid "Category $%s already exists in the database." +#~ msgstr "ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ $%s уже ÑущеÑтвует." -#: help/3.php:34 help/4.php:34 -msgid "Display this help dialog" -msgstr "Показать Ñтот диалог помощи" +#~ msgid "No feed categories defined." +#~ msgstr "Категории отÑутÑтвуют." -#: help/3.php:39 -msgid "Feed actions" -msgstr "ДейÑÑ‚Ð²Ð¸Ñ Ð½Ð°Ð´ каналом:" +#, fuzzy +#~ msgid "Remove selected categories" +#~ msgstr "Удалить выбранные категории?" -#: help/3.php:42 -msgid "Update active feed" -msgstr "Обновить активный канал" +#~ msgid "Hint: you can drag feeds and categories around." +#~ msgstr "Ð’Ñ‹ можете менÑть категории и каналы меÑтами" -#: help/3.php:43 -msgid "Update all feeds" -msgstr "Обновить вÑе каналы" +#, fuzzy +#~ msgid "Twitter" +#~ msgstr "Заголовок" -#: help/3.php:46 -msgid "Edit feed" -msgstr "Редактировать канал" +#~ msgid "Created filter %s" +#~ msgstr "Добавлен фильтр %s" -#: help/3.php:47 -msgid "Sort by name or unread count" -msgstr "Сортировать по имени или количеÑтву непрочитанных" +#~ msgid "Attachment:" +#~ msgstr "Вложение:" -#: help/3.php:48 -msgid "Hide visible read articles" -msgstr "Скрыть видимые прочитанные Ñтатьи" +#~ msgid "Subscribing to feed..." +#~ msgstr "ПодпиÑатьÑÑ Ð½Ð° канал..." -#: help/3.php:49 -msgid "Mark feed as read" -msgstr "Отметить канал как прочитанный" +#, fuzzy +#~ msgid "Filter Test Results" +#~ msgstr "Выражение" + +#~ msgid "Feed Categories" +#~ msgstr "Категории" + +#~ msgid "When \"Mark as read\" button is clicked in toolbar, automatically open next feed with unread articles." +#~ msgstr "ПоÑле выбора опции \"Отметить как прочитанное\" в верхней панели, автоматичеÑки открывать Ñледующий канал Ñ Ð½Ðµ прочитанными ÑтатьÑми." -#: help/3.php:50 #, fuzzy -msgid "Reverse headlines order" -msgstr "Обратный порÑдок заголовков (Ñтарые впереди)" +#~ msgid "Uses server timezone" +#~ msgstr "ЧаÑовой поÑÑ" -#: help/3.php:51 -msgid "Mark all feeds as read" -msgstr "Отметить вÑе каналы как прочитанные" +#~ msgid "About..." +#~ msgstr "О программе..." -#: help/3.php:52 -msgid "If viewing category, (un)collapse it" -msgstr "ЕÑли ÐºÐ¾Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Ð²Ð¸Ð´Ð½Ð°, (раз)Ñвернуть её" +#~ msgid "Importing using DOMXML." +#~ msgstr "Импортирую OPML (Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ DOMXML)..." -#: help/3.php:55 help/4.php:5 -msgid "Go to..." -msgstr "Перейти к.." +#~ msgid "Importing using DOMDocument." +#~ msgstr "Импортирую OPML (Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ DOMDocument)..." -#: help/3.php:62 -msgid "Tag cloud" -msgstr "Облако тегов" +#~ msgid "DOMXML extension is not found. It is required for PHP versions below 5." +#~ msgstr "РаÑширение DOMXML не найдено. Оно необходимо Ð´Ð»Ñ Ð²ÐµÑ€Ñий PHP Ñтарее 5." -#: help/3.php:69 help/4.php:41 -msgid "Press any key to close this window." -msgstr "Ðажмите любую клавишу Ð´Ð»Ñ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñтого окна" +#, fuzzy +#~ msgid "Cache images locally (SimplePie only)" +#~ msgstr "КÑшировать Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾" -#: help/4.php:9 -msgid "My Feeds" -msgstr "Мои каналы" +#~ msgid "Note: Only main settings profile can be migrated using OPML." +#~ msgstr "Только главный профиль наÑтроек будет ÑкÑпортирован в OPML." -#: help/4.php:10 -msgid "Other Feeds" -msgstr "Другие каналы" +#, fuzzy +#~ msgid "Publish" +#~ msgstr "Опубликован" -#: help/4.php:19 -msgid "Panel actions" -msgstr "ДейÑÑ‚Ð²Ð¸Ñ Ð½Ð°Ð´ каналами" +#~ msgid "Changed password of user %s." +#~ msgstr "Пароль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %s изменен." -#: help/4.php:23 -msgid "Top 25 feeds" -msgstr "Лучшие 25 каналов" +#~ msgid "Content filtering" +#~ msgstr "Фильтровать Ñодержимое" -#: help/4.php:24 -msgid "Edit feed categories" -msgstr "Редактировать категории канала" +#~ msgid "Tiny Tiny RSS has support for filtering (or processing) articles. Filtering is done once, when new article is imported to the database from the newsfeed, specified field is matched against regular expression and some action is taken. Regular expression matching is case-insensitive." +#~ msgstr "Tiny Tiny RSS поддерживает фильтрацию (обработку) Ñтатей. Ð¤Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑетÑÑ Ð¾Ð´Ð½Ð°Ð¶Ð´Ñ‹, когда Ð½Ð¾Ð²Ð°Ñ ÑÑ‚Ð°Ñ‚ÑŒÑ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÑ‚ÑÑ Ð² базу данных из новоÑтного канала, затем ищетÑÑ Ñовпадение Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼ регулÑрным выражением и выполнÑетÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ðµ дейÑтвие. РегулÑрное выражение не чувÑтвительно к региÑтру." -#: help/4.php:33 -msgid "Focus search (if present)" -msgstr "Ð¤Ð¾ÐºÑƒÑ Ð½Ð° поиÑк (еÑли поиÑк показан)" +#~ msgid "Supported actions are: filter (do not import) article, mark article as read, set starred, assign tag(s), and set score. Filters can be defined globally and for some specific feed." +#~ msgstr "ПоддерживаютÑÑ ÑобытиÑ: фильтр (не импорт) Ñтатьи, отметить Ñтатью как прочитанную, пометить Ñтатью, назначить тег, и уÑтановить оценку. Фильтры могут быть определены глобально и локально Ð´Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… ÑпецифичеÑких каналов." -#: help/4.php:39 -msgid "" -"Note: not all actions may be available, depending on Tiny Tiny RSS " -"configuration and your access level." -msgstr "" -"Замечание: не вÑе дейÑÑ‚Ð²Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть доÑтупны. Это завиÑит от " -"конфигурации Tiny Tiny RSS и вашего ÑƒÑ€Ð¾Ð²Ð½Ñ Ð´Ð¾Ñтупа." +#~ msgid "Multiple and inverse matching are supported. All matching filters are considered when article is being imported and all actions executed in sequence. Inverse matching reverts matching result, e.g. filter matching XYZZY in title with inverse flag will match all articles, except those containing string XYZZY in title." +#~ msgstr "СоÑтавные и инверÑионные фильтры поддерживаютÑÑ. Ð’Ñе ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð¾Ð² обÑчитываютÑÑ Ð¿Ñ€Ð¸ импорте Ñтатьей и вÑе дейÑÑ‚Ð²Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑÑŽÑ‚ÑÑ Ð¿Ð¾Ñледовательно. ИнверÑное Ñовпадение возвращает результат ÑовпадениÑ, Ñ‚.е. фильтр Ñовпадающий Ñ XYZZY в заголовке Ñ Ð¸Ð½Ð²ÐµÑ€Ñным флагом, отфильтрует вÑе Ñтатьи кроме тех, где заголовок Ñодержит Ñтроку XYZZY." -#: mobile/functions.php:59 mobile/functions.php:136 mobile/functions.php:172 -#: mobile/functions.php:199 mobile/functions.php:233 mobile/functions.php:356 -#: mobile/prefs.php:25 -msgid "Home" -msgstr "" +#~ msgid "See also:" +#~ msgstr "Смотри также:" -#: mobile/functions.php:392 -msgid "Nothing found (click to reload feed)." -msgstr "" +#~ msgid "short_desc" +#~ msgstr "краткое опиÑание" -#: mobile/prefs.php:30 #, fuzzy -msgid "Enable categories" -msgstr "Включить категории каналов" +#~ msgid "Remove:" +#~ msgstr "Удалить" -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "ON" -msgstr "" +#, fuzzy +#~ msgid "Assign:" +#~ msgstr "Применить метку:" -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "OFF" -msgstr "" +#~ msgid "Toggle category reordering mode" +#~ msgstr "Переключить изменение режима категории" -#: mobile/prefs.php:35 -#, fuzzy -msgid "Show images in posts" -msgstr "Ðе показывать Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² ÑтатьÑÑ…" +#~ msgid "Sort by name or unread count" +#~ msgstr "Сортировать по имени или количеÑтву непрочитанных" -#: mobile/prefs.php:40 #, fuzzy -msgid "Hide read feeds" -msgstr "  ÐŸÐ¾ÐºÐ°Ð·Ð°Ñ‚ÑŒ/Ñкрыть прочитанные" +#~ msgid "feeds" +#~ msgstr "Каналы" -#: mobile/prefs.php:45 #, fuzzy -msgid "Sort feeds by unread count" -msgstr "Сортировать каналы по количеÑтву непрочитанных Ñтатей" +#~ msgid "headlines" +#~ msgstr "ПоÑледние заголовки:" -#: functions.js:1315 -msgid "Can't add filter: nothing to match on." -msgstr "Ðе могу добавить фильтр: нет ÑоответÑтвиÑ." +#~ msgid "Update post on checksum change" +#~ msgstr "ОбновлÑть Ñтатью при изменении контрольной Ñуммы" -#: functions.js:1350 -msgid "Can't subscribe: no feed URL given." -msgstr "Ðе могу подпиÑатьÑÑ: нет URL" +#~ msgid "Use more accessible date/time format for headlines" +#~ msgstr "ИÑпользовать более удобный формат Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð°Ñ‚Ñ‹/времени" -#: functions.js:1354 -msgid "Subscribing to feed..." -msgstr "ПодпиÑатьÑÑ Ð½Ð° канал..." +#~ msgid "Set articles as unread on update" +#~ msgstr "УÑтановить Ñтатьи как не прочитанные при обновлении" -#: functions.js:1377 -#, fuzzy -msgid "Subscribed to %s" -msgstr "ПодпиÑаны каналы:" +#~ msgid "Importing OPML (using DOMXML extension)..." +#~ msgstr "Импортирую OPML (Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ DOMXML)..." -#: functions.js:1386 -#, fuzzy -msgid "Can't subscribe to the specified URL." -msgstr "Ðе могу подпиÑатьÑÑ: нет URL" +#~ msgid "Importing OPML (using DOMDocument extension)..." +#~ msgstr "Импортирую OPML (Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ DOMDocument)..." + +#~ msgid "Error: can't find body element." +#~ msgstr "Ошибка: не могу найти тело Ñлемента" -#: functions.js:1389 #, fuzzy -msgid "You are already subscribed to this feed." -msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¿Ð¸ÑатьÑÑ Ð¾Ñ‚ категории." +#~ msgid "No profiles selected." +#~ msgstr "Ð¡Ñ‚Ð°Ñ‚ÑŒÑ Ð½Ðµ выбрана" -#: functions.js:1952 -msgid "New articles available in this feed (click to show)" -msgstr "" +#~ msgid "Unknown error" +#~ msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" -#: functions.js:1989 -#, fuzzy -msgid "Subscribed to %d feed(s)." -msgstr "ПодпиÑаны каналы:" +#~ msgid "Could not display feed (query failed). Please check label match syntax or local configuration." +#~ msgstr "Ðе могу показать канал (ошибка в запроÑе). ПожалуйÑта проверьте ÑинтакÑÐ¸Ñ Ð¸Ð»Ð¸ локальную конфигурацию." -#: functions.js:1999 functions.js:2030 prefs.js:557 prefs.js:587 prefs.js:619 -#: prefs.js:908 prefs.js:928 prefs.js:1795 -msgid "No feeds are selected." -msgstr "Ðет выбранных каналов." +#~ msgid "Publish article with a note" +#~ msgstr "Опубликовать Ñтатью Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ¾Ð¹" -#: functions.js:2014 -msgid "" -"Remove selected feeds from the archive? Feeds with stored articles will not " -"be removed." -msgstr "" +#, fuzzy +#~ msgid "View article" +#~ msgstr "Отфильтровать Ñтатью" -#: functions.js:2066 #, fuzzy -msgid "Remove stored feed icon?" -msgstr "Удалить Ñохранённые данные" +#~ msgid "Server error while trying to query feed URLs." +#~ msgstr "Ошибка при попытке загрузить больше заголовков" -#: functions.js:2098 #, fuzzy -msgid "Please select an image file to upload." -msgstr "ПожалуйÑта выберите только один канал." +#~ msgid "Subscribed to %d feed(s)." +#~ msgstr "ПодпиÑаны каналы:" -#: functions.js:2100 -msgid "Upload new icon for this feed?" -msgstr "" +#, fuzzy +#~ msgid "Fatal Exception" +#~ msgstr "Ð¤Ð°Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ ÐžÑˆÐ¸Ð±ÐºÐ°" -#: functions.js:2117 -msgid "Please enter label caption:" -msgstr "ПожалуйÑта, введите заголовок метки:" +#~ msgid "audio/mpeg" +#~ msgstr "audio/mpeg" -#: functions.js:2122 -msgid "Can't create label: missing caption." -msgstr "Ðе могу Ñоздать метку: отÑутÑтвует заголовок." +#~ msgid "Enable offline reading" +#~ msgstr "Разрешить чтение оффлайн" -#: functions.js:2162 tt-rss.js:568 -msgid "Unsubscribe from %s?" -msgstr "ОтпиÑатьÑÑ Ð¾Ñ‚ %s?" +#~ msgid "Synchronize new articles for offline reading using Google Gears." +#~ msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð¾Ð²Ñ‹Ñ… Ñтатей Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¾Ñ„Ñ„Ð»Ð°Ð¹Ð½, иÑпользую Google Gears." -#: offline.js:636 -msgid "Data for offline browsing has not been downloaded yet." -msgstr "Данные Ð´Ð»Ñ Ð¾Ñ„Ñ„Ð»Ð°Ð¹Ð½ обзора не были загружены." +#~ msgid "Default article limit" +#~ msgstr "КоличеÑтво Ñтатей по умолчанию" -#: offline.js:677 -msgid "Synchronizing feeds..." -msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ ÐºÐ°Ð½Ð°Ð»Ð¾Ð²..." +#~ msgid "Default limit for articles to display, any custom number you like (0 - disables)." +#~ msgstr "По умолчанию ограничивать количеÑтво Ñтатей Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°. Любое чиÑло, какое вам нравитÑÑ (0 - выключить)" -#: offline.js:696 -msgid "Synchronizing categories..." -msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ð¹..." +#~ msgid "Enable search toolbar" +#~ msgstr "Разрешить панель поиÑка" -#: offline.js:714 -msgid "Synchronizing labels..." -msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ðº..." +#~ msgid "Open article links in new browser window" +#~ msgstr "Открыть ÑÑылку на Ñтатью в новом окне браузера" -#: offline.js:733 -msgid "Synchronizing articles..." -msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñтатей..." +#~ msgid "Link to user stylesheet to override default style, disabled if empty." +#~ msgstr "СÑылка на пользовательÑкий файл Ñтилей замещает файл Ñтилей по умолчанию, запрещает еÑли пуÑто" -#: offline.js:778 -msgid "Synchronizing articles (%d)..." -msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñтатей (%d)..." +#~ msgid "Hide feedlist" +#~ msgstr "СпрÑтать ÑпиÑок каналов" -#: offline.js:806 -msgid "Last sync: %s" -msgstr "ПоÑледнÑÑ ÑинхронизациÑ: %s" +#~ msgid "This option hides feedlist and allows it to be toggled on the fly, useful for small screens." +#~ msgstr "Эта Ð¾Ð¿Ñ†Ð¸Ñ Ñкрывает ÑпиÑок каналов и позволÑет его переключать на лету, удобно Ð´Ð»Ñ Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¸Ñ… Ñкранов" -#: offline.js:835 -msgid "Last sync: Error receiving data." -msgstr "ПоÑледнÑÑ ÑинхронизациÑ: Ошибка Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…." +#~ msgid "Experimental support for virtual feeds based on user crafted SQL queries. This feature is highly experimental and at this point not user friendly. Use with caution." +#~ msgstr "ЭкÑÐ¿ÐµÑ€Ð¸Ð¼ÐµÐ½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° виртуальных каналов оÑнована на пользовательÑких группировках SQL запроÑов. Эта возможноÑть Ñтрого ÑкÑÐ¿ÐµÑ€Ð¸Ð¼ÐµÐ½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¸ не удобна в работе. ИÑпользовать Ñ Ð¾ÑторожноÑтью." -#: offline.js:888 -msgid "Synchronizing..." -msgstr "СинхронизациÑ..." +#~ msgid "Show additional information in feedlist" +#~ msgstr "Показывать раÑширенную информацию в ÑпиÑке каналов" -#: offline.js:1195 -msgid "Switch Tiny Tiny RSS into offline mode?" -msgstr "Переключить Tiny Tiny RSS в оффлайн режим?" +#~ msgid "Prefer more accurate feedlist counters to UI speed" +#~ msgstr "Предпочитать более точные Ñчётчики ÑпиÑка каналов Ð´Ð»Ñ ÑкороÑти пользовательÑкого интерфейÑа" -#: offline.js:1223 -msgid "Tiny Tiny RSS will reload. Go online?" -msgstr "Tiny Tiny RSS будет перезагружен. Переходим в онлайн?" +#~ msgid "Enable inline MP3 player" +#~ msgstr "Разрешить вÑтроенный MP3 плеер" -#: offline.js:1655 -msgid "Last sync: Cancelled." -msgstr "ПоÑледнÑÑ ÑинхронизациÑ: Отменена." +#~ msgid "Enable the Flash-based XSPF Player to play MP3-format podcast enclosures." +#~ msgstr "Разрешить XSPF Flash плеер Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÐºÐ°Ñтов в MP3 формате" -#: offline.js:1672 -msgid "" -"This will remove all offline data stored by Tiny Tiny RSS on this computer. " -"Continue?" -msgstr "" -"Это удалит вÑе оффлайн данные, хранÑщиеÑÑ Ð½Ð° Ñтом компьютере. Продолжит?" +#, fuzzy +#~ msgid "Activate" +#~ msgstr "Ðдаптивно" -#: offline.js:1743 -msgid "" -"Tiny Tiny RSS has trouble accessing its server. Would you like to go offline?" -msgstr "" -"У Tiny Tiny RSS еÑть проблемы Ñ Ð´Ð¾Ñтупом к Ñерверу. Хотели бы вы перейти в " -"режим оффлайн?" +#~ msgid "You are running the latest version of Tiny Tiny RSS. The fact that you are seeing this dialog is probably a bug." +#~ msgstr "Ð’Ñ‹ запуÑтили поÑледнюю верÑию Tiny Tiny RSS. ЕÑли вы видите Ñтот диалог, Ñкорее вÑего обозначает ошибку." -#: prefs.js:233 -msgid "Error: No feed URL given." -msgstr "Ошибка: Канал не отдаёт URL." +#~ msgid "Feed Browser" +#~ msgstr "Обзор Каналов" -#: prefs.js:235 -msgid "Error: Invalid feed URL." -msgstr "Ошибка: Ðе верный URL канала." +#~ msgid "Update Errors" +#~ msgstr "Ошибки обновлениÑ" -#: prefs.js:263 -#, fuzzy -msgid "Can't add profile: no name specified." -msgstr "Ðе могу добавить категорию без имени" +#~ msgid "Show last article times" +#~ msgstr "Показать дату поÑледней Ñтатьи" -#: prefs.js:285 -msgid "Can't add category: no name specified." -msgstr "Ðе могу добавить категорию без имени" +#~ msgid "Last Article" +#~ msgstr "ПоÑледнÑÑ ÑтатьÑ" -#: prefs.js:307 -msgid "Please enter login:" -msgstr "ПожалуйÑта, введите логин:" +#, fuzzy +#~ msgid "You don't have any subscribed feeds." +#~ msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¿Ð¸ÑатьÑÑ Ð¾Ñ‚ категории." -#: prefs.js:314 -msgid "Can't create user: no login specified." -msgstr "Ðе могу добавить пользователÑ: не указан логин." +#, fuzzy +#~ msgid "No matching feeds found." +#~ msgstr "Ðе найдено Ñовпадений Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð¾Ð¼." -#: prefs.js:438 -msgid "Remove selected labels?" -msgstr "Удалить выбранные метки?" +#~ msgid "Filter Editor" +#~ msgstr "Редактор фильтров" -#: prefs.js:454 -msgid "No labels are selected." -msgstr "Ðет выбранных меток." +#~ msgid "Field" +#~ msgstr "Поле" -#: prefs.js:468 -msgid "Remove selected users?" -msgstr "Удалить выбранных пользователей?" +#~ msgid "Params" +#~ msgstr "Параметры:" -#: prefs.js:485 prefs.js:798 prefs.js:819 prefs.js:858 -msgid "No users are selected." -msgstr "Ðет выбранных пользователей." +#~ msgid "No filters defined." +#~ msgstr "Фильтры отÑутÑтвуют." -#: prefs.js:503 -msgid "Remove selected filters?" -msgstr "Удалить выбранные фильтры?" +#~ msgid "Click to change color" +#~ msgstr "Щёлкните Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ†Ð²ÐµÑ‚Ð°" -#: prefs.js:519 prefs.js:888 -msgid "No filters are selected." -msgstr "Ðет выбранных фильтров." +#~ msgid "No labels defined." +#~ msgstr "Метки отÑутÑтвуют." -#: prefs.js:538 -msgid "Unsubscribe from selected feeds?" -msgstr "ОтпиÑатьÑÑ Ð¾Ñ‚ выбранных каналов?" +#~ msgid "No matching labels found." +#~ msgstr "Ðе найдено Ñовпадений Ñ Ð¼ÐµÑ‚ÐºÐ°Ð¼Ð¸." -#: prefs.js:572 -msgid "Please select only one feed." -msgstr "ПожалуйÑта выберите только один канал." +#~ msgid "custom color:" +#~ msgstr "пользовательÑкий цвет:" -#: prefs.js:578 -msgid "Erase all non-starred articles in selected feed?" -msgstr "Стереть вÑе не отмеченные Ñтатьи в выбранном канале?" +#~ msgid "Can't add filter: nothing to match on." +#~ msgstr "Ðе могу добавить фильтр: нет ÑоответÑтвиÑ." -#: prefs.js:600 -msgid "How many days of articles to keep (0 - use default)?" -msgstr "Сколько дней хранить Ñтатьи (0 - по умолчанию)?" +#~ msgid "Can't subscribe: no feed URL given." +#~ msgstr "Ðе могу подпиÑатьÑÑ: нет URL" -#: prefs.js:632 -msgid "" -"Remove selected profiles? Active and default profiles will not be removed." -msgstr "" +#~ msgid "Error: No feed URL given." +#~ msgstr "Ошибка: Канал не отдаёт URL." + +#~ msgid "Error: Invalid feed URL." +#~ msgstr "Ошибка: Ðе верный URL канала." -#: prefs.js:648 #, fuzzy -msgid "No profiles selected." -msgstr "Ð¡Ñ‚Ð°Ñ‚ÑŒÑ Ð½Ðµ выбрана" +#~ msgid "Can't add profile: no name specified." +#~ msgstr "Ðе могу добавить категорию без имени" -#: prefs.js:660 -msgid "Remove selected categories?" -msgstr "Удалить выбранные категории?" +#~ msgid "Can't add category: no name specified." +#~ msgstr "Ðе могу добавить категорию без имени" -#: prefs.js:678 -msgid "No categories are selected." -msgstr "Ðет выбранных категорий." +#~ msgid "Save current configuration?" +#~ msgstr "Сохранить конфигурацию" -#: prefs.js:745 -msgid "Login field cannot be blank." -msgstr "Поле логина не может быть пуÑтым." +#~ msgid "Please enter new label foreground color:" +#~ msgstr "ПожалуйÑта, введите новую метку цвета переднего плана:" -#: prefs.js:803 prefs.js:824 prefs.js:863 -msgid "Please select only one user." -msgstr "ПожалуйÑта выберите только одного пользователÑ." +#~ msgid "Please enter new label background color:" +#~ msgstr "ПожалуйÑта, введите новую метку цвета фона:" -#: prefs.js:828 -msgid "Reset password of selected user?" -msgstr "СброÑить пароль выбранного пользователÑ?" +#~ msgid "Saved filter %s" +#~ msgstr "Фильтр %s Ñохранен" -#: prefs.js:893 -msgid "Please select only one filter." -msgstr "ПожалуйÑта выберите только один фильтр." +#~ msgid "Tags" +#~ msgstr "Теги" -#: prefs.js:969 -msgid "No OPML file to upload." -msgstr "Ðет файла OPML Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸." +#~ msgid "Show article summary in new window" +#~ msgstr "Показать детали Ñтатьи в новом окне" -#: prefs.js:1229 -msgid "Reset to defaults?" -msgstr "СброÑить наÑтройки?" +#~ msgid "toggle unread" +#~ msgstr "переключить непрочитанные" -#: prefs.js:1641 -msgid "Replace current publishing address with a new one?" -msgstr "Изменить текущий Ð°Ð´Ñ€ÐµÑ Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ на новый?" +#~ msgid "(remove)" +#~ msgstr "(удалить)" -#: prefs.js:1678 -msgid "Save current configuration?" -msgstr "Сохранить конфигурацию" +#~ msgid "Offline reading" +#~ msgstr "Оффлайн чтение" -#: prefs.js:1779 -msgid "Rescore articles in selected feeds?" -msgstr "Заново оценить Ñтатьи в выбранных каналах?" +#~ msgid "Cancel synchronization" +#~ msgstr "Отменить Ñинхронизацию" -#: prefs.js:1802 -msgid "Rescore all articles? This operation may take a lot of time." -msgstr "" -"Оценить заново вÑе Ñтатьи? Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ продолжатьÑÑ Ð´Ð»Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ времÑ." +#~ msgid "Synchronize" +#~ msgstr "СинхронизациÑ" -#: prefs.js:1821 -msgid "Remove filter %s?" -msgstr "Удалить фильтр %s?" +#~ msgid "Remove stored data" +#~ msgstr "Удалить Ñохранённые данные" -#: prefs.js:1882 -msgid "Save changes to selected feeds?" -msgstr "Сохранить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ñ… каналов?" +#~ msgid "Go offline" +#~ msgstr "Перейти в оффлайн" + +#~ msgid "Go online" +#~ msgstr "Перейти в онлайн" -#: prefs.js:1962 -msgid "Reset label colors to default?" -msgstr "СброÑить метку цветов, на цвета по умолчанию?" +#~ msgid "Reset UI layout" +#~ msgstr "СброÑить панели" -#: prefs.js:1987 -msgid "Please enter new label foreground color:" -msgstr "ПожалуйÑта, введите новую метку цвета переднего плана:" +#~ msgid "Drag me to resize panels" +#~ msgstr "ПотÑни за Ð¼ÐµÐ½Ñ Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° панелей" -#: prefs.js:1989 -msgid "Please enter new label background color:" -msgstr "ПожалуйÑта, введите новую метку цвета фона:" +#~ msgid "Showing most popular tags " +#~ msgstr "Самые популÑрные теги " -#: prefs.js:2121 #, fuzzy -msgid "Activate selected profile?" -msgstr "Удалить выбранные фильтры?" +#~ msgid "more tags" +#~ msgstr "нет тегов" -#: prefs.js:2137 -msgid "Please choose a profile to activate." -msgstr "" +#~ msgid "Link to feed:" +#~ msgstr "СвÑзать Ñ:" -#: tt-rss.js:74 -msgid "display feeds" -msgstr "показать каналы" +#~ msgid "Not linked" +#~ msgstr "Ðет ÑвÑзей" -#: tt-rss.js:251 -msgid "Mark all articles as read?" -msgstr "Пометить вÑе Ñтатьи как прочитанные?" +#~ msgid "(linked to %s)" +#~ msgstr "(ÑÑылка на %s)" -#: tt-rss.js:557 -msgid "You can't unsubscribe from the category." -msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¿Ð¸ÑатьÑÑ Ð¾Ñ‚ категории." +#~ msgid "E-mail has been changed." +#~ msgstr "E-mail был изменен." -#: tt-rss.js:562 tt-rss.js:755 tt-rss.js:930 -msgid "Please select some feed first." -msgstr "ПожалуйÑта выберите какой-нибудь канал." +#~ msgid "Change e-mail" +#~ msgstr "Изменить e-mail" -#: tt-rss.js:618 -msgid "Reset category order?" -msgstr "СброÑить порÑдок категорий?" +#~ msgid "Please wait..." +#~ msgstr "ПожалуйÑта, подождите..." -#: tt-rss.js:727 tt-rss.js:740 -msgid "Mark all articles in %s as read?" -msgstr "Отметить вÑе Ñтатьи в %s как прочитанные?" +#~ msgid "Data for offline browsing has not been downloaded yet." +#~ msgstr "Данные Ð´Ð»Ñ Ð¾Ñ„Ñ„Ð»Ð°Ð¹Ð½ обзора не были загружены." -#: tt-rss.js:760 -msgid "You can't edit this kind of feed." -msgstr "Ð’Ñ‹ не можете редактировать Ñтот канал." +#~ msgid "Synchronizing feeds..." +#~ msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ ÐºÐ°Ð½Ð°Ð»Ð¾Ð²..." -#: tt-rss.js:925 -msgid "You can't rescore this kind of feed." -msgstr "Ð’Ñ‹ не можете Ñнова оценить Ñтот канал." +#~ msgid "Synchronizing categories..." +#~ msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ð¹..." -#: tt-rss.js:935 -msgid "Rescore articles in %s?" -msgstr "УÑтановить оценку ÑтатьÑм в %s?" +#~ msgid "Synchronizing labels..." +#~ msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ðº..." -#: viewfeed.js:528 viewfeed.js:592 -msgid "Star article" -msgstr "Отмеченные" +#~ msgid "Synchronizing articles..." +#~ msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñтатей..." -#: viewfeed.js:577 -msgid "Unstar article" -msgstr "Ðе отмеченные" +#~ msgid "Synchronizing articles (%d)..." +#~ msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñтатей (%d)..." -#: viewfeed.js:585 viewfeed.js:652 -msgid "Please wait..." -msgstr "ПожалуйÑта, подождите..." +#~ msgid "Last sync: %s" +#~ msgstr "ПоÑледнÑÑ ÑинхронизациÑ: %s" -#: viewfeed.js:648 -msgid "Unpublish article" -msgstr "Ðе публиковать" +#~ msgid "Last sync: Error receiving data." +#~ msgstr "ПоÑледнÑÑ ÑинхронизациÑ: Ошибка Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…." -#: viewfeed.js:935 viewfeed.js:971 viewfeed.js:1012 viewfeed.js:1097 -#: viewfeed.js:1141 viewfeed.js:1288 viewfeed.js:1338 viewfeed.js:1394 -msgid "No articles are selected." -msgstr "Ðет выбранных Ñтатей." +#~ msgid "Synchronizing..." +#~ msgstr "СинхронизациÑ..." -#: viewfeed.js:1256 -msgid "Mark all visible articles in %s as read?" -msgstr "Отметить вÑе видимые Ñтатьи в %s как прочитанные?" +#~ msgid "Switch Tiny Tiny RSS into offline mode?" +#~ msgstr "Переключить Tiny Tiny RSS в оффлайн режим?" -#: viewfeed.js:1298 -#, fuzzy -msgid "Delete %d selected articles in %s?" -msgstr "Отметить %d выбранные Ñтатьи в %s как прочитанные?" +#~ msgid "Tiny Tiny RSS will reload. Go online?" +#~ msgstr "Tiny Tiny RSS будет перезагружен. Переходим в онлайн?" -#: viewfeed.js:1300 -#, fuzzy -msgid "Delete %d selected articles?" -msgstr "Удалить выбранные Ñтатьи из меток?" +#~ msgid "Last sync: Cancelled." +#~ msgstr "ПоÑледнÑÑ ÑинхронизациÑ: Отменена." -#: viewfeed.js:1348 -#, fuzzy -msgid "Archive %d selected articles in %s?" -msgstr "Отметить %d выбранные Ñтатьи в %s как прочитанные?" +#~ msgid "This will remove all offline data stored by Tiny Tiny RSS on this computer. Continue?" +#~ msgstr "Это удалит вÑе оффлайн данные, хранÑщиеÑÑ Ð½Ð° Ñтом компьютере. Продолжит?" -#: viewfeed.js:1351 -msgid "Move %d archived articles back?" -msgstr "" +#~ msgid "Tiny Tiny RSS has trouble accessing its server. Would you like to go offline?" +#~ msgstr "У Tiny Tiny RSS еÑть проблемы Ñ Ð´Ð¾Ñтупом к Ñерверу. Хотели бы вы перейти в режим оффлайн?" -#: viewfeed.js:1401 -msgid "Mark %d selected articles in %s as read?" -msgstr "Отметить %d выбранные Ñтатьи в %s как прочитанные?" +#~ msgid "Reset category order?" +#~ msgstr "СброÑить порÑдок категорий?" -#: viewfeed.js:1977 -msgid "No article is selected." -msgstr "Ð¡Ñ‚Ð°Ñ‚ÑŒÑ Ð½Ðµ выбрана" +#~ msgid "No feeds to display." +#~ msgstr "Ðет каналов Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ." -#: viewfeed.js:2018 -msgid "No articles found to mark" -msgstr "Статей Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ¸ не найдено." +#~ msgid "Published Articles" +#~ msgstr "Опубликованные Ñтатьи" -#: viewfeed.js:2020 -msgid "Mark %d article(s) as read?" -msgstr "Отметить %d Ñтатью(ей) как прочитанные?" +#, fuzzy +#~ msgid "Your Published articles feed URL is:" +#~ msgstr "СÑылка на общий канал Ñо ÑтатьÑми." -#: viewfeed.js:2255 -msgid "Please enter a note for this article:" -msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи:" +#~ msgid "Replace current publishing address with a new one?" +#~ msgstr "Изменить текущий Ð°Ð´Ñ€ÐµÑ Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ на новый?" -#~ msgid "Adding feed..." -#~ msgstr "Канал добавлÑетÑÑ..." +#~ msgid "Limit bandwidth usage" +#~ msgstr "Ограничить ÑкороÑть передачи" -#~ msgid "Adding feed category..." -#~ msgstr "ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑетÑÑ..." +#~ msgid "Remove selected users?" +#~ msgstr "Удалить выбранных пользователей?" -#, fuzzy -#~ msgid "Adding profile..." +#~ msgid "Adding feed..." #~ msgstr "Канал добавлÑетÑÑ..." -#~ msgid "Adding user..." -#~ msgstr "Пользователь добавлÑетÑÑ..." - #~ msgid "Assign score to article:" #~ msgstr "ПривÑзать Ñчёт к Ñтатье:" @@ -2594,15 +4606,6 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "Changing password..." #~ msgstr "Изменить пароль" -#~ msgid "Clearing feed..." -#~ msgstr "ОчиÑтка канала..." - -#~ msgid "Clearing selected feed..." -#~ msgstr "ОчиÑтка выбранных каналов..." - -#~ msgid "comments" -#~ msgstr "комментарии" - #~ msgid "Could not change feed URL." #~ msgstr "Ðе получилоÑÑŒ изменить URL канала." @@ -2615,122 +4618,47 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "Could not update headlines (missing XML object)" #~ msgstr "Ðе могу обновить заголовки (отÑутÑтвует XML объект)" -#~ msgid "Entire feed" -#~ msgstr "ВеÑÑŒ канал" - -#~ msgid "Error while trying to load more headlines" -#~ msgstr "Ошибка при попытке загрузить больше заголовков" - #~ msgid "Failed to load article in new window" #~ msgstr "Ошибка загрузки Ñтатей в новом окне" #~ msgid "Failed to open window for the article" #~ msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð¾ÐºÐ½Ð° Ð´Ð»Ñ Ñтатьи" -#, fuzzy -#~ msgid "Feed icon removed." -#~ msgstr "Канал не найден." - -#~ msgid "Loading feed list..." -#~ msgstr "Загрузка ÑпиÑка каналов..." - #~ msgid "Local data removed." #~ msgstr "Локальные данные удалены." #~ msgid "Mark as read:" #~ msgstr "Пометить как прочит.:" -#~ msgid "Marking all feeds as read..." -#~ msgstr "Помечаю вÑе каналы как прочитанные..." - #~ msgid "Please wait until operation finishes." #~ msgstr "ПожалуйÑта подождите пока Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ñ‚ÑÑ." -#~ msgid "Purging selected feed..." -#~ msgstr "ОчиÑтка выбранных каналов..." - #~ msgid "Remove selected articles from label?" #~ msgstr "Удалить выбранные Ñтатьи из меток?" -#~ msgid "Removing feed..." -#~ msgstr "Канал удалÑетÑÑ..." - -#~ msgid "Removing filter..." -#~ msgstr "Удаление фильтра..." - #~ msgid "Removing offline data..." #~ msgstr "Удаление оффлайн данных..." -#~ msgid "Removing selected categories..." -#~ msgstr "Выбранные категории удалÑÑŽÑ‚ÑÑ..." - -#~ msgid "Removing selected filters..." -#~ msgstr "Выбранные фильтры удалÑÑŽÑ‚ÑÑ..." - -#~ msgid "Removing selected labels..." -#~ msgstr "Выбранные метки удалÑÑŽÑ‚ÑÑ..." - -#, fuzzy -#~ msgid "Removing selected profiles..." -#~ msgstr "Выбранные фильтры удалÑÑŽÑ‚ÑÑ..." - -#~ msgid "Removing selected users..." -#~ msgstr "Выбранные пользователи удалÑÑŽÑ‚ÑÑ..." - #~ msgid "Rescore last 100 articles in selected feeds?" #~ msgstr "Переоценить поÑледние 100 Ñтатей в выбранных каналах?" -#~ msgid "Rescoring articles..." -#~ msgstr "Переоценка Ñтатей..." - -#~ msgid "Resetting password for selected user..." -#~ msgstr "Пароль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑбраÑываетÑÑ..." - -#~ msgid "Saving article tags..." -#~ msgstr "Сохранить теги Ñтатьи..." - -#~ msgid "Saving feed..." -#~ msgstr "Идёт Ñохранение..." - #~ msgid "Saving feeds..." #~ msgstr "СохранÑÑŽÑ‚ÑÑ ÐºÐ°Ð½Ð°Ð»Ñ‹..." #~ msgid "Saving filter..." #~ msgstr "Идет Ñохранение фильтра..." -#~ msgid "Saving user..." -#~ msgstr "Идет Ñохранение пользователÑ..." - #~ msgid "Selection" #~ msgstr "Выбранные" #~ msgid "Tiny Tiny RSS is in offline mode." #~ msgstr "Tiny Tiny RSS в оффлайн режиме." -#~ msgid "Trying to change e-mail..." -#~ msgstr "Идет изменение e-mail..." - -#, fuzzy -#~ msgid "Upload failed." -#~ msgstr "Обновлённые Ñтатьи" - -#~ msgid "" -#~ "You have to synchronize some articles before going into offline mode." -#~ msgstr "" -#~ "Ðужно Ñинхронизировать неÑколько Ñтатей перед переходом в оффлайн режим." - -#~ msgid "" -#~ "You won't be able to access offline version of Tiny Tiny RSS until you " -#~ "switch it into offline mode again. Go online?" -#~ msgstr "" -#~ "Ð’Ñ‹ не Ñможете перейти в оффлайн режим Tiny Tiny RSS до тех пор, пока не " -#~ "переключитеÑÑŒ в оффлайн Ñнова. Выходим в онлайн?" - -#~ msgid "Display original article content" -#~ msgstr "Показать оригинальное Ñодержимое Ñтатьи" +#~ msgid "You have to synchronize some articles before going into offline mode." +#~ msgstr "Ðужно Ñинхронизировать неÑколько Ñтатей перед переходом в оффлайн режим." -#~ msgid "All feeds updated." -#~ msgstr "Ð’Ñе каналы обновлены." +#~ msgid "You won't be able to access offline version of Tiny Tiny RSS until you switch it into offline mode again. Go online?" +#~ msgstr "Ð’Ñ‹ не Ñможете перейти в оффлайн режим Tiny Tiny RSS до тех пор, пока не переключитеÑÑŒ в оффлайн Ñнова. Выходим в онлайн?" #~ msgid "Can't open article: received invalid XML" #~ msgstr "Ðе могу открыть Ñтатью: получен неверный XML" @@ -2741,42 +4669,21 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "Erase all non-starred articles in %s?" #~ msgstr "Стереть вÑе не отмеченные Ñтатьи в %s?" -#~ msgid "Published feed URL changed." -#~ msgstr "Опубликованный URL канала изменён." - -#~ msgid "Trying to change address..." -#~ msgstr "Попытка изменить адреÑ.." - #~ msgid "Trying to change password..." #~ msgstr "Идет Ñохранение паролÑ..." -#~ msgid "Unsubscribing from selected feeds..." -#~ msgstr "Выбранные каналы удалÑÑŽÑ‚ÑÑ..." - #~ msgid "You can't clear this type of feed." #~ msgstr "Ð’Ñ‹ не можете очиÑтить Ñтот канал." -#~ msgid "Clear articles" -#~ msgstr "ОчиÑтить Ñтатьи" - #~ msgid "Adding category %s...
    " #~ msgstr "ДобавлÑетÑÑ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ %s...
    " #~ msgid "Done." #~ msgstr "Готово." -#~ msgid "Visit official site" -#~ msgstr "ПоÑетить официальный Ñайт" - -#~ msgid "Close" -#~ msgstr "Закрыть" - #~ msgid "The configuration was reset to defaults." #~ msgstr "ÐаÑтройки были Ñброшены по-умолчанию." -#~ msgid "Themes" -#~ msgstr "Темы" - #~ msgid "Change theme" #~ msgstr "Изменить тему" @@ -2788,9 +4695,6 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "Remove selected feeds from archive?" #~ msgstr "Удалить выбранные Ñтатьи из меток?" -#~ msgid "Search results" -#~ msgstr "Результаты поиÑка" - #~ msgid "Searched for" #~ msgstr "ПоиÑк" @@ -2812,9 +4716,6 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "Feed browser is administratively disabled." #~ msgstr "Другие каналы отключены админиÑтратором" -#~ msgid "Top" -#~ msgstr "Топ" - #~ msgid "Show" #~ msgstr "Показать" @@ -2830,34 +4731,18 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "Recategorize" #~ msgstr "Изменить категорию" -#~ msgid "Other:" -#~ msgstr "Другой:" - #~ msgid "Generate another link" #~ msgstr "Создать другую ÑÑылку" -#~ msgid "View feeds" -#~ msgstr "Каналы" - -#~ msgid "View tags" -#~ msgstr "Теги" - #~ msgid "Back" #~ msgstr "Ðазад" #~ msgid "View:" #~ msgstr "Показать:" -#~ msgid "Refresh" -#~ msgstr "Обновить" - #~ msgid "Page" #~ msgstr "Страница" -#, fuzzy -#~ msgid "Back to feedlist" -#~ msgstr "Щёлкните Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ" - #~ msgid "Tags:" #~ msgstr "Теги:" @@ -2867,9 +4752,6 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "Where:" #~ msgstr "Где:" -#~ msgid "Match on:" -#~ msgstr "СоответÑтвие:" - #~ msgid "Internal error: Function not implemented" #~ msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ðµ реализована" @@ -2886,27 +4768,18 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "  Keyboard shortcuts" #~ msgstr "  Ð“орÑчие клавиши" -#~ msgid "description" -#~ msgstr "опиÑание" - #~ msgid "filter_type_descr" #~ msgstr "опиÑание типа фильтра" #~ msgid "action_description" #~ msgstr "опиÑание дейÑтвиÑ" -#~ msgid "short_desc" -#~ msgstr "краткое опиÑание" - #~ msgid "Can't add user: no login specified." #~ msgstr "Ðе могу добавить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±ÐµÐ· логина" #~ msgid "Can't create label: missing SQL expression." #~ msgstr "Ðе могу Ñоздать метку: отÑутÑтвует SQL выражение." -#~ msgid "Loading help..." -#~ msgstr "Идет загрузка помощи..." - #~ msgid "Saving label..." #~ msgstr "Идет Ñохранение метки..." @@ -2919,14 +4792,8 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "Address changed." #~ msgstr "ÐÐ´Ñ€ÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½." -#~ msgid "" -#~ "Rescore articles in all feeds? This operation may take a lot of time." -#~ msgstr "" -#~ "Оценить заново вÑе Ñтатьи в каналах? Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ продолжатьÑÑ " -#~ "длительное времÑ." - -#~ msgid "Rescoring feeds..." -#~ msgstr "Переоценка каналов..." +#~ msgid "Rescore articles in all feeds? This operation may take a lot of time." +#~ msgstr "Оценить заново вÑе Ñтатьи в каналах? Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ продолжатьÑÑ Ð´Ð»Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ времÑ." #, fuzzy #~ msgid "Restart in offline mode" @@ -2935,23 +4802,17 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "MySQL Charset Updater" #~ msgstr "Кодировка обновлений MySQL" -#~ msgid "" -#~ "This script is for Tiny Tiny RSS installations with MySQL backend only." +#~ msgid "This script is for Tiny Tiny RSS installations with MySQL backend only." #~ msgstr "Этот Ñкрипт Ð´Ð»Ñ Ð¸Ð½ÑталÑции Tiny Tiny RSS только Ñ MySQL бекендом." #~ msgid "" #~ "This script will convert your Tiny Tiny RSS database to UTF-8. \n" -#~ "\t\t\tDepending on current database charset you may experience data " -#~ "corruption (lost accent characters, etc.). \n" -#~ "\t\t\tAfter update, you'll have to set MYSQL_CHARSET option in " -#~ "config.php to 'utf8'." +#~ "\t\t\tDepending on current database charset you may experience data corruption (lost accent characters, etc.). \n" +#~ "\t\t\tAfter update, you'll have to set MYSQL_CHARSET option in config.php to 'utf8'." #~ msgstr "" -#~ "Этот Ñкрипт переконвертирует вашу базу данных Tiny Tiny RSS в кодировку " -#~ "UTF-8. \n" -#~ "\t\t\tЗавиÑит от текущей кодировки базы данных и может иÑпортить данные " -#~ "(потерÑнные Ñимволы знака ударениÑ, умлÑуты, и Ñ‚.д.) \n" -#~ "\t\t\tПоÑле обновлениÑ, вам нужно уÑтановить опцию MYSQL_CHARSET в " -#~ "файле config.php в 'utf8'." +#~ "Этот Ñкрипт переконвертирует вашу базу данных Tiny Tiny RSS в кодировку UTF-8. \n" +#~ "\t\t\tЗавиÑит от текущей кодировки базы данных и может иÑпортить данные (потерÑнные Ñимволы знака ударениÑ, умлÑуты, и Ñ‚.д.) \n" +#~ "\t\t\tПоÑле обновлениÑ, вам нужно уÑтановить опцию MYSQL_CHARSET в файле config.php в 'utf8'." #~ msgid "Converting database..." #~ msgstr "Преобразование базы данных..." @@ -2963,30 +4824,23 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ "Ð¤Ð°Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð’Ñ‹ забыли Ñкопировать \n" #~ "\t\tconfig.php-dist в config.php и отредактировать его.\n" -#~ msgid "" -#~ "config: your config file version is incorrect. See config.php-dist.\n" -#~ msgstr "" -#~ "config: верÑÐ¸Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ файла конфигурации не корректна. Смотрите config." -#~ "php-dist.\n" +#~ msgid "config: your config file version is incorrect. See config.php-dist.\n" +#~ msgstr "config: верÑÐ¸Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ файла конфигурации не корректна. Смотрите config.php-dist.\n" #~ msgid "" #~ "Fatal error: RSS_BACKEND_TYPE is deprecated. Please remove this\n" #~ "\t\t\toption from config.php\n" #~ msgstr "" -#~ "Ð¤Ð°Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: RSS_BACKEND_TYPE уÑтарел. ПожалуйÑта удалите " -#~ "Ñту\n" +#~ "Ð¤Ð°Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: RSS_BACKEND_TYPE уÑтарел. ПожалуйÑта удалите Ñту\n" #~ "\t\t\tопцию из config.php\n" #~ msgid "" #~ "Fatal Error: XML Import/Export tools (xml-export.php\n" -#~ "\t\tand xml-import.php) could be used maliciously. Please remove " -#~ "them \n" +#~ "\t\tand xml-import.php) could be used maliciously. Please remove them \n" #~ "\t\tfrom your TT-RSS instance.\n" #~ msgstr "" -#~ "Ð¤Ð°Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ИнÑтрументы Импорта/ЭкÑпорта XML (xml-export." -#~ "php\n" -#~ "\t\tи xml-import.php) могут иÑпользоватьÑÑ Ð·Ð»Ð¾ÑƒÐ¼Ñ‹ÑˆÐ»ÐµÐ½Ð½Ð¸ÐºÐ°Ð¼Ð¸. " -#~ "ПожалуйÑта удалите их \n" +#~ "Ð¤Ð°Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ИнÑтрументы Импорта/ЭкÑпорта XML (xml-export.php\n" +#~ "\t\tи xml-import.php) могут иÑпользоватьÑÑ Ð·Ð»Ð¾ÑƒÐ¼Ñ‹ÑˆÐ»ÐµÐ½Ð½Ð¸ÐºÐ°Ð¼Ð¸. ПожалуйÑта удалите их \n" #~ "\t\tиз вашей копии TT-RSS.\n" #~ msgid "" @@ -3000,8 +4854,7 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ "Fatal Error: You have enabled USE_CURL_FOR_ICONS, but your PHP \n" #~ "\t\t\tdoesn't seem to support CURL functions." #~ msgstr "" -#~ "Ð¤Ð°Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ ÐžÑˆÐ¸Ð±ÐºÐ°: Ð’Ñ‹ разрешили USE_CURL_FOR_ICONS, но ваша верÑÐ¸Ñ " -#~ "PHP \n" +#~ "Ð¤Ð°Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ ÐžÑˆÐ¸Ð±ÐºÐ°: Ð’Ñ‹ разрешили USE_CURL_FOR_ICONS, но ваша верÑÐ¸Ñ PHP \n" #~ "\t\t\tне поддерживает CURL фунции." #~ msgid "config: SESSION_EXPIRE_TIME is undefined" @@ -3013,34 +4866,20 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "config: SESSION_EXPIRE_TIME should be greater or equal to" #~ msgstr "config: SESSION_EXPIRE_TIME должна быть больше или равна" -#~ msgid "" -#~ "config: DATABASE_BACKED_SESSIONS is incompatible with SINGLE_USER_MODE" +#~ msgid "config: DATABASE_BACKED_SESSIONS is incompatible with SINGLE_USER_MODE" #~ msgstr "config: DATABASE_BACKED_SESSIONS не ÑовмеÑтим Ñ SINGLE_USER_MODE" #~ msgid "config: DATABASE_BACKED_SESSIONS are currently broken with MySQL" #~ msgstr "config: DATABASE_BACKED_SESSIONS не правильно работает Ñ MySQL" -#~ msgid "" -#~ "config: MAIL_FROM has been split into DIGEST_FROM_NAME and " -#~ "DIGEST_FROM_ADDRESS" -#~ msgstr "" -#~ "config: MAIL_FROM будет разделено на DIGEST_FROM_NAME и " -#~ "DIGEST_FROM_ADDRESS" +#~ msgid "config: MAIL_FROM has been split into DIGEST_FROM_NAME and DIGEST_FROM_ADDRESS" +#~ msgstr "config: MAIL_FROM будет разделено на DIGEST_FROM_NAME и DIGEST_FROM_ADDRESS" #~ msgid "config: option COUNTERS_MAX_AGE expected, but not defined" #~ msgstr "config: Ð¾Ð¿Ñ†Ð¸Ñ COUNTERS_MAX_AGE ожидаетÑÑ, но не определена" -#~ msgid "" -#~ "config: option DAEMON_REFRESH_ONLY is obsolete. Please remove this option " -#~ "and read about other ways to update feeds on the wiki." -#~ msgstr "" -#~ "config: Ð¾Ð¿Ñ†Ð¸Ñ DAEMON_REFRESH_ONLY уÑтарела. ПожалуйÑта удалите Ñту опцию " -#~ "и прочитайте о других ÑпоÑобах Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ°Ð½Ð°Ð»Ð¾Ð² в wiki." - -#~ msgid "Modify score" -#~ msgstr "Изменить оценку" +#~ msgid "config: option DAEMON_REFRESH_ONLY is obsolete. Please remove this option and read about other ways to update feeds on the wiki." +#~ msgstr "config: Ð¾Ð¿Ñ†Ð¸Ñ DAEMON_REFRESH_ONLY уÑтарела. ПожалуйÑта удалите Ñту опцию и прочитайте о других ÑпоÑобах Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ°Ð½Ð°Ð»Ð¾Ð² в wiki." #~ msgid "

    User not found

    " #~ msgstr "

    Пользователь не найден

    " @@ -3051,27 +4890,12 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "Unknown Error" #~ msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" -#~ msgid "Feed information:" -#~ msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ канале:" - #~ msgid "Site:" #~ msgstr "Сайт:" -#~ msgid "Last updated:" -#~ msgstr "ПоÑледнее обновление" - -#~ msgid "Last headlines:" -#~ msgstr "ПоÑледние заголовки:" - #, fuzzy -#~ msgid "" -#~ "Feed browser cache information is missing. Please refer to the wiki for more information." -#~ msgstr "" -#~ "Feed browser cache information is missing. Ð”Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆÐµÐ¹ информации " -#~ "Ñмотрите тут wiki." +#~ msgid "Feed browser cache information is missing. Please refer to the wiki for more information." +#~ msgstr "Feed browser cache information is missing. Ð”Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆÐµÐ¹ информации Ñмотрите тут wiki." #~ msgid "Couldn't find any feeds available for subscription." #~ msgstr "Ðе удалоÑÑŒ найти каналы доÑтупные Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñки." @@ -3088,9 +4912,6 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "Content Filtering" #~ msgstr "Фильтры" -#~ msgid "Label Editor" -#~ msgstr "Редактор Меток" - #~ msgid "User Manager" #~ msgstr "Пользователи" @@ -3127,19 +4948,12 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "  Reset category order" #~ msgstr "  Ð¡Ð±Ñ€Ð¾Ñить порÑдок категорий" -#~ msgid "" -#~ "This panel shows feeds subscribed by other users of this system, just in " -#~ "case you are interested in them too." -#~ msgstr "" -#~ "Эта панель показывает каналы на которые подпиÑаны другие пользователи " -#~ "ÑиÑтемы, только в Ñлучае еÑли вам они тоже интереÑны." +#~ msgid "This panel shows feeds subscribed by other users of this system, just in case you are interested in them too." +#~ msgstr "Эта панель показывает каналы на которые подпиÑаны другие пользователи ÑиÑтемы, только в Ñлучае еÑли вам они тоже интереÑны." #~ msgid "Match " #~ msgstr "СоответÑтвие" -#~ msgid "Unread articles" -#~ msgstr "Отмеченные" - #~ msgid "Title contains" #~ msgstr "Заголовок Ñодержит" @@ -3161,12 +4975,6 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "Articles newer than X days" #~ msgstr "Статье меньше X дней" -#~ msgid "Add" -#~ msgstr "Добавить" - -#~ msgid "Caption" -#~ msgstr "Заголовок" - #~ msgid "Match SQL" #~ msgstr "Совпадение SQL" @@ -3179,22 +4987,13 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "SQL Expression" #~ msgstr "SQL выражение" -#~ msgid "[No caption]" -#~ msgstr "[Ðет заголовка]" - #~ msgid "Labels and SQL Expressions" #~ msgstr "Метки и SQL выражениÑ" -#~ msgid "Examples" -#~ msgstr "Примеры" - #, fuzzy #~ msgid "Match all unread articles:" #~ msgstr "Отмеченные" -#~ msgid "Search to label" -#~ msgstr "ИÑкать метку" - #~ msgid "Convert to label" #~ msgstr "Превратить в метку" @@ -3204,40 +5003,22 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "Create Label" #~ msgstr "Создать метку" -#~ msgid "Test" -#~ msgstr "Проверить" - #, fuzzy #~ msgid "Perform action" #~ msgstr "Применить обновлениÑ" -#~ msgid "Filter expression" -#~ msgstr "Выражение" - -#~ msgid "Category:" -#~ msgstr "КатегориÑ:" - #~ msgid "Caption:" #~ msgstr "Заголовок:" #~ msgid "SQL Expression:" #~ msgstr "SQL выражение:" -#~ msgid "Match:" -#~ msgstr "ПоиÑк:" - -#~ msgid "Feed:" -#~ msgstr "Канал:" - #~ msgid "Action:" #~ msgstr "ДейÑтвие:" #~ msgid "Params:" #~ msgstr "Параметры:" -#~ msgid "Title:" -#~ msgstr "Заголовок:" - #, fuzzy #~ msgid "Update using:" #~ msgstr "Обновить" @@ -3245,10 +5026,6 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "Change password:" #~ msgstr "Изменить пароль:" -#, fuzzy -#~ msgid "Update errors" -#~ msgstr "Ошибки обновлениÑ" - #~ msgid "Toggle" #~ msgstr "Изменить:" @@ -3280,9 +5057,6 @@ msgstr "ПожалуйÑта, укажите заметку Ð´Ð»Ñ Ñтатьи: #~ msgid "This category" #~ msgstr "Эта категориÑ" -#~ msgid "Global search results" -#~ msgstr "Результаты поиÑка" - #~ msgid "Category search results" #~ msgstr "Результаты поиÑка" diff --git a/locale/sv_SE/LC_MESSAGES/messages.mo b/locale/sv_SE/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000..c354ce3425 Binary files /dev/null and b/locale/sv_SE/LC_MESSAGES/messages.mo differ diff --git a/locale/sv_SE/LC_MESSAGES/messages.po b/locale/sv_SE/LC_MESSAGES/messages.po new file mode 100644 index 0000000000..a88417efe5 --- /dev/null +++ b/locale/sv_SE/LC_MESSAGES/messages.po @@ -0,0 +1,4264 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Walter Weiss , 2013. +# poitzorg , 2012. +# gothfox , 2011. +# joschi , 2011. +msgid "" +msgstr "" +"Project-Id-Version: Tiny Tiny RSS sv_SE\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2013-05-24 19:41+0100\n" +"Last-Translator: Mattias Tengblad \n" +"Language-Team: Mattias Tengblad \n" +"Language: Svenska\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.5.5\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: backend.php:73 +msgid "Use default" +msgstr "Använd standard" + +#: backend.php:74 +msgid "Never purge" +msgstr "Rensa aldrig" + +#: backend.php:75 +msgid "1 week old" +msgstr "1 vecka" + +#: backend.php:76 +msgid "2 weeks old" +msgstr "2 veckor" + +#: backend.php:77 +msgid "1 month old" +msgstr "1 mÃ¥nad" + +#: backend.php:78 +msgid "2 months old" +msgstr "2 mÃ¥nader" + +#: backend.php:79 +msgid "3 months old" +msgstr "3 mÃ¥nader" + +#: backend.php:82 +msgid "Default interval" +msgstr "Standardintervall" + +#: backend.php:83 +#: backend.php:93 +msgid "Disable updates" +msgstr "Inaktivera uppdateringar" + +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" +msgstr "Varje kvart" + +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" +msgstr "Varje halvtimma" + +#: backend.php:86 +#: backend.php:96 +msgid "Hourly" +msgstr "Varje timma" + +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" +msgstr "Var 4:e timme" + +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" +msgstr "Var 12:e timme" + +#: backend.php:89 +#: backend.php:99 +msgid "Daily" +msgstr "Dagligen" + +#: backend.php:90 +#: backend.php:100 +msgid "Weekly" +msgstr "Veckovis" + +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 +msgid "User" +msgstr "Användare" + +#: backend.php:104 +msgid "Power User" +msgstr "Superanvändare" + +#: backend.php:105 +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." + +#: 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." + +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "Sanitetskontroll för \"backend\" misslyckades." + +#: errors.php:17 +msgid "Frontend sanity check failed." +msgstr "Sanitetskontroll för \"frontend\" misslyckades." + +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "Felaktig version för databasshema. <a href='db-updater.php'>Vänligen uppdatera</a>." + +#: errors.php:21 +msgid "Request not authorized." +msgstr "FörfrÃ¥gan ej tillÃ¥ten." + +#: errors.php:23 +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" + +#: errors.php:27 +msgid "Denied. Your access level is insufficient to access this page." +msgstr "Nekad. Din behörighetsnivÃ¥ är för lÃ¥g för att ladda denna sida." + +#: errors.php:29 +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." + +#: 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" + +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "Kunde inte hitta flöde." + +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "Hittade inte användaren" + +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "Laddar, vänta..." + +#: index.php:167 +msgid "Collapse feedlist" +msgstr "Visa/dölj flödeslista" + +#: index.php:170 +msgid "Show articles" +msgstr "Visa artiklarna" + +#: index.php:173 +msgid "Adaptive" +msgstr "Adaptivt" + +#: index.php:174 +msgid "All Articles" +msgstr "Alla artiklar" + +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "Stjärnmärkta" + +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "Publicerade" + +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 +msgid "Unread" +msgstr "Olästa" + +#: index.php:178 +msgid "With Note" +msgstr "Med notering" + +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Ignorera poängsättningen" + +#: index.php:182 +msgid "Sort articles" +msgstr "Sortera artiklar" + +#: index.php:185 +msgid "Default" +msgstr "Standard" + +#: index.php:186 +msgid "Newest first" +msgstr "Nyast först" + +#: index.php:187 +msgid "Oldest first" +msgstr "Äldst först" + +#: index.php:188 +msgid "Title" +msgstr "Titel" + +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 +msgid "Mark as read" +msgstr "Markera som läst" + +#: index.php:195 +msgid "Older than one day" +msgstr "Äldre än en dag" + +#: index.php:198 +msgid "Older than one week" +msgstr "Äldre än en vecka" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "Äldre än tvÃ¥ veckor" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "Kommunikationsproblem med servern." + +#: index.php:223 +msgid "Actions..." +msgstr "Ã…tgärder..." + +#: index.php:225 +msgid "Preferences..." +msgstr "Inställningar..." + +#: index.php:226 +msgid "Search..." +msgstr "Sök..." + +#: index.php:227 +msgid "Feed actions:" +msgstr "FlödesÃ¥tgärder:" + +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "Prenumerera pÃ¥ flöde..." + +#: index.php:229 +msgid "Edit this feed..." +msgstr "Redigera detta flöde..." + +#: index.php:230 +msgid "Rescore feed" +msgstr "Beräkna flödets poäng pÃ¥ nytt" + +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "Avsluta prenumeration" + +#: index.php:232 +msgid "All feeds:" +msgstr "Alla flöden:" + +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "Visa/dölj lästa flöden" + +#: index.php:235 +msgid "Other actions:" +msgstr "Andra aktiviteter:" + +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "Växla widescreenläge" + +#: index.php:237 +msgid "Create label..." +msgstr "Skapa etikett..." + +#: index.php:238 +msgid "Create filter..." +msgstr "Skapa filter..." + +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "Hjälp för kortkommandon..." + +#: index.php:248 +msgid "Logout" +msgstr "Logga ut" + +#: index.php:254 +msgid "Updates are available from Git." +msgstr "" + +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "Inställningar" + +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "Kortkommandon" + +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Lämna inställningarna" + +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Flöden" + +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "Filter" + +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Etiketter" + +#: prefs.php:133 +msgid "Users" +msgstr "Användare" + +#: prefs.php:136 +msgid "System" +msgstr "System" + +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "Skapa ett nytt konto" + +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "Nyregistrering av användare är inaktiverat." + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Ã…tergÃ¥ till Tiny Tiny RSS" + +#: register.php:218 +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:224 +msgid "Desired login:" +msgstr "Önskat användarnamn:" + +#: register.php:227 +msgid "Check availability" +msgstr "Kontrollera tillgänglighet" + +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "E-post:" + +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "Hur mycket är tvÃ¥ plus tvÃ¥?:" + +#: register.php:235 +msgid "Submit registration" +msgstr "Skicka registrering" + +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "Fll i samtliga uppgifter." + +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "Användarnamnet är tyvärr redan upptaget." + +#: register.php:287 +msgid "Registration failed." +msgstr "Registrering misslyckades." + +#: register.php:334 +msgid "Account created successfully." +msgstr "Konto skapat." + +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "Nyregistrering av användare är för närvarande avstängt." + +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "Skript för att uppdatera Tiny Tiny RSS." + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "Okategoriserat" + +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d arkiverad artikel" +msgstr[1] "%d arkiverade artiklar" + +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "Inga flöden funna." + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "Navigation" + +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "Öppna nästa flöde" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "Öppna föregÃ¥ende flöde" + +#: include/functions2.php:55 +msgid "Open next article" +msgstr "Öppna näst artikel" + +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "Öppna föregÃ¥ende artikel" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "Öppna nästa artikel (skrolla inte lÃ¥nga artiklar)" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "Öppna föregÃ¥ende artikel (skrolla inte lÃ¥nga artiklar)" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "GÃ¥ till nästa artikel (expandera inte eller markera som läst)" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "GÃ¥ till föregÃ¥ende artikel (expandera inte eller markera som läst)" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Visa sökdialogen" + +#: include/functions2.php:62 +msgid "Article" +msgstr "Artikel" + +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "Växla stjärnmarkering" + +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "Växla publicering" + +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "Växla olästa" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Redigera taggar" + +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "Avvisa markerade" + +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "Avvisa lästa" + +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "Öppna i nytt fönster" + +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "Märk nedanstÃ¥ende som lästa" + +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "Märk ovanstÃ¥ende som lästa" + +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "Skrolla ned" + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "Skrolla upp" + +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "Välj artikel under pekare" + +#: include/functions2.php:75 +msgid "Email article" +msgstr "Skicka artikel med e-post" + +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "Stäng/minimera artikel" + +#: include/functions2.php:77 +msgid "Toggle article expansion (combined mode)" +msgstr "Växla expanderat artikelläge (kombinerat läge)" + +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "Stäng av/sätt pÃ¥ inbäddade original" + +#: include/functions2.php:80 +msgid "Article selection" +msgstr "Artikelval" + +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "Välj alla artiklar" + +#: include/functions2.php:82 +msgid "Select unread" +msgstr "Välj olästa" + +#: include/functions2.php:83 +msgid "Select starred" +msgstr "Välj markerade" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "Välj publicerade" + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "Invertera val" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "Avmarkera allt" + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Flöde" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "Uppdatera aktuellt flöde" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "Visa/dölj lästa flöden" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "Prenumerera pÃ¥ flöde" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Redigera flöde" + +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "Omvänd sortering pÃ¥ rubrik" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "Felsök flödesuppdatering" + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "Märk alla flöden som lästa" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "Öppna/stäng aktuell kategori:" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "Växla komboläge" + +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "Aktivera automatisk expandering i kombinerat läge" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "GÃ¥ till" + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "Alla artiklar" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "Nya" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Taggmoln" + +#: include/functions2.php:106 +msgid "Other" +msgstr "Övriga" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "Skapa etikett" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "Skapa filter" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "Visa/dölj sidofält" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "Visa hjälpfönster" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Sökresultat: %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +#, fuzzy +msgid "comment" +msgid_plural "comments" +msgstr[0] "Kommentarer?" +msgstr[1] "Kommentarer?" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +#, fuzzy +msgid "comments" +msgstr "Kommentarer?" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "Inga taggar" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "Redigera taggar för denna artikel" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "Ursprungligen frÃ¥n:" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "URL för flöde" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "Stäng fönstret" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(Redigera notering)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "Okänd typ" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "Bilagor" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "Special" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Alla flöden" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Stjärnmärkta artiklar" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Publicerade artiklar" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "Nya artiklar" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "Arkiverade artiklar" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "Nyligen lästa" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "Användarnamn:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "Lösenord:" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "Jag har glömt mitt lösenord" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "Profil:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "Standardprofil" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "Använd mindre datatrafik" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "Visar inte bilder i artiklar, reducerar automatiska omladdningar." + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "Kom ihÃ¥g mig" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "Logga in" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "Kunde inte verifiera session (fel IP)" + +#: include/sessions.php:67 +#, fuzzy +msgid "Session failed to validate (schema version changed)" +msgstr "Kunde inte verifiera session (fel IP)" + +#: include/sessions.php:85 +#, fuzzy +msgid "Session failed to validate (user not found)" +msgstr "Kunde inte verifiera session (fel IP)" + +#: include/sessions.php:94 +#, fuzzy +msgid "Session failed to validate (password changed)" +msgstr "Kunde inte verifiera session (fel IP)" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "Fler tips finns i wikin." + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Kortkommandon" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "Shift" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Hittade inte nÃ¥got hjälpavsnitt." + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "Dela med Tiny Tiny RSS" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "Titel:" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "InnehÃ¥ll:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "Etiketter:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "Delad artikel visas i 'Publicerade artiklar'." + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "Dela" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "Avbryt" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "Inte inloggad" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Felaktigt användarnamn eller lösenord" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "Du prenumererar redan pÃ¥ %s." + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "Prenumererar pÃ¥ %s." + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "Kunde inte prenumerera pÃ¥ %s." + +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "Hittade inga flöden i %s." + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "Hittade flera flödes-URLer." + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "Kunde inte prenumerera på %s
    Kan inte ladda ned URL " + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "Prenumerera på valt flöde" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Redigera prenumerationsinställningar" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "Återställning av lösenord" + +#: classes/handler/public.php:805 +#, fuzzy +msgid "You will need to provide valid account name and email. A password reset link will be sent to 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:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "Återställ lösenord" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "Vissa av dom obligatoriska formulärparametrarna saknas eller är inkorrekta." + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "Gå tillbaka" + +#: classes/handler/public.php:878 +#, fuzzy +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] Notifikation för ändring av lösenord" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "Beklagar, kombinationen av användarnamn och e-postadress kunde inte hittas." + +#: classes/handler/public.php:925 +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:951 +msgid "Database Updater" +msgstr "Databasuppdatering" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Utför uppdatering" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "Visa RSS-flöde" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "Visa som RSS" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "Senast uppdaterat: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "Alla" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Invertera" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Ingen" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "Mer..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Invertera val:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Markering:" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "Ange poäng" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "Arkiv" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "Gå tillbaka" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "Radera" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "Skicka med e-post" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Flöde:" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "Kunde inte hitta flöde." + +#: classes/feeds.php:268 +msgid "Never" +msgstr "Aldrig" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "Importerad kl. %s" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +#, fuzzy +msgid "mark feed as read" +msgstr "Flagga kanal som läst" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "Minimera artikel" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "Hittade inga olästa artiklar." + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "Hittade inga uppdaterade artiklar." + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "Hittade inga stjärnmarkerade artiklar." + +#: classes/feeds.php:778 +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:780 +msgid "No articles found to display." +msgstr "Hittade inga artiklar att visa." + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "Flöden senast uppdaterade %s" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "Vissa flöden har uppdateringsfel (klicka för detaljer)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "Inget flöde valt." + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "URL för flöde eller webbplats" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "Placera i kategori:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "Tillgängliga flöden" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "Autentisering" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "Användarnamn" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "Lösenord" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Detta flöde kräver autentisering." + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "Prenumerera" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "Fler flöden" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "Sök" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "Populära flöden" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "Flödesarkiv" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "gräns:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "Ta bort" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "Sök efter" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +#, fuzzy +msgid "Search syntax" +msgstr "Sök" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "Hittar inte artikel." + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "Taggar för denna artikel (kommaseparerade):" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Spara" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "OPML-verktyg" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "Importera OPML..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "Återgå till inställningar" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "Lägger till flöde: %s" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "Dublett av flöde: %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "Lägger till etikett %s" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "Etikettsdubblett: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "Sätter %s till %s" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "Lägger till filter..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "Bearbetar kategori: %s" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "Uppladdningen misslyckades med felkod %d" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "Fel: kunde inte flytta uppladdad fil." + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "Fel: vänligen ladda upp en OPMLfil." + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "Fel: kunde inte hitta flyttad OPML-fil." + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Fel vid tolkning av dokument." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: 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" + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "Fellogg" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "Uppdatera" + +#: classes/pref/system.php:43 +#, fuzzy +msgid "Clear log" +msgstr "Rensa färger" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Fel" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "Filnamn" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Meddelande" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Datum" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Hittade inte användaren" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "Registrerad" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Senast inloggad" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "Antal flödesprenumerationer" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Prenumererade flöden" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "Behörighetsnivå: " + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Alternativ" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "Lade till användare %s med lösenord %s" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "Kunde inte skapa användare %s" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "Användaren %s finns redan." + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "Lösenord för användare %s ändrat till %s" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "Nytt lösenord för användare %s skickat till %s" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] Notifikation för ändring av lösenord" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "Markera" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Skapa användare" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "Detaljer" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Redigera" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "Behörighetsnivå" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "Senaste inloggning" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Klicka för att redigera" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "Inga användare definierade." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "Hittade inga matchande användare." + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Markera för att aktivera" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, fuzzy, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "(%d kanaler)" +msgstr[1] "(%d kanaler)" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "Flödestitel" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "Uppdatera" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Artikelrensning:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "Tips: du måste ange din inloggningsuppgifter om ditt flöde kräver autentisering, dock ej för Twitter-flöden." + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "Dölj från populära flöden" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "Inkludera i e-postsammanfattning" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Visa alltid bilder" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "Bädda inte in bilder" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Cacha bilder lokalt" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "Makera uppdaterade artiklar som olästa" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "Ikon" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "Ersätt" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "Återprenumerera på push-uppdateringar:" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "Återställ PubSubHubbub-prenumerationer för push-uppdaterade feeds." + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Klart." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "Flöden med fel" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "Inaktiva flöden" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "Redigera valda flöden" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "Återställ sorteringsordning" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "Massprenumerera" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "Kategorier" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "Lägg till kategori" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "Ta bort markerade" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "Fler åtgärder..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "Manuell rensning" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "Rensa flödesdata" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Poängsätt på nytt" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +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:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "Endast huvudprofilens inställningar kan migreras med OPML." + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "Importera OPML" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "Filnamn:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "Inkludera inställningar" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "Exportera OPML" + +#: classes/pref/feeds.php:1433 +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:1435 +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:1437 +msgid "Public OPML URL" +msgstr "Publik OPML-URL" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "Visa publicerad OPML-URL" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Firefox-integration" + +#: classes/pref/feeds.php:1449 +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:1456 +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:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "Publicerade och delade artiklar / Genererade flöden" + +#: classes/pref/feeds.php:1466 +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:1474 +msgid "Display URL" +msgstr "Visa URL" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "Rensa alla genererade URLer" + +#: classes/pref/feeds.php:1555 +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:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "Klicka för att redigera flöde" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "Ta bort prenumeration för valda flöden" + +#: classes/pref/feeds.php:1778 +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:1787 +msgid "Feeds to subscribe, One per line" +msgstr "Flöden att prenumerera på, ett per rad" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "Flödet kräver inloggning." + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "Artiklar som matchar detta filter: " + +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "Inga nya artiklar som matchar detta filter funna." + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(invertera)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "%s på %s i %s %s" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Titel" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "Matcha" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "Lägg till" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "Tillämpa åtgärder" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Aktiverat" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "Matcha alla regler" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "Invertera matchning" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "Test" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "Kombinera" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Skapa" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "Invertera matchning av regulära uttryck" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "i fält" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "i" + +#: classes/pref/filters.php:947 +#, fuzzy +msgid "Wiki: Filters" +msgstr "Filter" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "Spara regel" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "Tillämpa regel" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Utför aktivitet" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "med parametrar:" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "Spara aktivitet" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "Lägg till aktivitet" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[Inge titel]" + +#: classes/pref/filters.php:1044 +#, fuzzy, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "Tillämpa regel" +msgstr[1] "Tillämpa regel" + +#: classes/pref/filters.php:1059 +#, fuzzy, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "Lägg till aktivitet" +msgstr[1] "Lägg till aktivitet" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "Färger" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "Förgrund:" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "Bakgrund:" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "Skapade etikett %s" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Rensa färger" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Generellt" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Visning" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Avancerat" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "Sammanställning" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "Tillåt dubbletter av artiklar" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Svartlistade taggar" + +#: classes/pref/prefs.php:26 +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:27 +msgid "Automatically mark articles as read" +msgstr "Märk artiklar som lästa automatiskt" + +#: classes/pref/prefs.php:27 +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:28 +msgid "Automatically expand articles in combined mode" +msgstr "Expandera artiklar automatiskt i kombinerat läge" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "Kombinerad flödesvisning" + +#: classes/pref/prefs.php:29 +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:30 +msgid "Confirm marking feed as read" +msgstr "Bekräfta markera flöde som läst" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "Antal artiklar att visa samtidigt" + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "Standardintervall för flödesuppdatering" + +#: classes/pref/prefs.php:32 +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:33 +msgid "Mark articles in e-mail digest as read" +msgstr "Flagga artiklar i e-postsammanfattning som lästa" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "Aktivera e-postsammanfattning" + +#: classes/pref/prefs.php:34 +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:35 +msgid "Try to send digests around specified time" +msgstr "Skicka sammanfattningar runt specificerad tid" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "Använder tidszonen UTC" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "Aktivera tillgång till API" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "Tillåter externa klienter att få tillgång till detta konto via API" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Aktivera kategorier" + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "Sortera flöde efter antal olästa artiklar" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Maximal ålder för nya artiklar (i timmar)" + +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "Dölj flöden utan olästa artiklar" + +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "Visa specialflöden när lästa feeds är dolda" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "Långa datum" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "" + +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "Visa nästa flöde när vi är ikapp" + +#: classes/pref/prefs.php:43 +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:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Rensa artikel efter X antal dagar (0 - inaktiverar)" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "Rensa olästa artiklar" + +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "Omvänd sortering (äldsta överst)" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "Korta datum" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "Förhandsgranska text i rubriklistan" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "Sortera rubriker efter flödets datum" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "Sortera efter flödesdatum istället för efter importdatum" + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "Logga in med SSL-certifikat" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Registerar ditt SSL-klientcertifikat i tt-rss" + +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "Bädda inte in bilder i artiklar" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "Ta bort osäkra taggar från artiklar" + +#: classes/pref/prefs.php:52 +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:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "Anpassa stilmall" + +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "Anpassa CSS-stilmall efter eget tycke" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "Tidszon" + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "Gruppera rubriker i virtuella flöden" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "Speciella flöden, etiketter och kategorier är grupperade efter ursprungsflöden" + +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "Språk" + +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "Tema" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "Välj ett av dom tillgängliga CSS-temana" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "Konfiguration sparad." + +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "Dina personliga data sparas." + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "Dina inställningar är nu satta till standardvärdena." + +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "Personlig information / Autentisering" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "Personlig information" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "Fullständigt namn" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "E-post" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "Behörighetsnivå" + +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Spara" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "Byt lösenord." + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "Att ändra nuvarande lösenord kommer att inaktivera OTP." + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Gammalt lösenord" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Nytt lösenord" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Bekräfta lösenord" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "Byt lösenord" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "(OTP) / Autentifikator" + +#: classes/pref/prefs.php:322 +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:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "Ange lösenord" + +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "Stäng av OTP" + +#: classes/pref/prefs.php:364 +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:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "Läs in följande QR-kod med autentifikator-applikationen:" + +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "Ange det genererade engångslösenordet" + +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "Aktivera OTP" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "PHPs GD-funktioner krävs för OTP stöd." + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "Vissa inställningar är endast tillgängliga i standardprofilen." + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "Anpassa" + +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "Registrera" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "Rensa" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "Aktuell servertid: %s (UTC)" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Spara konfiguration" + +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "Spara och lämna inställningarna" + +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "Hantera profiler" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "Återställ till standard" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "Tillägg" + +#: classes/pref/prefs.php:706 +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:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "Ladda ner fler tillägg via tt-rss.org forum eller wiki." + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "Systemtillägg" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "Tillägg" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "Beskrivning" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "Version" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "Skapare" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "mer info" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "Rensa data" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "Användartillägg" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "Aktivera valda tillägg" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "Felaktigt engångslösenord" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "Felaktigt lösenord" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file 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. Denna fil kan användas som grund." + +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "Skapa profil" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(aktiva)" + +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "Radera markerade profiler" + +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "Aktivera profil" + +#: classes/dlg.php:17 +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:183 +#: plugins/share/init.php:120 +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." + +#: 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." + +#: classes/dlg.php:174 +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:" + +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" + +#: plugins/af_psql_trgm/init.php:112 +#, fuzzy +msgid "Show related articles" +msgstr "Stjärnmärkta artiklar" + +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +#, fuzzy +msgid "Mark similar articles as read" +msgstr "Flagga alla artiklar som lästa?" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +#, fuzzy +msgid "Global settings" +msgstr "Inkludera inställningar" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "Aktivera kategorier" + +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" + +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" + +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "" + +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "" + +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "Redigera artikelnotering" + +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "Ingen fil uppladdad." + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "Allt klart. %d av %d artiklar importerade." + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "Dokumentet har ett felaktigt format." + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "Importera stjärnmärkta eller delade objekt från Google Reader" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "Kopiera in din starred.json eller shared.json i fältet nedan." + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "Importera mina stjärnmärkta objekt" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[Vidarebefordrat]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "Flera artiklar" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "Klicka på följande länk för att skicka till ditt e-postprogram:" + +#: plugins/mailto/init.php:75 +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." +msgstr "Du bör kunna redigera ditt meddelande innan det skickas" + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "Stäng denna dialogruta" + +#: 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." + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "Exportera min data" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "Importera" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "Kunde inte importera: inkorrekt version av databasschema" + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "Kunde inte importera: okänt filformat" + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "Klart:" + +#: plugins/import_export/init.php:388 +#, 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:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "%d importerat, " +msgstr[1] "%d importerade, " + +#: plugins/import_export/init.php:390 +#, 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:395 +msgid "Could not load XML document." +msgstr "Kunde inte ladda XML-filen." + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "Förbered data" + +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "NSFW (klicka för att växla)" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "NSFW Plugin" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "Lista NSFW-taggar (kommaseparerade)" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "Inställningar sparade." + +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "Ange ditt engångslösenord:" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "Lösenord uppdaterat." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "Felaktigt gammalt lösenord." + +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "Stäng artikel" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "" + +#: plugins/mail/init.php:34 +#, fuzzy +msgid "Mail plugin" +msgstr "Användartillägg" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "" + +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "Till:" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "Ämne:" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "Skicka e-post" + +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "Länkad" + +#: 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:404 +msgid "Instance URL" +msgstr "Instans-URL" + +#: 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:417 +msgid "Access key" +msgstr "Accessnyckel" + +#: 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 +msgid "Generate new key" +msgstr "Skapa en ny nyckel" + +#: plugins/instances/init.php:292 +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:" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "Senast ansluten" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "Status" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "Sparade flöden" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "Skapa länk" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "Inställningar sparade." + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "Kontrollera tillgänglighet" + +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "Skrolla artikelinnehåll" + +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +#, fuzzy +msgid "Shared articles" +msgstr "Stjärnmärkta artiklar" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +#, fuzzy +msgid "Statistics" +msgstr "Status" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "Stjärnmärkta artiklar" + +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "Rensa data" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, fuzzy, php-format +msgid "Currently stored as: %s" +msgstr "Aktuell servertid: %s (UTC)" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +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." + +#: 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 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Prenumerera i Tiny Tiny RSS" + +#: plugins/bookmarklets/init.php:34 +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" + +#: plugins/share/init.php:39 +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." + +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "Ta bort delning av alla artiklar" + +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "Dela via URL" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "Du kan dela denna artikel genom följande unika URL:" + +#: plugins/share/init.php:117 +#, fuzzy +msgid "Unshare article" +msgstr "Ta bort stjärnmarkering från artikeln" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "Felet kommer att skrivas ut i konfigurerad loggfil." + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "" + +#: js/functions.js:93 +#, fuzzy +msgid "Close" +msgstr "stäng" + +#: js/functions.js:104 +#, fuzzy +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will 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:224 +msgid "Click to close" +msgstr "Klicka för att stänga" + +#: js/functions.js:1051 +msgid "Edit action" +msgstr "Redigera åtgärd" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "Skapa filter" + +#: js/functions.js:1218 +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:1229 +msgid "Subscription reset." +msgstr "Prenumeration återställd." + +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "Säg upp prenumeration på %s?" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "Tar bort flöde..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "Ange kategorititel:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "Generera en ny syndikeringsadress för detta flöde?" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Försöker ändra adress..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "Inget flöde valt." + +#: js/functions.js:1727 +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:1766 +msgid "Feeds with update errors" +msgstr "Flöden med uppdateringsfel" + +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "Ta bort markerade flöden?" + +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "Tar bort valda flöden..." + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "Redigera kategori" + +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "Ta bort kategori" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "Invertera" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "Ange inloggning:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "Kan inte skapa användare, ingen inloggning angiven." + +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "Lägger till användare..." + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Användareditor" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "Sparar data..." + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "Redigera filter" + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "Radera filter?" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "Tar bort filter..." + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "Radera markerade etiketter?" + +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "Tar bort valda etiketter..." + +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "Inga etiketter valda." + +#: js/prefs.js:326 +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:329 +msgid "Removing selected users..." +msgstr "Tar bort valda användare..." + +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "Ingen användare vald." + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "Radera markerade filter?" + +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "Tar bort valda filter..." + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "Inga filter valda." + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "Avsluta prenumeration på markerade flöden?" + +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "Tar bort prenumeration för valda flöden..." + +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "Välj endast ett flöde." + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "Radera alla artiklar som inte är stjärnmärkta i valt flöde?" + +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "Rensar valda flöden..." + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "Hur många dagars artiklar ska sparas (0 - använda default)?" + +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "Rensar ut valda flöden..." + +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "Markera endast en användare." + +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "Återställ lösenordet för markerad användare?" + +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "Återställer lösenord för vald användare..." + +#: js/prefs.js:565 +msgid "User details" +msgstr "Användardetaljer" + +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "Markera endast ett filter." + +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "Slå ihop markerade filter?" + +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "Slår ihop filter..." + +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "Redigera flera flöden" + +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "Spara ändringar för valda flöden?" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "OPML-import" + +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "Välj en OPML-fil först." + +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "Importerar, vänligen vänta..." + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "Återställ till standardvärden?" + +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "Prenumererar på flöden..." + +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "Radera lagrad data för detta tillägg?" + +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "" + +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "Flagga alla artiklar som lästa?" + +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "Markerar alla flöden som lästa..." + +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "Aktivera e-post-tillägget först." + +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "Detta typ av flöde kan inte redigeras." + +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "Vänligen aktivera tillägget embed_original först." + +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "" + +#: js/tt-rss.js:830 +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:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "Välj några flöden först." + +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "Beräkna om poängen för artiklarna i %s?" + +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "Räknar om artikelpoäng..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "Inga artiklar valda." + +#: js/viewfeed.js:1018 +#, perl-format +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:1020 +#, perl-format +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:1062 +#, perl-format +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:1065 +#, perl-format +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:1067 +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:1112 +#, perl-format +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:1136 +msgid "Edit article Tags" +msgstr "Redigera artikeltaggar" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "Sparar artikeltaggar..." + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +#, fuzzy +msgid "Click to open next unread feed." +msgstr "Klicka för att redigera flöde" + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "Öppna orginalartikeln" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Ange etikett" + +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "Ta bort etikett" + +#: js/viewfeed.js:2159 +#, fuzzy +msgid "Select articles in group" +msgstr "Välj artikel under pekare" + +#: js/viewfeed.js:2168 +#, fuzzy +msgid "Mark group as read" +msgstr "Markera som läst" + +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "Flagga kanal som läst" + +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "Ange ny poäng för markerade artiklar:" + +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "Ange ny poäng för denna artikel:" + +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "URL för artikel:" + +#: 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/af_psql_trgm/init.js:11 +#, fuzzy +msgid "Related articles" +msgstr "Radera artikel" + +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "Sparar artikelnotering..." + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Google Reader-import" + +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "Vänligen välj en fil först." + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "Vidarebefordra artikel via e-post" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "Exportera data" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "Klart, %d artikel exporterades. Du kan ladda ner datan här." +msgstr[1] "Klart, %d artiklar exporterades. Du kan ladda ner datan här." + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Importera data" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "Välj fil först." + +#: plugins/shorten_expanded/init.js:37 +#, fuzzy +msgid "Click to expand article" +msgstr "Klicka för att expandera artikeln." + +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" + +#: plugins/mail/mail.js:38 +#, fuzzy +msgid "Your message has been sent." +msgstr "Dina personliga data sparas." + +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "Länka instanser" + +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "Redigera instanser" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "Ta bort markerade instanser?" + +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "Tar bort markerade instanser..." + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "Inga instanser valda." + +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "Välj enbart en instans." + +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "Rensa flödesdata" + +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "" + +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "Dela artikel via URL" + +#: plugins/share/share.js:14 +#, fuzzy +msgid "Generate new share URL for this article?" +msgstr "Ange ny poäng för denna artikel:" + +#: plugins/share/share.js:18 +#, fuzzy +msgid "Trying to change URL..." +msgstr "Försöker ändra adress..." + +#: plugins/share/share.js:55 +#, fuzzy +msgid "Remove sharing for this article?" +msgstr "Redigera taggar för denna artikel" + +#: plugins/share/share.js:59 +#, fuzzy +msgid "Trying to unshare..." +msgstr "Försöker ändra adress..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "Detta tar bort alla tidigare delade artikel-URLer. Fortsätt?" + +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "Rensar URLer..." + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "Delade URLer rensade." + +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "Märk alla artiklar i %s som lästa?" + +#: js/feedlist.js:435 +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:438 +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:441 +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:615 +msgid "Error explained" +msgstr "Fel förklarat" + +#: js/functions.js:697 +msgid "Upload complete." +msgstr "Uppladdning klar." + +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "Ta bort sparad ikon för flöden?" + +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "Tar bort flödesikon..." + +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "Flödesikon borttagen." + +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "Välj en bild att ladda upp." + +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "Ladda upp ny ikon för detta flöde?" + +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "Laddar upp, vänligen vänta..." + +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "Ange titel för etikett:" + +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "Kan inte skapa etikett: titel saknas" + +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "Prenumerera på flöde" + +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "" + +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "Prenumererar på %s" + +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "Den angivna URLen verkar vara felaktig." + +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "Den angivna URLen verkar inte innehålla något flöde." + +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "Expandera för att välja flöde" + +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "Kunde inte ladda ned följande URL: %s" + +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "Validering av XML misslyckades: %s" + +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "Du prenumererar redan på detta flöde." + +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "Redigera regel" + +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "Redigera flöde" + +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "Fler flöden" + +#: js/functions.js:1878 +msgid "Help" +msgstr "Hjälp" + +#: js/prefs.js:1083 +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:1089 +msgid "Removing category..." +msgstr "Tar bort kategori..." + +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "Radera markekrade kategorier?" + +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "Raderar valda kategorier..." + +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "Inga kategorier valda." + +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "Kategorinamn:" + +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "Skapar kategori..." + +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "Flöden som inte uppdaterats på länge" + +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "Byt nuvarande OPML-adress med en ny?" + +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "Rensar flöde..." + +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "Beräkna värde på artiklarna i vald flöden på nytt?" + +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "Räknar om poäng för valda flöden..." + +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "Beräkna nya värden på alla artiklar? Detta kan ta mycket lång tid." + +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "Räknar om flödets poäng..." + +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "Återställ valda etiketter till standardfärger?" + +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "Inställningsprofiler" + +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "Radera markerade profiler? Aktiva profiler tas inte bort." + +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "Raderar valda profiler...." + +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "Inga profiler valda." + +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "Aktivera markerad profil?" + +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "Välj en profil att aktivera." + +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "Skapar profil..." + +#: js/prefs.js:1515 +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:1525 +msgid "Generated URLs cleared." +msgstr "Genererade URLer rensade." + +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Etikettseditor" + +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "Du kan inte säga upp prenumeration på kategorin." + +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "Avbryt sökning" + +#: js/viewfeed.js:174 +#, fuzzy +msgid "New articles found, reload feed to continue." +msgstr "Hittade inga artiklar att visa." + +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Ta bort stjärnmarkering från artikeln" + +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "Stjärnmärk artikel" + +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "Avpublicera artikeln" + +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Publicera artikel" + +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "%d artikel vald" +msgstr[1] "%d artiklar valda" + +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "Ingen artikel vald." + +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "Hittade inga artiklar att flagga" + +#: js/viewfeed.js:1452 +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:1967 +msgid "Display article URL" +msgstr "Visa artikel-URL" + +#~ msgid "Select by tags..." +#~ msgstr "Välj efter taggar..." + +#~ msgid "Limit search to:" +#~ msgstr "Begränsa sökning till:" + +#~ msgid "This feed" +#~ msgstr "Detta flöde" + +#~ 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" + +#~ msgid "Old password cannot be blank." +#~ msgstr "Föregående lösenord kan inte vara tomt." + +#~ msgid "New password cannot be blank." +#~ msgstr "Nytt lösenord får inte vara tomt." + +#~ msgid "Entered passwords do not match." +#~ msgstr "Lösenorden stämmer inte överens." + +#~ msgid "Function not supported by authentication module." +#~ msgstr "Funktionen stöds inte av autenticeringsmodulen." + +#~ msgid "Match:" +#~ msgstr "Sök: " + +#~ msgid "Any" +#~ msgstr "Alla" + +#~ msgid "All tags." +#~ msgstr "Alla taggar." + +#~ msgid "Which Tags?" +#~ msgstr "Vilka taggar?" + +#~ msgid "Display entries" +#~ msgstr "Visa poster" + +#~ msgid "Select item(s) by tags" +#~ msgstr "Välj artiklar baserat på taggar" + +#~ msgid "Unread First" +#~ msgstr "Olästa först" + +#~ msgid "Unknown option: %s" +#~ msgstr "Okänt alternativ: %s" + +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "Ny version av Tiny Tiny RSS finns att ladda ner!" + +#, fuzzy +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "Kunde inte verifiera session (fel IP)" + +#~ msgid "Assign articles to labels automatically" +#~ msgstr "Ange etiketter för artiklar automatiskt" + +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "Ny version av Tiny Tiny RSS tillgänglig(%s)." + +#~ 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 "See the release notes" +#~ msgstr "Se releasenoteringar" + +#~ msgid "Download" +#~ msgstr "Ladda ned" + +#~ msgid "Error receiving version information or no new version available." +#~ msgstr "Fel i versionsinformation eller ingen ny version" + +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Uppdatera Tiny Tiny RSS" + +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "Din Tiny Tiny RSS är uppdaterad till senaste version." + +#, fuzzy +#~ msgid "Force update" +#~ msgstr "Utför uppdatering" + +#~ msgid "Do not close this dialog until updating is finished." +#~ msgstr "Stäng inte denna dialog förrän uppdatering är klar." + +#~ msgid "It is suggested to backup your tt-rss directory first." +#~ msgstr "Det är rekommenderat att ta backup av din tt-rss-katalog först." + +#~ msgid "Your database will not be modified." +#~ msgstr "Din databas kommer inte att modifieras." + +#~ 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." + +#~ msgid "Ready to update." +#~ msgstr "Redo att uppdatera." + +#~ msgid "Start update" +#~ msgstr "Starta uppdateringen" + +#~ 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 "New version available!" +#~ msgstr "Ny version tillgänglig!" + +#~ msgid "LibXML error %s at line %d (column %d): %s" +#~ msgstr "LibXML-fel %s på rad %d (kolumn %d): %s" + +#~ msgid "From:" +#~ msgstr "Från:" + +#~ msgid "Select:" +#~ msgstr "Markera:" + +#~ msgid "mark as read" +#~ msgstr "markera som läst" + +#~ msgid "Change password to" +#~ msgstr "Nytt lösenord" + +#~ msgid "E-mail: " +#~ msgstr "E-post: " + +#~ 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 "Example Pane" +#~ msgstr "Exempelpanel" + +#~ msgid "Sample value" +#~ msgstr "Exempelvärde" + +#~ msgid "Set value" +#~ msgstr "Ange värde" + +#~ msgid "Login field cannot be blank." +#~ msgstr "Användarnamnet kan inte vara tomt." + +#~ msgid "Saving user..." +#~ msgstr "Sparar användare..." + +#~ msgid "Toggle marked" +#~ msgstr "Växla markerade" + +#~ 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 "%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 "Could not update database" +#~ msgstr "Kunde inte uppdatera databasen" + +#~ msgid "Could not find necessary schema file, need version:" +#~ msgstr "Kunde inte hitta rätt schemafil, behöver version:" + +#~ msgid ", found: " +#~ msgstr ", hittade: " + +#~ msgid "Tiny Tiny RSS database is up to date." +#~ msgstr "Tiny Tiny RSS databas är uppdaterad." + +#~ 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 (%d to %d)." +#~ msgstr "Din Tiny Tiny RSS-databas behöver uppdateras till den senaste versionen (%d till %d)." + +#~ msgid "Performing updates..." +#~ msgstr "Uppdatering pågår..." + +#~ msgid "Updating to version %d..." +#~ msgstr "Uppdaterar till version %d..." + +#~ msgid "Checking version... " +#~ msgstr "Kontrollerar version..." + +#~ msgid "OK!" +#~ msgstr "OK!" + +#~ msgid "ERROR!" +#~ msgstr "FEL!" + +#~ msgid "Finished. Performed %d update up to schema version %d." +#~ msgid_plural "Finished. Performed %d updates up to schema version %d." +#~ msgstr[0] "Klart. Genomförde %d uppdatering upp till schemaversion %d." +#~ msgstr[1] "Klart. Genomförde %d uppdateringar upp till schemaversion %d." + +#~ 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." + +#~ msgid "Found schema version: %d, required: %d." +#~ msgstr "Fann schemaversion: %d, behöver version: %d." + +#~ 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..." + +#~ msgid "Show tag cloud..." +#~ msgstr "Visa taggmoln..." + +#~ msgid "Click to play" +#~ msgstr "Klicka för att starta" + +#~ msgid "Play" +#~ msgstr "Start" + +#~ msgid "Visit the website" +#~ msgstr "Besök den officiella webbsiten" + +#~ msgid "Default interval between feed updates" +#~ msgstr "Standardintervall mellan flödesuppdateringar" + +#~ msgid "User timezone" +#~ msgstr "Tidszon" + +#~ msgid "Select theme" +#~ msgstr "Välj tema" + +#~ msgid "I have scanned the code and would like to enable OTP" +#~ msgstr "Jag har läst av bilden och vill aktivera OTP" + +#~ 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 "Playing..." +#~ msgstr "Spelar..." + +#~ msgid "Click to pause" +#~ msgstr "Klicka för att pausa" + +#~ msgid "Updated" +#~ msgstr "Uppdaterade" + +#~ msgid "Score" +#~ msgstr "Poäng" + +#~ msgid "Related" +#~ msgstr "Relaterade" + +#~ msgid "Title or Content" +#~ msgstr "Titel eller innehåll" + +#~ msgid "Link" +#~ msgstr "Länk" + +#~ msgid "Content" +#~ msgstr "Innehåll" + +#~ msgid "Article Date" +#~ msgstr "Artikeldatum" + +#~ msgid "Set starred" +#~ msgstr "Stjärnmarkera" + +#~ msgid "Assign tags" +#~ msgstr "Tagga" + +#~ 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" +#~ msgstr "Gruppera rubriker efter kanaler i Etiketter och Specialkanaler" + +#~ msgid "Enable external API" +#~ msgstr "Aktivera externt API" + +#~ msgid "Notice" +#~ msgstr "Notering" + +#~ msgid "Tag Cloud" +#~ msgstr "Tagmoln" + +#~ msgid "Notifying %s." +#~ msgstr "Informerar %s." + +#~ msgid "Show additional preferences" +#~ msgstr "Visa ytterligare inställningar" + +#~ msgid "Enable the options you wish to apply using checkboxes on the right:" +#~ msgstr "Välj de alternativ du vill tillämpla med checkboxarna till höger:" + +#~ msgid "Pocket" +#~ msgstr "Pocket" + +#~ msgid "Back to feeds" +#~ msgstr "Åter till kanallistan" + +#~ msgid "Pinterest" +#~ msgstr "Pinterest" + +#~ msgid "Finished: %d articles processed, %d imported, %d feeds created." +#~ msgstr "Klar: %d artiklar bearbetade, %d importerade, %d kanaler skapade." + +#~ msgid "Share on identi.ca" +#~ msgstr "Dela på identi.ca" + +#~ msgid "Owncloud" +#~ msgstr "Owncloud" + +#~ msgid "Owncloud url" +#~ msgstr "Owncloud URL" + +#~ msgid "Bookmark on OwnCloud " +#~ msgstr "Bokmärk på OwnCloud" + +#~ msgid "Flattr this article." +#~ msgstr "Dela på flattrn." + +#~ msgid "Share on Google+" +#~ msgstr "Dela på Google+" + +#~ msgid "Share on Twitter" +#~ msgstr "Dela på Twitter" + +#~ msgid "New articles available in this feed (click to show)" +#~ msgstr "Ny artikel i denna kanal (klicka för att visa)" + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Datumsyntaxen verkar vara korrekt:" + +#~ 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 "Mark all visible articles in %s as read?" +#~ msgstr "Flagga alla artiklar i %s som lästa?" + +#~ msgid "Yes" +#~ msgstr "Ja" + +#~ msgid "No" +#~ msgstr "Nej" + +#~ msgid "News" +#~ msgstr "Nyheter" + +#~ msgid "Move between feeds" +#~ msgstr "Flytta mellan kanaler" + +#~ msgid "Move between articles" +#~ msgstr "Flytta mellan artiklar" + +#~ msgid "Active article actions" +#~ msgstr "Aktivera artikelaktiviteter" + +#~ msgid "Mark articles below/above active one as read" +#~ msgstr "Flagga artiklar nedanför/ovanför den aktiva som lästa" + +#~ msgid "Other actions" +#~ msgstr "Andra aktiviteter" + +#~ msgid "Display this help dialog" +#~ msgstr "Visa denna hjälpruta" + +#~ msgid "Multiple articles actions" +#~ msgstr "Fler artikelalternativ" + +#, fuzzy +#~ msgid "Select unread articles" +#~ msgstr "Markera olästa artiklar" + +#~ msgid "Select starred articles" +#~ msgstr "Markera stjärmärkta artiklar" + +#, fuzzy +#~ msgid "Select published articles" +#~ msgstr "Markera publicerade artiklar" + +#, fuzzy +#~ msgid "Deselect all articles" +#~ msgstr "Avmarkera alla artiklar" + +#~ msgid "Feed actions" +#~ msgstr "Kanalalternativ" + +#~ msgid "If viewing category, (un)collapse it" +#~ msgstr "Öppna/stäng visad kategori" + +#~ msgid "Press any key to close this window." +#~ msgstr "Tryck valfri tangent för att stänga detta fönster." + +#~ msgid "My Feeds" +#~ msgstr "Mina kanaler" + +#, fuzzy +#~ msgid "Other Feeds" +#~ msgstr "Andra kanaler" + +#~ msgid "Panel actions" +#~ msgstr "Panelalternativ" + +#~ msgid "Top 25 feeds" +#~ msgstr "Topp 25 kanaler" + +#~ msgid "Edit feed categories" +#~ msgstr "Redigera kanalkategorier" + +#~ msgid "Focus search (if present)" +#~ msgstr "Fokusera sökning (om vald)" + +#~ msgid "Note: not all actions may be available, depending on Tiny Tiny RSS configuration and your access level." +#~ msgstr "OBS: 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" + +#~ msgid "Right-to-left content" +#~ msgstr "Innehåll från höger till vänster" + +#~ msgid "Cache content locally" +#~ msgstr "Cachea innehåll lokalt" + +#~ msgid "Mark posts as updated on content change" +#~ msgstr "Flagga artiklar som uppdaterade när innehåll ändras" + +#~ msgid "Loading..." +#~ msgstr "Laddar..." + +#~ msgid "View in a tt-rss tab" +#~ msgstr "Visa i en tt-rss-flik" + +#~ msgid "Magpie" +#~ msgstr "Magpie" + +#~ msgid "SimplePie" +#~ msgstr "SimplePie" + +#~ msgid "using" +#~ msgstr "använder" + +#~ msgid "OAuth will be used automatically for Twitter feeds." +#~ msgstr "OAuth används automatiskt för Twitterkanaler" + +#~ msgid "match on" +#~ msgstr "sök på:" + +#~ msgid "Title or content" +#~ msgstr "Titel eller innehåll" + +#~ msgid "Your request could not be completed." +#~ msgstr "Kunde inte utföras." + +#~ msgid "Feed update has been scheduled." +#~ msgstr "Kanaluppdatering är schemalagd." + +#~ msgid "Category update has been scheduled." +#~ msgstr "Kategoriuppdatering är schemalagd." + +#~ msgid "Can't update this kind of feed." +#~ msgstr "Du kan inte uppdatera denna typ av kanal" + +#~ msgid "Original article" +#~ msgstr "Orignalartikel" + +#~ msgid "Update feed" +#~ msgstr "Alla kanaler uppdaterade" + +#~ msgid "With subcategories" +#~ msgstr "Med underkategorier" + +#~ msgid "Twitter OAuth" +#~ msgstr "Twitter OAuth" + +#~ msgid "
  • Adding category %s.
  • " +#~ msgstr "
  • Läggar till kategori %s.
  • " + +#~ msgid "Duplicate filter %s" +#~ msgstr "Filterdubblett %s" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Register with Twitter" +#~ 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." + +#~ msgid "Congratulations! You have successfully registered with Twitter." +#~ msgstr "Grattis! Du är nu registrerad med Twitter." + +#~ msgid "before" +#~ msgstr "före" + +#~ msgid "after" +#~ msgstr "efter" + +#~ msgid "Check it" +#~ msgstr "Testa" + +#~ msgid "Apply to category" +#~ msgstr "Tillämpa i kategori" + +#~ msgid "Category $%s already exists in the database." +#~ msgstr "Kategori $%s finns redan i databasen." + +#~ msgid "No feed categories defined." +#~ msgstr "Inga kanalkategorier definierade." + +#~ msgid "Hint: you can drag feeds and categories around." +#~ msgstr "Tips: Du kan dra runt kanaler och kategorier med musen." + +#~ msgid "Subscribing using bookmarklet" +#~ msgstr "Prenumerera via en bookmarklet" + +#~ 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 "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" + +#~ msgid "Clear stored credentials" +#~ msgstr "Radera lagrad inloggningsuppgifter" + +#~ msgid "Created filter %s" +#~ msgstr "Skapade filter %s" + +#~ msgid "Attachment:" +#~ msgstr "Bilaga:" + +#~ msgid "Subscribing to feed..." +#~ msgstr "Prenumererar pÃ¥ kanal..." + +#~ 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." diff --git a/locale/tr_TR/LC_MESSAGES/messages.mo b/locale/tr_TR/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000..586876a4d9 Binary files /dev/null and b/locale/tr_TR/LC_MESSAGES/messages.mo differ diff --git a/locale/tr_TR/LC_MESSAGES/messages.po b/locale/tr_TR/LC_MESSAGES/messages.po new file mode 100644 index 0000000000..0eda19dc05 --- /dev/null +++ b/locale/tr_TR/LC_MESSAGES/messages.po @@ -0,0 +1,3740 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Tiny Tiny RSS Turkish translation\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2013-12-08 20:20+0200\n" +"Last-Translator: akapar \n" +"Language-Team: TURKISH \n" +"Language: Turkish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.5.4\n" + +#: backend.php:73 +msgid "Use default" +msgstr "Öntanımlı olanı kullanın" + +#: backend.php:74 +msgid "Never purge" +msgstr "Asla temizleme" + +#: backend.php:75 +msgid "1 week old" +msgstr "1 haftalık" + +#: backend.php:76 +msgid "2 weeks old" +msgstr "2 haftalık" + +#: backend.php:77 +msgid "1 month old" +msgstr "1 aylık" + +#: backend.php:78 +msgid "2 months old" +msgstr "2 aylık" + +#: backend.php:79 +msgid "3 months old" +msgstr "3 aylık" + +#: backend.php:82 +msgid "Default interval" +msgstr "Öntanımlı aralık" + +#: backend.php:83 +#: backend.php:93 +msgid "Disable updates" +msgstr "Yenilemeleri kapatın" + +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" +msgstr "Her 15 dakikada bir" + +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" +msgstr "Her 30 dakikada bir" + +#: backend.php:86 +#: backend.php:96 +msgid "Hourly" +msgstr "Saatlik" + +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" +msgstr "Her 4 saatte bir" + +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" +msgstr "Her 12 saatte bir" + +#: backend.php:89 +#: backend.php:99 +msgid "Daily" +msgstr "Günde bir" + +#: backend.php:90 +#: backend.php:100 +msgid "Weekly" +msgstr "Haftada bir" + +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 +msgid "User" +msgstr "Kullanıcı" + +#: backend.php:104 +msgid "Power User" +msgstr "Yetkili kullanıcı" + +#: backend.php:105 +msgid "Administrator" +msgstr "Yönetici" + +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "Bu programın düzgün çalışması için XmlHttpRequest gereklidir. Tarayıcınız bunu desteklemiyor." + +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "Bu programın düzgün çalışması için tarayıcınızın çerezleri kabul etmesi gereklidir. " + +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "Arkaplanda yapılan denetleme baÅŸarısız oldu." + +#: errors.php:17 +msgid "Frontend sanity check failed." +msgstr "Önplanda yapılan denetleme baÅŸarısız oldu." + +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "DoÄŸru olmayan veritabanı ÅŸeması versiyonu. <a href='db-updater.php'> Lütfen ÅŸunu yeniyeleyin: </a>." + +#: errors.php:21 +msgid "Request not authorized." +msgstr "İstek onaylanmadı." + +#: errors.php:23 +msgid "No operation to perform." +msgstr "Yerine getirilecek operasyon yok." + +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "Özet akışı gösterilemedi: sorgu baÅŸarısız oldu. Lütfen özet akışı adresinizi ya da konfigürasyonunuzu kontrol edin." + +#: errors.php:27 +msgid "Denied. Your access level is insufficient to access this page." +msgstr "Yetkileriniz bu sayfayı görüntülemeye izin vermiyor." + +#: errors.php:29 +msgid "Configuration check failed" +msgstr "Yapılandırma kontrolü baÅŸarısız oldu" + +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "MySQL versiyonunuz ÅŸu an için desteklenmiyor. Daha fazla bilgi için internet sitemizi ziyaret edin." + +#: errors.php:35 +msgid "SQL escaping test failed, check your database and PHP configuration" +msgstr "SQL kaçış testi baÅŸarılı olmadı, lütfen veri tabanınızı ve PHP konfigürasyonunu kontrol edin" + +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "Özet akışı bulunamadı." + +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "Kullanıcı bulunamadı" + +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "Yükleniyor, lütfen bekleyin..." + +#: index.php:167 +msgid "Collapse feedlist" +msgstr "Özet akışı listesini kapat" + +#: index.php:170 +msgid "Show articles" +msgstr "Yazıları göster" + +#: index.php:173 +msgid "Adaptive" +msgstr "Görüntüle..." + +#: index.php:174 +msgid "All Articles" +msgstr "Tüm yazılar" + +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "Favoriler" + +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "Yayınladıklarım" + +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 +msgid "Unread" +msgstr "Okunmamışlar" + +#: index.php:178 +msgid "With Note" +msgstr "Not aldıklarım" + +#: index.php:179 +msgid "Ignore Scoring" +msgstr "Notlandırmayı ihmal et" + +#: index.php:182 +msgid "Sort articles" +msgstr "Yazıları sırala" + +#: index.php:185 +msgid "Default" +msgstr "Varsayılan" + +#: index.php:186 +msgid "Newest first" +msgstr "En yeni en üstte" + +#: index.php:187 +msgid "Oldest first" +msgstr "En eski en üstte" + +#: index.php:188 +msgid "Title" +msgstr "BaÅŸlık" + +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 +msgid "Mark as read" +msgstr "Okundu olarak iÅŸaretle" + +#: index.php:195 +msgid "Older than one day" +msgstr "1 günden eski" + +#: index.php:198 +msgid "Older than one week" +msgstr "1 haftadan eski" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "2 haftadan eski" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "Sunucu ile iletiÅŸimde problem var." + +#: index.php:223 +msgid "Actions..." +msgstr "Daha fazla..." + +#: index.php:225 +msgid "Preferences..." +msgstr "Tercihler" + +#: index.php:226 +msgid "Search..." +msgstr "Ara..." + +#: index.php:227 +msgid "Feed actions:" +msgstr "Özet akışı ile ilgili..." + +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "Özet akışına üye ol" + +#: index.php:229 +msgid "Edit this feed..." +msgstr "Bu özet akışını düzenle..." + +#: index.php:230 +msgid "Rescore feed" +msgstr "Özet akışını yeniden deÄŸerlendir..." + +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "Üyelikten çık" + +#: index.php:232 +msgid "All feeds:" +msgstr "Tüm özet akışları:" + +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "OkunmuÅŸ özet akışlarını görüntüle(me)" + +#: index.php:235 +msgid "Other actions:" +msgstr "DiÄŸerleri:" + +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "Tam ekran görüntüle" + +#: index.php:237 +msgid "Create label..." +msgstr "Arama baÅŸlığı tanımla..." + +#: index.php:238 +msgid "Create filter..." +msgstr "Filtre tanımla..." + +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "Klavye kısayolları yardım" + +#: index.php:248 +msgid "Logout" +msgstr "Oturumu kapat" + +#: index.php:254 +msgid "Updates are available from Git." +msgstr "" + +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "Tercihler" + +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "Klavye kısayolları" + +#: prefs.php:112 +msgid "Exit preferences" +msgstr "Tercihleri kapat" + +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "Özet akışları" + +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "Filtreler" + +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "Arama baÅŸlıkları" + +#: prefs.php:133 +msgid "Users" +msgstr "Kullanıcılar" + +#: prefs.php:136 +msgid "System" +msgstr "Sistem" + +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "Yeni bir hesap tanımla" + +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "Yeni kullanıcı kayıtları durdurulmuÅŸtur." + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "Tiny Tiny RSS'e geri dön" + +#: register.php:218 +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 "Geçici ÅŸifreniz girdiÄŸiniz e-posta adresine yollanacak. Geçici ÅŸifre ile 24 saat içinde giriÅŸ yapmanız gerekiyor yoksa geçerliliÄŸini yitirecektir." + +#: register.php:224 +msgid "Desired login:" +msgstr "İstenen kullanıcı adı:" + +#: register.php:227 +msgid "Check availability" +msgstr "Kullanılırlığını kontrol et" + +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "E-posta:" + +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "İki kere iki kaç eder:" + +#: register.php:235 +msgid "Submit registration" +msgstr "Kaydı iÅŸleme al" + +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "Kayıt bilgilerinizde eksiklik var." + +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "Bu kullanıcı adı halihazırda kullanılıyor." + +#: register.php:287 +msgid "Registration failed." +msgstr "Kayıt iÅŸlemi baÅŸarısız oldu." + +#: register.php:334 +msgid "Account created successfully." +msgstr "Hesap yaratıldı." + +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "Yeni kullanıcı kayıtları ÅŸu an için kapalıdır." + +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "Tiny Tiny RSS veri yenileme komut dosyası." + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "KategorilenmemiÅŸ" + +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d arÅŸivlenmiÅŸ yazı" +msgstr[1] "%d arÅŸivlenmiÅŸ yazılar" + +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "Özet akışı bulunamadı." + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "DolaÅŸma" + +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "Sonraki özet akışına geç" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "Önceki özet akışına geç" + +#: include/functions2.php:55 +msgid "Open next article" +msgstr "Sonraki yazıya geç" + +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "Önceki yazıya geç" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "Sonraki yazıya geç (uzun yazıları kısa geç)" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "Önceki yazıya geç (uzun yazıları kısa geç)" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "Sonraki yazıya geç (okundu olarak iÅŸaretleme ve yazıyı indirme)" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "Önceki yazıya geç (okundu olarak iÅŸaretleme ve yazıyı indirme)" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "Arama geçmiÅŸini göster" + +#: include/functions2.php:62 +msgid "Article" +msgstr "Yazı" + +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "Favorileri deÄŸiÅŸir" + +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "Yayınlanmışları deÄŸiÅŸtir" + +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "Okunmamışları deÄŸiÅŸtir" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "Etiketleri deÄŸiÅŸtir" + +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "Seçilenleri azlet" + +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "Okunanları azlet" + +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "Yeni bir pencerede aç" + +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "AÅŸağıdakini okundu iÅŸaretle" + +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "Yukarıdakini okundu iÅŸaretle" + +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "AÅŸağı git" + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "Yukarı git" + +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "İmleç altındaki yazıyı seç" + +#: include/functions2.php:75 +msgid "Email article" +msgstr "Yazıyı e-posta ile yolla" + +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "Yazıyı kapat" + +#: include/functions2.php:77 +msgid "Toggle article expansion (combined mode)" +msgstr "Yazı büyütmeyi deÄŸiÅŸtir (birleÅŸik mod)" + +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "Aslını içte göstermeyi deÄŸiÅŸtir" + +#: include/functions2.php:80 +msgid "Article selection" +msgstr "Yazı seçimi" + +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "Tüm yazıları seç" + +#: include/functions2.php:82 +msgid "Select unread" +msgstr "Okunmamışları seç" + +#: include/functions2.php:83 +msgid "Select starred" +msgstr "Favorileri seç" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "Yayınlanmışları seç" + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "Seçimi evir" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "Hiçbirini seçme" + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "Özet akışı" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "Özet akışını tazele" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "OkunmuÅŸ özet akışlarını gizle(me)" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "Özet akışına abone ol" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "Veri akışı aboneliÄŸini düzenle" + +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "Yazı baÅŸlıklarını ters diz" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "Özet akışı yenilemesinde hata ayıkla" + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "Tüm özet akışlarını okundu iÅŸaretle" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "Bu kategoriyi aç/kapa" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "BirleÅŸik modu deÄŸiÅŸtir" + +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "BirleÅŸik modda otomatik geniÅŸlemeyi deÄŸiÅŸtir" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "Git" + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "Tüm yazılar" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "Taze" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "Etiket öbeÄŸi" + +#: include/functions2.php:106 +msgid "Other" +msgstr "DiÄŸer" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "Arama baÅŸlığı tanımla" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "Filtre tanımla" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "Kenar çubuÄŸunu aç/kapa" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "Yardım diyaloÄŸunu göster" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "Arama sonuçları: %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +msgid "comment" +msgid_plural "comments" +msgstr[0] "yorum" +msgstr[1] "yorumlar" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +msgid "comments" +msgstr "Yorumlar" + +#: include/functions2.php:1303 +msgid " - " +msgstr "-" + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "Etiketi yok" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "Bu yazı için etiketler tanımla" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "Asıl kaynağı:" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "Özet akışı internet adresi" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "Bu pencereyi kapa" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(notu deÄŸiÅŸtir)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "bilinmeyen tür" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "Ekler" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "Özet" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "Tüm özet akışları" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "Favori yazılar" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "Yayınlanmış yazılar" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "Tazeler" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "ArÅŸivlenmiÅŸ yazılar" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "Yakın zamanda okunanlar" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "Oturum aç:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "Åžifre:" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "Åžifremi unuttum" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "Profil:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "Öntanımlı profil" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "Ekonomik veri akışı" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "Yazılarda resimleri göstermez, otomatik yenilemeleri azaltır." + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "Beni hatırla" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "Oturum aç" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "Oturum doÄŸrulanamadı (doÄŸru olmayan IP adresi)" + +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "Oturum doÄŸrulanamadı (ÅŸema versiyonu deÄŸiÅŸti)" + +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "Oturum doÄŸrulanamadı (kullanıcı adı bulunamadı)" + +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "Oturum doÄŸrulanamadı (ÅŸifre deÄŸiÅŸtirildi)" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "DiÄŸer arayüz ipuçları Tiny Tiny RSS Wiki'de mevcut." + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Klavye kısayolları" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "Shift" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Yardım konusu bulunamadı." + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "Tiny Tiny RSS ile paylaÅŸ" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "BaÅŸlık:" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "Internet adresi:" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "İçerik:" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "Arama baÅŸlıkları:" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "Paylaşılan yazı Yayınlananlar'da gözükecek" + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "PaylaÅŸ" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "İptal" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "GiriÅŸ yapılmamış" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "Geçersiz kullanıcı adı ya da ÅŸifresi" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "%s'e zaten abonesiniz." + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "%s'e abone oldunuz." + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "%s'e abone olunamadı." + +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "%s'de özet akışı bulunamadı." + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "Birçok özet akışı internet adresi bulundu." + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "%s' abone olunamadı.
    Özet akışı indirilemiyor." + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "Seçilen özet akışlarına abone ol" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "Abonelik tercihlerini düzenle" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "Åžifre bulma" + +#: classes/handler/public.php:805 +#, fuzzy +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "Geçerli bir kullanıcı adı ve e-posta adresi vermeniz gerekiyor. Yeni ÅŸifre e-posta adresinize yollanacak." + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "Åžifremi yenile" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "Bazı gerekli form parametreleri eksik ya da yanlış." + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "Geri git" + +#: classes/handler/public.php:878 +#, fuzzy +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] Åžifre deÄŸiÅŸtirme hatırlatması" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "Üzgünüz, kullanıcı adı ve e-posta kombinasyonu bulunamadı." + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "Bu kodu çalıştırmak için yeterli yetkiniz yok." + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "Veritabanı Yenileyicisi" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "Yenilemeleri yap" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "RSS özet akışı olarak görüntüle" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "RSS olarak görüntüle" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "Son yenileme: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "Tümü" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "Ters çevir" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "Hiçbiri" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "Daha fazla..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "Seçimi deÄŸiÅŸtir:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "Seçim:" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "Skor ata" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "ArÅŸiv" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "Geri git" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "Sil" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "E-posta ile yolla" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "Özet akışı:" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "Özet akışı bulunamadı." + +#: classes/feeds.php:268 +msgid "Never" +msgstr "Asla" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "%s de içe aktarıldı" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +#, fuzzy +msgid "mark feed as read" +msgstr "Okundu olarak iÅŸaretle" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "Yazıyı kapat" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "Okunmamış yazı bulunamadı." + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "YenilenmiÅŸ yazı bulunamadı." + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "Favori yazı bulunamadı." + +#: classes/feeds.php:778 +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 "Yazı bulunamadı. Yazıları arama baÅŸlıklarına elle ekleyebilir ya da filtre tanımlamayı deneyebilirsiniz." + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "Yazı bulunamadı." + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "Özet akışları en son %s de yenilendi" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "Bazı özet akışlarında yenileme hataları var (detaylar için tıklayın)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "Hiçbir özet akışı seçilmedi." + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "Özet akışı ya da site adresi" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "Kategoriye yerleÅŸtir" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "Mevcut veri akışları" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "DoÄŸrulama" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "Oturum aç" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "Åžifre" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "Bu özet akışı doÄŸrulama gerektiriyor." + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "Abone ol" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "Daha fazla özet akışı" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "Ara" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "Popüler özet akışları" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "Özet akışı arÅŸivi" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "limit:" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "Kaldır" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "Arama yap" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +#, fuzzy +msgid "Search syntax" +msgstr "Ara" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "Yazı bulunamadı." + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "Bu yazı için etiketler (virgülle ayrılmış):" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "Kaydet" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "OPML Utility" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "OPML içe aktarılıyor..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "Tercihlere geri dön" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "Özet akışı ekleniyor: %s" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "Zaten var olan özet akışı: %s" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "Arama baÅŸlığı ekleniyor %s" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "Aynı arama baÅŸlığı mevcut: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "Tercih anahtarı %s %s'e ayarlanıyor" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "Filtre ekleniyor..." + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "Kategori iÅŸleniyor: %s" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "Yükleme baÅŸarısız oldu hata kodu %d" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "Yüklenen dosya taşınamadı." + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "Hata: lütfen OPML dosyasını yükleyin." + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "Hata: Taşınan OPML dosyası bulunamıyor." + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "Belge çözümlenirken hata oluÅŸtu." + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "Bu sekmeyi açmak için yeterli yetkiniz yok." + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "Hata kayıt defteri" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "Yenile" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "Kayıt defterini temizle" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "Hata" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "Dosya adı" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "Mesaj" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "Tarih" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Kullanıcı bulunamadı" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "Kaydedildi" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Son giriÅŸ" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "Abone olunan özet akışı sayısı" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Abone olunan özet akışları" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "EriÅŸim seviyesi:" + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "Opsiyonlar" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "Kullanıcı %s %s ÅŸifresi ile eklendi" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "Kullanıcı %s tanımlanamadı" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "Kullanıcı %s zaten var." + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "%s kullanıcısının ÅŸifresi %s e deÄŸiÅŸtirildi" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "%s adlı kullanıcının yeni ÅŸifresi %s e yollanıyor" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] Åžifre deÄŸiÅŸtirme hatırlatması" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "Seç" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "Kullanıcı tanımla" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "Detaylar" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "Düzenle" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "EriÅŸim seviyesi" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "Son giriÅŸ" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "Düzenlemek için tıklayın" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "Hiçbir kullanıcı tanımlanmadı." + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "Uyan kullanıcı bulunamadı." + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Veri alanını etkinleÅŸtirmek için tıklayın" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "(%d özet akışı)" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "Özet akışı baÅŸlığı" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "Yenileme" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "Yazıları temizleme:" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "İpucu: EÄŸer özet akışınız gerektiriyorsa buraya giriÅŸ bilgilerinizi girmelisiniz. Twitter özet akışları için giriÅŸ bilgisi gerekli deÄŸildir." + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "Popüler özet akışlarında görünmesin" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "E-posta özetine ekle" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "Daima resimleri göster" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "Resimleri gösterme" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "Resimleri sunucuda sakla" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "Yenilenen yazıları okunmamış iÅŸaretle" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "İkon" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "DeÄŸiÅŸtir" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "Push yenilemelere tekrar abone ol" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "Push özet akışlarında PubSubHubbub abonelik durumunu tekrar kurar." + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "Bitti." + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "Hatalı özet akışları" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "Aktif olmayan özet akışları" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "Seçili özet akışlarını düzenle" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "Sıralamayı eski haline getir" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "Toplu abone ol" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "Kategoriler" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "Kategori ekle" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "Seçileni kaldır" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "Daha..." + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "Elle temizleme" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "Özet akışı verisini kaldır" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "Yazıları tekrar skorla" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "OPML kullanarak veri akışlarınızı, filtrelerinizi, arama baÅŸlıklarınızı ve okuyucu tercihlerinizi dışa taşıyabilirsiniz." + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "OPML ile sadece ana tercihler profili nakli yapılabilir. " + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "OPML'imi içe aktar" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "Dosya adı:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "Ayarları dahil et" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "OPML'i dışa aktar" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "AÅŸağıdaki adresi bilen kiÅŸiler OPML'inize abone olabilir." + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "Yayınlanan OPML sizin Tiny Tiny RSS tercihlerinizi ya da ÅŸifre gereken özet akışlarını ya da Popüler özet akışlarından gizlenmiÅŸ özet akışlarını içermez." + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "Herkese açık OPML adresi" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "Yayınlanan OPML adresini göster" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Firefox bütünleÅŸimi" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "AÅŸağıdaki linke tıklayarak bu site Firefox Feed Reader olarak kullanılabilir." + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "Bu siteyi özet akışı okuyucu olarak tanımlamak için buraya tıklayın." + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "Yayınlanmış ve paylaşılmış yazılar / OluÅŸturulan özet akışları" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "Yayınlanmış yazılar herkese açık RSS özet beslemesi olarak dışa aktarılır ve bunun adresini bilen herkes buna abone olabilir." + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "Adresi göster" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "Tüm üretilmiÅŸ adresleri temizle" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "Bu özet akışları için 3 aydır yeni içerik yayınlanmadı (en eski en üstte):" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "Özet akışını düzenlemek için tıklayın" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "Seçilen özet akışlarının aboneliÄŸinden ayrıl" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "Satır başına bir RSS özet akışı ekle (özet akışı belirlemesi yapılmıyor)" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "Abone olunacak özet akışları, satır başına bir tane" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "Onaylama gereken özet akışları." + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "Bu filtreye uyan yazılar:" + +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "Bu filtreye uyan yakın geçmiÅŸli yazı bulunamadı." + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "(ters çevir)" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "%s de %s de %s %s" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "Altyazı" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "EÅŸle" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "Ekle" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "Uygula" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "Etkin" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "Herhangi bir kurala eÅŸle" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "EÅŸlemeyi ters çevir" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "Deneme" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "BirleÅŸtir" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "Tanımla" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "Düzenli ifade eÅŸlemesini ters duruma getir" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "alanda" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "de" + +#: classes/pref/filters.php:947 +#, fuzzy +msgid "Wiki: Filters" +msgstr "Filtreler" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "Kuralı kaydet" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "Kural ekle" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "Çalıştır" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "parametrelerle:" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "Kaydet" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +msgid "Add action" +msgstr "Ekle" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "[altyazısız]" + +#: classes/pref/filters.php:1044 +#, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "%s (%d kural)" +msgstr[1] "%s (%d kurallar)" + +#: classes/pref/filters.php:1059 +#, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "%s (+%d eylem)" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "Renkler" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "Önplan:" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "Arkaplan:" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "Arama baÅŸlığı tanımlandı %s" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Renkleri kaldır" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Genel" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Arayüz" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "GeliÅŸmiÅŸ" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "Özet" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "Aynı olan yazılara izin ver" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "Kara listedeki etiketler" + +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "Yazılardaki etiketler otomatik olarak algılanırken ÅŸu etiketler uygulanmayacak (virgülle ayrılmış liste)." + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "Yazıları otomatik olarak okundu iÅŸaretle" + +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "Bu seçenek siz yazı listesinde gezinirken yazıları otomatik olarak okundu olarak iÅŸaretler." + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "BirleÅŸik modda yazıları otomatik olarak geniÅŸlet" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "BirleÅŸik özet akışı görünümü" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "BaÅŸlık ve içeriÄŸi ayrı ayrı gösterme yerine geniÅŸletilmiÅŸ yazı listesi göster" + +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "Okundu olarak iÅŸaretlemede onay iste" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "Bir seferde gösterilecek yazı sayısı" + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "Öntanımlı özet akışı yenileme zaman aralığı" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "Yenileme metodundan bağımsız olarak özet akışının yenileceÄŸi en kısa zaman aralığı" + +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "E-posta özetindeki yazıları okundu iÅŸaretle" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "E-posta ile özet yollamayı etkin kıl" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Bu seçenek günlük bazda yeni ve okunmamış baÅŸlıkların tanımlı e-posta adresinize yollanmasını saÄŸlar" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "Özetleri bu saat civarında gönder" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "Koordine Evrensel Saat dilimini (UTC) kullanır" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "API eriÅŸimini etkinleÅŸtir" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "Dış uygulamaların bu hesaba API vasıtasıyla eriÅŸimine izin verir" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "Özet akışı kategorilerini etkinleÅŸtir" + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "Özet akışlarını okunmamış yazı sayısına göre sırala" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Bir yazının taze kabul edilmesi için gereken maksimum zaman (saat olarak)" + +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "Yazılarının tamamı okunmuÅŸ ise özet akışını gizle" + +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "Yazılarının tamamı okunmuÅŸ ise özet akışını gizlerken Özet kısımını açık tut" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "Uzun tarih formatı" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "Kullanılan sözdizim PHP'deki date() fonksiyonuna eÅŸtir." + +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "YetiÅŸmede bir sonraki özet akışını göster" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Bir yazı okundu iÅŸaretlendiÄŸinde otomatik olarak okunmamış yazılarıyla bir sonraki özet akışını aç" + +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Yazıları bu kadar günden sonra temizle (0 - silme)" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "Okunmamış yazıları temizle" + +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "BaÅŸlık sırasını terse çevir (en eski en üstte)" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "Kısa tarih formatı" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "BaÅŸlıklar listesinde yazı içeriÄŸini göster" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "BaÅŸlıkları özet akışı tarihine göre sırala" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "İçe aktarım tarihi yerine özet akışında geçen tarihi kullanarak baÅŸlıkları sırala" + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "Güvenli oturum aç (SSL)" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "SSL müşteri sertifikanızı buraya kaydetmek için tıklayın" + +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "Yazılarda resim gösterme" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "Yazılarda güvenli olmayan iÅŸaretleri kaldır" + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Yazılarda HTML iÅŸaretlemelerini kaldır" + +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "Stil sayfasını biçimlendir" + +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "Stil sayfasını kendi beÄŸenizine göre biçimlendirin" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "Saat dilimi" + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "Sanal özet akışlarında baÅŸlıkları gruplandır" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "Özel özet akışları, arama baÅŸlıkları ve kategoriler kaynak özet akışlarına göre gruplanmıştır." + +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "Dil" + +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "Tema" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "Varolan temalardan birini seçin" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "Konfigürasyon kaydedildi." + +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "KiÅŸisel bilgileriniz kaydedildi." + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "Tercihleriniz ÅŸimdi öntanımlı tercihlere çevrildi." + +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "KiÅŸisel bilgi / Yetkilendirme" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "KiÅŸisel bilgi " + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "İsim soyisim" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "E-posta" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "EriÅŸim seviyesi" + +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "Bilgiyi kaydet" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "Åžifreniz öntanımlı ÅŸifre, güvenliÄŸiniz için lütfen ÅŸifrenizi deÄŸiÅŸtirin" + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "Åžifrenizi deÄŸiÅŸtirmek OTP'yi etkisizleÅŸtirecek." + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "Eski ÅŸifre" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "Yeni ÅŸifre" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "Åžifreyi onayla" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "Åžifreyi deÄŸiÅŸtir" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "Tek seferlik ÅŸifreler / Yetkilendirici" + +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "Tek seferlik ÅŸifreler etkinleÅŸtirilmiÅŸtir. EtkisizleÅŸtirmek için mevcut ÅŸifrenizi aÅŸağı girin." + +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "Åžifrenizi girin" + +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "OTP'yi etkisizleÅŸtir" + +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "Bunun için ilgili Yetkilendirici gerekiyor. Åžifrenizi deÄŸiÅŸtirmek otomatik olarak OTP'yi etkisizleÅŸtirir." + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "Yetkilendirici uygulamaya aÅŸağıdaki kodu okutun:" + +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "Tek seferlik ÅŸifrenizi girin" + +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "OTP'yi etkinleÅŸtir" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "OTP desteÄŸi için PHP GD fonksiyonları gerekiyor." + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "Bazı tercihler sadece öntanımlı profilde görünür." + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "ÖzelleÅŸtir" + +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "Kaydet" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "Temizle" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "Sunucu zamanı: %s (UTC)" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "Konfigürasyonu kaydet" + +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "Kaydet ve Tercihlerden çık" + +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "Profilleri yönet" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "Öntanımlılara geri dön" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "Eklentiler" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "Eklenti deÄŸiÅŸikliklerinin etkin olması için Tiny Tiny RSS'in yeniden yüklenmesi gerekiyor." + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "Daha fazla ekletiyi ÅŸu adreslerde bulabilirsiniz: tt-rss.org forums ya da wiki." + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "Sistem eklentileri" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "Eklenti" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "Tanım" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "Versiyon" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "Yazar" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "daha fazla bilgi" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "Veriyi temizle" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "Kullanıcı eklentileri" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "Seçili eklentileri etkinleÅŸtir" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "Yanlış tek seferlik ÅŸifre" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "Yanlış ÅŸifre" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "Temanızdaki renkleri, fontları ve yerleÅŸimi deÄŸiÅŸtirebilirsiniz. This file baz olarak kullanılabilir." + +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "Profil tanımla" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(aktif)" + +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "Seçili profilleri kaldır" + +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "Profili aktifleÅŸtir" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "EÄŸer arama baÅŸlıkları veya filtreler içe aktardıysanız bunları görmek için Tercihler ekranını yenilemeniz gerekir." + +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "Herkese açık OPML internet adresiniz:" + +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "Yeni internet adresi oluÅŸtur" + +#: 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 "Konfigürasyonda geri plan yordamı etkinleÅŸtirildi ama geri plan yordamı çalışmıyor ve bu tüm özet akışlarının yenilenmesini engelliyor. Lütfen geri plan yordamını baÅŸlatın ya da olgu sahibiyle irtibata geçin. " + +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "Son yenileme:" + +#: 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 "Yenileme geri plan yordamı çok uzun süredir çalışıyor. Bir problem olabilir. Lütfen geri plan yordamını kontrol edin ya da olgu sahibiyle irtibata geçin." + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "Bu özet akışını RSS olarak ÅŸu adresten görüntüleyebilirsiniz:" + +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" + +#: plugins/af_psql_trgm/init.php:112 +#, fuzzy +msgid "Show related articles" +msgstr "Paylaşılmış yazılar" + +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +#, fuzzy +msgid "Mark similar articles as read" +msgstr "Tüm yazıları okundu iÅŸaretle?" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +#, fuzzy +msgid "Global settings" +msgstr "Ayarları dahil et" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "Özet akışı kategorilerini etkinleÅŸtir" + +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" + +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" + +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "" + +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "" + +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "Yazı notunu düzenle" + +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "Dosya yüklenemedi." + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "Tamamlandı. %d yazının %d kadarı içe aktarıldı." + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "Dosya yanlış formatta." + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "Google Reader'dan Favori veya paylaşılmış yazıları içe aktar" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "starred.json veya shared.json'ı aÅŸağıdaki forma yapıştırın." + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "Favori yazılarımı içe aktar" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[İletildi]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "Birçok yazı" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "E-posta iÅŸlemcinizi çağırmak için bu linke tıklayın:" + +#: plugins/mailto/init.php:75 +msgid "Forward selected article(s) by email." +msgstr "SeçilmiÅŸ yazıları e-posta ile iletin." + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "Mesajı e-posta uygulamanıza göndermeden önce düzenleyebilirsiniz. " + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "Bu ekranı kapatın" + +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "İçe alma ve dışa aktarma" + +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "Favorilerde ve ArÅŸivde olan yazılarınızı içe ya da dışarı aktarabilirsiniz." + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "Verilerimi dışa aktar" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "İçe aktar" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "İçe aktarılamadı: doÄŸru olmayan ÅŸema versiyonu" + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "İçe aktarılamadı: tanınmayan dosya formatı" + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "Tamamlandı:" + +#: plugins/import_export/init.php:388 +#, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "%d yazı iÅŸlendi," + +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "% içe aktarıldı" +msgstr[1] "% içe aktarıldı" + +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "%d özet akışı tanımlandı." +msgstr[1] "%d özet akışları tanımlandı." + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "XML dokümanı yüklenemedi." + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "Verileri hazırla" + +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "Emniyetli çalışmıyor (deÄŸiÅŸtirmek için tıklayın) " + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "NSFW eklentisi" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "NSFW için düşünülen etiketler (virgülle ayrılmış)" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "Konfigürasyon kaydedildi." + +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "Lütfen tek seferlik ÅŸifrenizi girin:" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "Åžifre deÄŸiÅŸtirildi." + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "Eski ÅŸifreniz yanlış." + +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "Yazıyı kapat" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "" + +#: plugins/mail/init.php:34 +#, fuzzy +msgid "Mail plugin" +msgstr "Kullanıcı eklentileri" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "" + +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "Kime:" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "BaÅŸlık:" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "E-posta yolla" + +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "Olgu baÄŸlantıları" + +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" +msgstr "Olgu" + +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "Olgu adresi" + +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "Ulaşım anahtarı:" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "Ulaşım anahtarı" + +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "Her iki baÄŸlanmış olgu için tek bir eriÅŸim anahtarı kullanın." + +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "Yeni anahtar üret" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "Olgu baÄŸlantısı ekle" + +#: 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 "Popüler yazıları paylaÅŸma amaçlı olarak Tiny Tiny RSS'in diÄŸer kurulumlara baÄŸlayabilirsiniz. Linkteki adresi kullanarak olgu baÄŸlantısı yaratın:" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "Son baÄŸlantı" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "Durum" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "KaydedilmiÅŸ özet akışları" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "BaÄŸlantı üret" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "Konfigürasyon kaydedildi." + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "Kullanılırlığını kontrol et" + +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "Yazı notunu düzenle" + +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "Paylaşılmış yazılar" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +#, fuzzy +msgid "Statistics" +msgstr "Durum" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "Favori yazılar" + +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "Veriyi temizle" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, fuzzy, php-format +msgid "Currently stored as: %s" +msgstr "Sunucu zamanı: %s (UTC)" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +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 "AÅŸağıdaki baÄŸlantıyı internet tarayıcınızın araç çubuÄŸuna taşıyın, tarayıcınızda ilgilendiÄŸiniz özet akışını açın ve abone olmak istediÄŸiniz baÄŸlantıya tıklayın." + +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "%s e abone olunsun mu?" + +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Tiny Tiny RSS ile abone ol" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "Tiny Tiny RSS'i kullanarak yazılar yayınlamak için bu bookmarklet'i kullanın" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "Tek internet adresinden paylaşılan tüm yazıları buradan etkinsizleÅŸtirebilirsiniz." + +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "Tüm yazı paylaşımlarını iptal et" + +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "İnternet adresi ile paylaÅŸ" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "Bu yazıyı bu internet adresi ile paylaÅŸabilirsiniz:" + +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "Bu yazı paylaşımını iptal et" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "Hata konfigürasyonda belirtilen adrese yazılacaktır." + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "" + +#: js/functions.js:93 +msgid "Close" +msgstr "" + +#: js/functions.js:104 +#, fuzzy +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "Bu istisnayı tt-rss.org'a rapor etmek istediÄŸinizden emin misiniz? Raporda internet tarayıcı bilginiz olacaktır. Ayrıca IP adresiniz veritabanında saklanacaktır." + +#: js/functions.js:224 +msgid "Click to close" +msgstr "Kapamak için tıklayın" + +#: js/functions.js:1051 +msgid "Edit action" +msgstr "Eylemi düzenle" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "Filtre tanımla" + +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "Abonelik tekrar kurulsun mu? Tiny Tiny RSS bir sonraki özet akışı yenilemesinde tekrar abone olmaya çalışacak." + +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "Abonelik tekrar kuruldu." + +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "%s abonelikten ayrıl?" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "Özet akışı siliniyor..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "Lütfen kategori ismi giriniz:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "Bu özet akışı için yeni bir sendikasyon adresi üretilsin mi?" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "Adres deÄŸiÅŸtirilmeye çalışılınıyor..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "Hiçbir özet akışı seçilmedi." + +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "Seçilen özet akışları arÅŸivden kaldırılsın mı? İçinde kaydedilmiÅŸ yazı olan özet akışları kaldırılmayacaktır." + +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "Yenileme hatası veren özet akışları" + +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "Seçilen özet akışları kaldırılsın mı?" + +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "Seçilen özet akışları kaldırılıyor..." + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "Kategoriyi düzenle" + +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "Kategoriyi kaldır" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "Seçimi ters çevir" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "Lütfen kullanıcı adı girin:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "Kullanıcı tanımlanamadı: kullanıcı adı eksik." + +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "Kullanıcı oluÅŸturuluyor..." + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Kullanıcı editörü" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "Veri kaydediliyor..." + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "Filtreyi düzenle " + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "Filtre kaldırılsın mı?" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "Filtre kaldırılıyor..." + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "Seçilen arama baÅŸlıkları kaldırılsın mı?" + +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "Seçilen arama baÅŸlıkları kaldırılıyor..." + +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "Hiçbir arama baÅŸlığı seçilmedi." + +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "Seçilen kullanıcılar kaldırılsın mı? Admin ve sizin hesabınız kaldırılmayacak." + +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "Seçilen hesaplar kaldırılıyor..." + +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "Hiçbir kullanıcı seçilmedi." + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "Seçilen filtreler kaldırılsın mı?" + +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "Seçilen filtreler kaldırılıyor..." + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "Hiçbir filtre seçilmedi." + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "Seçilen özet akışlarının aboneliÄŸinden ayrılınsın mı?" + +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "Seçilen özet akışlarının aboneliklerinden ayrılınıyor..." + +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "Lütfen sadece bir tane özet akışı seçin." + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "Seçilen özet akışında favori olmayan tüm yazılar silinsin mi?" + +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "Seçilen özet akışı temizleniyor..." + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "Yazılar kaç gün tutulsun (0 - öntanımlıyı kullan)?" + +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "Seçilen özet akışı temizleniyor..." + +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "Lütfen sadece bir kullanıcı seçin." + +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "Seçilen kullanıcının ÅŸifresi tekrar oluÅŸturulsun mu?" + +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "Seçilen kullanıcı için tekrar ÅŸifre oluÅŸturuluyor..." + +#: js/prefs.js:565 +msgid "User details" +msgstr "Kullanıcı detayları" + +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "Lütfen sadece bir filtre seçin." + +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "Seçilen filtreler birleÅŸtirilsin mi?" + +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "Filtreler birleÅŸtiriliyor..." + +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "Birden fazla özet akışını düzenle" + +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "Seçilen özet akışları için deÄŸiÅŸiklikler kaydedilsin mi?" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "OPML içe aktarma" + +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "Lütfen önce bir OPML dosyası seçin" + +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "İçe aktarılıyor, lütfen bekleyin..." + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "Öntanımlı ayarlara geri dönülsün mü?" + +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "Özet akışlarına abone olunuyor..." + +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "Bu eklenti için kaydedilmiÅŸ veriler silinsin mi?" + +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "Hata günlüğündeki tüm mesajlar silinsin mi?" + +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "Tüm yazıları okundu iÅŸaretle?" + +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "Tüm yazılar okundu olarak iÅŸaretleniyor..." + +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "Lütfen önce e-posta eklentisini aktif hale getirin." + +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "Bu türde bir özet akışını düzenleyemezsiniz." + +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "Lütfen önce embed_original eklentisini aktif hale getirin." + +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "" + +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "Bu tipte bir özet akışını tekrar skorlayamazsınız." + +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "Lütfen önce özet akışı seçin." + +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "%s'deki yazılar tekrar skorlansın mı?" + +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "Yazılar tekrar skorlanıyor..." + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "Hiç yazı seçilmedi." + +#: js/viewfeed.js:1018 +#, fuzzy, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "%s'de seçilen %d yazı silinsin mi? " + +#: js/viewfeed.js:1020 +#, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "Seçilen %d yazı silinsin mi?" + +#: js/viewfeed.js:1062 +#, fuzzy, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "%s'de seçilen %d yazı arÅŸivlensin mi?" + +#: js/viewfeed.js:1065 +#, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "ArÅŸivden %d yazı taşınsın mı?" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "favori olarak iÅŸaretlenmemiÅŸ yazılar bir sonraki özet akışı yenilemesinde silinebilir." + +#: js/viewfeed.js:1112 +#, fuzzy, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "%s'de %d yazı okunmuÅŸ olarak iÅŸaretlensin mi?" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "Yazı etiketlerini düzenle" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "Yazı etiketlerini kaydediyor..." + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +#, fuzzy +msgid "Click to open next unread feed." +msgstr "Özet akışını düzenlemek için tıklayın" + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "Yazının aslını aç" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "Arama baÅŸlığı tayin et" + +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "Arama baÅŸlığını kaldır" + +#: js/viewfeed.js:2159 +#, fuzzy +msgid "Select articles in group" +msgstr "İmleç altındaki yazıyı seç" + +#: js/viewfeed.js:2168 +#, fuzzy +msgid "Mark group as read" +msgstr "Okundu olarak iÅŸaretle" + +#: js/viewfeed.js:2180 +#, fuzzy +msgid "Mark feed as read" +msgstr "Tüm özet akışlarını okundu iÅŸaretle" + +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "Seçilen yazılar için yeni skor girin:" + +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "Bu yazı için yeni skor girin:" + +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "Yazı adresi:" + +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "Üzgünüm, tarayıcınız sandboxed iframes'i desteklemiyor" + +#: plugins/af_psql_trgm/init.js:11 +#, fuzzy +msgid "Related articles" +msgstr "Paylaşılmış yazılar" + +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "Not kaydediliyor..." + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Google Reader'dan içe aktarma" + +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "Lütfen ilk önce bir dosya seçin." + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "Yazıyı e-posta ile yolla" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "Veriyi dışa aktar" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "Bitti, %d yazı dışa aktarıldı. Veriyi here adresinden indirebilirsiniz. " + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Veriyi içe aktar" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "Lütfen ilk önce dosyayı seçin." + +#: plugins/shorten_expanded/init.js:37 +msgid "Click to expand article" +msgstr "Yazıyı geniÅŸletmek için tıklayın" + +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" + +#: plugins/mail/mail.js:38 +#, fuzzy +msgid "Your message has been sent." +msgstr "KiÅŸisel bilgileriniz kaydedildi." + +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "Olguyu baÄŸla" + +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "Olguyu düzenle" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "Seçilen olgular kaldırılsın mı?" + +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "Seçilen olgular kaldırılıyor..." + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "Hiçbir olgu seçilmedi." + +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "Lütfen sadece bir olgu seçin." + +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "Özet akışı verisini kaldır" + +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "" + +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "Yazıyı internet adresini kullanarak paylaÅŸ" + +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "Bu yazı için yeni bir internet adresi yaratılsın mı?" + +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "İnternet adresini deÄŸiÅŸtirmeye çalışıyor..." + +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "Bu yazı için paylaşım kaldırılsın mı?" + +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "Paylaşımı kaldırmaya çalışıyor..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "Bu daha önce paylaşılmış yazı internet adreslerini geçersiz kılacak. Devam edeyim mi?" + +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "İnternet adresleri temizleniyor..." + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "Seçilen internet adresleri temizlendi." + +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "%s'deki tüm yazılar okundu iÅŸaretlensin mi?" + +#: js/feedlist.js:435 +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "%s'deki 1 günden eski yazılar okundu iÅŸaretlensin mi?" + +#: js/feedlist.js:438 +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "%s'deki 1 haftadan eski yazılar okundu iÅŸaretlensin mi?" + +#: js/feedlist.js:441 +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "%s'deki 2 haftadan eski yazılar okundu iÅŸaretlensin mi?" + +#: js/functions.js:615 +msgid "Error explained" +msgstr "Hata açıklandı" + +#: js/functions.js:697 +msgid "Upload complete." +msgstr "Yükleme tamamlandı." + +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "KaydedilmiÅŸ özet akışı ikonu silinsin mi?" + +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "Özet akışı ikonu kaldırılıyor..." + +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "Özet akışı ikonu kaldırıldı." + +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "Lütfen yüklemek için bir resim dosyası seçin." + +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "Bu özet akışı için yeni bir ikon yüklensin mi?" + +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "Yükleniyor, lütfen bekleyin..." + +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "Lütfen arama baÅŸlığı altyazısı girin:" + +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "Arama baÅŸlığı tanımlanamadı: altyazı eksik." + +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "Özet akışına abone ol" + +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "" + +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "%s'e abone olundu" + +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "Belirtilen adres geçersiz görünüyor." + +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "Belirtilen adreste hiçbir özet akışı bulunamadı." + +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "Özet akışını geniÅŸletmek için tıklayın" + +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "Belirtilen internet adresinden indirilemedi: %s" + +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "XML doÄŸrulaması baÅŸarısız oldu: %s" + +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "Bu özet akışına zaten abonesiniz." + +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "Kuralı düzenle" + +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "Özet akışını düzenle" + +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "Daha fazla özet akışı" + +#: js/functions.js:1878 +msgid "Help" +msgstr "Yardım" + +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "%s kategorisi kaldırılsın mı? İçinde bulunan özet akışları Kategorize EdilmemiÅŸlere eklenecek." + +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "Kategori kaldırılıyor..." + +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "Seçilen kategoriler kaldırılsın mı?" + +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "Seçilen kategoriler kaldırılıyor..." + +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "Hiçbir kategori seçilmedi." + +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "Kategori baÅŸlığı:" + +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "Kategori tanımlanıyor..." + +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "Yakın zamanda yenilenmeyen özet akışları" + +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "Mevcut OPML yayınlama adresi yenisiyle deÄŸiÅŸtirilsin mi?" + +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "Özet akışı temizleniyor..." + +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "Yazılar tekrar skorlansın mı?" + +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "Tekrar skorlanıyor..." + +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "Tüm yazılar tekrar skorlansın mı? Bu iÅŸlem uzun sürebilir." + +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "Özet akışları tekrar skorlanıyor..." + +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "Seçilen arama baÅŸlıkları öntanımlı renklerine döndürülsün mü?" + +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "Profil ayarları" + +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "Seçilen profiller kaldırılsın mı? Aktif ve varsayılan profiller kaldırılmayacak." + +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "Seçilen profiller kaldırılıyor..." + +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "Hiçbir profil seçilmedi." + +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "Seçilen profil aktif hale getirilsin mi?" + +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "Lütfen aktif hale getirilecek profili seçin." + +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "Profil yaratılıyor..." + +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "Bu daha önceden oluÅŸturulmuÅŸ tüm özet akışı adreslerini geçersiz kılacak. Devam edilsin mi?" + +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "OluÅŸturulan internet adresleri temizlendi." + +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "Arama baÅŸlığı editörü" + +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "Kategori aboneliÄŸinden ayrılamazsınız." + +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "Aramayı iptal et" + +#: js/viewfeed.js:174 +#, fuzzy +msgid "New articles found, reload feed to continue." +msgstr "Yazı bulunamadı." + +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "Favori iÅŸaretini kaldır" + +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "Favori olarak iÅŸaretle" + +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "Yazıyı yayından kaldır" + +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "Yazıyı yayınla" + +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "%d yazı seçildi" + +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "Hiçbir yazı seçilmedi." + +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "Hiçbir yazı bulunamadı. " + +#: js/viewfeed.js:1452 +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "%d yazı okudu olarak iÅŸaretlensin mi?" + +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "Yazı adresini göster " + +#~ msgid "Select by tags..." +#~ msgstr "Etiketlerle seç..." + +#~ msgid "Limit search to:" +#~ msgstr "Aramayı sınırla:" + +#~ msgid "This feed" +#~ msgstr "Bu özet akışı" + +#~ msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation." +#~ msgstr "Veritabanı sunucusu regexp uygulanması kaynaklı sorunlar sebebiyle kompleks tanımlamalar sonuç vermeyebilir." + +#~ msgid "Old password cannot be blank." +#~ msgstr "Eski ÅŸifre boÅŸ olamaz" + +#~ msgid "New password cannot be blank." +#~ msgstr "Yeni ÅŸifre boÅŸ olamaz" + +#~ msgid "Entered passwords do not match." +#~ msgstr "Girilen ÅŸifreler farklı." + +#~ msgid "Function not supported by authentication module." +#~ msgstr "İşlem yetkilendirme modülü tarafından desteklenmiyor." + +#~ msgid "Match:" +#~ msgstr "Uyanlar:" + +#~ msgid "Any" +#~ msgstr "Hiçbiri" + +#~ msgid "All tags." +#~ msgstr "Tüm etiketler." + +#~ msgid "Which Tags?" +#~ msgstr "Hangi etiketler?" + +#~ msgid "Display entries" +#~ msgstr "GiriÅŸleri göster" + +#~ msgid "Select item(s) by tags" +#~ msgstr "Yazıları etikete göre seçin" + +#~ msgid "Unread First" +#~ msgstr "İlk okunmamış" + +#~ msgid "Unknown option: %s" +#~ msgstr "Bilinmeyen opsiyon: %s" + +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "Tiny Tiny RSS'in yeni versiyonu çıktı!" + +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "Oturum doÄŸrulanamadı (kullanıcı aracısı deÄŸiÅŸti)" + +#~ msgid "Assign articles to labels automatically" +#~ msgstr "Yazıları arama baÅŸlıklarına otomatik olarak ata" + +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "Tiny Tiny RSS'in yeni bir versiyonu mevcut (%s)." + +#~ msgid "You can update using built-in updater in the Preferences or by using update.php" +#~ msgstr "Yenilemeyi Tercihlerde bulunan yenileyiciyi kullanarak ya da update.php programını çalıştırarak yapabilirsiniz." + +#~ msgid "See the release notes" +#~ msgstr "Sürüm notlarına bakın." + +#~ msgid "Download" +#~ msgstr "İndir" + +#~ msgid "Error receiving version information or no new version available." +#~ msgstr "Yeni versiyon bilgisi almada hata ya da yeni versiyon yok." + +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "Tiny Tiny RSS'i güncelle" + +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "Tiny Tiny RSS kurulumunuz en güncel sürümde." + +#, fuzzy +#~ msgid "Force update" +#~ msgstr "Yenilemeleri yap" + +#~ msgid "Do not close this dialog until updating is finished." +#~ msgstr "Yenileme bitene kadar bu pencereyi kapatmayın." + +#~ msgid "It is suggested to backup your tt-rss directory first." +#~ msgstr "İlk önce tt-rss dizinini yedeklemeniz tavsiye edilir." + +#~ msgid "Your database will not be modified." +#~ msgstr "Veritabanınızda deÄŸiÅŸiklik yapılmayacak." + +#~ 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 "Mevcut tt-rss dizininde deÄŸiÅŸiklik yapılmayacak. İsmi deÄŸiÅŸtirilecek ve ana dizinde bırakılacak. Yenileme bittikten sonra tüm özelleÅŸtirilmiÅŸ dosyalarınızı taşıyabileceksiniz." + +#~ msgid "Ready to update." +#~ msgstr "Yenileme için hazır." + +#~ msgid "Start update" +#~ msgstr "Yenilemeyi baÅŸlat" + +#~ msgid "Backup your tt-rss directory before continuing. Please type 'yes' to continue." +#~ msgstr "Devam etmeden önce tt-rss dizininin yedeÄŸini alın. Devam etmek için 'evet'e tıklayın." + +#~ msgid "New version available!" +#~ msgstr "Yeni versiyon çıktı!" + +#~ msgid "LibXML error %s at line %d (column %d): %s" +#~ msgstr "%s de %d satırında LibXML hatası (kolon %d): %s" + +#~ msgid "From:" +#~ msgstr "Kimden:" + +#~ msgid "Select:" +#~ msgstr "Seç:" diff --git a/locale/zh_CN/LC_MESSAGES/messages.mo b/locale/zh_CN/LC_MESSAGES/messages.mo index 43a01a75c1..aaafa63dee 100644 Binary files a/locale/zh_CN/LC_MESSAGES/messages.mo and b/locale/zh_CN/LC_MESSAGES/messages.mo differ diff --git a/locale/zh_CN/LC_MESSAGES/messages.po b/locale/zh_CN/LC_MESSAGES/messages.po index dd95228d1c..76cc78a1c2 100644 --- a/locale/zh_CN/LC_MESSAGES/messages.po +++ b/locale/zh_CN/LC_MESSAGES/messages.po @@ -1,3261 +1,4337 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# gothfox , 2011. msgid "" msgstr "" -"Project-Id-Version: Tiny Tiny RSS1.0\n" +"Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-22 22:16+0300\n" -"PO-Revision-Date: 2007-08-19 19:03+0800\n" -"Last-Translator: sluke \n" -"Language-Team: hicode.org \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2012-02-14 08:32+0000\n" +"Last-Translator: Hao Wu\n" +"Language-Team: Chinese (China) (http://www.transifex.net/projects/p/tt-rss/language/zh_CN/)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Country: china\n" -"X-Poedit-SourceCharset: utf-8\n" +"Plural-Forms: nplurals=1; plural=0\n" -#: backend.php:107 +#: backend.php:73 msgid "Use default" -msgstr "用户默认" +msgstr "使用默认" -#: backend.php:108 +#: backend.php:74 msgid "Never purge" -msgstr "从未" +msgstr "ä»Žä¸æ¸…ç†" -#: backend.php:109 +#: backend.php:75 msgid "1 week old" msgstr "1周å‰" -#: backend.php:110 +#: backend.php:76 msgid "2 weeks old" msgstr "2周å‰" -#: backend.php:111 +#: backend.php:77 msgid "1 month old" -msgstr "1月å‰" +msgstr "1个月å‰" -#: backend.php:112 +#: backend.php:78 msgid "2 months old" -msgstr "2月å‰" +msgstr "2个月å‰" -#: backend.php:113 +#: backend.php:79 msgid "3 months old" -msgstr "3月å‰" +msgstr "3个月å‰" -#: backend.php:116 -#, fuzzy +#: backend.php:82 msgid "Default interval" -msgstr "æ›´æ–°é—´éš”:" +msgstr "默认间隔" -#: backend.php:117 backend.php:127 +#: backend.php:83 +#: backend.php:93 msgid "Disable updates" msgstr "ç¦ç”¨æ›´æ–°" -#: backend.php:118 backend.php:128 -msgid "Each 15 minutes" +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" msgstr "æ¯15分钟" -#: backend.php:119 backend.php:129 -msgid "Each 30 minutes" +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" msgstr "æ¯30分钟" -#: backend.php:120 backend.php:130 +#: backend.php:86 +#: backend.php:96 msgid "Hourly" msgstr "æ¯å°æ—¶" -#: backend.php:121 backend.php:131 -msgid "Each 4 hours" +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" msgstr "æ¯4å°æ—¶" -#: backend.php:122 backend.php:132 -msgid "Each 12 hours" +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" msgstr "æ¯12å°æ—¶" -#: backend.php:123 backend.php:133 +#: backend.php:89 +#: backend.php:99 msgid "Daily" msgstr "æ¯å¤©" -#: backend.php:124 backend.php:134 +#: backend.php:90 +#: backend.php:100 msgid "Weekly" msgstr "æ¯å‘¨" -#: backend.php:137 tt-rss.php:220 modules/pref-prefs.php:329 -msgid "Default" -msgstr "默认" - -#: backend.php:138 -#, fuzzy -msgid "Magpie" -msgstr "页" - -#: backend.php:139 -msgid "SimplePie" -msgstr "" - -#: backend.php:148 modules/pref-users.php:126 +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 msgid "User" -msgstr "用户" +msgstr "普通用户" -#: backend.php:149 +#: backend.php:104 msgid "Power User" -msgstr "" +msgstr "高级用户" -#: backend.php:150 +#: backend.php:105 msgid "Administrator" msgstr "管ç†å‘˜" -#: backend.php:538 login_form.php:142 modules/backend-rpc.php:61 -#: modules/popup-dialog.php:106 -#, fuzzy -msgid "Default profile" -msgstr "默认文章é™åˆ¶" - -#: errors.php:3 -msgid "Unknown error" -msgstr "未知错误" - -#: errors.php:5 -msgid "" -"This program requires XmlHttpRequest to function properly. Your browser " -"doesn't seem to support it." -msgstr "" - -#: errors.php:8 -msgid "" -"This program requires cookies to function properly. Your browser doesn't " -"seem to support them." -msgstr "" - -#: errors.php:11 -msgid "Backend sanity check failed" -msgstr "Backend 完整检查失败" +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "本程åºéœ€è¦ XmlHttpRequest 的支æŒã€‚您的æµè§ˆå™¨ä¼¼ä¹Žä¸æ”¯æŒã€‚" -#: errors.php:13 -msgid "Frontend sanity check failed." -msgstr "Frontend 完整检查失败" +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "本程åºéœ€è¦ cookie 支æŒã€‚您的æµè§ˆå™¨ä¼¼ä¹Žä¸æ”¯æŒã€‚" #: errors.php:15 -msgid "" -"Incorrect database schema version. <a href='update.php'>Please " -"update</a>." -msgstr "䏿­£ç¡®çš„æ•°æ®åº“schema版本 <a href='update.php'>请更新</a>." +#, fuzzy +msgid "Backend sanity check failed." +msgstr "åŽç«¯å®Œæ•´æ€§æ£€æŸ¥å¤±è´¥" #: errors.php:17 -msgid "Request not authorized." -msgstr "无授æƒã€‚" +msgid "Frontend sanity check failed." +msgstr "å‰ç«¯å®Œæ•´æ€§æ£€æŸ¥å¤±è´¥ã€‚" #: errors.php:19 -msgid "No operation to perform." -msgstr "æ— æ“作。" +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "æ•°æ®åº“表结构版本错误。<a href='db-updater.php'>请更新</a>。" #: errors.php:21 -msgid "" -"Could not display feed: query failed. Please check label match syntax or " -"local configuration." -msgstr "无法显示feed(查询失败); 请核对标签匹é…语法或本地é…ç½®." +msgid "Request not authorized." +msgstr "è¯·æ±‚æœªç»æŽˆæƒã€‚" #: errors.php:23 -msgid "Denied. Your access level is insufficient to access this page." -msgstr "错误,æƒé™ä¸å¤Ÿã€‚" +msgid "No operation to perform." +msgstr "æ²¡æœ‰éœ€è¦æ‰§è¡Œçš„æ“ä½œã€‚" #: errors.php:25 -msgid "Configuration check failed" -msgstr "设置检查失败" +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "æ— æ³•æ˜¾ç¤ºä¿¡æ¯æºï¼šæŸ¥è¯¢å¤±è´¥ã€‚请核对标签匹é…语法或本地é…置。" #: errors.php:27 -msgid "" -"Your version of MySQL is not currently supported. Please see \n" -"\t\tofficial site for more information." +msgid "Denied. Your access level is insufficient to access this page." +msgstr "错误,您的访问级别ä¸å¤Ÿè®¿é—®æœ¬é¡µé¢ã€‚" + +#: errors.php:29 +msgid "Configuration check failed" +msgstr "é…置检查失败" + +#: errors.php:31 +#, fuzzy +msgid "Your version of MySQL is not currently supported. Please see official site for more information." msgstr "" -"䏿”¯æŒä½ çš„MySQL版本. 请访问 \n" -"\t\tå®˜æ–¹ç½‘ç«™èŽ·å–æ›´å¤šä¿¡æ¯ã€‚" +"ä½ çš„ MySQL 版本与本程åºä¸å…¼å®¹ã€‚\n" +"\t\t请去官方网站查阅相关信æ¯ã€‚" -#: errors.php:32 +#: errors.php:35 msgid "SQL escaping test failed, check your database and PHP configuration" -msgstr "" +msgstr "SQL 脱出测试失败,请检查您的数æ®åº“å’Œ PHP 设置。" + +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "找ä¸åˆ°ä¿¡æ¯æºã€‚" + +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "未找到用户" + +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "读å–中,请ç¨å€™â€¦â€¦" -#: functions.php:1928 -msgid "Session failed to validate (incorrect IP)" -msgstr "" +#: index.php:167 +msgid "Collapse feedlist" +msgstr "收缩侧边æ " -#: functions.php:1998 -msgid "Incorrect username or password" -msgstr "" +#: index.php:170 +msgid "Show articles" +msgstr "显示文章" -#: functions.php:2979 modules/popup-dialog.php:391 -#: modules/pref-filters.php:420 -msgid "All feeds" -msgstr "所有feed" +#: index.php:173 +msgid "Adaptive" +msgstr "自动适应" -#: functions.php:3011 functions.php:3050 functions.php:4447 functions.php:4475 -#: modules/backend-rpc.php:859 modules/pref-feeds.php:1333 -msgid "Uncategorized" -msgstr "未分类" +#: index.php:174 +msgid "All Articles" +msgstr "全部文章" -#: functions.php:3040 functions.php:3689 modules/backend-rpc.php:864 -#: mobile/functions.php:170 -msgid "Special" -msgstr "专用" +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "加星标的" -#: functions.php:3042 functions.php:3691 prefs.php:114 -#: modules/backend-rpc.php:869 help/4.php:12 mobile/functions.php:197 -msgid "Labels" -msgstr "标记" +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "å·²å‘布" -#: functions.php:3087 help/3.php:60 offline.js:493 offline.js:1425 -msgid "Starred articles" -msgstr "星级文章" +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 +msgid "Unread" +msgstr "未读" -#: functions.php:3089 modules/pref-feeds.php:1492 help/3.php:61 -msgid "Published articles" -msgstr "å·²å‘布文章" +#: index.php:178 +msgid "With Note" +msgstr "笔记" -#: functions.php:3091 help/3.php:59 -#, fuzzy -msgid "Fresh articles" -msgstr "星级文章" +#: index.php:179 +msgid "Ignore Scoring" +msgstr "忽略评分" -#: functions.php:3093 help/3.php:58 offline.js:488 offline.js:1427 -#, fuzzy -msgid "All articles" -msgstr "所有文章" +#: index.php:182 +msgid "Sort articles" +msgstr "æŽ’åºæ–‡ç« " -#: functions.php:3095 -#, fuzzy -msgid "Archived articles" -msgstr "星级文章" +#: index.php:185 +msgid "Default" +msgstr "默认" -#: functions.php:4200 -msgid "Generated feed" -msgstr "产生feed" +#: index.php:186 +msgid "Newest first" +msgstr "最新优先" -#: functions.php:4205 functions.php:5553 modules/popup-dialog.php:82 -#: modules/pref-feeds.php:1087 modules/pref-feeds.php:1297 -#: modules/pref-filters.php:377 modules/pref-labels.php:183 -#: modules/pref-users.php:419 offline.js:408 -msgid "Select:" -msgstr "选择:" +#: index.php:187 +msgid "Oldest first" +msgstr "最早优先" -#: functions.php:4206 modules/popup-dialog.php:83 modules/pref-feeds.php:1088 -#: modules/pref-feeds.php:1298 modules/pref-filters.php:378 -#: modules/pref-labels.php:184 modules/pref-users.php:420 -msgid "All" -msgstr "所有" +#: index.php:188 +msgid "Title" +msgstr "标题" -#: functions.php:4207 functions.php:4224 tt-rss.php:213 -msgid "Unread" -msgstr "未读" +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 +msgid "Mark as read" +msgstr "标记为已读" -#: functions.php:4208 -#, fuzzy -msgid "Invert" -msgstr "(逆)" +#: index.php:195 +msgid "Older than one day" +msgstr "一天å‰" -#: functions.php:4209 modules/popup-dialog.php:84 modules/pref-feeds.php:1089 -#: modules/pref-feeds.php:1299 modules/pref-filters.php:379 -#: modules/pref-labels.php:185 modules/pref-users.php:421 -msgid "None" -msgstr "æ— " +#: index.php:198 +msgid "Older than one week" +msgstr "一周å‰" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "两周å‰" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "连接æœåŠ¡å™¨å‡ºé”™." -#: functions.php:4217 tt-rss.php:178 offline.js:184 +#: index.php:223 msgid "Actions..." -msgstr "激活..." +msgstr "æ“作" -#: functions.php:4223 +#: index.php:225 #, fuzzy -msgid "Selection toggle:" -msgstr "选择:" +msgid "Preferences..." +msgstr "å好设置" -#: functions.php:4225 tt-rss.php:212 -msgid "Starred" -msgstr "星级" +#: index.php:226 +msgid "Search..." +msgstr "æœç´¢" -#: functions.php:4226 -msgid "Published" -msgstr "å·²å‘布" +#: index.php:227 +msgid "Feed actions:" +msgstr "ä¿¡æ¯æºæ“作:" -#: functions.php:4227 -#, fuzzy -msgid "Selection:" -msgstr "选择:" +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "è®¢é˜…ä¿¡æ¯æº" -#: functions.php:4228 localized_schema.php:16 tt-rss.php:187 tt-rss.php:230 -msgid "Mark as read" -msgstr "标记为已读" +#: index.php:229 +msgid "Edit this feed..." +msgstr "ç¼–è¾‘ä¿¡æ¯æº" -#: functions.php:4234 -msgid "Archive" -msgstr "" +#: index.php:230 +msgid "Rescore feed" +msgstr "ä¸ºä¿¡æ¯æºé‡æ–°è¯„分" -#: functions.php:4236 -msgid "Move back" -msgstr "" +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "å–æ¶ˆè®¢é˜…" -#: functions.php:4237 -#, fuzzy -msgid "Delete" -msgstr "默认" +#: index.php:232 +msgid "All feeds:" +msgstr "å…¨éƒ¨ä¿¡æ¯æºï¼š" + +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "éšè—(显示)已读信æ¯" -#: functions.php:4242 +#: index.php:235 +msgid "Other actions:" +msgstr "å…¶ä»–æ“作:" + +#: index.php:236 +#: include/functions2.php:78 #, fuzzy -msgid "Assign label:" -msgstr "指定标签" +msgid "Toggle widescreen mode" +msgstr "切æ¢å®½å±æ¨¡å¼" -#: functions.php:4283 -msgid "Click to collapse category" -msgstr "" +#: index.php:237 +msgid "Create label..." +msgstr "创建预定义标签" -#: functions.php:4493 -msgid "No feeds to display." -msgstr "æ— feed显示。" +#: index.php:238 +msgid "Create filter..." +msgstr "创建过滤器" -#: functions.php:4510 -msgid "Tags" -msgstr "标签" +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "å¿«æ·é”®å¸®åŠ©" + +#: index.php:248 +msgid "Logout" +msgstr "注销" -#: functions.php:4669 -msgid "audio/mpeg" +#: index.php:254 +msgid "Updates are available from Git." msgstr "" -#: functions.php:4795 -#, fuzzy -msgid " - " -msgstr ", ç”± - " +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "å好设置" -#: functions.php:4820 functions.php:5580 -msgid "Edit tags for this article" -msgstr "" +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "å¿«æ·é”®" -#: functions.php:4826 functions.php:5563 -#, fuzzy -msgid "Show article summary in new window" -msgstr "æ–°çª—å£æ‰“开文章连结" +#: prefs.php:112 +msgid "Exit preferences" +msgstr "退出å好设置" -#: functions.php:4833 functions.php:5570 -#, fuzzy -msgid "Publish article with a note" -msgstr "å‘布文章" +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "ä¿¡æ¯æº" -#: functions.php:4850 functions.php:5441 -msgid "Originally from:" -msgstr "" +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "过滤器" -#: functions.php:4863 functions.php:5454 -#, fuzzy -msgid "Feed URL" -msgstr "Feed" +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "预定义标签" -#: functions.php:4903 functions.php:5484 -#, fuzzy -msgid "unknown type" -msgstr "未知错误" +#: prefs.php:133 +msgid "Users" +msgstr "用户" -#: functions.php:4943 functions.php:5527 -msgid "Attachment:" -msgstr "" +#: prefs.php:136 +msgid "System" +msgstr "系统" -#: functions.php:4945 functions.php:5529 -msgid "Attachments:" -msgstr "" +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "创建新的å¸å·" -#: functions.php:4965 prefs.php:142 tt-rss.php:101 modules/help.php:21 -#: modules/popup-dialog.php:53 modules/popup-dialog.php:154 -#: modules/popup-dialog.php:181 modules/popup-dialog.php:230 -#: modules/popup-dialog.php:575 modules/popup-dialog.php:634 -#: modules/pref-feeds.php:1140 modules/pref-users.php:96 -msgid "Close this window" -msgstr "关闭此窗å£" +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "新用户注册功能已被管ç†å‘˜ç¦ç”¨ã€‚" + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "返回至 Tiny Tiny RSS" -#: functions.php:5021 -msgid "Feed not found." -msgstr "未找到Feed." +#: register.php:218 +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 "您的临时密ç å°†è¢«å‘é€è‡³æ‚¨çš„邮箱。邮件å‘é€åŽï¼Œ24å°æ—¶ä¹‹å†…没有登录的å¸å·ä¼šè¢«è‡ªåŠ¨æ¸…ç†ã€‚" -#: functions.php:5090 -msgid "" -"Could not display feed (query failed). Please check label match syntax or " -"local configuration." -msgstr "无法显示feed(查询失败); 请核对标签匹é…语法或本地é…ç½®." +#: register.php:224 +msgid "Desired login:" +msgstr "希望使用的用户å:" -#: functions.php:5254 functions.php:5341 -#, fuzzy -msgid "mark as read" -msgstr "标记为已读" +#: register.php:227 +msgid "Check availability" +msgstr "检查å¯ç”¨æ€§" -#: functions.php:5417 functions.php:5424 -#, fuzzy -msgid "Click to expand article" -msgstr "星级文章" +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "电å­é‚®ç®±ï¼š" -#: functions.php:5587 -#, fuzzy -msgid "toggle unread" -msgstr "触å‘开关" +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "二加二等于几:" -#: functions.php:5606 -#, fuzzy -msgid "No unread articles found to display." -msgstr "未找到文章。" +#: register.php:235 +msgid "Submit registration" +msgstr "æäº¤æ³¨å†Œä¿¡æ¯" -#: functions.php:5609 -#, fuzzy -msgid "No updated articles found to display." -msgstr "未找到文章。" +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "您的注册信æ¯ä¸å®Œæ•´ã€‚" -#: functions.php:5612 -#, fuzzy -msgid "No starred articles found to display." -msgstr "未找到文章。" +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "抱歉,该用户å已被å ç”¨ã€‚" -#: functions.php:5616 -msgid "" -"No articles found to display. You can assign articles to labels manually " -"(see the Actions menu above) or use a filter." -msgstr "" +#: register.php:287 +msgid "Registration failed." +msgstr "注册失败。" -#: functions.php:5618 offline.js:443 -#, fuzzy -msgid "No articles found to display." -msgstr "未找到文章。" +#: register.php:334 +msgid "Account created successfully." +msgstr "å¸å·åˆ›å»ºæˆåŠŸã€‚" -#: functions.php:6362 tt-rss.php:192 -#, fuzzy -msgid "Create label..." -msgstr "创建标记" +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "ç”¨æˆ·æ³¨å†ŒåŠŸèƒ½ç›®å‰æ²¡æœ‰å¯ç”¨ã€‚" -#: functions.php:6375 +#: update.php:62 #, fuzzy -msgid "(remove)" -msgstr "移除" +msgid "Tiny Tiny RSS data update script." +msgstr "Tiny Tiny RSS æ•°æ®æ›´æ–°è„šæœ¬ã€‚" -#: functions.php:6427 -msgid "no tags" -msgstr "无标签" - -#: functions.php:6456 -msgid "edit note" -msgstr "" +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "未分类" -#: localized_schema.php:9 tt-rss.php:222 modules/popup-dialog.php:381 -#: modules/pref-feeds.php:1310 modules/pref-feeds.php:1369 -msgid "Title" -msgstr "标题" +#: include/feedbrowser.php:84 +#, fuzzy, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d 个存档的文章" -#: localized_schema.php:10 -msgid "Title or Content" -msgstr "标题或内容" +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "æœªæ‰¾åˆ°ä¿¡æ¯æºã€‚" -#: localized_schema.php:11 -msgid "Link" -msgstr "链接" +#: include/functions2.php:52 +msgid "Navigation" +msgstr "导航" -#: localized_schema.php:12 modules/popup-dialog.php:382 -msgid "Content" -msgstr "内容" +#: include/functions2.php:53 +#, fuzzy +msgid "Open next feed" +msgstr "æ˜¾ç¤ºä¸‹ä¸€ä¸ªä¿¡æ¯æº" -#: localized_schema.php:13 -msgid "Article Date" -msgstr "" +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "显示å‰ä¸€ä¸ªä¿¡æ¯æº" -#: localized_schema.php:15 -msgid "Filter article" -msgstr "过滤文章" +#: include/functions2.php:55 +#, fuzzy +msgid "Open next article" +msgstr "显示下一篇文章" -#: localized_schema.php:17 -msgid "Set starred" -msgstr "设置星级" +#: include/functions2.php:56 +#, fuzzy +msgid "Open previous article" +msgstr "显示å‰ä¸€ç¯‡æ–‡ç« " -#: localized_schema.php:18 viewfeed.js:545 viewfeed.js:659 -msgid "Publish article" -msgstr "å‘布文章" +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "显示下一篇文章 (ä¸è¦åœ¨é•¿æ–‡ç« ä¸­æ»šåЍ)" -#: localized_schema.php:19 -msgid "Assign tags" -msgstr "指定标签" +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "显示å‰ä¸€ç¯‡æ–‡ç«  (ä¸è¦åœ¨é•¿æ–‡ç« ä¸­æ»šåЍ)" -#: localized_schema.php:20 -#, fuzzy -msgid "Assign label" -msgstr "指定标签" +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "跳转至下一篇文章 (ä¸è¦å±•开或标记为已读)" -#: localized_schema.php:24 -msgid "General" -msgstr "常规" +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "跳转至å‰ä¸€ç¯‡æ–‡ç«  (ä¸è¦å±•开或标记为已读)" -#: localized_schema.php:26 -msgid "Allow duplicate posts" -msgstr "å…许é‡å¤æ–‡ç« " +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "显示æœç´¢å¯¹è¯æ¡†" -#: localized_schema.php:27 -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 "" -"当é‡åˆ°ä¸€äº›æœ‰è¡Œæ˜ŸçŠ¶ä¸»ä»Žç»“æž„èšåˆï¼Œç¨‹åºå‡ºçް写入冲çªçš„æ—¶å€™ï¼Œè¿™ä¸ªé€‰é¡¹æ˜¯æœ‰ç”¨çš„。当" -"该选项被ç¦ç”¨æ—¶ï¼Œå¼ºåˆ¶æ¥è‡ªä¸ç”¨RSSæºçš„åŒä¸€æ–‡ç« åªæ˜¾ç¤ºä¸€æ¬¡ã€‚" +#: include/functions2.php:62 +#, fuzzy +msgid "Article" +msgstr "全部文章" -#: localized_schema.php:28 -msgid "Default interval between feed updates (in minutes)" -msgstr "默认更新间隔时间(以分钟为å•ä½ï¼‰" +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "é”定加星标的项" -#: localized_schema.php:29 -msgid "Enable e-mail digest" -msgstr "å¼€å¯ç”µå­é‚®ä»¶æ‘˜è¦" +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "é”定å‘布的项" -#: localized_schema.php:30 -msgid "" -"This option enables sending daily digest of new (and unread) headlines on " -"your configured e-mail address" -msgstr "å¯ç”¨è¿™ä¸ªé€‰é¡¹å°†æ¯å¤©å‘逿–°çš„(和未读的) 标题摘è¦åˆ°æ‚¨è®¾ç½®çš„电å­é‚®ç®±" +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "é”定未读项" -#: localized_schema.php:31 -msgid "Purge old posts after this number of days (0 - disables)" -msgstr "ä»Žè¿™ä¸ªå¤©æ•°ä¹‹åŽæ¸…除旧的文章(0为ä¸å¯ç”¨ï¼‰" +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "编辑自定义标签" -#: localized_schema.php:32 -msgid "Update post on checksum change" -msgstr "æ›´æ–°åŽæ ¡éªŒä¿®æ”¹" +#: include/functions2.php:67 +#, fuzzy +msgid "Dismiss selected" +msgstr "ä¸å†æ˜¾ç¤ºæ‰€é€‰çš„æ–‡ç« " -#: localized_schema.php:33 +#: include/functions2.php:68 #, fuzzy -msgid "Mark articles in e-mail digest as read" -msgstr "标记 %s 中所有访问过的主题为已读" +msgid "Dismiss read" +msgstr "ä¸å†æ˜¾ç¤ºå·²è¯»æ–‡ç« " -#: localized_schema.php:34 +#: include/functions2.php:69 #, fuzzy -msgid "Enable offline reading" -msgstr "å¼€å¯feed分类" +msgid "Open in new window" +msgstr "åœ¨æ–°çª—å£æ‰“开文章" -#: localized_schema.php:35 -msgid "Synchronize new articles for offline reading using Google Gears." -msgstr "" +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "将䏋颿–‡ç« æ ‡ä¸ºå·²è¯»" -#: localized_schema.php:37 -msgid "Interface" -msgstr "界é¢" +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "å°†ä¸Šé¢æ–‡ç« æ ‡ä¸ºå·²è¯»" -#: localized_schema.php:39 -msgid "Combined feed display" -msgstr "feedè”åˆæ˜¾ç¤ºã€‚" +#: include/functions2.php:72 +#, fuzzy +msgid "Scroll down" +msgstr "å‘下滚动" -#: localized_schema.php:40 -msgid "" -"Display expanded list of feed articles, instead of separate displays for " -"headlines and article content" -msgstr "展开显示feed文章,替代分开显示æè¦å’Œæ–‡ç« å†…容的形å¼" +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "å‘上滚动" -#: localized_schema.php:41 -msgid "Default article limit" -msgstr "默认文章é™åˆ¶" +#: include/functions2.php:74 +#, fuzzy +msgid "Select article under cursor" +msgstr "选择鼠标指å‘的文章" -#: localized_schema.php:42 -msgid "" -"Default limit for articles to display, any custom number you like (0 - " -"disables)." -msgstr "" +#: include/functions2.php:75 +msgid "Email article" +msgstr "通过邮件å‘逿–‡ç« " -#: localized_schema.php:43 -msgid "Enable feed categories" -msgstr "å¼€å¯feed分类" +#: include/functions2.php:76 +#, fuzzy +msgid "Close/collapse article" +msgstr "关闭/æŠ˜å æ–‡ç« " -#: localized_schema.php:44 -msgid "Enable search toolbar" -msgstr "" +#: include/functions2.php:77 +#, fuzzy +msgid "Toggle article expansion (combined mode)" +msgstr "åˆ‡æ¢æ–‡ç« å±•å¼€ (连续模å¼)" -#: localized_schema.php:45 -msgid "Hide feeds with no unread messages" -msgstr "éšè—feedæºä»¥è¯»ä¿¡æ¯" +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +#, fuzzy +msgid "Toggle embed original" +msgstr "切æ¢åµŒå…¥æ¨¡å¼" + +#: include/functions2.php:80 +#, fuzzy +msgid "Article selection" +msgstr "文章选择" -#: localized_schema.php:46 -msgid "Mark articles as read automatically" -msgstr "自动标志文章为已读" +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "选择所有文章" -#: localized_schema.php:47 +#: include/functions2.php:82 #, fuzzy -msgid "" -"This option enables marking articles as read automatically in combined mode " -"(except for Fresh articles feed) while you scroll article list." -msgstr "å¯ç”¨è¯¥é€‰é¡¹æ—¶ï¼Œå½“你在è”åˆæ¨¡å¼ä¸‹æ»šåŠ¨æ–‡ç« åˆ—è¡¨æ—¶è‡ªåŠ¨ç¼–è¾‘æ–‡ç« ä¸ºå·²è¯»ã€‚" +msgid "Select unread" +msgstr "选择未读文章" -#: localized_schema.php:48 -msgid "On catchup show next feed" -msgstr "自动显示未读" +#: include/functions2.php:83 +#, fuzzy +msgid "Select starred" +msgstr "选择加星标文章" -#: localized_schema.php:49 -msgid "" -"When \"Mark as read\" button is clicked in toolbar, automatically open next " -"feed with unread articles." -msgstr "" -"当工具æ ä¸Š \"标志为已读 \" 按钮被点击时,自动打开下一个RSSæºä¸­æœªè¯»æ–‡ç« ã€‚" +#: include/functions2.php:84 +#, fuzzy +msgid "Select published" +msgstr "选择已å‘布文章" -#: localized_schema.php:50 -msgid "Open article links in new browser window" -msgstr "æ–°çª—å£æ‰“开文章连结" +#: include/functions2.php:85 +#, fuzzy +msgid "Invert selection" +msgstr "å选文章" -#: localized_schema.php:51 -msgid "Reverse headline order (oldest first)" -msgstr "åå‘æè¦æŽ’åˆ—ï¼ˆä»Žæ—§åˆ°æ–°ï¼‰" +#: include/functions2.php:86 +#, fuzzy +msgid "Deselect everything" +msgstr "å–æ¶ˆé€‰æ‹©æ‰€æœ‰æ–‡ç« " -#: localized_schema.php:52 -msgid "Show content preview in headlines list" -msgstr "在æè¦åˆ—表中显示内容预览" +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "ä¿¡æ¯æº" -#: localized_schema.php:53 -msgid "Sort feeds by unread articles count" -msgstr "ä»¥æœªè¯»æ–‡ç« æ•°é‡æŽ’åºfeedæº" +#: include/functions2.php:88 +#, fuzzy +msgid "Refresh current feed" +msgstr "刷新当å‰ä¿¡æ¯æº" -#: localized_schema.php:54 -msgid "User stylesheet URL" -msgstr "用户样å¼è¡¨ URL" +#: include/functions2.php:89 +#, fuzzy +msgid "Un/hide read feeds" +msgstr "显示/éšè— 已读信æ¯" -#: localized_schema.php:55 -msgid "Link to user stylesheet to override default style, disabled if empty." -msgstr "用户样å¼è¡¨ä¼˜å…ˆï¼Œç•™ç©ºä¸ºä¸å¯ç”¨ã€‚" +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "è®¢é˜…ä¿¡æ¯æº" -#: localized_schema.php:56 -msgid "Maximum age of fresh articles (in hours)" -msgstr "" +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "ç¼–è¾‘ä¿¡æ¯æº" -#: localized_schema.php:57 +#: include/functions2.php:93 #, fuzzy -msgid "Hide feedlist" -msgstr "éšè—我的Feed列表" +msgid "Reverse headlines" +msgstr "å呿ޒåº" -#: localized_schema.php:58 -msgid "" -"This option hides feedlist and allows it to be toggled on the fly, useful " -"for small screens." -msgstr "" +#: include/functions2.php:94 +#, fuzzy +msgid "Debug feed update" +msgstr "è°ƒè¯•ä¿¡æ¯æºæ›´æ–°" -#: localized_schema.php:59 -msgid "Group headlines in virtual feeds" -msgstr "" +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "æ ‡è®°æ‰€æœ‰ä¿¡æ¯æºä¸ºå·²è¯»" -#: localized_schema.php:60 -msgid "" -"When this option is enabled, headlines in Special feeds and Labels are " -"grouped by feeds" -msgstr "" +#: include/functions2.php:96 +#, fuzzy +msgid "Un/collapse current category" +msgstr "展开/æŠ˜å  å½“å‰åˆ†ç±»" -#: localized_schema.php:62 -msgid "Advanced" -msgstr "高级" +#: include/functions2.php:97 +#, fuzzy +msgid "Toggle combined mode" +msgstr "切æ¢è¿žç»­æ¨¡å¼" -#: localized_schema.php:64 -msgid "Blacklisted tags" -msgstr "被列入黑åå•的标签" +#: include/functions2.php:98 +#, fuzzy +msgid "Toggle auto expand in combined mode" +msgstr "切æ¢è¿žç»­æ¨¡å¼ä¸­çš„自动展开功能" -#: localized_schema.php:65 -msgid "" -"When auto-detecting tags in articles these tags will not be applied (comma-" -"separated list)." -msgstr "自动检测文章中标签时,这些标签ä¸é€‚用(用åŠè§’逗å·éš”开)" +#: include/functions2.php:99 +#, fuzzy +msgid "Go to" +msgstr "跳转至……" -#: localized_schema.php:66 -msgid "Confirm marking feed as read" -msgstr "确认标记所有Feed为已读..." +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "全部文章" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "最新的" -#: localized_schema.php:67 +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "标签云" + +#: include/functions2.php:106 #, fuzzy -msgid "Enable feed icons" -msgstr "å¼€å¯feed分类" +msgid "Other" +msgstr "å…¶ä»–ä¿¡æ¯æº" -#: localized_schema.php:68 -msgid "Enable labels" -msgstr "开坿 ‡ç­¾" +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "创建预定义标签" -#: localized_schema.php:69 -msgid "" -"Experimental support for virtual feeds based on user crafted SQL queries. " -"This feature is highly experimental and at this point not user friendly. Use " -"with caution." -msgstr "SQL支æŒï¼Œè¿™æ˜¯æµ‹è¯•功能,请谨慎使用。" +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "创建过滤器" -#: localized_schema.php:70 -msgid "Long date format" -msgstr "长的时间格å¼" +#: include/functions2.php:109 +#, fuzzy +msgid "Un/collapse sidebar" +msgstr "æ”¶èµ·ä¾§è¾¹æ " -#: localized_schema.php:71 -msgid "Set articles as unread on update" -msgstr "æ›´æ–°åŽæ ‡è®°æ–‡ç« ä¸ºæœªè¯»" +#: include/functions2.php:110 +#, fuzzy +msgid "Show help dialog" +msgstr "æ˜¾ç¤ºå¸®åŠ©å¯¹è¯æ¡†" -#: localized_schema.php:72 -msgid "Short date format" -msgstr "短的时间格å¼" +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "æœç´¢ç»“果:%s" -#: localized_schema.php:73 -msgid "Show additional information in feedlist" -msgstr "在feed列表中显示附加信æ¯" +#: include/functions2.php:1258 +#: classes/feeds.php:730 +#, fuzzy +msgid "comment" +msgid_plural "comments" +msgstr[0] "评论些什么?" -#: localized_schema.php:74 -msgid "Strip unsafe tags from articles" -msgstr "从文章中过滤ä¸å®‰å…¨æ ‡ç­¾" +#: include/functions2.php:1262 +#: classes/feeds.php:734 +#, fuzzy +msgid "comments" +msgstr "评论些什么?" -#: localized_schema.php:75 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "阅读文章时过滤所有常è§html标签" +#: include/functions2.php:1303 +msgid " - " +msgstr " - " -#: localized_schema.php:76 -msgid "Use more accessible date/time format for headlines" -msgstr "æè¦ä½¿ç”¨æ›´æ–¹ä¾¿çš„ æ—¥æœŸï¼æ—¶é—´ æ ¼å¼" +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "无标签" -#: localized_schema.php:77 -msgid "Automatically expand articles in combined mode" -msgstr "" +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "为本文编辑自定义标签" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "æ¥æºï¼š" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "ä¿¡æ¯æº URL" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "关闭本窗å£" -#: localized_schema.php:78 +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(编辑注记)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "未知类型" + +#: include/functions2.php:1953 #, fuzzy -msgid "Purge unread articles" -msgstr "星级文章" +msgid "Attachments" +msgstr "附件:" -#: localized_schema.php:79 -msgid "Show special feeds when hiding read feeds" +#: include/functions.php:964 +#, php-format +msgid "%d min" msgstr "" -#: localized_schema.php:80 -msgid "Prefer more accurate feedlist counters to UI speed" -msgstr "" +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "特殊区域" -#: localized_schema.php:81 -msgid "Enable inline MP3 player" -msgstr "" +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "å…¨éƒ¨ä¿¡æ¯æº" -#: localized_schema.php:82 -msgid "" -"Enable the Flash-based XSPF Player to play MP3-format podcast enclosures." -msgstr "" +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "加星标文章" -#: localized_schema.php:83 -msgid "Do not show images in articles" -msgstr "" +#: include/functions.php:1969 +msgid "Published articles" +msgstr "å·²å‘布文章" -#: localized_schema.php:84 -msgid "Enable external API" -msgstr "" +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "最新更新的文章" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "存档的文章" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "最近的阅读" -#: login_form.php:120 modules/popup-dialog.php:271 modules/pref-feeds.php:339 -#: modules/pref-feeds.php:561 mobile/login_form.php:38 +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 msgid "Login:" -msgstr "登陆:" +msgstr "登陆:" -#: login_form.php:124 modules/popup-dialog.php:273 modules/pref-feeds.php:344 -#: modules/pref-feeds.php:567 mobile/login_form.php:43 +#: include/login_form.php:200 +#: classes/handler/public.php:560 msgid "Password:" -msgstr "密ç :" +msgstr "密ç ï¼š" -#: login_form.php:129 -msgid "Language:" -msgstr "语言:" - -#: login_form.php:139 +#: include/login_form.php:206 #, fuzzy +msgid "I forgot my password" +msgstr "忘记密ç " + +#: include/login_form.php:212 msgid "Profile:" -msgstr "标题:" +msgstr "å好:" -#: login_form.php:152 mobile/login_form.php:28 -#, fuzzy +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "默认å好设置" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "çœæµé‡" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "䏿˜¾ç¤ºæ–‡ç« ä¸­çš„图片,å‡å°‘自动刷新。" + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "è®°ä½æˆ‘" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 msgid "Log in" +msgstr "登录" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "无法验è¯ä¼šè¯ï¼ˆIP 错误)" + +#: include/sessions.php:67 +#, fuzzy +msgid "Session failed to validate (schema version changed)" +msgstr "无法验è¯ä¼šè¯ï¼ˆschema版本å‘生å˜åŒ–)" + +#: include/sessions.php:85 +#, fuzzy +msgid "Session failed to validate (user not found)" +msgstr "无法验è¯ä¼šè¯ï¼ˆæ²¡æœ‰æ‰¾åˆ°è¯¥ç”¨æˆ·ï¼‰" + +#: include/sessions.php:94 +#, fuzzy +msgid "Session failed to validate (password changed)" +msgstr "无法验è¯ä¼šè¯ï¼ˆå¯†ç é”™è¯¯ï¼‰" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "在 Tiny Tiny RSS 的维基上å¯ä»¥æ‰¾åˆ°å…¶ä»–ç•Œé¢æŠ€å·§ã€‚" + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "å¿«æ·é”®" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "Shift" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "未找到帮助主题。" + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +#, fuzzy +msgid "Share with Tiny Tiny RSS" +msgstr "在 Tiny Tiny RSS 中分享订阅" + +#: classes/handler/public.php:506 +#, fuzzy +msgid "Title:" +msgstr "标题" + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:510 +#, fuzzy +msgid "Content:" +msgstr "内容" + +#: classes/handler/public.php:512 +#, fuzzy +msgid "Labels:" +msgstr "预定义标签" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "被分享的文章将会出现在已å‘å¸ƒä¿¡æ¯æºä¸­ã€‚" + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "分享" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "å–æ¶ˆ" + +#: classes/handler/public.php:555 +#, fuzzy +msgid "Not logged in" +msgstr "未登录" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "ç”¨æˆ·åæˆ–密ç é”™è¯¯" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "å·²ç»è®¢é˜…到 %s." + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "订阅到 %s." + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "无法订阅到 %s。" + +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "在 %s ä¸­æ²¡æœ‰æ‰¾åˆ°ä¿¡æ¯æºã€‚" + +#: classes/handler/public.php:678 +#, fuzzy +msgid "Multiple feed URLs found." +msgstr "å‘çŽ°äº†å¤šä¸ªä¿¡æ¯æºã€‚" + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "无法订阅 %s。
    æ— æ³•ä¸‹è½½ä¿¡æ¯æºçš„ URL。" + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "è®¢é˜…é€‰ä¸­çš„ä¿¡æ¯æº" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "编辑订阅选项" + +#: classes/handler/public.php:762 +#, fuzzy +msgid "Password recovery" +msgstr "找回密ç " + +#: classes/handler/public.php:805 +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "ä½ éœ€è¦æä¾›åˆæ³•的用户åå’ŒEmail地å€ã€‚密ç é‡ç½®é“¾æŽ¥å°†ä¼šå‘é€åˆ°ä½ çš„Email中。" + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "é‡ç½®å¯†ç " + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "表å•中的信æ¯ä¸å®Œæ•´æˆ–䏿­£ç¡®ã€‚" + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +#, fuzzy +msgid "Go back" +msgstr "返回" + +#: classes/handler/public.php:878 +#, fuzzy +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] 密ç é‡ç½®è¯·æ±‚" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "对ä¸èµ·ï¼Œæ²¡æœ‰æ‰¾åˆ°ç”¨æˆ·åå’ŒEmail组åˆã€‚" + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "访问级别ä¸è¶³ï¼Œæ— æ³•è¿è¡Œè„šæœ¬ã€‚" + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "æ•°æ®åº“更新管ç†å™¨" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "执行更新" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "以RSSä¿¡æ¯æºæ–¹å¼é˜…读" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "以 RSS å½¢å¼é˜…读" + +#: classes/feeds.php:62 +#, fuzzy, php-format +msgid "Last updated: %s" +msgstr "上次更新:" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "全部" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "å选" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "æ— " + +#: classes/feeds.php:99 +#, fuzzy +msgid "More..." +msgstr "更多……" + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "é”定选择:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "选择:" + +#: classes/feeds.php:110 +#, fuzzy +msgid "Set score" +msgstr "评分" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "存档" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "移回原ä½" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "删除" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "通过邮件转å‘" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "ä¿¡æ¯æºï¼š" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "找ä¸åˆ°ä¿¡æ¯æºã€‚" + +#: classes/feeds.php:268 +#, fuzzy +msgid "Never" +msgstr "ä»Žä¸æ¸…ç†" + +#: classes/feeds.php:393 +#, fuzzy, php-format +msgid "Imported at %s" +msgstr "导入" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +#, fuzzy +msgid "mark feed as read" +msgstr "æ ‡è®°ä¿¡æ¯æºä¸ºå·²è¯»" + +#: classes/feeds.php:608 +#, fuzzy +msgid "Collapse article" +msgstr "æŠ˜å æ–‡ç« " + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "没有未读文章。" + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "没有最新更新的文章。" + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "没有加星标的文章。" + +#: classes/feeds.php:778 +#, fuzzy +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 "本标签下没有文章。你å¯ä»¥é€šè¿‡æ‰‹åŠ¨æˆ–è¿‡æ»¤å™¨çš„æ–¹å¼ä¸ºæ–‡ç« æ·»åŠ é¢„å®šä¹‰æ ‡ç­¾ï¼ˆå‚考上方动作èœå•)。" + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "暂时没有文章。" + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "ä¸Šæ¬¡ä¿¡æ¯æºæ›´æ–°æ—¶é—´ï¼š%s" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "éƒ¨åˆ†ä¿¡æ¯æºæ›´æ–°é”™è¯¯ï¼ˆç‚¹å‡»äº†è§£è¯¦æƒ…)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "æ²¡æœ‰é€‰ä¸­çš„ä¿¡æ¯æºã€‚" + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +#, fuzzy +msgid "Feed or site URL" +msgstr "ä¿¡æ¯æº URL" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "加入到类别:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "å¯ç”¨çš„ä¿¡æ¯æº" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "登录认è¯" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" msgstr "登陆" -#: login_form.php:155 register.php:148 -msgid "Create new account" -msgstr "" +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "密ç " + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "è¿™ä¸ªä¿¡æ¯æºéœ€è¦è®¤è¯" + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "订阅" -#: login_form.php:169 -msgid "Limit bandwidth usage" +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "æ›´å¤šä¿¡æ¯æº" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "æœç´¢" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "æœ€å—æ¬¢è¿Žçš„ä¿¡æ¯æº" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "ä¿¡æ¯æºå­˜æ¡£" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "é™åˆ¶ï¼š" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "移除" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "查找" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" msgstr "" -#: opml.php:99 opml.php:103 +#: classes/feeds.php:1152 +#, fuzzy +msgid "Search syntax" +msgstr "æœç´¢è¯­æ³•" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "找ä¸åˆ°æ–‡ç« ã€‚" + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "本文的标签,请用逗å·åˆ†å¼€ï¼š" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "ä¿å­˜" + +#: classes/opml.php:28 +#: classes/opml.php:33 msgid "OPML Utility" -msgstr "通用OPML" +msgstr "OPML 工具" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "正在导入 OPML ……" + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "返回å好设置" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "æ·»åŠ ä¿¡æ¯æº: %s" + +#: classes/opml.php:282 +#, fuzzy, php-format +msgid "Duplicate feed: %s" +msgstr "é‡å¤çš„ä¿¡æ¯æº" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "添加预定义标签%s" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "é‡å¤é¢„定义标签: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "å°†å好按键从 %s 设置为 %s" + +#: classes/opml.php:343 +#, fuzzy +msgid "Adding filter..." +msgstr "创建过滤器" + +#: classes/opml.php:421 +#, fuzzy, php-format +msgid "Processing category: %s" +msgstr "加入到类别:" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "上传错误,错误代ç ï¼š%d" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +#, fuzzy +msgid "Unable to move uploaded file." +msgstr "无法移动已上传文件。" + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "错误:请上传 OPML 文件。" + +#: classes/opml.php:499 +#, fuzzy +msgid "Error: unable to find moved OPML file." +msgstr "错误:无法找到移动的OPML文件。" + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "è§£æžæ–‡æ¡£æ—¶å‘生错误。" + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "您的访问级别ä¸å¤Ÿï¼Œæ— æ³•打开这个舌签。" + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "错误日志" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "刷新" + +#: classes/pref/system.php:43 +#, fuzzy +msgid "Clear log" +msgstr "清空日志" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "错误" + +#: classes/pref/system.php:49 +#, fuzzy +msgid "Filename" +msgstr "文件å:" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "消æ¯" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "日期" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "未找到用户" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "注册时间" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "上次登录" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "è®¢é˜…çš„ä¿¡æ¯æºæ•°é‡" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "è®¢é˜…çš„ä¿¡æ¯æº" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "访问级别:" + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "选项" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "已添加用户 %s ,密ç ä¸º%s" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "无法创建用户 %s " + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "用户 %s 已存在。" + +#: classes/pref/users.php:265 +#, fuzzy, php-format +msgid "Changed password of user %s to %s" +msgstr "用户 %s ,密ç ä¿®æ”¹ä¸º%s" + +#: classes/pref/users.php:267 +#, fuzzy, php-format +msgid "Sending new password of user %s to %s" +msgstr "用户 %s ,新密ç å‘é€è‡³%s" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] å¯†ç æ›´æ¢æé†’" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "选择" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "创建用户" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "详细" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "编辑" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "访问级别" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "最åŽç™»é™†" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "点击进行编辑" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "没有定义用户。" + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "没有匹é…的用户。" + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "勾选以å¯ç”¨" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, fuzzy, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "(%d ä¸ªä¿¡æ¯æº)" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "ä¿¡æ¯æºæ ‡é¢˜" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "更新列表" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "文章清ç†ï¼š" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "æç¤ºï¼šå¦‚æžœæ‚¨çš„ä¿¡æ¯æºéœ€è¦éªŒè¯ï¼Œé‚£ä¹ˆæ‚¨éœ€è¦å¡«å†™ç™»å½•ä¿¡æ¯ã€‚Twitter ä¿¡æ¯æºé™¤å¤–。" + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "ä»Žæœ€å—æ¬¢è¿Žçš„ä¿¡æ¯æºä¸­éšè—" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "包å«ç”µå­é‚®ä»¶æ‘˜è¦" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "始终显示图片附件" -#: opml.php:124 -msgid "Importing OPML (using DOMXML extension)..." -msgstr "导入 OPML(需è¦DOMXML扩展)" +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "ä¸è¦åµŒå…¥å›¾ç‰‡" -#: opml.php:128 -msgid "Importing OPML (using DOMDocument extension)..." -msgstr "导入 OPML(需è¦DOMXMDocmentL扩展)" +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "本地缓存图片" -#: opml.php:132 modules/popup-dialog.php:45 -msgid "DOMXML extension is not found. It is required for PHP versions below 5." -msgstr "未检测到DOMXML 扩展, è¦æ±‚PHP5以下版本。" +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "将已更新的文章标记为未读" -#: opml.php:136 -msgid "Return to preferences" -msgstr "返回 我的最爱" +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "图标" -#: prefs.php:63 prefs.php:123 tt-rss.php:65 -msgid "Loading, please wait..." -msgstr "读å–中,请等待..." +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "替æ¢" -#: prefs.php:70 prefs.php:126 tt-rss.php:73 -msgid "" -"Your browser doesn't support Javascript, which is required\n" -"\t\tfor this application to function properly. Please check your\n" -"\t\tbrowser settings." -msgstr "您的æµè§ˆå™¨ä¸æ”¯æŒJavascript, 请检查设置。" +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "釿–°è®¢é˜…ä»¥æŽ¨é€æ›´æ–°" -#: prefs.php:90 tt-rss.php:112 -msgid "Hello," -msgstr "你好," +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "为å¯ç”¨æŽ¨é€çš„ä¿¡æ¯æºé‡ç½® PubSubHubbub 订阅。" -#: prefs.php:92 help/4.php:14 -msgid "Exit preferences" -msgstr "退出我的最爱" +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "全部完æˆã€‚" -#: prefs.php:94 tt-rss.php:122 mobile/functions.php:60 -#: mobile/functions.php:234 -msgid "Logout" -msgstr "注销" +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "æœ‰é”™è¯¯çš„ä¿¡æ¯æº" -#: prefs.php:102 tt-rss.php:196 +#: classes/pref/feeds.php:1279 #, fuzzy -msgid "Keyboard shortcuts" -msgstr "  åˆ›å»ºè¿‡æ»¤å™¨" +msgid "Inactive feeds" +msgstr "åˆ·æ–°æ´»åŠ¨çš„ä¿¡æ¯æº" -#: prefs.php:108 tt-rss.php:114 help/3.php:63 help/4.php:8 -msgid "Preferences" -msgstr "我的最爱" +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "ç¼–è¾‘é€‰å®šçš„ä¿¡æ¯æº" -#: prefs.php:110 -#, fuzzy -msgid "Feeds" -msgstr "Feed" +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "é‡ç½®æŽ’åº" -#: prefs.php:112 help/4.php:11 -#, fuzzy -msgid "Filters" -msgstr "标题:" +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "批é‡è®¢é˜…" -#: prefs.php:117 help/4.php:13 +#: classes/pref/feeds.php:1327 #, fuzzy -msgid "Users" -msgstr "用户" +msgid "Categories" +msgstr "ä¿¡æ¯æºç±»åˆ«" -#: prefs.php:140 tt-rss.php:99 +#: classes/pref/feeds.php:1330 #, fuzzy -msgid "Fatal Exception" -msgstr "致命错误" +msgid "Add category" +msgstr "编辑类别" -#: register.php:152 +#: classes/pref/feeds.php:1334 #, fuzzy -msgid "New user registrations are administratively disabled." -msgstr "Feed æµè§ˆå™¨æœ‰é™åˆ¶" +msgid "Remove selected" +msgstr "ç§»é™¤é€‰ä¸­çš„ä¿¡æ¯æº" -#: register.php:155 register.php:200 register.php:213 register.php:228 -#: register.php:246 register.php:331 register.php:341 register.php:353 -#: update.php:94 update.php:162 modules/pref-feeds.php:954 -msgid "Return to Tiny Tiny RSS" -msgstr "返回Tiny Tiny RSS" +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "更多æ“作" -#: register.php:176 -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 "" +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "手动清除" -#: register.php:182 -msgid "Desired login:" -msgstr "" +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "æ¸…ç©ºä¿¡æ¯æºæ•°æ®" -#: register.php:185 -msgid "Check availability" -msgstr "" +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "ä¸ºæ–‡ç« é‡æ–°è¯„分" -#: register.php:187 -#, fuzzy -msgid "Email:" -msgstr "E-mail:" +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" -#: register.php:190 -msgid "How much is two plus two:" -msgstr "" +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "使用OPMLä½ å¯ä»¥å¯¼å‡ºæˆ–å¯¼å…¥ä¿¡æ¯æºfeeds列表ã€è¿‡æ»¤å™¨ã€æ ‡ç­¾ä»¥åŠè®¾ç½®ã€‚" -#: register.php:193 -msgid "Submit registration" -msgstr "" +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "åªæœ‰ä¸»è¦è®¾ç½®èƒ½å¤Ÿé€šè¿‡OPML文件æ¥è¿›è¡Œè¿ç§»ã€‚" -#: register.php:211 -msgid "Your registration information is incomplete." -msgstr "" +#: classes/pref/feeds.php:1419 +#, fuzzy +msgid "Import my OPML" +msgstr "正在导入 OPML ……" -#: register.php:226 -msgid "Sorry, this username is already taken." -msgstr "" +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "文件å:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "包å«è®¾ç½®" -#: register.php:244 +#: classes/pref/feeds.php:1429 #, fuzzy -msgid "Registration failed." -msgstr "设置检查失败" +msgid "Export OPML" +msgstr "正在导入 OPML ……" -#: register.php:328 -msgid "Account created successfully." -msgstr "" +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "您å¯ä»¥å…¬å¼€å‘布您的 OPML 。网上的任何人都å¯ä»¥é€šè¿‡å¦‚下 URL 订阅该文件。" -#: register.php:350 -msgid "New user registrations are currently closed." +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." msgstr "" -#: tt-rss.php:118 +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "公开的 OPML URL" + +#: classes/pref/feeds.php:1438 #, fuzzy -msgid "Comments?" -msgstr "内容" +msgid "Display published OPML URL" +msgstr "公开的 OPML URL" -#: tt-rss.php:131 -msgid "Offline reading" -msgstr "" +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Firefox 集æˆ" -#: tt-rss.php:138 -#, fuzzy -msgid "Cancel synchronization" -msgstr "ä¿å­˜è®¾ç½®" +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "点击如下链接,å¯ä»¥å°†æœ¬ Tiny Tiny RSS 站点作为一个 Firefox 阅读器使用。" -#: tt-rss.php:141 -msgid "Synchronize" -msgstr "" +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "ç‚¹å‡»æ­¤å¤„å°†æœ¬ç«™æ³¨å†Œä¸ºä¿¡æ¯æºé˜…读器。" -#: tt-rss.php:143 +#: classes/pref/feeds.php:1464 #, fuzzy -msgid "Remove stored data" -msgstr "移除选定标记?" +msgid "Published & shared articles / Generated feeds" +msgstr "å·²å‘布的文章和生æˆçš„ä¿¡æ¯æº" -#: tt-rss.php:145 -#, fuzzy -msgid "Go offline" -msgstr "无链接" +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "å·²å‘布的文章将会输出为公开的 RSS ä¿¡æ¯æºï¼Œç½‘上的任何人å¯ä»¥é€šè¿‡å¦‚下 URL 进行订阅。" -#: tt-rss.php:151 -msgid "New version of Tiny Tiny RSS is available!" -msgstr "" +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "显示 URL" -#: tt-rss.php:158 -#, fuzzy -msgid "Go online" -msgstr "无链接" +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "清空所有生æˆçš„ URL" -#: tt-rss.php:169 tt-rss.js:79 -msgid "tag cloud" -msgstr "标签簇" +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "ä»¥ä¸‹ä¿¡æ¯æºå·²ç»æœ‰ä¸‰ä¸ªæœˆæ²¡æœ‰å†…容更新了(最旧的在最上):" -#: tt-rss.php:179 -#, fuzzy -msgid "Search..." -msgstr "æœç´¢" +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "ç‚¹å‡»ä»¥ç¼–è¾‘ä¿¡æ¯æº" -#: tt-rss.php:180 -msgid "Feed actions:" -msgstr "Feed æ“作:" +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "å–æ¶ˆè®¢é˜…é€‰ä¸­çš„ä¿¡æ¯æº" -#: tt-rss.php:181 -#, fuzzy -msgid "Subscribe to feed..." -msgstr "订阅feed" +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "æ¯è¡Œæ·»åР䏀æ¡RSSæº" -#: tt-rss.php:182 +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "所有将订阅的Feeds, æ¯è¡Œä¸€æ¡" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "Feed需è¦ç™»å½•认è¯ã€‚" + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "ç¬¦åˆæœ¬è¿‡æ»¤å™¨æ¡ä»¶çš„æ–‡ç« ï¼š" + +#: classes/pref/filters.php:185 #, fuzzy -msgid "Edit this feed..." -msgstr "输入feed" +msgid "No recent articles matching this filter have been found." +msgstr "本过滤器下没有匹é…到文章。" -#: tt-rss.php:183 +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 #, fuzzy -msgid "Rescore feed" -msgstr "移除feed中..." +msgid "(inverse)" +msgstr "å选" -#: tt-rss.php:184 modules/pref-feeds.php:465 modules/pref-feeds.php:1193 -msgid "Unsubscribe" -msgstr "退订" +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "" -#: tt-rss.php:186 -msgid "All feeds:" -msgstr "所有feed:" +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "标题" -#: tt-rss.php:188 help/3.php:44 -#, fuzzy -msgid "(Un)hide read feeds" -msgstr "  (显示)éšè—已读feed" +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "匹é…" -#: tt-rss.php:190 -msgid "Other actions:" -msgstr "å…¶ä»–æ“作:" +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "添加" -#: tt-rss.php:193 +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 #, fuzzy -msgid "Create filter..." -msgstr "创建过滤器" +msgid "Apply actions" +msgstr "应用æ“作" -#: tt-rss.php:194 -#, fuzzy -msgid "Reset UI layout" -msgstr "  è®¢é˜…feed" +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "å·²å¯ç”¨" -#: tt-rss.php:195 -#, fuzzy -msgid "Reset category order" -msgstr "移除选定分类?" +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "匹é…ä»»æ„规则" -#: tt-rss.php:205 +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 #, fuzzy -msgid "Collapse feedlist" -msgstr "éšè—我的Feed列表" +msgid "Inverse matching" +msgstr "åå‘匹é…" -#: tt-rss.php:208 -#, fuzzy -msgid "Show articles" -msgstr "星级文章" +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "测试" -#: tt-rss.php:210 -msgid "Adaptive" -msgstr "自适应" +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "连续" -#: tt-rss.php:211 -msgid "All Articles" -msgstr "所有文章" +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "创建" -#: tt-rss.php:214 -msgid "Ignore Scoring" -msgstr "" +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "å选正则表达å¼åŒ¹é…结果" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "on field" -#: tt-rss.php:215 modules/pref-feeds.php:1316 modules/pref-feeds.php:1377 -msgid "Updated" -msgstr "已更新" +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "在" -#: tt-rss.php:218 +#: classes/pref/filters.php:947 #, fuzzy -msgid "Sort articles" -msgstr "星级文章" +msgid "Wiki: Filters" +msgstr "过滤器" -#: tt-rss.php:221 modules/popup-dialog.php:462 modules/pref-filters.php:51 -#: modules/pref-filters.php:469 +#: classes/pref/filters.php:952 #, fuzzy -msgid "Date" -msgstr "æ›´æ–°" +msgid "Save rule" +msgstr "ä¿å­˜è§„则" -#: tt-rss.php:223 -msgid "Score" -msgstr "" +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "添加规则" -#: tt-rss.php:227 modules/pref-feeds.php:296 modules/pref-feeds.php:524 -msgid "Update" -msgstr "æ›´æ–°" +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "执行动作" -#: tt-rss.php:238 tt-rss.php:252 -msgid "No feed selected." -msgstr "无选定feed." +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "æŒ‡å®šå‚æ•°ï¼š" -#: tt-rss.php:242 -msgid "Drag me to resize panels" -msgstr "" +#: classes/pref/filters.php:1019 +#, fuzzy +msgid "Save action" +msgstr "ä¿å­˜æ“作" -#: update.php:19 -msgid "Your access level is insufficient to run this script." -msgstr "æƒé™ä¸è¶³ã€‚" +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +#, fuzzy +msgid "Add action" +msgstr "添加æ“作" -#: update.php:44 -msgid "Database Updater" -msgstr "æ•°æ®åº“æ›´æ–°" +#: classes/pref/filters.php:1042 +#, fuzzy +msgid "[No caption]" +msgstr "[无标题]" -#: update.php:85 -msgid "Could not update database" -msgstr "未能更新数æ®åº“" +#: classes/pref/filters.php:1044 +#, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "" -#: update.php:88 -msgid "Could not find necessary schema file, need version:" -msgstr "未找到必è¦çš„ schema 文件, 需è¦ç‰ˆæœ¬ï¼š" +#: classes/pref/filters.php:1059 +#, fuzzy, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "ä¿¡æ¯æºåŠ¨ä½œ" -#: update.php:89 -msgid ", found: " -msgstr ",找到" +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "颜色" -#: update.php:92 -msgid "Tiny Tiny RSS database is up to date." -msgstr "Tiny Tiny RSS æ•°æ®åº“是最新版。" +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "å‰ç«¯ï¼š" -#: update.php:102 -msgid "Please backup your database before proceeding." -msgstr "" +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "背景:" -#: update.php:104 +#: classes/pref/labels.php:232 #, php-format -msgid "" -"Your Tiny Tiny RSS database needs update to the latest version (%d to " -"%d)." -msgstr "您的 Tiny Tiny RSS æ•°æ®åº“需è¦å‡çº§åˆ° (%d to %d)." - -#: update.php:118 -msgid "Perform updates" -msgstr "å®Œæˆæ›´æ–°" - -#: update.php:123 -msgid "Performing updates..." -msgstr "更新完æˆä¸­..." +msgid "Created label %s" +msgstr "创建预定义标签 %s" -#: update.php:129 -#, php-format -msgid "Updating to version %d..." -msgstr "更新到版本 %d..." +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "清空颜色" -#: update.php:142 -msgid "Checking version... " -msgstr "检查版本" +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "通用" -#: update.php:148 -msgid "OK!" -msgstr "OKï¼" +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "界é¢" -#: update.php:150 -msgid "ERROR!" -msgstr "错误ï¼" +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "高级" -#: update.php:158 -#, php-format -msgid "" -"Finished. Performed %d update(s) up to schema\n" -"\t\t\tversion %d." -msgstr "" -"完æˆã€‚å®Œæˆ %d æ›´æ–°(s) schema\n" -"\t\t\t版本 %d." +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "摘è¦" -#: modules/help.php:6 +#: classes/pref/prefs.php:25 #, fuzzy -msgid "Help" -msgstr "你好," - -#: modules/help.php:17 -msgid "Help topic not found." -msgstr "未找到帮助主题。" +msgid "Allow duplicate articles" +msgstr "å…许é‡å¤æ–‡ç« " -#: modules/opml_domdoc.php:52 modules/opml_domxml.php:54 -#, fuzzy, php-format -msgid "
  • Adding category %s.
  • " -msgstr "添加分类 %s." +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "被列入黑åå•的标签" -#: modules/opml_domdoc.php:101 modules/opml_domxml.php:103 +#: classes/pref/prefs.php:26 #, fuzzy -msgid "is already imported." -msgstr "已导入" +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "自动检测文章标签时,这些标签将被忽略(åŠè§’逗å·éš”开的列表)。" + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "自动标记文章为已读" -#: modules/opml_domdoc.php:121 modules/opml_domxml.php:122 +#: classes/pref/prefs.php:27 #, fuzzy -msgid "OK" -msgstr "OKï¼" +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "在滚动页é¢çš„åŒæ—¶è‡ªåŠ¨å°†æ–‡ç« æ ‡è®°ä¸ºå·²è¯»ã€‚" -#: modules/opml_domdoc.php:130 modules/opml_domxml.php:134 -msgid "Error while parsing document." -msgstr "è§£æžæ–‡æ¡£æ—¶å‘生错误。" +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "在连续模å¼ä¸‹è‡ªåŠ¨å±•å¼€æ–‡ç« " -#: modules/opml_domdoc.php:134 modules/opml_domxml.php:138 -msgid "Error: please upload OPML file." -msgstr "错误:请上传OPML文件。" +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "åˆå¹¶ä¿¡æ¯æºï¼Œä½¿ä¹‹è¿žç»­æ˜¾ç¤º" -#: modules/opml_domxml.php:131 -msgid "Error: can't find body element." -msgstr "错误:未找到body元素" +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "å°†æ–‡ç« åˆ—è¡¨å±•å¼€æ˜¾ç¤ºï¼Œè€Œä¸æ˜¯å°†æ ‡é¢˜å’Œå†…容分别显示" -#: modules/popup-dialog.php:7 -#, fuzzy -msgid "OPML Import" -msgstr "导入" +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "æ ‡è®°ä¿¡æ¯æºä¸ºå·²è¯»ä¹‹å‰å¼¹å‡ºç¡®è®¤" -#: modules/popup-dialog.php:34 -#, fuzzy -msgid "Importing using DOMXML." -msgstr "导入 OPML(需è¦DOMXML扩展)" +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "åŒæ—¶æ˜¾ç¤ºçš„æ–‡ç« æ•°é‡" -#: modules/popup-dialog.php:40 +#: classes/pref/prefs.php:32 #, fuzzy -msgid "Importing using DOMDocument." -msgstr "导入 OPML(需è¦DOMXMDocmentL扩展)" +msgid "Default feed update interval" +msgstr "默认更新间隔" -#: modules/popup-dialog.php:68 -msgid "Settings Profiles" +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" msgstr "" -#: modules/popup-dialog.php:75 -#, fuzzy -msgid "Create profile" -msgstr "创建过滤器" - -#: modules/popup-dialog.php:100 modules/popup-dialog.php:128 -#, fuzzy -msgid "(active)" -msgstr "自适应" - -#: modules/popup-dialog.php:148 modules/popup-dialog.php:350 -#: modules/pref-feeds.php:455 modules/pref-feeds.php:1136 -#: modules/pref-filters.php:153 modules/pref-filters.php:321 -#: modules/pref-labels.php:140 modules/pref-users.php:378 -msgid "Remove" -msgstr "移除" +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "将邮件摘è¦ä¸­çš„æ–‡ç« æ ‡è®°ä¸ºå·²è¯»" -#: modules/popup-dialog.php:150 +#: classes/pref/prefs.php:34 #, fuzzy -msgid "Activate" -msgstr "自适应" +msgid "Enable e-mail digest" +msgstr "å¯ç”¨ç”µå­é‚®ä»¶æ‘˜è¦" -#: modules/popup-dialog.php:163 -msgid "Published Articles" -msgstr "å·²å‘布文章" +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "æ¯å¤©å°†æ›´æ–°çš„和未读的文章标题通过邮件å‘逿‘˜è¦åˆ°æ‚¨è®¾ç½®çš„邮箱中" -#: modules/popup-dialog.php:168 -#, fuzzy -msgid "Your Published articles feed URL is:" -msgstr "å·²å‘布文章" +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "在特定时间å‘逿‘˜è¦" -#: modules/popup-dialog.php:177 +#: classes/pref/prefs.php:35 #, fuzzy -msgid "Generate new URL" -msgstr "产生feed" +msgid "Uses UTC timezone" +msgstr "用户所在时区" -#: modules/popup-dialog.php:190 -msgid "Notice" -msgstr "公告" +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "å¯ç”¨API访问" -#: modules/popup-dialog.php:196 -#, fuzzy -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 "" -"您已ç»è®¾ç½®åŽå°æ›´æ–°ç¨‹åºï¼Œä½†æ˜¯\n" -"\t\t\t\t\t该进程未è¿è¡Œ, 当所有feedä¸èƒ½æ›´æ–°æ—¶ï¼Œè¯·\n" -"\t\t\t\t\tå¼€å§‹æ›´æ–°ç¨‹åºæˆ–检查设置。" +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "å…许外部客户端通过APIæ¥è®¿é—®è¯¥è´¦æˆ·" -#: modules/popup-dialog.php:200 modules/popup-dialog.php:220 -msgid "Last update:" -msgstr "" +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "å¯ç”¨ä¿¡æ¯æºåˆ†ç±»" -#: modules/popup-dialog.php:208 -#, fuzzy -msgid "" -"You are running the latest version of Tiny Tiny RSS. The fact that you are " -"seeing this dialog is probably a bug." -msgstr "" -"您正使用最新版本的Tiny Tiny RSS.å®žé™…ä¸Šï¼Œæ‚¨çœ‹åˆ°çš„è¿™ä¸ªå¯¹è¯æ¡†ï¼Œå¯èƒ½æ˜¯ä¸€ä¸ªBUG,呵" -"呵。 " +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "ä»¥æœªè¯»æ–‡ç« æ•°é‡æŽ’åºä¿¡æ¯æº" -#: modules/popup-dialog.php:216 -#, fuzzy -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 "TT-RSS检测到更新时间过长,请刷新或者检查RSSæºåœ°å€ã€‚" +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "最新更新文章的ä¿é²œæœŸï¼ˆä»¥å°æ—¶ä¸ºå•ä½ï¼‰" -#: modules/popup-dialog.php:239 +#: classes/pref/prefs.php:40 #, fuzzy -msgid "Subscribe to Feed" -msgstr "订阅feed" +msgid "Hide feeds with no unread articles" +msgstr "éšè—æ²¡æœ‰æœªè¯»æ–‡ç« çš„ä¿¡æ¯æº" -#: modules/popup-dialog.php:248 modules/pref-feeds.php:197 -#: modules/pref-feeds.php:488 modules/pref-filters.php:407 -msgid "Feed" -msgstr "Feed" - -#: modules/popup-dialog.php:251 modules/pref-feeds.php:213 -#: modules/pref-feeds.php:502 +#: classes/pref/prefs.php:41 #, fuzzy -msgid "URL:" -msgstr "Feed URL:" +msgid "Show special feeds when hiding read feeds" +msgstr "éšè—已读信æ¯ä¹‹åŽæ˜¾ç¤ºç‰¹æ®ŠåŒºåŸŸçš„内容" -#: modules/popup-dialog.php:260 modules/pref-feeds.php:225 -#: modules/pref-feeds.php:514 -#, fuzzy -msgid "Place in category:" -msgstr "ä¿å­˜åˆ†ç±»..." +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "é•¿æ—¶é—´æ ¼å¼" -#: modules/popup-dialog.php:268 modules/pref-feeds.php:332 -#: modules/pref-feeds.php:558 modules/pref-prefs.php:235 -#: modules/pref-users.php:142 -msgid "Authentication" -msgstr "认è¯" +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "所使用的语法与PHP date() 函数相åŒ." -#: modules/popup-dialog.php:283 -msgid "This feed requires authentication." -msgstr "这个feed需è¦è®¤è¯" +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "è‡ªåŠ¨æ˜¾ç¤ºä¸‹ä¸€ä¸ªä¿¡æ¯æº" -#: modules/popup-dialog.php:289 modules/popup-dialog.php:349 -msgid "Subscribe" -msgstr "订阅" +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "标记未读文章为已读åŽï¼Œè‡ªåŠ¨æ˜¾ç¤ºä¸‹ä¸€ä¸ªä¿¡æ¯æºçš„æ–‡ç« ã€‚" -#: modules/popup-dialog.php:290 +#: classes/pref/prefs.php:44 #, fuzzy -msgid "More feeds" -msgstr "移除feed中..." +msgid "Purge articles after this number of days (0 - disables)" +msgstr "清除多少天之å‰çš„æ–‡ç« ï¼Ÿï¼ˆ0为ä¸å¯ç”¨ï¼‰" -#: modules/popup-dialog.php:291 modules/popup-dialog.php:351 -#: modules/popup-dialog.php:425 modules/popup-dialog.php:543 -#: modules/popup-dialog.php:612 modules/pref-feeds.php:468 -#: modules/pref-feeds.php:623 modules/pref-filters.php:160 -#: modules/pref-users.php:181 -msgid "Cancel" -msgstr "å–æ¶ˆ" +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "清除未读文章" -#: modules/popup-dialog.php:298 -#, fuzzy -msgid "Feed Browser" -msgstr "Feed编辑" +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "å转标题列表顺åºï¼ˆæœ€æ—§çš„在上é¢ï¼‰" -#: modules/popup-dialog.php:317 modules/popup-dialog.php:359 -#: modules/popup-dialog.php:424 modules/pref-feeds.php:1177 -#: modules/pref-filters.php:308 modules/pref-labels.php:131 -#: modules/pref-users.php:361 -msgid "Search" -msgstr "æœç´¢" +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "短时间格å¼" -#: modules/popup-dialog.php:321 -#, fuzzy -msgid "Popular feeds" -msgstr "显示Feed" +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "在标题列表中显示内容预览" -#: modules/popup-dialog.php:322 -#, fuzzy -msgid "Feed archive" -msgstr "Feed æ“作:" +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "ä»¥ä¿¡æ¯æºçš„æ—¥æœŸæŽ’åº" -#: modules/popup-dialog.php:325 -#, fuzzy -msgid "limit:" -msgstr "é™åˆ¶:" +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "ä½¿ç”¨ä¿¡æ¯æºä¸­å®šä¹‰çš„æ—¶é—´ï¼Œè€Œéžæœ¬åœ°å¯¼å…¥çš„æ—¶é—´æ¥æŽ’åºã€‚" -#: modules/popup-dialog.php:371 -msgid "Look for" -msgstr "" +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "使用 SSL è¯ä¹¦ç™»å½•" -#: modules/popup-dialog.php:378 +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "在 tt-rss 处注册您的 SSL è¯ä¹¦" + +#: classes/pref/prefs.php:51 #, fuzzy -msgid "match on" -msgstr "匹é…:" +msgid "Do not embed images in articles" +msgstr "ä¸è¦æ˜¾ç¤ºæ–‡ç« ä¸­çš„图片" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "从文章中剔除ä¸å®‰å…¨çš„æ ‡ç­¾" -#: modules/popup-dialog.php:383 -msgid "Title or content" -msgstr "标题或内容" +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "仅加载几个最常用的 HTML 标签" -#: modules/popup-dialog.php:388 -msgid "Limit search to:" -msgstr "" +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "自定义样å¼" -#: modules/popup-dialog.php:404 -msgid "This feed" -msgstr "本feed" +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "自定义 CSS æ ·å¼" -#: modules/popup-dialog.php:438 +#: classes/pref/prefs.php:54 #, fuzzy -msgid "Create Filter" -msgstr "创建过滤器" +msgid "Time zone" +msgstr "用户所在时区" -#: modules/popup-dialog.php:457 modules/pref-filters.php:42 -#: modules/pref-filters.php:406 -msgid "Match" -msgstr "匹é…" +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "对虚拟æºä¸­çš„æ–‡ç« æŒ‰æºåˆ†ç»„" -#: modules/popup-dialog.php:465 modules/pref-filters.php:54 -#: modules/pref-filters.php:441 -msgid "before" -msgstr "" +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "å°†ç‰¹æ®Šä¿¡æ¯æºã€é¢„å®šä¹‰æ ‡ç­¾å’Œåˆ†ç±»æŒ‰ç…§ä¿¡æ¯æºåˆ†ç»„" -#: modules/popup-dialog.php:466 modules/pref-filters.php:55 -#: modules/pref-filters.php:442 +#: classes/pref/prefs.php:56 #, fuzzy -msgid "after" -msgstr "æ›´æ–°" +msgid "Language" +msgstr "语言:" -#: modules/popup-dialog.php:478 modules/pref-filters.php:68 -msgid "Check it" -msgstr "" +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "主题:" -#: modules/popup-dialog.php:481 modules/pref-filters.php:71 -#, fuzzy -msgid "on field" -msgstr "于:" +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "选择一个å¯ç”¨çš„CSS主题" -#: modules/popup-dialog.php:487 modules/pref-filters.php:77 -#, fuzzy -msgid "in" -msgstr "链接" +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "设置已ä¿å­˜ã€‚" -#: modules/popup-dialog.php:492 modules/pref-filters.php:82 -#, fuzzy -msgid "Perform Action" -msgstr "å®Œæˆæ›´æ–°" +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "您的个人数æ®å·²ä¿å­˜ã€‚" -#: modules/popup-dialog.php:509 modules/pref-filters.php:102 -msgid "with parameters:" -msgstr "" +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "ä½ çš„å好设置已ç»é‡ç½®ä¸ºé»˜è®¤å€¼ã€‚" -#: modules/popup-dialog.php:522 modules/pref-feeds.php:355 -#: modules/pref-feeds.php:576 modules/pref-filters.php:121 -#: modules/pref-users.php:164 +#: classes/pref/prefs.php:183 #, fuzzy -msgid "Options" -msgstr "选项:" +msgid "Personal data / Authentication" +msgstr "登录密ç " -#: modules/popup-dialog.php:528 modules/pref-filters.php:133 -msgid "Enabled" -msgstr "å¯ç”¨" +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "个人数æ®" -#: modules/popup-dialog.php:531 modules/pref-filters.php:142 -msgid "Inverse match" -msgstr "逆匹é…" +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "å§“å" -#: modules/popup-dialog.php:541 -msgid "Create" -msgstr "创建" +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "电å­é‚®ä»¶" -#: modules/popup-dialog.php:555 -msgid "Update Errors" -msgstr "更新错误" +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "访问级别" -#: modules/popup-dialog.php:558 -msgid "These feeds have not been updated because of errors:" -msgstr "这些feed更新错误:" +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "ä¿å­˜ä¿¡æ¯" -#: modules/popup-dialog.php:584 -msgid "Edit Tags" -msgstr "编辑标签" +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "您还在使用系统默认的密ç ï¼Œè¯·ä¿®æ”¹ã€‚" -#: modules/popup-dialog.php:589 -msgid "Tags for this article (separated by commas):" -msgstr "本文的标签,请用逗å·åˆ†å¼€:" +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "更改当å‰å¯†ç ä¼šä½¿OTP动æ€å£ä»¤å¤±æ•ˆã€‚" -#: modules/popup-dialog.php:611 modules/pref-feeds.php:467 -#: modules/pref-feeds.php:621 modules/pref-filters.php:157 -#: modules/pref-users.php:179 -msgid "Save" -msgstr "ä¿å­˜" +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "原密ç " -#: modules/popup-dialog.php:620 -#, fuzzy -msgid "Tag Cloud" -msgstr "标签簇" +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "新密ç " -#: modules/popup-dialog.php:623 -msgid "Showing most popular tags " -msgstr "显示最热标签" +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "确认密ç " -#: modules/popup-dialog.php:624 -#, fuzzy -msgid "more tags" -msgstr "无标签" +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "更改密ç " -#: modules/pref-feeds.php:4 -msgid "Check to enable field" -msgstr "" +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "动æ€å£ä»¤" -#: modules/pref-feeds.php:187 -#, fuzzy -msgid "Feed Editor" -msgstr "Feed编辑" +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "动æ€å£ä»¤å·²ç»å¯ç”¨ã€‚输入你当å‰çš„å¯†ç æ¥ç¦ç”¨ã€‚" -#: modules/pref-feeds.php:242 +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 #, fuzzy -msgid "Link to feed:" -msgstr "链接:" +msgid "Enter your password" +msgstr "ç”¨æˆ·åæˆ–密ç é”™è¯¯" -#: modules/pref-feeds.php:259 -msgid "Not linked" -msgstr "无链接" +#: classes/pref/prefs.php:358 +#, fuzzy +msgid "Disable OTP" +msgstr "ç¦ç”¨OTP动æ€å£ä»¤" -#: modules/pref-feeds.php:310 modules/pref-feeds.php:537 -msgid "using" -msgstr "" +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "更改当å‰å¯†ç ä¼šè‡ªåЍç¦ç”¨OTP动æ€å£ä»¤ã€‚" -#: modules/pref-feeds.php:322 modules/pref-feeds.php:549 -msgid "Article purging:" -msgstr "文章清ç†:" +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "使用认è¯åº”用扫æä¸‹é¢ç¼–ç " -#: modules/pref-feeds.php:369 modules/pref-feeds.php:582 +#: classes/pref/prefs.php:403 #, fuzzy -msgid "Hide from Popular feeds" -msgstr "éšè—我的Feed列表" - -#: modules/pref-feeds.php:380 modules/pref-feeds.php:587 -msgid "Right-to-left content" -msgstr "ç”±å³-左阅读习惯" +msgid "Enter the generated one time password" +msgstr "请填写动æ€å£ä»¤ï¼š" -#: modules/pref-feeds.php:392 modules/pref-feeds.php:593 -msgid "Include in e-mail digest" -msgstr "包括电å­é‚®ä»¶æ–‡æ‘˜" +#: classes/pref/prefs.php:417 +#, fuzzy +msgid "Enable OTP" +msgstr "å·²å¯ç”¨" -#: modules/pref-feeds.php:405 modules/pref-feeds.php:599 -msgid "Always display image attachments" +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." msgstr "" -#: modules/pref-feeds.php:427 modules/pref-feeds.php:607 -msgid "Cache images locally" +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." msgstr "" -#: modules/pref-feeds.php:439 -#, fuzzy -msgid "Icon" -msgstr "æ“作" +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "自定义" -#: modules/pref-feeds.php:453 -msgid "Replace" -msgstr "" +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "注册" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "清空" -#: modules/pref-feeds.php:478 +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "当剿œåŠ¡å™¨ç³»ç»Ÿæ—¶é—´: %s (UTC)" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "ä¿å­˜è®¾ç½®" + +#: classes/pref/prefs.php:673 #, fuzzy -msgid "Multiple Feed Editor" -msgstr "Feed编辑" +msgid "Save and exit preferences" +msgstr "退出å好设置" -#: modules/pref-feeds.php:842 modules/pref-feeds.php:889 -msgid "All done." -msgstr "" +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "管ç†å好文件" -#: modules/pref-feeds.php:920 -#, php-format -msgid "Subscribed to %s." -msgstr "订阅到 %s." +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "æ¢å¤åˆ°é»˜è®¤" -#: modules/pref-feeds.php:923 -#, fuzzy, php-format -msgid "Could not subscribe to %s." -msgstr "å·²ç»è®¢é˜…到 %s." +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "æ’ä»¶" -#: modules/pref-feeds.php:926 -#, php-format -msgid "Already subscribed to %s." -msgstr "å·²ç»è®¢é˜…到 %s." +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "需è¦åˆ·æ–°é¡µé¢æ¥ä½¿æ’件生效。" -#: modules/pref-feeds.php:949 -msgid "Edit subscription options" +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: modules/pref-feeds.php:1033 -msgid "Category editor" -msgstr "分类编辑" +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "系统æ’ä»¶" -#: modules/pref-feeds.php:1056 -#, php-format -msgid "Category $%s already exists in the database." -msgstr "分类 $%så·²ç»å­˜åœ¨." +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "æ’ä»¶" -#: modules/pref-feeds.php:1077 -msgid "Create category" -msgstr "创建分类" +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "æè¿°" -#: modules/pref-feeds.php:1130 -msgid "No feed categories defined." -msgstr "未定义feed分类" +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "版本" -#: modules/pref-feeds.php:1160 -msgid "Some feeds have update errors (click for details)" -msgstr "有些feed更新错误(点击了解详情) " +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "作者" -#: modules/pref-feeds.php:1181 help/3.php:45 help/4.php:22 -msgid "Subscribe to feed" -msgstr "订阅feed" +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "更多信æ¯" -#: modules/pref-feeds.php:1184 +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 #, fuzzy -msgid "Edit feeds" -msgstr "输入feed" +msgid "Clear data" +msgstr "æ¸…ç©ºä¿¡æ¯æºæ•°æ®" -#: modules/pref-feeds.php:1189 -msgid "Edit categories" -msgstr "编辑分类" +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "用户æ’ä»¶" -#: modules/pref-feeds.php:1198 +#: classes/pref/prefs.php:855 #, fuzzy -msgid "More actions..." -msgstr "激活..." - -#: modules/pref-feeds.php:1202 -msgid "Manual purge" -msgstr "" +msgid "Enable selected plugins" +msgstr "å¯ç”¨ä¿¡æ¯æºåˆ†ç±»" -#: modules/pref-feeds.php:1206 +#: classes/pref/prefs.php:923 #, fuzzy -msgid "Clear feed data" -msgstr "所有Feed已更新。" +msgid "Incorrect one time password" +msgstr "ç”¨æˆ·åæˆ–密ç é”™è¯¯" -#: modules/pref-feeds.php:1207 modules/pref-filters.php:324 +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 #, fuzzy -msgid "Rescore articles" -msgstr "星级文章" +msgid "Incorrect password" +msgstr "ç”¨æˆ·åæˆ–密ç é”™è¯¯" -#: modules/pref-feeds.php:1296 -msgid "Show last article times" -msgstr "显示最近文章时间" +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "您å¯ä»¥é€šè¿‡è‡ªå®šä¹‰ CSS æ¥æ›´æ”¹é¢œè‰²ï¼Œå­—体和版å¼ã€‚具体å¯å‚考 本文件。" -#: modules/pref-feeds.php:1313 modules/pref-feeds.php:1373 -msgid "Last Article" -msgstr "最厠文章" +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "创建å好文件" -#: modules/pref-feeds.php:1398 modules/pref-filters.php:487 -#: modules/pref-users.php:467 -msgid "Click to edit" -msgstr "" +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(当å‰ä½¿ç”¨çš„)" -#: modules/pref-feeds.php:1412 -#, php-format -msgid "(linked to %s)" -msgstr "" +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "移除选中的å好文件" -#: modules/pref-feeds.php:1439 -#, fuzzy -msgid "You don't have any subscribed feeds." -msgstr "您ä¸èƒ½ä»Žåˆ†ç±»ä¸­å–消订阅。" +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "å¯ç”¨å好文件" -#: modules/pref-feeds.php:1441 -#, fuzzy -msgid "No matching feeds found." -msgstr "未找到文章。" +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "如果你已ç»å¯¼å…¥äº†é¢„定义标签或过滤器,你å¯èƒ½éœ€è¦é‡æ–°åŠ è½½æ¥çœ‹åˆ°æ–°çš„设置。" -#: modules/pref-feeds.php:1447 -msgid "OPML" -msgstr "OPML" +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "你的公共 OPML URL 是:" -#: modules/pref-feeds.php:1470 -msgid "Import" -msgstr "导入" +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "生æˆä¸€ä¸ªæ–°çš„ URL" -#: modules/pref-feeds.php:1475 -msgid "Export OPML" -msgstr "导出OPML" +#: 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 "更新进程已在é…置中å¯ç”¨ï¼Œä½†å®ˆæŠ¤è¿›ç¨‹æ²¡æœ‰è¿è¡Œï¼Œå¯¼è‡´æ— æ³•抓å–ä¿¡æ¯ã€‚请å¯åŠ¨å®ˆæŠ¤è¿›ç¨‹ï¼Œæˆ–è”系管ç†å‘˜ã€‚" -#: modules/pref-feeds.php:1478 -msgid "Firefox Integration" -msgstr "" +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "上次更新:" -#: modules/pref-feeds.php:1480 -msgid "" -"This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the " -"link below." -msgstr "" +#: 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 "更新进程在抓å–ä¿¡æ¯æ›´æ–°æ—¶èŠ±è´¹äº†å¤ªé•¿æ—¶é—´ï¼Œè¿™å¯èƒ½å¼•èµ·å´©æºƒæˆ–å‡æ­»é—®é¢˜ã€‚请检查守护进程或è”系管ç†å‘˜ã€‚" -#: modules/pref-feeds.php:1487 -msgid "Click here to register this site as a feed reader." +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "您å¯ä»¥é€šè¿‡å¦‚下 URL 以 RSS æ–¹å¼æŸ¥çœ‹æœ¬ä¿¡æ¯æºï¼š" + +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" msgstr "" -#: modules/pref-feeds.php:1498 +#: plugins/af_psql_trgm/init.php:112 #, fuzzy -msgid "" -"Published articles are exported as a public RSS feed and can be subscribed " -"by anyone who knows the URL specified below." -msgstr "本站文章作为一个公开的RSSæºï¼Œå¯ä»¥è¢«å¤§ä¼—订阅。" +msgid "Show related articles" +msgstr "加星标文章" -#: modules/pref-feeds.php:1501 +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 #, fuzzy -msgid "Display URL" -msgstr "显示标签" +msgid "Mark similar articles as read" +msgstr "将所有文章标记为已读?" -#: modules/pref-feeds.php:1604 -#, fuzzy, php-format -msgid "%d archived articles" -msgstr "星级文章" - -#: modules/pref-feeds.php:1633 +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 #, fuzzy -msgid "No feeds found." -msgstr "æ— feedå¯è®¢é˜…。" +msgid "Global settings" +msgstr "包å«è®¾ç½®" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" -#: modules/pref-filters.php:23 +#: plugins/af_psql_trgm/init.php:178 #, fuzzy -msgid "Filter Editor" -msgstr "过滤器编辑" +msgid "Enable for all feeds:" +msgstr "å¯ç”¨ä¿¡æ¯æºåˆ†ç±»" -#: modules/pref-filters.php:212 -#, php-format -msgid "Saved filter %s" -msgstr "ä¿å­˜è¿‡æ»¤å™¨%s" +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" -#: modules/pref-filters.php:266 -#, php-format -msgid "Created filter %s" -msgstr "创建过滤器 %s" +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" -#: modules/pref-filters.php:315 help/3.php:31 help/4.php:25 -msgid "Create filter" -msgstr "创建过滤器" +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "af_comicsçš„feedæº" -#: modules/pref-filters.php:318 modules/pref-users.php:376 -msgid "Edit" -msgstr "编辑" +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "下é¢çš„comics已被支æŒï¼š" -#: modules/pref-filters.php:408 -#, fuzzy -msgid "Field" -msgstr "Feed" +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "编辑文章注记" -#: modules/pref-filters.php:409 -#, fuzzy -msgid "Params" -msgstr "傿•°:" +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "没有文件上传。" -#: modules/pref-filters.php:476 -msgid "(Disabled)" -msgstr "(ä¸å¯ç”¨)" +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "完æˆã€‚å·²æˆåŠŸå¯¼å…¥%dæ¡æ–‡ç« ï¼Œå…¨éƒ¨%dæ¡æ–‡ç« ã€‚" -#: modules/pref-filters.php:492 -msgid "(Inverse)" -msgstr "(逆)" +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "文档格å¼é”™è¯¯ã€‚" -#: modules/pref-filters.php:512 -msgid "No filters defined." -msgstr "未定义过滤器。" +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "从Google Reader中导入加星或共享æ¡ç›®ã€‚" -#: modules/pref-filters.php:514 -#, fuzzy -msgid "No matching filters found." -msgstr "未找到文章。" +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "把你的starred.json 或 shared.jsonå¤åˆ¶åˆ°ä¸‹é¢çš„表格中。" -#: modules/pref-labels.php:102 -#, php-format -msgid "Created label %s" -msgstr "创建标记 %s" +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "导入我的加星æ¡ç›®" -#: modules/pref-labels.php:137 help/3.php:30 help/4.php:26 -msgid "Create label" -msgstr "创建标记" +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[已转å‘]" -#: modules/pref-labels.php:143 -#, fuzzy -msgid "Clear colors" -msgstr "过滤文章" +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "多个文章" -#: modules/pref-labels.php:223 +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "点击下é¢é“¾æŽ¥æ¥å¯åŠ¨ä½ çš„é‚®ä»¶å®¢æˆ·ç«¯ï¼š" + +#: plugins/mailto/init.php:75 #, fuzzy -msgid "Click to change color" -msgstr "星级文章" +msgid "Forward selected article(s) by email." +msgstr "ç”¨é‚®ä»¶è½¬å‘æ–‡ç« " -#: modules/pref-labels.php:246 -msgid "No labels defined." -msgstr "未定义标记." +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "在邮件å‘é€å‰ï¼Œä½ èƒ½å¤Ÿç¼–辑消æ¯ã€‚" -#: modules/pref-labels.php:248 +#: plugins/mailto/init.php:83 #, fuzzy -msgid "No matching labels found." -msgstr "未找到文章。" +msgid "Close this dialog" +msgstr "关闭本界é¢" -#: modules/pref-labels.php:306 -msgid "custom color:" -msgstr "" +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "导入和导出" -#: modules/pref-labels.php:307 -msgid "foreground" -msgstr "" +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "ä½ å¯ä»¥å¯¼å‡ºå’Œå¯¼å…¥æ‰€æœ‰çš„加星文章ã€å½’档文章,æ¥è¿›è¡Œå®‰å…¨å¤‡ä»½ï¼Œæˆ–在åŒç‰ˆæœ¬çš„tt-rss实例之间è¿ç§»ã€‚" -#: modules/pref-labels.php:308 -msgid "background" -msgstr "" +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "导出我的数æ®" -#: modules/pref-prefs.php:37 -msgid "Old password cannot be blank." -msgstr "原密ç ä¸å¯ç•™ç©º." +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "导入" -#: modules/pref-prefs.php:42 -msgid "New password cannot be blank." -msgstr "新密ç ä¸å¯ç•™ç©º." +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "æ— æ³•å¯¼å…¥ï¼šä¸æ­£ç¡®çš„schema版本。" -#: modules/pref-prefs.php:47 -msgid "Entered passwords do not match." -msgstr "两次输入密ç ä¸é€š." +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "无法导入:ä¸å¯è¯†åˆ«çš„æ–‡æ¡£æ ¼å¼ã€‚" -#: modules/pref-prefs.php:74 -msgid "Password has been changed." -msgstr "密ç å·²æ›´æ”¹." +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "已完æˆï¼š" -#: modules/pref-prefs.php:76 -msgid "Old password is incorrect." -msgstr "原密ç é”™è¯¯." +#: plugins/import_export/init.php:388 +#, fuzzy, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "编辑文章注记" -#: modules/pref-prefs.php:104 -msgid "The configuration was saved." -msgstr "设置已ä¿å­˜." +#: plugins/import_export/init.php:389 +#, fuzzy, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "å·²ç»å¯¼å…¥è¿‡ã€‚" -#: modules/pref-prefs.php:120 -#, php-format -msgid "Unknown option: %s" -msgstr "" +#: plugins/import_export/init.php:390 +#, fuzzy, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "æ²¡æœ‰é€‰ä¸­çš„ä¿¡æ¯æºã€‚" -#: modules/pref-prefs.php:131 -#, fuzzy -msgid "E-mail has been changed." -msgstr "密ç å·²æ›´æ”¹." +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "无法加载XML文档。" -#: modules/pref-prefs.php:171 -msgid "" -"Your password is at default value, \n" -"\t\t\t\t\t\tplease change it." -msgstr "æ‚¨çš„å¯†ç æ˜¯é»˜è®¤çš„,请修改。" +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "准备数æ®" -#: modules/pref-prefs.php:198 -msgid "Personal data" -msgstr "个人数æ®" +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "" -#: modules/pref-prefs.php:205 -#, fuzzy -msgid "E-mail" -msgstr "E-mail:" +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "" -#: modules/pref-prefs.php:216 +#: plugins/nsfw/init.php:100 #, fuzzy -msgid "Access level" -msgstr "等级:" +msgid "Configuration saved." +msgstr "设置已ä¿å­˜ã€‚" -#: modules/pref-prefs.php:229 -msgid "Change e-mail" -msgstr "更改 e-mail" +#: plugins/auth_internal/init.php:65 +#, fuzzy +msgid "Please enter your one time password:" +msgstr "请填写类别å称:" -#: modules/pref-prefs.php:237 -msgid "Old password" -msgstr "原密ç " +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "å¯†ç æ›´æ”¹æˆåŠŸã€‚" -#: modules/pref-prefs.php:244 -msgid "New password" -msgstr "新密ç " +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "原密ç è¾“入错误。" -#: modules/pref-prefs.php:252 -msgid "Confirm password" -msgstr "验è¯å¯†ç " +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "关闭文章" -#: modules/pref-prefs.php:268 -msgid "Change password" -msgstr "更改密ç " +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "" -#: modules/pref-prefs.php:323 -msgid "Select theme" -msgstr "选择模æ¿" +#: plugins/mail/init.php:34 +#, fuzzy +msgid "Mail plugin" +msgstr "用户æ’ä»¶" -#: modules/pref-prefs.php:383 modules/pref-prefs.php:388 -msgid "Yes" -msgstr "是" +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "" -#: modules/pref-prefs.php:385 modules/pref-prefs.php:388 -msgid "No" -msgstr "å¦" +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "收信人:" -#: modules/pref-prefs.php:409 -msgid "Save configuration" -msgstr "ä¿å­˜è®¾ç½®" +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "主题:" -#: modules/pref-prefs.php:412 -msgid "Manage profiles" -msgstr "" +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "å‘é€é‚®ä»¶" -#: modules/pref-prefs.php:415 -msgid "Reset to defaults" -msgstr "æ¢å¤åˆ°é»˜è®¤ï¼Ÿ" +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "链接" -#: modules/pref-users.php:7 -#, fuzzy -msgid "Your access level is insufficient to open this tab." -msgstr "æƒé™ä¸è¶³ã€‚" +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" +msgstr "实例" + +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "实例 URL:" + +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "访问密钥:" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "访问密钥" + +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "为两个相è”的实例使用一个访问密钥。" + +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "ç”Ÿæˆæ–°çš„密钥" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "链接实例" + +#: 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 "您å¯ä»¥ä¸Žå…¶ä»–çš„ Tiny Tiny RSS 实例相è”ï¼Œä»¥å…±äº«æœ€å—æ¬¢è¿Žçš„ä¿¡æ¯æºåˆ—表。通过这个 URL 为本实例建立链接:" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "上次连接" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "状æ€" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "ä¿å­˜çš„ä¿¡æ¯æº" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "创建链接" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" -#: modules/pref-users.php:17 -msgid "User details" -msgstr "用户详细" +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" -#: modules/pref-users.php:31 +#: plugins/af_redditimgur/init.php:69 #, fuzzy -msgid "User not found" -msgstr "未找到Feed." +msgid "Configuration saved" +msgstr "设置已ä¿å­˜ã€‚" -#: modules/pref-users.php:50 modules/pref-users.php:428 -msgid "Registered" +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" msgstr "" -#: modules/pref-users.php:51 +#: plugins/af_readability/init.php:57 #, fuzzy -msgid "Last logged in" -msgstr "最åŽç™»é™†" +msgid "Readability" +msgstr "检查å¯ç”¨æ€§" -#: modules/pref-users.php:58 +#: plugins/af_readability/init.php:68 #, fuzzy -msgid "Subscribed feeds count" -msgstr "订阅feed:" +msgid "Inline article content" +msgstr "滚动文章内容" -#: modules/pref-users.php:62 +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 #, fuzzy -msgid "Subscribed feeds" -msgstr "订阅feed:" +msgid "Shared articles" +msgstr "加星标文章" -#: modules/pref-users.php:108 -#, fuzzy -msgid "User Editor" -msgstr "用户编辑" +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" -#: modules/pref-users.php:145 -#, fuzzy -msgid "Access level: " -msgstr "等级:" +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" -#: modules/pref-users.php:158 -#, fuzzy -msgid "Change password to" -msgstr "更改密ç " +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" -#: modules/pref-users.php:167 +#: plugins/af_sort_bayes/init.php:216 #, fuzzy -msgid "E-mail: " -msgstr "E-mail:" +msgid "Statistics" +msgstr "状æ€" -#: modules/pref-users.php:201 +#: plugins/af_sort_bayes/init.php:218 #, php-format -msgid "Changed password of user %s." -msgstr "更改用%s密ç " - -#: modules/pref-users.php:249 -#, php-format -msgid "Added user %s with password %s" -msgstr "添加用 %s ,密ç ä¸º%s" +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" -#: modules/pref-users.php:256 -#, php-format -msgid "Could not create user %s" -msgstr "创建用户 %s 失败" +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "加星标文章" -#: modules/pref-users.php:260 -#, php-format -msgid "User %s already exists." -msgstr "用户 %s 已存在。" +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "æ¸…ç©ºä¿¡æ¯æºæ•°æ®" -#: modules/pref-users.php:280 -#, php-format -msgid "" -"Changed password of user %s\n" -"\t\t\t\t\t to %s" +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" msgstr "" -"更改用户 %s\n" -"\t\t\t\t\t 的密ç ä¸º %s" -#: modules/pref-users.php:284 +#: plugins/af_sort_bayes/init.php:376 #, fuzzy, php-format -msgid "Notifying %s." -msgstr "添加分类 %s." +msgid "Currently stored as: %s" +msgstr "当剿œåŠ¡å™¨ç³»ç»Ÿæ—¶é—´: %s (UTC)" -#: modules/pref-users.php:321 -msgid "[tt-rss] Password change notification" +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" msgstr "" -#: modules/pref-users.php:370 help/4.php:27 -msgid "Create user" -msgstr "创建用户" +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "" -#: modules/pref-users.php:374 -#, fuzzy -msgid "Details" -msgstr "æ¯å¤©" +#: 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 "将以下链接拖拽至您的æµè§ˆå™¨å·¥å…·æ¡ï¼Œåœ¨æµè§ˆå™¨ä¸­æ‰“å¼€æ‚¨æƒ³çœ‹çš„ä¿¡æ¯æºï¼Œç„¶åŽç‚¹å‡»é“¾æŽ¥ä»¥è®¢é˜…。" -#: modules/pref-users.php:380 -msgid "Reset password" -msgstr "é‡ç½®å¯†ç " +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "在 Tiny Tiny RSS 中订阅 %s ?" -#: modules/pref-users.php:426 -msgid "Login" -msgstr "登陆" +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "在 Tiny Tiny RSS 中订阅" -#: modules/pref-users.php:427 -msgid "Access Level" -msgstr "等级:" +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "" -#: modules/pref-users.php:429 -msgid "Last login" -msgstr "最åŽç™»é™†" +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "您å¯ä»¥å–消所有通过 URL 分享的文章。" -#: modules/pref-users.php:487 -#, fuzzy -msgid "No users defined." -msgstr "未定义过滤器。" +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "å–æ¶ˆæ‰€æœ‰åˆ†äº«" -#: modules/pref-users.php:489 -#, fuzzy -msgid "No matching users found." -msgstr "未找到文章。" +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "通过 URL 分享" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "您å¯ä»¥é€šè¿‡ä»¥ä¸‹å”¯ä¸€ URL 分享本文:" -#: help/2.php:1 +#: plugins/share/init.php:117 #, fuzzy -msgid "Content filtering" -msgstr "内容过滤器" +msgid "Unshare article" +msgstr "å–æ¶ˆæ˜Ÿæ ‡" -#: help/2.php:3 -msgid "" -"Tiny Tiny RSS has support for filtering (or processing) articles. Filtering " -"is done once, when new article is imported to the database from the " -"newsfeed, specified field is matched against regular expression and some " -"action is taken. Regular expression matching is case-insensitive." -msgstr "" +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "error会ä¿å­˜åœ¨é…置的目标日志中" -#: help/2.php:5 -msgid "" -"Supported actions are: filter (do not import) article, mark article as read, " -"set starred, assign tag(s), and set score. Filters can be defined globally " -"and for some specific feed." +#: js/functions.js:90 +msgid "Report to tt-rss.org" msgstr "" -#: help/2.php:7 -msgid "" -"Multiple and inverse matching are supported. All matching filters are " -"considered when article is being imported and all actions executed in " -"sequence. Inverse matching reverts matching result, e.g. filter matching " -"XYZZY in title with inverse flag will match all articles, except those " -"containing string XYZZY in title." +#: js/functions.js:93 +msgid "Close" msgstr "" -#: help/2.php:9 -msgid "See also:" -msgstr "" +#: js/functions.js:104 +#, fuzzy +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "您确认将该异常报告至 tt-rss.org ï¼ŸæŠ¥å‘Šå°†åŒ…å«æ‚¨çš„æµè§ˆå™¨ä¿¡æ¯ã€‚您的IP将被存入数æ®åº“。" -#: help/3.php:1 help/4.php:1 +#: js/functions.js:224 #, fuzzy -msgid "Keyboard Shortcuts" -msgstr "  åˆ›å»ºè¿‡æ»¤å™¨" +msgid "Click to close" +msgstr "点击暂åœ" -#: help/3.php:5 +#: js/functions.js:1051 #, fuzzy -msgid "Navigation" -msgstr "ä¿å­˜è®¾ç½®" +msgid "Edit action" +msgstr "ä¿¡æ¯æºåŠ¨ä½œ" -#: help/3.php:8 -msgid "Move between feeds" -msgstr "" +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "创建过滤器" -#: help/3.php:9 -#, fuzzy -msgid "Move between articles" -msgstr "星级文章" +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "é‡ç½®è®¢é˜…? Tiny Tiny RSS å°†ä¼šåœ¨ä¸‹æ¬¡ä¿¡æ¯æºæ›´æ–°çš„æ—¶å€™å°è¯•冿¬¡è®¢é˜…ä¿¡æ¯æé†’ä¸­å¿ƒã€‚" -#: help/3.php:10 +#: js/functions.js:1229 #, fuzzy -msgid "Show search dialog" -msgstr "星级文章" +msgid "Subscription reset." +msgstr "è®¢é˜…ä¿¡æ¯æº" -#: help/3.php:13 -#, fuzzy -msgid "Active article actions" -msgstr "星级文章" +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "从 %s å–æ¶ˆè®¢é˜…?" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "删除feed..." + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "请填写类别å称:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "ä¸ºæœ¬ä¿¡æ¯æºç”Ÿæˆæ–°çš„群地å€ï¼Ÿ" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "å°è¯•更改地å€..." + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "æ²¡æœ‰é€‰æ‹©ä»»ä½•ä¿¡æ¯æºã€‚" -#: help/3.php:16 -#, fuzzy -msgid "Toggle starred" -msgstr "设置星级" +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "å°†é€‰ä¸­çš„ä¿¡æ¯æºä»Žå­˜æ¡£ä¸­ç§»é™¤ï¼ŸåŒ…å«å·²ä¿å­˜æ–‡ç« çš„ä¿¡æ¯æºä¸ä¼šè¢«ç§»é™¤ã€‚" + +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "æ›´æ–°é”™è¯¯çš„ä¿¡æ¯æº" -#: help/3.php:17 +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "ç§»é™¤é€‰ä¸­çš„ä¿¡æ¯æºï¼Ÿ" + +#: js/functions.js:1780 +#: js/prefs.js:1179 #, fuzzy -msgid "Toggle published" -msgstr "å·²å‘布" +msgid "Removing selected feeds..." +msgstr "ç§»é™¤é€‰ä¸­çš„ä¿¡æ¯æºï¼Ÿ" -#: help/3.php:18 +#: js/PrefFeedTree.js:48 #, fuzzy -msgid "Toggle unread" -msgstr "触å‘开关" +msgid "Edit category" +msgstr "编辑类别" -#: help/3.php:19 +#: js/PrefFeedTree.js:55 #, fuzzy -msgid "Edit tags" -msgstr "编辑标签" +msgid "Remove category" +msgstr "创建类别" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "å选" -#: help/3.php:20 +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "请输入登录å:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "无法创建用户:没有指定登录å。" + +#: js/prefs.js:66 #, fuzzy -msgid "Open article in new window" -msgstr "æ–°çª—å£æ‰“开文章连结" +msgid "Adding user..." +msgstr "创建过滤器" + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "编辑用户信æ¯" -#: help/3.php:21 +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 #, fuzzy -msgid "Mark articles below/above active one as read" -msgstr "标记 %s 中所有访问过的主题为已读" +msgid "Saving data..." +msgstr "ä¿å­˜ä¿¡æ¯" + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "编辑过滤器" -#: help/3.php:22 +#: js/prefs.js:181 #, fuzzy -msgid "Scroll article content" -msgstr "显示最近文章时间" +msgid "Remove filter?" +msgstr "移除这个过滤器: %s ?" -#: help/3.php:26 help/4.php:30 +#: js/prefs.js:186 #, fuzzy -msgid "Other actions" -msgstr "å…¶ä»–æ“作:" +msgid "Removing filter..." +msgstr "创建过滤器" -#: help/3.php:29 -msgid "Select article under mouse cursor" -msgstr "" +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "移除选中的预定义标签?" -#: help/3.php:32 +#: js/prefs.js:299 #, fuzzy -msgid "Collapse sidebar" -msgstr "éšè—我的Feed列表" +msgid "Removing selected labels..." +msgstr "移除选中的预定义标签?" -#: help/3.php:33 -#, fuzzy -msgid "Toggle category reordering mode" -msgstr "移除选定分类?" +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "没有选择任何预定义标签。" -#: help/3.php:34 help/4.php:34 -msgid "Display this help dialog" -msgstr "" +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "移除选中的用户?默认管ç†å‘˜å’Œæ‚¨çš„叿ˆ·ä¸ä¼šè¢«ç§»é™¤ã€‚" -#: help/3.php:39 +#: js/prefs.js:329 #, fuzzy -msgid "Feed actions" -msgstr "Feed æ“作:" +msgid "Removing selected users..." +msgstr "移除选定的过滤器?" + +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "没有选中任何用户。" + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "移除选定的过滤器?" -#: help/3.php:42 +#: js/prefs.js:364 #, fuzzy -msgid "Update active feed" -msgstr "星级文章" +msgid "Removing selected filters..." +msgstr "移除选定的过滤器?" + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "没有选中的过滤器。" + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "ä»Žé€‰ä¸­çš„ä¿¡æ¯æºå–消订阅?" -#: help/3.php:43 +#: js/prefs.js:399 #, fuzzy -msgid "Update all feeds" -msgstr "星级文章" +msgid "Unsubscribing from selected feeds..." +msgstr "å–æ¶ˆè®¢é˜…é€‰ä¸­çš„ä¿¡æ¯æº" + +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "è¯·ä»…é€‰æ‹©ä¸€ä¸ªä¿¡æ¯æºã€‚" + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "æ¸…ç©ºé€‰ä¸­çš„ä¿¡æ¯æºå½“中所有未加星标的文章?" -#: help/3.php:46 +#: js/prefs.js:438 #, fuzzy -msgid "Edit feed" -msgstr "输入feed" +msgid "Clearing selected feed..." +msgstr "ç¼–è¾‘é€‰å®šçš„ä¿¡æ¯æº" + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "文章ä¿å­˜å‡ å¤©ï¼Ÿï¼ˆå¡«å†™0则采用默认设置)" -#: help/3.php:47 +#: js/prefs.js:460 #, fuzzy -msgid "Sort by name or unread count" -msgstr "ä»¥æœªè¯»æ–‡ç« æ•°é‡æŽ’åºfeedæº" +msgid "Purging selected feed..." +msgstr "ç¼–è¾‘é€‰å®šçš„ä¿¡æ¯æº" -#: help/3.php:48 +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "请仅选择一个用户。" + +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "é‡ç½®é€‰å®šç”¨æˆ·çš„密ç ï¼Ÿ" + +#: js/prefs.js:520 #, fuzzy -msgid "Hide visible read articles" -msgstr "星级文章" +msgid "Resetting password for selected user..." +msgstr "é‡ç½®é€‰å®šç”¨æˆ·çš„密ç ï¼Ÿ" + +#: js/prefs.js:565 +msgid "User details" +msgstr "用户详细资料" + +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "请仅选择一个过滤器。" -#: help/3.php:49 +#: js/prefs.js:607 #, fuzzy -msgid "Mark feed as read" -msgstr "标记为已读" +msgid "Combine selected filters?" +msgstr "移除选定的过滤器?" -#: help/3.php:50 +#: js/prefs.js:610 #, fuzzy -msgid "Reverse headlines order" -msgstr "åå‘æè¦æŽ’åˆ—ï¼ˆä»Žæ—§åˆ°æ–°ï¼‰" +msgid "Joining filters..." +msgstr "创建过滤器" -#: help/3.php:51 -#, fuzzy -msgid "Mark all feeds as read" -msgstr "标记所有Feed未已读..." +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "ç¼–è¾‘å¤šä¸ªä¿¡æ¯æº" -#: help/3.php:52 -msgid "If viewing category, (un)collapse it" -msgstr "" +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "ä¿å­˜å¯¹ä¿¡æ¯æºçš„æ›´æ”¹ï¼Ÿ" -#: help/3.php:55 help/4.php:5 -msgid "Go to..." -msgstr "" +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "OPML 导入" -#: help/3.php:62 -msgid "Tag cloud" -msgstr "标签簇" +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "请先选择一个 OPML 文件。" -#: help/3.php:69 help/4.php:41 +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 #, fuzzy -msgid "Press any key to close this window." -msgstr "关闭此窗å£" +msgid "Importing, please wait..." +msgstr "读å–中,请ç¨å€™â€¦â€¦" + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "é‡ç½®ä¸ºé»˜è®¤çжæ€ï¼Ÿ" -#: help/4.php:9 -msgid "My Feeds" -msgstr "我的feed" +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "è®¢é˜…è‡³ä¿¡æ¯æº.." -#: help/4.php:10 -msgid "Other Feeds" -msgstr "å…¶ä»–feed" +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "清除本æ’ä»¶å·²ä¿å­˜çš„æ•°æ®ï¼Ÿ" -#: help/4.php:19 -#, fuzzy -msgid "Panel actions" -msgstr "Feed æ“作:" +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "清除错误日志里的所有消æ¯" + +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "将所有文章标记为已读?" -#: help/4.php:23 +#: js/tt-rss.js:133 #, fuzzy -msgid "Top 25 feeds" -msgstr "Top 25" +msgid "Marking all feeds as read..." +msgstr "æ ‡è®°æ‰€æœ‰ä¿¡æ¯æºä¸ºå·²è¯»" -#: help/4.php:24 +#: js/tt-rss.js:391 #, fuzzy -msgid "Edit feed categories" -msgstr "编辑分类" +msgid "Please enable mail plugin first." +msgstr "è¯·å…ˆé€‰å‡ ä¸ªä¿¡æ¯æºå§ã€‚" -#: help/4.php:33 -msgid "Focus search (if present)" -msgstr "" +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "您无法编辑这ç§ç±»åž‹çš„ä¿¡æ¯æºã€‚" -#: help/4.php:39 -msgid "" -"Note: not all actions may be available, depending on Tiny Tiny RSS " -"configuration and your access level." -msgstr "" +#: js/tt-rss.js:505 +#, fuzzy +msgid "Please enable embed_original plugin first." +msgstr "è¯·å…ˆé€‰å‡ ä¸ªä¿¡æ¯æºå§ã€‚" -#: mobile/functions.php:59 mobile/functions.php:136 mobile/functions.php:172 -#: mobile/functions.php:199 mobile/functions.php:233 mobile/functions.php:356 -#: mobile/prefs.php:25 -msgid "Home" +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." msgstr "" -#: mobile/functions.php:392 -msgid "Nothing found (click to reload feed)." -msgstr "" +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "无法é‡ç½®æœ¬ç±»ä¿¡æ¯æºçš„评分。" -#: mobile/prefs.php:30 -#, fuzzy -msgid "Enable categories" -msgstr "å¼€å¯feed分类" +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "è¯·å…ˆé€‰å‡ ä¸ªä¿¡æ¯æºå§ã€‚" -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "ON" +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "é‡ç½® %s 中文章的评分?" + +#: js/tt-rss.js:843 +#, fuzzy +msgid "Rescoring articles..." +msgstr "ä¸ºæ–‡ç« é‡æ–°è¯„分" + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "没有选中任何文章。" + +#: js/viewfeed.js:1018 +#, fuzzy, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "删除 %s 中选择的 %d 篇文章?" + +#: js/viewfeed.js:1020 +#, fuzzy, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "删除选中的 %d 篇文章?" + +#: js/viewfeed.js:1062 +#, fuzzy, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "å°† %s 中的 %d 篇选中的文章存档?" + +#: js/viewfeed.js:1065 +#, fuzzy, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "将存档的 %d 篇文章移回原处?" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." msgstr "" -#: mobile/prefs.php:31 mobile/prefs.php:36 mobile/prefs.php:41 -#: mobile/prefs.php:46 -msgid "OFF" -msgstr "" +#: js/viewfeed.js:1112 +#, fuzzy, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "å°† %s 中选中的 %d 篇文章标记为已读?" -#: mobile/prefs.php:35 -msgid "Show images in posts" -msgstr "" +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "编辑文章的自定义标签" -#: mobile/prefs.php:40 +#: js/viewfeed.js:1142 #, fuzzy -msgid "Hide read feeds" -msgstr "  (显示)éšè—已读feed" +msgid "Saving article tags..." +msgstr "编辑文章的自定义标签" -#: mobile/prefs.php:45 +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 #, fuzzy -msgid "Sort feeds by unread count" -msgstr "ä»¥æœªè¯»æ–‡ç« æ•°é‡æŽ’åºfeedæº" +msgid "Click to open next unread feed." +msgstr "ç‚¹å‡»ä»¥ç¼–è¾‘ä¿¡æ¯æº" -#: functions.js:1315 -msgid "Can't add filter: nothing to match on." -msgstr "未能添加过滤:无匹é…。" +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "打开原文" -#: functions.js:1350 -msgid "Can't subscribe: no feed URL given." -msgstr "未能订阅:无 feed URL。" +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "添加预定义标签" -#: functions.js:1354 -#, fuzzy -msgid "Subscribing to feed..." -msgstr "订阅feed" +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "移除预定义标签" -#: functions.js:1377 +#: js/viewfeed.js:2159 #, fuzzy -msgid "Subscribed to %s" -msgstr "订阅feed:" +msgid "Select articles in group" +msgstr "选择鼠标指å‘的文章" -#: functions.js:1386 +#: js/viewfeed.js:2168 #, fuzzy -msgid "Can't subscribe to the specified URL." -msgstr "未能订阅:无 feed URL。" +msgid "Mark group as read" +msgstr "标记为已读" -#: functions.js:1389 -#, fuzzy -msgid "You are already subscribed to this feed." -msgstr "您ä¸èƒ½ä»Žåˆ†ç±»ä¸­å–消订阅。" +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "æ ‡è®°ä¿¡æ¯æºä¸ºå·²è¯»" -#: functions.js:1952 -msgid "New articles available in this feed (click to show)" -msgstr "" +#: js/viewfeed.js:2235 +#, fuzzy +msgid "Please enter new score for selected articles:" +msgstr "删除选中的 %d 篇文章?" -#: functions.js:1989 +#: js/viewfeed.js:2305 #, fuzzy -msgid "Subscribed to %d feed(s)." -msgstr "订阅feed:" +msgid "Please enter new score for this article:" +msgstr "请填写类别å称:" -#: functions.js:1999 functions.js:2030 prefs.js:557 prefs.js:587 prefs.js:619 -#: prefs.js:908 prefs.js:928 prefs.js:1795 -msgid "No feeds are selected." -msgstr "未选择feed." +#: js/viewfeed.js:2339 +#, fuzzy +msgid "Article URL:" +msgstr "全部文章" -#: functions.js:2014 -msgid "" -"Remove selected feeds from the archive? Feeds with stored articles will not " -"be removed." -msgstr "" +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "对ä¸èµ·ï¼Œä½ çš„æµè§ˆå™¨ä¸æ”¯æŒæ²™ç®±iframe。" -#: functions.js:2066 +#: plugins/af_psql_trgm/init.js:11 #, fuzzy -msgid "Remove stored feed icon?" -msgstr "移除选定标记?" +msgid "Related articles" +msgstr "删除文章" -#: functions.js:2098 +#: plugins/note/note.js:17 #, fuzzy -msgid "Please select an image file to upload." -msgstr "请åªé€‰æ‹©ä¸€ä¸ªfeed." +msgid "Saving article note..." +msgstr "编辑文章注记" -#: functions.js:2100 -msgid "Upload new icon for this feed?" -msgstr "" +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "导入Google Reader" -#: functions.js:2117 +#: plugins/googlereaderimport/init.js:42 #, fuzzy -msgid "Please enter label caption:" -msgstr "请输入标签主题" +msgid "Please choose a file first." +msgstr "请先选择一个 OPML 文件。" -#: functions.js:2122 -msgid "Can't create label: missing caption." -msgstr "创建标签失败:缺少标题。" +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "ç”¨é‚®ä»¶è½¬å‘æ–‡ç« " -#: functions.js:2162 tt-rss.js:568 -msgid "Unsubscribe from %s?" -msgstr "退订%s?" +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "导出数æ®" -#: offline.js:636 -msgid "Data for offline browsing has not been downloaded yet." -msgstr "" +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "" -#: offline.js:677 -#, fuzzy -msgid "Synchronizing feeds..." -msgstr "ä¿å­˜feed中..." +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "导入数æ®" -#: offline.js:696 -#, fuzzy -msgid "Synchronizing categories..." -msgstr "ä¿å­˜åˆ†ç±»..." +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "请先选择文件。" -#: offline.js:714 +#: plugins/shorten_expanded/init.js:37 #, fuzzy -msgid "Synchronizing labels..." -msgstr "ä¿å­˜æ ‡è®°..." +msgid "Click to expand article" +msgstr "点击以展开文章。" -#: offline.js:733 -#, fuzzy -msgid "Synchronizing articles..." -msgstr "星级文章" +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" -#: offline.js:778 +#: plugins/mail/mail.js:38 #, fuzzy -msgid "Synchronizing articles (%d)..." -msgstr "星级文章" +msgid "Your message has been sent." +msgstr "您的个人数æ®å·²ä¿å­˜ã€‚" -#: offline.js:806 -msgid "Last sync: %s" -msgstr "" +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "链接实例" -#: offline.js:835 -msgid "Last sync: Error receiving data." -msgstr "" +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "编辑实例" -#: offline.js:888 -msgid "Synchronizing..." -msgstr "" +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "移除选中的实例?" -#: offline.js:1195 -msgid "Switch Tiny Tiny RSS into offline mode?" -msgstr "" +#: plugins/instances/instances.js:125 +#, fuzzy +msgid "Removing selected instances..." +msgstr "移除选中的实例?" -#: offline.js:1223 -msgid "Tiny Tiny RSS will reload. Go online?" -msgstr "" +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "未选中任何实例。" -#: offline.js:1655 -msgid "Last sync: Cancelled." -msgstr "" +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "请仅选择一个实例。" -#: offline.js:1672 -msgid "" -"This will remove all offline data stored by Tiny Tiny RSS on this computer. " -"Continue?" -msgstr "" +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "æ¸…ç©ºä¿¡æ¯æºæ•°æ®" -#: offline.js:1743 -msgid "" -"Tiny Tiny RSS has trouble accessing its server. Would you like to go offline?" +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" msgstr "" -#: prefs.js:233 +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "通过 URL 分享文章" + +#: plugins/share/share.js:14 #, fuzzy -msgid "Error: No feed URL given." -msgstr "未能订阅:无 feed URL。" +msgid "Generate new share URL for this article?" +msgstr "请填写类别å称:" -#: prefs.js:235 -msgid "Error: Invalid feed URL." -msgstr "" +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "å°è¯•更改URL..." -#: prefs.js:263 +#: plugins/share/share.js:55 #, fuzzy -msgid "Can't add profile: no name specified." -msgstr "添加分类失败:未指定分类å" +msgid "Remove sharing for this article?" +msgstr "ä¸å†åˆ†äº«æ­¤æ–‡ç« ï¼Ÿ" -#: prefs.js:285 -msgid "Can't add category: no name specified." -msgstr "添加分类失败:未指定分类å" +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "å°è¯•å–æ¶ˆåˆ†äº«..." -#: prefs.js:307 -#, fuzzy -msgid "Please enter login:" -msgstr "请输入标签主题" +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "之å‰å…±äº«æ–‡ç« çš„ URL 将会回到未认è¯çжæ€ã€‚是å¦ç»§ç»­ï¼Ÿ" -#: prefs.js:314 -#, fuzzy -msgid "Can't create user: no login specified." -msgstr "添加用户失败:未登录。" +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "æ¸…ç† URLs..." -#: prefs.js:438 -msgid "Remove selected labels?" -msgstr "移除选定标记?" +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "分享的URL已被清除。" -#: prefs.js:454 -msgid "No labels are selected." -msgstr "未选定标记." +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "å°† %s 中的全部文章标记为已读?" -#: prefs.js:468 -msgid "Remove selected users?" -msgstr "移除选定用户?" +#: js/feedlist.js:435 +#, fuzzy +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "å°† %s 中的一天å‰çš„全部文章标记为已读?" -#: prefs.js:485 prefs.js:798 prefs.js:819 prefs.js:858 -msgid "No users are selected." -msgstr "未选定用户." +#: js/feedlist.js:438 +#, fuzzy +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "å°† %s 中的一周å‰çš„全部文章标记为已读?" -#: prefs.js:503 -msgid "Remove selected filters?" -msgstr "移除选定的过滤器?" +#: js/feedlist.js:441 +#, fuzzy +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "å°† %s 中的两周å‰çš„全部文章标记为已读?" -#: prefs.js:519 prefs.js:888 -msgid "No filters are selected." -msgstr "未选定过滤器。" +#: js/functions.js:615 +msgid "Error explained" +msgstr "Error释义 " -#: prefs.js:538 -msgid "Unsubscribe from selected feeds?" -msgstr "退订选定feed?" +#: js/functions.js:697 +msgid "Upload complete." +msgstr "上传完æˆã€‚" -#: prefs.js:572 -msgid "Please select only one feed." -msgstr "请åªé€‰æ‹©ä¸€ä¸ªfeed." +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "移除已ä¿å­˜çš„ä¿¡æ¯æºå›¾æ ‡ï¼Ÿ" -#: prefs.js:578 +#: js/functions.js:726 #, fuzzy -msgid "Erase all non-starred articles in selected feed?" -msgstr "标记 %s 中所有访问过的主题为已读" +msgid "Removing feed icon..." +msgstr "移除已ä¿å­˜çš„ä¿¡æ¯æºå›¾æ ‡ï¼Ÿ" -#: prefs.js:600 -msgid "How many days of articles to keep (0 - use default)?" -msgstr "" +#: js/functions.js:731 +#, fuzzy +msgid "Feed icon removed." +msgstr "找ä¸åˆ°ä¿¡æ¯æºã€‚" -#: prefs.js:632 -msgid "" -"Remove selected profiles? Active and default profiles will not be removed." -msgstr "" +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "请选择图片文件上传。" -#: prefs.js:648 -#, fuzzy -msgid "No profiles selected." -msgstr "无选定文章。" +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "ä¸ºæœ¬ä¿¡æ¯æºä¸Šä¼ ä¸€ä¸ªæ–°çš„图标?" -#: prefs.js:660 -msgid "Remove selected categories?" -msgstr "移除选定分类?" +#: js/functions.js:756 +#, fuzzy +msgid "Uploading, please wait..." +msgstr "读å–中,请ç¨å€™â€¦â€¦" -#: prefs.js:678 -msgid "No categories are selected." -msgstr "未选定分类。" +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "请填写预定义标签的说明:" -#: prefs.js:745 -msgid "Login field cannot be blank." -msgstr "登陆框ä¸èƒ½ç•™ç©ºã€‚" +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "创建标签失败:没有标题。" -#: prefs.js:803 prefs.js:824 prefs.js:863 -msgid "Please select only one user." -msgstr "请åªé€‰æ‹©ä¸€ä¸ªç”¨æˆ·." +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "è®¢é˜…ä¿¡æ¯æº" -#: prefs.js:828 -msgid "Reset password of selected user?" -msgstr "é‡ç½®é€‰å®šç”¨æˆ·å¯†ç ?" +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "è§£æžè¾“出失败。 è¿™å¯èƒ½ç”±äºŽæœåŠ¡å™¨è¶…æ—¶æˆ–ç½‘ç»œé—®é¢˜ã€‚ æœåŠ¡å™¨çš„è¾“å‡ºå·²ç»è¢«è®°å½•在æµè§ˆå™¨console控制å°ä¸­ã€‚" -#: prefs.js:893 -msgid "Please select only one filter." -msgstr "请åªé€‰æ‹©ä¸€ä¸ªè¿‡æ»¤å™¨." +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "已订阅至 %s" -#: prefs.js:969 -msgid "No OPML file to upload." -msgstr "æ— OPML文件上传." +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "指定的 URL 无效。" -#: prefs.js:1229 -msgid "Reset to defaults?" -msgstr "é‡ç½®é»˜è®¤é¡¹ï¼Ÿ" +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "指定的 URL 没有包å«ä»»ä½•ä¿¡æ¯æºã€‚" -#: prefs.js:1641 -msgid "Replace current publishing address with a new one?" -msgstr "ä½¿ç”¨æ–°åœ°å€æ›¿æ¢å½“å‰åœ°å€ï¼Ÿ" +#: js/functions.js:874 +#, fuzzy +msgid "Expand to select feed" +msgstr "ç¼–è¾‘é€‰å®šçš„ä¿¡æ¯æº" -#: prefs.js:1678 +#: js/functions.js:886 #, fuzzy -msgid "Save current configuration?" -msgstr "ä¿å­˜è®¾ç½®" +msgid "Couldn't download the specified URL: %s" +msgstr "无法下载指定的 URL 。" + +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "XML验è¯å¤±è´¥ï¼š" -#: prefs.js:1779 +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "您已ç»è®¢é˜…è¿‡è¿™ä¸ªä¿¡æ¯æºå•¦ã€‚" + +#: js/functions.js:1025 #, fuzzy -msgid "Rescore articles in selected feeds?" -msgstr "无选定文章。" +msgid "Edit rule" +msgstr "编辑过滤器" -#: prefs.js:1802 -msgid "Rescore all articles? This operation may take a lot of time." +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "ç¼–è¾‘ä¿¡æ¯æº" + +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "æ›´å¤šä¿¡æ¯æº" + +#: js/functions.js:1878 +msgid "Help" +msgstr "帮助" + +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." msgstr "" -#: prefs.js:1821 +#: js/prefs.js:1089 #, fuzzy -msgid "Remove filter %s?" -msgstr "移除选定的过滤器?" +msgid "Removing category..." +msgstr "创建类别" -#: prefs.js:1882 -#, fuzzy -msgid "Save changes to selected feeds?" -msgstr "无选定文章。" +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "移除选中的类别?" -#: prefs.js:1962 +#: js/prefs.js:1113 #, fuzzy -msgid "Reset label colors to default?" -msgstr "é‡ç½®é»˜è®¤é¡¹ï¼Ÿ" +msgid "Removing selected categories..." +msgstr "移除选定的类别" -#: prefs.js:1987 -#, fuzzy -msgid "Please enter new label foreground color:" -msgstr "请输入标签主题" +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "没有选中任何类别。" -#: prefs.js:1989 +#: js/prefs.js:1134 #, fuzzy -msgid "Please enter new label background color:" -msgstr "请输入标签主题" +msgid "Category title:" +msgstr "类别" -#: prefs.js:2121 +#: js/prefs.js:1138 #, fuzzy -msgid "Activate selected profile?" -msgstr "移除选定的过滤器?" +msgid "Creating category..." +msgstr "创建过滤器" -#: prefs.js:2137 -msgid "Please choose a profile to activate." -msgstr "" +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "æœ€è¿‘æ²¡æ›´æ–°çš„ä¿¡æ¯æº" -#: tt-rss.js:74 -msgid "display feeds" -msgstr "显示Feed" +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "将当å‰çš„ OPML å‘å¸ƒåœ°å€æ›´æ”¹æ›¿æ¢ä¸ºæ–°åœ°å€ï¼Ÿ" -#: tt-rss.js:251 +#: js/prefs.js:1303 #, fuzzy -msgid "Mark all articles as read?" -msgstr "标记 %s 中所有访问过的主题为已读" +msgid "Clearing feed..." +msgstr "æ¸…ç©ºä¿¡æ¯æºæ•°æ®" -#: tt-rss.js:557 -msgid "You can't unsubscribe from the category." -msgstr "您ä¸èƒ½ä»Žåˆ†ç±»ä¸­å–消订阅。" - -#: tt-rss.js:562 tt-rss.js:755 tt-rss.js:930 -msgid "Please select some feed first." -msgstr "请先选择若干feed" +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "ä¸ºé€‰ä¸­ä¿¡æ¯æºä¸­çš„æ–‡ç« é‡ç½®è¯„分?" -#: tt-rss.js:618 +#: js/prefs.js:1326 #, fuzzy -msgid "Reset category order?" -msgstr "移除选定分类?" +msgid "Rescoring selected feeds..." +msgstr "ä¸ºé€‰ä¸­ä¿¡æ¯æºä¸­çš„æ–‡ç« é‡ç½®è¯„分?" -#: tt-rss.js:727 tt-rss.js:740 +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "é‡ç½®æ‰€æœ‰æ–‡ç« çš„评分?这å¯èƒ½å°†èŠ±è´¹å¾ˆé•¿æ—¶é—´ã€‚" + +#: js/prefs.js:1349 #, fuzzy -msgid "Mark all articles in %s as read?" -msgstr "标记 %s 中所有访问过的主题为已读" +msgid "Rescoring feeds..." +msgstr "ä¸ºä¿¡æ¯æºé‡æ–°è¯„分" -#: tt-rss.js:760 -msgid "You can't edit this kind of feed." -msgstr "您ä¸èƒ½ç¼–辑本分类feed" +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "将选中的å¯é€‰æ ‡ç­¾é‡ç½®ä¸ºé»˜è®¤é¢œè‰²ï¼Ÿ" -#: tt-rss.js:925 -#, fuzzy -msgid "You can't rescore this kind of feed." -msgstr "您ä¸èƒ½ç¼–辑本分类feed" +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "å好文件的设置" -#: tt-rss.js:935 -#, fuzzy -msgid "Rescore articles in %s?" -msgstr "星级文章" +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "移除选中的å好文件?当å‰å好与默认å好ä¸ä¼šè¢«ç§»é™¤ã€‚" -#: viewfeed.js:528 viewfeed.js:592 +#: js/prefs.js:1415 #, fuzzy -msgid "Star article" -msgstr "星级文章" +msgid "Removing selected profiles..." +msgstr "移除选中的å好文件" -#: viewfeed.js:577 -#, fuzzy -msgid "Unstar article" -msgstr "星级文章" +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "未选择å好文件。" -#: viewfeed.js:585 viewfeed.js:652 +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "å¯ç”¨é€‰ä¸­çš„å好文件?" + +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "请选择希望å¯ç”¨çš„å好文件。" + +#: js/prefs.js:1459 #, fuzzy -msgid "Please wait..." -msgstr "读å–中,请等待..." +msgid "Creating profile..." +msgstr "创建å好文件" -#: viewfeed.js:648 +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "之å‰ç”Ÿæˆçš„ä¿¡æ¯æº URL 将会回到未认è¯çжæ€ã€‚是å¦ç»§ç»­ï¼Ÿ" + +#: js/prefs.js:1525 #, fuzzy -msgid "Unpublish article" -msgstr "å‘布文章" +msgid "Generated URLs cleared." +msgstr "生æˆä¸€ä¸ªæ–°çš„ URL" -#: viewfeed.js:935 viewfeed.js:971 viewfeed.js:1012 viewfeed.js:1097 -#: viewfeed.js:1141 viewfeed.js:1288 viewfeed.js:1338 viewfeed.js:1394 -msgid "No articles are selected." -msgstr "无选定文章。" +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "编辑预定义标签" -#: viewfeed.js:1256 -msgid "Mark all visible articles in %s as read?" -msgstr "标记 %s 中所有访问过的主题为已读" +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "您ä¸èƒ½å–消订阅一个类别。" -#: viewfeed.js:1298 +#: js/viewfeed.js:113 #, fuzzy -msgid "Delete %d selected articles in %s?" -msgstr "标记 %s 中所有所选Feed为已读..." +msgid "Cancel search" +msgstr "å–æ¶ˆ" -#: viewfeed.js:1300 +#: js/viewfeed.js:174 #, fuzzy -msgid "Delete %d selected articles?" -msgstr "移除选定标记?" +msgid "New articles found, reload feed to continue." +msgstr "暂时没有文章。" -#: viewfeed.js:1348 -#, fuzzy -msgid "Archive %d selected articles in %s?" -msgstr "标记 %s 中所有所选Feed为已读..." +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "å–æ¶ˆæ˜Ÿæ ‡" -#: viewfeed.js:1351 -msgid "Move %d archived articles back?" -msgstr "" +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "加星标" -#: viewfeed.js:1401 -#, fuzzy -msgid "Mark %d selected articles in %s as read?" -msgstr "标记 %s 中所有所选Feed为已读..." +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "å–æ¶ˆå‘布文章" -#: viewfeed.js:1977 +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "å‘布文章" + +#: js/viewfeed.js:662 #, fuzzy +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "未选中任何文章。" + +#: js/viewfeed.js:1415 msgid "No article is selected." -msgstr "无选定文章。" +msgstr "未选中任何文章。" -#: viewfeed.js:2018 -#, fuzzy +#: js/viewfeed.js:1450 msgid "No articles found to mark" -msgstr "未找到文章。" +msgstr "æœªæ‰¾åˆ°éœ€è¦æ ‡è®°çš„æ–‡ç« " -#: viewfeed.js:2020 +#: js/viewfeed.js:1452 #, fuzzy -msgid "Mark %d article(s) as read?" -msgstr "标记 %s 中所有所选Feed为已读..." +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "å°† %d 篇文章标记为已读?" -#: viewfeed.js:2255 +#: js/viewfeed.js:1967 #, fuzzy -msgid "Please enter a note for this article:" -msgstr "请输入标签主题" +msgid "Display article URL" +msgstr "显示 URL" -#~ msgid "Adding feed..." -#~ msgstr "添加feed中..." +#~ msgid "Select by tags..." +#~ msgstr "通过自定义标签选择" -#~ msgid "Adding feed category..." -#~ msgstr "添加feed分类..." +#~ msgid "Limit search to:" +#~ msgstr "é™åˆ¶æœç´¢æ¡ä»¶ï¼š" -#, fuzzy -#~ msgid "Adding profile..." -#~ msgstr "添加feed中..." +#~ msgid "This feed" +#~ msgstr "æœ¬ä¿¡æ¯æº" -#~ msgid "Adding user..." -#~ msgstr "添加用户..." +#~ msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation." +#~ msgstr "ä½¿ç”¨å¤æ‚的表达å¼å¯èƒ½æ²¡æœ‰è¿”回结果。" -#, fuzzy -#~ msgid "Assign score to article:" -#~ msgstr "星级文章" +#~ msgid "Old password cannot be blank." +#~ msgstr "请输入之å‰ä½¿ç”¨çš„密ç ã€‚" -#, fuzzy -#~ msgid "Assign selected articles to label?" -#~ msgstr "标记 %s 中所有所选Feed为已读..." +#~ msgid "New password cannot be blank." +#~ msgstr "请输入一个新密ç ã€‚" -#, fuzzy -#~ msgid "Category reordering disabled" -#~ msgstr "移除选定分类?" +#~ msgid "Entered passwords do not match." +#~ msgstr "两次输入的密ç ä¸ä¸€è‡´ã€‚" -#, fuzzy -#~ msgid "Category reordering enabled" -#~ msgstr "移除选定分类?" +#~ msgid "Function not supported by authentication module." +#~ msgstr "è®¤è¯æ¨¡å—䏿”¯æŒè¯¥åŠŸèƒ½ã€‚" -#, fuzzy -#~ msgid "Changing password..." -#~ msgstr "更改密ç " +#~ msgid "Match:" +#~ msgstr "匹é…:" -#, fuzzy -#~ msgid "Clearing feed..." -#~ msgstr "ä¿å­˜feed中..." +#~ msgid "Any" +#~ msgstr "ä»»æ„" #, fuzzy -#~ msgid "Clearing selected feed..." -#~ msgstr "移除选定的过滤器..." +#~ msgid "All tags." +#~ msgstr "所有自定义标签" -#, fuzzy -#~ msgid "comments" -#~ msgstr "内容" +#~ msgid "Which Tags?" +#~ msgstr "哪些自定义标签?" -#, fuzzy -#~ msgid "Could not change feed URL." -#~ msgstr "未能更新地å€" +#~ msgid "Display entries" +#~ msgstr "显示æ¡ç›®" -#~ msgid "Could not display article (missing XML object)" -#~ msgstr "显示æ¡ç›®å¤±è´¥ï¼ˆç¼ºå°‘XML支æŒï¼‰" +#~ msgid "Select item(s) by tags" +#~ msgstr "通过自定义标签选择" #, fuzzy -#~ msgid "Could not update headlines (missing XML data)" -#~ msgstr "æ›´æ–°æè¦å¤±è´¥ï¼ˆç¼ºå°‘XML支æŒï¼‰" +#~ msgid "Unread First" +#~ msgstr "未读优先" -#~ msgid "Could not update headlines (missing XML object)" -#~ msgstr "æ›´æ–°æè¦å¤±è´¥ï¼ˆç¼ºå°‘XML支æŒï¼‰" +#~ msgid "Unknown option: %s" +#~ msgstr "未知选项: %s" -#~ msgid "Entire feed" -#~ msgstr "输入feed" +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "Tiny Tiny RSS 有新版本啦ï¼" #, fuzzy -#~ msgid "Error while trying to load more headlines" -#~ msgstr "è§£æžæ–‡æ¡£æ—¶å‘生错误。" +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "无法验è¯ä¼šè¯ï¼ˆuser agentå‘生å˜åŒ–)" -#, fuzzy -#~ msgid "Failed to load article in new window" -#~ msgstr "æ–°çª—å£æ‰“开文章连结" +#~ msgid "Assign articles to labels automatically" +#~ msgstr "为文章自动分é…预定义标签?" -#, fuzzy -#~ msgid "Failed to open window for the article" -#~ msgstr "请输入标签主题" +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "Tiny Tiny RSS 有å¯ç”¨çš„æ–°ç‰ˆæœ¬ (%s)。" -#, fuzzy -#~ msgid "Feed icon removed." -#~ msgstr "未找到Feed." +#~ msgid "You can update using built-in updater in the Preferences or by using update.php" +#~ msgstr "ä½ å¯ä»¥ä½¿ç”¨å†…置的更新器,或者update.php,æ¥è¿›è¡Œæ›´æ–°ã€‚" -#, fuzzy -#~ msgid "Loading feed list..." -#~ msgstr "读å–中,请等待..." +#~ msgid "See the release notes" +#~ msgstr "查看版本å‘布记录" -#~ msgid "Mark as read:" -#~ msgstr "标记为已读:" +#~ msgid "Download" +#~ msgstr "下载" -#~ msgid "Marking all feeds as read..." -#~ msgstr "标记所有Feed未已读..." +#~ msgid "Error receiving version information or no new version available." +#~ msgstr "获å–ç‰ˆæœ¬ä¿¡æ¯æ—¶å‡ºé”™äº†ï¼Œæˆ–者还没有新版本。" #, fuzzy -#~ msgid "Purging selected feed..." -#~ msgstr "移除选定的过滤器..." +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "返回 Tiny Tiny RSS" #, fuzzy -#~ msgid "Remove selected articles from label?" -#~ msgstr "移除选定标记?" - -#~ msgid "Removing feed..." -#~ msgstr "移除feed中..." +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "Tiny Tiny RSS æ•°æ®åº“是最新版。" #, fuzzy -#~ msgid "Removing filter..." -#~ msgstr "移除feed中..." +#~ msgid "Force update" +#~ msgstr "执行更新" -#, fuzzy -#~ msgid "Removing offline data..." -#~ msgstr "移除feed中..." +#~ msgid "Do not close this dialog until updating is finished." +#~ msgstr "在更新完æˆå‰ä¸è¦å…³é—­æ­¤å¯¹è¯æ¡†ã€‚" -#~ msgid "Removing selected categories..." -#~ msgstr "移除选定分类..." +#~ msgid "It is suggested to backup your tt-rss directory first." +#~ msgstr "强烈建议先备份你的tt-rss目录。" -#~ msgid "Removing selected filters..." -#~ msgstr "移除选定的过滤器..." +#~ msgid "Your database will not be modified." +#~ msgstr "你的数æ®åº“å°†ä¸ä¼šè¢«ä¿®æ”¹ã€‚" -#~ msgid "Removing selected labels..." -#~ msgstr "移除选定标记..." +#~ 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 "你当å‰çš„tt-rss安装目录ä¸ä¼šè¢«ä¿®æ”¹ã€‚它将会被é‡å‘½å,ä¿å­˜åœ¨çˆ¶ç›®å½•里。在更新完æˆåŽï¼Œä½ å¯ä»¥è¿ç§»æ‰€æœ‰çš„自定义文件。" #, fuzzy -#~ msgid "Removing selected profiles..." -#~ msgstr "移除选定的过滤器..." - -#~ msgid "Removing selected users..." -#~ msgstr "移除选定用户..." +#~ msgid "Ready to update." +#~ msgstr "准备更新。" #, fuzzy -#~ msgid "Rescore last 100 articles in selected feeds?" -#~ msgstr "无选定文章。" +#~ msgid "Start update" +#~ msgstr "开始更新" -#, fuzzy -#~ msgid "Rescoring articles..." -#~ msgstr "星级文章" +#~ msgid "Backup your tt-rss directory before continuing. Please type 'yes' to continue." +#~ msgstr "请先备份你的tt-rss目录。 敲击'yes'æ¥ç»§ç»­ä¸‹ä¸€æ­¥ã€‚" -#~ msgid "Resetting password for selected user..." -#~ msgstr "é‡ç½®é€‰å®šç”¨æˆ·å¯†ç ..." +#~ msgid "New version available!" +#~ msgstr "有å¯ç”¨çš„æ–°ç‰ˆæœ¬å•¦ï¼" -#, fuzzy -#~ msgid "Saving article tags..." -#~ msgstr "ä¿å­˜åˆ†ç±»..." +#~ msgid "From:" +#~ msgstr "å‘信人:" -#~ msgid "Saving feed..." -#~ msgstr "ä¿å­˜feed中..." +#~ msgid "Select:" +#~ msgstr "选择:" -#, fuzzy -#~ msgid "Saving feeds..." -#~ msgstr "ä¿å­˜feed中..." +#~ msgid "mark as read" +#~ msgstr "标记为已读" -#~ msgid "Saving filter..." -#~ msgstr "ä¿å­˜è¿‡æ»¤å™¨..." +#~ msgid "Change password to" +#~ msgstr "更改密ç ä¸ºï¼š" -#~ msgid "Saving user..." -#~ msgstr "ä¿å­˜ç”¨æˆ·..." +#~ msgid "E-mail: " +#~ msgstr "电å­é‚®ä»¶ï¼š" -#~ msgid "Selection" -#~ msgstr "选择:" +#~ msgid "Login field cannot be blank." +#~ msgstr "请填写登录信æ¯ã€‚" #, fuzzy -#~ msgid "Tiny Tiny RSS is in offline mode." -#~ msgstr "Tiny Tiny RSS æ•°æ®åº“是最新版。" - -#~ msgid "Trying to change e-mail..." -#~ msgstr "å°è¯•更改e-mail..." +#~ msgid "Saving user..." +#~ msgstr "创建过滤器" #, fuzzy -#~ msgid "Upload failed." -#~ msgstr "星级文章" +#~ msgid "Toggle marked" +#~ msgstr "é”定加星标的项" #, fuzzy -#~ msgid "Display original article content" -#~ msgstr "显示最近文章时间" +#~ msgid "(Un)hide empty categories" +#~ msgstr "编辑类别" -#~ msgid "All feeds updated." -#~ msgstr "所有Feed已更新。" +#~ msgid "Published articles and generated feeds" +#~ msgstr "å·²å‘布的文章和生æˆçš„ä¿¡æ¯æº" -#~ msgid "Changing category of selected feeds..." -#~ msgstr "改å˜é€‰å®šfeed所属分类..." +#~ msgid "Articles shared by URL" +#~ msgstr "通过 URL 分享的文章" -#, fuzzy -#~ msgid "Erase all non-starred articles in %s?" -#~ msgstr "标记 %s 中所有访问过的主题为已读" +#~ msgid "These feeds have not been updated because of errors:" +#~ msgstr "ä¿¡æ¯æºå› ä¸ºå¦‚下错误未能更新:" #, fuzzy -#~ msgid "Trying to change address..." -#~ msgstr "å°è¯•更改密ç ..." +#~ msgid "Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings." +#~ msgstr "" +#~ "本页é¢éœ€è¦JavaScript支æŒã€‚\n" +#~ "\t\t\t请检查您的æµè§ˆå™¨è®¾ç½®ã€‚" -#~ msgid "Trying to change password..." -#~ msgstr "å°è¯•更改密ç ..." +#~ msgid "Hello," +#~ msgstr "您好," -#~ msgid "Unsubscribing from selected feeds..." -#~ msgstr "退订选定feed..." +#~ msgid "Home" +#~ msgstr "主页" -#, fuzzy -#~ msgid "You can't clear this type of feed." -#~ msgstr "您ä¸èƒ½ç¼–辑本分类feed" +#~ msgid "Nothing found (click to reload feed)." +#~ msgstr "å•¥ä¹Ÿæ²¡æ‰¾åˆ°ï¼ˆç‚¹å‡»ä»¥é‡æ–°åŠ è½½ä¿¡æ¯æºï¼‰ã€‚" -#, fuzzy -#~ msgid "Clear articles" -#~ msgstr "过滤文章" +#~ msgid "Enable categories" +#~ msgstr "å¯ç”¨ç±»åˆ«" -#~ msgid "Adding category %s...
    " -#~ msgstr "添加分类 %s...
    " +#~ msgid "ON" +#~ msgstr "ON" -#~ msgid "Done." -#~ msgstr "完æˆã€‚" +#~ msgid "OFF" +#~ msgstr "OFF" -#~ msgid "Close" -#~ msgstr "关闭" +#~ msgid "Browse categories like folders" +#~ msgstr "ä»¥æ–‡ä»¶å¤¹æ–¹å¼æµè§ˆç±»åˆ«" -#~ msgid "The configuration was reset to defaults." -#~ msgstr "设置é‡ç½®ä¸ºé»˜è®¤" +#~ msgid "Show images in posts" +#~ msgstr "在帖å­é‡Œæ˜¾ç¤ºå›¾åƒ" -#~ msgid "Themes" -#~ msgstr "模æ¿" +#~ msgid "Hide read articles and feeds" +#~ msgstr "éšè—å·²è¯»çš„æ–‡ç« å’Œä¿¡æ¯æº" -#~ msgid "Change theme" -#~ msgstr "更改模æ¿" +#~ msgid "Sort feeds by unread count" +#~ msgstr "ä»¥æœªè¯»æ–‡ç« æ•°é‡æŽ’åˆ—ä¿¡æ¯æº" #, fuzzy -#~ msgid "Hide read items" -#~ msgstr "  (显示)éšè—已读feed" +#~ msgid "Article archive" +#~ msgstr "文章å‘布时间" #, fuzzy -#~ msgid "Remove selected feeds from archive?" -#~ msgstr "移除选定标记?" - -#~ msgid "Search results" -#~ msgstr "æœç´¢ç»“æžœ" - -#~ msgid "Searched for" -#~ msgstr "æœç´¢" +#~ msgid "Set value" +#~ msgstr "加星标" #, fuzzy -#~ msgid "More feeds..." -#~ msgstr "移除feed中..." +#~ msgid "Mark %d displayed article as read?" +#~ msgid_plural "Mark %d displayed articles as read?" +#~ msgstr[0] "将显示的 %d 篇文章标记为已读?" -#~ msgid "Search:" -#~ msgstr "æœç´¢:" +#~ msgid "Error: unable to load article." +#~ msgstr "错误:无法加载文章。" #, fuzzy -#~ msgid "Order:" -#~ msgstr "地点:" +#~ msgid "%d more..." +#~ msgid_plural "%d more..." +#~ msgstr[0] "下é¢çš„ %d 篇……" -#~ msgid "browse more" -#~ msgstr "æµè§ˆæ›´å¤š" +#~ msgid "No unread feeds." +#~ msgstr "æ²¡æœ‰æœªè¯»çš„ä¿¡æ¯æºã€‚" -#~ msgid "Feed browser is administratively disabled." -#~ msgstr "Feed æµè§ˆå™¨æœ‰é™åˆ¶" +#~ msgid "Load more..." +#~ msgstr "加载更多……" -#~ msgid "Top" -#~ msgstr "Top" +#~ msgid "Switch to digest..." +#~ msgstr "切æ¢è‡³æ‘˜è¦æ¨¡å¼" -#~ msgid "Show" -#~ msgstr "显示" +#~ msgid "Show tag cloud..." +#~ msgstr "显示标签云" -#~ msgid "Hide from \"Other Feeds\"" -#~ msgstr "éšè—\"å…¶ä»– Feed\"" +#~ msgid "Click to play" +#~ msgstr "点击播放" -#~ msgid "Unable to delete non empty feed categories." -#~ msgstr "ä¸èƒ½åˆ é™¤éžç©ºåˆ†ç±»ã€‚" +#~ msgid "Play" +#~ msgstr "播放" -#~ msgid "Recategorize" -#~ msgstr "å†åˆ†ç±»" +#~ msgid "Visit the website" +#~ msgstr "访问网站" -#, fuzzy -#~ msgid "Other:" -#~ msgstr "地点:" +#~ msgid "Select theme" +#~ msgstr "选择主题" -#, fuzzy -#~ msgid "Generate another link" -#~ msgstr "生æˆå¦ä¸€ä¸ªåœ°å€" +#~ msgid "Playing..." +#~ msgstr "播放中……" -#, fuzzy -#~ msgid "View feeds" -#~ msgstr "éšè—我的Feed列表" +#~ msgid "Default interval between feed updates" +#~ msgstr "ä¿¡æ¯æºæ›´æ–°çš„默认时间间隔" -#, fuzzy -#~ msgid "View tags" -#~ msgstr "编辑标签" +#~ msgid "Could not update database" +#~ msgstr "无法更新数æ®åº“" -#~ msgid "View:" -#~ msgstr "æµè§ˆ:" +#~ msgid "Could not find necessary schema file, need version:" +#~ msgstr "无法找到必è¦çš„表结构文件,需è¦ç‰ˆæœ¬ï¼š" -#~ msgid "Page" -#~ msgstr "页" +#~ msgid ", found: " +#~ msgstr ",找到:" -#, fuzzy -#~ msgid "Back to feedlist" -#~ msgstr "éšè—我的Feed列表" +#~ msgid "Tiny Tiny RSS database is up to date." +#~ msgstr "Tiny Tiny RSS æ•°æ®åº“是最新版。" -#, fuzzy -#~ msgid "Tags:" -#~ msgstr "标签" +#~ msgid "Please backup your database before proceeding." +#~ msgstr "执行下一步å‰è¯·å…ˆå¤‡ä»½æ•°æ®åº“。" -#, fuzzy -#~ msgid "Mark as unread" -#~ msgstr "标记为已读" +#~ msgid "Your Tiny Tiny RSS database needs update to the latest version (%d to %d)." +#~ msgstr "您的 Tiny Tiny RSS æ•°æ®åº“需è¦å‡çº§åˆ°æœ€æ–°ç‰ˆï¼ˆ%d 到 %d)。" -#~ msgid "Where:" -#~ msgstr "地点:" +#~ msgid "Performing updates..." +#~ msgstr "正在更新……" -#, fuzzy -#~ msgid "Match on:" -#~ msgstr "匹é…:" +#~ msgid "Updating to version %d..." +#~ msgstr "正在更新到 %d 版本……" -#, fuzzy -#~ msgid "Click to view" -#~ msgstr "星级文章" +#~ msgid "Checking version... " +#~ msgstr "正在检查版本……" -#~ msgid "This program requires XmlHttpRequest " -#~ msgstr "本程åºéœ€è¦xmlhttprequest支æŒ" +#~ msgid "OK!" +#~ msgstr "OKï¼" -#~ msgid "This program requires cookies " -#~ msgstr "本程åºéœ€è¦å¼€å¯cookies" +#~ msgid "ERROR!" +#~ msgstr "错误ï¼" #, fuzzy -#~ msgid "  Keyboard shortcuts" -#~ msgstr "  åˆ›å»ºè¿‡æ»¤å™¨" +#~ msgid "Finished. Performed %d update up to schema version %d." +#~ msgid_plural "Finished. Performed %d updates up to schema version %d." +#~ msgstr[0] "" +#~ "完æˆã€‚完æˆäº† %d 个更新,\n" +#~ "\t\t\t表结构版本å‡çº§è‡³ %d。" -#~ msgid "description" -#~ msgstr "æè¿°" +#~ msgid "Your database schema is from a newer version of Tiny Tiny RSS." +#~ msgstr "您的数æ®åº“表结构æ¥è‡ªä¸€ä¸ªè¾ƒæ–°ç‰ˆæœ¬çš„ Tiny Tiny RSS。" -#, fuzzy -#~ msgid "action_description" -#~ msgstr "æè¿°" +#~ msgid "Found schema version: %d, required: %d." +#~ msgstr "å‘现新版本的表结构:%d,需è¦çš„版本:%d。" -#~ msgid "short_desc" -#~ msgstr "short_desc" +#~ msgid "Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer version and continue." +#~ msgstr "无法å‡çº§è¡¨ç»“构。请将 Tiny Tiny RSS 更新到最新版本之åŽå†æ¥å°è¯•。" -#~ msgid "Can't add user: no login specified." -#~ msgstr "添加用户失败:未登录。" +#~ msgid "Enable external API" +#~ msgstr "å…许使用外部 API" -#~ msgid "Can't create label: missing SQL expression." -#~ msgstr "创建标签失败:缺少或错误的SQL表达å¼ã€‚" +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "选择本项å¯è®©ç‰¹æ®ŠåŒºåŸŸå’Œé¢„å®šä¹‰æ ‡ç­¾ä¸­çš„æ–‡ç« æ ‡é¢˜ä»¥ä¿¡æ¯æºé¡ºåºæŽ’列" -#~ msgid "Loading help..." -#~ msgstr "读å–帮助..." +#~ msgid "Title or Content" +#~ msgstr "标题或内容" -#~ msgid "Saving label..." -#~ msgstr "ä¿å­˜æ ‡è®°..." +#~ msgid "Link" +#~ msgstr "链接" -#~ msgid "Please select only one label." -#~ msgstr "请åªé€‰æ‹©ä¸€ä¸ªæ ‡è®°." +#~ msgid "Content" +#~ msgstr "内容" -#~ msgid "Please select only one category." -#~ msgstr "请åªé€‰æ‹©ä¸€ä¸ªåˆ†ç±»." +#~ msgid "Article Date" +#~ msgstr "文章å‘布时间" -#~ msgid "Address changed." -#~ msgstr "地å€å·²ç»å˜æ›´" +#~ msgid "Set starred" +#~ msgstr "加星标" -#, fuzzy -#~ msgid "Rescoring feeds..." -#~ msgstr "移除feed中..." +#~ msgid "Assign tags" +#~ msgstr "添加自定义标签" -#, fuzzy -#~ msgid "Restart in offline mode" -#~ msgstr "设置检查失败" +#~ 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 "您å¯èƒ½è®¢é˜…了一些èšåˆç±»åž‹çš„ä¿¡æ¯æºï¼Œè¿™ç§æƒ…况下å¯èƒ½é‡åˆ°åŒä¸€ç”¨æˆ·çš„æ–‡ç« åœ¨ä¸åŒæºå¤šæ¬¡å‡ºçŽ°ã€‚å½“è¯¥é€‰é¡¹è¢«ç¦ç”¨æ—¶ï¼Œæ¥è‡ªä¸åŒ RSS æºçš„åŒä¸€æ–‡ç« å°†åªä¼šæ˜¾ç¤ºä¸€æ¬¡ã€‚" -#, fuzzy -#~ msgid "Converting database..." -#~ msgstr "è½¬æ¢æ ‡ç­¾" +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "日期的语法正确:" -#~ msgid "" -#~ "Fatal Error: You forgot to copy \n" -#~ "\t\tconfig.php-dist to config.php and edit it.\n" -#~ msgstr "" -#~ "致命错误: 您没有将 \n" -#~ "\t\tconfig.php-dist 修改为 config.php并编辑 。\n" +#~ msgid "Date syntax is incorrect." +#~ msgstr "日期的语法错误。" -#~ msgid "" -#~ "config: your config file version is incorrect. See config.php-dist.\n" -#~ msgstr "设置: 您的设置文件未被接å—,请å‚考config.php-dist文件.\n" +#~ msgid "Notice" +#~ msgstr "æç¤º" -#~ msgid "" -#~ "Fatal error: RSS_BACKEND_TYPE is deprecated. Please remove this\n" -#~ "\t\t\toption from config.php\n" -#~ msgstr "" -#~ "致命错误: 䏿”¯æŒRSS_BACKEND_TYPE 请从 config.php中关闭或移除此项\n" +#~ msgid "Tag Cloud" +#~ msgstr "标签云" -#~ msgid "" -#~ "Fatal Error: XML Import/Export tools (xml-export.php\n" -#~ "\t\tand xml-import.php) could be used maliciously. Please remove " -#~ "them \n" -#~ "\t\tfrom your TT-RSS instance.\n" -#~ msgstr "" -#~ "致命错误: XML 导入/导出工具(xml-export.php\n" -#~ "\t\tå’Œ xml-import.php) è¢«æ¶æ„使用。请从您的TT-RSS中关闭或移除这些" -#~ "项。\n" +#~ msgid "Mark all visible articles in %s as read?" +#~ msgstr "标记 %s 中所有å¯è§çš„æ–‡ç« ä¸ºå·²è¯»ï¼Ÿ" -#~ msgid "" -#~ "Fatal Error: Please set DAEMON_UPDATE_LOGIN_LIMIT\n" -#~ "\t\t\tto 0 in single user mode.\n" -#~ msgstr "" -#~ "致命错误:在å•用户模å¼ä¸‹ï¼Œè¯·è®¾ç½®DAEMON_UPDATE_LOGIN_LIMIT\t\t\t为" -#~ "0。\n" +#~ msgid "Score" +#~ msgstr "评分" -#~ msgid "" -#~ "Fatal Error: You have enabled USE_CURL_FOR_ICONS, but your PHP \n" -#~ "\t\t\tdoesn't seem to support CURL functions." -#~ msgstr "" -#~ "致命错误: 您开å¯äº† USE_CURL_FOR_ICONS, 但是您的PHP \n" -#~ "\t\t\tè²Œä¼¼ä¸æ”¯æŒCURL 功能." +#~ msgid "New articles available in this feed (click to show)" +#~ msgstr "æœ¬ä¿¡æ¯æºä¸­çš„æœ€æ–°æ–‡ç« ï¼ˆç‚¹å‡»æ˜¾ç¤ºï¼‰" -#~ msgid "config: SESSION_EXPIRE_TIME is undefined" -#~ msgstr "设置: SESSION_EXPIRE_TIME 未定义。" +#, fuzzy +#~ msgid "Share on identi.ca" +#~ msgstr "在 Twitter 上分享" -#~ msgid "config: SESSION_EXPIRE_TIME is too low (less than 60)" -#~ msgstr "设置: SESSION_EXPIRE_TIME 过低(低于60)" +#, fuzzy +#~ msgid "Flattr this article." +#~ msgstr "加星标" -#~ msgid "config: SESSION_EXPIRE_TIME should be greater or equal to" -#~ msgstr "设置: SESSION_EXPIRE_TIME 应高于或等于" +#, fuzzy +#~ msgid "Share on Google+" +#~ msgstr "在 Twitter 上分享" -#~ msgid "" -#~ "config: DATABASE_BACKED_SESSIONS is incompatible with SINGLE_USER_MODE" -#~ msgstr "设置: DATABASE_BACKED_SESSIONS 与 SINGLE_USER_MODE冲çªã€‚" +#, fuzzy +#~ msgid "Share on Twitter" +#~ msgstr "在 Twitter 上分享" -#~ msgid "config: DATABASE_BACKED_SESSIONS are currently broken with MySQL" -#~ msgstr "设置: DATABASE_BACKED_SESSIONS å—到 MySQL å½±å“" +#, fuzzy +#~ msgid "Show additional preferences" +#~ msgstr "退出å好设置" -#~ msgid "Unknown Error" -#~ msgstr "未知错误" +#, fuzzy +#~ msgid "Back to feeds" +#~ msgstr "å¾ˆä¹…ä¸æ´»è·ƒçš„ä¿¡æ¯æº" -#~ msgid "Feed information:" -#~ msgstr "Feed ä¿¡æ¯ï¼š" +#~ msgid "This will clear your stored authentication information for Twitter. Continue?" +#~ msgstr "这将会清空所有ä¿å­˜è¿‡çš„ Twitter 认è¯ä¿¡æ¯ã€‚是å¦ç»§ç»­ï¼Ÿ" #, fuzzy -#~ msgid "Site:" -#~ msgstr "标题:" +#~ msgid "Clearing credentials..." +#~ msgstr "清空ä¿å­˜çš„个人信æ¯" -#, fuzzy -#~ msgid "Last updated:" -#~ msgstr "已更新" +#~ msgid "Updated" +#~ msgstr "有更新的" -#~ msgid "Last headlines:" -#~ msgstr "最新æè¦ï¼š" +#~ msgid "Notifying %s." +#~ msgstr "æé†’ %s。" -#~ msgid "Other feeds: Top 25" -#~ msgstr " å…¶ä»–feed: Top 25" +#~ msgid "Yes" +#~ msgstr "是" -#~ msgid "Showing top 25 registered feeds, sorted by popularity:" -#~ msgstr "æ˜¾ç¤ºæŒ‰å—æ¬¢è¿Žåº¦æŽ’åºçš„25个注册feed:" +#~ msgid "No" +#~ msgstr "å¦" -#~ msgid "Top 25" -#~ msgstr "Top 25" +#~ msgid "News" +#~ msgstr "æ–°é—»" -#~ msgid "Content Filtering" -#~ msgstr "内容过滤器" +#~ msgid "Move between feeds" +#~ msgstr "åœ¨ä¿¡æ¯æºä¹‹é—´ç§»åЍ" -#~ msgid "Label Editor" -#~ msgstr "标记编辑" +#~ msgid "Move between articles" +#~ msgstr "在文章之间移动" -#~ msgid "User Manager" -#~ msgstr "用户管ç†" +#~ msgid "Active article actions" +#~ msgstr "å¯ç”¨æ–‡ç« åŠ¨ä½œ" -#~ msgid "Toggle:" -#~ msgstr "触å‘:" +#~ msgid "Mark articles below/above active one as read" +#~ msgstr "将当å‰é¡¹ä»¥ä¸‹/以上的文章标记为已读" -#~ msgid "  Subscribe to feed" -#~ msgstr "  è®¢é˜…feed" +#~ msgid "Other actions" +#~ msgstr "其他动作" -#~ msgid "  Edit this feed" -#~ msgstr "  ç¼–辑feed" +#~ msgid "Display this help dialog" +#~ msgstr "æ˜¾ç¤ºæœ¬å¸®åŠ©å¯¹è¯æ¡†" -#, fuzzy -#~ msgid "  Clear articles" -#~ msgstr "  åˆ›å»ºè¿‡æ»¤å™¨" +#~ msgid "Multiple articles actions" +#~ msgstr "多文章动作" #, fuzzy -#~ msgid "  Rescore feed" -#~ msgstr "  è®¢é˜…feed" +#~ msgid "Select starred articles" +#~ msgstr "选择未读文章" -#~ msgid "  Unsubscribe" -#~ msgstr "  é€€è®¢" +#~ msgid "Feed actions" +#~ msgstr "ä¿¡æ¯æºåŠ¨ä½œ" -#~ msgid "  Mark as read" -#~ msgstr "  æ ‡è®°æœªå·²è¯»" +#~ msgid "If viewing category, (un)collapse it" +#~ msgstr "查看类别时将其折å /展开" -#~ msgid "  (Un)hide read feeds" -#~ msgstr "  (显示)éšè—已读feed" +#~ msgid "Press any key to close this window." +#~ msgstr "按任æ„键关闭本窗å£ã€‚" -#, fuzzy -#~ msgid "  Create label" -#~ msgstr "  åˆ›å»ºè¿‡æ»¤å™¨" +#~ msgid "My Feeds" +#~ msgstr "æˆ‘çš„ä¿¡æ¯æº" -#~ msgid "  Create filter" -#~ msgstr "  åˆ›å»ºè¿‡æ»¤å™¨" +#~ msgid "Panel actions" +#~ msgstr "版é¢åŠ¨ä½œ" -#, fuzzy -#~ msgid "  Reset category order" -#~ msgstr "  è®¢é˜…feed" +#~ msgid "Top 25 feeds" +#~ msgstr "å‰25ä½çš„ä¿¡æ¯æº" -#~ msgid "" -#~ "This panel shows feeds subscribed by other users of this system, just in " -#~ "case you are interested in them too." -#~ msgstr "æœ¬æŽ§åˆ¶é¢æ¿æ˜¾ç¤ºç³»ç»Ÿå…¶ä»–用户订阅的feed,如果您感兴趣。" +#~ msgid "Edit feed categories" +#~ msgstr "ç¼–è¾‘ä¿¡æ¯æºç±»åˆ«" -#, fuzzy -#~ msgid "Match " -#~ msgstr "匹é…" +#~ msgid "Focus search (if present)" +#~ msgstr "进入æœç´¢æ¡†ï¼ˆé¡µé¢ä¸­å­˜åœ¨çš„æƒ…况)" -#, fuzzy -#~ msgid "Unread articles" -#~ msgstr "星级文章" +#~ msgid "Note: not all actions may be available, depending on Tiny Tiny RSS configuration and your access level." +#~ msgstr "æé†’ï¼šæ ¹æ® Tiny Tiny RSS çš„é…置和你的访问级别ä¸åŒï¼Œå¹¶éžæ‰€æœ‰çš„动作都å¯ä»¥æ‰§è¡Œã€‚" -#, fuzzy -#~ msgid "Title contains" -#~ msgstr "标题或内容" +#~ msgid "Open article in new tab" +#~ msgstr "在新标签页中打开文章" + +#~ msgid "Right-to-left content" +#~ msgstr "å³è‡³å·¦çš„内容" #, fuzzy -#~ msgid "Content contains" -#~ msgstr "内容过滤器" +#~ msgid "Cache content locally" +#~ msgstr "本地缓存图片" -#~ msgid "Caption" -#~ msgstr "标题" +#~ msgid "Mark posts as updated on content change" +#~ msgstr "将内容更改过的文章标记为已更新状æ€" -#, fuzzy -#~ msgid "Match SQL" -#~ msgstr "匹é…" +#~ msgid "Loading..." +#~ msgstr "加载中……" -#~ msgid "Saved label %s" -#~ msgstr "å·²ä¿å­˜æ ‡è®°%s" +#~ msgid "View in a tt-rss tab" +#~ msgstr "在 tt-rss 舌签中查看" -#~ msgid "SQL Expression" -#~ msgstr "SQL 表达å¼" +#~ msgid "Magpie" +#~ msgstr "Magpie" -#, fuzzy -#~ msgid "[No caption]" -#~ msgstr "标题" +#~ msgid "SimplePie" +#~ msgstr "SimplePie" -#, fuzzy -#~ msgid "Labels and SQL Expressions" -#~ msgstr "SQL 表达å¼" +#~ msgid "using" +#~ msgstr "使用" -#, fuzzy -#~ msgid "Match all unread articles:" -#~ msgstr "星级文章" +#~ msgid "match on" +#~ msgstr "匹é…" -#, fuzzy -#~ msgid "Search to label" -#~ msgstr "è½¬æ¢æ ‡ç­¾" +#~ msgid "Title or content" +#~ msgstr "标题或内容" -#~ msgid "Convert to label" -#~ msgstr "è½¬æ¢æ ‡ç­¾" +#~ msgid "Your request could not be completed." +#~ msgstr "您的请求无法完æˆã€‚" -#, fuzzy -#~ msgid "Create Label" -#~ msgstr "创建标记" +#~ msgid "Feed update has been scheduled." +#~ msgstr "ä¿¡æ¯æºæ›´æ–°çš„任务计划已制定。" -#~ msgid "Test" -#~ msgstr "测试" +#~ msgid "Category update has been scheduled." +#~ msgstr "分类更新已列入任务计划。" + +#~ msgid "Can't update this kind of feed." +#~ msgstr "无法更新这ç§ç±»åž‹çš„ä¿¡æ¯æºã€‚" + +#~ msgid "Original article" +#~ msgstr "原文" + +#~ msgid "Update feed" +#~ msgstr "æ›´æ–°ä¿¡æ¯æº" #, fuzzy -#~ msgid "Perform action" -#~ msgstr "å®Œæˆæ›´æ–°" +#~ msgid "With subcategories" +#~ msgstr "编辑类别" -#~ msgid "Filter expression" -#~ msgstr "过滤器表达å¼" +#~ msgid "Twitter OAuth" +#~ msgstr "Twitter OAuth 认è¯" -#~ msgid "Enable icons in feedlist" -#~ msgstr "feed列表中ä¸å¯ç”¨ico" +#~ msgid "
  • Adding category %s.
  • " +#~ msgstr "
  • 添加类别:%s。
  • " -#~ msgid "Category:" -#~ msgstr "分类:" +#~ msgid "OK" +#~ msgstr "OK" -#~ msgid "Caption:" -#~ msgstr "说明:" +#~ msgid "Register with Twitter" +#~ msgstr "通过 Twitter 注册" -#~ msgid "SQL Expression:" -#~ msgstr "SQL 表达å¼:" +#~ msgid "Could not connect to Twitter. Refresh the page or try again later." +#~ msgstr "无法连接 Twitter ã€‚è¯·åˆ·æ–°é¡µé¢æˆ–过会儿é‡è¯•。" -#~ msgid "Match:" -#~ msgstr "匹é…:" +#~ msgid "Congratulations! You have successfully registered with Twitter." +#~ msgstr "æ­å–œï¼æ‚¨å·²ç»æˆåŠŸé€šè¿‡ Twitter 注册。" -#~ msgid "Feed:" -#~ msgstr "Feed:" +#~ msgid "before" +#~ msgstr "之å‰" -#~ msgid "Action:" -#~ msgstr "æ“作:" +#~ msgid "after" +#~ msgstr "之åŽ" -#~ msgid "Params:" -#~ msgstr "傿•°:" +#~ msgid "Check it" +#~ msgstr "检查一下" -#~ msgid "Title:" -#~ msgstr "标题:" +#~ msgid "Category $%s already exists in the database." +#~ msgstr "æ•°æ®åº“ä¸­å·²ç»æœ‰ $%s 这个类别。" -#, fuzzy -#~ msgid "Update using:" -#~ msgstr "æ›´æ–°" +#~ msgid "No feed categories defined." +#~ msgstr "æ²¡æœ‰å®šä¹‰è¿‡çš„ä¿¡æ¯æºç±»åˆ«ã€‚" -#~ msgid "Change password:" -#~ msgstr "更改密ç :" +#~ msgid "Hint: you can drag feeds and categories around." +#~ msgstr "æç¤ºï¼š 您å¯ä»¥æ‹–æ‹½ä¿¡æ¯æºå’Œç±»åˆ«ã€‚" -#, fuzzy -#~ msgid "Update errors" -#~ msgstr "更新错误" +#~ msgid "Subscribing using bookmarklet" +#~ msgstr "通过书签订阅" -#~ msgid "This page" -#~ msgstr "本页" +#~ msgid "Twitter" +#~ msgstr "Twitter" -#, fuzzy -#~ msgid "Below active article" -#~ msgstr "过滤文章" +#~ msgid "Before you can update your Twitter feeds, you must register this instance of Tiny Tiny RSS with Twitter.com." +#~ msgstr "æ›´æ–° Twitter ä¿¡æ¯æºä¹‹å‰ï¼Œæ‚¨å¿…须在 Twitter.com 上注册这个 Tiny Tiny RSS 的实例。" -#~ msgid "Next page" -#~ msgstr "下页" +#~ msgid "You have been successfully registered with Twitter.com and should be able to access your Twitter feeds." +#~ msgstr "æ‚¨å·²ç»æˆåŠŸåœ¨ Twitter.com ä¸Šæ³¨å†Œå¹¶èŽ·å–æ‚¨çš„ Twitter ä¿¡æ¯æºçš„访问æƒã€‚" -#~ msgid "Previous page" -#~ msgstr "上页" +#~ msgid "Register with Twitter.com" +#~ msgstr "在 Twitter.com 上注册" -#~ msgid "First page" -#~ msgstr "首页" +#~ msgid "Created filter %s" +#~ msgstr "创建过滤器 %s" -#~ msgid "New headlines for last 24 hours, as of " -#~ msgstr "24å°æ—¶æœ€æ–°æè¦,截至" +#~ msgid "Attachment:" +#~ msgstr "附件:" -#~ msgid "" -#~ "You have been sent this email because you have enabled daily digests in " -#~ "Tiny Tiny RSS at " -#~ msgstr "由于您å¯ç”¨äº†Tiny Tiny RSSæ¯æ—¥æ–‡æ‘˜ï¼Œä¼šæ”¶åˆ°æ­¤é‚®ä»¶ã€‚" +#~ msgid "Subscribing to feed..." +#~ msgstr "æ­£åœ¨è®¢é˜…ä¿¡æ¯æºâ€¦â€¦" -#~ msgid "" -#~ "To unsubscribe, visit your configuration options or contact instance " -#~ "owner.\n" -#~ msgstr "è‹¥è¦é€€è®¢,访问你的é…置选项或è”络管ç†å‘˜ã€‚\n" +#~ msgid "Filter Test Results" +#~ msgstr "过滤器测试结果" -#~ msgid "  Update" -#~ msgstr "  æ›´æ–°" +#~ msgid "When \"Mark as read\" button is clicked in toolbar, automatically open next feed with unread articles." +#~ msgstr "当工具æ ä¸Š \"标记为已读 \" æŒ‰é’®è¢«ç‚¹å‡»æ—¶ï¼Œè‡ªåŠ¨æ‰“å¼€ä¸‹ä¸€ä¸ªä¿¡æ¯æºä¸­çš„æœªè¯»æ–‡ç« ã€‚" diff --git a/locale/zh_TW/LC_MESSAGES/messages.mo b/locale/zh_TW/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000..88a15308af Binary files /dev/null and b/locale/zh_TW/LC_MESSAGES/messages.mo differ diff --git a/locale/zh_TW/LC_MESSAGES/messages.po b/locale/zh_TW/LC_MESSAGES/messages.po new file mode 100644 index 0000000000..ddca85e2dc --- /dev/null +++ b/locale/zh_TW/LC_MESSAGES/messages.po @@ -0,0 +1,4223 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# gothfox , 2011. +msgid "" +msgstr "" +"Project-Id-Version: Tiny Tiny RSS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: 2014-02-17 23:12+0800\n" +"Last-Translator: Yuan Chiu \n" +"Language-Team: Yuan Chiu \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 1.6.4\n" + +#: backend.php:73 +msgid "Use default" +msgstr "使用é è¨­" + +#: backend.php:74 +msgid "Never purge" +msgstr "å¾žä¸æ¸…ç†" + +#: backend.php:75 +msgid "1 week old" +msgstr "1周å‰" + +#: backend.php:76 +msgid "2 weeks old" +msgstr "2周å‰" + +#: backend.php:77 +msgid "1 month old" +msgstr "1個月å‰" + +#: backend.php:78 +msgid "2 months old" +msgstr "2個月å‰" + +#: backend.php:79 +msgid "3 months old" +msgstr "3個月å‰" + +#: backend.php:82 +msgid "Default interval" +msgstr "é è¨­é–“éš”" + +#: backend.php:83 +#: backend.php:93 +msgid "Disable updates" +msgstr "ç¦ç”¨æ›´æ–°" + +#: backend.php:84 +#: backend.php:94 +#, fuzzy +msgid "15 minutes" +msgstr "æ¯15分é˜" + +#: backend.php:85 +#: backend.php:95 +#, fuzzy +msgid "30 minutes" +msgstr "æ¯30分é˜" + +#: backend.php:86 +#: backend.php:96 +msgid "Hourly" +msgstr "æ¯å°æ™‚" + +#: backend.php:87 +#: backend.php:97 +#, fuzzy +msgid "4 hours" +msgstr "æ¯4å°æ™‚" + +#: backend.php:88 +#: backend.php:98 +#, fuzzy +msgid "12 hours" +msgstr "æ¯12å°æ™‚" + +#: backend.php:89 +#: backend.php:99 +msgid "Daily" +msgstr "æ¯å¤©" + +#: backend.php:90 +#: backend.php:100 +msgid "Weekly" +msgstr "æ¯å‘¨" + +#: backend.php:103 +#: classes/pref/system.php:51 +#: classes/pref/users.php:119 +msgid "User" +msgstr "使用者" + +#: backend.php:104 +msgid "Power User" +msgstr "Power User" + +#: backend.php:105 +msgid "Administrator" +msgstr "管ç†å“¡" + +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "本程å¼éœ€è¦ XmlHttpRequest 的支æŒã€‚您的ç€è¦½å™¨ä¼¼ä¹Žä¸æ”¯æŒã€‚" + +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "本程å¼éœ€è¦ cookie 支æŒã€‚您的ç€è¦½å™¨ä¼¼ä¹Žä¸æ”¯æŒã€‚" + +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "後端完整性檢查失敗" + +#: errors.php:17 +msgid "Frontend sanity check failed." +msgstr "å‰ç«¯å®Œæ•´æ€§æª¢æŸ¥å¤±æ•—。" + +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "è³‡æ–™åº«è¡¨çµæ†ç‰ˆæœ¬éŒ¯èª¤ã€‚<a href='db-updater.php'>è«‹æ›´æ–°</a>。" + +#: errors.php:21 +msgid "Request not authorized." +msgstr "請求未經授權。" + +#: errors.php:23 +msgid "No operation to perform." +msgstr "沒有需è¦åŸ·è¡Œçš„æ“ä½œã€‚" + +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "無法顯示摘è¦ï¼šæŸ¥è©¢å¤±æ•—ã€‚è«‹æ ¸å°æ¨™ç±¤åŒ¹é…語法或本地é…置。" + +#: errors.php:27 +msgid "Denied. Your access level is insufficient to access this page." +msgstr "錯誤,您的帳號等級ä¸èƒ½é€²å…¥æœ¬é é¢ã€‚" + +#: errors.php:29 +msgid "Configuration check failed" +msgstr "é…置檢查失敗" + +#: errors.php:31 +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "" +"ä½ çš„ MySQL 版本與本系統ä¸ç›¸å®¹ã€‚\n" +"\t\t請去官方網站查閱相關資料。" + +#: errors.php:35 +msgid "SQL escaping test failed, check your database and PHP configuration" +msgstr "SQL 脫出測試失敗,請檢查您的資料庫和 PHP 設定。" + +#: errors.php:37 +#, fuzzy +msgid "Method not found" +msgstr "找ä¸åˆ°æ‘˜è¦ã€‚" + +#: errors.php:39 +#, fuzzy +msgid "Plugin not found" +msgstr "未找到使用者" + +#: index.php:133 +#: index.php:149 +#: index.php:267 +#: prefs.php:102 +#: classes/backend.php:5 +#: classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 +#: classes/pref/labels.php:296 +#: js/feedlist.js:136 +#: js/functions.js:1221 +#: js/functions.js:1355 +#: js/functions.js:1667 +#: js/prefs.js:653 +#: js/prefs.js:854 +#: js/prefs.js:1760 +#: js/prefs.js:1776 +#: js/prefs.js:1794 +#: js/tt-rss.js:55 +#: js/tt-rss.js:525 +#: js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 +#: plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 +#: js/functions.js:449 +#: js/functions.js:787 +#: js/prefs.js:1441 +#: js/prefs.js:1494 +#: js/prefs.js:1534 +#: js/prefs.js:1551 +#: js/prefs.js:1567 +#: js/prefs.js:1587 +#: js/tt-rss.js:542 +#: js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "載入中,請ç¨å€™â€¦â€¦" + +#: index.php:167 +msgid "Collapse feedlist" +msgstr "收縮å´é‚Šæ¬„" + +#: index.php:170 +msgid "Show articles" +msgstr "顯示文章" + +#: index.php:173 +msgid "Adaptive" +msgstr "自動調整" + +#: index.php:174 +msgid "All Articles" +msgstr "全部文章" + +#: index.php:175 +#: include/functions2.php:102 +#: classes/feeds.php:104 +msgid "Starred" +msgstr "星標" + +#: index.php:176 +#: include/functions2.php:103 +#: classes/feeds.php:105 +msgid "Published" +msgstr "已發布" + +#: index.php:177 +#: classes/feeds.php:91 +#: classes/feeds.php:103 +msgid "Unread" +msgstr "未讀" + +#: index.php:178 +msgid "With Note" +msgstr "" + +#: index.php:179 +msgid "Ignore Scoring" +msgstr "忽略評分" + +#: index.php:182 +msgid "Sort articles" +msgstr "æŽ’åºæ–‡ç« " + +#: index.php:185 +msgid "Default" +msgstr "é è¨­" + +#: index.php:186 +msgid "Newest first" +msgstr "最新的優先" + +#: index.php:187 +msgid "Oldest first" +msgstr "最舊的優先" + +#: index.php:188 +msgid "Title" +msgstr "標題" + +#: index.php:192 +#: index.php:233 +#: include/functions2.php:92 +#: classes/feeds.php:109 +#: js/FeedTree.js:132 +#: js/FeedTree.js:160 +msgid "Mark as read" +msgstr "標記為已讀" + +#: index.php:195 +msgid "Older than one day" +msgstr "一天以å‰" + +#: index.php:198 +msgid "Older than one week" +msgstr "一個禮拜以å‰" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "兩個禮拜以å‰" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "無法連接到伺æœå™¨" + +#: index.php:223 +msgid "Actions..." +msgstr "動作" + +#: index.php:225 +msgid "Preferences..." +msgstr "å好設定" + +#: index.php:226 +msgid "Search..." +msgstr "æœå°‹" + +#: index.php:227 +msgid "Feed actions:" +msgstr "æ‘˜è¦æ“作:" + +#: index.php:228 +#: classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "訂閱摘è¦" + +#: index.php:229 +msgid "Edit this feed..." +msgstr "編輯摘è¦" + +#: index.php:230 +msgid "Rescore feed" +msgstr "為摘è¦é‡æ–°è©•分" + +#: index.php:231 +#: classes/pref/feeds.php:757 +#: classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "å–æ¶ˆè¨‚é–±" + +#: index.php:232 +msgid "All feeds:" +msgstr "全部摘è¦ï¼š" + +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "éš±è—(顯示)已讀信æ¯" + +#: index.php:235 +msgid "Other actions:" +msgstr "å…¶ä»–æ“作:" + +#: index.php:236 +#: include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "切æ›ç‰ˆé¢é¡¯ç¤º" + +#: index.php:237 +msgid "Create label..." +msgstr "建立標籤" + +#: index.php:238 +msgid "Create filter..." +msgstr "å»ºç«‹éŽæ¿¾å™¨" + +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "å¿«æ·éµèªªæ˜Ž" + +#: index.php:248 +msgid "Logout" +msgstr "登出" + +#: index.php:254 +msgid "Updates are available from Git." +msgstr "" + +#: prefs.php:33 +#: prefs.php:120 +#: include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "å好設定" + +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "å¿«æ·éµ" + +#: prefs.php:112 +msgid "Exit preferences" +msgstr "退出å好設定" + +#: prefs.php:123 +#: classes/pref/feeds.php:110 +#: classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "摘è¦" + +#: prefs.php:126 +#: classes/pref/filters.php:235 +msgid "Filters" +msgstr "éŽæ¿¾å™¨" + +#: prefs.php:129 +#: include/functions.php:1262 +#: include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "é å®šç¾©æ¨™ç±¤" + +#: prefs.php:133 +msgid "Users" +msgstr "使用者" + +#: prefs.php:136 +msgid "System" +msgstr "系統" + +#: register.php:187 +#: include/login_form.php:245 +msgid "Create new account" +msgstr "建立新的帳號" + +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "新使用者註冊功能被管ç†å“¡ç¦ç”¨ã€‚" + +#: register.php:197 +#: register.php:242 +#: register.php:255 +#: register.php:270 +#: register.php:289 +#: register.php:337 +#: register.php:347 +#: register.php:359 +#: classes/handler/public.php:730 +#: classes/handler/public.php:801 +#: classes/handler/public.php:899 +#: classes/handler/public.php:978 +#: classes/handler/public.php:992 +#: classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "返回 Tiny Tiny RSS" + +#: register.php:218 +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 "您的臨時密碼將被發é€è‡³æ‚¨çš„郵箱。24å°æ™‚之內沒有登錄的帳號會被自動清ç†ã€‚" + +#: register.php:224 +msgid "Desired login:" +msgstr "希望使用的使用者å:" + +#: register.php:227 +msgid "Check availability" +msgstr "檢查å¯ç”¨æ€§" + +#: register.php:229 +#: classes/handler/public.php:817 +msgid "Email:" +msgstr "é›»å­éƒµç®±ï¼š" + +#: register.php:232 +#: classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "二加二等於几:" + +#: register.php:235 +msgid "Submit registration" +msgstr "æäº¤è¨»å†Šä¿¡æ¯" + +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "您的註冊信æ¯ä¸å®Œæ•´ã€‚" + +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "抱歉,該使用者å已被å ç”¨ã€‚" + +#: register.php:287 +msgid "Registration failed." +msgstr "註冊失敗。" + +#: register.php:334 +msgid "Account created successfully." +msgstr "帳號建立æˆåŠŸã€‚" + +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "ä½¿ç”¨è€…è¨»å†ŠåŠŸèƒ½ç›®å‰æ²’有啟用。" + +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "Tiny Tiny RSS 資料庫是最新版。" + +#: include/digest.php:109 +#: include/functions.php:1271 +#: include/functions.php:1815 +#: include/functions.php:1900 +#: include/functions.php:1922 +#: classes/opml.php:421 +#: classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "未分類" + +#: include/feedbrowser.php:84 +#, fuzzy, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d 個存檔的文章" + +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "未找到摘è¦ã€‚" + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "導航" + +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "顯示下一個摘è¦" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "" + +#: include/functions2.php:55 +msgid "Open next article" +msgstr "開啟下一個文章" + +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "開啟上一個文章" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "顯示æœå°‹å°è©±æ¡†" + +#: include/functions2.php:62 +msgid "Article" +msgstr "文章" + +#: include/functions2.php:63 +#: js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "鎖定加星標的項" + +#: include/functions2.php:64 +#: js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "鎖定發布的項" + +#: include/functions2.php:65 +#: js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "鎖定未讀項" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "編輯自訂標籤" + +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "ä¸å†é¡¯ç¤ºæ‰€é¸çš„æ–‡ç« " + +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "ä¸å†é¡¯ç¤ºå·²è®€æ–‡ç« " + +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "在新視窗打開文章" + +#: include/functions2.php:70 +#: js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "以下標記為已讀" + +#: include/functions2.php:71 +#: js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "以上標記為已讀" + +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "å‘下æ²å‹•" + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "å‘上æ²å‹•" + +#: include/functions2.php:74 +#, fuzzy +msgid "Select article under cursor" +msgstr "鏿“‡é¼ æ¨™æŒ‡å‘的文章" + +#: include/functions2.php:75 +#, fuzzy +msgid "Email article" +msgstr "é€éŽéƒµä»¶ç™¼é€æ–‡ç« " + +#: include/functions2.php:76 +#, fuzzy +msgid "Close/collapse article" +msgstr "鏿“‡æ‰€æœ‰æ–‡ç« " + +#: include/functions2.php:77 +#, fuzzy +msgid "Toggle article expansion (combined mode)" +msgstr "鎖定發布的項" + +#: include/functions2.php:79 +#: plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "切æ›ç‚ºåŽŸç¶²é é¡¯ç¤º" + +#: include/functions2.php:80 +msgid "Article selection" +msgstr "鏿“‡æ–‡ç« " + +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "鏿“‡æ‰€æœ‰æ–‡ç« " + +#: include/functions2.php:82 +msgid "Select unread" +msgstr "鏿“‡æœªè®€æ–‡ç« " + +#: include/functions2.php:83 +msgid "Select starred" +msgstr "鏿“‡æ˜Ÿæ¨™çš„" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "鏿“‡å·²ç™¼ä½ˆæ–‡ç« " + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "åå‘é¸å–" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "å–æ¶ˆé¸æ“‡æ‰€æœ‰æ–‡ç« " + +#: include/functions2.php:87 +#: classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "摘è¦" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "釿–°æ•´ç†ç›®å‰æ‘˜è¦" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "éš±è—(顯示)已讀信æ¯" + +#: include/functions2.php:90 +#: classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "訂閱摘è¦" + +#: include/functions2.php:91 +#: js/FeedTree.js:139 +#: js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "編輯摘è¦" + +#: include/functions2.php:93 +#, fuzzy +msgid "Reverse headlines" +msgstr "å呿ޒåº" + +#: include/functions2.php:94 +#, fuzzy +msgid "Debug feed update" +msgstr "ç¦ç”¨æ›´æ–°" + +#: include/functions2.php:95 +#: js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "標記所有摘è¦ç‚ºå·²è®€" + +#: include/functions2.php:96 +#, fuzzy +msgid "Un/collapse current category" +msgstr "加入到類別:" + +#: include/functions2.php:97 +#, fuzzy +msgid "Toggle combined mode" +msgstr "鎖定發布的項" + +#: include/functions2.php:98 +#, fuzzy +msgid "Toggle auto expand in combined mode" +msgstr "鎖定發布的項" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "跳到……" + +#: include/functions2.php:100 +#: include/functions.php:1973 +msgid "All articles" +msgstr "全部文章" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "" + +#: include/functions2.php:104 +#: js/tt-rss.js:469 +#: js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "標籤雲" + +#: include/functions2.php:106 +msgid "Other" +msgstr "å…¶ä»–" + +#: include/functions2.php:107 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "建立é å®šç¾©æ¨™ç±¤" + +#: include/functions2.php:108 +#: classes/pref/filters.php:725 +msgid "Create filter" +msgstr "å»ºç«‹éŽæ¿¾å™¨" + +#: include/functions2.php:109 +#, fuzzy +msgid "Un/collapse sidebar" +msgstr "折疊å´é‚Šæ¬„" + +#: include/functions2.php:110 +#, fuzzy +msgid "Show help dialog" +msgstr "顯示æœå°‹å°è©±æ¡†" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "æœå°‹çµæžœï¼š %s" + +#: include/functions2.php:1258 +#: classes/feeds.php:730 +msgid "comment" +msgid_plural "comments" +msgstr[0] "回應" + +#: include/functions2.php:1262 +#: classes/feeds.php:734 +msgid "comments" +msgstr "回應" + +#: include/functions2.php:1303 +msgid " - " +msgstr " - " + +#: include/functions2.php:1336 +#: include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "無標籤" + +#: include/functions2.php:1346 +#: classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "為本文編輯自訂標籤" + +#: include/functions2.php:1378 +#: classes/feeds.php:668 +msgid "Originally from:" +msgstr "來æºï¼š" + +#: include/functions2.php:1391 +#: classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "æ‘˜è¦ URL" + +#: include/functions2.php:1425 +#: classes/backend.php:105 +#: classes/pref/users.php:95 +#: classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 +#: classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 +#: plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 +#: plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 +#: plugins/share/init.php:123 +msgid "Close this window" +msgstr "關閉本視窗" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "(編輯註記)" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "未知類型" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "附件:" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 +#: include/functions.php:1912 +msgid "Special" +msgstr "特殊å€åŸŸ" + +#: include/functions.php:1763 +#: classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "全部摘è¦" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "加星標文章" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "已發布文章" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "最新更新的文章" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "已儲存的文章" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "閱讀紀錄" + +#: include/login_form.php:190 +#: classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "登入:" + +#: include/login_form.php:200 +#: classes/handler/public.php:560 +msgid "Password:" +msgstr "密碼:" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "我忘記密碼了" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "å好:" + +#: include/login_form.php:216 +#: classes/handler/public.php:299 +#: classes/rpc.php:63 +#: classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "é è¨­å好設定" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "使用較少æµé‡" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "ä¸åœ¨æ–‡ç« ä¸­é¡¯ç¤ºåœ–片,並減少更新。" + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "è¨˜ä½æˆ‘" + +#: include/login_form.php:242 +#: classes/handler/public.php:565 +msgid "Log in" +msgstr "登入" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "無法驗證會話(IP 錯誤)" + +#: include/sessions.php:67 +#, fuzzy +msgid "Session failed to validate (schema version changed)" +msgstr "無法驗證會話(IP 錯誤)" + +#: include/sessions.php:85 +#, fuzzy +msgid "Session failed to validate (user not found)" +msgstr "無法驗證會話(IP 錯誤)" + +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "無法驗證會話(IP 錯誤)" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "在 Tiny Tiny RSS 的維基上å¯ä»¥æ‰¾åˆ°å…¶ä»–ç•Œé¢æŠ€å·§ã€‚" + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "å¿«æ·éµ" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "未找到幫助主題。" + +#: classes/handler/public.php:498 +#: plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "分享 Tiny Tiny RSS 中訂閱" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "標題: " + +#: classes/handler/public.php:508 +#: classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 +#: plugins/instances/init.php:401 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "內容: " + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "標籤" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "" + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "分享" + +#: classes/handler/public.php:534 +#: classes/handler/public.php:568 +#: classes/feeds.php:1076 +#: classes/feeds.php:1126 +#: classes/feeds.php:1157 +#: classes/article.php:205 +#: classes/pref/users.php:170 +#: classes/pref/feeds.php:774 +#: classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 +#: classes/pref/filters.php:475 +#: classes/pref/filters.php:874 +#: classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 +#: classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 +#: plugins/note/init.php:53 +#: plugins/mail/init.php:172 +#: plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "å–æ¶ˆ" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "沒有登入" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "ä½¿ç”¨è€…åæˆ–密碼錯誤" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "已經訂閱到 %s." + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "訂閱到 %s." + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "無法訂閱 %s。" + +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "在 %s 中沒有找到摘è¦ã€‚" + +#: classes/handler/public.php:678 +#, fuzzy +msgid "Multiple feed URLs found." +msgstr "未找到摘è¦ã€‚" + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "無法訂閱 %s。
    無法下載摘è¦çš„ URL。" + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "訂閱é¸å–的摘è¦" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "編輯訂閱é¸é …" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "密碼救æ´" + +#: classes/handler/public.php:805 +#, fuzzy +msgid "You will need to provide valid account name and email. A password reset link will be sent to your email address." +msgstr "ä½ éœ€è¦æä¾›æœ‰æ•ˆçš„é›»å­éƒµä»¶ä»¥åŠå¸³è™Ÿå稱,新密碼將以電å­éƒµä»¶å¯„給你。" + +#: classes/handler/public.php:827 +#: classes/pref/users.php:352 +msgid "Reset password" +msgstr "é‡è¨­å¯†ç¢¼" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "" + +#: classes/handler/public.php:841 +#: classes/handler/public.php:907 +msgid "Go back" +msgstr "回去" + +#: classes/handler/public.php:878 +#, fuzzy +msgid "[tt-rss] Password reset request" +msgstr "[tt-rss] å¯†ç¢¼æ›´æ›æé†’" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "å°ä¸èµ·ï¼Œæ²’有找到符åˆçš„帳號密碼。" + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "此帳號等級ä¸è¶³ï¼Œç„¡æ³•é‹è¡Œè…³æœ¬ã€‚" + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "資料庫更新管ç†å™¨" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "執行更新" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "以RSSæ‘˜è¦æ–¹å¼é–±è®€" + +#: classes/feeds.php:54 +#: classes/feeds.php:134 +#: classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "以 RSS å½¢å¼é–±è®€" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "上次更新: %s" + +#: classes/feeds.php:90 +#: classes/pref/users.php:337 +#: classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 +#: classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 +#: classes/pref/filters.php:397 +#: classes/pref/filters.php:719 +#: classes/pref/filters.php:807 +#: classes/pref/filters.php:834 +#: classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 +#: plugins/instances/init.php:287 +msgid "All" +msgstr "全部" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "åå‘é¸å–" + +#: classes/feeds.php:93 +#: classes/pref/users.php:339 +#: classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 +#: classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 +#: classes/pref/filters.php:399 +#: classes/pref/filters.php:721 +#: classes/pref/filters.php:809 +#: classes/pref/filters.php:836 +#: classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 +#: plugins/instances/init.php:289 +msgid "None" +msgstr "ç„¡" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "å…¶ä»–..." + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "標記為:" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "所有é¸å–的:" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "評分" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "存檔" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "移回原ä½" + +#: classes/feeds.php:116 +#: classes/pref/filters.php:358 +#: classes/pref/filters.php:406 +#: classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "刪除" + +#: classes/feeds.php:121 +#: classes/feeds.php:126 +#: plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +#, fuzzy +msgid "Forward by email" +msgstr "é€éŽéƒµä»¶è½‰ç™¼" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "摘è¦ï¼š" + +#: classes/feeds.php:200 +#: classes/feeds.php:869 +msgid "Feed not found." +msgstr "找ä¸åˆ°æ‘˜è¦ã€‚" + +#: classes/feeds.php:268 +msgid "Never" +msgstr "從未" + +#: classes/feeds.php:393 +#, fuzzy, php-format +msgid "Imported at %s" +msgstr "匯入" + +#: classes/feeds.php:452 +#: classes/feeds.php:549 +msgid "mark feed as read" +msgstr "標記摘è¦ç‚ºå·²è®€" + +#: classes/feeds.php:608 +#, fuzzy +msgid "Collapse article" +msgstr "全部文章" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "沒有未讀文章。" + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "沒有最新更新的文章。" + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "沒有加星標的文章。" + +#: classes/feeds.php:778 +#, fuzzy +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 "本標籤下沒有文章。你å¯ä»¥é€éŽæ‰‹å‹•æˆ–éŽæ¿¾å™¨çš„æ–¹å¼ç‚ºæ–‡ç« æ·»åŠ é å®šç¾©æ¨™ç±¤ï¼ˆåƒè€ƒä¸Šæ–¹å‹•作èœå–®ï¼‰ã€‚" + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "暫時沒有文章。" + +#: classes/feeds.php:795 +#: classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "ä¸Šæ¬¡æ‘˜è¦æ›´æ–°æ™‚間:%s" + +#: classes/feeds.php:805 +#: classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "éƒ¨åˆ†æ‘˜è¦æ›´æ–°éŒ¯èª¤ï¼ˆé»žæ“Šäº†è§£è©³æƒ…)" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "沒有é¸å–的摘è¦ã€‚" + +#: classes/feeds.php:1014 +#: classes/feeds.php:1022 +#, fuzzy +msgid "Feed or site URL" +msgstr "æ‘˜è¦ URL" + +#: classes/feeds.php:1028 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 +#: classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "加入到類別:" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "å¯ç”¨çš„æ‘˜è¦" + +#: classes/feeds.php:1048 +#: classes/pref/users.php:133 +#: classes/pref/feeds.php:620 +#: classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "登入驗證" + +#: classes/feeds.php:1052 +#: classes/pref/users.php:397 +#: classes/pref/feeds.php:626 +#: classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "登入" + +#: classes/feeds.php:1055 +#: classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 +#: classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "密碼" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "這個摘è¦éœ€è¦èªè­‰" + +#: classes/feeds.php:1070 +#: classes/feeds.php:1124 +#: classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "訂閱" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "更多摘è¦" + +#: classes/feeds.php:1096 +#: classes/feeds.php:1156 +#: classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 +#: classes/pref/filters.php:712 +#: js/tt-rss.js:174 +msgid "Search" +msgstr "æœå°‹" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "æœ€å—æ­¡è¿Žçš„æ‘˜è¦" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "摘è¦å­˜æª”" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "é™åˆ¶ï¼š" + +#: classes/feeds.php:1125 +#: classes/pref/users.php:350 +#: classes/pref/feeds.php:744 +#: classes/pref/filters.php:465 +#: classes/pref/filters.php:738 +#: classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "移除" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "查找" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +#, fuzzy +msgid "Search syntax" +msgstr "æœå°‹" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "找ä¸åˆ°æ–‡ç« ã€‚" + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "本文的標籤,請用逗號分開:" + +#: classes/article.php:203 +#: classes/pref/users.php:168 +#: classes/pref/feeds.php:773 +#: classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 +#: classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 +#: plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 +#: plugins/nsfw/init.php:85 +#: plugins/mail/init.php:64 +#: plugins/instances/init.php:245 +#: plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "儲存" + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "OPML 工具" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "正在匯入 OPML ……" + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "返回å好設定" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "新增摘è¦: %s" + +#: classes/opml.php:282 +#, fuzzy, php-format +msgid "Duplicate feed: %s" +msgstr "更新摘è¦" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "新增標籤: %s" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "é‡è¤‡çš„æ¨™ç±¤: %s" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "å°‡å好按éµå¾ž %s 設定為 %s" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "å»ºç«‹éŽæ¿¾å™¨" + +#: classes/opml.php:421 +#, fuzzy, php-format +msgid "Processing category: %s" +msgstr "加入到類別:" + +#: classes/opml.php:470 +#: plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "上傳失敗,失敗碼 %d" + +#: classes/opml.php:484 +#: plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +#, fuzzy +msgid "Unable to move uploaded file." +msgstr "錯誤:無法載入文章。" + +#: classes/opml.php:488 +#: plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "錯誤:請上傳 OPML 文件。" + +#: classes/opml.php:499 +#, fuzzy +msgid "Error: unable to find moved OPML file." +msgstr "錯誤:無法載入文章。" + +#: classes/opml.php:506 +#: plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "è§£æžæ–‡æª”時發生錯誤。" + +#: classes/pref/system.php:8 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "您的帳號等級ä¸å¤ ï¼Œç„¡æ³•打開這個é ç±¤ã€‚" + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "錯誤的Log" + +#: classes/pref/system.php:40 +#: plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "釿–°æ•´ç†" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "清空Log" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "錯誤" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "檔案å稱路徑:" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "訊æ¯" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "日期" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "未找到使用者" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:399 +msgid "Registered" +msgstr "註冊時間" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "上次登入" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "è¨‚é–±çš„æ‘˜è¦æ•¸é‡" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "訂閱的摘è¦" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "帳號等級:" + +#: classes/pref/users.php:154 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "é¸é …" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "已添加使用者 %s ,密碼為%s" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "無法建立使用者 %s " + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "使用者 %s 已存在。" + +#: classes/pref/users.php:265 +#, fuzzy, php-format +msgid "Changed password of user %s to %s" +msgstr "已添加使用者 %s ,密碼為%s" + +#: classes/pref/users.php:267 +#, fuzzy, php-format +msgid "Sending new password of user %s to %s" +msgstr "已添加使用者 %s ,密碼為%s" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] å¯†ç¢¼æ›´æ›æé†’" + +#: classes/pref/users.php:334 +#: classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 +#: classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 +#: classes/pref/filters.php:394 +#: classes/pref/filters.php:716 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:831 +#: classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 +#: plugins/instances/init.php:284 +msgid "Select" +msgstr "鏿“‡" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "建立使用者" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "詳細" + +#: classes/pref/users.php:348 +#: classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "編輯" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "帳號等級" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "最後登入" + +#: classes/pref/users.php:419 +#: plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "點擊進行編輯" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "沒有定義使用者。" + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "沒有匹é…的使用者。" + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "勾é¸ä»¥å•Ÿç”¨" + +#: classes/pref/feeds.php:63 +#: classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 +#: classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "(%d 個摘è¦)" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "æ‘˜è¦æ¨™é¡Œ" + +#: classes/pref/feeds.php:598 +#: classes/pref/feeds.php:812 +msgid "Update" +msgstr "更新列表" + +#: classes/pref/feeds.php:613 +#: classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "文章清ç†ï¼š" + +#: classes/pref/feeds.php:643 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "æç¤ºï¼šå¦‚果您的摘è¦éœ€è¦é©—證,那麼您需è¦å¡«å¯«ç™»å…¥è³‡æ–™ã€‚Twitter 摘è¦é™¤å¤–。" + +#: classes/pref/feeds.php:659 +#: classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "å¾žæœ€å—æ­¡è¿Žçš„æ‘˜è¦ä¸­éš±è—" + +#: classes/pref/feeds.php:671 +#: classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "包å«é›»å­éƒµä»¶æ‘˜è¦" + +#: classes/pref/feeds.php:684 +#: classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "始終顯示圖片附件" + +#: classes/pref/feeds.php:697 +#: classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "ä¸è¦åŒ…å«åœ–片" + +#: classes/pref/feeds.php:710 +#: classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "本地快å–圖片" + +#: classes/pref/feeds.php:722 +#: classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "將已更新的文章標記為未讀" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "圖示" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "替æ›" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "釿–°è¨‚é–±ä»¥æŽ¨é€æ›´æ–°" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "為啟用推é€çš„æ‘˜è¦é‡ç½® PubSubHubbub 訂閱。" + +#: classes/pref/feeds.php:1146 +#: classes/pref/feeds.php:1199 +msgid "All done." +msgstr "全部完æˆã€‚" + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "有錯誤的摘è¦" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "䏿´»èºçš„æ‘˜è¦" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "編輯é¸å®šçš„æ‘˜è¦" + +#: classes/pref/feeds.php:1318 +#: classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "釿–°æŽ’åº" + +#: classes/pref/feeds.php:1320 +#: js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "類別" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "新增類別" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "ç§»é™¤æ‰€é¸æ“‡çš„" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "更多動作" + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "手動清除" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "æ¸…ç©ºæ‘˜è¦æ•¸æ“š" + +#: classes/pref/feeds.php:1354 +#: classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "ç‚ºæ–‡ç« é‡æ–°è©•分" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1406 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "" + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "" + +#: classes/pref/feeds.php:1419 +#, fuzzy +msgid "Import my OPML" +msgstr "正在匯入 OPML ……" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "文件å:" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "包å«è¨­å®š" + +#: classes/pref/feeds.php:1429 +#, fuzzy +msgid "Export OPML" +msgstr "正在匯入 OPML ……" + +#: classes/pref/feeds.php:1433 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "您å¯ä»¥å…¬é–‹ç™¼å¸ƒæ‚¨çš„ OPML 。網上的任何人都å¯ä»¥é€éŽå¦‚下 URL 訂閱該文件。" + +#: classes/pref/feeds.php:1435 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "" + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "公開的 OPML URL" + +#: classes/pref/feeds.php:1438 +#, fuzzy +msgid "Display published OPML URL" +msgstr "公開的 OPML URL" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "Firefox æ•´åˆ" + +#: classes/pref/feeds.php:1449 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "按下以下連çµï¼Œå¯ä»¥å°‡æœ¬ Tiny Tiny RSS 站作為一個 Firefox 閱讀器使用。" + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "點擊此處將本站註冊為摘è¦é–±è®€å™¨ã€‚" + +#: classes/pref/feeds.php:1464 +#, fuzzy +msgid "Published & shared articles / Generated feeds" +msgstr "已發布的文章和產生的摘è¦" + +#: classes/pref/feeds.php:1466 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "已發布的文章將會輸出為公開的 RSS 摘è¦ï¼Œç¶²ä¸Šçš„任何人å¯ä»¥é€éŽå¦‚下 URL 進行訂閱。" + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "顯示 URL" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "清空所有產生的 URL" + +#: classes/pref/feeds.php:1555 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "以下摘è¦å·²ç¶“有三個月沒有內容更新了(最舊的在最上):" + +#: classes/pref/feeds.php:1589 +#: classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "點擊以編輯摘è¦" + +#: classes/pref/feeds.php:1607 +#: classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "å–æ¶ˆè¨‚é–±é¸å–的摘è¦" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "" + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "ç¬¦åˆæœ¬éŽæ¿¾å™¨æ¢ä»¶çš„æ–‡ç« ï¼š" + +#: classes/pref/filters.php:185 +#, fuzzy +msgid "No recent articles matching this filter have been found." +msgstr "æœ¬éŽæ¿¾å™¨ä¸‹æ²’有匹é…到文章。" + +#: classes/pref/filters.php:226 +#: classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "åå‘é¸å–" + +#: classes/pref/filters.php:222 +#: classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "" + +#: classes/pref/filters.php:335 +#: classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "標題" + +#: classes/pref/filters.php:341 +#: classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "匹é…" + +#: classes/pref/filters.php:355 +#: classes/pref/filters.php:403 +#: classes/pref/filters.php:813 +#: classes/pref/filters.php:840 +msgid "Add" +msgstr "新增" + +#: classes/pref/filters.php:389 +#: classes/pref/filters.php:826 +#, fuzzy +msgid "Apply actions" +msgstr "摘è¦å‹•作" + +#: classes/pref/filters.php:439 +#: classes/pref/filters.php:855 +msgid "Enabled" +msgstr "已啟用" + +#: classes/pref/filters.php:448 +#: classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "" + +#: classes/pref/filters.php:457 +#: classes/pref/filters.php:861 +#, fuzzy +msgid "Inverse matching" +msgstr "åå‘匹é…" + +#: classes/pref/filters.php:469 +#: classes/pref/filters.php:868 +msgid "Test" +msgstr "測試" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "建立" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "on field" + +#: classes/pref/filters.php:934 +#: js/PrefFilterTree.js:61 +msgid "in" +msgstr "在" + +#: classes/pref/filters.php:947 +#, fuzzy +msgid "Wiki: Filters" +msgstr "éŽæ¿¾å™¨" + +#: classes/pref/filters.php:952 +#, fuzzy +msgid "Save rule" +msgstr "ä¿å­˜" + +#: classes/pref/filters.php:952 +#: js/functions.js:1025 +msgid "Add rule" +msgstr "新增è¦å‰‡" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "執行動作" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "æŒ‡å®šåƒæ•¸ï¼š" + +#: classes/pref/filters.php:1019 +#, fuzzy +msgid "Save action" +msgstr "版é¢å‹•作" + +#: classes/pref/filters.php:1019 +#: js/functions.js:1051 +#, fuzzy +msgid "Add action" +msgstr "摘è¦å‹•作" + +#: classes/pref/filters.php:1042 +#, fuzzy +msgid "[No caption]" +msgstr "標題" + +#: classes/pref/filters.php:1044 +#, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "" + +#: classes/pref/filters.php:1059 +#, fuzzy, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "摘è¦å‹•作" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "é¡è‰²" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "å‰ç«¯ï¼š" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "背景:" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "建立é å®šç¾©æ¨™ç±¤ %s" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "清空é¡è‰²" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "通用" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "界é¢" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "進階" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "文摘" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "å…許é‡å¾©çš„æ–‡ç« " + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "被列入黑å單的標籤" + +#: classes/pref/prefs.php:26 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "自動檢測文章標籤時,這些標籤將被忽略(åŠè§’逗號隔開的列表)。" + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "自動標記文章為已讀" + +#: classes/pref/prefs.php:27 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "當勾起此é¸å‘後,在æ²å‹•é é¢çš„åŒæ™‚自動將文章標記為已讀。" + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "åœ¨çµ„åˆæ¨¡å¼ä¸‹è‡ªå‹•展開文章" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "åˆä½µé¡¯ç¤ºæ¨¡å¼" + +#: classes/pref/prefs.php:29 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "å°‡æ–‡ç« åˆ—è¡¨å±•é–‹é¡¯ç¤ºï¼Œè€Œä¸æ˜¯å°‡æ¨™é¡Œå’Œå…§å®¹åˆ†åˆ¥é¡¯ç¤º" + +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "標記摘è¦ç‚ºå·²è®€ä¹‹å‰å½ˆå‡ºç¢ºèª" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "åŒæ™‚顯示的文章數é‡" + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "é è¨­æ‘˜è¦æ›´æ–°é–“éš”" + +#: classes/pref/prefs.php:32 +msgid "Shortest interval at which a feed will be checked for updates regardless of update method" +msgstr "" + +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "將郵件摘è¦ä¸­çš„æ–‡ç« æ¨™è¨˜ç‚ºå·²è®€" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "啟用電å­éƒµä»¶æ‘˜è¦" + +#: classes/pref/prefs.php:34 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "æ¯å¤©å°‡æ›´æ–°çš„和未讀的文章標題é€éŽéƒµä»¶ç™¼é€æ‘˜è¦åˆ°æ‚¨è¨­å®šçš„郵箱中" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "åœ¨æŒ‡å®šçš„æ™‚é–“ç™¼é€æ‘˜è¦" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "採用UTC時å€" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "啟用é€éŽAPIå­˜å–" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "å…許第三方客戶端程å¼é€éŽAPI來存å–" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "啟用摘è¦åˆ†é¡ž" + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "ä»¥æœªè®€æ–‡ç« æ•¸é‡æŽ’åºæ‘˜è¦" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "最新更新文章的ä¿é®®æœŸï¼ˆä»¥å°æ™‚為單ä½ï¼‰" + +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "éš±è—已全部讀éŽçš„æ‘˜è¦" + +#: classes/pref/prefs.php:41 +#, fuzzy +msgid "Show special feeds when hiding read feeds" +msgstr "éš±è—已讀信æ¯ä¹‹å¾Œé¡¯ç¤ºç‰¹æ®Šå€åŸŸçš„內容" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "較長的日期時間格å¼" + +#: classes/pref/prefs.php:42 +msgid "The syntax used is identical to the PHP date() function." +msgstr "" + +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "自動顯示下一個摘è¦" + +#: classes/pref/prefs.php:43 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "" + +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "清除多少天之å‰çš„æ–‡ç« ï¼Ÿï¼ˆ0為ä¸å•Ÿç”¨ï¼‰" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "清除未讀文章" + +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "å轉標題列表順åºï¼ˆæœ€èˆŠçš„在上é¢ï¼‰" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "較短的日期時間格å¼" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "在標題列表中顯示內容é è¦½" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "以摘è¦çš„æ—¥æœŸæŽ’åº" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "使用摘è¦ä¸­å®šç¾©çš„æ™‚é–“ï¼Œè€Œéžæœ¬åœ°åŒ¯å…¥çš„æ™‚間來排åºã€‚" + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "使用 SSL 證書登錄" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "在 tt-rss 處註冊您的 SSL 證書" + +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "ä¸è¦é¡¯ç¤ºæ–‡ç« ä¸­çš„圖片" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "從文章中剔除ä¸å®‰å…¨çš„æ¨™ç±¤" + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "僅載入几個最常用的 HTML 標籤" + +#: classes/pref/prefs.php:53 +#: js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "自訂樣å¼" + +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "自訂 CSS 樣å¼" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "所在時å€" + +#: classes/pref/prefs.php:55 +#, fuzzy +msgid "Group headlines in virtual feeds" +msgstr "å°è™›æ“¬æºä¸­çš„æ–‡ç« æŒ‰æºåˆ†çµ„" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" + +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "語言:" + +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "佈景主題" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "鏿“‡ä¸€å€‹å¯ä»¥å¥—用的CSS佈景" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "設定已儲存。" + +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "您的個人數據已儲存。" + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "" + +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "個人資料與驗證" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "個人資訊" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "å§“å" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "é›»å­éƒµä»¶" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "帳號等級" + +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "儲存資料" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "您還在使用系統é è¨­çš„密碼,請修改。" + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "" + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "原始密碼" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "新密碼" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "確èªå¯†ç¢¼" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "更改密碼" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "" + +#: classes/pref/prefs.php:322 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "" + +#: classes/pref/prefs.php:347 +#: classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "輸入您的密碼" + +#: classes/pref/prefs.php:358 +#, fuzzy +msgid "Disable OTP" +msgstr "ç¦ç”¨æ›´æ–°" + +#: classes/pref/prefs.php:364 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "" + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "" + +#: classes/pref/prefs.php:403 +#, fuzzy +msgid "Enter the generated one time password" +msgstr "請填寫類別å稱:" + +#: classes/pref/prefs.php:417 +#, fuzzy +msgid "Enable OTP" +msgstr "已啟用" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "" + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "" + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "自訂" + +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "註冊" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "清空" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "ç›®å‰ä¼ºæœå™¨ä¸Šçš„æ™‚é–“: %s (UTC)" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "儲存設定" + +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "儲存並離開å好設定" + +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "管ç†å好文件" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "æ¢å¾©åˆ°é è¨­" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "擴充套件" + +#: classes/pref/prefs.php:706 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "ä½ å¿…é ˆé‡æ–°å•Ÿå‹• Tiny Tiny RSS ä¹‹å¾Œï¼Œæ‰æœƒç”Ÿæ•ˆå–”~" + +#: classes/pref/prefs.php:708 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "從 tt-rss.org下載更多擴充套件,å¯åƒé–± è¨Žè«–å€ æˆ– wiki." + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "系統擴充套件" + +#: classes/pref/prefs.php:738 +#: classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "擴充套件" + +#: classes/pref/prefs.php:739 +#: classes/pref/prefs.php:795 +msgid "Description" +msgstr "æè¿°" + +#: classes/pref/prefs.php:740 +#: classes/pref/prefs.php:796 +msgid "Version" +msgstr "版本" + +#: classes/pref/prefs.php:741 +#: classes/pref/prefs.php:797 +msgid "Author" +msgstr "作者" + +#: classes/pref/prefs.php:772 +#: classes/pref/prefs.php:831 +msgid "more info" +msgstr "更多資訊" + +#: classes/pref/prefs.php:781 +#: classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "清空摘è¦è³‡æ–™" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "使用者擴充套件" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "啟用所é¸å–的擴充套件" + +#: classes/pref/prefs.php:923 +#, fuzzy +msgid "Incorrect one time password" +msgstr "ä½¿ç”¨è€…åæˆ–密碼錯誤" + +#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "密碼錯誤" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "您å¯ä»¥é€éŽè‡ªè¨‚ CSS 來更改é¡è‰²ï¼Œå­—體和版å¼ã€‚å…·é«”å¯åƒè€ƒ 本文件。" + +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "建立å好文件" + +#: classes/pref/prefs.php:1031 +#: classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "(當å‰ä½¿ç”¨çš„)" + +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "移除é¸å–çš„å好文件" + +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "啟用å好文件" + +#: classes/dlg.php:17 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "" + +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "你的公共 OPML URL 是:" + +#: classes/dlg.php:57 +#: classes/dlg.php:183 +#: plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "產生一個新的 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 "更新進程已在é…置中啟用,但守護進程沒有é‹è¡Œï¼Œç„¡æ³•抓å–ä¿¡æ¯ã€‚請啟動守護進程,或è¯ç³»ç®¡ç†å“¡ã€‚" + +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "上次更新:" + +#: 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 "更新進程在抓å–ä¿¡æ¯æ›´æ–°æ™‚花費了太長時間,å¯èƒ½å·²ç¶“崩潰。請檢查守護進程或è¯ç³»ç®¡ç†å“¡ã€‚" + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "您å¯ä»¥é€éŽå¦‚下 URL 以 RSS æ–¹å¼æŸ¥çœ‹æœ¬æ‘˜è¦ï¼š" + +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" + +#: plugins/af_psql_trgm/init.php:112 +#, fuzzy +msgid "Show related articles" +msgstr "已分享的文章" + +#: plugins/af_psql_trgm/init.php:118 +#: plugins/af_psql_trgm/init.php:225 +#, fuzzy +msgid "Mark similar articles as read" +msgstr "將所有文章標記為已讀?" + +#: plugins/af_psql_trgm/init.php:164 +#: plugins/af_redditimgur/init.php:46 +#, fuzzy +msgid "Global settings" +msgstr "包å«è¨­å®š" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:178 +#, fuzzy +msgid "Enable for all feeds:" +msgstr "啟用摘è¦åˆ†é¡ž" + +#: plugins/af_psql_trgm/init.php:197 +#: plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" + +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" + +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "" + +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "" + +#: plugins/note/init.php:26 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "編輯文章註記" + +#: plugins/googlereaderimport/init.php:92 +#: plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "沒有上傳檔案" + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "" + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "" + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "" + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "" + +#: plugins/mailto/init.php:49 +#: plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 +#: plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "[已轉發]" + +#: plugins/mailto/init.php:49 +#: plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "多個文章" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "" + +#: plugins/mailto/init.php:75 +#, fuzzy +msgid "Forward selected article(s) by email." +msgstr "用郵件轉發文章" + +#: plugins/mailto/init.php:78 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "" + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "關閉本å°è©±æ¡†" + +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "匯入和匯出" + +#: plugins/import_export/init.php:60 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version." +msgstr "" + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "匯出我的資料" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "匯入" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "" + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "" + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "完æˆï¼š " + +#: plugins/import_export/init.php:388 +#, fuzzy, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "編輯文章註記" + +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "%d 個已匯入" + +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "%d 個摘è¦å·²å»ºç«‹" + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "" + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "" + +#: plugins/nsfw/init.php:30 +#: plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "設定已儲存。" + +#: plugins/auth_internal/init.php:65 +#, fuzzy +msgid "Please enter your one time password:" +msgstr "請填寫類別å稱:" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "密碼更改æˆåŠŸã€‚" + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "原密碼輸入錯誤。" + +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "關閉文章" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "" + +#: plugins/mail/init.php:34 +#, fuzzy +msgid "Mail plugin" +msgstr "使用者擴充套件" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "" + +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "收信人:" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "主題:" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "發é€éƒµä»¶" + +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "éˆæŽ¥" + +#: plugins/instances/init.php:204 +#: plugins/instances/init.php:395 +msgid "Instance" +msgstr "實例" + +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "實例 URL:" + +#: plugins/instances/init.php:226 +#: plugins/instances/init.php:414 +msgid "Access key:" +msgstr "訪å•金鑰:" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "訪å•金鑰" + +#: plugins/instances/init.php:233 +#: plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "為兩個相è¯çš„實例使用一個訪å•金鑰。" + +#: plugins/instances/init.php:241 +#: plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "產生新的金鑰" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "éˆæŽ¥å¯¦ä¾‹" + +#: 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 "您å¯ä»¥èˆ‡å…¶ä»–çš„ Tiny Tiny RSS 實例相è¯ï¼Œä»¥å…±äº«æœ€å—歡迎的摘è¦åˆ—表。é€éŽé€™å€‹ URL ç‚ºæœ¬å¯¦ä¾‹å»ºç«‹éˆæŽ¥ï¼š" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "上次連接" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "狀態" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "儲存的摘è¦" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "å»ºç«‹éˆæŽ¥" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +#, fuzzy +msgid "Configuration saved" +msgstr "設定已儲存。" + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +#, fuzzy +msgid "Readability" +msgstr "檢查å¯ç”¨æ€§" + +#: plugins/af_readability/init.php:68 +#, fuzzy +msgid "Inline article content" +msgstr "滾動文章內容" + +#: plugins/vf_shared/init.php:16 +#: plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "已分享的文章" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +#, fuzzy +msgid "Statistics" +msgstr "狀態" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +#, fuzzy +msgid "Last matched articles" +msgstr "加星標文章" + +#: plugins/af_sort_bayes/init.php:253 +#, fuzzy +msgid "Clear database" +msgstr "清空摘è¦è³‡æ–™" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, fuzzy, php-format +msgid "Currently stored as: %s" +msgstr "ç›®å‰ä¼ºæœå™¨ä¸Šçš„æ™‚é–“: %s (UTC)" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "書籤" + +#: 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 "å°‡ä»¥ä¸‹é€£çµæŒ‰éˆ•拖曳至您的ç€è¦½å™¨æ›¸ç±¤å·¥å…·åˆ—。之後在ç€è¦½å™¨ä¸­æ‰“開您想看的摘è¦ï¼Œç„¶å¾ŒæŒ‰ä¸‹æ­¤é€£çµæŒ‰éˆ•å³å¯è¨‚閱。" + +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "在 Tiny Tiny RSS 中訂閱 %s ?" + +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "在 Tiny Tiny RSS 中訂閱" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "您å¯ä»¥å–消所有é€éŽ URL 分享的文章。" + +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "å–æ¶ˆæ‰€æœ‰åˆ†äº«" + +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "é€éŽ URL 分享" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "您å¯ä»¥é€éŽæ­¤ URL 分享本文章:" + +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "å–些分享文章" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "" + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "" + +#: js/functions.js:93 +msgid "Close" +msgstr "" + +#: js/functions.js:104 +#, fuzzy +msgid "Are you sure to report this exception to tt-rss.org? The report will include information about your web browser and tt-rss configuration. Your IP will be saved in the database." +msgstr "您確èªå°‡è©²ç•°å¸¸å ±å‘Šè‡³ tt-rss.org ï¼Ÿå ±å‘Šå°‡åŒ…å«æ‚¨çš„ç€è¦½å™¨è³‡è¨Šã€‚您的IP將被存入資料庫。" + +#: js/functions.js:224 +#, fuzzy +msgid "Click to close" +msgstr "點擊暫åœ" + +#: js/functions.js:1051 +#, fuzzy +msgid "Edit action" +msgstr "摘è¦å‹•作" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "å»ºç«‹éŽæ¿¾å™¨" + +#: js/functions.js:1218 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "é‡ç½®è¨‚閱? Tiny Tiny RSS å°‡æœƒåœ¨ä¸‹æ¬¡æ‘˜è¦æ›´æ–°çš„æ™‚å€™å˜—è©¦å†æ¬¡è¨‚é–±ä¿¡æ¯æé†’ä¸­å¿ƒã€‚" + +#: js/functions.js:1229 +#, fuzzy +msgid "Subscription reset." +msgstr "訂閱摘è¦" + +#: js/functions.js:1239 +#: js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "從 %s å–æ¶ˆè¨‚閱?" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "移除摘è¦" + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "請填寫類別å稱:" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "為本摘è¦ç”¢ç”Ÿæ–°çš„群地å€ï¼Ÿ" + +#: js/functions.js:1384 +#: js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "" + +#: js/functions.js:1685 +#: js/functions.js:1795 +#: js/prefs.js:414 +#: js/prefs.js:444 +#: js/prefs.js:476 +#: js/prefs.js:629 +#: js/prefs.js:649 +#: js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "æ²’æœ‰é¸æ“‡ä»»ä½•摘è¦ã€‚" + +#: js/functions.js:1727 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "å°‡é¸å–的摘è¦å¾žå­˜æª”中移除?包å«å·²ä¿å­˜æ–‡ç« çš„æ‘˜è¦ä¸æœƒè¢«ç§»é™¤ã€‚" + +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "更新錯誤的摘è¦" + +#: js/functions.js:1777 +#: js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "移除é¸å–的摘è¦ï¼Ÿ" + +#: js/functions.js:1780 +#: js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "移除é¸å–的摘è¦ï¼Ÿ" + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "編輯類別" + +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "移除類別" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "åå‘é¸å–" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "請輸入帳號å稱:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "無法建立使用者:沒有指定登錄å。" + +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "使用者新增中..." + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "編輯使用者信æ¯" + +#: js/prefs.js:99 +#: js/prefs.js:211 +#: js/prefs.js:736 +#: plugins/instances/instances.js:26 +#: plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr " 儲存資料" + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "ç·¨è¼¯éŽæ¿¾å™¨" + +#: js/prefs.js:181 +#, fuzzy +msgid "Remove filter?" +msgstr "ç§»é™¤é€™å€‹éŽæ¿¾å™¨ï¼š %s ?" + +#: js/prefs.js:186 +#, fuzzy +msgid "Removing filter..." +msgstr "å»ºç«‹éŽæ¿¾å™¨" + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "移除é¸å–çš„é å®šç¾©æ¨™ç±¤ï¼Ÿ" + +#: js/prefs.js:299 +#, fuzzy +msgid "Removing selected labels..." +msgstr "移除é¸å–çš„é å®šç¾©æ¨™ç±¤ï¼Ÿ" + +#: js/prefs.js:312 +#: js/prefs.js:1380 +msgid "No labels are selected." +msgstr "æ²’æœ‰é¸æ“‡ä»»ä½•é å®šç¾©æ¨™ç±¤ã€‚" + +#: js/prefs.js:326 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "移除é¸å–的使用者?é è¨­ç®¡ç†å“¡å’Œæ‚¨çš„å¸³æˆ¶ä¸æœƒè¢«ç§»é™¤ã€‚" + +#: js/prefs.js:329 +#, fuzzy +msgid "Removing selected users..." +msgstr "移除é¸å®šçš„éŽæ¿¾å™¨ï¼Ÿ" + +#: js/prefs.js:343 +#: js/prefs.js:487 +#: js/prefs.js:508 +#: js/prefs.js:547 +msgid "No users are selected." +msgstr "沒有é¸å–任何使用者。" + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "移除é¸å®šçš„éŽæ¿¾å™¨ï¼Ÿ" + +#: js/prefs.js:364 +#, fuzzy +msgid "Removing selected filters..." +msgstr "移除é¸å®šçš„éŽæ¿¾å™¨ï¼Ÿ" + +#: js/prefs.js:376 +#: js/prefs.js:584 +#: js/prefs.js:603 +msgid "No filters are selected." +msgstr "沒有é¸å–çš„éŽæ¿¾å™¨ã€‚" + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "從é¸å–的摘è¦å–消訂閱?" + +#: js/prefs.js:399 +#, fuzzy +msgid "Unsubscribing from selected feeds..." +msgstr "å–æ¶ˆè¨‚é–±é¸å–的摘è¦" + +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "è«‹åƒ…é¸æ“‡ä¸€å€‹æ‘˜è¦ã€‚" + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "清空é¸å–的摘è¦ç•¶ä¸­æ‰€æœ‰æœªåŠ æ˜Ÿæ¨™çš„æ–‡ç« ï¼Ÿ" + +#: js/prefs.js:438 +#, fuzzy +msgid "Clearing selected feed..." +msgstr "編輯é¸å®šçš„æ‘˜è¦" + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "文章ä¿å­˜å¹¾å¤©ï¼Ÿï¼ˆå¡«å¯«0則採用é è¨­è¨­å®šï¼‰" + +#: js/prefs.js:460 +#, fuzzy +msgid "Purging selected feed..." +msgstr "編輯é¸å®šçš„æ‘˜è¦" + +#: js/prefs.js:492 +#: js/prefs.js:513 +#: js/prefs.js:552 +msgid "Please select only one user." +msgstr "è«‹åƒ…é¸æ“‡ä¸€å€‹ä½¿ç”¨è€…。" + +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "é‡ç½®é¸å®šä½¿ç”¨è€…的密碼?" + +#: js/prefs.js:520 +#, fuzzy +msgid "Resetting password for selected user..." +msgstr "é‡ç½®é¸å®šä½¿ç”¨è€…的密碼?" + +#: js/prefs.js:565 +msgid "User details" +msgstr "使用者詳細資料" + +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "è«‹åƒ…é¸æ“‡ä¸€å€‹éŽæ¿¾å™¨ã€‚" + +#: js/prefs.js:607 +#, fuzzy +msgid "Combine selected filters?" +msgstr "移除é¸å®šçš„éŽæ¿¾å™¨ï¼Ÿ" + +#: js/prefs.js:610 +#, fuzzy +msgid "Joining filters..." +msgstr "å»ºç«‹éŽæ¿¾å™¨" + +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "編輯多個摘è¦" + +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "å„²å­˜å°æ‘˜è¦çš„æ›´æ”¹ï¼Ÿ" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "OPML 匯入" + +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "è«‹å…ˆé¸æ“‡ä¸€å€‹ OPML 文件。" + +#: js/prefs.js:802 +#: plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "匯入中,請ç¨å€™â€¦â€¦" + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "é‡ç½®ç‚ºé è¨­ç‹€æ…‹ï¼Ÿ" + +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "" + +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "" + +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "" + +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "將所有文章標記為已讀?" + +#: js/tt-rss.js:133 +#, fuzzy +msgid "Marking all feeds as read..." +msgstr "標記所有摘è¦ç‚ºå·²è®€" + +#: js/tt-rss.js:391 +#, fuzzy +msgid "Please enable mail plugin first." +msgstr "è«‹å…ˆé¸å‡ å€‹æ‘˜è¦å§ã€‚" + +#: js/tt-rss.js:434 +#: js/functions.js:1571 +#: js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "您無法編輯這種類型的摘è¦ã€‚" + +#: js/tt-rss.js:505 +#, fuzzy +msgid "Please enable embed_original plugin first." +msgstr "è«‹å…ˆé¸å‡ å€‹æ‘˜è¦å§ã€‚" + +#: js/tt-rss.js:518 +#: js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "" + +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "無法é‡ç½®æ­¤åˆ†é¡žçš„æ‘˜è¦çš„評分。" + +#: js/tt-rss.js:835 +#: js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "è«‹å…ˆé¸å¹¾å€‹æ‘˜è¦å§ã€‚" + +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "é‡ç½® %s 中文章的評分?" + +#: js/tt-rss.js:843 +#, fuzzy +msgid "Rescoring articles..." +msgstr "ç‚ºæ–‡ç« é‡æ–°è©•分" + +#: js/viewfeed.js:1010 +#: js/viewfeed.js:1053 +#: js/viewfeed.js:1106 +#: js/viewfeed.js:2266 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +#: js/viewfeed.js:734 +#: js/viewfeed.js:762 +#: js/viewfeed.js:789 +#: js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "沒有é¸å–任何文章。" + +#: js/viewfeed.js:1018 +#, fuzzy, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "刪除 %s 䏭鏿“‡çš„ %d 篇文章?" + +#: js/viewfeed.js:1020 +#, fuzzy, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "刪除é¸å–çš„ %d 篇文章?" + +#: js/viewfeed.js:1062 +#, fuzzy, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "å°‡ %s 中的 %d 篇é¸å–的文章存檔?" + +#: js/viewfeed.js:1065 +#, fuzzy, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "將存檔的 %d 篇文章移回原處?" + +#: js/viewfeed.js:1067 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "" + +#: js/viewfeed.js:1112 +#, fuzzy, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "å°‡ %s 中é¸å–çš„ %d 篇文章標記為已讀?" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "編輯文章的自訂標籤" + +#: js/viewfeed.js:1142 +#, fuzzy +msgid "Saving article tags..." +msgstr "編輯文章的自訂標籤" + +#: js/viewfeed.js:1298 +#: js/viewfeed.js:109 +#: js/viewfeed.js:160 +#: js/viewfeed.js:177 +#, fuzzy +msgid "Click to open next unread feed." +msgstr "點擊以編輯摘è¦" + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "打開原始文章" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "添加é å®šç¾©æ¨™ç±¤" + +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "移除é å®šç¾©æ¨™ç±¤" + +#: js/viewfeed.js:2159 +#, fuzzy +msgid "Select articles in group" +msgstr "鏿“‡é¼ æ¨™æŒ‡å‘的文章" + +#: js/viewfeed.js:2168 +#, fuzzy +msgid "Mark group as read" +msgstr "標記為已讀" + +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "標記摘è¦ç‚ºå·²è®€" + +#: js/viewfeed.js:2235 +#, fuzzy +msgid "Please enter new score for selected articles:" +msgstr "刪除é¸å–çš„ %d 篇文章?" + +#: js/viewfeed.js:2305 +#, fuzzy +msgid "Please enter new score for this article:" +msgstr "請填寫類別å稱:" + +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "文章網å€ï¼š " + +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "" + +#: plugins/af_psql_trgm/init.js:11 +#, fuzzy +msgid "Related articles" +msgstr "刪除文章" + +#: plugins/note/note.js:17 +#, fuzzy +msgid "Saving article note..." +msgstr "編輯文章註記" + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "Google Reader 匯入" + +#: plugins/googlereaderimport/init.js:42 +#, fuzzy +msgid "Please choose a file first." +msgstr "è«‹å…ˆé¸æ“‡ä¸€å€‹ OPML 文件。" + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "用郵件轉發文章" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "" + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "資料匯入" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "è«‹é¸æ“‡æª”案。" + +#: plugins/shorten_expanded/init.js:37 +#, fuzzy +msgid "Click to expand article" +msgstr "點擊以展開文章。" + +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" + +#: plugins/mail/mail.js:38 +#, fuzzy +msgid "Your message has been sent." +msgstr "您的個人數據已儲存。" + +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "éˆæŽ¥å¯¦ä¾‹" + +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "編輯實例" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "移除é¸å–的實例?" + +#: plugins/instances/instances.js:125 +#, fuzzy +msgid "Removing selected instances..." +msgstr "移除é¸å–的實例?" + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "未é¸å–任何實例。" + +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "è«‹åƒ…é¸æ“‡ä¸€å€‹å¯¦ä¾‹ã€‚" + +#: plugins/af_sort_bayes/init.js:26 +#, fuzzy +msgid "Clear classifier database?" +msgstr "æ¸…ç©ºæ‘˜è¦æ•¸æ“š" + +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "" + +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "é€éŽ URL 分享文章" + +#: plugins/share/share.js:14 +#, fuzzy +msgid "Generate new share URL for this article?" +msgstr "請填寫類別å稱:" + +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "" + +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "è¦å–消分享此文章嗎?" + +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "æ­£åœ¨å–æ¶ˆåˆ†äº«..." + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "之å‰å…±äº«æ–‡ç« çš„ URL 將會回到未èªè­‰ç‹€æ…‹ã€‚是å¦ç¹¼çºŒï¼Ÿ" + +#: plugins/share/share_prefs.js:6 +#: js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "" + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "" + +#: js/feedlist.js:416 +#: js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "å°‡ %s 中的全部文章標記為已讀?" + +#: js/feedlist.js:435 +#, fuzzy +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "å°‡ %s 中的全部文章標記為已讀?" + +#: js/feedlist.js:438 +#, fuzzy +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "å°‡ %s 中的全部文章標記為已讀?" + +#: js/feedlist.js:441 +#, fuzzy +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "å°‡ %s 中的全部文章標記為已讀?" + +#: js/functions.js:615 +msgid "Error explained" +msgstr "" + +#: js/functions.js:697 +msgid "Upload complete." +msgstr "上傳完æˆï¼" + +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "移除已ä¿å­˜çš„æ‘˜è¦åœ–示?" + +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "移除已ä¿å­˜çš„æ‘˜è¦åœ–示?" + +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "摘è¦åœ–示已移除。" + +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "è«‹é¸æ“‡åœ–片文件上傳。" + +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "為本摘è¦ä¸Šå‚³ä¸€å€‹æ–°çš„圖示?" + +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "上傳中,請ç¨å€™â€¦â€¦" + +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "請填寫é å®šç¾©æ¨™ç±¤çš„說明:" + +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "建立標籤失敗:沒有標題。" + +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "訂閱摘è¦" + +#: js/functions.js:839 +msgid "Failed to parse output. This can indicate server timeout and/or network issues. Backend output was logged to browser console." +msgstr "" + +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "已訂閱至 %s" + +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "指定的 URL 無效。" + +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "指定的 URL 沒有包å«ä»»ä½•摘è¦ã€‚" + +#: js/functions.js:874 +#, fuzzy +msgid "Expand to select feed" +msgstr "編輯é¸å®šçš„æ‘˜è¦" + +#: js/functions.js:886 +#, fuzzy +msgid "Couldn't download the specified URL: %s" +msgstr "無法下載指定的 URL 。" + +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "" + +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "您已經訂閱éŽé€™å€‹æ‘˜è¦å•¦ã€‚" + +#: js/functions.js:1025 +#, fuzzy +msgid "Edit rule" +msgstr "ç·¨è¼¯éŽæ¿¾å™¨" + +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "編輯摘è¦" + +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "更多摘è¦" + +#: js/functions.js:1878 +msgid "Help" +msgstr "說明" + +#: js/prefs.js:1083 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "" + +#: js/prefs.js:1089 +#, fuzzy +msgid "Removing category..." +msgstr "建立類別" + +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "ç§»é™¤æ‰€æœ‰é¸æ“‡çš„類別?" + +#: js/prefs.js:1113 +#, fuzzy +msgid "Removing selected categories..." +msgstr "移除é¸å®šçš„類別" + +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "沒有é¸å–任何類別。" + +#: js/prefs.js:1134 +#, fuzzy +msgid "Category title:" +msgstr "類別" + +#: js/prefs.js:1138 +#, fuzzy +msgid "Creating category..." +msgstr "å»ºç«‹éŽæ¿¾å™¨" + +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "最近沒更新的摘è¦" + +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "將當å‰çš„ OPML ç™¼å¸ƒåœ°å€æ›´æ”¹æ›¿æ›ç‚ºæ–°åœ°å€ï¼Ÿ" + +#: js/prefs.js:1303 +#, fuzzy +msgid "Clearing feed..." +msgstr "æ¸…ç©ºæ‘˜è¦æ•¸æ“š" + +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "為é¸å–摘è¦ä¸­çš„æ–‡ç« é‡ç½®è©•分?" + +#: js/prefs.js:1326 +#, fuzzy +msgid "Rescoring selected feeds..." +msgstr "為é¸å–摘è¦ä¸­çš„æ–‡ç« é‡ç½®è©•分?" + +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "é‡ç½®æ‰€æœ‰æ–‡ç« çš„評分?這å¯èƒ½å°‡èŠ±è²»å¾ˆé•·æ™‚é–“ã€‚" + +#: js/prefs.js:1349 +#, fuzzy +msgid "Rescoring feeds..." +msgstr "為摘è¦é‡æ–°è©•分" + +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "å°‡é¸å–çš„å¯é¸æ¨™ç±¤é‡ç½®ç‚ºé è¨­é¡è‰²ï¼Ÿ" + +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "å好設定的設定" + +#: js/prefs.js:1412 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "移除é¸å–çš„å好設定?當å‰å好與é è¨­å好䏿œƒè¢«ç§»é™¤ã€‚" + +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "移除é¸å–çš„å好設定檔" + +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "æœªé¸æ“‡å好設定。" + +#: js/prefs.js:1438 +#: js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "啟用é¸å–çš„å好設定?" + +#: js/prefs.js:1454 +#: js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "è«‹é¸æ“‡å¸Œæœ›å•Ÿç”¨çš„å好設定。" + +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "建立å好設定檔..." + +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "之å‰ç”¢ç”Ÿçš„æ‘˜è¦ URL 將會回到未èªè­‰ç‹€æ…‹ã€‚是å¦ç¹¼çºŒï¼Ÿ" + +#: js/prefs.js:1525 +#, fuzzy +msgid "Generated URLs cleared." +msgstr "產生一個新的 URL" + +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "編輯é å®šç¾©æ¨™ç±¤" + +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "您ä¸èƒ½å–消訂閱一個類別。" + +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "å–æ¶ˆæœå°‹" + +#: js/viewfeed.js:174 +#, fuzzy +msgid "New articles found, reload feed to continue." +msgstr "暫時沒有文章。" + +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "å–æ¶ˆæ­¤æ–‡ç« æ¨™ç¤ºæ˜Ÿæ˜Ÿ" + +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "為此文章標示星星" + +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "å–æ¶ˆç™¼å¸ƒæ–‡ç« " + +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "發布文章" + +#: js/viewfeed.js:662 +#, fuzzy +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "未é¸å–任何文章。" + +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "未é¸å–任何文章。" + +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "æœªæ‰¾åˆ°éœ€è¦æ¨™è¨˜çš„æ–‡ç« " + +#: js/viewfeed.js:1452 +#, fuzzy +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "å°‡ %d 篇文章標記為已讀?" + +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "顯示文章網å€" + +#~ msgid "Select by tags..." +#~ msgstr "è‡ªè¨‚æ¨™ç±¤é¸æ“‡" + +#~ msgid "Limit search to:" +#~ msgstr "é™åˆ¶æœå°‹æ¢ä»¶ï¼š" + +#~ msgid "This feed" +#~ msgstr "本摘è¦" + +#~ msgid "Old password cannot be blank." +#~ msgstr "請輸入之å‰ä½¿ç”¨çš„密碼。" + +#~ msgid "New password cannot be blank." +#~ msgstr "請輸入一個新密碼。" + +#~ msgid "Entered passwords do not match." +#~ msgstr "兩次輸入的密碼ä¸ä¸€è‡´ã€‚" + +#~ msgid "Match:" +#~ msgstr "匹é…:" + +#~ msgid "Any" +#~ msgstr "任何" + +#~ msgid "All tags." +#~ msgstr "全部標籤" + +#~ msgid "Which Tags?" +#~ msgstr "哪些標籤?" + +#~ msgid "Display entries" +#~ msgstr "顯示æ¢ç›®" + +#~ msgid "Select item(s) by tags" +#~ msgstr "é€éŽè‡ªè¨‚æ¨™ç±¤é¸æ“‡" + +#~ msgid "Unread First" +#~ msgstr "未讀優先" + +#~ msgid "Unknown option: %s" +#~ msgstr "未知é¸é …: %s" + +#~ msgid "New version of Tiny Tiny RSS is available!" +#~ msgstr "Tiny Tiny RSS 有新版本啦ï¼" + +#, fuzzy +#~ msgid "Session failed to validate (user agent changed)" +#~ msgstr "無法驗證會話(IP 錯誤)" + +#~ msgid "Assign articles to labels automatically" +#~ msgstr "自動套用文章標籤" + +#~ msgid "New version of Tiny Tiny RSS is available (%s)." +#~ msgstr "Tiny Tiny RSS 有å¯ç”¨çš„æ–°ç‰ˆæœ¬ (%s)。" + +#~ msgid "See the release notes" +#~ msgstr "看釋出日誌" + +#~ msgid "Download" +#~ msgstr "下載" + +#~ msgid "Update Tiny Tiny RSS" +#~ msgstr "å‡ç´š Tiny Tiny RSS" + +#~ msgid "Your Tiny Tiny RSS installation is up to date." +#~ msgstr "您的 Tiny Tiny RSS 已經是最新版。" + +#~ msgid "Force update" +#~ msgstr "強制執行更新" + +#~ msgid "Ready to update." +#~ msgstr "已經準備好開始更新。" + +#~ msgid "Start update" +#~ msgstr "é–‹å§‹æ›´æ–°" + +#~ msgid "New version available!" +#~ msgstr "有å¯ç”¨çš„æ–°ç‰ˆæœ¬å•¦ï¼" + +#~ msgid "From:" +#~ msgstr "發信人:" + +#~ msgid "Select:" +#~ msgstr "鏿“‡ï¼š" + +#~ msgid "mark as read" +#~ msgstr "標記為已讀" + +#~ msgid "Change password to" +#~ msgstr "更改密碼為:" + +#~ msgid "E-mail: " +#~ msgstr "é›»å­éƒµä»¶ï¼š" + +#~ msgid "Login field cannot be blank." +#~ msgstr "請填寫登錄信æ¯ã€‚" + +#, fuzzy +#~ msgid "Saving user..." +#~ msgstr "å»ºç«‹éŽæ¿¾å™¨" + +#, fuzzy +#~ msgid "Toggle marked" +#~ msgstr "鎖定加星標的項目" + +#, fuzzy +#~ msgid "(Un)hide empty categories" +#~ msgstr "編輯類別" + +#~ msgid "Published articles and generated feeds" +#~ msgstr "已發布的文章和產生的摘è¦" + +#~ msgid "Articles shared by URL" +#~ msgstr "é€éŽ URL 分享的文章" + +#~ msgid "These feeds have not been updated because of errors:" +#~ msgstr "摘è¦å› ç‚ºä»¥ä¸‹éŒ¯èª¤æœªèƒ½æ›´æ–°ï¼š" + +#, fuzzy +#~ msgid "Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings." +#~ msgstr "" +#~ "本é é¢éœ€è¦JavaScript支æŒã€‚\n" +#~ "\t\t\t請檢查您的ç€è¦½å™¨è¨­å®šã€‚" + +#~ msgid "Hello," +#~ msgstr "您好," + +#~ msgid "Home" +#~ msgstr "主é " + +#~ msgid "Nothing found (click to reload feed)." +#~ msgstr "ä»€éº¼éƒ½æ²’æ‰¾åˆ°ï¼ˆé»žæ“Šä»¥é‡æ–°è¼‰å…¥æ‘˜è¦ï¼‰ã€‚" + +#~ msgid "Enable categories" +#~ msgstr "啟用類別" + +#~ msgid "ON" +#~ msgstr "ON" + +#~ msgid "OFF" +#~ msgstr "OFF" + +#~ msgid "Browse categories like folders" +#~ msgstr "以文件夾方å¼ç€è¦½é¡žåˆ¥" + +#~ msgid "Show images in posts" +#~ msgstr "在文章裡顯示圖åƒ" + +#~ msgid "Hide read articles and feeds" +#~ msgstr "éš±è—已讀的文章和摘è¦" + +#~ msgid "Sort feeds by unread count" +#~ msgstr "ä»¥æœªè®€æ–‡ç« æ•¸é‡æŽ’åˆ—æ‘˜è¦" + +#, fuzzy +#~ msgid "Article archive" +#~ msgstr "文章發布時間" + +#, fuzzy +#~ msgid "Set value" +#~ msgstr "加星標" + +#, fuzzy +#~ msgid "Mark %d displayed article as read?" +#~ msgid_plural "Mark %d displayed articles as read?" +#~ msgstr[0] "將顯示的 %d 篇文章標記為已讀?" + +#~ msgid "Error: unable to load article." +#~ msgstr "錯誤:無法載入文章。" + +#, fuzzy +#~ msgid "%d more..." +#~ msgid_plural "%d more..." +#~ msgstr[0] "下é¢çš„ %d 篇……" + +#~ msgid "No unread feeds." +#~ msgstr "沒有未讀的摘è¦ã€‚" + +#~ msgid "Load more..." +#~ msgstr "載入更多……" + +#~ msgid "Switch to digest..." +#~ msgstr "切æ›è‡³æ‘˜è¦æ¨¡å¼" + +#~ msgid "Show tag cloud..." +#~ msgstr "顯示標籤雲" + +#~ msgid "Click to play" +#~ msgstr "點擊播放" + +#~ msgid "Play" +#~ msgstr "播放" + +#~ msgid "Visit the website" +#~ msgstr "訪å•網站" + +#~ msgid "Select theme" +#~ msgstr "鏿“‡ä¸»é¡Œ" + +#~ msgid "Playing..." +#~ msgstr "播放中……" + +#~ msgid "Default interval between feed updates" +#~ msgstr "æ‘˜è¦æ›´æ–°çš„é è¨­æ™‚é–“é–“éš”" + +#~ msgid "Could not update database" +#~ msgstr "無法更新資料庫" + +#~ msgid "Could not find necessary schema file, need version:" +#~ msgstr "無法找到必è¦çš„è¡¨çµæ†æ–‡ä»¶ï¼Œéœ€è¦ç‰ˆæœ¬ï¼š" + +#~ msgid ", found: " +#~ msgstr ",找到:" + +#~ msgid "Tiny Tiny RSS database is up to date." +#~ msgstr "Tiny Tiny RSS 資料庫是最新版。" + +#~ msgid "Please backup your database before proceeding." +#~ msgstr "執行下一步å‰è«‹å…ˆå‚™ä»½è³‡æ–™åº«ã€‚" + +#~ msgid "Your Tiny Tiny RSS database needs update to the latest version (%d to %d)." +#~ msgstr "您的 Tiny Tiny RSS 資料庫需è¦å‡ç´šåˆ°æœ€æ–°ç‰ˆï¼ˆ%d 到 %d)。" + +#~ msgid "Performing updates..." +#~ msgstr "正在更新……" + +#~ msgid "Updating to version %d..." +#~ msgstr "正在更新到 %d 版本……" + +#~ msgid "Checking version... " +#~ msgstr "正在檢查版本……" + +#~ msgid "OK!" +#~ msgstr "OKï¼" + +#~ msgid "ERROR!" +#~ msgstr "錯誤ï¼" + +#, fuzzy +#~ msgid "Finished. Performed %d update up to schema version %d." +#~ msgid_plural "Finished. Performed %d updates up to schema version %d." +#~ msgstr[0] "" +#~ "完æˆã€‚完æˆäº† %d 個更新,\n" +#~ "\t\t\tè¡¨çµæ†ç‰ˆæœ¬å‡ç´šè‡³ %d。" + +#~ msgid "Your database schema is from a newer version of Tiny Tiny RSS." +#~ msgstr "æ‚¨çš„è³‡æ–™åº«è¡¨çµæ†ä¾†è‡ªä¸€å€‹è¼ƒæ–°ç‰ˆæœ¬çš„ Tiny Tiny RSS。" + +#~ msgid "Found schema version: %d, required: %d." +#~ msgstr "ç™¼ç¾æ–°ç‰ˆæœ¬çš„è¡¨çµæ†ï¼š%d,需è¦çš„版本:%d。" + +#~ msgid "Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer version and continue." +#~ msgstr "無法å‡ç´šè¡¨çµæ†ã€‚è«‹å°‡ Tiny Tiny RSS 更新到最新版本之後å†ä¾†å˜—試。" + +#~ msgid "Enable external API" +#~ msgstr "å…許使用外部 API" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "鏿“‡æœ¬é …å¯è®“特殊å€åŸŸå’Œé å®šç¾©æ¨™ç±¤ä¸­çš„æ–‡ç« æ¨™é¡Œä»¥æ‘˜è¦é †åºæŽ’列" + +#~ msgid "Title or Content" +#~ msgstr "標題或內容" + +#~ msgid "Link" +#~ msgstr "éˆæŽ¥" + +#~ msgid "Content" +#~ msgstr "內容" + +#~ msgid "Article Date" +#~ msgstr "文章發布時間" + +#~ msgid "Set starred" +#~ msgstr "加星標" + +#~ msgid "Assign tags" +#~ msgstr "添加自訂標籤" + +#~ 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 "您å¯èƒ½è¨‚閱了一些èšåˆé¡žåž‹çš„æ‘˜è¦ï¼Œé€™ç¨®æƒ…æ³ä¸‹å¯èƒ½é‡åˆ°åŒä¸€ä½¿ç”¨è€…的文章在ä¸åŒæºå¤šæ¬¡å‡ºç¾ã€‚當該é¸é …被ç¦ç”¨æ™‚,來自ä¸åŒ RSS æºçš„åŒä¸€æ–‡ç« å°‡åªæœƒé¡¯ç¤ºä¸€æ¬¡ã€‚" + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "日期的語法正確:" + +#~ msgid "Date syntax is incorrect." +#~ msgstr "日期的語法錯誤。" + +#~ msgid "Notice" +#~ msgstr "æç¤º" + +#~ msgid "Tag Cloud" +#~ msgstr "標籤雲" + +#~ msgid "Mark all visible articles in %s as read?" +#~ msgstr "標記 %s 中所有å¯è¦‹çš„æ–‡ç« ç‚ºå·²è®€ï¼Ÿ" + +#~ msgid "Score" +#~ msgstr "評分" + +#~ msgid "New articles available in this feed (click to show)" +#~ msgstr "本摘è¦ä¸­çš„æœ€æ–°æ–‡ç« ï¼ˆé»žæ“Šé¡¯ç¤ºï¼‰" + +#, fuzzy +#~ msgid "Share on identi.ca" +#~ msgstr "在 Twitter 上分享" + +#, fuzzy +#~ msgid "Flattr this article." +#~ msgstr "加星標" + +#, fuzzy +#~ msgid "Share on Google+" +#~ msgstr "在 Twitter 上分享" + +#, fuzzy +#~ msgid "Share on Twitter" +#~ msgstr "在 Twitter 上分享" + +#, fuzzy +#~ msgid "Show additional preferences" +#~ msgstr "退出å好設定" + +#, fuzzy +#~ msgid "Back to feeds" +#~ msgstr "å¾ˆä¹…ä¸æ´»èºçš„æ‘˜è¦" + +#~ msgid "This will clear your stored authentication information for Twitter. Continue?" +#~ msgstr "這將會清空所有ä¿å­˜éŽçš„ Twitter èªè­‰ä¿¡æ¯ã€‚是å¦ç¹¼çºŒï¼Ÿ" + +#, fuzzy +#~ msgid "Clearing credentials..." +#~ msgstr "清空ä¿å­˜çš„個人信æ¯" + +#~ msgid "Updated" +#~ msgstr "有更新的" + +#~ msgid "Notifying %s." +#~ msgstr "æé†’ %s。" + +#~ msgid "Yes" +#~ msgstr "是" + +#~ msgid "No" +#~ msgstr "å¦" + +#~ msgid "News" +#~ msgstr "æ–°èž" + +#~ msgid "Move between feeds" +#~ msgstr "在摘è¦ä¹‹é–“移動" + +#~ msgid "Move between articles" +#~ msgstr "在文章之間移動" + +#~ msgid "Active article actions" +#~ msgstr "啟用文章動作" + +#~ msgid "Mark articles below/above active one as read" +#~ msgstr "將當å‰é …以下/以上的文章標記為已讀" + +#~ msgid "Other actions" +#~ msgstr "其他動作" + +#~ msgid "Display this help dialog" +#~ msgstr "顯示本幫助å°è©±æ¡†" + +#~ msgid "Multiple articles actions" +#~ msgstr "多文章動作" + +#, fuzzy +#~ msgid "Select starred articles" +#~ msgstr "鏿“‡æœªè®€æ–‡ç« " + +#~ msgid "Feed actions" +#~ msgstr "摘è¦å‹•作" + +#~ msgid "If viewing category, (un)collapse it" +#~ msgstr "查看類別時將其折疊/展開" + +#~ msgid "Press any key to close this window." +#~ msgstr "按任æ„éµé—œé–‰æœ¬è¦–窗。" + +#~ msgid "My Feeds" +#~ msgstr "我的摘è¦" + +#~ msgid "Panel actions" +#~ msgstr "版é¢å‹•作" + +#~ msgid "Top 25 feeds" +#~ msgstr "å‰25ä½çš„æ‘˜è¦" + +#~ msgid "Edit feed categories" +#~ msgstr "編輯摘è¦é¡žåˆ¥" + +#~ msgid "Focus search (if present)" +#~ msgstr "進入æœå°‹æ¡†ï¼ˆé é¢ä¸­å­˜åœ¨çš„æƒ…æ³ï¼‰" + +#~ msgid "Note: not all actions may be available, depending on Tiny Tiny RSS configuration and your access level." +#~ msgstr "æé†’:根據 Tiny Tiny RSS çš„é…置和你的訪å•級別ä¸åŒï¼Œä¸¦éžæ‰€æœ‰çš„動作都å¯ä»¥åŸ·è¡Œã€‚" + +#~ msgid "Open article in new tab" +#~ msgstr "在新標籤é ä¸­æ‰“開文章" + +#~ msgid "Right-to-left content" +#~ msgstr "å³è‡³å·¦çš„內容" + +#, fuzzy +#~ msgid "Cache content locally" +#~ msgstr "本地快å–圖片" + +#~ msgid "Mark posts as updated on content change" +#~ msgstr "將內容更改éŽçš„æ–‡ç« æ¨™è¨˜ç‚ºå·²æ›´æ–°ç‹€æ…‹" + +#~ msgid "Loading..." +#~ msgstr "載入中……" + +#~ msgid "View in a tt-rss tab" +#~ msgstr "在 tt-rss é ç±¤ä¸­æŸ¥çœ‹" + +#~ msgid "Magpie" +#~ msgstr "Magpie" + +#~ msgid "SimplePie" +#~ msgstr "SimplePie" + +#~ msgid "using" +#~ msgstr "使用" + +#~ msgid "match on" +#~ msgstr "匹é…" + +#~ msgid "Title or content" +#~ msgstr "標題或內容" + +#~ msgid "Your request could not be completed." +#~ msgstr "您的請求無法完æˆã€‚" + +#~ msgid "Feed update has been scheduled." +#~ msgstr "æ‘˜è¦æ›´æ–°çš„任務計畫已制定。" + +#~ msgid "Category update has been scheduled." +#~ msgstr "分類更新已列入任務計畫。" + +#~ msgid "Can't update this kind of feed." +#~ msgstr "無法更新這種類型的摘è¦ã€‚" + +#~ msgid "Original article" +#~ msgstr "原文" + +#~ msgid "Update feed" +#~ msgstr "更新摘è¦" + +#, fuzzy +#~ msgid "With subcategories" +#~ msgstr "編輯類別" + +#~ msgid "Twitter OAuth" +#~ msgstr "Twitter OAuth èªè­‰" + +#~ msgid "
  • Adding category %s.
  • " +#~ msgstr "
  • 添加類別:%s。
  • " + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Register with Twitter" +#~ msgstr "é€éŽ Twitter 註冊" + +#~ msgid "Could not connect to Twitter. Refresh the page or try again later." +#~ msgstr "無法連接 Twitter ã€‚è«‹é‡æ–°æ•´ç†é é¢æˆ–éŽæœƒå…’é‡è©¦ã€‚" + +#~ msgid "Congratulations! You have successfully registered with Twitter." +#~ msgstr "æ­å–œï¼æ‚¨å·²ç¶“æˆåŠŸé€éŽ Twitter 註冊。" + +#~ msgid "before" +#~ msgstr "之å‰" + +#~ msgid "after" +#~ msgstr "之後" + +#~ msgid "Check it" +#~ msgstr "檢查一下" + +#~ msgid "Category $%s already exists in the database." +#~ msgstr "資料庫中已經有 $%s 這個類別。" + +#~ msgid "No feed categories defined." +#~ msgstr "沒有定義éŽçš„æ‘˜è¦é¡žåˆ¥ã€‚" + +#~ msgid "Hint: you can drag feeds and categories around." +#~ msgstr "æç¤ºï¼š 您å¯ä»¥æ‹–曳摘è¦å’Œé¡žåˆ¥ã€‚" + +#~ msgid "Subscribing using bookmarklet" +#~ msgstr "é€éŽæ›¸ç±¤è¨‚é–±" + +#~ 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 "æ›´æ–° Twitter 摘è¦ä¹‹å‰ï¼Œæ‚¨å¿…須在 Twitter.com 上註冊這個 Tiny Tiny RSS 的實例。" + +#~ msgid "You have been successfully registered with Twitter.com and should be able to access your Twitter feeds." +#~ msgstr "您已經æˆåŠŸåœ¨ Twitter.com 上註冊並ç²å–您的 Twitter 摘è¦çš„è¨ªå•æ¬Šã€‚" + +#~ msgid "Register with Twitter.com" +#~ msgstr "在 Twitter.com 上註冊" + +#~ msgid "Created filter %s" +#~ msgstr "å»ºç«‹éŽæ¿¾å™¨ %s" + +#~ msgid "Attachment:" +#~ msgstr "附件:" + +#~ msgid "Subscribing to feed..." +#~ msgstr "正在訂閱摘è¦â€¦â€¦" + +#~ msgid "Filter Test Results" +#~ msgstr "éŽæ¿¾å™¨æ¸¬è©¦çµæžœ" + +#~ msgid "When \"Mark as read\" button is clicked in toolbar, automatically open next feed with unread articles." +#~ msgstr "當工具欄上 \"標記為已讀 \" 按鈕被點擊時,自動打開下一個摘è¦ä¸­çš„æœªè®€æ–‡ç« ã€‚" diff --git a/localized_js.php b/localized_js.php deleted file mode 100644 index 0d66da575d..0000000000 --- a/localized_js.php +++ /dev/null @@ -1,45 +0,0 @@ - - -var T_messages = new Object(); - -function __(msg) { - if (T_messages[msg]) { - return T_messages[msg]; - } else { - return msg; - } -} - -total; $i++) { - $orig = $l10n->get_original_string($i); - $translation = __($orig); - - print T_js_decl($orig, $translation); - } - } - -?> diff --git a/localized_schema.php b/localized_schema.php deleted file mode 100644 index 8d827d1dcb..0000000000 --- a/localized_schema.php +++ /dev/null @@ -1,86 +0,0 @@ - diff --git a/lock/.empty b/lock/.empty new file mode 100755 index 0000000000..e69de29bb2 diff --git a/lock/.htaccess b/lock/.htaccess new file mode 100755 index 0000000000..93169e4eb4 --- /dev/null +++ b/lock/.htaccess @@ -0,0 +1,2 @@ +Order deny,allow +Deny from all diff --git a/login_form.php b/login_form.php deleted file mode 100644 index ad3b218544..0000000000 --- a/login_form.php +++ /dev/null @@ -1,186 +0,0 @@ - - - Tiny Tiny RSS : Login - - - - - - - - - - - - - - -
    - - - - - - - - - - - -
    - Logo -
    - -
    - - - - - - - - - - - - - - - - - - - - - - -
    ">
    ">
    - -
    - -
    - - - - - - - - -
    - -
    - -
    - -
    -
    - Tiny Tiny RSS © 2005–2010 Andrew Dolgov -
    - -
    - - diff --git a/logout.php b/logout.php deleted file mode 100644 index 855deec71d..0000000000 --- a/logout.php +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/manifest.json.php b/manifest.json.php deleted file mode 100644 index b322df2626..0000000000 --- a/manifest.json.php +++ /dev/null @@ -1,70 +0,0 @@ - $mtime_max) { - $mtime_max = $tmp; - } - - array_push($manifest_formatted, "{ \"url\": \"$f\" }"); - } -?> - -{ - "betaManifestVersion": 1, - "version": "", - "entries": [ - - ] -} diff --git a/messages.pot b/messages.pot new file mode 100644 index 0000000000..bf4e9835b6 --- /dev/null +++ b/messages.pot @@ -0,0 +1,3405 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-15 16:39+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: backend.php:73 +msgid "Use default" +msgstr "" + +#: backend.php:74 +msgid "Never purge" +msgstr "" + +#: backend.php:75 +msgid "1 week old" +msgstr "" + +#: backend.php:76 +msgid "2 weeks old" +msgstr "" + +#: backend.php:77 +msgid "1 month old" +msgstr "" + +#: backend.php:78 +msgid "2 months old" +msgstr "" + +#: backend.php:79 +msgid "3 months old" +msgstr "" + +#: backend.php:82 +msgid "Default interval" +msgstr "" + +#: backend.php:83 backend.php:93 +msgid "Disable updates" +msgstr "" + +#: backend.php:84 backend.php:94 +msgid "15 minutes" +msgstr "" + +#: backend.php:85 backend.php:95 +msgid "30 minutes" +msgstr "" + +#: backend.php:86 backend.php:96 +msgid "Hourly" +msgstr "" + +#: backend.php:87 backend.php:97 +msgid "4 hours" +msgstr "" + +#: backend.php:88 backend.php:98 +msgid "12 hours" +msgstr "" + +#: backend.php:89 backend.php:99 +msgid "Daily" +msgstr "" + +#: backend.php:90 backend.php:100 +msgid "Weekly" +msgstr "" + +#: backend.php:103 classes/pref/system.php:51 classes/pref/users.php:119 +msgid "User" +msgstr "" + +#: backend.php:104 +msgid "Power User" +msgstr "" + +#: backend.php:105 +msgid "Administrator" +msgstr "" + +#: errors.php:9 +msgid "" +"This program requires XmlHttpRequest to function properly. Your browser " +"doesn't seem to support it." +msgstr "" + +#: errors.php:12 +msgid "" +"This program requires cookies to function properly. Your browser doesn't " +"seem to support them." +msgstr "" + +#: errors.php:15 +msgid "Backend sanity check failed." +msgstr "" + +#: errors.php:17 +msgid "Frontend sanity check failed." +msgstr "" + +#: errors.php:19 +msgid "" +"Incorrect database schema version. <a href='db-updater.php'>Please " +"update</a>." +msgstr "" + +#: errors.php:21 +msgid "Request not authorized." +msgstr "" + +#: errors.php:23 +msgid "No operation to perform." +msgstr "" + +#: errors.php:25 +msgid "" +"Could not display feed: query failed. Please check label match syntax or " +"local configuration." +msgstr "" + +#: errors.php:27 +msgid "Denied. Your access level is insufficient to access this page." +msgstr "" + +#: errors.php:29 +msgid "Configuration check failed" +msgstr "" + +#: errors.php:31 +msgid "" +"Your version of MySQL is not currently supported. Please see official site " +"for more information." +msgstr "" + +#: errors.php:35 +msgid "SQL escaping test failed, check your database and PHP configuration" +msgstr "" + +#: errors.php:37 +msgid "Method not found" +msgstr "" + +#: errors.php:39 +msgid "Plugin not found" +msgstr "" + +#: index.php:133 index.php:149 index.php:267 prefs.php:102 +#: classes/backend.php:5 classes/pref/feeds.php:1367 +#: classes/pref/filters.php:751 classes/pref/labels.php:296 js/feedlist.js:136 +#: js/functions.js:1221 js/functions.js:1355 js/functions.js:1667 +#: js/prefs.js:653 js/prefs.js:854 js/prefs.js:1760 js/prefs.js:1776 +#: js/prefs.js:1794 js/tt-rss.js:55 js/tt-rss.js:525 js/viewfeed.js:1288 +#: plugins/import_export/import_export.js:17 plugins/af_sort_bayes/init.js:9 +#: js/feedlist.js:460 js/functions.js:449 js/functions.js:787 js/prefs.js:1441 +#: js/prefs.js:1494 js/prefs.js:1534 js/prefs.js:1551 js/prefs.js:1567 +#: js/prefs.js:1587 js/tt-rss.js:542 js/viewfeed.js:831 +msgid "Loading, please wait..." +msgstr "" + +#: index.php:167 +msgid "Collapse feedlist" +msgstr "" + +#: index.php:170 +msgid "Show articles" +msgstr "" + +#: index.php:173 +msgid "Adaptive" +msgstr "" + +#: index.php:174 +msgid "All Articles" +msgstr "" + +#: index.php:175 include/functions2.php:102 classes/feeds.php:104 +msgid "Starred" +msgstr "" + +#: index.php:176 include/functions2.php:103 classes/feeds.php:105 +msgid "Published" +msgstr "" + +#: index.php:177 classes/feeds.php:91 classes/feeds.php:103 +msgid "Unread" +msgstr "" + +#: index.php:178 +msgid "With Note" +msgstr "" + +#: index.php:179 +msgid "Ignore Scoring" +msgstr "" + +#: index.php:182 +msgid "Sort articles" +msgstr "" + +#: index.php:185 +msgid "Default" +msgstr "" + +#: index.php:186 +msgid "Newest first" +msgstr "" + +#: index.php:187 +msgid "Oldest first" +msgstr "" + +#: index.php:188 +msgid "Title" +msgstr "" + +#: index.php:192 index.php:233 include/functions2.php:92 classes/feeds.php:109 +#: js/FeedTree.js:132 js/FeedTree.js:160 +msgid "Mark as read" +msgstr "" + +#: index.php:195 +msgid "Older than one day" +msgstr "" + +#: index.php:198 +msgid "Older than one week" +msgstr "" + +#: index.php:201 +msgid "Older than two weeks" +msgstr "" + +#: index.php:217 +msgid "Communication problem with server." +msgstr "" + +#: index.php:223 +msgid "Actions..." +msgstr "" + +#: index.php:225 +msgid "Preferences..." +msgstr "" + +#: index.php:226 +msgid "Search..." +msgstr "" + +#: index.php:227 +msgid "Feed actions:" +msgstr "" + +#: index.php:228 classes/handler/public.php:660 +msgid "Subscribe to feed..." +msgstr "" + +#: index.php:229 +msgid "Edit this feed..." +msgstr "" + +#: index.php:230 +msgid "Rescore feed" +msgstr "" + +#: index.php:231 classes/pref/feeds.php:757 classes/pref/feeds.php:1322 +#: js/PrefFeedTree.js:74 +msgid "Unsubscribe" +msgstr "" + +#: index.php:232 +msgid "All feeds:" +msgstr "" + +#: index.php:234 +msgid "(Un)hide read feeds" +msgstr "" + +#: index.php:235 +msgid "Other actions:" +msgstr "" + +#: index.php:236 include/functions2.php:78 +msgid "Toggle widescreen mode" +msgstr "" + +#: index.php:237 +msgid "Create label..." +msgstr "" + +#: index.php:238 +msgid "Create filter..." +msgstr "" + +#: index.php:239 +msgid "Keyboard shortcuts help" +msgstr "" + +#: index.php:248 +msgid "Logout" +msgstr "" + +#: index.php:254 +msgid "Updates are available from Git." +msgstr "" + +#: prefs.php:33 prefs.php:120 include/functions2.php:105 +#: classes/pref/prefs.php:435 +msgid "Preferences" +msgstr "" + +#: prefs.php:111 +msgid "Keyboard shortcuts" +msgstr "" + +#: prefs.php:112 +msgid "Exit preferences" +msgstr "" + +#: prefs.php:123 classes/pref/feeds.php:110 classes/pref/feeds.php:1243 +#: classes/pref/feeds.php:1311 +msgid "Feeds" +msgstr "" + +#: prefs.php:126 classes/pref/filters.php:235 +msgid "Filters" +msgstr "" + +#: prefs.php:129 include/functions.php:1262 include/functions.php:1914 +#: classes/pref/labels.php:90 +msgid "Labels" +msgstr "" + +#: prefs.php:133 +msgid "Users" +msgstr "" + +#: prefs.php:136 +msgid "System" +msgstr "" + +#: register.php:187 include/login_form.php:245 +msgid "Create new account" +msgstr "" + +#: register.php:193 +msgid "New user registrations are administratively disabled." +msgstr "" + +#: register.php:197 register.php:242 register.php:255 register.php:270 +#: register.php:289 register.php:337 register.php:347 register.php:359 +#: classes/handler/public.php:730 classes/handler/public.php:801 +#: classes/handler/public.php:899 classes/handler/public.php:978 +#: classes/handler/public.php:992 classes/handler/public.php:999 +#: classes/handler/public.php:1024 +msgid "Return to Tiny Tiny RSS" +msgstr "" + +#: register.php:218 +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 "" + +#: register.php:224 +msgid "Desired login:" +msgstr "" + +#: register.php:227 +msgid "Check availability" +msgstr "" + +#: register.php:229 classes/handler/public.php:817 +msgid "Email:" +msgstr "" + +#: register.php:232 classes/handler/public.php:822 +msgid "How much is two plus two:" +msgstr "" + +#: register.php:235 +msgid "Submit registration" +msgstr "" + +#: register.php:253 +msgid "Your registration information is incomplete." +msgstr "" + +#: register.php:268 +msgid "Sorry, this username is already taken." +msgstr "" + +#: register.php:287 +msgid "Registration failed." +msgstr "" + +#: register.php:334 +msgid "Account created successfully." +msgstr "" + +#: register.php:356 +msgid "New user registrations are currently closed." +msgstr "" + +#: update.php:62 +msgid "Tiny Tiny RSS data update script." +msgstr "" + +#: include/digest.php:109 include/functions.php:1271 +#: include/functions.php:1815 include/functions.php:1900 +#: include/functions.php:1922 classes/opml.php:421 classes/pref/feeds.php:226 +msgid "Uncategorized" +msgstr "" + +#: include/feedbrowser.php:84 +#, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "" +msgstr[1] "" + +#: include/feedbrowser.php:108 +msgid "No feeds found." +msgstr "" + +#: include/functions2.php:52 +msgid "Navigation" +msgstr "" + +#: include/functions2.php:53 +msgid "Open next feed" +msgstr "" + +#: include/functions2.php:54 +msgid "Open previous feed" +msgstr "" + +#: include/functions2.php:55 +msgid "Open next article" +msgstr "" + +#: include/functions2.php:56 +msgid "Open previous article" +msgstr "" + +#: include/functions2.php:57 +msgid "Open next article (don't scroll long articles)" +msgstr "" + +#: include/functions2.php:58 +msgid "Open previous article (don't scroll long articles)" +msgstr "" + +#: include/functions2.php:59 +msgid "Move to next article (don't expand or mark read)" +msgstr "" + +#: include/functions2.php:60 +msgid "Move to previous article (don't expand or mark read)" +msgstr "" + +#: include/functions2.php:61 +msgid "Show search dialog" +msgstr "" + +#: include/functions2.php:62 +msgid "Article" +msgstr "" + +#: include/functions2.php:63 js/viewfeed.js:1986 +msgid "Toggle starred" +msgstr "" + +#: include/functions2.php:64 js/viewfeed.js:1997 +msgid "Toggle published" +msgstr "" + +#: include/functions2.php:65 js/viewfeed.js:1975 +msgid "Toggle unread" +msgstr "" + +#: include/functions2.php:66 +msgid "Edit tags" +msgstr "" + +#: include/functions2.php:67 +msgid "Dismiss selected" +msgstr "" + +#: include/functions2.php:68 +msgid "Dismiss read" +msgstr "" + +#: include/functions2.php:69 +msgid "Open in new window" +msgstr "" + +#: include/functions2.php:70 js/viewfeed.js:2016 +msgid "Mark below as read" +msgstr "" + +#: include/functions2.php:71 js/viewfeed.js:2010 +msgid "Mark above as read" +msgstr "" + +#: include/functions2.php:72 +msgid "Scroll down" +msgstr "" + +#: include/functions2.php:73 +msgid "Scroll up" +msgstr "" + +#: include/functions2.php:74 +msgid "Select article under cursor" +msgstr "" + +#: include/functions2.php:75 +msgid "Email article" +msgstr "" + +#: include/functions2.php:76 +msgid "Close/collapse article" +msgstr "" + +#: include/functions2.php:77 +msgid "Toggle article expansion (combined mode)" +msgstr "" + +#: include/functions2.php:79 plugins/embed_original/init.php:31 +msgid "Toggle embed original" +msgstr "" + +#: include/functions2.php:80 +msgid "Article selection" +msgstr "" + +#: include/functions2.php:81 +msgid "Select all articles" +msgstr "" + +#: include/functions2.php:82 +msgid "Select unread" +msgstr "" + +#: include/functions2.php:83 +msgid "Select starred" +msgstr "" + +#: include/functions2.php:84 +msgid "Select published" +msgstr "" + +#: include/functions2.php:85 +msgid "Invert selection" +msgstr "" + +#: include/functions2.php:86 +msgid "Deselect everything" +msgstr "" + +#: include/functions2.php:87 classes/pref/feeds.php:550 +#: classes/pref/feeds.php:794 +msgid "Feed" +msgstr "" + +#: include/functions2.php:88 +msgid "Refresh current feed" +msgstr "" + +#: include/functions2.php:89 +msgid "Un/hide read feeds" +msgstr "" + +#: include/functions2.php:90 classes/pref/feeds.php:1314 +msgid "Subscribe to feed" +msgstr "" + +#: include/functions2.php:91 js/FeedTree.js:139 js/PrefFeedTree.js:68 +msgid "Edit feed" +msgstr "" + +#: include/functions2.php:93 +msgid "Reverse headlines" +msgstr "" + +#: include/functions2.php:94 +msgid "Debug feed update" +msgstr "" + +#: include/functions2.php:95 js/FeedTree.js:182 +msgid "Mark all feeds as read" +msgstr "" + +#: include/functions2.php:96 +msgid "Un/collapse current category" +msgstr "" + +#: include/functions2.php:97 +msgid "Toggle combined mode" +msgstr "" + +#: include/functions2.php:98 +msgid "Toggle auto expand in combined mode" +msgstr "" + +#: include/functions2.php:99 +msgid "Go to" +msgstr "" + +#: include/functions2.php:100 include/functions.php:1973 +msgid "All articles" +msgstr "" + +#: include/functions2.php:101 +msgid "Fresh" +msgstr "" + +#: include/functions2.php:104 js/tt-rss.js:469 js/tt-rss.js:653 +msgid "Tag cloud" +msgstr "" + +#: include/functions2.php:106 +msgid "Other" +msgstr "" + +#: include/functions2.php:107 classes/pref/labels.php:281 +msgid "Create label" +msgstr "" + +#: include/functions2.php:108 classes/pref/filters.php:725 +msgid "Create filter" +msgstr "" + +#: include/functions2.php:109 +msgid "Un/collapse sidebar" +msgstr "" + +#: include/functions2.php:110 +msgid "Show help dialog" +msgstr "" + +#: include/functions2.php:636 +#, php-format +msgid "Search results: %s" +msgstr "" + +#: include/functions2.php:1258 classes/feeds.php:730 +msgid "comment" +msgid_plural "comments" +msgstr[0] "" +msgstr[1] "" + +#: include/functions2.php:1262 classes/feeds.php:734 +msgid "comments" +msgstr "" + +#: include/functions2.php:1303 +msgid " - " +msgstr "" + +#: include/functions2.php:1336 include/functions2.php:1584 +#: classes/article.php:292 +msgid "no tags" +msgstr "" + +#: include/functions2.php:1346 classes/feeds.php:716 +msgid "Edit tags for this article" +msgstr "" + +#: include/functions2.php:1378 classes/feeds.php:668 +msgid "Originally from:" +msgstr "" + +#: include/functions2.php:1391 classes/feeds.php:681 +#: classes/pref/feeds.php:569 +msgid "Feed URL" +msgstr "" + +#: include/functions2.php:1425 classes/backend.php:105 +#: classes/pref/users.php:95 classes/pref/feeds.php:1611 +#: classes/pref/feeds.php:1677 classes/pref/filters.php:192 +#: classes/pref/prefs.php:1099 classes/dlg.php:37 classes/dlg.php:60 +#: classes/dlg.php:93 classes/dlg.php:159 classes/dlg.php:186 +#: plugins/af_psql_trgm/init.php:102 plugins/googlereaderimport/init.php:194 +#: plugins/import_export/init.php:411 plugins/import_export/init.php:456 +#: plugins/af_sort_bayes/init.php:402 plugins/share/init.php:123 +msgid "Close this window" +msgstr "" + +#: include/functions2.php:1622 +msgid "(edit note)" +msgstr "" + +#: include/functions2.php:1876 +msgid "unknown type" +msgstr "" + +#: include/functions2.php:1953 +msgid "Attachments" +msgstr "" + +#: include/functions.php:964 +#, php-format +msgid "%d min" +msgstr "" + +#: include/functions.php:1260 include/functions.php:1912 +msgid "Special" +msgstr "" + +#: include/functions.php:1763 classes/pref/filters.php:216 +#: classes/pref/filters.php:494 +msgid "All feeds" +msgstr "" + +#: include/functions.php:1967 +msgid "Starred articles" +msgstr "" + +#: include/functions.php:1969 +msgid "Published articles" +msgstr "" + +#: include/functions.php:1971 +msgid "Fresh articles" +msgstr "" + +#: include/functions.php:1975 +msgid "Archived articles" +msgstr "" + +#: include/functions.php:1977 +msgid "Recently read" +msgstr "" + +#: include/login_form.php:190 classes/handler/public.php:557 +#: classes/handler/public.php:812 +msgid "Login:" +msgstr "" + +#: include/login_form.php:200 classes/handler/public.php:560 +msgid "Password:" +msgstr "" + +#: include/login_form.php:206 +msgid "I forgot my password" +msgstr "" + +#: include/login_form.php:212 +msgid "Profile:" +msgstr "" + +#: include/login_form.php:216 classes/handler/public.php:299 +#: classes/rpc.php:63 classes/pref/prefs.php:1037 +msgid "Default profile" +msgstr "" + +#: include/login_form.php:224 +msgid "Use less traffic" +msgstr "" + +#: include/login_form.php:228 +msgid "Does not display images in articles, reduces automatic refreshes." +msgstr "" + +#: include/login_form.php:236 +msgid "Remember me" +msgstr "" + +#: include/login_form.php:242 classes/handler/public.php:565 +msgid "Log in" +msgstr "" + +#: include/sessions.php:61 +msgid "Session failed to validate (incorrect IP)" +msgstr "" + +#: include/sessions.php:67 +msgid "Session failed to validate (schema version changed)" +msgstr "" + +#: include/sessions.php:85 +msgid "Session failed to validate (user not found)" +msgstr "" + +#: include/sessions.php:94 +msgid "Session failed to validate (password changed)" +msgstr "" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "" + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "" + +#: classes/handler/public.php:498 plugins/bookmarklets/init.php:40 +msgid "Share with Tiny Tiny RSS" +msgstr "" + +#: classes/handler/public.php:506 +msgid "Title:" +msgstr "" + +#: classes/handler/public.php:508 classes/pref/feeds.php:567 +#: plugins/instances/init.php:212 plugins/instances/init.php:401 +msgid "URL:" +msgstr "" + +#: classes/handler/public.php:510 +msgid "Content:" +msgstr "" + +#: classes/handler/public.php:512 +msgid "Labels:" +msgstr "" + +#: classes/handler/public.php:531 +msgid "Shared article will appear in the Published feed." +msgstr "" + +#: classes/handler/public.php:533 +msgid "Share" +msgstr "" + +#: classes/handler/public.php:534 classes/handler/public.php:568 +#: classes/feeds.php:1076 classes/feeds.php:1126 classes/feeds.php:1157 +#: classes/article.php:205 classes/pref/users.php:170 +#: classes/pref/feeds.php:774 classes/pref/feeds.php:903 +#: classes/pref/feeds.php:1817 classes/pref/filters.php:475 +#: classes/pref/filters.php:874 classes/pref/filters.php:955 +#: classes/pref/filters.php:1022 classes/pref/labels.php:81 +#: classes/pref/prefs.php:985 plugins/note/init.php:53 +#: plugins/mail/init.php:172 plugins/instances/init.php:248 +#: plugins/instances/init.php:436 +msgid "Cancel" +msgstr "" + +#: classes/handler/public.php:555 +msgid "Not logged in" +msgstr "" + +#: classes/handler/public.php:614 +msgid "Incorrect username or password" +msgstr "" + +#: classes/handler/public.php:666 +#, php-format +msgid "Already subscribed to %s." +msgstr "" + +#: classes/handler/public.php:669 +#, php-format +msgid "Subscribed to %s." +msgstr "" + +#: classes/handler/public.php:672 +#, php-format +msgid "Could not subscribe to %s." +msgstr "" + +#: classes/handler/public.php:675 +#, php-format +msgid "No feeds found in %s." +msgstr "" + +#: classes/handler/public.php:678 +msgid "Multiple feed URLs found." +msgstr "" + +#: classes/handler/public.php:682 +#, php-format +msgid "Could not subscribe to %s.
    Can't download the Feed URL." +msgstr "" + +#: classes/handler/public.php:700 +msgid "Subscribe to selected feed" +msgstr "" + +#: classes/handler/public.php:725 +msgid "Edit subscription options" +msgstr "" + +#: classes/handler/public.php:762 +msgid "Password recovery" +msgstr "" + +#: classes/handler/public.php:805 +msgid "" +"You will need to provide valid account name and email. A password reset link " +"will be sent to your email address." +msgstr "" + +#: classes/handler/public.php:827 classes/pref/users.php:352 +msgid "Reset password" +msgstr "" + +#: classes/handler/public.php:837 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "" + +#: classes/handler/public.php:841 classes/handler/public.php:907 +msgid "Go back" +msgstr "" + +#: classes/handler/public.php:878 +msgid "[tt-rss] Password reset request" +msgstr "" + +#: classes/handler/public.php:903 +msgid "Sorry, login and email combination not found." +msgstr "" + +#: classes/handler/public.php:925 +msgid "Your access level is insufficient to run this script." +msgstr "" + +#: classes/handler/public.php:951 +msgid "Database Updater" +msgstr "" + +#: classes/handler/public.php:1016 +msgid "Perform updates" +msgstr "" + +#: classes/feeds.php:53 +msgid "View as RSS feed" +msgstr "" + +#: classes/feeds.php:54 classes/feeds.php:134 classes/pref/feeds.php:1473 +msgid "View as RSS" +msgstr "" + +#: classes/feeds.php:62 +#, php-format +msgid "Last updated: %s" +msgstr "" + +#: classes/feeds.php:90 classes/pref/users.php:337 classes/pref/feeds.php:1305 +#: classes/pref/feeds.php:1562 classes/pref/feeds.php:1626 +#: classes/pref/filters.php:349 classes/pref/filters.php:397 +#: classes/pref/filters.php:719 classes/pref/filters.php:807 +#: classes/pref/filters.php:834 classes/pref/labels.php:275 +#: classes/pref/prefs.php:997 plugins/instances/init.php:287 +msgid "All" +msgstr "" + +#: classes/feeds.php:92 +msgid "Invert" +msgstr "" + +#: classes/feeds.php:93 classes/pref/users.php:339 classes/pref/feeds.php:1307 +#: classes/pref/feeds.php:1564 classes/pref/feeds.php:1628 +#: classes/pref/filters.php:351 classes/pref/filters.php:399 +#: classes/pref/filters.php:721 classes/pref/filters.php:809 +#: classes/pref/filters.php:836 classes/pref/labels.php:277 +#: classes/pref/prefs.php:999 plugins/instances/init.php:289 +msgid "None" +msgstr "" + +#: classes/feeds.php:99 +msgid "More..." +msgstr "" + +#: classes/feeds.php:101 +msgid "Selection toggle:" +msgstr "" + +#: classes/feeds.php:107 +msgid "Selection:" +msgstr "" + +#: classes/feeds.php:110 +msgid "Set score" +msgstr "" + +#: classes/feeds.php:113 +msgid "Archive" +msgstr "" + +#: classes/feeds.php:115 +msgid "Move back" +msgstr "" + +#: classes/feeds.php:116 classes/pref/filters.php:358 +#: classes/pref/filters.php:406 classes/pref/filters.php:816 +#: classes/pref/filters.php:843 +msgid "Delete" +msgstr "" + +#: classes/feeds.php:121 classes/feeds.php:126 plugins/mailto/init.php:25 +#: plugins/mail/init.php:75 +msgid "Forward by email" +msgstr "" + +#: classes/feeds.php:130 +msgid "Feed:" +msgstr "" + +#: classes/feeds.php:200 classes/feeds.php:869 +msgid "Feed not found." +msgstr "" + +#: classes/feeds.php:268 +msgid "Never" +msgstr "" + +#: classes/feeds.php:393 +#, php-format +msgid "Imported at %s" +msgstr "" + +#: classes/feeds.php:452 classes/feeds.php:549 +msgid "mark feed as read" +msgstr "" + +#: classes/feeds.php:608 +msgid "Collapse article" +msgstr "" + +#: classes/feeds.php:768 +msgid "No unread articles found to display." +msgstr "" + +#: classes/feeds.php:771 +msgid "No updated articles found to display." +msgstr "" + +#: classes/feeds.php:774 +msgid "No starred articles found to display." +msgstr "" + +#: classes/feeds.php:778 +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 "" + +#: classes/feeds.php:780 +msgid "No articles found to display." +msgstr "" + +#: classes/feeds.php:795 classes/feeds.php:967 +#, php-format +msgid "Feeds last updated at %s" +msgstr "" + +#: classes/feeds.php:805 classes/feeds.php:977 +msgid "Some feeds have update errors (click for details)" +msgstr "" + +#: classes/feeds.php:957 +msgid "No feed selected." +msgstr "" + +#: classes/feeds.php:1014 classes/feeds.php:1022 +msgid "Feed or site URL" +msgstr "" + +#: classes/feeds.php:1028 classes/pref/feeds.php:590 +#: classes/pref/feeds.php:801 classes/pref/feeds.php:1781 +msgid "Place in category:" +msgstr "" + +#: classes/feeds.php:1036 +msgid "Available feeds" +msgstr "" + +#: classes/feeds.php:1048 classes/pref/users.php:133 +#: classes/pref/feeds.php:620 classes/pref/feeds.php:837 +msgid "Authentication" +msgstr "" + +#: classes/feeds.php:1052 classes/pref/users.php:397 +#: classes/pref/feeds.php:626 classes/pref/feeds.php:841 +#: classes/pref/feeds.php:1795 +msgid "Login" +msgstr "" + +#: classes/feeds.php:1055 classes/pref/feeds.php:639 +#: classes/pref/feeds.php:847 classes/pref/feeds.php:1798 +#: classes/pref/prefs.php:245 +msgid "Password" +msgstr "" + +#: classes/feeds.php:1065 +msgid "This feed requires authentication." +msgstr "" + +#: classes/feeds.php:1070 classes/feeds.php:1124 classes/pref/feeds.php:1816 +msgid "Subscribe" +msgstr "" + +#: classes/feeds.php:1073 +msgid "More feeds" +msgstr "" + +#: classes/feeds.php:1096 classes/feeds.php:1156 classes/pref/users.php:324 +#: classes/pref/feeds.php:1298 classes/pref/filters.php:712 js/tt-rss.js:174 +msgid "Search" +msgstr "" + +#: classes/feeds.php:1100 +msgid "Popular feeds" +msgstr "" + +#: classes/feeds.php:1101 +msgid "Feed archive" +msgstr "" + +#: classes/feeds.php:1104 +msgid "limit:" +msgstr "" + +#: classes/feeds.php:1125 classes/pref/users.php:350 +#: classes/pref/feeds.php:744 classes/pref/filters.php:465 +#: classes/pref/filters.php:738 classes/pref/labels.php:284 +#: plugins/instances/init.php:294 +msgid "Remove" +msgstr "" + +#: classes/feeds.php:1136 +msgid "Look for" +msgstr "" + +#: classes/feeds.php:1144 +#, php-format +msgid "in %s" +msgstr "" + +#: classes/feeds.php:1152 +msgid "Search syntax" +msgstr "" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "" + +#: classes/article.php:178 +msgid "Tags for this article (separated by commas):" +msgstr "" + +#: classes/article.php:203 classes/pref/users.php:168 +#: classes/pref/feeds.php:773 classes/pref/feeds.php:900 +#: classes/pref/filters.php:472 classes/pref/labels.php:79 +#: classes/pref/prefs.php:983 plugins/af_psql_trgm/init.php:186 +#: plugins/note/init.php:51 plugins/nsfw/init.php:85 plugins/mail/init.php:64 +#: plugins/instances/init.php:245 plugins/af_redditimgur/init.php:57 +msgid "Save" +msgstr "" + +#: classes/opml.php:28 classes/opml.php:33 +msgid "OPML Utility" +msgstr "" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "" + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "" + +#: classes/opml.php:271 +#, php-format +msgid "Adding feed: %s" +msgstr "" + +#: classes/opml.php:282 +#, php-format +msgid "Duplicate feed: %s" +msgstr "" + +#: classes/opml.php:296 +#, php-format +msgid "Adding label %s" +msgstr "" + +#: classes/opml.php:299 +#, php-format +msgid "Duplicate label: %s" +msgstr "" + +#: classes/opml.php:311 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "" + +#: classes/opml.php:343 +msgid "Adding filter..." +msgstr "" + +#: classes/opml.php:421 +#, php-format +msgid "Processing category: %s" +msgstr "" + +#: classes/opml.php:470 plugins/googlereaderimport/init.php:66 +#: plugins/import_export/init.php:424 +#, php-format +msgid "Upload failed with error code %d" +msgstr "" + +#: classes/opml.php:484 plugins/googlereaderimport/init.php:80 +#: plugins/import_export/init.php:438 +msgid "Unable to move uploaded file." +msgstr "" + +#: classes/opml.php:488 plugins/googlereaderimport/init.php:84 +#: plugins/import_export/init.php:442 +msgid "Error: please upload OPML file." +msgstr "" + +#: classes/opml.php:499 +msgid "Error: unable to find moved OPML file." +msgstr "" + +#: classes/opml.php:506 plugins/googlereaderimport/init.php:187 +msgid "Error while parsing document." +msgstr "" + +#: classes/pref/system.php:8 classes/pref/users.php:6 +#: plugins/instances/init.php:154 +msgid "Your access level is insufficient to open this tab." +msgstr "" + +#: classes/pref/system.php:29 +msgid "Error Log" +msgstr "" + +#: classes/pref/system.php:40 plugins/af_sort_bayes/init.php:250 +msgid "Refresh" +msgstr "" + +#: classes/pref/system.php:43 +msgid "Clear log" +msgstr "" + +#: classes/pref/system.php:48 +msgid "Error" +msgstr "" + +#: classes/pref/system.php:49 +msgid "Filename" +msgstr "" + +#: classes/pref/system.php:50 +msgid "Message" +msgstr "" + +#: classes/pref/system.php:52 +msgid "Date" +msgstr "" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "" + +#: classes/pref/users.php:53 classes/pref/users.php:399 +msgid "Registered" +msgstr "" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "" + +#: classes/pref/users.php:136 +msgid "Access level: " +msgstr "" + +#: classes/pref/users.php:154 classes/pref/feeds.php:647 +#: classes/pref/feeds.php:853 +msgid "Options" +msgstr "" + +#: classes/pref/users.php:232 +#, php-format +msgid "Added user %s with password %s" +msgstr "" + +#: classes/pref/users.php:239 +#, php-format +msgid "Could not create user %s" +msgstr "" + +#: classes/pref/users.php:243 +#, php-format +msgid "User %s already exists." +msgstr "" + +#: classes/pref/users.php:265 +#, php-format +msgid "Changed password of user %s to %s" +msgstr "" + +#: classes/pref/users.php:267 +#, php-format +msgid "Sending new password of user %s to %s" +msgstr "" + +#: classes/pref/users.php:291 +msgid "[tt-rss] Password change notification" +msgstr "" + +#: classes/pref/users.php:334 classes/pref/feeds.php:1302 +#: classes/pref/feeds.php:1559 classes/pref/feeds.php:1623 +#: classes/pref/filters.php:346 classes/pref/filters.php:394 +#: classes/pref/filters.php:716 classes/pref/filters.php:804 +#: classes/pref/filters.php:831 classes/pref/labels.php:272 +#: classes/pref/prefs.php:994 plugins/instances/init.php:284 +msgid "Select" +msgstr "" + +#: classes/pref/users.php:342 +msgid "Create user" +msgstr "" + +#: classes/pref/users.php:346 +msgid "Details" +msgstr "" + +#: classes/pref/users.php:348 classes/pref/filters.php:731 +#: plugins/instances/init.php:293 +msgid "Edit" +msgstr "" + +#: classes/pref/users.php:398 +msgid "Access Level" +msgstr "" + +#: classes/pref/users.php:400 +msgid "Last login" +msgstr "" + +#: classes/pref/users.php:419 plugins/instances/init.php:334 +msgid "Click to edit" +msgstr "" + +#: classes/pref/users.php:439 +msgid "No users defined." +msgstr "" + +#: classes/pref/users.php:441 +msgid "No matching users found." +msgstr "" + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "" + +#: classes/pref/feeds.php:63 classes/pref/feeds.php:212 +#: classes/pref/feeds.php:256 classes/pref/feeds.php:262 +#: classes/pref/feeds.php:288 +#, php-format +msgid "(%d feed)" +msgid_plural "(%d feeds)" +msgstr[0] "" +msgstr[1] "" + +#: classes/pref/feeds.php:556 +msgid "Feed Title" +msgstr "" + +#: classes/pref/feeds.php:598 classes/pref/feeds.php:812 +msgid "Update" +msgstr "" + +#: classes/pref/feeds.php:613 classes/pref/feeds.php:828 +msgid "Article purging:" +msgstr "" + +#: classes/pref/feeds.php:643 +msgid "" +"Hint: you need to fill in your login information if your feed " +"requires authentication, except for Twitter feeds." +msgstr "" + +#: classes/pref/feeds.php:659 classes/pref/feeds.php:857 +msgid "Hide from Popular feeds" +msgstr "" + +#: classes/pref/feeds.php:671 classes/pref/feeds.php:863 +msgid "Include in e-mail digest" +msgstr "" + +#: classes/pref/feeds.php:684 classes/pref/feeds.php:869 +msgid "Always display image attachments" +msgstr "" + +#: classes/pref/feeds.php:697 classes/pref/feeds.php:877 +msgid "Do not embed images" +msgstr "" + +#: classes/pref/feeds.php:710 classes/pref/feeds.php:885 +msgid "Cache images locally" +msgstr "" + +#: classes/pref/feeds.php:722 classes/pref/feeds.php:891 +msgid "Mark updated articles as unread" +msgstr "" + +#: classes/pref/feeds.php:728 +msgid "Icon" +msgstr "" + +#: classes/pref/feeds.php:742 +msgid "Replace" +msgstr "" + +#: classes/pref/feeds.php:764 +msgid "Resubscribe to push updates" +msgstr "" + +#: classes/pref/feeds.php:771 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "" + +#: classes/pref/feeds.php:1146 classes/pref/feeds.php:1199 +msgid "All done." +msgstr "" + +#: classes/pref/feeds.php:1254 +msgid "Feeds with errors" +msgstr "" + +#: classes/pref/feeds.php:1279 +msgid "Inactive feeds" +msgstr "" + +#: classes/pref/feeds.php:1316 +msgid "Edit selected feeds" +msgstr "" + +#: classes/pref/feeds.php:1318 classes/pref/feeds.php:1332 +#: classes/pref/filters.php:734 +msgid "Reset sort order" +msgstr "" + +#: classes/pref/feeds.php:1320 js/prefs.js:1732 +msgid "Batch subscribe" +msgstr "" + +#: classes/pref/feeds.php:1327 +msgid "Categories" +msgstr "" + +#: classes/pref/feeds.php:1330 +msgid "Add category" +msgstr "" + +#: classes/pref/feeds.php:1334 +msgid "Remove selected" +msgstr "" + +#: classes/pref/feeds.php:1345 +msgid "More actions..." +msgstr "" + +#: classes/pref/feeds.php:1349 +msgid "Manual purge" +msgstr "" + +#: classes/pref/feeds.php:1353 +msgid "Clear feed data" +msgstr "" + +#: classes/pref/feeds.php:1354 classes/pref/filters.php:742 +msgid "Rescore articles" +msgstr "" + +#: classes/pref/feeds.php:1404 +msgid "OPML" +msgstr "" + +#: classes/pref/feeds.php:1406 +msgid "" +"Using OPML you can export and import your feeds, filters, labels and Tiny " +"Tiny RSS settings." +msgstr "" + +#: classes/pref/feeds.php:1406 +msgid "Only main settings profile can be migrated using OPML." +msgstr "" + +#: classes/pref/feeds.php:1419 +msgid "Import my OPML" +msgstr "" + +#: classes/pref/feeds.php:1423 +msgid "Filename:" +msgstr "" + +#: classes/pref/feeds.php:1425 +msgid "Include settings" +msgstr "" + +#: classes/pref/feeds.php:1429 +msgid "Export OPML" +msgstr "" + +#: classes/pref/feeds.php:1433 +msgid "" +"Your OPML can be published publicly and can be subscribed by anyone who " +"knows the URL below." +msgstr "" + +#: classes/pref/feeds.php:1435 +msgid "" +"Published OPML does not include your Tiny Tiny RSS settings, feeds that " +"require authentication or feeds hidden from Popular feeds." +msgstr "" + +#: classes/pref/feeds.php:1437 +msgid "Public OPML URL" +msgstr "" + +#: classes/pref/feeds.php:1438 +msgid "Display published OPML URL" +msgstr "" + +#: classes/pref/feeds.php:1447 +msgid "Firefox integration" +msgstr "" + +#: classes/pref/feeds.php:1449 +msgid "" +"This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the " +"link below." +msgstr "" + +#: classes/pref/feeds.php:1456 +msgid "Click here to register this site as a feed reader." +msgstr "" + +#: classes/pref/feeds.php:1464 +msgid "Published & shared articles / Generated feeds" +msgstr "" + +#: classes/pref/feeds.php:1466 +msgid "" +"Published articles are exported as a public RSS feed and can be subscribed " +"by anyone who knows the URL specified below." +msgstr "" + +#: classes/pref/feeds.php:1474 +msgid "Display URL" +msgstr "" + +#: classes/pref/feeds.php:1477 +msgid "Clear all generated URLs" +msgstr "" + +#: classes/pref/feeds.php:1555 +msgid "" +"These feeds have not been updated with new content for 3 months (oldest " +"first):" +msgstr "" + +#: classes/pref/feeds.php:1589 classes/pref/feeds.php:1653 +msgid "Click to edit feed" +msgstr "" + +#: classes/pref/feeds.php:1607 classes/pref/feeds.php:1673 +msgid "Unsubscribe from selected feeds" +msgstr "" + +#: classes/pref/feeds.php:1778 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "" + +#: classes/pref/feeds.php:1787 +msgid "Feeds to subscribe, One per line" +msgstr "" + +#: classes/pref/feeds.php:1809 +msgid "Feeds require authentication." +msgstr "" + +#: classes/pref/filters.php:102 +msgid "Articles matching this filter:" +msgstr "" + +#: classes/pref/filters.php:185 +msgid "No recent articles matching this filter have been found." +msgstr "" + +#: classes/pref/filters.php:226 classes/pref/filters.php:505 +msgid "(inverse)" +msgstr "" + +#: classes/pref/filters.php:222 classes/pref/filters.php:504 +#, php-format +msgid "%s on %s in %s %s" +msgstr "" + +#: classes/pref/filters.php:335 classes/pref/filters.php:795 +#: classes/pref/labels.php:22 +msgid "Caption" +msgstr "" + +#: classes/pref/filters.php:341 classes/pref/filters.php:799 +#: classes/pref/filters.php:914 +msgid "Match" +msgstr "" + +#: classes/pref/filters.php:355 classes/pref/filters.php:403 +#: classes/pref/filters.php:813 classes/pref/filters.php:840 +msgid "Add" +msgstr "" + +#: classes/pref/filters.php:389 classes/pref/filters.php:826 +msgid "Apply actions" +msgstr "" + +#: classes/pref/filters.php:439 classes/pref/filters.php:855 +msgid "Enabled" +msgstr "" + +#: classes/pref/filters.php:448 classes/pref/filters.php:858 +msgid "Match any rule" +msgstr "" + +#: classes/pref/filters.php:457 classes/pref/filters.php:861 +msgid "Inverse matching" +msgstr "" + +#: classes/pref/filters.php:469 classes/pref/filters.php:868 +msgid "Test" +msgstr "" + +#: classes/pref/filters.php:728 +msgid "Combine" +msgstr "" + +#: classes/pref/filters.php:871 +msgid "Create" +msgstr "" + +#: classes/pref/filters.php:926 +msgid "Inverse regular expression matching" +msgstr "" + +#: classes/pref/filters.php:928 +msgid "on field" +msgstr "" + +#: classes/pref/filters.php:934 js/PrefFilterTree.js:61 +msgid "in" +msgstr "" + +#: classes/pref/filters.php:947 +msgid "Wiki: Filters" +msgstr "" + +#: classes/pref/filters.php:952 +msgid "Save rule" +msgstr "" + +#: classes/pref/filters.php:952 js/functions.js:1025 +msgid "Add rule" +msgstr "" + +#: classes/pref/filters.php:975 +msgid "Perform Action" +msgstr "" + +#: classes/pref/filters.php:1001 +msgid "with parameters:" +msgstr "" + +#: classes/pref/filters.php:1019 +msgid "Save action" +msgstr "" + +#: classes/pref/filters.php:1019 js/functions.js:1051 +msgid "Add action" +msgstr "" + +#: classes/pref/filters.php:1042 +msgid "[No caption]" +msgstr "" + +#: classes/pref/filters.php:1044 +#, php-format +msgid "%s (%d rule)" +msgid_plural "%s (%d rules)" +msgstr[0] "" +msgstr[1] "" + +#: classes/pref/filters.php:1059 +#, php-format +msgid "%s (+%d action)" +msgid_plural "%s (+%d actions)" +msgstr[0] "" +msgstr[1] "" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "" + +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "" + +#: classes/pref/prefs.php:26 +msgid "Blacklisted tags" +msgstr "" + +#: classes/pref/prefs.php:26 +msgid "" +"When auto-detecting tags in articles these tags will not be applied (comma-" +"separated list)." +msgstr "" + +#: classes/pref/prefs.php:27 +msgid "Automatically mark articles as read" +msgstr "" + +#: classes/pref/prefs.php:27 +msgid "" +"This option enables marking articles as read automatically while you scroll " +"article list." +msgstr "" + +#: classes/pref/prefs.php:28 +msgid "Automatically expand articles in combined mode" +msgstr "" + +#: classes/pref/prefs.php:29 +msgid "Combined feed display" +msgstr "" + +#: classes/pref/prefs.php:29 +msgid "" +"Display expanded list of feed articles, instead of separate displays for " +"headlines and article content" +msgstr "" + +#: classes/pref/prefs.php:30 +msgid "Confirm marking feed as read" +msgstr "" + +#: classes/pref/prefs.php:31 +msgid "Amount of articles to display at once" +msgstr "" + +#: classes/pref/prefs.php:32 +msgid "Default feed update interval" +msgstr "" + +#: classes/pref/prefs.php:32 +msgid "" +"Shortest interval at which a feed will be checked for updates regardless of " +"update method" +msgstr "" + +#: classes/pref/prefs.php:33 +msgid "Mark articles in e-mail digest as read" +msgstr "" + +#: classes/pref/prefs.php:34 +msgid "Enable e-mail digest" +msgstr "" + +#: classes/pref/prefs.php:34 +msgid "" +"This option enables sending daily digest of new (and unread) headlines on " +"your configured e-mail address" +msgstr "" + +#: classes/pref/prefs.php:35 +msgid "Try to send digests around specified time" +msgstr "" + +#: classes/pref/prefs.php:35 +msgid "Uses UTC timezone" +msgstr "" + +#: classes/pref/prefs.php:36 +msgid "Enable API access" +msgstr "" + +#: classes/pref/prefs.php:36 +msgid "Allows external clients to access this account through the API" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Enable feed categories" +msgstr "" + +#: classes/pref/prefs.php:38 +msgid "Sort feeds by unread articles count" +msgstr "" + +#: classes/pref/prefs.php:39 +msgid "Maximum age of fresh articles (in hours)" +msgstr "" + +#: classes/pref/prefs.php:40 +msgid "Hide feeds with no unread articles" +msgstr "" + +#: classes/pref/prefs.php:41 +msgid "Show special feeds when hiding read feeds" +msgstr "" + +#: classes/pref/prefs.php:42 +msgid "Long date format" +msgstr "" + +#: classes/pref/prefs.php:42 +msgid "" +"The syntax used is identical to the PHP date() function." +msgstr "" + +#: classes/pref/prefs.php:43 +msgid "On catchup show next feed" +msgstr "" + +#: classes/pref/prefs.php:43 +msgid "" +"Automatically open next feed with unread articles after marking one as read" +msgstr "" + +#: classes/pref/prefs.php:44 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "" + +#: classes/pref/prefs.php:45 +msgid "Purge unread articles" +msgstr "" + +#: classes/pref/prefs.php:46 +msgid "Reverse headline order (oldest first)" +msgstr "" + +#: classes/pref/prefs.php:47 +msgid "Short date format" +msgstr "" + +#: classes/pref/prefs.php:48 +msgid "Show content preview in headlines list" +msgstr "" + +#: classes/pref/prefs.php:49 +msgid "Sort headlines by feed date" +msgstr "" + +#: classes/pref/prefs.php:49 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Login with an SSL certificate" +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "" + +#: classes/pref/prefs.php:51 +msgid "Do not embed images in articles" +msgstr "" + +#: classes/pref/prefs.php:52 +msgid "Strip unsafe tags from articles" +msgstr "" + +#: classes/pref/prefs.php:52 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "" + +#: classes/pref/prefs.php:53 js/prefs.js:1687 +msgid "Customize stylesheet" +msgstr "" + +#: classes/pref/prefs.php:53 +msgid "Customize CSS stylesheet to your liking" +msgstr "" + +#: classes/pref/prefs.php:54 +msgid "Time zone" +msgstr "" + +#: classes/pref/prefs.php:55 +msgid "Group headlines in virtual feeds" +msgstr "" + +#: classes/pref/prefs.php:55 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" + +#: classes/pref/prefs.php:56 +msgid "Language" +msgstr "" + +#: classes/pref/prefs.php:57 +msgid "Theme" +msgstr "" + +#: classes/pref/prefs.php:57 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:126 +msgid "The configuration was saved." +msgstr "" + +#: classes/pref/prefs.php:140 +msgid "Your personal data has been saved." +msgstr "" + +#: classes/pref/prefs.php:160 +msgid "Your preferences are now set to default values." +msgstr "" + +#: classes/pref/prefs.php:183 +msgid "Personal data / Authentication" +msgstr "" + +#: classes/pref/prefs.php:203 +msgid "Personal data" +msgstr "" + +#: classes/pref/prefs.php:213 +msgid "Full name" +msgstr "" + +#: classes/pref/prefs.php:217 +msgid "E-mail" +msgstr "" + +#: classes/pref/prefs.php:223 +msgid "Access level" +msgstr "" + +#: classes/pref/prefs.php:233 +msgid "Save data" +msgstr "" + +#: classes/pref/prefs.php:254 +msgid "Your password is at default value, please change it." +msgstr "" + +#: classes/pref/prefs.php:289 +msgid "Changing your current password will disable OTP." +msgstr "" + +#: classes/pref/prefs.php:294 +msgid "Old password" +msgstr "" + +#: classes/pref/prefs.php:297 +msgid "New password" +msgstr "" + +#: classes/pref/prefs.php:302 +msgid "Confirm password" +msgstr "" + +#: classes/pref/prefs.php:312 +msgid "Change password" +msgstr "" + +#: classes/pref/prefs.php:318 +msgid "One time passwords / Authenticator" +msgstr "" + +#: classes/pref/prefs.php:322 +msgid "" +"One time passwords are currently enabled. Enter your current password below " +"to disable." +msgstr "" + +#: classes/pref/prefs.php:347 classes/pref/prefs.php:398 +msgid "Enter your password" +msgstr "" + +#: classes/pref/prefs.php:358 +msgid "Disable OTP" +msgstr "" + +#: classes/pref/prefs.php:364 +msgid "" +"You will need a compatible Authenticator to use this. Changing your password " +"would automatically disable OTP." +msgstr "" + +#: classes/pref/prefs.php:366 +msgid "Scan the following code by the Authenticator application:" +msgstr "" + +#: classes/pref/prefs.php:403 +msgid "Enter the generated one time password" +msgstr "" + +#: classes/pref/prefs.php:417 +msgid "Enable OTP" +msgstr "" + +#: classes/pref/prefs.php:423 +msgid "PHP GD functions are required for OTP support." +msgstr "" + +#: classes/pref/prefs.php:466 +msgid "Some preferences are only available in default profile." +msgstr "" + +#: classes/pref/prefs.php:564 +msgid "Customize" +msgstr "" + +#: classes/pref/prefs.php:627 +msgid "Register" +msgstr "" + +#: classes/pref/prefs.php:631 +msgid "Clear" +msgstr "" + +#: classes/pref/prefs.php:637 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "" + +#: classes/pref/prefs.php:669 +msgid "Save configuration" +msgstr "" + +#: classes/pref/prefs.php:673 +msgid "Save and exit preferences" +msgstr "" + +#: classes/pref/prefs.php:678 +msgid "Manage profiles" +msgstr "" + +#: classes/pref/prefs.php:681 +msgid "Reset to defaults" +msgstr "" + +#: classes/pref/prefs.php:704 +msgid "Plugins" +msgstr "" + +#: classes/pref/prefs.php:706 +msgid "" +"You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "" + +#: classes/pref/prefs.php:708 +msgid "" +"Download more plugins at tt-rss.org forums or wiki." +msgstr "" + +#: classes/pref/prefs.php:734 +msgid "System plugins" +msgstr "" + +#: classes/pref/prefs.php:738 classes/pref/prefs.php:794 +msgid "Plugin" +msgstr "" + +#: classes/pref/prefs.php:739 classes/pref/prefs.php:795 +msgid "Description" +msgstr "" + +#: classes/pref/prefs.php:740 classes/pref/prefs.php:796 +msgid "Version" +msgstr "" + +#: classes/pref/prefs.php:741 classes/pref/prefs.php:797 +msgid "Author" +msgstr "" + +#: classes/pref/prefs.php:772 classes/pref/prefs.php:831 +msgid "more info" +msgstr "" + +#: classes/pref/prefs.php:781 classes/pref/prefs.php:840 +msgid "Clear data" +msgstr "" + +#: classes/pref/prefs.php:790 +msgid "User plugins" +msgstr "" + +#: classes/pref/prefs.php:855 +msgid "Enable selected plugins" +msgstr "" + +#: classes/pref/prefs.php:923 +msgid "Incorrect one time password" +msgstr "" + +#: classes/pref/prefs.php:926 classes/pref/prefs.php:943 +msgid "Incorrect password" +msgstr "" + +#: classes/pref/prefs.php:968 +#, php-format +msgid "" +"You can override colors, fonts and layout of your currently selected theme " +"with custom CSS declarations here. This file can be used as a baseline." +msgstr "" + +#: classes/pref/prefs.php:1008 +msgid "Create profile" +msgstr "" + +#: classes/pref/prefs.php:1031 classes/pref/prefs.php:1059 +msgid "(active)" +msgstr "" + +#: classes/pref/prefs.php:1093 +msgid "Remove selected profiles" +msgstr "" + +#: classes/pref/prefs.php:1095 +msgid "Activate profile" +msgstr "" + +#: classes/dlg.php:17 +msgid "" +"If you have imported labels and/or filters, you might need to reload " +"preferences to see your new data." +msgstr "" + +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "" + +#: classes/dlg.php:57 classes/dlg.php:183 plugins/share/init.php:120 +msgid "Generate new URL" +msgstr "" + +#: 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 "" + +#: classes/dlg.php:75 classes/dlg.php:84 +msgid "Last update:" +msgstr "" + +#: 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 "" + +#: classes/dlg.php:174 +msgid "You can view this feed as RSS using the following URL:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:28 +#, php-format +msgid "Data saved (%s, %d)" +msgstr "" + +#: plugins/af_psql_trgm/init.php:112 +msgid "Show related articles" +msgstr "" + +#: plugins/af_psql_trgm/init.php:118 plugins/af_psql_trgm/init.php:225 +msgid "Mark similar articles as read" +msgstr "" + +#: plugins/af_psql_trgm/init.php:164 plugins/af_redditimgur/init.php:46 +msgid "Global settings" +msgstr "" + +#: plugins/af_psql_trgm/init.php:168 +msgid "Minimum similarity:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:173 +msgid "Minimum title length:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:178 +msgid "Enable for all feeds:" +msgstr "" + +#: plugins/af_psql_trgm/init.php:197 plugins/af_readability/init.php:40 +msgid "Currently enabled for (click to edit):" +msgstr "" + +#: plugins/af_psql_trgm/init.php:214 +msgid "Similarity (pg_trgm)" +msgstr "" + +#: plugins/af_comics/init.php:39 +msgid "Feeds supported by af_comics" +msgstr "" + +#: plugins/af_comics/init.php:41 +msgid "The following comics are currently supported:" +msgstr "" + +#: plugins/note/init.php:26 plugins/note/note.js:11 +msgid "Edit article note" +msgstr "" + +#: plugins/googlereaderimport/init.php:92 plugins/import_export/init.php:450 +msgid "No file uploaded." +msgstr "" + +#: plugins/googlereaderimport/init.php:179 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "" + +#: plugins/googlereaderimport/init.php:183 +msgid "The document has incorrect format." +msgstr "" + +#: plugins/googlereaderimport/init.php:354 +msgid "Import starred or shared items from Google Reader" +msgstr "" + +#: plugins/googlereaderimport/init.php:358 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "" + +#: plugins/googlereaderimport/init.php:372 +msgid "Import my Starred items" +msgstr "" + +#: plugins/mailto/init.php:49 plugins/mailto/init.php:55 +#: plugins/mail/init.php:112 plugins/mail/init.php:118 +msgid "[Forwarded]" +msgstr "" + +#: plugins/mailto/init.php:49 plugins/mail/init.php:112 +msgid "Multiple articles" +msgstr "" + +#: plugins/mailto/init.php:71 +msgid "Clicking the following link to invoke your mail client:" +msgstr "" + +#: plugins/mailto/init.php:75 +msgid "Forward selected article(s) by email." +msgstr "" + +#: plugins/mailto/init.php:78 +msgid "" +"You should be able to edit the message before sending in your mail client." +msgstr "" + +#: plugins/mailto/init.php:83 +msgid "Close this dialog" +msgstr "" + +#: plugins/import_export/init.php:58 +msgid "Import and export" +msgstr "" + +#: plugins/import_export/init.php:60 +msgid "" +"You can export and import your Starred and Archived articles for safekeeping " +"or when migrating between tt-rss instances of same version." +msgstr "" + +#: plugins/import_export/init.php:65 +msgid "Export my data" +msgstr "" + +#: plugins/import_export/init.php:81 +msgid "Import" +msgstr "" + +#: plugins/import_export/init.php:223 +msgid "Could not import: incorrect schema version." +msgstr "" + +#: plugins/import_export/init.php:228 +msgid "Could not import: unrecognized document format." +msgstr "" + +#: plugins/import_export/init.php:387 +msgid "Finished: " +msgstr "" + +#: plugins/import_export/init.php:388 +#, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "" +msgstr[1] "" + +#: plugins/import_export/init.php:389 +#, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "" +msgstr[1] "" + +#: plugins/import_export/init.php:390 +#, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "" +msgstr[1] "" + +#: plugins/import_export/init.php:395 +msgid "Could not load XML document." +msgstr "" + +#: plugins/import_export/init.php:407 +msgid "Prepare data" +msgstr "" + +#: plugins/nsfw/init.php:30 plugins/nsfw/init.php:42 +msgid "Not work safe (click to toggle)" +msgstr "" + +#: plugins/nsfw/init.php:52 +msgid "NSFW Plugin" +msgstr "" + +#: plugins/nsfw/init.php:79 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "" + +#: plugins/nsfw/init.php:100 +msgid "Configuration saved." +msgstr "" + +#: plugins/auth_internal/init.php:65 +msgid "Please enter your one time password:" +msgstr "" + +#: plugins/auth_internal/init.php:188 +msgid "Password has been changed." +msgstr "" + +#: plugins/auth_internal/init.php:190 +msgid "Old password is incorrect." +msgstr "" + +#: plugins/close_button/init.php:22 +msgid "Close article" +msgstr "" + +#: plugins/mail/init.php:28 +msgid "Mail addresses saved." +msgstr "" + +#: plugins/mail/init.php:34 +msgid "Mail plugin" +msgstr "" + +#: plugins/mail/init.php:36 +msgid "You can set predefined email addressed here (comma-separated list):" +msgstr "" + +#: plugins/mail/init.php:140 +msgid "To:" +msgstr "" + +#: plugins/mail/init.php:155 +msgid "Subject:" +msgstr "" + +#: plugins/mail/init.php:171 +msgid "Send e-mail" +msgstr "" + +#: plugins/instances/init.php:141 +msgid "Linked" +msgstr "" + +#: plugins/instances/init.php:204 plugins/instances/init.php:395 +msgid "Instance" +msgstr "" + +#: plugins/instances/init.php:215 plugins/instances/init.php:312 +#: plugins/instances/init.php:404 +msgid "Instance URL" +msgstr "" + +#: plugins/instances/init.php:226 plugins/instances/init.php:414 +msgid "Access key:" +msgstr "" + +#: plugins/instances/init.php:229 plugins/instances/init.php:313 +#: plugins/instances/init.php:417 +msgid "Access key" +msgstr "" + +#: plugins/instances/init.php:233 plugins/instances/init.php:421 +msgid "Use one access key for both linked instances." +msgstr "" + +#: plugins/instances/init.php:241 plugins/instances/init.php:429 +msgid "Generate new key" +msgstr "" + +#: plugins/instances/init.php:292 +msgid "Link instance" +msgstr "" + +#: 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 "" + +#: plugins/instances/init.php:314 +msgid "Last connected" +msgstr "" + +#: plugins/instances/init.php:315 +msgid "Status" +msgstr "" + +#: plugins/instances/init.php:316 +msgid "Stored feeds" +msgstr "" + +#: plugins/instances/init.php:433 +msgid "Create link" +msgstr "" + +#: plugins/af_redditimgur/init.php:21 +msgid "af_redditimgur settings" +msgstr "" + +#: plugins/af_redditimgur/init.php:54 +msgid "Extract missing content using Readability" +msgstr "" + +#: plugins/af_redditimgur/init.php:69 +msgid "Configuration saved" +msgstr "" + +#: plugins/af_readability/init.php:29 +msgid "af_readability settings" +msgstr "" + +#: plugins/af_readability/init.php:57 +msgid "Readability" +msgstr "" + +#: plugins/af_readability/init.php:68 +msgid "Inline article content" +msgstr "" + +#: plugins/vf_shared/init.php:16 plugins/vf_shared/init.php:69 +msgid "Shared articles" +msgstr "" + +#: plugins/af_sort_bayes/init.php:122 +msgid "+1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:126 +msgid "-1" +msgstr "" + +#: plugins/af_sort_bayes/init.php:130 +msgid "Show classifier info" +msgstr "" + +#: plugins/af_sort_bayes/init.php:216 +msgid "Statistics" +msgstr "" + +#: plugins/af_sort_bayes/init.php:218 +#, php-format +msgid "Required UGLY word count for automatic matching: %d" +msgstr "" + +#: plugins/af_sort_bayes/init.php:235 +msgid "Last matched articles" +msgstr "" + +#: plugins/af_sort_bayes/init.php:253 +msgid "Clear database" +msgstr "" + +#: plugins/af_sort_bayes/init.php:261 +msgid "Bayesian classifier (af_sort_bayes)" +msgstr "" + +#: plugins/af_sort_bayes/init.php:376 +#, php-format +msgid "Currently stored as: %s" +msgstr "" + +#: plugins/af_sort_bayes/init.php:380 +msgid "Classifier result" +msgstr "" + +#: plugins/bookmarklets/init.php:20 +msgid "Bookmarklets" +msgstr "" + +#: 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 "" + +#: plugins/bookmarklets/init.php:26 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "" + +#: plugins/bookmarklets/init.php:31 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "" + +#: plugins/share/init.php:39 +msgid "You can disable all articles shared by unique URLs here." +msgstr "" + +#: plugins/share/init.php:44 +msgid "Unshare all articles" +msgstr "" + +#: plugins/share/init.php:77 +msgid "Share by URL" +msgstr "" + +#: plugins/share/init.php:99 +msgid "You can share this article by the following unique URL:" +msgstr "" + +#: plugins/share/init.php:117 +msgid "Unshare article" +msgstr "" + +#: js/functions.js:62 +msgid "The error will be reported to the configured log destination." +msgstr "" + +#: js/functions.js:90 +msgid "Report to tt-rss.org" +msgstr "" + +#: js/functions.js:93 +msgid "Close" +msgstr "" + +#: js/functions.js:104 +msgid "" +"Are you sure to report this exception to tt-rss.org? The report will include " +"information about your web browser and tt-rss configuration. Your IP will be " +"saved in the database." +msgstr "" + +#: js/functions.js:224 +msgid "Click to close" +msgstr "" + +#: js/functions.js:1051 +msgid "Edit action" +msgstr "" + +#: js/functions.js:1088 +msgid "Create Filter" +msgstr "" + +#: js/functions.js:1218 +msgid "" +"Reset subscription? Tiny Tiny RSS will try to subscribe to the notification " +"hub again on next feed update." +msgstr "" + +#: js/functions.js:1229 +msgid "Subscription reset." +msgstr "" + +#: js/functions.js:1239 js/tt-rss.js:685 +#, perl-format +msgid "Unsubscribe from %s?" +msgstr "" + +#: js/functions.js:1242 +msgid "Removing feed..." +msgstr "" + +#: js/functions.js:1349 +msgid "Please enter category title:" +msgstr "" + +#: js/functions.js:1380 +msgid "Generate new syndication address for this feed?" +msgstr "" + +#: js/functions.js:1384 js/prefs.js:1218 +msgid "Trying to change address..." +msgstr "" + +#: js/functions.js:1685 js/functions.js:1795 js/prefs.js:414 js/prefs.js:444 +#: js/prefs.js:476 js/prefs.js:629 js/prefs.js:649 js/prefs.js:1194 +#: js/prefs.js:1339 +msgid "No feeds are selected." +msgstr "" + +#: js/functions.js:1727 +msgid "" +"Remove selected feeds from the archive? Feeds with stored articles will not " +"be removed." +msgstr "" + +#: js/functions.js:1766 +msgid "Feeds with update errors" +msgstr "" + +#: js/functions.js:1777 js/prefs.js:1176 +msgid "Remove selected feeds?" +msgstr "" + +#: js/functions.js:1780 js/prefs.js:1179 +msgid "Removing selected feeds..." +msgstr "" + +#: js/PrefFeedTree.js:48 +msgid "Edit category" +msgstr "" + +#: js/PrefFeedTree.js:55 +msgid "Remove category" +msgstr "" + +#: js/PrefFilterTree.js:64 +msgid "Inverse" +msgstr "" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "" + +#: js/prefs.js:66 +msgid "Adding user..." +msgstr "" + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "" + +#: js/prefs.js:99 js/prefs.js:211 js/prefs.js:736 +#: plugins/instances/instances.js:26 plugins/instances/instances.js:89 +#: js/functions.js:1592 +msgid "Saving data..." +msgstr "" + +#: js/prefs.js:134 +msgid "Edit Filter" +msgstr "" + +#: js/prefs.js:181 +msgid "Remove filter?" +msgstr "" + +#: js/prefs.js:186 +msgid "Removing filter..." +msgstr "" + +#: js/prefs.js:296 +msgid "Remove selected labels?" +msgstr "" + +#: js/prefs.js:299 +msgid "Removing selected labels..." +msgstr "" + +#: js/prefs.js:312 js/prefs.js:1380 +msgid "No labels are selected." +msgstr "" + +#: js/prefs.js:326 +msgid "" +"Remove selected users? Neither default admin nor your account will be " +"removed." +msgstr "" + +#: js/prefs.js:329 +msgid "Removing selected users..." +msgstr "" + +#: js/prefs.js:343 js/prefs.js:487 js/prefs.js:508 js/prefs.js:547 +msgid "No users are selected." +msgstr "" + +#: js/prefs.js:361 +msgid "Remove selected filters?" +msgstr "" + +#: js/prefs.js:364 +msgid "Removing selected filters..." +msgstr "" + +#: js/prefs.js:376 js/prefs.js:584 js/prefs.js:603 +msgid "No filters are selected." +msgstr "" + +#: js/prefs.js:395 +msgid "Unsubscribe from selected feeds?" +msgstr "" + +#: js/prefs.js:399 +msgid "Unsubscribing from selected feeds..." +msgstr "" + +#: js/prefs.js:429 +msgid "Please select only one feed." +msgstr "" + +#: js/prefs.js:435 +msgid "Erase all non-starred articles in selected feed?" +msgstr "" + +#: js/prefs.js:438 +msgid "Clearing selected feed..." +msgstr "" + +#: js/prefs.js:457 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "" + +#: js/prefs.js:460 +msgid "Purging selected feed..." +msgstr "" + +#: js/prefs.js:492 js/prefs.js:513 js/prefs.js:552 +msgid "Please select only one user." +msgstr "" + +#: js/prefs.js:517 +msgid "Reset password of selected user?" +msgstr "" + +#: js/prefs.js:520 +msgid "Resetting password for selected user..." +msgstr "" + +#: js/prefs.js:565 +msgid "User details" +msgstr "" + +#: js/prefs.js:589 +msgid "Please select only one filter." +msgstr "" + +#: js/prefs.js:607 +msgid "Combine selected filters?" +msgstr "" + +#: js/prefs.js:610 +msgid "Joining filters..." +msgstr "" + +#: js/prefs.js:671 +msgid "Edit Multiple Feeds" +msgstr "" + +#: js/prefs.js:695 +msgid "Save changes to selected feeds?" +msgstr "" + +#: js/prefs.js:772 +msgid "OPML Import" +msgstr "" + +#: js/prefs.js:799 +msgid "Please choose an OPML file first." +msgstr "" + +#: js/prefs.js:802 plugins/googlereaderimport/init.js:45 +#: plugins/import_export/import_export.js:115 +msgid "Importing, please wait..." +msgstr "" + +#: js/prefs.js:969 +msgid "Reset to defaults?" +msgstr "" + +#: js/prefs.js:1738 +msgid "Subscribing to feeds..." +msgstr "" + +#: js/prefs.js:1775 +msgid "Clear stored data for this plugin?" +msgstr "" + +#: js/prefs.js:1792 +msgid "Clear all messages in the error log?" +msgstr "" + +#: js/tt-rss.js:127 +msgid "Mark all articles as read?" +msgstr "" + +#: js/tt-rss.js:133 +msgid "Marking all feeds as read..." +msgstr "" + +#: js/tt-rss.js:391 +msgid "Please enable mail plugin first." +msgstr "" + +#: js/tt-rss.js:434 js/functions.js:1571 js/tt-rss.js:666 +msgid "You can't edit this kind of feed." +msgstr "" + +#: js/tt-rss.js:505 +msgid "Please enable embed_original plugin first." +msgstr "" + +#: js/tt-rss.js:518 js/tt-rss.js:716 +msgid "Widescreen is not available in combined mode." +msgstr "" + +#: js/tt-rss.js:830 +msgid "You can't rescore this kind of feed." +msgstr "" + +#: js/tt-rss.js:835 js/tt-rss.js:679 +msgid "Please select some feed first." +msgstr "" + +#: js/tt-rss.js:840 +#, perl-format +msgid "Rescore articles in %s?" +msgstr "" + +#: js/tt-rss.js:843 +msgid "Rescoring articles..." +msgstr "" + +#: js/viewfeed.js:1010 js/viewfeed.js:1053 js/viewfeed.js:1106 +#: js/viewfeed.js:2266 plugins/mailto/init.js:7 plugins/mail/mail.js:7 +#: js/viewfeed.js:734 js/viewfeed.js:762 js/viewfeed.js:789 js/viewfeed.js:854 +#: js/viewfeed.js:888 +msgid "No articles are selected." +msgstr "" + +#: js/viewfeed.js:1018 +#, perl-format +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "" +msgstr[1] "" + +#: js/viewfeed.js:1020 +#, perl-format +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "" +msgstr[1] "" + +#: js/viewfeed.js:1062 +#, perl-format +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "" +msgstr[1] "" + +#: js/viewfeed.js:1065 +#, perl-format +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "" +msgstr[1] "" + +#: js/viewfeed.js:1067 +msgid "" +"Please note that unstarred articles might get purged on next feed update." +msgstr "" + +#: js/viewfeed.js:1112 +#, perl-format +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "" +msgstr[1] "" + +#: js/viewfeed.js:1136 +msgid "Edit article Tags" +msgstr "" + +#: js/viewfeed.js:1142 +msgid "Saving article tags..." +msgstr "" + +#: js/viewfeed.js:1298 js/viewfeed.js:109 js/viewfeed.js:160 +#: js/viewfeed.js:177 +msgid "Click to open next unread feed." +msgstr "" + +#: js/viewfeed.js:1961 +msgid "Open original article" +msgstr "" + +#: js/viewfeed.js:2067 +msgid "Assign label" +msgstr "" + +#: js/viewfeed.js:2072 +msgid "Remove label" +msgstr "" + +#: js/viewfeed.js:2159 +msgid "Select articles in group" +msgstr "" + +#: js/viewfeed.js:2168 +msgid "Mark group as read" +msgstr "" + +#: js/viewfeed.js:2180 +msgid "Mark feed as read" +msgstr "" + +#: js/viewfeed.js:2235 +msgid "Please enter new score for selected articles:" +msgstr "" + +#: js/viewfeed.js:2305 +msgid "Please enter new score for this article:" +msgstr "" + +#: js/viewfeed.js:2339 +msgid "Article URL:" +msgstr "" + +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "" + +#: plugins/af_psql_trgm/init.js:11 +msgid "Related articles" +msgstr "" + +#: plugins/note/note.js:17 +msgid "Saving article note..." +msgstr "" + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "" + +#: plugins/googlereaderimport/init.js:42 +msgid "Please choose a file first." +msgstr "" + +#: plugins/mailto/init.js:21 plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "" + +#: plugins/import_export/import_export.js:40 +#, perl-format +msgid "" +"Finished, exported %d article. You can download the data here." +msgid_plural "" +"Finished, exported %d articles. You can download the data here." +msgstr[0] "" +msgstr[1] "" + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "" + +#: plugins/shorten_expanded/init.js:37 +msgid "Click to expand article" +msgstr "" + +#: plugins/mail/mail.js:36 +msgid "Error sending email:" +msgstr "" + +#: plugins/mail/mail.js:38 +msgid "Your message has been sent." +msgstr "" + +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "" + +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "" + +#: plugins/instances/instances.js:125 +msgid "Removing selected instances..." +msgstr "" + +#: plugins/instances/instances.js:139 plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "" + +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "" + +#: plugins/af_sort_bayes/init.js:26 +msgid "Clear classifier database?" +msgstr "" + +#: plugins/af_sort_bayes/init.js:70 +msgid "Classifier information" +msgstr "" + +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "" + +#: plugins/share/share.js:14 +msgid "Generate new share URL for this article?" +msgstr "" + +#: plugins/share/share.js:18 +msgid "Trying to change URL..." +msgstr "" + +#: plugins/share/share.js:55 +msgid "Remove sharing for this article?" +msgstr "" + +#: plugins/share/share.js:59 +msgid "Trying to unshare..." +msgstr "" + +#: plugins/share/share_prefs.js:3 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "" + +#: plugins/share/share_prefs.js:6 js/prefs.js:1518 +msgid "Clearing URLs..." +msgstr "" + +#: plugins/share/share_prefs.js:13 +msgid "Shared URLs cleared." +msgstr "" + +#: js/feedlist.js:416 js/feedlist.js:444 +msgid "Mark all articles in %s as read?" +msgstr "" + +#: js/feedlist.js:435 +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "" + +#: js/feedlist.js:438 +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "" + +#: js/feedlist.js:441 +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "" + +#: js/functions.js:615 +msgid "Error explained" +msgstr "" + +#: js/functions.js:697 +msgid "Upload complete." +msgstr "" + +#: js/functions.js:721 +msgid "Remove stored feed icon?" +msgstr "" + +#: js/functions.js:726 +msgid "Removing feed icon..." +msgstr "" + +#: js/functions.js:731 +msgid "Feed icon removed." +msgstr "" + +#: js/functions.js:753 +msgid "Please select an image file to upload." +msgstr "" + +#: js/functions.js:755 +msgid "Upload new icon for this feed?" +msgstr "" + +#: js/functions.js:756 +msgid "Uploading, please wait..." +msgstr "" + +#: js/functions.js:772 +msgid "Please enter label caption:" +msgstr "" + +#: js/functions.js:777 +msgid "Can't create label: missing caption." +msgstr "" + +#: js/functions.js:820 +msgid "Subscribe to Feed" +msgstr "" + +#: js/functions.js:839 +msgid "" +"Failed to parse output. This can indicate server timeout and/or network " +"issues. Backend output was logged to browser console." +msgstr "" + +#: js/functions.js:854 +msgid "Subscribed to %s" +msgstr "" + +#: js/functions.js:859 +msgid "Specified URL seems to be invalid." +msgstr "" + +#: js/functions.js:862 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "" + +#: js/functions.js:874 +msgid "Expand to select feed" +msgstr "" + +#: js/functions.js:886 +msgid "Couldn't download the specified URL: %s" +msgstr "" + +#: js/functions.js:890 +msgid "XML validation failed: %s" +msgstr "" + +#: js/functions.js:895 +msgid "You are already subscribed to this feed." +msgstr "" + +#: js/functions.js:1025 +msgid "Edit rule" +msgstr "" + +#: js/functions.js:1586 +msgid "Edit Feed" +msgstr "" + +#: js/functions.js:1624 +msgid "More Feeds" +msgstr "" + +#: js/functions.js:1878 +msgid "Help" +msgstr "" + +#: js/prefs.js:1083 +msgid "" +"Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "" + +#: js/prefs.js:1089 +msgid "Removing category..." +msgstr "" + +#: js/prefs.js:1110 +msgid "Remove selected categories?" +msgstr "" + +#: js/prefs.js:1113 +msgid "Removing selected categories..." +msgstr "" + +#: js/prefs.js:1126 +msgid "No categories are selected." +msgstr "" + +#: js/prefs.js:1134 +msgid "Category title:" +msgstr "" + +#: js/prefs.js:1138 +msgid "Creating category..." +msgstr "" + +#: js/prefs.js:1165 +msgid "Feeds without recent updates" +msgstr "" + +#: js/prefs.js:1214 +msgid "Replace current OPML publishing address with a new one?" +msgstr "" + +#: js/prefs.js:1303 +msgid "Clearing feed..." +msgstr "" + +#: js/prefs.js:1323 +msgid "Rescore articles in selected feeds?" +msgstr "" + +#: js/prefs.js:1326 +msgid "Rescoring selected feeds..." +msgstr "" + +#: js/prefs.js:1346 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "" + +#: js/prefs.js:1349 +msgid "Rescoring feeds..." +msgstr "" + +#: js/prefs.js:1366 +msgid "Reset selected labels to default colors?" +msgstr "" + +#: js/prefs.js:1403 +msgid "Settings Profiles" +msgstr "" + +#: js/prefs.js:1412 +msgid "" +"Remove selected profiles? Active and default profiles will not be removed." +msgstr "" + +#: js/prefs.js:1415 +msgid "Removing selected profiles..." +msgstr "" + +#: js/prefs.js:1430 +msgid "No profiles are selected." +msgstr "" + +#: js/prefs.js:1438 js/prefs.js:1491 +msgid "Activate selected profile?" +msgstr "" + +#: js/prefs.js:1454 js/prefs.js:1507 +msgid "Please choose a profile to activate." +msgstr "" + +#: js/prefs.js:1459 +msgid "Creating profile..." +msgstr "" + +#: js/prefs.js:1515 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "" + +#: js/prefs.js:1525 +msgid "Generated URLs cleared." +msgstr "" + +#: js/prefs.js:1616 +msgid "Label Editor" +msgstr "" + +#: js/tt-rss.js:674 +msgid "You can't unsubscribe from the category." +msgstr "" + +#: js/viewfeed.js:113 +msgid "Cancel search" +msgstr "" + +#: js/viewfeed.js:174 +msgid "New articles found, reload feed to continue." +msgstr "" + +#: js/viewfeed.js:448 +msgid "Unstar article" +msgstr "" + +#: js/viewfeed.js:452 +msgid "Star article" +msgstr "" + +#: js/viewfeed.js:506 +msgid "Unpublish article" +msgstr "" + +#: js/viewfeed.js:510 +msgid "Publish article" +msgstr "" + +#: js/viewfeed.js:662 +msgid "%d article selected" +msgid_plural "%d articles selected" +msgstr[0] "" +msgstr[1] "" + +#: js/viewfeed.js:1415 +msgid "No article is selected." +msgstr "" + +#: js/viewfeed.js:1450 +msgid "No articles found to mark" +msgstr "" + +#: js/viewfeed.js:1452 +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "" +msgstr[1] "" + +#: js/viewfeed.js:1967 +msgid "Display article URL" +msgstr "" diff --git a/mobile/article.php b/mobile/article.php deleted file mode 100644 index 2379e93959..0000000000 --- a/mobile/article.php +++ /dev/null @@ -1,29 +0,0 @@ - - diff --git a/mobile/backend.php b/mobile/backend.php deleted file mode 100644 index 85018c5804..0000000000 --- a/mobile/backend.php +++ /dev/null @@ -1,49 +0,0 @@ - - diff --git a/mobile/cat.php b/mobile/cat.php deleted file mode 100644 index b75a4c046c..0000000000 --- a/mobile/cat.php +++ /dev/null @@ -1,27 +0,0 @@ - - diff --git a/mobile/classic/functions.php b/mobile/classic/functions.php deleted file mode 100644 index c7acba79e1..0000000000 --- a/mobile/classic/functions.php +++ /dev/null @@ -1,810 +0,0 @@ -"; - - if ($tags) { - print __("Tags")." - (".__("View feeds").", "; - } else { - print __("Feeds")." - (".__("View tags").", "; - } - - print "".__("Search").", "; - - print "".__("Logout").")"; - print ""; - - print "
      "; - - $owner_uid = $_SESSION["uid"]; - - if (!$tags) { - - /* virtual feeds */ - - if (get_pref($link, 'ENABLE_FEED_CATS')) { - - $collapsed = get_pref($link, "_COLLAPSED_SPECIAL"); - - if ($collapsed == "t" || $collapsed == "1") { - $holder_class = "invisible"; - $ellipsis = "..."; - } else { - $holder_class = "feedCatHolder"; - $ellipsis = ""; - } - - $tmp_category = __("Special"); - - print "
    • - $tmp_category$ellipsis -
    • "; - - print "
      • "; - } - - foreach (array(-4, -3, -1, -2, 0) as $i) { - printMobileFeedEntry($i, "virt", false, false, - false, $link); - } - - if (get_pref($link, 'ENABLE_FEED_CATS')) { - print "
      "; - } - - - $result = db_query($link, "SELECT id,caption FROM - ttrss_labels2 WHERE owner_uid = '$owner_uid' ORDER by caption"); - - if (db_num_rows($result) > 0) { - if (get_pref($link, 'ENABLE_FEED_CATS')) { - - $collapsed = get_pref($link, "_COLLAPSED_LABELS"); - - if ($collapsed == "t" || $collapsed == "1") { - $holder_class = "invisible"; - $ellipsis = "..."; - } else { - $holder_class = "feedCatHolder"; - $ellipsis = ""; - } - - $tmp_category = __("Labels"); - - print "
    • - $tmp_category$ellipsis -
    • "; - - print "
      • "; - } else { -// print "

      • "; - } - } - - while ($line = db_fetch_assoc($result)) { - - $count = getFeedUnread($link, -$line["id"]-11); - - $class = "label"; - - printMobileFeedEntry(-$line["id"]-11, - $class, $line["caption"], $count, false, $link); - - } - - if (db_num_rows($result) > 0) { - if (get_pref($link, 'ENABLE_FEED_CATS')) { - print "
      "; - } - } - - - if (get_pref($link, 'ENABLE_FEED_CATS')) { - $order_by_qpart = "category,title"; - } else { - $order_by_qpart = "title"; - } - - $result = db_query($link, "SELECT ttrss_feeds.*, - ".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated_noms, - (SELECT COUNT(id) FROM ttrss_entries,ttrss_user_entries - WHERE feed_id = ttrss_feeds.id AND - ttrss_user_entries.ref_id = ttrss_entries.id AND - owner_uid = '$owner_uid') AS total, - (SELECT COUNT(id) FROM ttrss_entries,ttrss_user_entries - WHERE feed_id = ttrss_feeds.id AND unread = true - AND ttrss_user_entries.ref_id = ttrss_entries.id - AND owner_uid = '$owner_uid') as unread, - cat_id,last_error, - ttrss_feed_categories.title AS category, - ttrss_feed_categories.collapsed - FROM ttrss_feeds LEFT JOIN ttrss_feed_categories - ON (ttrss_feed_categories.id = cat_id) - WHERE - ttrss_feeds.owner_uid = '$owner_uid' AND parent_feed IS NULL - ORDER BY $order_by_qpart"); - - $actid = $_GET["actid"]; - - /* real feeds */ - - $lnum = 0; - - $category = ""; - - while ($line = db_fetch_assoc($result)) { - if (get_pref($link, 'HIDE_READ_FEEDS') && (int)$line['unread']==0) { - continue; - } - - $feed = db_unescape_string($line["title"]); - $feed_id = $line["id"]; - - $subop = $_GET["subop"]; - - $total = $line["total"]; - $unread = $line["unread"]; - - $rtl_content = sql_bool_to_bool($line["rtl_content"]); - - if ($rtl_content) { - $rtl_tag = "dir=\"RTL\""; - } else { - $rtl_tag = ""; - } - - $tmp_result = db_query($link, - "SELECT id,COUNT(unread) AS unread - FROM ttrss_feeds LEFT JOIN ttrss_user_entries - ON (ttrss_feeds.id = ttrss_user_entries.feed_id) - WHERE parent_feed = '$feed_id' AND unread = true - GROUP BY ttrss_feeds.id"); - - if (db_num_rows($tmp_result) > 0) { - while ($l = db_fetch_assoc($tmp_result)) { - $unread += $l["unread"]; - } - } - - $cat_id = $line["cat_id"]; - - $tmp_category = $line["category"]; - - if (!$tmp_category) { - $tmp_category = "Uncategorized"; - } - - // $class = ($lnum % 2) ? "even" : "odd"; - - if ($line["last_error"]) { - $class = "error"; - } else { - $class = "feed"; - } - - if ($category != $tmp_category && get_pref($link, 'ENABLE_FEED_CATS')) { - - if ($category) { - print "
    "; - } - - $category = $tmp_category; - - $collapsed = $line["collapsed"]; - - // workaround for NULL category - if ($category == "Uncategorized") { - $collapsed = get_pref($link, "_COLLAPSED_UNCAT"); - } - - if ($collapsed == "t" || $collapsed == "1") { - $holder_class = "invisible"; - $ellipsis = "..."; - } else { - $holder_class = "feedCatHolder"; - $ellipsis = ""; - } - - if ($cat_id) { - $cat_id_qpart = "cat_id = '$cat_id'"; - } else { - $cat_id_qpart = "cat_id IS NULL"; - } - - $cat_id = sprintf("%d", $cat_id); - $cat_unread = getCategoryUnread($link, $cat_id); - - if ($cat_unread > 0) { - $catctr_class = ""; - } else { - $catctr_class = "invisible"; - } - - print "
  • - $tmp_category - - ($cat_unread)$ellipsis -
  • "; - - print "
  • -
      "; - } - - printMobileFeedEntry($feed_id, $class, $feed, $unread, - false, $link, $rtl_content); - - ++$lnum; - } - - } else { - // tags - - $result = db_query($link, "SELECT tag_name,SUM((SELECT COUNT(int_id) - FROM ttrss_user_entries WHERE int_id = post_int_id - AND unread = true)) AS count FROM ttrss_tags - WHERE owner_uid = '".$_SESSION['uid']."' GROUP BY tag_name ORDER BY tag_name"); - - $tags = array(); - - while ($line = db_fetch_assoc($result)) { - $tags[$line["tag_name"]] += $line["count"]; - } - - foreach (array_keys($tags) as $tag) { - - $unread = $tags[$tag]; - - $class = "tag"; - - printMobileFeedEntry($tag, $class, $tag, $unread, - "../images/tag.png", $link); - - } - - - } - } - - function printMobileFeedEntry($feed_id, $class, $feed_title, $unread, $icon_file, $link, - $rtl_content = false) { - - if (!$feed_title) $feed_title = getFeedTitle($link, $feed_id, false); - if (!$unread) $unread = getFeedUnread($link, $feed_id); - - if ($unread > 0) $class .= "Unread"; - - if (!$icon_file) $icon_file = "../../" . getFeedIcon($feed_id); - - if (file_exists($icon_file) && filesize($icon_file) > 0) { - $feed_icon = ""; - } else { - $feed_icon = ""; - } - - if ($rtl_content) { - $rtl_tag = "dir=\"rtl\""; - } else { - $rtl_tag = "dir=\"ltr\""; - } - - $feed = "$feed_title"; - - print "
    • "; - if (get_pref($link, 'ENABLE_FEED_ICONS')) { - print "$feed_icon"; - } - - print "$feed "; - - if ($unread != 0) { - print "($unread)"; - } - - print "
    • "; - - } - - function render_headlines($link) { - - $feed = db_escape_string($_GET["id"]); - $limit = db_escape_string($_GET["limit"]); - $view_mode = db_escape_string($_GET["viewmode"]); - $cat_view = db_escape_string($_GET["cat"]); - $subop = $_GET["subop"]; - $catchup_op = $_GET["catchup_op"]; - - if (!$view_mode) { - if ($_SESSION["mobile:viewmode"]) { - $view_mode = $_SESSION["mobile:viewmode"]; - } else { - $view_mode = "adaptive"; - } - } - - $_SESSION["mobile:viewmode"] = $view_mode; - - if (!$limit) $limit = 30; - if (!$feed) $feed = 0; - - if (preg_match("/^-?[0-9][0-9]*$/", $feed) != false) { - - $result = db_query($link, "SELECT rtl_content FROM ttrss_feeds - WHERE id = '$feed' AND owner_uid = " . $_SESSION["uid"]); - - if (db_num_rows($result) == 1) { - $rtl_content = sql_bool_to_bool(db_fetch_result($result, 0, "rtl_content")); - } else { - $rtl_content = false; - } - - if ($rtl_content) { - $rtl_tag = "dir=\"RTL\""; - } else { - $rtl_tag = ""; - } - } else { - $rtl_content = false; - $rtl_tag = ""; - } - - print "
      "; - - if ($subop == "ForceUpdate" && sprintf("%d", $feed) > 0) { - update_generic_feed($link, $feed, $cat_view, true); - } - - if ($subop == "MarkAllRead" || $catchup_op == "feed") { - catchup_feed($link, $feed, $cat_view); - } - - if ($catchup_op == "selection") { - if (is_array($_GET["sel_ids"])) { - $ids_to_mark = array_keys($_GET["sel_ids"]); - if ($ids_to_mark) { - foreach ($ids_to_mark as $id) { - db_query($link, "UPDATE ttrss_user_entries SET - unread = false,last_read = NOW() - WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); - } - } - } - } - - if ($subop == "MarkPageRead" || $catchup_op == "page") { - $ids_to_mark = $_SESSION["last_page_ids.$feed"]; - - if ($ids_to_mark) { - - foreach ($ids_to_mark as $id) { - db_query($link, "UPDATE ttrss_user_entries SET - unread = false,last_read = NOW() - WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); - } - } - } - - - /// START ///////////////////////////////////////////////////////////////////////////////// - - $search = db_escape_string($_GET["query"]); - $search_mode = db_escape_string($_GET["search_mode"]); - $match_on = db_escape_string($_GET["match_on"]); - - if (!$match_on) { - $match_on = "both"; - } - - $real_offset = $offset * $limit; - - if ($_GET["debug"]) $timing_info = print_checkpoint("H0", $timing_info); - - $qfh_ret = queryFeedHeadlines($link, $feed, $limit, $view_mode, $cat_view, - $search, $search_mode, $match_on, false, $real_offset); - - if ($_GET["debug"]) $timing_info = print_checkpoint("H1", $timing_info); - - $result = $qfh_ret[0]; - $feed_title = $qfh_ret[1]; - $feed_site_url = $qfh_ret[2]; - $last_error = $qfh_ret[3]; - - /// STOP ////////////////////////////////////////////////////////////////////////////////// - - if (!$result) { - print "
      ". - __("Could not display feed (query failed). Please check label match syntax or local configuration."). - "
      "; - return; - } - - print "
      "; - # if (!$cat_view && file_exists("../icons/$feed.ico") && filesize("../icons/$feed.ico") > 0) { - # print ""; - # } - - print "$feed_title ("; - print "".__("Back").", "; - print "".__("Search").", "; - print "".__("Update").""; - -# print "Mark as read: "; -# print "Page, "; -# print "Feed"; - - print ")"; - - print " " . __('View:'); - - print "
      "; - - /* print ""; */ - - $sel_values = array( - "adaptive" => __("Adaptive"), - "all_articles" => __("All Articles"), - "unread" => __("Unread"), - "marked" => __("Starred")); - - print_select_hash("viewmode", $view_mode, $sel_values); - - print " - - - "; - print "
      "; - - print "
      "; - - if (db_num_rows($result) > 0) { - - print "
      "; - print ""; - print ""; - print ""; - - print "
        "; - - $page_art_ids = array(); - - $lnum = 0; - - error_reporting (DEFAULT_ERROR_LEVEL); - - $num_unread = 0; - - while ($line = db_fetch_assoc($result)) { - - $class = ($lnum % 2) ? "even" : "odd"; - - $id = $line["id"]; - $feed_id = $line["feed_id"]; - - array_push($page_art_ids, $id); - - if ($line["last_read"] == "" && - ($line["unread"] != "t" && $line["unread"] != "1")) { - - $update_pic = "\"".__("Updated")."\""; - } else { - $update_pic = "\"".__("Updated")."\""; - } - - if ($line["unread"] == "t" || $line["unread"] == "1") { - $class .= "Unread"; - ++$num_unread; - $is_unread = true; - } else { - $is_unread = false; - } - - if ($line["marked"] == "t" || $line["marked"] == "1") { - $marked_pic = "\"S\""; - } else { - $marked_pic = "\"s\""; - } - - if ($line["published"] == "t" || $line["published"] == "1") { - $published_pic = "\"P\""; - } else { - $published_pic = "\"p\""; - } - - $content_link = "" . - $line["title"] . ""; - - if (get_pref($link, 'HEADLINES_SMART_DATE')) { - $updated_fmt = smart_date_time(strtotime($line["updated"])); - } else { - $short_date = get_pref($link, 'SHORT_DATE_FORMAT'); - $updated_fmt = date($short_date, strtotime($line["updated"])); - } - - print "
      • "; - - print ""; - - print "$marked_pic"; - print "$published_pic"; - - print $content_link; - - if ($line["feed_title"]) { - print " (". - $line["feed_title"].")"; - } - - print " ($updated_fmt)"; - - print "
      • "; - - - ++$lnum; - } - - print "
      "; - - print "
      "; - - $_SESSION["last_page_ids.$feed"] = $page_art_ids; - -/* print "Page, "; - print "Feed
      "; */ - - print "Select: - ".__("All").", - ".__("Unread").", - ".__("None").", - ".__("Invert").""; - - print " "; - - print " - - "; - - print "
      "; - - } else { - print "
      No articles found.
      "; - } - - } - - function render_article($link) { - - $id = db_escape_string($_GET["id"]); - $feed_id = db_escape_string($_GET["feed"]); - $ret_feed_id = db_escape_string($_GET["ret_feed"]); - $cat_view = db_escape_string($_GET["cat"]); - - $result = db_query($link, "SELECT rtl_content FROM ttrss_feeds - WHERE id = '$feed_id' AND owner_uid = " . $_SESSION["uid"]); - - if (db_num_rows($result) == 1) { - $rtl_content = sql_bool_to_bool(db_fetch_result($result, 0, "rtl_content")); - } else { - $rtl_content = false; - } - - if ($rtl_content) { - $rtl_tag = "dir=\"RTL\""; - $rtl_class = "RTL"; - } else { - $rtl_tag = ""; - $rtl_class = ""; - } - - $result = db_query($link, "UPDATE ttrss_user_entries - SET unread = false,last_read = NOW() - WHERE ref_id = '$id' AND feed_id = '$feed_id' AND owner_uid = " . $_SESSION["uid"]); - - $result = db_query($link, "SELECT title,link,content,feed_id,comments,int_id, - marked,published, - ".SUBSTRING_FOR_DATE."(updated,1,16) as updated, - (SELECT icon_url FROM ttrss_feeds WHERE id = feed_id) as icon_url, - num_comments, - author - FROM ttrss_entries,ttrss_user_entries - WHERE id = '$id' AND ref_id = id"); - - if ($result) { - - $line = db_fetch_assoc($result); - - $num_comments = $line["num_comments"]; - $entry_comments = ""; - - if ($num_comments > 0) { - if ($line["comments"]) { - $comments_url = $line["comments"]; - } else { - $comments_url = $line["link"]; - } - $entry_comments = "$num_comments comments"; - } else { - if ($line["comments"] && $line["link"] != $line["comments"]) { - $entry_comments = "comments"; - } - } - - $tmp_result = db_query($link, "SELECT DISTINCT tag_name FROM - ttrss_tags WHERE post_int_id = " . $line["int_id"] . " - ORDER BY tag_name"); - - $tags_str = ""; - $f_tags_str = ""; - - $num_tags = 0; - - while ($tmp_line = db_fetch_assoc($tmp_result)) { - $num_tags++; - $tag = $tmp_line["tag_name"]; - $tag_str = "$tag, "; - $tags_str .= $tag_str; - } - - $tags_str = preg_replace("/, $/", "", $tags_str); - - $parsed_updated = date(get_pref($link, 'SHORT_DATE_FORMAT'), - strtotime($line["updated"])); - - print "
      "; - - # if (file_exists("../icons/$feed_id.ico") && filesize("../icons/$feed_id.ico") > 0) { - # print ""; - # } - - if (!$cat_view) { - $feed_title = getFeedTitle($link, $ret_feed_id); - } else { - $feed_title = getCategoryTitle($link, $ret_feed_id); - $feed_title_native = getFeedTitle($link, $feed_id); - } - - if ($feed_title_native) { - $feed_link = "$feed_title_native"; - $feed_link .= " in - $feed_title"; - } else { - $feed_link = "$feed_title"; - } - - $feedlist = "".__('Back to feedlist').""; - - print "" . - truncate_string($line["title"], 30) . ""; - print " $parsed_updated ($feed_link, $feedlist)"; - print "
      "; - - if ($num_tags > 0) { - print "
      ".__("Tags:")." $tags_str
      "; - } - - if ($line["marked"] == "t" || $line["marked"] == "1") { - $marked_pic = ""; - } else { - $marked_pic = ""; - } - - if ($line["published"] == "t" || $line["published"] == "1") { - $published_pic = ""; - } else { - $published_pic = ""; - } - - - print "
      "; - print "$marked_pic"; - print "$published_pic"; - // Mark unread - print ""; - print "
      "; - - print sanitize_rss($link, $line["content"], true);; - - } - - print ""; - } - - function render_search_form($link, $active_feed_id = false, $is_cat = false) { - - print "
      "; - - print __("Search")." - (".__("Go back").")
      "; - - print "
      "; - - print ""; - print ""; - print ""; - - print ""; - - print ""; - - print "
      ".__('Search:').""; - print "
      ".__('Where:').""; - - print "
      ".__('Match on:').""; - - $search_fields = array( - "title" => __("Title"), - "content" => __("Content"), - "both" => __("Title or content")); - - print_select_hash("match_on", 3, $search_fields); - - print "
      "; - - print ""; - - print "
      "; - - print "
      "; - } - - function toggleMarked($link, $ts_id) { - $result = db_query($link, "UPDATE ttrss_user_entries SET marked = NOT marked - WHERE ref_id = '$ts_id' AND owner_uid = " . $_SESSION["uid"]); - } - - function togglePublished($link, $tp_id) { - $result = db_query($link, "UPDATE ttrss_user_entries SET published = NOT published - WHERE ref_id = '$tp_id' AND owner_uid = " . $_SESSION["uid"]); - } - - function markUnread($link, $mu_id) { - $result = db_query($link, "UPDATE ttrss_user_entries SET unread = true - WHERE ref_id = '$mu_id' AND owner_uid = " . $_SESSION["uid"]); - } - -?> diff --git a/mobile/classic/index.php b/mobile/classic/index.php deleted file mode 100644 index 21f1701063..0000000000 --- a/mobile/classic/index.php +++ /dev/null @@ -1,118 +0,0 @@ - - - - Tiny Tiny RSS - - - - - - - - - - - -
      - -
      - - - diff --git a/mobile/classic/login_form.php b/mobile/classic/login_form.php deleted file mode 100644 index bf4f77eac8..0000000000 --- a/mobile/classic/login_form.php +++ /dev/null @@ -1,79 +0,0 @@ - - - Tiny Tiny RSS : Login - - - - - - - - - - - - -
      -
      Tiny Tiny RSS
      - -
      - - - - -
      - - - - - - - - - - -
      - -
      - -
      -
      -
      - - - - diff --git a/mobile/classic/logout.php b/mobile/classic/logout.php deleted file mode 100644 index b20cfc9a69..0000000000 --- a/mobile/classic/logout.php +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/mobile/classic/mobile.css b/mobile/classic/mobile.css deleted file mode 100644 index 786639efdd..0000000000 --- a/mobile/classic/mobile.css +++ /dev/null @@ -1,216 +0,0 @@ -body { - padding : 0px; - margin : 0px; - font-family : sans-serif; -} - -h1 { - font-size : medium; -} - -h2 { - font-size : medium; - font-weight : bold; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #88b0ff; -} - -h3 { - font-size : medium; - font-weight : bold; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #e0e0e0; -} - -#heading { - font-size : small; - - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #f0f0f0; - - color : #88b0ff; - font-weight : bold; -} - -#content { - background : white; -} - -#footer { - font-size : x-small; - color : gray; - margin-top : 5px; -} - -form { - padding : 0px; - margin : 0px; -} - -li.feedCatHolder { - display : inline; -} - -ul.feedList { - list-style-type : none; - margin : 0px; - padding : 0px; - -} - -ul.feedList li.feedCat { - margin : 0px; - padding : 0px; - color : #707070; -} - -ul.feedList li.feedCat a { - color : #707070; -} - -ul.feedList li.feedCat a:hover { - color : #4684ff; -} - -ul.feedCatList { - list-style-type : none; - margin : 0px 0px 0px 1em; - padding : 0px; -} - -ul.feedCatList li { - margin : 0px; - padding : 0px; - color : black; -} - -ul.feedList li { - margin : 0px; -} - -hr { - border-width : 0px 0px 1px 0px; - border-style : dashed; - border-color : #e0e0e0; -} - -ul.headlines a, ul.feedList a { - color : black; -} - -a { - color : #4684ff; - text-decoration : none; -} - -a:hover { - color : black; -} - -ul.feedList img, img.tinyFeedIcon { - margin : 0px 3px 0px 0px; - width : 16px; - height : 16px; - border-width : 0px; -} - -ul.feedlist li.feedUnread, -ul.feedlist li.errorUnread, -ul.feedlist li.labelUnread, -ul.feedlist li.virtUnread, -ul.feedlist li.tagUnread { - font-weight : bold; -} - -.even { -/* background-color : #9bbdff; */ - border-width : 0px 0px 1px 0px; - border-color : #88b0ff; - border-style : solid; - background-color : #cbddff; -} - -.odd { - border-width : 0px 0px 1px 0px; - border-color : #88b0ff; - border-style : solid; -} - -.evenUnread { - border-width : 0px 0px 1px 0px; - border-color : #88b0ff; - border-style : solid; -/* background-color : #9bbdff; */ - font-weight : bold; - background-color : #cbddff; -} - -.oddUnread { - border-width : 0px 0px 1px 0px; - border-color : #88b0ff; - border-style : solid; - font-weight : bold; -} - -.evenSelected, .oddSelected, .evenUnreadSelected, .oddUnreadSelected { - background-color : #fff7d5; - border-width : 0px 0px 1px 0px; - border-color : #88b0ff; - border-style : solid; -} - -.evenUnreadSelected, .oddUnreadSelected { - font-weight : bold; -} - -.invisible { - display : none; -} - -ul.headlines { - list-style-type : none; - margin : 0px; - padding : 0px; -} - -ul.headlines span.hlUpdated { - color : gray; -} - -ul.headlines img.feedIcon { - width : 25px; - text-align : center; -} - -ul.headlines img.marked { - border-width : 0px; -} - -div.postStarOps img.marked { - border-width : 0px; -} - -div.postTags { - color : gray; - font-size : small; -} - -div.footerAddon { - font-size : small; -} - -.loginError { - color : red; - margin : 0.5em; -} - -form.searchForm { - margin : 5px; -} - -div.postStarOps { - float : right; -} diff --git a/mobile/classic/mobile.js b/mobile/classic/mobile.js deleted file mode 100644 index 599e007253..0000000000 --- a/mobile/classic/mobile.js +++ /dev/null @@ -1,94 +0,0 @@ -function toggleSelectRow(cb, id) { - try { - - var row = document.getElementById("HROW-" + id); - var checked = cb.checked; - if (row) { - var unread = row.className.match("Unread"); - var new_classname = row.className; - - new_classname = new_classname.replace("Selected", ""); - new_classname = new_classname.replace("Unread", ""); - - if (unread) new_classname = new_classname + "Unread"; - if (checked) new_classname = new_classname + "Selected"; - - row.className = new_classname; - } - } catch (e) { - exception_error("toggleSelectRow", e); - } -} - -function selectHeadlines(mode) { - try { - - var cboxes = document.getElementsByTagName("INPUT"); - - for (var i = 0; i < cboxes.length; i++) { - if (cboxes[i].id && cboxes[i].id.match("HSCB-")) { - var row_id = cboxes[i].id.replace("HSCB-", "") - var row = document.getElementById("HROW-" + row_id); - - if (row) { - - if (mode == 1) { - cboxes[i].checked = true; - toggleSelectRow(cboxes[i], row_id); - } - - if (mode == 2) { - - var unread = row.className.match("Unread"); - - if (unread) { - cboxes[i].checked = true; - } else { - cboxes[i].checked = false; - } - } - - if (mode == 3) { - cboxes[i].checked = false; - } - - if (mode == 4) { - cboxes[i].checked = !cboxes[i].checked; - } - - toggleSelectRow(cboxes[i], row_id); - - } - - } - - } - - } catch (e) { - exception_error("selectHeadlines", e); - } -} - -function exception_error(location, e, silent) { - var msg; - - if (e.fileName) { - var base_fname = e.fileName.substring(e.fileName.lastIndexOf("/") + 1); - - msg = "Exception: " + e.name + ", " + e.message + - "\nFunction: " + location + "()" + - "\nLocation: " + base_fname + ":" + e.lineNumber; - - } else if (e.description) { - msg = "Exception: " + e.description + "\nFunction: " + location + "()"; - } else { - msg = "Exception: " + e + "\nFunction: " + location + "()"; - } - - debug("EXCEPTION: " + msg + ""); - - if (!silent) { - alert(msg); - } -} - diff --git a/mobile/feed.php b/mobile/feed.php deleted file mode 100644 index 966e1b4404..0000000000 --- a/mobile/feed.php +++ /dev/null @@ -1,30 +0,0 @@ - - diff --git a/mobile/functions.php b/mobile/functions.php deleted file mode 100644 index c1bb61c54a..0000000000 --- a/mobile/functions.php +++ /dev/null @@ -1,498 +0,0 @@ - 0; - } - - function render_flat_feed_list($link, $offset) { - $owner_uid = $_SESSION["uid"]; - $limit = 0; - - if (!$offset) $offset = 0; - - if (mobile_get_pref($link, "SORT_FEEDS_UNREAD")) { - $order_by = "unread DESC, title"; - } else { - $order_by = "title"; - } - - if ($limit > 0) { - $limit_qpart = "LIMIT $limit OFFSET $offset"; - } else { - $limit_qpart = ""; - } - - $result = db_query($link, "SELECT id, - title, - (SELECT COUNT(id) FROM ttrss_entries,ttrss_user_entries - WHERE feed_id = ttrss_feeds.id AND unread = true - AND ttrss_user_entries.ref_id = ttrss_entries.id - AND owner_uid = '$owner_uid') AS unread - FROM ttrss_feeds - WHERE - ttrss_feeds.owner_uid = '$owner_uid' AND - parent_feed IS NULL - ORDER BY $order_by $limit_qpart"); - - if (!$offset) print '
        '; - - - // print "
      • ".__('Actions...')."
      • "; - - $num_feeds = 0; - - while ($line = db_fetch_assoc($result)) { - $id = $line["id"]; - $unread = $line["unread"]; - - // $unread = rand(0, 100); - - if ($unread > 0) { - $line["title"] = $line["title"] . " ($unread)"; - $class = ''; - } else { - $class = 'oldItem'; - } - - if (mobile_feed_has_icon($id)) { - $icon_url = "../".ICONS_URL."/$id.ico"; - } else { - $icon_url = "../images/blank_icon.gif"; - } - - if ($unread > 0 || !mobile_get_pref($link, "HIDE_READ")) { - print "
      • " . - "". - $line["title"] . "
      • "; - } - - ++$num_feeds; - } - -/* $next_offset = $offset + $num_feeds; - - print "
      • Show more feeds...
      • "; */ - - if (!$offset) print "
      "; - - } - - function render_category($link, $cat_id) { - $owner_uid = $_SESSION["uid"]; - - if ($cat_id >= 0) { - - if ($cat_id != 0) { - $cat_query = "cat_id = '$cat_id'"; - } else { - $cat_query = "cat_id IS NULL"; - } - - if (mobile_get_pref($link, "SORT_FEEDS_UNREAD")) { - $order_by = "unread DESC, title"; - } else { - $order_by = "title"; - } - - $result = db_query($link, "SELECT id, - title, - (SELECT COUNT(id) FROM ttrss_entries,ttrss_user_entries - WHERE feed_id = ttrss_feeds.id AND unread = true - AND ttrss_user_entries.ref_id = ttrss_entries.id - AND owner_uid = '$owner_uid') as unread - FROM ttrss_feeds - WHERE - ttrss_feeds.owner_uid = '$owner_uid' AND - parent_feed IS NULL AND - $cat_query - ORDER BY $order_by"); - - $title = getCategoryTitle($link, $cat_id); - - print "
        "; - - // print "
      • ".__('Actions...')."
      • "; - - while ($line = db_fetch_assoc($result)) { - $id = $line["id"]; - $unread = $line["unread"]; - - // $unread = rand(0, 100); - - if ($unread > 0) { - $line["title"] = $line["title"] . " ($unread)"; - $class = ''; - } else { - $class = 'oldItem'; - } - - if (mobile_feed_has_icon($id)) { - $icon_url = "../".ICONS_URL."/$id.ico"; - } else { - $icon_url = "../images/blank_icon.gif"; - } - - if ($unread > 0 || !mobile_get_pref($link, "HIDE_READ")) { - print "
      • " . - "". - $line["title"] . "
      • "; - } - } - - print "
      "; - } else if ($cat_id == -1) { - - $title = __('Special'); - - print "
        "; - - foreach (array(-4, -3, -1, -2, 0) as $id) { - $title = getFeedTitle($link, $id); - $unread = getFeedUnread($link, $id, false); - $icon = getFeedIcon($id); - - if ($unread > 0) { - $title = $title . " ($unread)"; - $class = ''; - } else { - $class = 'oldItem'; - } - - if ($unread > 0 || !mobile_get_pref($link, "HIDE_READ")) { - print "
      • - - $title
      • "; - } - } - - print "
      "; - } else if ($cat_id == -2) { - - $title = __('Labels'); - - print "
        "; - - $result = db_query($link, "SELECT id, caption FROM ttrss_labels2 - WHERE owner_uid = '$owner_uid'"); - - $label_data = array(); - - while ($line = db_fetch_assoc($result)) { - - $id = -$line["id"] - 11; - - $unread = getFeedUnread($link, $id); - $title = $line["caption"]; - - if ($unread > 0) { - $title = $title . " ($unread)"; - $class = ''; - } else { - $class = 'oldItem'; - } - - if ($unread > 0 || !mobile_get_pref($link, "HIDE_READ")) { - print "
      • - $title
      • "; - } - } - print "
      "; - } - } - - function render_categories_list($link) { - $owner_uid = $_SESSION["uid"]; - - print '
        '; - - -// print "
      • Search...
      • "; - - foreach (array(-1, -2) as $id) { - $title = getCategoryTitle($link, $id); - $unread = getFeedUnread($link, $id, true); - if ($unread > 0) { - $title = $title . " ($unread)"; - $class = ''; - } else { - $class = 'oldItem'; - } - - print "
      • $title
      • "; - } - - $result = db_query($link, "SELECT - ttrss_feed_categories.id, - ttrss_feed_categories.title, - COUNT(ttrss_feeds.id) AS num_feeds - FROM ttrss_feed_categories, ttrss_feeds - WHERE ttrss_feed_categories.owner_uid = $owner_uid - AND ttrss_feed_categories.id = cat_id - GROUP BY ttrss_feed_categories.id, - ttrss_feed_categories.title - ORDER BY ttrss_feed_categories.title"); - - while ($line = db_fetch_assoc($result)) { - - if ($line["num_feeds"] > 0) { - - $unread = getFeedUnread($link, $line["id"], true); - $id = $line["id"]; - - if ($unread > 0) { - $line["title"] = $line["title"] . " ($unread)"; - $class = ''; - } else { - $class = 'oldItem'; - } - - if ($unread > 0 || !mobile_get_pref($link, "HIDE_READ")) { - print "
      • " . - $line["title"] . "
      • "; - } - } - } - - - $result = db_query($link, "SELECT COUNT(*) AS nf FROM ttrss_feeds WHERE - cat_id IS NULL and owner_uid = '$owner_uid'"); - - $num_feeds = db_fetch_result($result, 0, "nf"); - - if ($num_feeds > 0) { - $unread = getFeedUnread($link, 0, true); - $title = "Uncategorized"; - - if ($unread > 0) { - $title = "$title ($unread)"; - $class = ''; - } else { - $class = 'oldItem'; - } - - if ($unread > 0 || !mobile_get_pref($link, "HIDE_READ")) { - print "
      • $title
      • "; - } - } - - print "
      "; - } - - function render_headlines_list($link, $feed_id, $cat_id, $offset, $search) { - - $feed_id = $feed_id; - $limit = 15; - $filter = ''; - $is_cat = false; - $view_mode = 'adaptive'; - - if ($search) { - $search_mode = 'this_feed'; - $match_on = 'both'; - } else { - $search_mode = ''; - $match_on = ''; - } - - $qfh_ret = queryFeedHeadlines($link, $feed_id, $limit, - $view_mode, $is_cat, $search, $search_mode, $match_on, false, $offset); - - $result = $qfh_ret[0]; - $feed_title = $qfh_ret[1]; - - if (!$offset) { - - print "
      - - - - -
      -

      Search

      - Cancel - Search - - - -
      -
      "; - - if ($cat_id) { - $cat_title = getCategoryTitle($link, $cat_id); - - print "
        "; - } else { - print "
          "; - } - - print "
        • Search...
        • "; - } - - $num_headlines = 0; - - while ($line = db_fetch_assoc($result)) { - $id = $line["id"]; - $real_feed_id = $line["feed_id"]; - - if (sql_bool_to_bool($line["unread"])) { - $class = ''; - } else { - $class = 'oldItem'; - } - - if (mobile_feed_has_icon($real_feed_id)) { - $icon_url = "../".ICONS_URL."/$real_feed_id.ico"; - } else { - $icon_url = "../images/blank_icon.gif"; - } - - print "
        • - "; - print $line["title"]; - print "
        • "; - - ++$num_headlines; - - } - - if ($num_headlines == 0 && $search) { - $articles_url = "feed.php?id=$feed_id&cat=$cat_id&skip=$next_offset"; - - print "
        • " . __("Nothing found (click to reload feed).") . "
        • "; - - } - -// print "Next $limit articles..."; - - $next_offset = $offset + $num_headlines; - $num_unread = getFeedUnread($link, $feed_id, $is_cat); - - /* FIXME needs normal implementation */ - - if ($num_headlines > 0 && ($num_unread == 0 || $num_unread > $next_offset)) { - - $articles_url = "feed.php?id=$feed_id&cat=$cat_id&skip=$next_offset". - "&search=$search"; - - print "
        • Get more articles...
        • "; - } - - if (!$offset) print "
        "; - - } - - function render_article($link, $id, $feed_id, $cat_id) { - - $query = "SELECT title,link,content,feed_id,comments,int_id, - marked,unread,published, - ".SUBSTRING_FOR_DATE."(updated,1,16) as updated, - author - FROM ttrss_entries,ttrss_user_entries - WHERE id = '$id' AND ref_id = id AND owner_uid = " . - $_SESSION["uid"] ; - - $result = db_query($link, $query); - - if (db_num_rows($result) != 0) { - - $line = db_fetch_assoc($result); - - $tmp_result = db_query($link, "UPDATE ttrss_user_entries - SET unread = false,last_read = NOW() - WHERE ref_id = '$id' - AND owner_uid = " . $_SESSION["uid"]); - - if (get_pref($link, 'HEADLINES_SMART_DATE')) { - $updated_fmt = smart_date_time(strtotime($line["updated"])); - } else { - $short_date = get_pref($link, 'SHORT_DATE_FORMAT'); - $updated_fmt = date($short_date, strtotime($line["updated"])); - } - - $title = $line["title"]; - $article_link = $line["link"]; - - $feed_title = getFeedTitle($link, $feed_id, false); - - print "
        "; - - print "

        $title

        "; - - print "
        "; - -/* print "
        "; - print ""; - print "
        "; */ - - $is_starred = (sql_bool_to_bool($line["marked"])) ? "true" : "false"; - $is_published = (sql_bool_to_bool($line["published"])) ? "true" : "false"; - - print "
        "; - print ""; - print ""; - print "
        "; - - print "
        "; - - $content = sanitize_rss($link, $line["content"]); - $content = preg_replace("/href=/i", "target=\"_blank\" href=", $content); - - if (!mobile_get_pref($link, "SHOW_IMAGES")) { - $content = preg_replace('/]+>/is', '', $content); - } - - print "

        $content

        "; - - print "
        "; - - print "
        - -
        ONOFF
        -
        "; - - print "
        - -
        ONOFF
        -
        "; - - print "
        "; - - print "
        "; - - } - } -?> diff --git a/mobile/home.php b/mobile/home.php deleted file mode 100644 index 2830f5530b..0000000000 --- a/mobile/home.php +++ /dev/null @@ -1,31 +0,0 @@ - diff --git a/mobile/index.php b/mobile/index.php deleted file mode 100644 index bcdfe23d1a..0000000000 --- a/mobile/index.php +++ /dev/null @@ -1,87 +0,0 @@ - - - - - -Tiny Tiny RSS - - - - - - - - - - - - - -
        -

        - - Preferences -
        - - - - - diff --git a/mobile/login_form.php b/mobile/login_form.php deleted file mode 100644 index feebe70ec5..0000000000 --- a/mobile/login_form.php +++ /dev/null @@ -1,53 +0,0 @@ - - - - -Tiny Tiny RSS - - - - - - - - - - - - - -
        -

        - - -
        - -
        - -
        - - - -
        - - -
        - -
        - - -
        - -
        - -
        - - - - diff --git a/mobile/logout.php b/mobile/logout.php deleted file mode 100644 index b9cadaa5cb..0000000000 --- a/mobile/logout.php +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/mobile/mobile.js b/mobile/mobile.js deleted file mode 100644 index 669e63d091..0000000000 --- a/mobile/mobile.js +++ /dev/null @@ -1,60 +0,0 @@ -var backend = "backend.php"; - -function toggleMarked(id, elem) { - - var toggled = false; - - if (elem.getAttribute("toggled") == "true") { - toggled = 1; - } else { - toggled = 0; - } - - var query = "?op=toggleMarked&id=" + id + "&mark=" + toggled; - - new Ajax.Request(backend, { - parameters: query, - onComplete: function (transport) { - // - } }); -} - -function togglePublished(id, elem) { - - var toggled = false; - - if (elem.getAttribute("toggled") == "true") { - toggled = 1; - } else { - toggled = 0; - } - - var query = "?op=togglePublished&id=" + id + "&mark=" + toggled; - - new Ajax.Request(backend, { - parameters: query, - onComplete: function (transport) { - // - } }); - -} - -function setPref(elem) { - var toggled = false; - var id = elem.id; - - if (elem.getAttribute("toggled") == "true") { - toggled = 1; - } else { - toggled = 0; - } - - var query = "?op=setPref&id=" + id + "&to=" + toggled; - - new Ajax.Request(backend, { - parameters: query, - onComplete: function (transport) { - // - } }); - -} diff --git a/mobile/prefs.php b/mobile/prefs.php deleted file mode 100644 index 08d6d1b559..0000000000 --- a/mobile/prefs.php +++ /dev/null @@ -1,49 +0,0 @@ - - -
        - -
        - -
        - -
        ">
        -
        - -
        - -
        ">
        -
        - -
        - -
        ">
        -
        - -
        - -
        ">
        -
        - -
        diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php deleted file mode 100644 index b21e161e41..0000000000 --- a/modules/backend-rpc.php +++ /dev/null @@ -1,983 +0,0 @@ -"; - - foreach ($ids as $id) { - $result = db_query($link, "DELETE FROM ttrss_archived_feeds WHERE - (SELECT COUNT(*) FROM ttrss_user_entries - WHERE orig_feed_id = '$id') = 0 AND - id = '$id' AND owner_uid = ".$_SESSION["uid"]); - - $rc = db_affected_rows($link, $result); - - print ""; - - } - - print ""; - - return; - } - - if ($subop == "addfeed") { - - $feed = db_escape_string($_REQUEST['feed']); - $cat = db_escape_string($_REQUEST['cat']); - $login = db_escape_string($_REQUEST['login']); - $pass = db_escape_string($_REQUEST['pass']); - - $rc = subscribe_to_feed($link, $feed, $cat, $login, $pass); - - print ""; - print ""; - print ""; - - return; - - } - - if ($subop == "togglepref") { - print ""; - - $key = db_escape_string($_REQUEST["key"]); - - set_pref($link, $key, !get_pref($link, $key)); - - $value = get_pref($link, $key); - - print ""; - - print ""; - - return; - } - - if ($subop == "setpref") { - print ""; - - $key = db_escape_string($_REQUEST["key"]); - $value = db_escape_string($_REQUEST["value"]); - - set_pref($link, $key, $value); - - print ""; - - print ""; - - return; - } - - if ($subop == "getAllCounters") { - print ""; - print ""; - - $omode = $_REQUEST["omode"]; - - getAllCounters($link, $omode); - print ""; - print_runtime_info($link); - print ""; - - return; - } - - if ($subop == "mark") { - $mark = $_REQUEST["mark"]; - $id = db_escape_string($_REQUEST["id"]); - - if ($mark == "1") { - $mark = "true"; - } else { - $mark = "false"; - } - - // FIXME this needs collision testing - - $result = db_query($link, "UPDATE ttrss_user_entries SET marked = $mark - WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); - - print ""; - getGlobalCounters($link); - getVirtCounters($link); - getLabelCounters($link); - if (get_pref($link, 'ENABLE_FEED_CATS')) { - getCategoryCounters($link); - } - print ""; - - return; - } - - if ($subop == "delete") { - $ids = db_escape_string($_REQUEST["ids"]); - - $result = db_query($link, "DELETE FROM ttrss_user_entries - WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]); - - print ""; - getGlobalCounters($link); - getVirtCounters($link); - if (get_pref($link, 'ENABLE_FEED_CATS')) { - getCategoryCounters($link); - } - print ""; - - return; - } - - if ($subop == "unarchive") { - $ids = db_escape_string($_REQUEST["ids"]); - - $result = db_query($link, "UPDATE ttrss_user_entries - SET feed_id = orig_feed_id, orig_feed_id = NULL - WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]); - - print ""; - getGlobalCounters($link); - getVirtCounters($link); - if (get_pref($link, 'ENABLE_FEED_CATS')) { - getCategoryCounters($link); - } - print ""; - - return; - } - - if ($subop == "archive") { - $ids = split(",", db_escape_string($_REQUEST["ids"])); - - foreach ($ids as $id) { - archive_article($link, $id, $_SESSION["uid"]); - } - - print ""; - getGlobalCounters($link); - getVirtCounters($link); - if (get_pref($link, 'ENABLE_FEED_CATS')) { - getCategoryCounters($link); - } - print ""; - - return; - } - - - if ($subop == "publ") { - $pub = $_REQUEST["pub"]; - $id = db_escape_string($_REQUEST["id"]); - $note = trim(strip_tags(db_escape_string($_REQUEST["note"]))); - - if ($pub == "1") { - $pub = "true"; - } else { - $pub = "false"; - } - - if ($note != 'undefined') { - $note_qpart = "note = '$note',"; - } - - // FIXME this needs collision testing - - $result = db_query($link, "UPDATE ttrss_user_entries SET - $note_qpart - published = $pub - WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); - - - print ""; - - print ""; - getGlobalCounters($link); - getVirtCounters($link); - getLabelCounters($link); - if (get_pref($link, 'ENABLE_FEED_CATS')) { - getCategoryCounters($link); - } - print ""; - - if ($note != 'undefined') { - $note_size = strlen($note); - print ""; - print ""; - print ""; - } - - print ""; - - return; - } - - if ($subop == "updateFeed") { - $feed_id = db_escape_string($_REQUEST["feed"]); - - update_rss_feed($link, $feed_id); - - print ""; - print ""; - getFeedCounter($link, $feed_id); - print ""; - print ""; - - return; - } - - if ($subop == "forceUpdateAllFeeds" || $subop == "updateAllFeeds") { - - $global_unread_caller = sprintf("%d", $_REQUEST["uctr"]); - $global_unread = getGlobalUnread($link); - - print ""; - - print ""; - - if ($global_unread_caller != $global_unread) { - - $omode = $_REQUEST["omode"]; - - if (!$omode) $omode = "tflc"; - - getVirtCounters($link); - - if (strchr($omode, "l")) getLabelCounters($link); - - if (strchr($omode, "c")) { - if (get_pref($link, 'ENABLE_FEED_CATS')) { - getCategoryCounters($link); - } - } - - if (strchr($omode, "f")) getFeedCounters($link); - if (strchr($omode, "t")) getTagCounters($link); - - getGlobalCounters($link, $global_unread); - } - - print ""; - - print_runtime_info($link); - - print ""; - - return; - } - - /* GET["cmode"] = 0 - mark as read, 1 - as unread, 2 - toggle */ - if ($subop == "catchupSelected") { - - $ids = split(",", db_escape_string($_REQUEST["ids"])); - $cmode = sprintf("%d", $_REQUEST["cmode"]); - - catchupArticlesById($link, $ids, $cmode); - - print ""; - print ""; - getAllCounters($link, $_REQUEST["omode"]); - print ""; - print_runtime_info($link); - print ""; - - return; - } - - if ($subop == "markSelected") { - - $ids = split(",", db_escape_string($_REQUEST["ids"])); - $cmode = sprintf("%d", $_REQUEST["cmode"]); - - markArticlesById($link, $ids, $cmode); - - print ""; - print ""; - getAllCounters($link, $_REQUEST["omode"]); - print ""; - print_runtime_info($link); - print ""; - - return; - } - - if ($subop == "publishSelected") { - - $ids = split(",", db_escape_string($_REQUEST["ids"])); - $cmode = sprintf("%d", $_REQUEST["cmode"]); - - publishArticlesById($link, $ids, $cmode); - - print ""; - print ""; - getAllCounters($link, $_REQUEST["omode"]); - print ""; - print_runtime_info($link); - print ""; - - return; - } - - if ($subop == "sanityCheck") { - print ""; - if (sanity_check($link)) { - print ""; - print_init_params($link); - print_runtime_info($link); - - # assign client-passed params to session - $_SESSION["client.userAgent"] = $_REQUEST["ua"]; - - } - print ""; - - return; - } - - if ($subop == "globalPurge") { - - print ""; - global_purge_old_posts($link, true); - print ""; - - return; - } - - if ($subop == "getArticleLink") { - - $id = db_escape_string($_REQUEST["id"]); - - $result = db_query($link, "SELECT link FROM ttrss_entries, ttrss_user_entries - WHERE id = '$id' AND id = ref_id AND owner_uid = '".$_SESSION['uid']."'"); - - if (db_num_rows($result) == 1) { - $link = htmlspecialchars(strip_tags(db_fetch_result($result, 0, "link"))); - print "$link$id"; - } else { - print "Article not found"; - } - - return; - } - - if ($subop == "setArticleTags") { - - global $memcache; - - $id = db_escape_string($_REQUEST["id"]); - - $tags_str = db_escape_string($_REQUEST["tags_str"]); - - $tags = array_unique(trim_array(split(",", $tags_str))); - - db_query($link, "BEGIN"); - - $result = db_query($link, "SELECT int_id FROM ttrss_user_entries WHERE - ref_id = '$id' AND owner_uid = '".$_SESSION["uid"]."' LIMIT 1"); - - if (db_num_rows($result) == 1) { - - $int_id = db_fetch_result($result, 0, "int_id"); - - db_query($link, "DELETE FROM ttrss_tags WHERE - post_int_id = $int_id AND owner_uid = '".$_SESSION["uid"]."'"); - - foreach ($tags as $tag) { - $tag = sanitize_tag($tag); - - if (!tag_is_valid($tag)) { - continue; - } - - if (preg_match("/^[0-9]*$/", $tag)) { - continue; - } - -// print ""; - - if ($tag != '') { - db_query($link, "INSERT INTO ttrss_tags - (post_int_id, owner_uid, tag_name) VALUES ('$int_id', '".$_SESSION["uid"]."', '$tag')"); - } - } - } - - db_query($link, "COMMIT"); - - if ($memcache) { - $obj_id = md5("TAGS:".$_SESSION["uid"].":$id"); - $memcache->delete($obj_id); - } - - $tags_str = format_tags_string(get_article_tags($link, $id), $id); - - print " - - "; - - return; - } - - if ($subop == "regenPubKey") { - - print ""; - - set_pref($link, "_PREFS_PUBLISH_KEY", generate_publish_key(), $_SESSION["uid"]); - - $new_link = article_publish_url($link); - - print ""; - - print ""; - - return; - } - - if ($subop == "regenOPMLKey") { - - print ""; - set_pref($link, " _PREFS_OPML_PUBLISH_KEY", generate_publish_key(), $_SESSION["uid"]); - $new_link = opml_publish_url($link); - print ""; - print ""; - return; - } - - if ($subop == "logout") { - logout_user(); - print_error_xml(6); - return; - } - - if ($subop == "completeTags") { - - $search = db_escape_string($_REQUEST["search"]); - - $result = db_query($link, "SELECT DISTINCT tag_name FROM ttrss_tags - WHERE owner_uid = '".$_SESSION["uid"]."' AND - tag_name LIKE '$search%' ORDER BY tag_name - LIMIT 10"); - - print "
          "; - while ($line = db_fetch_assoc($result)) { - print "
        • " . $line["tag_name"] . "
        • "; - } - print "
        "; - - return; - } - - if ($subop == "purge") { - $ids = split(",", db_escape_string($_REQUEST["ids"])); - $days = sprintf("%d", $_REQUEST["days"]); - - print ""; - - print ""; - - print ""; - - return; - } - -/* if ($subop == "setScore") { - $id = db_escape_string($_REQUEST["id"]); - $score = sprintf("%d", $_REQUEST["score"]); - - $result = db_query($link, "UPDATE ttrss_user_entries SET score = '$score' - WHERE ref_id = '$id' AND owner_uid = ".$_SESSION["uid"]); - - print "Acknowledged."; - - return; - - } */ - - if ($subop == "getArticles") { - $ids = split(",", db_escape_string($_REQUEST["ids"])); - - print ""; - - foreach ($ids as $id) { - if ($id) { - outputArticleXML($link, $id, 0, false); - } - } - print ""; - - return; - } - - if ($subop == "checkDate") { - - $date = db_escape_string($_REQUEST["date"]); - $date_parsed = strtotime($date); - - print ""; - - if ($date_parsed) { - print "1"; - } else { - print "0"; - } - - print ""; - - return; - } - - if ($subop == "removeFromLabel") { - - $ids = split(",", db_escape_string($_REQUEST["ids"])); - $label_id = db_escape_string($_REQUEST["lid"]); - - $label = db_escape_string(label_find_caption($link, $label_id, - $_SESSION["uid"])); - - print ""; - print ""; - - if ($label) { - - foreach ($ids as $id) { - label_remove_article($link, $id, $label, $_SESSION["uid"]); - - print ""; - - } - } - - print ""; - - print ""; - getAllCounters($link, $omode); - print ""; - print ""; - - return; - } - - if ($subop == "assignToLabel") { - - $ids = split(",", db_escape_string($_REQUEST["ids"])); - $label_id = db_escape_string($_REQUEST["lid"]); - - $label = db_escape_string(label_find_caption($link, $label_id, - $_SESSION["uid"])); - - print ""; - - print ""; - - if ($label) { - - foreach ($ids as $id) { - label_add_article($link, $id, $label, $_SESSION["uid"]); - - print ""; - - } - } - - print ""; - - print ""; - getAllCounters($link, $omode); - print ""; - print ""; - - return; - } - - if ($subop == "updateFeedBrowser") { - - $search = db_escape_string($_REQUEST["search"]); - $limit = db_escape_string($_REQUEST["limit"]); - $mode = db_escape_string($_REQUEST["mode"]); - - print ""; - print ""; - print ""; - print ""; - print ""; - print ""; - print ""; - - return; - } - - - if ($subop == "massSubscribe") { - - $ids = split(",", db_escape_string($_REQUEST["ids"])); - $mode = $_REQUEST["mode"]; - - $subscribed = array(); - - foreach ($ids as $id) { - - if ($mode == 1) { - $result = db_query($link, "SELECT feed_url,title FROM ttrss_feeds - WHERE id = '$id'"); - } else if ($mode == 2) { - $result = db_query($link, "SELECT * FROM ttrss_archived_feeds - WHERE id = '$id' AND owner_uid = " . $_SESSION["uid"]); - $orig_id = db_escape_string(db_fetch_result($result, 0, "id")); - $site_url = db_escape_string(db_fetch_result($result, 0, "site_url")); - } - - $feed_url = db_escape_string(db_fetch_result($result, 0, "feed_url")); - $title = db_escape_string(db_fetch_result($result, 0, "title")); - - $title_orig = db_fetch_result($result, 0, "title"); - - $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE - feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"]); - - if (db_num_rows($result) == 0) { - if ($mode == 1) { - $result = db_query($link, - "INSERT INTO ttrss_feeds (owner_uid,feed_url,title,cat_id) - VALUES ('".$_SESSION["uid"]."', '$feed_url', '$title', NULL)"); - } else if ($mode == 2) { - $result = db_query($link, - "INSERT INTO ttrss_feeds (id,owner_uid,feed_url,title,cat_id,site_url) - VALUES ('$orig_id','".$_SESSION["uid"]."', '$feed_url', '$title', NULL, '$site_url')"); - } - array_push($subscribed, $title_orig); - } - } - - $num_feeds = count($subscribed); - - print ""; - print ""; - print ""; - - return; - } - - if ($subop == "download") { - $stage = (int) $_REQUEST["stage"]; - $cidt = (int)db_escape_string($_REQUEST["cidt"]); - $cidb = (int)db_escape_string($_REQUEST["cidb"]); - $sync = db_escape_string($_REQUEST["sync"]); - //$amount = (int) $_REQUEST["amount"]; - //$unread_only = db_escape_string($_REQUEST["unread_only"]); - //if (!$amount) $amount = 50; - - /* Amount is not used by the frontend offline.js anymore, it goes by - * date_qpart below + cidb/cidt IDs */ - - $amount = 2000; - $unread_only = true; - - print ""; - - $sync = split(";", $sync); - - print ""; - - if (count($sync) > 0) { - if (strtotime($sync[0])) { - $last_online = db_escape_string($sync[0]); - - print ""; - - for ($i = 1; $i < count($sync); $i++) { - $e = split(",", $sync[$i]); - - if (count($e) == 3) { - - $id = (int) $e[0]; - $unread = bool_to_sql_bool((bool) $e[1]); - $marked = (bool)$e[2]; - - if ($marked) { - $marked = bool_to_sql_bool($marked); - $marked_qpart = "marked = $marked,"; - } - - $query = "UPDATE ttrss_user_entries SET - $marked_qpart - unread = $unread, - last_read = '$last_online' - WHERE ref_id = '$id' AND - (last_read IS NULL OR last_read < '$last_online') AND - owner_uid = ".$_SESSION["uid"]; - - $result = db_query($link, $query); - - print ""; - - } - } - - /* Maybe we need to further update local DB for this client */ - - $query = "SELECT ref_id,unread,marked FROM ttrss_user_entries - WHERE last_read >= '$last_online' AND - owner_uid = ".$_SESSION["uid"] . " LIMIT 1000"; - - $result = db_query($link, $query); - - while ($line = db_fetch_assoc($result)) { - $unread = (int) sql_bool_to_bool($line["unread"]); - $marked = (int) sql_bool_to_bool($line["marked"]); - - print ""; - } - - } - } - - print ""; - - if ($stage == 0) { - print ""; - - $result = db_query($link, "SELECT id, title, cat_id FROM - ttrss_feeds WHERE owner_uid = ".$_SESSION["uid"]); - - while ($line = db_fetch_assoc($result)) { - - $has_icon = (int) feed_has_icon($line["id"]); - - print ""; - } - - print ""; - - print ""; - - $result = db_query($link, "SELECT id, title, collapsed FROM - ttrss_feed_categories WHERE owner_uid = ".$_SESSION["uid"]); - - print ""; - - print ""; - - print ""; - - while ($line = db_fetch_assoc($result)) { - print ""; - } - - print ""; - - print ""; - - $result = db_query($link, "SELECT * FROM - ttrss_labels2 WHERE owner_uid = ".$_SESSION["uid"]); - - while ($line = db_fetch_assoc($result)) { - print ""; - } - - - print ""; - - } - - if ($stage > 0) { - print ""; - - $limit = 10; - $skip = $limit*($stage-1); - - print ""; - - if ($amount > 0) $amount -= $skip; - - if ($amount > 0) { - - $limit = min($limit, $amount); - - if ($unread_only) { - $unread_qpart = "(unread = true OR marked = true) AND "; - } - - if ($cidt && $cidb) { - $cid_qpart = "(ttrss_entries.id > $cidt OR ttrss_entries.id < $cidb) AND "; - } - - if (DB_TYPE == "pgsql") { - $date_qpart = "updated >= NOW() - INTERVAL '1 week' AND"; - } else { - $date_qpart = "updated >= DATE_SUB(NOW(), INTERVAL 1 WEEK) AND"; - } - - $result = db_query($link, - "SELECT DISTINCT ttrss_entries.id,ttrss_entries.title, - guid,link,comments, - feed_id,content,updated,unread,marked FROM - ttrss_user_entries,ttrss_entries,ttrss_feeds - WHERE $unread_qpart $cid_qpart $date_qpart - ttrss_feeds.id = feed_id AND - ref_id = ttrss_entries.id AND - ttrss_user_entries.owner_uid = ".$_SESSION["uid"]." - ORDER BY updated DESC LIMIT $limit OFFSET $skip"); - - if (function_exists('json_encode')) { - - while ($line = db_fetch_assoc($result)) { - print "
        "; - } - } - - } - - print "
        "; - - } - - print "
        "; - - return; - } - - print "Unknown method: $subop"; - } -?> diff --git a/modules/help.php b/modules/help.php deleted file mode 100644 index 716a756dca..0000000000 --- a/modules/help.php +++ /dev/null @@ -1,27 +0,0 @@ - - ".__('Help')." - - - "; - } - - $tid = sprintf("%d", $_REQUEST["tid"]); - - if (file_exists("help/$tid.php")) { - include("help/$tid.php"); - } else { - print "

        ".__("Help topic not found.")."

        "; - } - print "
        -
        "; - - if (!$_REQUEST["noheaders"]) { - print ""; - } - } -?> diff --git a/modules/opml_domdoc.php b/modules/opml_domdoc.php deleted file mode 100644 index 51b7713374..0000000000 --- a/modules/opml_domdoc.php +++ /dev/null @@ -1,139 +0,0 @@ -getElementsByTagName('body'); - - $xpath = new DOMXpath($doc); - $query = "/opml/body//outline"; - - $outlines = $xpath->query($query); - - foreach ($outlines as $outline) { - - $feed_title = db_escape_string($outline->attributes->getNamedItem('text')->nodeValue); - - if (!$feed_title) { - $feed_title = db_escape_string($outline->attributes->getNamedItem('title')->nodeValue); - } - - $cat_title = db_escape_string($outline->attributes->getNamedItem('title')->nodeValue); - - if (!$cat_title) { - $cat_title = db_escape_string($outline->attributes->getNamedItem('text')->nodeValue); - } - - $feed_url = db_escape_string($outline->attributes->getNamedItem('xmlUrl')->nodeValue); - $site_url = db_escape_string($outline->attributes->getNamedItem('htmlUrl')->nodeValue); - - if ($cat_title && !$feed_url) { - - db_query($link, "BEGIN"); - - $result = db_query($link, "SELECT id FROM - ttrss_feed_categories WHERE title = '$cat_title' AND - owner_uid = '$owner_uid' LIMIT 1"); - - if (db_num_rows($result) == 0) { - - printf(__("
      • Adding category %s.
      • "), $cat_title); - - db_query($link, "INSERT INTO ttrss_feed_categories - (title,owner_uid) - VALUES ('$cat_title', '$owner_uid')"); - } - - db_query($link, "COMMIT"); - } - - // print "$active_category : $feed_title : $feed_url
        "; - - if (!$feed_title || !$feed_url) continue; - - db_query($link, "BEGIN"); - - $cat_id = null; - - $parent_node = $outline->parentNode; - - if ($parent_node && $parent_node->nodeName == "outline") { - $element_category = $parent_node->attributes->getNamedItem('title')->nodeValue; - if (!$element_category) $element_category = $parent_node->attributes->getNamedItem('text')->nodeValue; - - } else { - $element_category = ''; - } - - if ($element_category) { - - $element_category = db_escape_string($element_category); - - $result = db_query($link, "SELECT id FROM - ttrss_feed_categories WHERE title = '$element_category' AND - owner_uid = '$owner_uid' LIMIT 1"); - - if (db_num_rows($result) == 1) { - $cat_id = db_fetch_result($result, 0, "id"); - } - } - - $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE - feed_url = '$feed_url' - AND owner_uid = '$owner_uid'"); - - print "
      • $feed_title - (rss) "; - - if (db_num_rows($result) > 0) { - print __('is already imported.'); - } else { - - if ($cat_id) { - $add_query = "INSERT INTO ttrss_feeds - (title, feed_url, owner_uid, cat_id, site_url) VALUES - ('$feed_title', '$feed_url', '$owner_uid', - '$cat_id', '$site_url')"; - - } else { - $add_query = "INSERT INTO ttrss_feeds - (title, feed_url, owner_uid, cat_id, site_url) VALUES - ('$feed_title', '$feed_url', '$owner_uid', '$default_cat_id', - '$site_url')"; - - } - - //print $add_query; - db_query($link, $add_query); - - print __('OK'); - } - - print "
      • "; - - db_query($link, "COMMIT"); - } - - } else { - print_error(__('Error while parsing document.')); - } - - } else { - print_error(__('Error: please upload OPML file.')); - } - - - } -?> diff --git a/modules/opml_domxml.php b/modules/opml_domxml.php deleted file mode 100644 index 1cc1467a84..0000000000 --- a/modules/opml_domxml.php +++ /dev/null @@ -1,142 +0,0 @@ -document_element(); - - $body = $root->get_elements_by_tagname('body'); - - if ($body[0]) { - $body = $body[0]; - - $outlines = $body->get_elements_by_tagname('outline'); - - foreach ($outlines as $outline) { - - $feed_title = db_escape_string($outline->get_attribute('text')); - - if (!$feed_title) { - $feed_title = db_escape_string($outline->get_attribute('title')); - } - - $cat_title = db_escape_string($outline->get_attribute('title')); - - if (!$cat_title) { - $cat_title = db_escape_string($outline->get_attribute('text')); - } - - $feed_url = db_escape_string($outline->get_attribute('xmlUrl')); - $site_url = db_escape_string($outline->get_attribute('htmlUrl')); - - if ($cat_title && !$feed_url) { - - db_query($link, "BEGIN"); - - $result = db_query($link, "SELECT id FROM - ttrss_feed_categories WHERE title = '$cat_title' AND - owner_uid = '$owner_uid' LIMIT 1"); - - if (db_num_rows($result) == 0) { - - printf(__("
      • Adding category %s.
      • "), $cat_title); - - db_query($link, "INSERT INTO ttrss_feed_categories - (title,owner_uid) - VALUES ('$cat_title', '$owner_uid')"); - } - - db_query($link, "COMMIT"); - } - -// print "$active_category : $feed_title : $feed_url
        "; - - if (!$feed_title || !$feed_url) continue; - - db_query($link, "BEGIN"); - - $cat_id = null; - - $parent_node = $outline->parent_node(); - - if ($parent_node && $parent_node->node_name() == "outline") { - $element_category = $parent_node->get_attribute('title'); - if (!$element_category) $element_category = $parent_node->get_attribute('text'); - - } else { - $element_category = ''; - } - - if ($element_category) { - - $element_category = db_escape_string($element_category); - - $result = db_query($link, "SELECT id FROM - ttrss_feed_categories WHERE title = '$element_category' AND - owner_uid = '$owner_uid' LIMIT 1"); - - if (db_num_rows($result) == 1) { - $cat_id = db_fetch_result($result, 0, "id"); - } - } - - $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE - feed_url = '$feed_url' - AND owner_uid = '$owner_uid'"); - - print "
      • $feed_title - (rss) "; - - if (db_num_rows($result) > 0) { - print __("is already imported."); - } else { - - if ($cat_id) { - $add_query = "INSERT INTO ttrss_feeds - (title, feed_url, owner_uid, cat_id, site_url) VALUES - ('$feed_title', '$feed_url', '$owner_uid', - '$cat_id', '$site_url')"; - - } else { - $add_query = "INSERT INTO ttrss_feeds - (title, feed_url, owner_uid, cat_id, site_url) VALUES - ('$feed_title', '$feed_url', '$owner_uid', '$default_cat_id', - '$site_url')"; - - } - - db_query($link, $add_query); - - print __('OK'); - } - - print "
      • "; - - db_query($link, "COMMIT"); - } - - } else { - print_error(__("Error: can't find body element.")); - } - } else { - print_error(__("Error while parsing document.")); - } - - } else { - print_error(__("Error: please upload OPML file.")); - } - - } -?> diff --git a/modules/popup-dialog.php b/modules/popup-dialog.php deleted file mode 100644 index a80d612876..0000000000 --- a/modules/popup-dialog.php +++ /dev/null @@ -1,717 +0,0 @@ -".__('OPML Import')."
        "; - print "
        "; - - print "
        "; - - $owner_uid = $_SESSION["uid"]; - - db_query($link, "BEGIN"); - - /* create Imported feeds category just in case */ - - $result = db_query($link, "SELECT id FROM - ttrss_feed_categories WHERE title = 'Imported feeds' AND - owner_uid = '$owner_uid' LIMIT 1"); - - if (db_num_rows($result) == 0) { - db_query($link, "INSERT INTO ttrss_feed_categories - (title,owner_uid) - VALUES ('Imported feeds', '$owner_uid')"); - } - - db_query($link, "COMMIT"); - - /* Handle OPML import by DOMXML/DOMDocument */ - - if (function_exists('domxml_open_file')) { - print "
          "; - print "
        • ".__("Importing using DOMXML.")."
        • "; - require_once "modules/opml_domxml.php"; - opml_import_domxml($link, $owner_uid); - print "
        "; - } else if (PHP_VERSION >= 5) { - print "
          "; - print "
        • ".__("Importing using DOMDocument.")."
        • "; - require_once "modules/opml_domdoc.php"; - opml_import_domdoc($link, $owner_uid); - print "
        "; - } else { - print_error(__("DOMXML extension is not found. It is required for PHP versions below 5.")); - } - - print "
        "; - - print "
        "; - - print ""; - - print "
        "; - - print ""; - - print "
        "; - - return; - } - - if ($id == "editPrefProfiles") { - - print "
        ".__('Settings Profiles')."
        "; - print "
        "; - - print "
        -
        "; - - print "

        "; - - $result = db_query($link, "SELECT title,id FROM ttrss_settings_profiles - WHERE owner_uid = ".$_SESSION["uid"]." ORDER BY title"); - - print __('Select:')." - ".__('All').", - ".__('None').""; - - print "

        "; - - print "
        "; - - print ""; - - print ""; - - print ""; - - if (!$_SESSION["profile"]) { - $is_active = __("(active)"); - } else { - $is_active = ""; - } - - print ""; - - print ""; - - $lnum = 1; - - while ($line = db_fetch_assoc($result)) { - - $class = ($lnum % 2) ? "even" : "odd"; - - $cat_id = $line["id"]; - $this_row_id = "id=\"FCATR-$cat_id\""; - - print ""; - - $edit_title = htmlspecialchars($line["title"]); - - print ""; - - if ($_SESSION["profile"] == $line["id"]) { - $is_active = __("(active)"); - } else { - $is_active = ""; - } - - print ""; - - print ""; - - ++$lnum; - } - - print "
        " . - __("Default profile") . " $is_active
        " . - $edit_title . " $is_active
        "; - print "
        "; - print "
        "; - - print "
        -
        - - -
        "; - - print ""; - - print "
        "; - - return; - } - - if ($id == "pubUrl") { - - print "
        ".__('Published Articles')."
        "; - print "
        "; - - $url_path = article_publish_url($link); - - print __("Your Published articles feed URL is:"); - - print "
        "; - print "$url_path"; - print "
        "; - - print "
        "; - - print " "; - - print ""; - - print "
        "; - - return; - } - - if ($id == "pubOPMLUrl") { - - print "
        ".__('Public OPML URL')."
        "; - print "
        "; - - $url_path = opml_publish_url($link); - - print __("Your Public OPML URL is:"); - - print "
        "; - print "$url_path"; - print "
        "; - - print "
        "; - - print " "; - - print ""; - - print "
        "; - - return; - } - - if ($id == "explainError") { - - print "
        ".__('Notice')."
        "; - print "
        "; - - print "
        "; - - if ($param == 1) { - print __("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."); - - $stamp = (int)read_stampfile("update_daemon.stamp"); - - print "

        " . __("Last update:") . " " . date("Y.m.d, G:i", $stamp); - - } - - if ($param == 2) { - $msg = check_for_update($link); - - if (!$msg) { - print __("You are running the latest version of Tiny Tiny RSS. The fact that you are seeing this dialog is probably a bug."); - } else { - print $msg; - } - - } - - if ($param == 3) { - print __("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."); - - $stamp = (int)read_stampfile("update_daemon.stamp"); - - print "

        " . __("Last update:") . " " . date("Y.m.d, G:i", $stamp); - - } - - print "

        "; - - print "
        "; - - print ""; - - print "
        "; - - return; - } - - if ($id == "quickAddFeed") { - - print "
        ".__('Subscribe to Feed')."
        "; - print "
        "; - - print "
        "; - - print ""; - print ""; - //print ""; - - print "
        ".__("Feed")."
        "; - print "
        "; - - print __("URL:") . " "; - - print ""; - - print "
        "; - - if (get_pref($link, 'ENABLE_FEED_CATS')) { - print __('Place in category:') . " "; - print_feed_cat_select($link, "cat"); - } - - print "
        "; - - print ""; - - - print "
        - -
        "; - - print "
        "; - - print "
        - - -
        "; - - return; - } - - if ($id == "feedBrowser") { - - print "
        ".__('Feed Browser')."
        "; - - print "
        "; - - $browser_search = db_escape_string($_REQUEST["search"]); - - print "
        "; - - print ""; - print ""; - - print " -
        - - - -
        "; - - print " "; - - print __("limit:"); - - print " "; - - print "

        "; - - $owner_uid = $_SESSION["uid"]; - -/* print __('Select:')." - ".__('All').", - ".__('None').""; */ - - print "

          "; - print_feed_browser($link, $search, 25); - print "
        "; - - print "
        - - -
        "; - - print "
        "; - return; - } - - if ($id == "search") { - - print "
        ".__('Search')."
        "; - print "
        "; - - print ""; - - #$active_feed_id = db_escape_string($_REQUEST["param"]); - - $params = split(":", db_escape_string($_REQUEST["param"])); - - $active_feed_id = sprintf("%d", $params[0]); - $is_cat = $params[1] == "true"; - - print "
        ".__('Look for')."
        "; - - print "
        "; - - print ""; - - print " " . __('match on')." "; - - $search_fields = array( - "title" => __("Title"), - "content" => __("Content"), - "both" => __("Title or content")); - - print_select_hash("match_on", 3, $search_fields); - - - print "
        ".__('Limit search to:')." "; - - print ""; - - print "
        "; - - print ""; - - print "
        - - -
        "; - - print "
        "; - - return; - - } - - if ($id == "quickAddFilter") { - - $active_feed_id = db_escape_string($_REQUEST["param"]); - - print "
        ".__('Create Filter')."
        "; - print "
        "; - - print "
        "; - - print ""; - print ""; - print ""; - - $result = db_query($link, "SELECT id,description - FROM ttrss_filter_types ORDER BY description"); - - $filter_types = array(); - - while ($line = db_fetch_assoc($result)) { - //array_push($filter_types, $line["description"]); - $filter_types[$line["id"]] = __($line["description"]); - } - - print "
        ".__("Match")."
        "; - - print "
        "; - - print ""; - print __("Date") . " "; - - $filter_params = array( - "before" => __("before"), - "after" => __("after")); - - print_select_hash("filter_date_modifier", "before", $filter_params); - - print " "; - - print ""; - - print ""; - print " "; - print ""; - - print "
        " . __("on field") . " "; - print_select_hash("filter_type", 1, $filter_types, - 'onchange="filterDlgCheckType(this)"'); - - print "
        "; - - print __("in") . " "; - print_feed_select($link, "feed_id", $active_feed_id); - - print "
        "; - - print "
        ".__("Perform Action")."
        "; - - print "
        "; - - print ""; - - print ""; - print " " . __("with parameters:") . " "; - print ""; - - print_label_select($link, "action_param_label", $action_param); - - print ""; - - print " "; // tiny layout hack - - print "
        "; - - print "
        ".__("Options")."
        "; - print "
        "; - - print "
        "; - - print " -
        "; - - print " - "; - - print "
        "; - print "
        "; - - print "
        "; - - print "
        "; - - print " "; - - print ""; - - print "
        "; - -// print ""; - - return; - } - - if ($id == "feedUpdateErrors") { - - print "
        ".__('Update Errors')."
        "; - print "
        "; - - print __("These feeds have not been updated because of errors:"); - - $result = db_query($link, "SELECT id,title,feed_url,last_error - FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ".$_SESSION["uid"]); - - print "
          "; - - while ($line = db_fetch_assoc($result)) { - print "
        • " . $line["title"] . " (" . $line["feed_url"] . "): " . - "" . $line["last_error"] . ""; - } - - print "
        "; - - print "
        "; - - print ""; - - print "
        "; - - return; - } - - if ($id == "editArticleTags") { - - print "
        ".__('Edit Tags')."
        "; - print "
        "; - - print "
        "; - - print __("Tags for this article (separated by commas):")."
        "; - - $tags = get_article_tags($link, $param); - - $tags_str = join(", ", $tags); - - print ""; - - print ""; - - print ""; - - print "
        -
        -
        "; - - print "
        "; - - print "
        "; - - print " "; - print ""; - - print "
        "; - - return; - } - - if ($id == "printTagCloud") { - print "
        ".__('Tag Cloud')."
        "; - print "
        "; - - print __("Showing most popular tags ")." (".__('more tags')."):
        "; - - print "
        "; - - printTagCloud($link); - - print "
        "; - - print "
        "; - print ""; - print "
        "; - - print "
        "; - - return; - } - -/* if ($id == "offlineDownload") { - print "
        ".__('Download articles')."
        "; - print "
        "; - - print "
        "; - - print "
        ".__("Download")."
        "; - - print "
        "; - - $amount = array( - 50 => 50, - 100 => 100, - 250 => 250, - 500 => 500); - - print_select_hash("amount", 50, $amount); - - print " " . __("latest articles for offline reading."); - - print "
        "; - - print ""; - print ""; - - print "
        "; - - print "
        "; - - print "
        - -
        "; - - print "
        "; - - return; - } */ - - - print "
        Internal Error
        -
        -

        Unknown dialog $id

        -
        "; - - } -?> diff --git a/modules/pref-feeds.php b/modules/pref-feeds.php deleted file mode 100644 index f79e1c3bcb..0000000000 --- a/modules/pref-feeds.php +++ /dev/null @@ -1,1649 +0,0 @@ -"; - } - - function module_pref_feeds($link) { - - global $update_intervals; - global $purge_intervals; - global $update_methods; - - $subop = $_REQUEST["subop"]; - $quiet = $_REQUEST["quiet"]; - $mode = $_REQUEST["mode"]; - - if ($subop == "removeicon") { - $feed_id = db_escape_string($_REQUEST["feed_id"]); - - $result = db_query($link, "SELECT id FROM ttrss_feeds - WHERE id = '$feed_id' AND owner_uid = ". $_SESSION["uid"]); - - if (db_num_rows($result) != 0) { - unlink(ICONS_DIR . "/$feed_id.ico"); - } - - return; - } - - if ($subop == "uploadicon") { - $icon_file = $_FILES['icon_file']['tmp_name']; - $feed_id = db_escape_string($_REQUEST["feed_id"]); - - if (is_file($icon_file) && $feed_id) { - if (filesize($icon_file) < 20000) { - - $result = db_query($link, "SELECT id FROM ttrss_feeds - WHERE id = '$feed_id' AND owner_uid = ". $_SESSION["uid"]); - - if (db_num_rows($result) != 0) { - unlink(ICONS_DIR . "/$feed_id.ico"); - move_uploaded_file($icon_file, ICONS_DIR . "/$feed_id.ico"); - $rc = 0; - } else { - $rc = 2; - } - } else { - $rc = 1; - } - } else { - $rc = 2; - } - - print ""; - return; - } - -/* if ($subop == "massSubscribe") { - $ids = split(",", db_escape_string($_REQUEST["ids"])); - - $subscribed = array(); - - foreach ($ids as $id) { - - if ($mode == 1) { - $result = db_query($link, "SELECT feed_url,title FROM ttrss_feeds - WHERE id = '$id'"); - } else if ($mode == 2) { - $result = db_query($link, "SELECT * FROM ttrss_archived_feeds - WHERE id = '$id' AND owner_uid = " . $_SESSION["uid"]); - $orig_id = db_escape_string(db_fetch_result($result, 0, "id")); - $site_url = db_escape_string(db_fetch_result($result, 0, "site_url")); - } - - $feed_url = db_escape_string(db_fetch_result($result, 0, "feed_url")); - $title = db_escape_string(db_fetch_result($result, 0, "title")); - - $title_orig = db_fetch_result($result, 0, "title"); - - $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE - feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"]); - - if (db_num_rows($result) == 0) { - if ($mode == 1) { - $result = db_query($link, - "INSERT INTO ttrss_feeds (owner_uid,feed_url,title,cat_id) - VALUES ('".$_SESSION["uid"]."', '$feed_url', '$title', NULL)"); - } else if ($mode == 2) { - $result = db_query($link, - "INSERT INTO ttrss_feeds (id,owner_uid,feed_url,title,cat_id,site_url) - VALUES ('$orig_id','".$_SESSION["uid"]."', '$feed_url', '$title', NULL, '$site_url')"); - } - array_push($subscribed, $title_orig); - } - } - - if (count($subscribed) > 0) { - $msg = "".__('Subscribed to feeds:')."". - "
          "; - - foreach ($subscribed as $title) { - $msg .= "
        • $title
        • "; - } - $msg .= "
        "; - - print format_notice($msg); - } - - return; - } */ - -/* if ($subop == "browse") { - - print "
        ".__('Feed Browser')."
        "; - - print "
        "; - - $browser_search = db_escape_string($_REQUEST["search"]); - - //print "

        ".__("Showing top 25 registered feeds, sorted by popularity:")."

        "; - - print "
        "; - - print " -
        - - - -
        "; - - print " "; - - print __("limit:"); - - print " "; - - print "

        "; - - $owner_uid = $_SESSION["uid"]; - - print "

          "; - print_feed_browser($link, $search, 25); - print "
        "; - - print "
        - -
        "; - - print "
        "; - return; - } */ - - if ($subop == "editfeed") { - $feed_id = db_escape_string($_REQUEST["id"]); - - $result = db_query($link, - "SELECT * FROM ttrss_feeds WHERE id = '$feed_id' AND - owner_uid = " . $_SESSION["uid"]); - - $title = htmlspecialchars(db_fetch_result($result, - 0, "title")); - - $icon_file = ICONS_DIR . "/$feed_id.ico"; - - if (file_exists($icon_file) && filesize($icon_file) > 0) { - $feed_icon = ""; - } else { - $feed_icon = ""; - } - - print "
        ".__('Feed Editor')."
        "; - - print "
        "; - - print ""; - - print ""; - print ""; - print ""; - - print "
        ".__("Feed")."
        "; - print "
        "; - - /* Title */ - - print ""; - - /* Feed URL */ - - $feed_url = db_fetch_result($result, 0, "feed_url"); - $feed_url = htmlspecialchars(db_fetch_result($result, - 0, "feed_url")); - - print "
        "; - - print __('URL:') . " "; - print ""; - - /* Category */ - - if (get_pref($link, 'ENABLE_FEED_CATS')) { - - $cat_id = db_fetch_result($result, 0, "cat_id"); - - print "
        "; - - print __('Place in category:') . " "; - - $parent_feed = db_fetch_result($result, 0, "parent_feed"); - - if (sprintf("%d", $parent_feed) > 0) { - $disabled = "disabled"; - } else { - $disabled = ""; - } - - print_feed_cat_select($link, "cat_id", $cat_id, $disabled); - } - - /* Link to */ - - print "
        "; - - print __('Link to feed:') . " "; - - $tmp_result = db_query($link, "SELECT COUNT(id) AS count - FROM ttrss_feeds WHERE parent_feed = '$feed_id'"); - - $linked_count = db_fetch_result($tmp_result, 0, "count"); - - $parent_feed = db_fetch_result($result, 0, "parent_feed"); - - if ($linked_count > 0) { - $disabled = "disabled"; - } else { - $disabled = ""; - } - - print ""; - - - print "
        "; - - print "
        ".__("Update")."
        "; - print "
        "; - - /* Update Interval */ - - $update_interval = db_fetch_result($result, 0, "update_interval"); - - print_select_hash("update_interval", $update_interval, $update_intervals); - - /* Update method */ - - if (ALLOW_SELECT_UPDATE_METHOD) { - $update_method = db_fetch_result($result, 0, "update_method"); - - print " " . __('using') . " "; - print_select_hash("update_method", $update_method, $update_methods); - } - - $purge_interval = db_fetch_result($result, 0, "purge_interval"); - - if (FORCE_ARTICLE_PURGE == 0) { - - /* Purge intl */ - - print "
        "; - - print __('Article purging:') . " "; - - print_select_hash("purge_interval", $purge_interval, $purge_intervals); - - } else { - print ""; - - } - - print "
        "; - print "
        ".__("Authentication")."
        "; - print "
        "; - - $auth_login = htmlspecialchars(db_fetch_result($result, 0, "auth_login")); - - print ""; - - print "
        " . __('Login:') . ""; - - print ""; - - print "
        " . __("Password:") . ""; - - $auth_pass = htmlspecialchars(db_fetch_result($result, 0, "auth_pass")); - - print ""; - - print "
        "; - - print "
        "; - print "
        ".__("Options")."
        "; - print "
        "; - - print "
        "; - - $private = sql_bool_to_bool(db_fetch_result($result, 0, "private")); - - if ($private) { - $checked = "checked"; - } else { - $checked = ""; - } - - print " "; - - $rtl_content = sql_bool_to_bool(db_fetch_result($result, 0, "rtl_content")); - - if ($rtl_content) { - $checked = "checked"; - } else { - $checked = ""; - } - - print "
         "; - - $include_in_digest = sql_bool_to_bool(db_fetch_result($result, 0, "include_in_digest")); - - if ($include_in_digest) { - $checked = "checked"; - } else { - $checked = ""; - } - - print "
         "; - - - $always_display_enclosures = sql_bool_to_bool(db_fetch_result($result, 0, "always_display_enclosures")); - - if ($always_display_enclosures) { - $checked = "checked"; - } else { - $checked = ""; - } - - print "
         "; - - - $cache_images = sql_bool_to_bool(db_fetch_result($result, 0, "cache_images")); - - if ($cache_images) { - $checked = "checked"; - } else { - $checked = ""; - } - - if (ENABLE_SIMPLEPIE && SIMPLEPIE_CACHE_IMAGES) { - $disabled = ""; - $label_class = ""; - } else { - $disabled = "disabled"; - $label_class = "class='insensitive'"; - } - - print "
         "; - - - print "
        "; - print "
        "; - - print ""; - - /* Icon */ - - print "
        "; - - print "
        ".__("Icon")."
        "; - print "
        "; - - print ""; - - print "
        - - - - - - -
        "; - - print "
        "; - - $title = htmlspecialchars($title, ENT_QUOTES); - - print "
        -
        - -
        - - -
        "; - - return; - } - - if ($subop == "editfeeds") { - - $feed_ids = db_escape_string($_REQUEST["ids"]); - - print "
        ".__('Multiple Feed Editor')."
        "; - - print "
        "; - - print "
        "; - - print ""; - print ""; - print ""; - - print "
        ".__("Feed")."
        "; - print "
        "; - - /* Title */ - - print ""; - - batch_edit_cbox("title"); - - /* Feed URL */ - - print "
        "; - - print __('URL:') . " "; - print ""; - - batch_edit_cbox("feed_url"); - - /* Category */ - - if (get_pref($link, 'ENABLE_FEED_CATS')) { - - print "
        "; - - print __('Place in category:') . " "; - - print_feed_cat_select($link, "cat_id", $cat_id, "disabled"); - - batch_edit_cbox("cat_id"); - - } - - print "
        "; - - print "
        ".__("Update")."
        "; - print "
        "; - - /* Update Interval */ - - print_select_hash("update_interval", $update_interval, $update_intervals, - "disabled"); - - batch_edit_cbox("update_interval"); - - /* Update method */ - - if (ALLOW_SELECT_UPDATE_METHOD) { - print " " . __('using') . " "; - print_select_hash("update_method", $update_method, $update_methods, - "disabled"); - batch_edit_cbox("update_method"); - } - - /* Purge intl */ - - if (FORCE_ARTICLE_PURGE != 0) { - - print "
        "; - - print __('Article purging:') . " "; - - print_select_hash("purge_interval", $purge_interval, $purge_intervals, - "disabled"); - - batch_edit_cbox("purge_interval"); - } - - print "
        "; - print "
        ".__("Authentication")."
        "; - print "
        "; - - print __('Login:') . " "; - print ""; - - batch_edit_cbox("auth_login"); - - print " " . __("Password:") . " "; - - print ""; - - batch_edit_cbox("auth_pass"); - - print "
        "; - print "
        ".__("Options")."
        "; - print "
        "; - - print "
        "; - - print " "; - - print " "; batch_edit_cbox("private", "private_l"); - - print "
         "; - - print " "; batch_edit_cbox("rtl_content", "rtl_content_l"); - - print "
         "; - - print " "; batch_edit_cbox("include_in_digest", "include_in_digest_l"); - - print "
         "; - - print " "; batch_edit_cbox("always_display_enclosures", "always_display_enclosures_l"); - - print "
         "; - - - if (ENABLE_SIMPLEPIE && SIMPLEPIE_CACHE_IMAGES) { - print " "; batch_edit_cbox("cache_images", "cache_images_l"); - } - - print "
        "; - print "
        "; - - print "
        "; - - print "
        - - -
        "; - - return; - } - - if ($subop == "editSave" || $subop == "batchEditSave") { - - $feed_title = db_escape_string(trim($_POST["title"])); - $feed_link = db_escape_string(trim($_POST["feed_url"])); - $upd_intl = db_escape_string($_POST["update_interval"]); - $purge_intl = db_escape_string($_POST["purge_interval"]); - $feed_id = db_escape_string($_POST["id"]); /* editSave */ - $feed_ids = db_escape_string($_POST["ids"]); /* batchEditSave */ - $cat_id = db_escape_string($_POST["cat_id"]); - $auth_login = db_escape_string(trim($_POST["auth_login"])); - $auth_pass = db_escape_string(trim($_POST["auth_pass"])); - $parent_feed = db_escape_string($_POST["parent_feed"]); - $private = checkbox_to_sql_bool(db_escape_string($_POST["private"])); - $rtl_content = checkbox_to_sql_bool(db_escape_string($_POST["rtl_content"])); - $include_in_digest = checkbox_to_sql_bool( - db_escape_string($_POST["include_in_digest"])); - $cache_images = checkbox_to_sql_bool( - db_escape_string($_POST["cache_images"])); - $update_method = (int) db_escape_string($_POST["update_method"]); - - $always_display_enclosures = checkbox_to_sql_bool( - db_escape_string($_POST["always_display_enclosures"])); - - if (get_pref($link, 'ENABLE_FEED_CATS')) { - if ($cat_id && $cat_id != 0) { - $category_qpart = "cat_id = '$cat_id',"; - $category_qpart_nocomma = "cat_id = '$cat_id'"; - } else { - $category_qpart = 'cat_id = NULL,'; - $category_qpart_nocomma = 'cat_id = NULL'; - } - } else { - $category_qpart = ""; - $category_qpart_nocomma = ""; - } - - if ($parent_feed && $parent_feed != 0) { - $parent_qpart = "parent_feed = '$parent_feed'"; - } else { - $parent_qpart = 'parent_feed = NULL'; - } - - if (ENABLE_SIMPLEPIE && SIMPLEPIE_CACHE_IMAGES) { - $cache_images_qpart = "cache_images = $cache_images,"; - } else { - $cache_images_qpart = ""; - } - - if ($subop == "editSave") { - - $result = db_query($link, "UPDATE ttrss_feeds SET - $category_qpart $parent_qpart, - title = '$feed_title', feed_url = '$feed_link', - update_interval = '$upd_intl', - purge_interval = '$purge_intl', - auth_login = '$auth_login', - auth_pass = '$auth_pass', - private = $private, - rtl_content = $rtl_content, - $cache_images_qpart - include_in_digest = $include_in_digest, - always_display_enclosures = $always_display_enclosures, - update_method = '$update_method' - WHERE id = '$feed_id' AND owner_uid = " . $_SESSION["uid"]); - - if (get_pref($link, 'ENABLE_FEED_CATS')) { - # update linked feed categories - $result = db_query($link, "UPDATE ttrss_feeds SET - $category_qpart_nocomma WHERE parent_feed = '$feed_id' AND - owner_uid = " . $_SESSION["uid"]); - } - } else if ($subop == "batchEditSave") { - $feed_data = array(); - - foreach (array_keys($_POST) as $k) { - if ($k != "op" && $k != "subop" && $k != "ids") { - $feed_data[$k] = $_POST[$k]; - } - } - - db_query($link, "BEGIN"); - - foreach (array_keys($feed_data) as $k) { - - $qpart = ""; - - switch ($k) { - case "title": - $qpart = "title = '$feed_title'"; - break; - - case "feed_url": - $qpart = "feed_url = '$feed_link'"; - break; - - case "update_interval": - $qpart = "update_interval = '$upd_intl'"; - break; - - case "purge_interval": - $qpart = "purge_interval = '$purge_intl'"; - break; - - case "auth_login": - $qpart = "auth_login = '$auth_login'"; - break; - - case "auth_pass": - $qpart = "auth_pass = '$auth_pass'"; - break; - - case "private": - $qpart = "private = '$private'"; - break; - - case "include_in_digest": - $qpart = "include_in_digest = '$include_in_digest'"; - break; - - case "always_display_enclosures": - $qpart = "always_display_enclosures = '$always_display_enclosures'"; - break; - - case "cache_images": - $qpart = "cache_images = '$cache_images'"; - break; - - case "rtl_content": - $qpart = "rtl_content = '$rtl_content'"; - break; - - case "update_method": - $qpart = "update_method = '$update_method'"; - break; - - case "cat_id": - $qpart = $category_qpart_nocomma; - break; - - } - - if ($qpart) { - db_query($link, - "UPDATE ttrss_feeds SET $qpart WHERE id IN ($feed_ids) - AND owner_uid = " . $_SESSION["uid"]); - print "
        "; - } - } - - db_query($link, "COMMIT"); - } - - } - - if ($subop == "remove") { - - $ids = split(",", db_escape_string($_REQUEST["ids"])); - - foreach ($ids as $id) { - remove_feed($link, $id, $_SESSION["uid"]); - } - - return; - } - - if ($subop == "clear") { - $id = db_escape_string($_REQUEST["id"]); - clear_feed_articles($link, $id); - } - - if ($subop == "rescore") { - $ids = split(",", db_escape_string($_REQUEST["ids"])); - - foreach ($ids as $id) { - - $filters = load_filters($link, $id, $_SESSION["uid"], 6); - - $result = db_query($link, "SELECT title, content, link, ref_id FROM - ttrss_user_entries, ttrss_entries - WHERE ref_id = id AND feed_id = '$id' AND - owner_uid = " .$_SESSION['uid']." - "); - - $scores = array(); - - while ($line = db_fetch_assoc($result)) { - - $article_filters = get_article_filters($filters, $line['title'], - $line['content'], $line['link']); - - $new_score = calculate_article_score($article_filters); - - if (!$scores[$new_score]) $scores[$new_score] = array(); - - array_push($scores[$new_score], $line['ref_id']); - } - - foreach (array_keys($scores) as $s) { - if ($s > 1000) { - db_query($link, "UPDATE ttrss_user_entries SET score = '$s', - marked = true WHERE - ref_id IN (" . join(',', $scores[$s]) . ")"); - } else if ($s < -500) { - db_query($link, "UPDATE ttrss_user_entries SET score = '$s', - unread = false WHERE - ref_id IN (" . join(',', $scores[$s]) . ")"); - } else { - db_query($link, "UPDATE ttrss_user_entries SET score = '$s' WHERE - ref_id IN (" . join(',', $scores[$s]) . ")"); - } - } - } - - print __("All done."); - - } - - if ($subop == "rescoreAll") { - - $result = db_query($link, - "SELECT id FROM ttrss_feeds WHERE owner_uid = " . $_SESSION['uid']); - - while ($feed_line = db_fetch_assoc($result)) { - - $id = $feed_line["id"]; - - $filters = load_filters($link, $id, $_SESSION["uid"], 6); - - $tmp_result = db_query($link, "SELECT title, content, link, ref_id FROM - ttrss_user_entries, ttrss_entries - WHERE ref_id = id AND feed_id = '$id' AND - owner_uid = " .$_SESSION['uid']." - "); - - $scores = array(); - - while ($line = db_fetch_assoc($tmp_result)) { - - $article_filters = get_article_filters($filters, $line['title'], - $line['content'], $line['link']); - - $new_score = calculate_article_score($article_filters); - - if (!$scores[$new_score]) $scores[$new_score] = array(); - - array_push($scores[$new_score], $line['ref_id']); - } - - foreach (array_keys($scores) as $s) { - if ($s > 1000) { - db_query($link, "UPDATE ttrss_user_entries SET score = '$s', - marked = true WHERE - ref_id IN (" . join(',', $scores[$s]) . ")"); - } else { - db_query($link, "UPDATE ttrss_user_entries SET score = '$s' WHERE - ref_id IN (" . join(',', $scores[$s]) . ")"); - } - } - } - - print __("All done."); - - } - - if ($subop == "add") { - - $feed_url = db_escape_string(trim($_REQUEST["feed_url"])); - $cat_id = db_escape_string($_REQUEST["cat_id"]); - $p_from = db_escape_string($_REQUEST["from"]); - - /* only read authentication information from POST */ - - $auth_login = db_escape_string(trim($_POST["auth_login"])); - $auth_pass = db_escape_string(trim($_POST["auth_pass"])); - - if ($p_from != 'tt-rss') { - print " - - Tiny Tiny RSS - - - - \"Tiny -

        Subscribe to feed...

        "; - } - - $rc = subscribe_to_feed($link, $feed_url, $cat_id, $auth_login, $auth_pass); - - switch ($rc) { - case 1: - print_notice(T_sprintf("Subscribed to %s.", $feed_url)); - break; - case 2: - print_error(T_sprintf("Could not subscribe to %s.", $feed_url)); - break; - case 0: - print_warning(T_sprintf("Already subscribed to %s.", $feed_url)); - break; - } - - if ($p_from != 'tt-rss') { - $tt_uri = ($_SERVER['HTTPS'] != "on" ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . preg_replace('/backend\.php.*$/', 'tt-rss.php', $_SERVER["REQUEST_URI"]); - - - $tp_uri = ($_SERVER['HTTPS'] != "on" ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . preg_replace('/backend\.php.*$/', 'prefs.php', $_SERVER["REQUEST_URI"]); - - $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE - feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"]); - - $feed_id = db_fetch_result($result, 0, "id"); - - print "

        "; - - if ($feed_id) { - print "

        - - - - -
        "; - } - - print "
        - -

        "; - - print ""; - return; - } - } - - if ($subop == "categorize") { - - if (!WEB_DEMO_MODE) { - - $ids = split(",", db_escape_string($_REQUEST["ids"])); - - $cat_id = db_escape_string($_REQUEST["cat_id"]); - - if ($cat_id == 0) { - $cat_id_qpart = 'NULL'; - } else { - $cat_id_qpart = "'$cat_id'"; - } - - db_query($link, "BEGIN"); - - foreach ($ids as $id) { - - db_query($link, "UPDATE ttrss_feeds SET cat_id = $cat_id_qpart - WHERE id = '$id' AND parent_feed IS NULL - AND owner_uid = " . $_SESSION["uid"]); - - # update linked feed categories - db_query($link, "UPDATE ttrss_feeds SET - cat_id = $cat_id_qpart WHERE parent_feed = '$id' AND - owner_uid = " . $_SESSION["uid"]); - - } - - db_query($link, "COMMIT"); - } - - } - - if ($subop == "editCats") { - - $action = $_REQUEST["action"]; - - if ($action == "save") { - - $cat_title = db_escape_string(trim($_REQUEST["value"])); - $cat_id = db_escape_string($_REQUEST["cid"]); - - db_query($link, "BEGIN"); - - $result = db_query($link, "SELECT title FROM ttrss_feed_categories - WHERE id = '$cat_id' AND owner_uid = ".$_SESSION["uid"]); - - if (db_num_rows($result) == 1) { - - $old_title = db_fetch_result($result, 0, "title"); - - if ($cat_title != "") { - $result = db_query($link, "UPDATE ttrss_feed_categories SET - title = '$cat_title' WHERE id = '$cat_id' AND - owner_uid = ".$_SESSION["uid"]); - - print $cat_title; - } else { - print $old_title; - } - } else { - print $_REQUEST["value"]; - } - - db_query($link, "COMMIT"); - - return; - - } - - print "
        ".__('Category editor')."
        "; - - print "
        "; - - - if ($action == "add") { - - if (!WEB_DEMO_MODE) { - - $feed_cat = db_escape_string(trim($_REQUEST["cat"])); - - $result = db_query($link, - "SELECT id FROM ttrss_feed_categories - WHERE title = '$feed_cat' AND owner_uid = ".$_SESSION["uid"]); - - if (db_num_rows($result) == 0) { - - $result = db_query($link, - "INSERT INTO ttrss_feed_categories (owner_uid,title) - VALUES ('".$_SESSION["uid"]."', '$feed_cat')"); - - } else { - - print_warning(T_sprintf("Category $%s already exists in the database.", - $feed_cat)); - } - - } - } - - if ($action == "remove") { - - $ids = split(",", db_escape_string($_REQUEST["ids"])); - - foreach ($ids as $id) { - remove_feed_category($link, $id, $_SESSION["uid"]); - } - } - - print "
        - -
        "; - - $result = db_query($link, "SELECT title,id FROM ttrss_feed_categories - WHERE owner_uid = ".$_SESSION["uid"]." - ORDER BY title"); - - print "

        "; - - if (db_num_rows($result) != 0) { - - print __('Select:')." - ".__('All').", - ".__('None').""; - - print "

        "; - - print "
        "; - - print ""; - - $lnum = 0; - - while ($line = db_fetch_assoc($result)) { - - $class = ($lnum % 2) ? "even" : "odd"; - - $cat_id = $line["id"]; - $this_row_id = "id=\"FCATR-$cat_id\""; - - print ""; - - $edit_title = htmlspecialchars($line["title"]); - - print ""; - - print ""; - - print ""; - - ++$lnum; - } - - print "
        " . - $edit_title . "
        "; - - print "
        "; - - print "
        "; - - } else { - print "

        ".__('No feed categories defined.')."

        "; - } - - print "
        -
        - -
        "; - - print "
        "; - - print "
        "; - - return; - - } - - if ($quiet) return; - - set_pref($link, "_PREFS_ACTIVE_TAB", "feedConfig"); - - $result = db_query($link, "SELECT COUNT(id) AS num_errors - FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ".$_SESSION["uid"]); - - $num_errors = db_fetch_result($result, 0, "num_errors"); - - if ($num_errors > 0) { - - print format_notice("". - __('Some feeds have update errors (click for details)').""); - } - - $feed_search = db_escape_string($_REQUEST["search"]); - - if (array_key_exists("search", $_REQUEST)) { - $_SESSION["prefs_feed_search"] = $feed_search; - } else { - $feed_search = $_SESSION["prefs_feed_search"]; - } - - print "
        - - -
        "; - - print " "; - - print " "; - - if (get_pref($link, 'ENABLE_FEED_CATS')) { - - print " "; - } - - print " "; - - if (defined('_ENABLE_FEED_DEBUGGING')) { - - print ""; - - } - - $feeds_sort = db_escape_string($_REQUEST["sort"]); - - if (!$feeds_sort || $feeds_sort == "undefined") { - $feeds_sort = $_SESSION["pref_sort_feeds"]; - if (!$feeds_sort) $feeds_sort = "title"; - } - - $_SESSION["pref_sort_feeds"] = $feeds_sort; - - if ($feed_search) { - - $feed_search = split(" ", $feed_search); - $tokens = array(); - - foreach ($feed_search as $token) { - - $token = trim($token); - - array_push($tokens, "(UPPER(F1.title) LIKE UPPER('%$token%') OR - UPPER(C1.title) LIKE UPPER('%$token%') OR - UPPER(F1.feed_url) LIKE UPPER('%$token%'))"); - } - - $search_qpart = "(" . join($tokens, " AND ") . ") AND "; - - } else { - $search_qpart = ""; - } - - $show_last_article_info = false; - $show_last_article_checked = ""; - $show_last_article_qpart = ""; - - if ($_REQUEST["slat"] == "true") { - $show_last_article_info = true; - $show_last_article_checked = "checked"; - $show_last_article_qpart = ", (SELECT ".SUBSTRING_FOR_DATE."(MAX(updated),1,16) FROM ttrss_user_entries, - ttrss_entries WHERE ref_id = ttrss_entries.id - AND feed_id = F1.id) AS last_article"; - } else if ($feeds_sort == "last_article") { - $feeds_sort = "title"; - } - - if (get_pref($link, 'ENABLE_FEED_CATS')) { - $order_by_qpart = "category,$feeds_sort,title"; - } else { - $order_by_qpart = "$feeds_sort,title"; - } - - $result = db_query($link, "SELECT - F1.id, - F1.title, - F1.feed_url, - ".SUBSTRING_FOR_DATE."(F1.last_updated,1,16) AS last_updated, - F1.parent_feed, - F1.update_interval, - F1.last_error, - F1.purge_interval, - F1.cat_id, - F2.title AS parent_title, - C1.title AS category, - F1.include_in_digest - $show_last_article_qpart - FROM - ttrss_feeds AS F1 - LEFT JOIN ttrss_feeds AS F2 - ON (F1.parent_feed = F2.id) - LEFT JOIN ttrss_feed_categories AS C1 - ON (F1.cat_id = C1.id) - WHERE - $search_qpart F1.owner_uid = '".$_SESSION["uid"]."' - ORDER by $order_by_qpart"); - - if (db_num_rows($result) != 0) { - -// print "
        PLACEHOLDER
        "; - - print "

        "; - print " - "; - - if (get_pref($link, 'ENABLE_FEED_ICONS')) { - print ""; - } - - print ""; - - if ($show_last_article_info) { - print ""; - } - - print ""; - } - - $lnum = 0; - - $cur_cat_id = -1; - - while ($line = db_fetch_assoc($result)) { - - $feed_id = $line["id"]; - $cat_id = $line["cat_id"]; - - $edit_title = htmlspecialchars($line["title"]); - $edit_cat = htmlspecialchars($line["category"]); - - $last_error = $line["last_error"]; - - if (!$edit_cat) $edit_cat = __("Uncategorized"); - - $last_updated = $line["last_updated"]; - - if (!$last_updated) { - $last_updated = "—"; - } else if (get_pref($link, 'HEADLINES_SMART_DATE')) { - $last_updated = smart_date_time(strtotime($last_updated)); - } else { - $short_date = get_pref($link, 'SHORT_DATE_FORMAT'); - $last_updated = date($short_date, strtotime($last_updated)); - } - - $last_article = $line["last_article"]; - - if (!$last_article) { - $last_article = "—"; - } else if (get_pref($link, 'HEADLINES_SMART_DATE')) { - $last_article = smart_date_time(strtotime($last_article)); - } else { - $short_date = get_pref($link, 'SHORT_DATE_FORMAT'); - $last_article = date($short_date, strtotime($last_article)); - } - - if (get_pref($link, 'ENABLE_FEED_CATS') && $cur_cat_id != $cat_id) { - $lnum = 0; - - print ""; - - print " - "; - - if (get_pref($link, 'ENABLE_FEED_ICONS')) { - print ""; - } - - print ""; - - if ($show_last_article_info) { - print ""; - } - - print ""; - - $cur_cat_id = $cat_id; - } - - $class = ($lnum % 2) ? "even" : "odd"; - $this_row_id = "id=\"FEEDR-$feed_id\""; - - print ""; - - $icon_file = ICONS_DIR . "/$feed_id.ico"; - - if (file_exists($icon_file) && filesize($icon_file) > 0) { - $feed_icon = ""; - } else { - $feed_icon = ""; - } - - print ""; - - $onclick = "onclick='editFeed($feed_id)' title='".__('Click to edit')."'"; - - if (get_pref($link, 'ENABLE_FEED_ICONS')) { - print ""; - } - - if ($last_error) { - $edit_title = "$edit_title"; - $last_updated = "$last_updated"; - $last_article = "$last_article"; - } - - $parent_title = $line["parent_title"]; - if ($parent_title) { - $linked_to = sprintf(__("(linked to %s)"), $parent_title); - $parent_title = "$linked_to"; - } - - print ""; - - if ($show_last_article_info) { - print ""; - } - - print ""; - - print ""; - - ++$lnum; - } - - print "
        ". - "
        ". - "
        ". - __('Select:')." - ".__('All').", - ".__('None')." - "; - - if (!get_pref($link, 'ENABLE_FEED_CATS')) { - print "
          ".__('Title')."".__('Last Article')."".__('Updated')."
        $edit_cat
          ".__('Title')." - ".__('Last Article')." - ".__('Updated')."
        $feed_icon" . "$edit_title $parent_title" . "" . - "$last_article$last_updated
        "; - - print "

        "; - - } else { - - print "

        "; - - if (!$feed_search) { - print_warning(__("You don't have any subscribed feeds.")); - } else { - print_warning(__('No matching feeds found.')); - } - print "

        "; - - } - - print "

        ".__('OPML')."

        "; - -/* print "
        -
        - ".__('File:')."   - - -
        "; - - print " "; */ - - print ""; - - print "
        "; - print "
        -   - - - -
        "; - print "
         "; - - print ""; - - - print "

        " . __("Firefox Integration") . "

        "; - - print "

        " . __('This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below.') . "

        "; - - print "" . - __('Click here to register this site as a feed reader.') . - ""; - - print "

        "; - - print "

        ".__("Published articles")."

        "; - - if (!get_pref($link, "_PREFS_PUBLISH_KEY")) { - set_pref($link, "_PREFS_PUBLISH_KEY", generate_publish_key()); - } - - if (!get_pref($link, "_PREFS_OPML_PUBLISH_KEY")){ - set_pref($link, "_PREFS_OPML_PUBLISH_KEY", generate_publish_key()); - } - - print "

        ".__('Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below.')."

        "; - - print " "; - - print "

        ".__('Your OPML can be published publicly and can be subscribed by anyone who knows the URL below.')."

        "; - - print " "; - - - } - - function print_feed_browser($link, $search, $limit, $mode = 1) { - - $owner_uid = $_SESSION["uid"]; - - if ($search) { - $search_qpart = "AND (UPPER(feed_url) LIKE UPPER('%$search%') OR - UPPER(title) LIKE UPPER('%$search%'))"; - } else { - $search_qpart = ""; - } - - if ($mode == 1) { - $result = db_query($link, "SELECT feed_url, subscribers FROM - ttrss_feedbrowser_cache WHERE (SELECT COUNT(id) = 0 FROM ttrss_feeds AS tf - WHERE tf.feed_url = ttrss_feedbrowser_cache.feed_url - AND owner_uid = '$owner_uid') $search_qpart - ORDER BY subscribers DESC LIMIT $limit"); - } else if ($mode == 2) { - $result = db_query($link, "SELECT *, - (SELECT COUNT(*) FROM ttrss_user_entries WHERE - orig_feed_id = ttrss_archived_feeds.id) AS articles_archived - FROM - ttrss_archived_feeds - WHERE - (SELECT COUNT(*) FROM ttrss_feeds - WHERE ttrss_feeds.feed_url = ttrss_archived_feeds.feed_url AND - owner_uid = '$owner_uid') = 0 AND - owner_uid = '$owner_uid' $search_qpart - ORDER BY id DESC LIMIT $limit"); - } - - $feedctr = 0; - - while ($line = db_fetch_assoc($result)) { - - if ($mode == 1) { - - $feed_url = htmlspecialchars($line["feed_url"]); - $subscribers = $line["subscribers"]; - - $det_result = db_query($link, "SELECT site_url,title,id - FROM ttrss_feeds WHERE feed_url = '$feed_url' LIMIT 1"); - - $details = db_fetch_assoc($det_result); - - $icon_file = ICONS_DIR . "/" . $details["id"] . ".ico"; - - if (file_exists($icon_file) && filesize($icon_file) > 0) { - $feed_icon = ""; - } else { - $feed_icon = ""; - } - - $check_box = ""; - - $class = ($feedctr % 2) ? "even" : "odd"; - - if ($details["site_url"]) { - $site_url = " - www"; - } else { - $site_url = ""; - } - - $feed_url = ""; - - print "
      • $check_box". - "$feed_icon $feed_url " . htmlspecialchars($details["title"]) . - " ($subscribers) - $site_url
      • "; - - } else if ($mode == 2) { - $feed_url = htmlspecialchars($line["feed_url"]); - $site_url = htmlspecialchars($line["site_url"]); - $title = htmlspecialchars($line["title"]); - - $icon_file = ICONS_DIR . "/" . $line["id"] . ".ico"; - - if (file_exists($icon_file) && filesize($icon_file) > 0) { - $feed_icon = ""; - } else { - $feed_icon = ""; - } - - $check_box = ""; - - $class = ($feedctr % 2) ? "even" : "odd"; - - if ($line['articles_archived'] > 0) { - $archived = sprintf(__("%d archived articles"), $line['articles_archived']); - $archived = " ($archived)"; - } else { - $archived = ''; - } - - if ($line["site_url"]) { - $site_url = " - www"; - } else { - $site_url = ""; - } - - $feed_url = ""; - - print "
      • ". - $check_box . "$feed_icon $feed_url " . $title . - $archived . $site_url . "
      • "; - - - } - - ++$feedctr; - } - - if ($feedctr == 0) { - print "
      • ".__('No feeds found.')."

      • "; - } - - return $feedctr; - - } - -?> diff --git a/modules/pref-filters.php b/modules/pref-filters.php deleted file mode 100644 index f3ca8e4cb4..0000000000 --- a/modules/pref-filters.php +++ /dev/null @@ -1,540 +0,0 @@ -".__('Filter Editor')."
        "; - print "
        "; - - print "
        "; - - print ""; - print ""; - print ""; - - $result = db_query($link, "SELECT id,description - FROM ttrss_filter_types ORDER BY description"); - - $filter_types = array(); - - while ($line = db_fetch_assoc($result)) { - //array_push($filter_types, $line["description"]); - $filter_types[$line["id"]] = __($line["description"]); - } - - print "
        ".__("Match")."
        "; - - print "
        "; - - if ($filter_type != 5) { - $date_ops_invisible = 'style="display : none"'; - } - - print ""; - print __("Date") . " "; - - $filter_params = array( - "before" => __("before"), - "after" => __("after")); - - print_select_hash("filter_date_modifier", $filter_param, - $filter_params); - - print " "; - - print ""; - - print ""; - print " "; - print ""; - - print "
        " . __("on field") . " "; - print_select_hash("filter_type", $filter_type, $filter_types, - 'onchange="filterDlgCheckType(this)"'); - - print "
        "; - - print __("in") . " "; - print_feed_select($link, "feed_id", $feed_id); - - print "
        "; - - print "
        ".__("Perform Action")."
        "; - - print "
        "; - - print ""; - - $param_hidden = ($action_id == 4 || $action_id == 6 || $action_id == 7) ? "" : "display : none"; - - print ""; - print " " . __("with parameters:") . " "; - - $param_int_hidden = ($action_id != 7) ? "" : "display : none"; - - print ""; - - $param_int_hidden = ($action_id == 7) ? "" : "display : none"; - - print_label_select($link, "action_param_label", $action_param, - $param_int_hidden); - - print ""; - - print " "; // tiny layout hack - - print "
        "; - - print "
        ".__("Options")."
        "; - print "
        "; - - print "
        "; - - if ($enabled) { - $checked = "checked"; - } else { - $checked = ""; - } - - print " -
        "; - - if ($inverse) { - $checked = "checked"; - } else { - $checked = ""; - } - - print " - "; - - print "
        "; - print "
        "; - - print "
        "; - - $reg_exp = htmlspecialchars($reg_exp, ENT_QUOTES); // second escaping seems to be needed for javascript - - print "
        "; - print ""; - print "
        "; - - print " "; - - print ""; - - print "
        "; - - return; - } - - - if ($subop == "editSave") { - - global $memcache; - - if ($memcache) $memcache->flush(); - - $reg_exp = db_escape_string(trim($_REQUEST["reg_exp"])); - $filter_type = db_escape_string(trim($_REQUEST["filter_type"])); - $filter_id = db_escape_string($_REQUEST["id"]); - $feed_id = db_escape_string($_REQUEST["feed_id"]); - $action_id = db_escape_string($_REQUEST["action_id"]); - $action_param = db_escape_string($_REQUEST["action_param"]); - $action_param_label = db_escape_string($_REQUEST["action_param_label"]); - $enabled = checkbox_to_sql_bool(db_escape_string($_REQUEST["enabled"])); - $inverse = checkbox_to_sql_bool(db_escape_string($_REQUEST["inverse"])); - - # for the time being, no other filters use params anyway... - $filter_param = db_escape_string($_REQUEST["filter_date_modifier"]); - - if (!$feed_id) { - $feed_id = 'NULL'; - } else { - $feed_id = sprintf("'%s'", db_escape_string($feed_id)); - } - - /* When processing 'assign label' filters, action_param_label dropbox - * overrides action_param */ - - if ($action_id == 7) { - $action_param = $action_param_label; - } - - $result = db_query($link, "UPDATE ttrss_filters SET - reg_exp = '$reg_exp', - feed_id = $feed_id, - action_id = '$action_id', - filter_type = '$filter_type', - enabled = $enabled, - inverse = $inverse, - action_param = '$action_param', - filter_param = '$filter_param' - WHERE id = '$filter_id' AND owner_uid = " . $_SESSION["uid"]); - - if (db_affected_rows($link, $result) != 0) { - print_notice(T_sprintf("Saved filter %s", htmlspecialchars($reg_exp))); - } - - } - - if ($subop == "remove") { - - if ($memcache) $memcache->flush(); - - $ids = split(",", db_escape_string($_REQUEST["ids"])); - - foreach ($ids as $id) { - db_query($link, "DELETE FROM ttrss_filters WHERE id = '$id' AND owner_uid = ". $_SESSION["uid"]); - } - } - - if ($subop == "add") { - - if ($memcache) $memcache->flush(); - - $regexp = db_escape_string(trim($_REQUEST["reg_exp"])); - $filter_type = db_escape_string(trim($_REQUEST["filter_type"])); - $feed_id = db_escape_string($_REQUEST["feed_id"]); - $action_id = db_escape_string($_REQUEST["action_id"]); - $action_param = db_escape_string($_REQUEST["action_param"]); - $action_param_label = db_escape_string($_REQUEST["action_param_label"]); - $inverse = checkbox_to_sql_bool(db_escape_string($_REQUEST["inverse"])); - - # for the time being, no other filters use params anyway... - $filter_param = db_escape_string($_REQUEST["filter_date_modifier"]); - - if (!$regexp) return; - - if (!$feed_id) { - $feed_id = 'NULL'; - } else { - $feed_id = sprintf("'%s'", db_escape_string($feed_id)); - } - - /* When processing 'assign label' filters, action_param_label dropbox - * overrides action_param */ - - if ($action_id == 7) { - $action_param = $action_param_label; - } - - $result = db_query($link, - "INSERT INTO ttrss_filters (reg_exp,filter_type,owner_uid,feed_id, - action_id, action_param, inverse, filter_param) - VALUES - ('$regexp', '$filter_type','".$_SESSION["uid"]."', - $feed_id, '$action_id', '$action_param', $inverse, '$filter_param')"); - - if (db_affected_rows($link, $result) != 0) { - print T_sprintf("Created filter %s", htmlspecialchars($regexp)); - } - - return; - } - - if ($quiet) return; - - set_pref($link, "_PREFS_ACTIVE_TAB", "filterConfig"); - - $sort = db_escape_string($_REQUEST["sort"]); - - if (!$sort || $sort == "undefined") { - $sort = "reg_exp"; - } - -// print "
        PLACEHOLDER
        "; - - $result = db_query($link, "SELECT id,description - FROM ttrss_filter_types ORDER BY description"); - - $filter_types = array(); - - while ($line = db_fetch_assoc($result)) { - //array_push($filter_types, $line["description"]); - $filter_types[$line["id"]] = $line["description"]; - } - - - $filter_search = db_escape_string($_REQUEST["search"]); - - if (array_key_exists("search", $_REQUEST)) { - $_SESSION["prefs_filter_search"] = $filter_search; - } else { - $filter_search = $_SESSION["prefs_filter_search"]; - } - - print "
        - - -   - - -
        "; - - print " "; - - print " "; - - print " "; - - print " "; - - if ($filter_search) { - $filter_search = split(' ', db_escape_string($filter_search)); - - $tokens = array(); - - foreach ($filter_search as $token) { - $token = trim($token); - - array_push($tokens, "( - UPPER(ttrss_filter_actions.description) LIKE UPPER('%$token%') OR - UPPER(reg_exp) LIKE UPPER('%$token%') OR - UPPER(action_param) LIKE UPPER('%$token%') OR - UPPER(ttrss_feeds.title) LIKE UPPER('%$token%') OR - UPPER(ttrss_filter_types.description) LIKE UPPER('%$token%'))"); - } - - $filter_search_query = "(" . join($tokens, " AND ") . ") AND "; - - } else { - $filter_search_query = ""; - } - - $result = db_query($link, "SELECT - ttrss_filters.id AS id,reg_exp, - ttrss_filter_types.name AS filter_type_name, - ttrss_filter_types.description AS filter_type_descr, - enabled, - inverse, - feed_id, - filter_param, - filter_type, - ttrss_filter_actions.description AS action_description, - ttrss_feeds.title AS feed_title, - ttrss_filter_actions.name AS action_name, - ttrss_filters.action_param AS action_param - FROM - ttrss_filter_types,ttrss_filter_actions,ttrss_filters LEFT JOIN - ttrss_feeds ON (ttrss_filters.feed_id = ttrss_feeds.id) - WHERE - filter_type = ttrss_filter_types.id AND - $filter_search_query - ttrss_filter_actions.id = action_id AND - ttrss_filters.owner_uid = ".$_SESSION["uid"]." - ORDER by action_description, $sort"); - - if (db_num_rows($result) != 0) { - - print "

        "; - - print ""; - - print " - - - - - "; - - $lnum = 0; - } - - $class = ($lnum % 2) ? "even" : "odd"; - - print ""; - - $line["reg_exp"] = htmlspecialchars($line["reg_exp"]); - - if (!$line["feed_title"]) $line["feed_title"] = __("All feeds"); - - if (!$line["action_param"]) { - $line["action_param"] = "—"; - } else if ($line["action_name"] == "score") { - - $score_pic = theme_image($link, - "images/" . get_score_pic($line["action_param"])); - - $score_pic = ""; - - $line["action_param"] = "$score_pic " . $line["action_param"]; - - } - - $line["feed_title"] = htmlspecialchars($line["feed_title"]); - - print ""; - - $filter_params = array( - "before" => __("before"), - "after" => __("after")); - - if ($line["action_name"] == 'label') { - - $tmp_result = db_query($link, "SELECT fg_color, bg_color - FROM ttrss_labels2 WHERE caption = '". - db_escape_string($line["action_param"])."' AND - owner_uid = " . $_SESSION["uid"]); - - $fg_color = db_fetch_result($tmp_result, 0, "fg_color"); - $bg_color = db_fetch_result($tmp_result, 0, "bg_color"); - - $tmp = "
        - α"; - $tmp .= "
        "; - - $line["action_param"] = "$tmp " . $line["action_param"]; - } - - if ($line["filter_type"] == 5) { - - if (!strtotime($line["reg_exp"])) { - $line["reg_exp"] = "" . - $line["reg_exp"] . ""; - } - - $line["reg_exp"] = __("Date") . " " . - $filter_params[$line['filter_param']] . " " . - $line["reg_exp"]; - } - - if (!$enabled) { - $line["reg_exp"] = "" . - $line["reg_exp"] . " " . __("(Disabled)").""; - $line["feed_title"] = "" . - $line["feed_title"] . ""; - $line["filter_type_descr"] = "" . - $line["filter_type_descr"] . ""; - $line["action_description"] = "" . - $line["action_description"] . ""; - $line["action_param"] = "" . - $line["action_param"] . ""; - } - - $onclick = "onclick='editFilter($filter_id)' title='".__('Click to edit')."'"; - - $inverse_label = ""; - - if ($inverse) { - $inverse_label = " ".__('(Inverse)').""; - } - - print ""; - print ""; - - print ""; - print ""; - - print ""; - - ++$lnum; - } - - print "
        - ".__('Select:')." - ".__('All').", - ".__('None')." - "; - - $lnum = 0; - - $cur_action_description = ""; - - while ($line = db_fetch_assoc($result)) { - - $filter_id = $line["id"]; - $edit_filter_id = $_REQUEST["id"]; - - $enabled = sql_bool_to_bool($line["enabled"]); - $inverse = sql_bool_to_bool($line["inverse"]); - - $this_row_id = "id=\"FILRR-$filter_id\""; - - $line["filter_type_descr"] = __($line["filter_type_descr"]); - $line["action_description"] = __($line["action_description"]); - - if ($line["action_description"] != $cur_action_description) { - $cur_action_description = $line["action_description"]; - - print "
        $cur_action_description
         ".__('Match')."".__('Feed')."".__('Field')."".__('Params')."
        " . $line["reg_exp"] . "$inverse_label" . $line["feed_title"] . "" . $line["filter_type_descr"] . "" . $line["action_param"] . "
        "; - - } else { - - print "

        "; - if (!$filter_search) { - print_warning(__('No filters defined.')); - } else { - print_warning(__('No matching filters found.')); - } - print "

        "; - - } - } - - function print_label_select($link, $name, $value, $style = "") { - - $result = db_query($link, "SELECT caption FROM ttrss_labels2 - WHERE owner_uid = '".$_SESSION["uid"]."' ORDER BY caption"); - - print ""; - - - } -?> diff --git a/modules/pref-labels.php b/modules/pref-labels.php deleted file mode 100644 index a744b9f6a8..0000000000 --- a/modules/pref-labels.php +++ /dev/null @@ -1,313 +0,0 @@ -%s", htmlspecialchars($caption)); - } - - } - - return; - } - - set_pref($link, "_PREFS_ACTIVE_TAB", "labelConfig"); - - $sort = db_escape_string($_REQUEST["sort"]); - - if (!$sort || $sort == "undefined") { - $sort = "caption"; - } - - $label_search = db_escape_string($_REQUEST["search"]); - - if (array_key_exists("search", $_REQUEST)) { - $_SESSION["prefs_label_search"] = $label_search; - } else { - $label_search = $_SESSION["prefs_label_search"]; - } - - print "
        - - -
        "; - - print "
        "; - - print" "; - - print " "; - - print ""; - - - print "
        "; - - if ($label_search) { - - $label_search = split(" ", $label_search); - $tokens = array(); - - foreach ($label_search as $token) { - - $token = trim($token); - array_push($tokens, "(UPPER(caption) LIKE UPPER('%$token%'))"); - - } - - $label_search_query = "(" . join($tokens, " AND ") . ") AND "; - - } else { - $label_search_query = ""; - } - - $result = db_query($link, "SELECT - * - FROM - ttrss_labels2 - WHERE - $label_search_query - owner_uid = ".$_SESSION["uid"]." - ORDER BY $sort"); - -// print "
        PLACEHOLDER
        "; - - if (db_num_rows($result) != 0) { - - print "

        "; - - print " - - - - "; */ - - $lnum = 0; - - while ($line = db_fetch_assoc($result)) { - - $class = ($lnum % 2) ? "even" : "odd"; - - $label_id = $line["id"]; - $this_row_id = "id=\"LILRR-$label_id\""; - - print ""; - - $line["caption"] = htmlspecialchars($line["caption"]); - - $fg_color = $line["fg_color"]; - $bg_color = $line["bg_color"]; - - if (!$fg_color) $fg_color = ""; - if (!$bg_color) $bg_color = ""; - - print ""; - - $id = $line['id']; - - print ""; - - print ""; - - ++$lnum; - } - - print "
        - ".__('Select:')." - ".__('All').", - ".__('None')." - "; - -/* print "
         ".__('Caption')."
        "; - - print "
        α"; - print_color_picker($id); - print "
        "; - - - print "" . $line["caption"] . - ""; - - print "
        "; - - - } else { - print "

        "; - if (!$label_search) { - print_warning(__('No labels defined.')); - } else { - print_warning(__('No matching labels found.')); - } - print "

        "; - - } - } - - function print_color_picker($id) { - - print ""; - } - -?> diff --git a/modules/pref-prefs.php b/modules/pref-prefs.php deleted file mode 100644 index a55d78f9f5..0000000000 --- a/modules/pref-prefs.php +++ /dev/null @@ -1,421 +0,0 @@ - - - "; - } - - function module_pref_prefs($link) { - - global $access_level_names; - - $subop = $_REQUEST["subop"]; - - $prefs_blacklist = array("HIDE_FEEDLIST", "SYNC_COUNTERS", "ENABLE_LABELS", - "ENABLE_SEARCH_TOOLBAR", "HIDE_READ_FEEDS"); - - $profile_blacklist = array("ALLOW_DUPLICATE_POSTS", "PURGE_OLD_DAYS", - "PURGE_UNREAD_ARTICLES", "DIGEST_ENABLE", "DIGEST_CATCHUP", - "BLACKLISTED_TAGS", "ENABLE_FEED_ICONS", "ENABLE_API_ACCESS", - "UPDATE_POST_ON_CHECKSUM_CHANGE", "DEFAULT_UPDATE_INTERVAL", - "MARK_UNREAD_ON_UPDATE"); - - if (FORCE_ARTICLE_PURGE != 0) { - array_push($prefs_blacklist, "PURGE_OLD_DAYS"); - array_push($prefs_blacklist, "PURGE_UNREAD_ARTICLES"); - } - - if ($subop == "change-password") { - - $old_pw = $_POST["OLD_PASSWORD"]; - $new_pw = $_POST["NEW_PASSWORD"]; - $con_pw = $_POST["CONFIRM_PASSWORD"]; - - if ($old_pw == "") { - print "ERROR: ".__("Old password cannot be blank."); - return; - } - - if ($new_pw == "") { - print "ERROR: ".__("New password cannot be blank."); - return; - } - - if ($new_pw != $con_pw) { - print "ERROR: ".__("Entered passwords do not match."); - return; - } - - $old_pw_hash1 = encrypt_password($_POST["OLD_PASSWORD"]); - $old_pw_hash2 = encrypt_password($_POST["OLD_PASSWORD"], - $_SESSION["name"]); - - $new_pw_hash = encrypt_password($_POST["NEW_PASSWORD"], - $_SESSION["name"]); - - $active_uid = $_SESSION["uid"]; - - if ($old_pw && $new_pw) { - - $login = db_escape_string($_SERVER['PHP_AUTH_USER']); - - $result = db_query($link, "SELECT id FROM ttrss_users WHERE - id = '$active_uid' AND (pwd_hash = '$old_pw_hash1' OR - pwd_hash = '$old_pw_hash2')"); - - if (db_num_rows($result) == 1) { - db_query($link, "UPDATE ttrss_users SET pwd_hash = '$new_pw_hash' - WHERE id = '$active_uid'"); - - $_SESSION["pwd_hash"] = $new_pw_hash; - - print __("Password has been changed."); - } else { - print "ERROR: ".__('Old password is incorrect.'); - } - } - - return; - - } else if ($subop == "save-config") { - -# $_SESSION["prefs_op_result"] = "save-config"; - - $_SESSION["prefs_cache"] = false; - -// print_r($_POST); - - $orig_theme = get_pref($link, "_THEME_ID"); - - foreach (array_keys($_POST) as $pref_name) { - - $pref_name = db_escape_string($pref_name); - $value = db_escape_string($_POST[$pref_name]); - - set_pref($link, $pref_name, $value); - - } - - if ($orig_theme != get_pref($link, "_THEME_ID")) { - print "PREFS_THEME_CHANGED"; - } else { - print __("The configuration was saved."); - } - - return; - - } else if ($subop == "getHelp") { - - $pref_name = db_escape_string($_REQUEST["pn"]); - - $result = db_query($link, "SELECT help_text FROM ttrss_prefs - WHERE pref_name = '$pref_name'"); - - if (db_num_rows($result) > 0) { - $help_text = db_fetch_result($result, 0, "help_text"); - print $help_text; - } else { - printf(__("Unknown option: %s"), $pref_name); - } - - } else if ($subop == "change-email") { - - $email = db_escape_string($_POST["email"]); - $active_uid = $_SESSION["uid"]; - - db_query($link, "UPDATE ttrss_users SET email = '$email' - WHERE id = '$active_uid'"); - - print __("E-mail has been changed."); - - return; - - } else if ($subop == "reset-config") { - - $_SESSION["prefs_op_result"] = "reset-to-defaults"; - - if ($_SESSION["profile"]) { - $profile_qpart = "profile = '" . $_SESSION["profile"] . "'"; - } else { - $profile_qpart = "profile IS NULL"; - } - - db_query($link, "DELETE FROM ttrss_user_prefs - WHERE $profile_qpart AND owner_uid = ".$_SESSION["uid"]); - - initialize_user_prefs($link, $_SESSION["uid"], $_SESSION["profile"]); - - print "PREFS_THEME_CHANGED"; - -// print __("The configuration was reset to defaults."); - - return; - - } else { - - set_pref($link, "_PREFS_ACTIVE_TAB", "genConfig"); - - if ($_SESSION["profile"]) { - print_notice("Some preferences are only available in default profile."); - } - - if (!SINGLE_USER_MODE) { - - $result = db_query($link, "SELECT id FROM ttrss_users - WHERE id = ".$_SESSION["uid"]." AND pwd_hash - = 'SHA1:5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8'"); - - if (db_num_rows($result) != 0) { - print format_warning(__("Your password is at default value, - please change it."), "default_pass_warning"); - } - -/* if ($_SESSION["pwd_change_result"] == "failed") { - print format_warning("Could not change the password."); - } - - if ($_SESSION["pwd_change_result"] == "ok") { - print format_notice("Password was changed."); - } - - $_SESSION["pwd_change_result"] = ""; */ - -/* if ($_SESSION["prefs_op_result"] == "reset-to-defaults") { - print format_notice(__("The configuration was reset to defaults.")); -} */ - -# if ($_SESSION["prefs_op_result"] == "save-config") { -# print format_notice(__("The configuration was saved.")); -# } - - $_SESSION["prefs_op_result"] = ""; - - print ""; - - print ""; - print ""; - - $result = db_query($link, "SELECT email,access_level FROM ttrss_users - WHERE id = ".$_SESSION["uid"]); - - $email = db_fetch_result($result, 0, "email"); - - print ""; - print ""; - - if (!SINGLE_USER_MODE) { - - $access_level = db_fetch_result($result, 0, "access_level"); - - print ""; - print ""; - - } - - print "

        ".__("Personal data")."

        ".__('E-mail')."
        ".__('Access level')."" . $access_level_names[$access_level] . "
        "; - - print ""; - print ""; - - print "
        "; - - print "

        "; - - print "

        "; - - print ""; - print ""; - - print ""; - print ""; - - print ""; - - print ""; - - print ""; - - print ""; - - print "

        ".__("Authentication")."

        ".__("Old password")."
        ".__("New password")."
        ".__("Confirm password")."
        "; - - print ""; - print ""; - - print "
        "; - - print "

        "; - - } - - if ($_SESSION["profile"]) { - initialize_user_prefs($link, $_SESSION["uid"], $_SESSION["profile"]); - $profile_qpart = "profile = '" . $_SESSION["profile"] . "'"; - } else { - initialize_user_prefs($link, $_SESSION["uid"]); - $profile_qpart = "profile IS NULL"; - } - - $result = db_query($link, "SELECT - ttrss_user_prefs.pref_name,short_desc,help_text,value,type_name, - section_name,def_value,section_id - FROM ttrss_prefs,ttrss_prefs_types,ttrss_prefs_sections,ttrss_user_prefs - WHERE type_id = ttrss_prefs_types.id AND - $profile_qpart AND - section_id = ttrss_prefs_sections.id AND - ttrss_user_prefs.pref_name = ttrss_prefs.pref_name AND - short_desc != '' AND - owner_uid = ".$_SESSION["uid"]." - ORDER BY section_id,short_desc"); - - print "

        "; - - $lnum = 0; - - $active_section = ""; - - while ($line = db_fetch_assoc($result)) { - - if (in_array($line["pref_name"], $prefs_blacklist)) { - continue; - } - - if ($_SESSION["profile"] && in_array($line["pref_name"], - $profile_blacklist)) { - continue; - } - - if ($active_section != $line["section_name"]) { - - if ($active_section != "") { - print ""; - } - - print "

        "; - - $active_section = $line["section_name"]; - - print ""; - - if ($line["section_id"] == 2) { - print ""; - - $user_theme = get_pref($link, "_THEME_ID"); - $themes = get_all_themes(); - - print ""; - } - -// print " -// "; - - $lnum = 0; - } - -// $class = ($lnum % 2) ? "even" : "odd"; - - print ""; - - $type_name = $line["type_name"]; - $pref_name = $line["pref_name"]; - $value = $line["value"]; - $def_value = $line["def_value"]; - $help_text = $line["help_text"]; - - print ""; - - print ""; - - print ""; - - $lnum++; - } - - print "

        ".__($active_section)."

        ".__("Select theme")."
        OptionValue
        " . __($line["short_desc"]); - - if ($help_text) print "
        ".__($help_text)."
        "; - - print "
        "; - - if ($pref_name == "DEFAULT_UPDATE_INTERVAL") { - - global $update_intervals_nodefault; - - print_select_hash($pref_name, $value, $update_intervals_nodefault); - - } else if ($type_name == "bool") { -// print_select($pref_name, $value, array("true", "false")); - - if ($value == "true") { - $value = __("Yes"); - } else { - $value = __("No"); - } - - print_radio($pref_name, $value, __("Yes"), array(__("Yes"), __("No"))); - - } else { - print ""; - } - - print "
        "; - - print ""; - - print "

        "; - - print " "; - - print "

        "; - - print "
        "; - - } - } -?> diff --git a/modules/pref-users.php b/modules/pref-users.php deleted file mode 100644 index a57178d6c0..0000000000 --- a/modules/pref-users.php +++ /dev/null @@ -1,496 +0,0 @@ -".__('User details')."
        "; - - print "
        "; - - $result = db_query($link, "SELECT login, - ".SUBSTRING_FOR_DATE."(last_login,1,16) AS last_login, - access_level, - (SELECT COUNT(int_id) FROM ttrss_user_entries - WHERE owner_uid = id) AS stored_articles, - ".SUBSTRING_FOR_DATE."(created,1,16) AS created - FROM ttrss_users - WHERE id = '$uid'"); - - if (db_num_rows($result) == 0) { - print "

        ".__('User not found')."

        "; - return; - } - - // print "

        User Details

        "; - - $login = db_fetch_result($result, 0, "login"); - - print ""; - - $last_login = date(get_pref($link, 'LONG_DATE_FORMAT'), - strtotime(db_fetch_result($result, 0, "last_login"))); - - $created = date(get_pref($link, 'LONG_DATE_FORMAT'), - strtotime(db_fetch_result($result, 0, "created"))); - - $access_level = db_fetch_result($result, 0, "access_level"); - $stored_articles = db_fetch_result($result, 0, "stored_articles"); - - print ""; - print ""; - - $result = db_query($link, "SELECT COUNT(id) as num_feeds FROM ttrss_feeds - WHERE owner_uid = '$uid'"); - - $num_feeds = db_fetch_result($result, 0, "num_feeds"); - - print ""; - - print "
        ".__('Registered')."$created
        ".__('Last logged in')."$last_login
        ".__('Subscribed feeds count')."$num_feeds
        "; - - print "

        ".__('Subscribed feeds')."

        "; - - $result = db_query($link, "SELECT id,title,site_url FROM ttrss_feeds - WHERE owner_uid = '$uid' ORDER BY title"); - - print "
          "; - - $row_class = "odd"; - - while ($line = db_fetch_assoc($result)) { - - $icon_file = ICONS_URL."/".$line["id"].".ico"; - - if (file_exists($icon_file) && filesize($icon_file) > 0) { - $feed_icon = ""; - } else { - $feed_icon = ""; - } - - print "
        • $feed_icon ".$line["title"]."
        • "; - - $row_class = toggleEvenOdd($row_class); - - } - - if (db_num_rows($result) < $num_feeds) { - // FIXME - add link to show ALL subscribed feeds here somewhere - print "
        •  ...
        • "; - } - - print "
        "; - - print "
        -
        "; - - print "
        "; - - return; - } - - if ($subop == "edit") { - - $id = db_escape_string($_REQUEST["id"]); - - print "
        ".__('User Editor')."
        "; - - print "
        "; - - print "
        "; - - print ""; - print ""; - print ""; - - $result = db_query($link, "SELECT * FROM ttrss_users WHERE id = '$id'"); - - $login = db_fetch_result($result, 0, "login"); - $access_level = db_fetch_result($result, 0, "access_level"); - $email = db_fetch_result($result, 0, "email"); - - $sel_disabled = ($id == $_SESSION["uid"]) ? "disabled" : ""; - - print "
        ".__("User")."
        "; - print "
        "; - - if ($sel_disabled) { - print ""; - print ""; - } else { - print ""; - } - - print "
        "; - - print "
        ".__("Authentication")."
        "; - print "
        "; - - print __('Access level: ') . " "; - - if (!$sel_disabled) { - print_select_hash("access_level", $access_level, $access_level_names, - $sel_disabled); - } else { - print_select_hash("", $access_level, $access_level_names, - $sel_disabled); - print ""; - } - - print "
        "; - - print __('Change password to') . - " "; - - print "
        "; - - print "
        ".__("Options")."
        "; - print "
        "; - - print __('E-mail: '). - " "; - - print "
        "; - - print ""; - - print "
        "; - - print "
        - -
        "; - - print "
        "; - - return; - } - - if ($subop == "editSave") { - - if (!WEB_DEMO_MODE && $_SESSION["access_level"] >= 10) { - - $login = db_escape_string(trim($_REQUEST["login"])); - $uid = db_escape_string($_REQUEST["id"]); - $access_level = (int) $_REQUEST["access_level"]; - $email = db_escape_string(trim($_REQUEST["email"])); - $password = db_escape_string(trim($_REQUEST["password"])); - - if ($password) { - $pwd_hash = encrypt_password($password, $login); - $pass_query_part = "pwd_hash = '$pwd_hash', "; - print_notice(T_sprintf('Changed password of user %s.', $login)); - } else { - $pass_query_part = ""; - } - - db_query($link, "UPDATE ttrss_users SET $pass_query_part login = '$login', - access_level = '$access_level', email = '$email' WHERE id = '$uid'"); - - } - } else if ($subop == "remove") { - - if ($_SESSION["access_level"] >= 10) { - - $ids = split(",", db_escape_string($_REQUEST["ids"])); - - foreach ($ids as $id) { - if ($id != $_SESSION["uid"]) { - db_query($link, "DELETE FROM ttrss_tags WHERE owner_uid = '$id'"); - db_query($link, "DELETE FROM ttrss_feeds WHERE owner_uid = '$id'"); - db_query($link, "DELETE FROM ttrss_users WHERE id = '$id'"); - } - } - } - } else if ($subop == "add") { - - if ($_SESSION["access_level"] >= 10) { - - $login = db_escape_string(trim($_REQUEST["login"])); - $tmp_user_pwd = make_password(8); - $pwd_hash = encrypt_password($tmp_user_pwd, $login); - - $result = db_query($link, "SELECT id FROM ttrss_users WHERE - login = '$login'"); - - if (db_num_rows($result) == 0) { - - db_query($link, "INSERT INTO ttrss_users - (login,pwd_hash,access_level,last_login,created) - VALUES ('$login', '$pwd_hash', 0, null, NOW())"); - - - $result = db_query($link, "SELECT id FROM ttrss_users WHERE - login = '$login' AND pwd_hash = '$pwd_hash'"); - - if (db_num_rows($result) == 1) { - - $new_uid = db_fetch_result($result, 0, "id"); - - print_notice(T_sprintf("Added user %s with password %s", - $login, $tmp_user_pwd)); - - initialize_user($link, $new_uid); - - } else { - - print_warning(T_sprintf("Could not create user %s", $login)); - - } - } else { - print_warning(T_sprintf("User %s already exists.", $login)); - } - } - } else if ($subop == "resetPass") { - - if (!WEB_DEMO_MODE && $_SESSION["access_level"] >= 10) { - - $uid = db_escape_string($_REQUEST["id"]); - - $result = db_query($link, "SELECT login,email - FROM ttrss_users WHERE id = '$uid'"); - - $login = db_fetch_result($result, 0, "login"); - $email = db_fetch_result($result, 0, "email"); - $tmp_user_pwd = make_password(8); - $pwd_hash = encrypt_password($tmp_user_pwd, $login); - - db_query($link, "UPDATE ttrss_users SET pwd_hash = '$pwd_hash' - WHERE id = '$uid'"); - - print_notice(T_sprintf("Changed password of user %s - to %s", $login, $tmp_user_pwd)); - - if ($email) { - print_notice(T_sprintf("Notifying %s.", $email)); - - require_once "lib/MiniTemplator.class.php"; - - $tpl = new MiniTemplator; - - $tpl->readTemplateFromFile("templates/resetpass_template.txt"); - - $tpl->setVariable('LOGIN', $login); - $tpl->setVariable('NEWPASS', $tmp_user_pwd); - - $tpl->addBlock('message'); - - $message = ""; - - $tpl->generateOutputToString($message); - - $mail = new PHPMailer(); - - $mail->PluginDir = "lib/phpmailer/"; - $mail->SetLanguage("en", "lib/phpmailer/language/"); - - $mail->CharSet = "UTF-8"; - - $mail->From = DIGEST_FROM_ADDRESS; - $mail->FromName = DIGEST_FROM_NAME; - $mail->AddAddress($email, $login); - - if (DIGEST_SMTP_HOST) { - $mail->Host = DIGEST_SMTP_HOST; - $mail->Mailer = "smtp"; - $mail->SMTPAuth = DIGEST_SMTP_LOGIN != ''; - $mail->Username = DIGEST_SMTP_LOGIN; - $mail->Password = DIGEST_SMTP_PASSWORD; - } - - $mail->IsHTML(false); - $mail->Subject = __("[tt-rss] Password change notification"); - $mail->Body = $message; - - $rc = $mail->Send(); - - if (!$rc) print_error($mail->ErrorInfo); - -/* mail("$login <$email>", "Password reset notification", - "Hi, $login.\n". - "\n". - "Your password for this TT-RSS installation was reset by". - " an administrator.\n". - "\n". - "Your new password is $tmp_user_pwd, please remember". - " it for later reference.\n". - "\n". - "Sincerely, TT-RSS Mail Daemon.", "From: " . MAIL_FROM); */ - } - - print "
        "; - - } - } - - set_pref($link, "_PREFS_ACTIVE_TAB", "userConfig"); - - $user_search = db_escape_string($_REQUEST["search"]); - - if (array_key_exists("search", $_REQUEST)) { - $_SESSION["prefs_user_search"] = $user_search; - } else { - $user_search = $_SESSION["prefs_user_search"]; - } - - print "
        - - -
        "; - - $sort = db_escape_string($_REQUEST["sort"]); - - if (!$sort || $sort == "undefined") { - $sort = "login"; - } - - print ""; - - print " - - - - "; - - print "
        "; - - if ($user_search) { - - $user_search = split(" ", $user_search); - $tokens = array(); - - foreach ($user_search as $token) { - $token = trim($token); - array_push($tokens, "(UPPER(login) LIKE UPPER('%$token%'))"); - } - - $user_search_query = "(" . join($tokens, " AND ") . ") AND "; - - } else { - $user_search_query = ""; - } - - $result = db_query($link, "SELECT - id,login,access_level,email, - ".SUBSTRING_FOR_DATE."(last_login,1,16) as last_login, - ".SUBSTRING_FOR_DATE."(created,1,16) as created - FROM - ttrss_users - WHERE - $user_search_query - id > 0 - ORDER BY $sort"); - - if (db_num_rows($result) > 0) { - -// print "
        PLACEHOLDER
        "; - - print "

        "; - - print " - - - - - "; - - $lnum = 0; - - while ($line = db_fetch_assoc($result)) { - - $class = ($lnum % 2) ? "even" : "odd"; - - $uid = $line["id"]; - $edit_uid = $_REQUEST["id"]; - - if ($subop == "edit" && $uid != $edit_uid) { - $class .= "Grayed"; - $this_row_id = ""; - } else { - $this_row_id = "id=\"UMRR-$uid\""; - } - - print ""; - - $line["login"] = htmlspecialchars($line["login"]); - -# $line["last_login"] = date(get_pref($link, 'SHORT_DATE_FORMAT'), -# strtotime($line["last_login"])); - - if (get_pref($link, 'HEADLINES_SMART_DATE')) { - $line["last_login"] = smart_date_time(strtotime($line["last_login"])); - $line["created"] = smart_date_time(strtotime($line["created"])); - } else { - $line["last_login"] = date(get_pref($link, 'SHORT_DATE_FORMAT'), - strtotime($line["last_login"])); - $line["created"] = date(get_pref($link, 'SHORT_DATE_FORMAT'), - strtotime($line["created"])); - } - - print ""; - - $onclick = "onclick='editUser($uid)' title='".__('Click to edit')."'"; - - print ""; - - if (!$line["email"]) $line["email"] = " "; - - print ""; - print ""; - print ""; - - print ""; - - ++$lnum; - } - - print "
        - ".__('Select:')." - ".__('All').", - ".__('None')." - "; - - print "
         ".__('Login')."".__('Access Level')."".__('Registered')."".__('Last login')."
        " . $line["login"] . "" . $access_level_names[$line["access_level"]] . "" . $line["created"] . "" . $line["last_login"] . "
        "; - - } else { - print "

        "; - if (!$user_search) { - print_warning(__('No users defined.')); - } else { - print_warning(__('No matching users found.')); - } - print "

        "; - - } - - } -?> diff --git a/offline.js b/offline.js deleted file mode 100644 index 372d943927..0000000000 --- a/offline.js +++ /dev/null @@ -1,1789 +0,0 @@ -var SCHEMA_VERSION = 10; - -var offline_mode = false; -var store = false; -var localServer = false; -var db = false; -var articles_synced = 0; -var sync_in_progress = false; -var sync_timer = false; - -function view_offline(id) { - try { - - enableHotkeys(); - showArticleInHeadlines(id); - - db.execute("UPDATE articles SET unread = 0 WHERE id = ?", [id]); - - var rs = db.execute("SELECT * FROM articles WHERE id = ?", [id]); - - if (rs.isValidRow()) { - - var tmp = "
        "; - - tmp += "
        "; - - tmp += "
        "+rs.fieldByName("updated")+"
        "; - - if (rs.fieldByName("link") != "") { - tmp += ""; - } else { - tmp += "
        " + rs.fieldByName("title") + "
        "; - } - -/* tmp += "
        "+ - "Tags"; - tmp += rs.fieldByName("tags"); - tmp += "
        "; */ - -/* tmp += ""; */ - - tmp += "
        "; - - tmp += "
        " - tmp += rs.fieldByName("content"); - tmp += "
        "; - - tmp += "
        "; - - render_article(tmp); - update_local_feedlist_counters(); - } - - rs.close(); - - return false; - - } catch (e) { - exception_error("view_offline", e); - } -} - -function viewfeed_offline(feed_id, subop, is_cat, subop_param, skip_history, offset) { - try { - notify(''); - - if (!offset) offset = 0; - - if (offset > 0) { - _feed_cur_page = parseInt(offset); - if (_infscroll_request_sent) { - return; - } - } else { - _feed_cur_page = 0; - _infscroll_disable = 0; - } - - if (getActiveFeedId() != feed_id) { - _feed_cur_page = 0; - active_post_id = 0; - _infscroll_disable = 0; - } - - loading_set_progress(100); - - clean_feed_selections(); - - setActiveFeedId(feed_id, is_cat); - - if (!is_cat) { - var feedr = $("FEEDR-" + feed_id); - if (feedr && !feedr.className.match("Selected")) { - feedr.className = feedr.className + "Selected"; - } - } else { - var feedr = $("FCAT-" + feed_id); - if (feedr && !feedr.className.match("Selected")) { - feedr.className = feedr.className + "Selected"; - } - } - - if (subop == "MarkAllRead") { - catchup_local_feed(feed_id, is_cat); - } - - Form.enable("main_toolbar_form"); - - var f = $("headlines-frame"); - try { - if (reply.offset == 0) { - debug("resetting headlines scrollTop"); - f.scrollTop = 0; - } - } catch (e) { }; - - - var tmp = ""; - var feed_title = ""; - - if (is_cat) { - feed_title = get_local_category_title(feed_id); - } else { - feed_title = get_local_feed_title(feed_id); - } - - if (feed_title) { - - if (offset == 0) { - tmp += "
        "; - - tmp += "
        "; - tmp += "
        "; - tmp += feed_title; - tmp += "
        "; - - var sel_all_link; - var sel_unread_link; - var sel_none_link; - var sel_inv_link; - - var catchup_feed_link = "javascript:catchupCurrentFeed()"; - var catchup_sel_link = "javascript:catchupSelection()"; - - var tog_unread_link; - var tog_marked_link; - - if ($("content-frame")) { - sel_all_link = "javascript:selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', true, '', true)"; - sel_unread_link = "javascript:selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', true, 'Unread', true)"; - sel_none_link = "javascript:selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', false)"; - sel_inv_link = "javascript:invertHeadlineSelection()"; - - tog_unread_link = "javascript:selectionToggleUnread()"; - tog_marked_link = "javascript:selectionToggleMarked()"; - - } else { - sel_all_link = "javascript:cdmSelectArticles('all')"; - sel_unread_link = "javascript:cdmSelectArticles('unread')"; - sel_none_link = "javascript:cdmSelectArticles('none')"; - sel_inv_link = "javascript:invertHeadlineSelection()"; - - tog_unread_link = "javascript:selectionToggleUnread(true)"; - tog_marked_link = "javascript:selectionToggleMarked(true)"; - } - - tmp += __('Select:')+ - " "+__('All')+", "+ - ""+__('Unread')+", "+ - ""+__('Invert')+", "+ - ""+__('None')+""; - - tmp += "  "; - - tmp += "" + - __("Actions...") + "  " + - ""; - - tmp += "
          "; - - tmp += "
        • "+__('Selection toggle:')+"
        • "+ - "
        •   "+__('Unread')+"
        • "+ - "
        •   "+__('Starred')+"
        • "+ - "
        • "+__('Mark as read:')+"
        • "+ - "
        •   "+__('Selection')+"
        • "; - - tmp += "
        •   "+__('Entire feed')+ - "
        • "; - - tmp += "
        "; - - tmp += "
        "; - - tmp += "
        "; - if ($("content-frame")) { - tmp += ""; - } - - } - - var limit = 30; - - var toolbar_form = document.forms["main_toolbar_form"]; - - //var limit = toolbar_form.limit[toolbar_form.limit.selectedIndex].value; - var view_mode = toolbar_form.view_mode[toolbar_form.view_mode.selectedIndex].value; - - var limit_qpart = ""; - var strategy_qpart = ""; - var mode_qpart = ""; - var offset_qpart = ""; - - if (limit != 0) { - limit_qpart = "LIMIT " + limit; - } - - if (view_mode == "all_articles") { - mode_qpart = "1"; - } else if (view_mode == "adaptive") { - if (is_cat && get_local_category_unread(feed_id) || - get_local_feed_unread(feed_id) > 0) { - mode_qpart = "unread = 1"; - } else { - mode_qpart = "1"; - } - - } else if (view_mode == "marked") { - mode_qpart = "marked = 1"; - } else if (view_mode == "unread") { - mode_qpart = "unread = 1"; - } else { - mode_qpart = "1"; - } - - var ext_tables_qpart = ""; - - if (is_cat) { - if (feed_id >= 0) { - strategy_qpart = "cat_id = " + feed_id; - } else if (feed_id == -2) { - strategy_qpart = "article_labels.id = articles.id"; - ext_tables_qpart = ",article_labels"; - } - } else if (feed_id > 0) { - strategy_qpart = "feed_id = " + feed_id; - } else if (feed_id == -1) { - strategy_qpart = "marked = 1"; - } else if (feed_id == -4) { - strategy_qpart = "1"; - } else if (feed_id < -10) { - var label_id = -11 - feed_id; - strategy_qpart = "article_labels.id = articles.id AND label_id = " + label_id; - ext_tables_qpart = ",article_labels"; - } - - if (offset > 0) { - offset_qpart = "OFFSET " + (offset*30); - } else { - offset_qpart = ""; - } - - var query = "SELECT *,feeds.title AS feed_title "+ - "FROM articles,feeds,categories"+ext_tables_qpart+" "+ - "WHERE " + - "cat_id = categories.id AND " + - "feed_id = feeds.id AND " + - strategy_qpart + - " AND " + mode_qpart + - " ORDER BY updated DESC "+ - limit_qpart + " " + - offset_qpart; - - var rs = db.execute(query); - - var line_num = offset*30; - - var real_feed_id = feed_id; - - while (rs.isValidRow()) { - - var id = rs.fieldByName("id"); - var feed_id = rs.fieldByName("feed_id"); - - var entry_feed_title = false; - - if (real_feed_id < 0 || is_cat) { - entry_feed_title = rs.fieldByName("feed_title"); - } - - var marked_pic; - - var row_class = (line_num % 2) ? "even" : "odd"; - - if (rs.fieldByName("unread") == "1") { - row_class += "Unread"; - } - - var labels = get_local_article_labels(id); - - var labels_str = ""; - labels_str += format_article_labels(labels, id); - labels_str += ""; - - if (rs.fieldByName("marked") == "1") { - marked_pic = ""; - } else { - marked_pic = ""; - } - - var mouseover_attrs = "onmouseover='postMouseIn($id)' "+ - "onmouseout='postMouseOut($id)'"; - - var content_preview = truncate_string(strip_tags(rs.fieldByName("content")), - 100); - - if ($("content-frame")) { - - tmp += ""; - - tmp += ""; - - tmp += ""; - - tmp += ""; - - tmp += ""; - - tmp += ""; - - tmp += ""; - } else { - - var add_class = ""; - - if (rs.fieldByName("unread") == "1") { - add_class = "Unread"; - } - - tmp += "
        "; - - feed_icon_img = "\"\""; - cdm_feed_icon = ""+feed_icon_img+""; - - tmp += "
        "; - tmp += "
        "+ - rs.fieldByName("updated").substring(0,16)+ - " "+cdm_feed_icon+"
        "; - - tmp += ""+ - ""+rs.fieldByName("title")+""; - - tmp += labels_str; - - if (entry_feed_title) { - tmp += " ("+entry_feed_title+")"; - } - - tmp += "
        "; - - tmp += "
        "; - tmp += rs.fieldByName("content"); - tmp += "
        " - tmp += "
        "; - - tmp += "
        "; - tmp += __("Select:")+ - " "; - - tmp += ""+marked_pic+" "; - -/* tmp += ""+ - "Tags"+ - ""+rs.fieldByName("tags")+""+ - ""; */ - - tmp += "Toggle: "+ - "Unread"; - tmp += "
        "; - - tmp += "
        "; - } - - rs.next(); - line_num++; - } - - if (line_num - offset*30 < 30) { - _infscroll_disable = 1; - } - - rs.close(); - - if (offset == 0) { - tmp += "
        "+ - ""+marked_pic+""; - - tmp += ""+ - rs.fieldByName("title"); - - tmp += " - "+content_preview+""; - - tmp += ""; - - tmp += labels_str; - - if (entry_feed_title) { - tmp += " "+ - "("+entry_feed_title+")"; - } - - tmp += ""+ - ""+rs.fieldByName("updated").substring(0,16)+ - "
        "; - - if (line_num - offset*30 == 0) { - tmp += "
        " + - __("No articles found to display.") + - "
        "; - } - tmp += "
        "; - } - - if (offset == 0) { - var container = $("headlines-frame"); - container.innerHTML = tmp; - } else { - var ids = getSelectedArticleIds2(); - - var container = $("headlinesList"); - container.innerHTML = container.innerHTML + tmp; - - for (var i = 0; i < ids.length; i++) { - markHeadline(ids[i]); - } - } - } - - remove_splash(); - - _infscroll_request_sent = 0; - - } catch (e) { - exception_error("viewfeed_offline", e); - } -} - -function render_offline_feedlist() { - try { - var cats_enabled = getInitParam("enable_feed_cats") == "1"; - - var tmp = "
          "; - - var unread = get_local_feed_unread(-4); - - global_unread = unread; - updateTitle(); - - if (cats_enabled) { - tmp += printCategoryHeader(-1, is_local_cat_collapsed(-1), false); - } - - tmp += printFeedEntry(-4, __("All articles"), "feed", unread, - "images/tag.png"); - - var unread = get_local_feed_unread(-1); - - tmp += printFeedEntry(-1, __("Starred articles"), "feed", unread, - "images/mark_set.png"); - - if (cats_enabled) { - tmp += "
        "; - } else { - tmp += "

      • "; - } - - if (cats_enabled) { - tmp += printCategoryHeader(-2, is_local_cat_collapsed(-2), false); - } - - var rs = db.execute("SELECT id,caption "+ - "FROM labels "+ - "ORDER BY caption"); - - while (rs.isValidRow()) { - var id = -11 - parseInt(rs.field(0)); - var caption = rs.field(1); - var unread = get_local_feed_unread(id); - - tmp += printFeedEntry(id, caption, "feed", unread, - "images/label.png"); - - rs.next(); - } - - rs.close(); - - if (cats_enabled) { - tmp += "
      "; - } else { - tmp += "

    • "; - } - -/* var rs = db.execute("SELECT feeds.id,feeds.title,has_icon,COUNT(articles.id) "+ - "FROM feeds LEFT JOIN articles ON (feed_id = feeds.id) "+ - "WHERE unread = 1 OR unread IS NULL GROUP BY feeds.id "+ - "ORDER BY feeds.title"); */ - - var order_by = "feeds.title"; - - if (cats_enabled) order_by = "categories.title," + order_by; - - var rs = db.execute("SELECT "+ - "feeds.id,feeds.title,has_icon,cat_id,collapsed "+ - "FROM feeds,categories WHERE cat_id = categories.id "+ - "ORDER BY "+order_by); - - var tmp_cat_id = -1; - - while (rs.isValidRow()) { - - var id = rs.field(0); - var title = rs.field(1); - var has_icon = rs.field(2); - var unread = get_local_feed_unread(id); - var cat_id = rs.field(3); - var cat_hidden = rs.field(4); - - if (cat_id != tmp_cat_id && cats_enabled) { - if (tmp_cat_id != -1) { - tmp += "
  • "; - } - tmp += printCategoryHeader(cat_id, cat_hidden, true); - tmp_cat_id = cat_id; - } - - var icon = ""; - - if (has_icon) { - icon = getInitParam("icons_url") + "/" + id + ".ico"; - } - - var feed_icon = ""; - - var row_class = "feed"; - - if (unread > 0) { - row_class += "Unread"; - fctr_class = "feedCtrHasUnread"; - } else { - fctr_class = "feedCtrNoUnread"; - } - - tmp += printFeedEntry(id, title, "feed", unread, icon); - - rs.next(); - } - - rs.close(); - - if (cats_enabled) { - tmp += ""; - } - - tmp += ""; - - render_feedlist(tmp); - } catch (e) { - exception_error("render_offline_feedlist", e); - } -} - -function init_offline() { - try { - offline_mode = true; - store.enabled = true; - - Element.hide("dispSwitchPrompt"); - - Element.hide("topLinksOnline"); - Element.show("topLinksOffline"); - - var tb_form = $("main_toolbar_form"); - Element.hide(tb_form.update); - - var chooser = $("quickMenuChooser"); - chooser.disabled = true; - - var rs = db.execute("SELECT key, value FROM init_params"); - - while (rs.isValidRow()) { - init_params[rs.field(0)] = rs.field(1); - rs.next(); - } - - rs.close(); - - var rs = db.execute("SELECT COUNT(*) FROM feeds"); - - var num_feeds = 0; - - if (rs.isValidRow()) { - num_feeds = rs.field(0); - } - - rs.close(); - - if (num_feeds == 0) { - remove_splash(); - return fatalError(0, - __("Data for offline browsing has not been downloaded yet.")); - } - - render_offline_feedlist(); - init_second_stage(); - window.setTimeout("viewfeed(-4)", 50); - - } catch (e) { - exception_error("init_offline", e); - } -} - -function offline_download_parse(stage, transport) { - try { - if (transport.responseXML) { - - if (!sync_in_progress) return; - - var sync_ok = transport.responseXML.getElementsByTagName("sync-ok"); - - if (sync_ok.length > 0) { - for (var i = 0; i < sync_ok.length; i++) { - var id = sync_ok[i].getAttribute("id"); - var unread = sync_ok[i].getAttribute("unread"); - var marked = sync_ok[i].getAttribute("marked"); - - if (id) { - debug("synced offline info for id " + id); - - if (unread != undefined && marked != undefined) { - db.execute("UPDATE articles SET "+ - "unread = ?, marked = ? WHERE id = ?", [unread, marked, id]); - - } - db.execute("UPDATE articles SET modified = '' WHERE id = ?", [id]); - } - } - } - - if (stage == 0) { - - $("offlineModeSyncMsg").innerHTML = __("Synchronizing feeds..."); - - var feeds = transport.responseXML.getElementsByTagName("feed"); - - if (feeds.length > 0) { - db.execute("DELETE FROM feeds"); - } - - for (var i = 0; i < feeds.length; i++) { - var id = feeds[i].getAttribute("id"); - var has_icon = feeds[i].getAttribute("has_icon"); - var title = feeds[i].firstChild.nodeValue; - var cat_id = feeds[i].getAttribute("cat_id"); - - db.execute("INSERT INTO feeds (id,title,has_icon,cat_id)"+ - "VALUES (?,?,?,?)", - [id, title, has_icon, cat_id]); - } - - $("offlineModeSyncMsg").innerHTML = __("Synchronizing categories..."); - - var cats = transport.responseXML.getElementsByTagName("category"); - - if (feeds.length > 0) { - db.execute("DELETE FROM categories"); - } - - for (var i = 0; i < cats.length; i++) { - var id = cats[i].getAttribute("id"); - var collapsed = cats[i].getAttribute("collapsed"); - var title = cats[i].firstChild.nodeValue; - - db.execute("INSERT INTO categories (id,title,collapsed)"+ - "VALUES (?,?,?)", - [id, title, collapsed]); - } - - $("offlineModeSyncMsg").innerHTML = __("Synchronizing labels..."); - - var labels = transport.responseXML.getElementsByTagName("label"); - - if (labels.length > 0) { - db.execute("DELETE FROM labels"); - } - - for (var i = 0; i < labels.length; i++) { - var id = labels[i].getAttribute("id"); - var fg_color = labels[i].getAttribute("fg_color"); - var bg_color = labels[i].getAttribute("bg_color"); - var caption = labels[i].firstChild.nodeValue; - - db.execute("INSERT INTO labels (id,caption,fg_color,bg_color)"+ - "VALUES (?,?,?,?)", - [id, caption, fg_color, bg_color]); - } - - $("offlineModeSyncMsg").innerHTML = __("Synchronizing articles..."); - - sync_timer = window.setTimeout("update_offline_data("+(stage+1)+")", 2*1000); - } else { - - var articles = transport.responseXML.getElementsByTagName("article"); - - var limit = transport.responseXML.getElementsByTagName("limit")[0]; - - if (limit) { - limit = limit.getAttribute("value"); - } else { - limit = 0; - } - - var articles_found = 0; - - for (var i = 0; i < articles.length; i++) { - var a = eval("("+articles[i].firstChild.nodeValue+")"); - articles_found++; - if (a) { - - db.execute("DELETE FROM articles WHERE id = ?", [a.id]); - - db.execute("INSERT INTO articles "+ - "(id, feed_id, title, link, guid, updated, content, "+ - "unread, marked, tags, comments) "+ - "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", - [a.id, a.feed_id, a.title, a.link, a.guid, a.updated, - a.content, a.unread, a.marked, a.tags, - a.comments]); - - if (a.labels.length > 0) { - for (var j = 0; j < a.labels.length; j++) { - label_local_add_article(a.id, a.labels[j][0]); - } - } - - } - } - - debug("downloaded articles: " + articles_found + " limit: " + limit); - - articles_synced += articles_found; - - var msg =__("Synchronizing articles (%d)...").replace("%d", articles_synced); - - $("offlineModeSyncMsg").innerHTML = msg; - - var has_sync_data = has_local_sync_data(); - - if (articles_found >= limit || has_sync_data) { - sync_timer = window.setTimeout("update_offline_data("+(stage+1)+")", - 3*1000); - debug("update_offline_data: done " + stage + " HSD: " + - has_sync_data + ""); - } else { - window.setTimeout("offlineDownloadStart()", 180*1000); - debug("update_offline_data: finished"); - - var pic = $("offlineModePic"); - - if (pic) { - pic.src = "images/offline.png"; - - var rs = db.execute("SELECT value FROM syncdata WHERE key = 'last_online'"); - var last_sync = ""; - - if (rs.isValidRow()) { - last_sync = rs.field(0).substring(0,16); - } - rs.close(); - - var msg = __("Last sync: %s").replace("%s", last_sync); - - articles_synced = 0; - - $("offlineModeSyncMsg").innerHTML = msg; - } - - offlineSyncShowHideElems(false); - - sync_in_progress = false; - - db.execute("DELETE FROM articles WHERE "+ - "updated < DATETIME('NOW', 'localtime', '-31 days')"); - - } - } - - update_local_sync_data(); - - -// notify(''); - - } else { - sync_in_progress = false; - - var pic = $("offlineModePic"); - - if (pic) { - pic.src = "images/offline.png"; - var msg = __("Last sync: Error receiving data."); - articles_synced = 0; - $("offlineModeSyncMsg").innerHTML = msg; - } - - offlineSyncShowHideElems(false); - } - - } catch (e) { - exception_error("offline_download_parse", e); - } -} - -function update_offline_data(stage) { - try { - - if (!stage) stage = 0; - - if (!db || offline_mode || getInitParam("offline_enabled") != "1") return; - - var query = "?op=rpc&subop=download"; - - var rs = db.execute("SELECT MAX(id), MIN(id) FROM articles"); - - if (rs.isValidRow() && rs.field(0)) { - var offline_dl_max_id = rs.field(0); - var offline_dl_min_id = rs.field(1); - - query = query + "&cidt=" + offline_dl_max_id; - query = query + "&cidb=" + offline_dl_min_id; - - if (stage > 0) stage = 1; - } - - rs.close(); - - debug("update_offline_data: stage " + stage); - - query = query + "&stage=" + stage; - - var to_sync = prepare_local_sync_data(); - - if (to_sync != "") { - to_sync = "&sync=" + param_escape(to_sync); - } - - query = query + to_sync; - - var pic = $("offlineModePic"); - - if (pic) { - pic.src = "images/offline-sync.gif"; - if (articles_synced == 0) { - $("offlineModeSyncMsg").innerHTML = __("Synchronizing..."); - } - } - - offlineSyncShowHideElems(true); - offlineUpdateStore(); - - sync_in_progress = true; - - debug(query); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - offline_download_parse(stage, transport); - } }); - - } catch (e) { - exception_error("initiate_offline_download", e); - } -} - -function set_feedlist_counter(id, ctr, is_cat) { - try { - - var feedctr = $("FEEDCTR-" + id); - var feedu = $("FEEDU-" + id); - var feedr = $("FEEDR-" + id); - - if (is_cat) { - var catctr = $("FCATCTR-" + id); - if (catctr) { - catctr.innerHTML = "(" + ctr + ")"; - if (ctr > 0) { - catctr.className = "catCtrHasUnread"; - } else { - catctr.className = "catCtrNoUnread"; - } - } - } else if (feedctr && feedu && feedr) { - - var row_needs_hl = (ctr > 0 && ctr > parseInt(feedu.innerHTML)); - - feedu.innerHTML = ctr; - - if (ctr > 0) { - feedctr.className = "feedCtrHasUnread"; - if (!feedr.className.match("Unread")) { - var is_selected = feedr.className.match("Selected"); - - feedr.className = feedr.className.replace("Selected", ""); - feedr.className = feedr.className.replace("Unread", ""); - - feedr.className = feedr.className + "Unread"; - - if (is_selected) { - feedr.className = feedr.className + "Selected"; - } - - } - - if (row_needs_hl) { - new Effect.Highlight(feedr, {duration: 1, startcolor: "#fff7d5", - queue: { position:'end', scope: 'EFQ-' + id, limit: 1 } } ); - } - } else { - feedctr.className = "feedCtrNoUnread"; - feedr.className = feedr.className.replace("Unread", ""); - } - } - - } catch (e) { - exception_error("set_feedlist_counter", e); - } -} - -function update_local_feedlist_counters() { - try { - if (!offline_mode || !db) return; - -/* var rs = db.execute("SELECT feeds.id,COUNT(articles.id) "+ - "FROM feeds LEFT JOIN articles ON (feed_id = feeds.id) "+ - "WHERE unread = 1 OR unread IS NULL GROUP BY feeds.id "+ - "ORDER BY feeds.title"); */ - - var rs = db.execute("SELECT id FROM feeds "+ - "ORDER BY title"); - - while (rs.isValidRow()) { - var id = rs.field(0); - var ctr = get_local_feed_unread(id); - set_feedlist_counter(id, ctr, false); - rs.next(); - } - - rs.close(); - - var rs = db.execute("SELECT cat_id,SUM(unread) "+ - "FROM articles, feeds WHERE feeds.id = feed_id GROUP BY cat_id"); - - while (rs.isValidRow()) { - var id = rs.field(0); - var ctr = rs.field(1); - set_feedlist_counter(id, ctr, true); - rs.next(); - } - - rs.close(); - - set_feedlist_counter(-2, get_local_category_unread(-2), true); - - set_feedlist_counter(-4, get_local_feed_unread(-4)); - set_feedlist_counter(-1, get_local_feed_unread(-1)); - - var rs = db.execute("SELECT id FROM labels"); - - while (rs.isValidRow()) { - var id = -11 - rs.field(0); - var ctr = get_local_feed_unread(id); - set_feedlist_counter(id, ctr, false); - rs.next(); - } - - rs.close(); - - hideOrShowFeeds(getInitParam("hide_read_feeds") == 1); - - global_unread = get_local_feed_unread(-4); - updateTitle(); - - } catch (e) { - exception_error("update_local_feedlist_counters", e); - } -} - -function get_local_feed_unread(id) { - try { - var rs; - - if (id == -4) { - rs = db.execute("SELECT SUM(unread) FROM articles"); - } else if (id == -1) { - rs = db.execute("SELECT SUM(unread) FROM articles WHERE marked = 1"); - } else if (id > 0) { - rs = db.execute("SELECT SUM(unread) FROM articles WHERE feed_id = ?", [id]); - } else if (id < -10) { - var label_id = -11 - id; - rs = db.execute("SELECT SUM(unread) FROM articles,article_labels "+ - "WHERE article_labels.id = articles.id AND label_id = ?", [label_id]); - } - - var a = false; - - if (rs.isValidRow()) { - a = rs.field(0); - } else { - a = 0; - } - - rs.close(); - - return a; - - } catch (e) { - exception_error("get_local_feed_unread", e); - } -} - -function enable_offline_reading() { - try { - - if (db && getInitParam("offline_enabled") == "1") { - init_local_sync_data(); - Element.show("offlineModePic"); - offlineDownloadStart(); - } - - } catch (e) { - exception_error("enable_offline_reading", e); - } -} - -function init_gears() { - try { - - if (window.google && google.gears) { - - try { - localServer = google.gears.factory.create("beta.localserver"); - } catch (e) { - return; - } - - store = localServer.createManagedStore("tt-rss"); - store.manifestUrl = "manifest.json.php"; - store.enabled = false; - - db = google.gears.factory.create('beta.database'); - db.open('tt-rss'); - - db.execute("CREATE TABLE IF NOT EXISTS version (schema_version text)"); - - var rs = db.execute("SELECT schema_version FROM version"); - - var version = ""; - - if (rs.isValidRow()) { - version = rs.field(0); - } - - rs.close(); - - if (version != SCHEMA_VERSION) { - db.execute("DROP TABLE IF EXISTS init_params"); - db.execute("DROP TABLE IF EXISTS cache"); - db.execute("DROP TABLE IF EXISTS feeds"); - db.execute("DROP TABLE IF EXISTS categories"); - db.execute("DROP TABLE IF EXISTS labels"); - db.execute("DROP TABLE IF EXISTS article_labels"); - db.execute("DROP TABLE IF EXISTS articles"); - db.execute("DROP INDEX IF EXISTS article_labels_label_id_idx"); - db.execute("DROP INDEX IF EXISTS articles_unread_idx"); - db.execute("DROP INDEX IF EXISTS articles_feed_id_idx"); - db.execute("DROP INDEX IF EXISTS articles_id_idx"); - db.execute("DROP INDEX IF EXISTS article_labels_id_idx"); - db.execute("DROP TABLE IF EXISTS version"); - db.execute("DROP TRIGGER IF EXISTS articles_update_unread"); - db.execute("DROP TRIGGER IF EXISTS articles_update_marked"); - db.execute("DROP TRIGGER IF EXISTS articles_remove_labelrefs"); - db.execute("CREATE TABLE IF NOT EXISTS version (schema_version text)"); - db.execute("DROP TABLE IF EXISTS syncdata"); - db.execute("INSERT INTO version (schema_version) VALUES (?)", - [SCHEMA_VERSION]); - } - - db.execute("CREATE TABLE IF NOT EXISTS init_params (key text, value text)"); - - db.execute("CREATE TABLE IF NOT EXISTS cache (id integer, article text, param text, added text)"); - db.execute("CREATE TABLE IF NOT EXISTS feeds (id integer, title text, has_icon integer, cat_id integer)"); - db.execute("CREATE TABLE IF NOT EXISTS categories (id integer, title text, collapsed integer)"); - db.execute("CREATE TABLE IF NOT EXISTS labels (id integer, caption text, fg_color text, bg_color text)"); - db.execute("CREATE TABLE IF NOT EXISTS article_labels (id integer, label_id integer)"); - db.execute("CREATE TABLE IF NOT EXISTS articles (id integer, feed_id integer, title text, link text, guid text, updated timestamp, content text, tags text, unread integer, marked integer, added text, modified timestamp, comments text)"); - - db.execute("CREATE INDEX IF NOT EXISTS articles_unread_idx ON articles(unread)"); - db.execute("CREATE INDEX IF NOT EXISTS article_labels_label_id_idx ON article_labels(label_id)"); - db.execute("CREATE INDEX IF NOT EXISTS articles_feed_id_idx ON articles(feed_id)"); - db.execute("CREATE INDEX IF NOT EXISTS articles_id_idx ON articles(id)"); - db.execute("CREATE INDEX IF NOT EXISTS article_labels_id_idx ON article_labels(id)"); - - db.execute("CREATE TABLE IF NOT EXISTS syncdata (key integer, value text)"); - - db.execute("DELETE FROM cache WHERE id LIKE 'F:%' OR id LIKE 'C:%'"); - - db.execute("CREATE TRIGGER IF NOT EXISTS articles_update_unread "+ - "UPDATE OF unread ON articles "+ - "BEGIN "+ - "UPDATE articles SET modified = DATETIME('NOW', 'localtime') "+ - "WHERE id = OLD.id AND "+ - "OLD.unread != NEW.unread;"+ - "END;"); - - db.execute("CREATE TRIGGER IF NOT EXISTS articles_update_marked "+ - "UPDATE OF marked ON articles "+ - "BEGIN "+ - "UPDATE articles SET modified = DATETIME('NOW', 'localtime') "+ - "WHERE id = OLD.id;"+ - "END;"); - - db.execute("CREATE TRIGGER IF NOT EXISTS articles_remove_labelrefs "+ - "DELETE ON articles "+ - "BEGIN "+ - "DELETE FROM article_labels WHERE id = OLD.id; "+ - "END; "); - - } - - cache_expire(); - - } catch (e) { - exception_error("init_gears", e); - } -} - -function offlineArticlesStored() { - - var rs = db.execute("SELECT COUNT(*) FROM articles"); - var count = 0; - if (rs.isValidRow()) { - count = rs.field(0); - } - - rs.close(); - - return count; -} - -function gotoOffline() { - -// debug("[Local store] currentVersion = " + store.currentVersion); - - - if (offlineArticlesStored() == 0) { - notify_error("You have to synchronize some articles before going into offline mode."); - return; - } - - if (confirm(__("Switch Tiny Tiny RSS into offline mode?"))) { - - store.enabled = true; - store.checkForUpdate(); - - notify_progress("Preparing offline mode...", true); - - var timerId = window.setInterval(function() { - if (store.currentVersion) { - window.clearInterval(timerId); - debug("[Local store] sync complete: " + store.currentVersion); - - //window.location.href = "tt-rss.php"; - - offlineDownloadStop(); - init_offline(); - - notify_info("Tiny Tiny RSS is in offline mode."); - - } else if (store.updateStatus == 3) { - debug("[Local store] sync error: " + store.lastErrorMessage); - notify_error(store.lastErrorMessage, true); - } }, 500); - } -} - -function gotoOnline() { -// if (confirm(__("You won't be able to access offline version of Tiny Tiny RSS until you switch it into offline mode again. Go online?"))) { - if (confirm(__("Tiny Tiny RSS will reload. Go online?"))) { - //localServer.removeManagedStore("tt-rss"); - window.location.href = "tt-rss.php?online=1"; - } -} - -function local_collapse_cat(id) { - try { - if (db) { - db.execute("UPDATE categories SET collapsed = NOT collapsed WHERE id = ?", - [id]); - } - } catch (e) { - exception_error("local_collapse_cat", e); - } -} - -function get_local_category_title(id) { - try { - - var rs = db.execute("SELECT title FROM categories WHERE id = ?", [id]); - var tmp = ""; - - if (rs.isValidRow()) { - tmp = rs.field(0); - } - - rs.close(); - - return tmp; - - } catch (e) { - exception_error("get_local_category_title", e); - } -} - -function get_local_category_unread(id) { - try { - var rs = false; - - if (id >= 0) { - rs = db.execute("SELECT SUM(unread) FROM articles, feeds "+ - "WHERE feeds.id = feed_id AND cat_id = ?", [id]); - } else if (id == -2) { - rs = db.execute("SELECT SUM(unread) FROM article_labels, articles "+ - "where article_labels.id = articles.id"); - } else { - return 0; - } - - var tmp = 0; - - if (rs.isValidRow()) { - tmp = rs.field(0); - } - - rs.close(); - - return tmp; - - } catch (e) { - exception_error("get_local_category_unread", e); - } -} - -function printCategoryHeader(cat_id, hidden, can_browse) { - try { - if (hidden == undefined) hidden = false; - if (can_browse == undefined) can_browse = false; - - var tmp_category = get_local_category_title(cat_id); - var tmp = ""; - - var cat_unread = get_local_category_unread(cat_id); - - var holder_style = ""; - var ellipsis = ""; - - if (hidden) { - holder_style = "display:none;"; - ellipsis = "…"; - } - - var catctr_class = (cat_unread > 0) ? "catCtrHasUnread" : "catCtrNoUnread"; - - var browse_cat_link = ""; - var inner_title_class = "catTitleNL"; - - if (can_browse) { - browse_cat_link = "onclick=\"javascript:viewCategory("+cat_id+")\""; - inner_title_class = "catTitle"; - } - - var cat_class = "feedCat"; - - tmp += "
  • "+ - ""+tmp_category+""; - - tmp += ""; - - tmp += " ("+cat_unread+") "+ellipsis; - - tmp += ""; - - tmp += "
      "; - - return tmp; - } catch (e) { - exception_error("printCategoryHeader", e); - } -} - -function is_local_cat_collapsed(id) { - try { - - var rs = db.execute("SELECT collapsed FROM categories WHERE id = ?", [id]); - var cat_hidden = 0; - - if (rs.isValidRow()) { - cat_hidden = rs.field(0); - } - - rs.close(); - - return cat_hidden == "1"; - - } catch (e) { - exception_error("is_local_cat_collapsed", e); - } -} - -function get_local_article_labels(id) { - try { - var rs = db.execute("SELECT DISTINCT label_id,caption,fg_color,bg_color "+ - "FROM labels, article_labels "+ - "WHERE labels.id = label_id AND article_labels.id = ?", [id]); - - var tmp = new Array(); - - while (rs.isValidRow()) { - var e = new Array(); - - e[0] = rs.field(0); - e[1] = rs.field(1); - e[2] = rs.field(2); - e[3] = rs.field(3); - - tmp.push(e); - - rs.next(); - } - - return tmp; - - } catch (e) { - exception_error("get_local_article_labels", e); - } -} - -function label_local_add_article(id, label_id) { - try { - //debug("label_local_add_article " + id + " => " + label_id); - - var rs = db.execute("SELECT COUNT(id) FROM article_labels WHERE "+ - "id = ? AND label_id = ?", [id, label_id]); - var check = rs.field(0); - - if (rs.isValidRow()) { - var check = rs.field(0); - } - rs.close(); - - if (check == 0) { - db.execute("INSERT INTO article_labels (id, label_id) VALUES "+ - "(?,?)", [id, label_id]); - } - - } catch (e) { - exception_error("label_local_add_article", e); - } -} - -function get_local_feed_title(id) { - try { - - var feed_title = "Unknown feed: " + id; - - if (id > 0) { - var rs = db.execute("SELECT title FROM feeds WHERE id = ?", [id]); - - if (rs.isValidRow()) { - feed_title = rs.field(0); - } - - rs.close(); - } else if (id == -1) { - feed_title = __("Starred articles"); - } else if (id == -4) { - feed_title = __("All articles"); - } else if (id < -10) { - - var label_id = -11 - id; - - var rs = db.execute("SELECT caption FROM labels WHERE id = ?", [label_id]); - - if (rs.isValidRow()) { - feed_title = rs.field(0); - } - - rs.close(); - } - - return feed_title; - - } catch (e) { - exception_error("get_local_feed_title", e); - } -} - -function format_article_labels(labels, id) { - try { - - var labels_str = ""; - - if (!labels) return ""; - - for (var i = 0; i < labels.length; i++) { - var l = labels[i]; - - labels_str += ""+l[1]+""; - } - - return labels_str; - - } catch (e) { - exception_error("format_article_labels", e); - } -} - -function init_local_sync_data() { - try { - - if (!db) return; - - var rs = db.execute("SELECT COUNT(*) FROM syncdata WHERE key = 'last_online'"); - var has_last_online = 0; - - if (rs.isValidRow()) { - has_last_online = rs.field(0); - } - - rs.close(); - - if (!has_last_online) { - db.execute("INSERT INTO syncdata (key, value) VALUES ('last_online', '')"); - } - - } catch (e) { - exception_error("init_local_sync_data", e); - - } -} - -function has_local_sync_data() { - try { - - var rs = db.execute("SELECT id FROM articles "+ - "WHERE modified > (SELECT value FROM syncdata WHERE key = 'last_online') "+ - "LIMIT 1"); - - var tmp = 0; - - if (rs.isValidRow()) { - tmp = rs.field(0); - } - - rs.close(); - - return tmp != 0; - - } catch (e) { - exception_error("has_local_sync_data", e); - } -} - -function prepare_local_sync_data() { - try { - var rs = db.execute("SELECT value FROM syncdata WHERE key = 'last_online'"); - - var last_online = ""; - - if (rs.isValidRow()) { - last_online = rs.field(0); - } - - rs.close(); - - var rs = db.execute("SELECT id,unread,marked FROM articles "+ - "WHERE modified > ? LIMIT 200", [last_online]); - - var tmp = last_online + ";"; - - var entries = 0; - - while (rs.isValidRow()) { - var e = new Array(); - - tmp = tmp + rs.field(0) + "," + rs.field(1) + "," + rs.field(2) + ";"; - entries++; - - rs.next(); - } - - rs.close(); - - if (entries > 0) { - return tmp; - } else { - return ''; - } - - } catch (e) { - exception_error("prepare_local_sync_data", e); - } -} - -function update_local_sync_data() { - try { - if (db && !offline_mode) { - - var rs = db.execute("SELECT id FROM articles "+ - "WHERE modified > (SELECT value FROM syncdata WHERE "+ - "key = 'last_online') LIMIT 1") - - var f_id = 0; - - if (rs.isValidRow()) { - f_id = rs.field(0); - } - - rs.close(); - - /* no pending articles to sync */ - - if (f_id == 0) { - db.execute("UPDATE syncdata SET value = DATETIME('NOW', 'localtime') "+ - "WHERE key = 'last_online'"); - } - - } - } catch (e) { - exception_error("update_local_sync_data", e); - } -} - -function catchup_local_feed(id, is_cat) { - try { - if (!db) return; - - if (!is_cat) { - if (id >= 0) { - db.execute("UPDATE articles SET unread = 0 WHERE feed_id = ?", [id]); - } else if (id == -1) { - db.execute("UPDATE articles SET unread = 0 WHERE marked = 1"); - } else if (id == -4) { - db.execute("UPDATE articles SET unread = 0"); - } else if (id < -10) { - var label_id = -11-id; - - db.execute("UPDATE articles SET unread = 0 WHERE "+ - "(SELECT COUNT(*) FROM article_labels WHERE "+ - "article_labels.id = articles.id AND label_id = ?) > 0", [label_id]); - } - } - - update_local_feedlist_counters(); - - } catch (e) { - exception_error("catchup_local_feed", e); - } -} - -function toggleOfflineModeInfo() { - try { - var e = $('offlineModeDrop'); - var p = $('offlineModePic'); - - if (Element.visible(e)) { - Element.hide(e); - } else { - Element.show(e); - } - - } catch (e) { - exception_error("toggleOfflineModeInfo", e); - } -} - -function offlineDownloadStart(stage) { - try { - if (!stage) stage = 0; - - if (db && !sync_in_progress && getInitParam("offline_enabled") == "1") { - window.setTimeout("update_offline_data("+stage+")", 100); - } - } catch (e) { - exception_error("offlineDownloadStart", e); - } -} - -function offlineDownloadStop() { - try { - if (db && sync_in_progress && getInitParam("offline_enabled") == "1") { - - sync_in_progress = false; - - if (sync_timer) { - window.clearTimeout(sync_timer); - sync_timer = false; - } - - var pic = $("offlineModePic"); - - if (pic) { - pic.src = "images/offline.png"; - var msg = __("Last sync: Cancelled."); - articles_synced = 0; - $("offlineModeSyncMsg").innerHTML = msg; - } - - offlineSyncShowHideElems(false); - - } - } catch (e) { - exception_error("offlineDownloadStart", e); - } -} - -function offlineClearData() { - try { - if (db) { - - if (confirm(__("This will remove all offline data stored by Tiny Tiny RSS on this computer. Continue?"))) { - - notify_progress("Removing offline data..."); - - localServer.removeManagedStore("tt-rss"); - - db.execute("DELETE FROM articles"); - db.execute("DELETE FROM article_labels"); - db.execute("DELETE FROM labels"); - db.execute("DELETE FROM feeds"); - db.execute("DELETE FROM cache"); - - notify_info("Local data removed."); - } - } - } catch (e) { - exception_error("offlineClearData", e); - } -} - -function offlineUpdateStore() { - try { - if (offline_mode || !store) return; - - store.checkForUpdate(); - - var timerId = window.setInterval(function() { - if (store.currentVersion) { - window.clearInterval(timerId); - debug("[Local store] sync complete: " + store.currentVersion); - } else if (store.updateStatus == 3) { - debug("[Local store] sync error: " + store.lastErrorMessage); - } }, 500); - - } catch (e) { - exception_error("offlineUpdateStore", e); - } -} - -function offlineSyncShowHideElems(syncing) { - try { - - var elems = $$("div.hideWhenSyncing"); - - for (var j = 0; j < elems.length; j++) { - if (syncing) { - Element.hide(elems[j]); - } else { - Element.show(elems[j]); - } - } - - var elems = $$("div.showWhenSyncing"); - - for (var j = 0; j < elems.length; j++) { - if (syncing) { - Element.show(elems[j]); - } else { - Element.hide(elems[j]); - } - } - - } catch (e) { - exception_error("offlineSyncShowHideElems", e); - } -} - -function offlineConfirmModeChange() { - try { - - if (db && getInitParam("offline_enabled") == "1" && offlineArticlesStored() > 0) { - var ok = confirm(__("Tiny Tiny RSS has trouble accessing its server. Would you like to go offline?")); - - if (ok) { - init_offline(); - } - } - - } catch (e) { - exception_error("offlineConfirmModeChange", e); - } -} - -function printFeedEntry(id, title, row_class, unread, icon) { - - var tmp = ""; - var fctr_class = ""; - var feed_icon = ""; - - if (unread > 0) { - row_class += "Unread"; - fctr_class = "feedCtrHasUnread"; - } else { - fctr_class = "feedCtrNoUnread"; - } - - if (icon) { - feed_icon = ""; - } else { - feed_icon = ""; - } - - var link = ""+ - title + ""; - - tmp += "
    • " + feed_icon + - "" + link + ""; - - tmp += " " + - "("+unread+")"; - - tmp += "
    • "; - - return tmp; -} - - diff --git a/opml.php b/opml.php index 2e9f2368f8..af3694051d 100644 --- a/opml.php +++ b/opml.php @@ -1,168 +1,35 @@ "; - - print ""; - print " - " . date("r", time()) . " - Tiny Tiny RSS Feed Export - "; - print ""; - - $cat_mode = false; - - $select = "SELECT * "; - $where = "WHERE owner_uid = '$owner_uid'"; - $orderby = "ORDER BY title"; - if ($hide_private_feeds){ - $where = "WHERE owner_uid = '$owner_uid' AND private IS false"; - } - - if (get_pref($link, 'ENABLE_FEED_CATS')) { - $cat_mode = true; - $select = "SELECT - title, feed_url, site_url, - (SELECT title FROM ttrss_feed_categories WHERE id = cat_id) as cat_title"; - $orderby = "ORDER BY cat_title, title"; - - } - - $result = db_query($link, $select." FROM ttrss_feeds ".$where." ".$orderby); + if (!init_plugins()) return; - $old_cat_title = ""; + $op = $_REQUEST['op']; - while ($line = db_fetch_assoc($result)) { - $title = htmlspecialchars($line["title"]); - $url = htmlspecialchars($line["feed_url"]); - $site_url = htmlspecialchars($line["site_url"]); - - if ($cat_mode) { - $cat_title = htmlspecialchars($line["cat_title"]); - - if ($old_cat_title != $cat_title) { - if ($old_cat_title) { - print "\n"; - } - - if ($cat_title) { - print "\n"; - } - - $old_cat_title = $cat_title; - } - } - - if ($site_url) { - $html_url_qpart = "htmlUrl=\"$site_url\""; - } else { - $html_url_qpart = ""; - } - - print "\n"; - } - - if ($cat_mode && $old_cat_title) { - print "\n"; - } - - print ""; - } + if ($op == "publish"){ + $key = db_escape_string( $_REQUEST["key"]); - // FIXME there are some brackets issues here - - $op = $_REQUEST["op"]; - - if (!$op) $op = "Export"; - - if ($op == "Export") { - - login_sequence($link); - $owner_uid = $_SESSION["uid"]; - return opml_export($link, $owner_uid); - } - if ($op == "publish"){ - $key = db_escape_string($_REQUEST["key"]); - - $result = db_query($link, "SELECT login, owner_uid - FROM ttrss_user_prefs, ttrss_users WHERE - pref_name = '_PREFS_PUBLISH_KEY' AND - value = '$key' AND - ttrss_users.id = owner_uid"); + $result = db_query( "SELECT owner_uid + FROM ttrss_access_keys WHERE + access_key = '$key' AND feed_id = 'OPML:Publish'"); if (db_num_rows($result) == 1) { - $owner = db_fetch_result($result, 0, "owner_uid"); - return opml_export($link, $owner, True); - } else { - print "User not found"; - } - } - - if ($op == "Import") { - - login_sequence($link); - $owner_uid = $_SESSION["uid"]; - - print " - - - ".__("OPML Utility")." - - -
      -

      ".__('OPML Utility')."

      "; - - db_query($link, "BEGIN"); + $owner_uid = db_fetch_result($result, 0, "owner_uid"); - /* create Imported feeds category just in case */ + $opml = new Opml($_REQUEST); + $opml->opml_export("", $owner_uid, true, false); - $result = db_query($link, "SELECT id FROM - ttrss_feed_categories WHERE title = 'Imported feeds' AND - owner_uid = '$owner_uid' LIMIT 1"); - - if (db_num_rows($result) == 0) { - db_query($link, "INSERT INTO ttrss_feed_categories - (title,owner_uid) - VALUES ('Imported feeds', '$owner_uid')"); - } - - db_query($link, "COMMIT"); - - /* Handle OPML import by DOMXML/DOMDocument */ - - if (function_exists('domxml_open_file')) { - print "

      ".__("Importing OPML (using DOMXML extension)...")."

      "; - require_once "modules/opml_domxml.php"; - opml_import_domxml($link, $owner_uid); - } else if (PHP_VERSION >= 5) { - print "

      ".__("Importing OPML (using DOMDocument extension)...")."

      "; - require_once "modules/opml_domdoc.php"; - opml_import_domdoc($link, $owner_uid); } else { - print_error(__("DOMXML extension is not found. It is required for PHP versions below 5.")); + print "User not found"; } - - print "
      - -
      "; - - print ""; - } -// if ($link) db_close($link); - ?> diff --git a/plugins.local/index.html b/plugins.local/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/plugins/af_comics/af_comics_template.php b/plugins/af_comics/af_comics_template.php new file mode 100644 index 0000000000..117d692804 --- /dev/null +++ b/plugins/af_comics/af_comics_template.php @@ -0,0 +1,14 @@ + diff --git a/plugins/af_comics/filter_base.php b/plugins/af_comics/filter_base.php new file mode 100644 index 0000000000..a534306458 --- /dev/null +++ b/plugins/af_comics/filter_base.php @@ -0,0 +1,6 @@ + diff --git a/plugins/af_comics/filters/af_comics_cad.php b/plugins/af_comics/filters/af_comics_cad.php new file mode 100644 index 0000000000..43836724fb --- /dev/null +++ b/plugins/af_comics/filters/af_comics_cad.php @@ -0,0 +1,36 @@ +loadHTML(fetch_file_contents($article["link"])); + + $basenode = false; + + if ($doc) { + $xpath = new DOMXPath($doc); + $basenode = $xpath->query('(//img[contains(@src, "/comics/cad-")])')->item(0); + + if ($basenode) { + $article["content"] = $doc->saveXML($basenode); + } + } + + } + + return true; + } + + return false; + } +} +?> diff --git a/plugins/af_comics/filters/af_comics_comicclass.php b/plugins/af_comics/filters/af_comics_comicclass.php new file mode 100644 index 0000000000..45698751b3 --- /dev/null +++ b/plugins/af_comics/filters/af_comics_comicclass.php @@ -0,0 +1,40 @@ +loadHTML($res); + + $basenode = false; + + if ($doc) { + $xpath = new DOMXPath($doc); + $basenode = $xpath->query('//div[@class="comic"]')->item(0); + + if ($basenode) { + $article["content"] = $doc->saveXML($basenode); + } + } + + return true; + } + + return false; + } +} +?> diff --git a/plugins/af_comics/filters/af_comics_comicpress.php b/plugins/af_comics/filters/af_comics_comicpress.php new file mode 100644 index 0000000000..ec4b7ac574 --- /dev/null +++ b/plugins/af_comics/filters/af_comics_comicpress.php @@ -0,0 +1,46 @@ +loadHTML($res); + + $basenode = false; + + if ($doc) { + $xpath = new DOMXPath($doc); + $basenode = $xpath->query('//div[@id="comic"]')->item(0); + + if ($basenode) { + $article["content"] = $doc->saveXML($basenode); + } + } + + return true; + } + + return false; + } +} +?> diff --git a/plugins/af_comics/filters/af_comics_darklegacy.php b/plugins/af_comics/filters/af_comics_darklegacy.php new file mode 100644 index 0000000000..c03919b1d8 --- /dev/null +++ b/plugins/af_comics/filters/af_comics_darklegacy.php @@ -0,0 +1,43 @@ +loadHTML($res); + + $basenode = false; + + if ($doc) { + $xpath = new DOMXPath($doc); + $basenode = $xpath->query('//div[@class="comic"]')->item(0); + + if ($basenode) { + + $article["content"] = $doc->saveXML($basenode); + } + } + + return true; + } + + return false; + } +} +?> diff --git a/plugins/af_comics/filters/af_comics_dilbert.php b/plugins/af_comics/filters/af_comics_dilbert.php new file mode 100644 index 0000000000..5faba7eb7f --- /dev/null +++ b/plugins/af_comics/filters/af_comics_dilbert.php @@ -0,0 +1,57 @@ +loadHTML($res); + + $basenode = false; + + if ($doc) { + $xpath = new DOMXPath($doc); + + $basenode = $xpath->query('//img[contains(@class, "img-comic")]')->item(0); + + /* $entries = $xpath->query('(//img[@src])'); // we might also check for img[@class='strip'] I guess... + + $matches = array(); + + foreach ($entries as $entry) { + + if (preg_match("/dyn\/str_strip\/.*strip\.gif$/", $entry->getAttribute("src"), $matches)) { + + $entry->setAttribute("src", + rewrite_relative_url("http://dilbert.com/", + $matches[0])); + + $basenode = $entry; + break; + } + } */ + + if ($basenode) { + $article["content"] = $doc->saveXML($basenode); + } + } + + return true; + } + + return false; + } +} +?> diff --git a/plugins/af_comics/filters/af_comics_explosm.php b/plugins/af_comics/filters/af_comics_explosm.php new file mode 100644 index 0000000000..30b7e24c93 --- /dev/null +++ b/plugins/af_comics/filters/af_comics_explosm.php @@ -0,0 +1,33 @@ +loadHTML(fetch_file_contents($article["link"])); + + $basenode = false; + + if ($doc) { + $xpath = new DOMXPath($doc); + $basenode = $xpath->query('(//img[@id="main-comic"])')->item(0); + + if ($basenode) { + $article["content"] = $doc->saveXML($basenode); + } + } + + return true; + } + + return false; + } +} +?> diff --git a/plugins/af_comics/filters/af_comics_gocomics.php b/plugins/af_comics/filters/af_comics_gocomics.php new file mode 100644 index 0000000000..9b3c787de8 --- /dev/null +++ b/plugins/af_comics/filters/af_comics_gocomics.php @@ -0,0 +1,53 @@ +loadHTML(fetch_file_contents($article["link"])); + + $basenode = false; + + if ($doc) { + $xpath = new DOMXPath($doc); + $entries = $xpath->query("(//img[@class='strip'])"); + + $matches = array(); + + if ($entries->length > 1) { // if we have more than one match, then get the zoomed one, which is the second for gocomics + $entry = $entries->item(1); // get the second element (items start at 0) + if (preg_match("/(http:\/\/assets.amuniversal.com\/.*)/i", $entry->getAttribute("src"), $matches)) { + $entry->setAttribute("src", $matches[0]); + $basenode = $entry; + } + } + + if (!$basenode) { + // fallback on the smaller version + foreach ($entries as $entry) { + if (preg_match("/(http:\/\/assets.amuniversal.com\/.*)/i", $entry->getAttribute("src"), $matches)) { + $entry->setAttribute("src", $matches[0]); + $basenode = $entry; + break; + } + } + } + + if ($basenode) { + $article["content"] = $doc->saveXML($basenode); + } + } + + return true; + } + + return false; + } +} +?> diff --git a/plugins/af_comics/filters/af_comics_pa.php b/plugins/af_comics/filters/af_comics_pa.php new file mode 100644 index 0000000000..0848adbd0e --- /dev/null +++ b/plugins/af_comics/filters/af_comics_pa.php @@ -0,0 +1,79 @@ +loadHTML(fetch_file_contents($article["link"])); + + $basenode = false; + + if ($doc) { + $xpath = new DOMXPath($doc); + $basenode = $xpath->query('(//div[@id="comicFrame"])')->item(0); + + if ($basenode) { + $article["content"] = $doc->saveXML($basenode); + } + } + + return true; + } + + if (strpos($article["link"], "penny-arcade.com") !== FALSE && strpos($article["title"], "News Post:") !== FALSE) { + if ($debug_enabled) { + _debug("af_pennyarcade: Processing news post"); + } + $doc = new DOMDocument(); + $doc->loadHTML(fetch_file_contents($article["link"])); + + if ($doc) { + $xpath = new DOMXPath($doc); + $entries = $xpath->query('(//div[@class="post"])'); + + $basenode = false; + + foreach ($entries as $entry) { + $basenode = $entry; + } + + $meta = $xpath->query('(//div[@class="meta"])')->item(0); + if ($meta->parentNode) { $meta->parentNode->removeChild($meta); } + + $header = $xpath->query('(//div[@class="postBody"]/h2)')->item(0); + if ($header->parentNode) { $header->parentNode->removeChild($header); } + + $header = $xpath->query('(//div[@class="postBody"]/div[@class="comicPost"])')->item(0); + if ($header->parentNode) { $header->parentNode->removeChild($header); } + + $avatar = $xpath->query('(//div[@class="avatar"]//img)')->item(0); + + if ($basenode) + $basenode->insertBefore($avatar, $basenode->firstChild); + + $uninteresting = $xpath->query('(//div[@class="avatar"])'); + foreach ($uninteresting as $i) { + $i->parentNode->removeChild($i); + } + + if ($basenode){ + $article["content"] = $doc->saveXML($basenode); + } + } + + return true; + } + + return false; + } +} +?> diff --git a/plugins/af_comics/filters/af_comics_tfd.php b/plugins/af_comics/filters/af_comics_tfd.php new file mode 100644 index 0000000000..d47c164eed --- /dev/null +++ b/plugins/af_comics/filters/af_comics_tfd.php @@ -0,0 +1,35 @@ +loadHTML($res); + + $basenode = false; + + if ($doc) { + $xpath = new DOMXPath($doc); + $basenode = $xpath->query('//img[@class="comic"]')->item(0); + + if ($basenode) { + $article["content"] = $doc->saveXML($basenode); + return true; + } + } + } + + return false; + } +} +?> diff --git a/plugins/af_comics/filters/af_comics_twp.php b/plugins/af_comics/filters/af_comics_twp.php new file mode 100644 index 0000000000..ec43c1379d --- /dev/null +++ b/plugins/af_comics/filters/af_comics_twp.php @@ -0,0 +1,33 @@ +loadHTML(fetch_file_contents($article["link"])); + + $basenode = false; + + if ($doc) { + $xpath = new DOMXpath($doc); + + $basenode = $xpath->query("//td/center/img")->item(0); + + if ($basenode) { + $article["content"] = $doc->saveXML($basenode); + } + } + + return true; + } + + return false; + } +} +?> diff --git a/plugins/af_comics/init.php b/plugins/af_comics/init.php new file mode 100644 index 0000000000..efc51d187a --- /dev/null +++ b/plugins/af_comics/init.php @@ -0,0 +1,79 @@ +host = $host; + + $host->add_hook($host::HOOK_ARTICLE_FILTER, $this); + $host->add_hook($host::HOOK_PREFS_TAB, $this); + + require_once __DIR__ . "/filter_base.php"; + + $filters = glob(__DIR__ . "/filters/*.php"); + + foreach ($filters as $file) { + require_once $file; + $filter_name = preg_replace("/\..*$/", "", basename($file)); + + $filter = new $filter_name(); + + if (is_subclass_of($filter, "Af_ComicFilter")) { + array_push($this->filters, $filter); + } + } + + } + + function hook_prefs_tab($args) { + if ($args != "prefPrefs") return; + + print "
      "; + + print "

      " . __("The following comics are currently supported:") . "

      "; + + $comics = array(); + + foreach ($this->filters as $f) { + foreach ($f->supported() as $comic) { + array_push($comics, $comic); + } + } + + asort($comics); + + print "
        "; + foreach ($comics as $comic) { + print "
      • $comic
      • "; + } + print "
      "; + + print "
      "; + } + + function hook_article_filter($article) { + $owner_uid = $article["owner_uid"]; + + foreach ($this->filters as $f) { + if ($f->process($article)) + break; + } + + return $article; + + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/af_fsckportal/init.php b/plugins/af_fsckportal/init.php new file mode 100644 index 0000000000..4718eca913 --- /dev/null +++ b/plugins/af_fsckportal/init.php @@ -0,0 +1,52 @@ +host = $host; + + $host->add_hook($host::HOOK_ARTICLE_FILTER, $this); + } + + function hook_article_filter($article) { + + $doc = new DOMDocument(); + + $charset_hack = ' + + '; + + @$doc->loadHTML($charset_hack . $article["content"]); + + if ($doc) { + $xpath = new DOMXPath($doc); + $entries = $xpath->query('(//img[@src]|//a[@href])'); + + foreach ($entries as $entry) { + if (preg_match("/feedsportal.com/", $entry->getAttribute("src"))) { + $entry->parentNode->removeChild($entry); + } else if (preg_match("/feedsportal.com/", $entry->getAttribute("href"))) { + $entry->parentNode->removeChild($entry); + } + } + + $article["content"] = $doc->saveXML(); + + } + + return $article; + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/af_lang_detect/init.php b/plugins/af_lang_detect/init.php new file mode 100644 index 0000000000..3f2eb29f89 --- /dev/null +++ b/plugins/af_lang_detect/init.php @@ -0,0 +1,46 @@ +host = $host; + + $host->add_hook($host::HOOK_ARTICLE_FILTER, $this); + + require_once __DIR__ . "/languagedetect/LanguageDetect.php"; + + $this->lang = new Text_LanguageDetect(); + $this->lang->setNameMode(2); + } + + function hook_article_filter($article) { + + if ($this->lang) { + $entry_language = $this->lang->detect($article['title'] . " " . $article['content'], 1); + + if (count($entry_language) > 0) { + $possible = array_keys($entry_language); + $entry_language = $possible[0]; + + _debug("detected language: $entry_language"); + + $article["language"] = $entry_language; + } + } + + return $article; + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/af_lang_detect/languagedetect/LanguageDetect.php b/plugins/af_lang_detect/languagedetect/LanguageDetect.php new file mode 100644 index 0000000000..0856571bf7 --- /dev/null +++ b/plugins/af_lang_detect/languagedetect/LanguageDetect.php @@ -0,0 +1,1708 @@ + + * @copyright 2005-2006 Nicholas Pisarro + * @license http://www.debian.org/misc/bsd.license BSD + * @version SVN: $Id: LanguageDetect.php 322353 2012-01-16 08:41:43Z cweiske $ + * @link http://pear.php.net/package/Text_LanguageDetect/ + * @link http://langdetect.blogspot.com/ + */ + +require_once __DIR__ . '/Text/LanguageDetect/Exception.php'; +require_once __DIR__ . '/Text/LanguageDetect/Parser.php'; +require_once __DIR__ . '/Text/LanguageDetect/ISO639.php'; + +/** + * Language detection class + * + * Requires the langauge model database (lang.dat) that should have + * accompanied this class definition in order to be instantiated. + * + * Example usage: + * + * + * require_once 'Text/LanguageDetect.php'; + * + * $l = new Text_LanguageDetect; + * + * $stdin = fopen('php://stdin', 'r'); + * + * echo "Supported languages:\n"; + * + * try { + * $langs = $l->getLanguages(); + * } catch (Text_LanguageDetect_Exception $e) { + * die($e->getMessage()); + * } + * + * sort($langs); + * echo join(', ', $langs); + * + * while ($line = fgets($stdin)) { + * print_r($l->detect($line, 4)); + * } + * + * + * @category Text + * @package Text_LanguageDetect + * @author Nicholas Pisarro + * @copyright 2005 Nicholas Pisarro + * @license http://www.debian.org/misc/bsd.license BSD + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_LanguageDetect/ + * @todo allow users to generate their own language models + */ +class Text_LanguageDetect +{ + /** + * The filename that stores the trigram data for the detector + * + * If this value starts with a slash (/) or a dot (.) the value of + * $this->_data_dir will be ignored + * + * @var string + * @access private + */ + var $_db_filename = 'lang.dat'; + + /** + * The filename that stores the unicode block definitions + * + * If this value starts with a slash (/) or a dot (.) the value of + * $this->_data_dir will be ignored + * + * @var string + * @access private + */ + var $_unicode_db_filename = 'unicode_blocks.dat'; + + /** + * The data directory + * + * Should be set by PEAR installer + * + * @var string + * @access private + */ + var $_data_dir = '@data_dir@'; + + /** + * The trigram data for comparison + * + * Will be loaded on start from $this->_db_filename + * + * @var array + * @access private + */ + var $_lang_db = array(); + + /** + * stores the map of the trigram data to unicode characters + * + * @access private + * @var array + */ + var $_unicode_map; + + /** + * The size of the trigram data arrays + * + * @var int + * @access private + */ + var $_threshold = 300; + + /** + * the maximum possible score. + * + * needed for score normalization. Different depending on the + * perl compatibility setting + * + * @access private + * @var int + * @see setPerlCompatible() + */ + var $_max_score = 0; + + /** + * Whether or not to simulate perl's Language::Guess exactly + * + * @access private + * @var bool + * @see setPerlCompatible() + */ + var $_perl_compatible = false; + + /** + * Whether to use the unicode block detection to speed up processing + * + * @access private + * @var bool + */ + var $_use_unicode_narrowing = true; + + /** + * stores the result of the clustering operation + * + * @access private + * @var array + * @see clusterLanguages() + */ + var $_clusters; + + /** + * Which type of "language names" are accepted and returned: + * + * 0 - language name ("english") + * 2 - 2-letter ISO 639-1 code ("en") + * 3 - 3-letter ISO 639-2 code ("eng") + */ + var $_name_mode = 0; + + /** + * Constructor + * + * Will attempt to load the language database. If it fails, you will get + * an exception. + */ + function __construct() + { + $data = $this->_readdb($this->_db_filename); + $this->_checkTrigram($data['trigram']); + $this->_lang_db = $data['trigram']; + + if (isset($data['trigram-unicodemap'])) { + $this->_unicode_map = $data['trigram-unicodemap']; + } + + // Not yet implemented: + if (isset($data['trigram-clusters'])) { + $this->_clusters = $data['trigram-clusters']; + } + } + + /** + * Returns the path to the location of the database + * + * @param string $fname File name to load + * + * @return string expected path to the language model database + * @access private + */ + function _get_data_loc($fname) + { + if ($fname{0} == '/' || $fname{0} == '.') { + // if filename starts with a slash, assume it's an absolute pathname + // and skip whatever is in $this->_data_dir + return $fname; + + } elseif ($this->_data_dir != '@' . 'data_dir' . '@') { + // if the data dir was set by the PEAR installer, use that + return $this->_data_dir . '/Text_LanguageDetect/' . $fname; + + } else { + // assume this was just unpacked somewhere + // try the local working directory if otherwise + return __DIR__ . '/data/' . $fname; + } + } + + /** + * Loads the language trigram database from filename + * + * Trigram datbase should be a serialize()'d array + * + * @param string $fname the filename where the data is stored + * + * @return array the language model data + * @throws Text_LanguageDetect_Exception + * @access private + */ + function _readdb($fname) + { + // finds the correct data dir + $fname = $this->_get_data_loc($fname); + + // input check + if (!file_exists($fname)) { + throw new Text_LanguageDetect_Exception( + 'Language database does not exist: ' . $fname, + Text_LanguageDetect_Exception::DB_NOT_FOUND + ); + } elseif (!is_readable($fname)) { + throw new Text_LanguageDetect_Exception( + 'Language database is not readable: ' . $fname, + Text_LanguageDetect_Exception::DB_NOT_READABLE + ); + } + + return unserialize(file_get_contents($fname)); + } + + + /** + * Checks if this object is ready to detect languages + * + * @param array $trigram Trigram data from database + * + * @return void + * @access private + */ + function _checkTrigram($trigram) + { + if (!is_array($trigram)) { + if (ini_get('magic_quotes_runtime')) { + throw new Text_LanguageDetect_Exception( + 'Error loading database. Try turning magic_quotes_runtime off.', + Text_LanguageDetect_Exception::MAGIC_QUOTES + ); + } + throw new Text_LanguageDetect_Exception( + 'Language database is not an array.', + Text_LanguageDetect_Exception::DB_NOT_ARRAY + ); + } elseif (empty($trigram)) { + throw new Text_LanguageDetect_Exception( + 'Language database has no elements.', + Text_LanguageDetect_Exception::DB_EMPTY + ); + } + } + + /** + * Omits languages + * + * Pass this function the name of or an array of names of + * languages that you don't want considered + * + * If you're only expecting a limited set of languages, this can greatly + * speed up processing + * + * @param mixed $omit_list language name or array of names to omit + * @param bool $include_only if true will include (rather than + * exclude) only those in the list + * + * @return int number of languages successfully deleted + * @throws Text_LanguageDetect_Exception + */ + public function omitLanguages($omit_list, $include_only = false) + { + $deleted = 0; + + $omit_list = $this->_convertFromNameMode($omit_list); + + if (!$include_only) { + // deleting the given languages + if (!is_array($omit_list)) { + $omit_list = strtolower($omit_list); // case desensitize + if (isset($this->_lang_db[$omit_list])) { + unset($this->_lang_db[$omit_list]); + $deleted++; + } + } else { + foreach ($omit_list as $omit_lang) { + if (isset($this->_lang_db[$omit_lang])) { + unset($this->_lang_db[$omit_lang]); + $deleted++; + } + } + } + + } else { + // deleting all except the given languages + if (!is_array($omit_list)) { + $omit_list = array($omit_list); + } + + // case desensitize + foreach ($omit_list as $key => $omit_lang) { + $omit_list[$key] = strtolower($omit_lang); + } + + foreach (array_keys($this->_lang_db) as $lang) { + if (!in_array($lang, $omit_list)) { + unset($this->_lang_db[$lang]); + $deleted++; + } + } + } + + // reset the cluster cache if the number of languages changes + // this will then have to be recalculated + if (isset($this->_clusters) && $deleted > 0) { + $this->_clusters = null; + } + + return $deleted; + } + + + /** + * Returns the number of languages that this object can detect + * + * @access public + * @return int the number of languages + * @throws Text_LanguageDetect_Exception + */ + function getLanguageCount() + { + return count($this->_lang_db); + } + + /** + * Checks if the language with the given name exists in the database + * + * @param mixed $lang Language name or array of language names + * + * @return bool true if language model exists + */ + public function languageExists($lang) + { + $lang = $this->_convertFromNameMode($lang); + + if (is_string($lang)) { + return isset($this->_lang_db[strtolower($lang)]); + + } elseif (is_array($lang)) { + foreach ($lang as $test_lang) { + if (!isset($this->_lang_db[strtolower($test_lang)])) { + return false; + } + } + return true; + + } else { + throw new Text_LanguageDetect_Exception( + 'Unsupported parameter type passed to languageExists()', + Text_LanguageDetect_Exception::PARAM_TYPE + ); + } + } + + /** + * Returns the list of detectable languages + * + * @access public + * @return array the names of the languages known to this object<<<<<<< + * @throws Text_LanguageDetect_Exception + */ + function getLanguages() + { + return $this->_convertToNameMode( + array_keys($this->_lang_db) + ); + } + + /** + * Make this object behave like Language::Guess + * + * @param bool $setting false to turn off perl compatibility + * + * @return void + */ + public function setPerlCompatible($setting = true) + { + if (is_bool($setting)) { // input check + $this->_perl_compatible = $setting; + + if ($setting == true) { + $this->_max_score = $this->_threshold; + } else { + $this->_max_score = 0; + } + } + + } + + /** + * Sets the way how language names are accepted and returned. + * + * @param integer $name_mode One of the following modes: + * 0 - language name ("english") + * 2 - 2-letter ISO 639-1 code ("en") + * 3 - 3-letter ISO 639-2 code ("eng") + * + * @return void + */ + function setNameMode($name_mode) + { + $this->_name_mode = $name_mode; + } + + /** + * Whether to use unicode block ranges in detection + * + * Should speed up most detections if turned on (detault is on). In some + * circumstances it may be slower, such as for large text samples (> 10K) + * in languages that use latin scripts. In other cases it should speed up + * detection noticeably. + * + * @param bool $setting false to turn off + * + * @return void + */ + public function useUnicodeBlocks($setting = true) + { + if (is_bool($setting)) { + $this->_use_unicode_narrowing = $setting; + } + } + + /** + * Converts a piece of text into trigrams + * + * @param string $text text to convert + * + * @return array array of trigram frequencies + * @access private + * @deprecated Superceded by the Text_LanguageDetect_Parser class + */ + function _trigram($text) + { + $s = new Text_LanguageDetect_Parser($text); + $s->prepareTrigram(); + $s->prepareUnicode(false); + $s->setPadStart(!$this->_perl_compatible); + $s->analyze(); + return $s->getTrigramFreqs(); + } + + /** + * Converts a set of trigrams from frequencies to ranks + * + * Thresholds (cuts off) the list at $this->_threshold + * + * @param array $arr array of trigram + * + * @return array ranks of trigrams + * @access protected + */ + function _arr_rank($arr) + { + + // sorts alphabetically first as a standard way of breaking rank ties + $this->_bub_sort($arr); + + // below might also work, but seemed to introduce errors in testing + //ksort($arr); + //asort($arr); + + $rank = array(); + + $i = 0; + foreach ($arr as $key => $value) { + $rank[$key] = $i++; + + // cut off at a standard threshold + if ($i >= $this->_threshold) { + break; + } + } + + return $rank; + } + + /** + * Sorts an array by value breaking ties alphabetically + * + * @param array &$arr the array to sort + * + * @return void + * @access private + */ + function _bub_sort(&$arr) + { + // should do the same as this perl statement: + // sort { $trigrams{$b} == $trigrams{$a} + // ? $a cmp $b : $trigrams{$b} <=> $trigrams{$a} } + + // needs to sort by both key and value at once + // using the key to break ties for the value + + // converts array into an array of arrays of each key and value + // may be a better way of doing this + $combined = array(); + + foreach ($arr as $key => $value) { + $combined[] = array($key, $value); + } + + usort($combined, array($this, '_sort_func')); + + $replacement = array(); + foreach ($combined as $key => $value) { + list($new_key, $new_value) = $value; + $replacement[$new_key] = $new_value; + } + + $arr = $replacement; + } + + /** + * Sort function used by bubble sort + * + * Callback function for usort(). + * + * @param array $a first param passed by usort() + * @param array $b second param passed by usort() + * + * @return int 1 if $a is greater, -1 if not + * @see _bub_sort() + * @access private + */ + function _sort_func($a, $b) + { + // each is actually a key/value pair, so that it can compare using both + list($a_key, $a_value) = $a; + list($b_key, $b_value) = $b; + + if ($a_value == $b_value) { + // if the values are the same, break ties using the key + return strcmp($a_key, $b_key); + + } else { + // if not, just sort normally + if ($a_value > $b_value) { + return -1; + } else { + return 1; + } + } + + // 0 should not be possible because keys must be unique + } + + /** + * Calculates a linear rank-order distance statistic between two sets of + * ranked trigrams + * + * Sums the differences in rank for each trigram. If the trigram does not + * appear in both, consider it a difference of $this->_threshold. + * + * This distance measure was proposed by Cavnar & Trenkle (1994). Despite + * its simplicity it has been shown to be highly accurate for language + * identification tasks. + * + * @param array $arr1 the reference set of trigram ranks + * @param array $arr2 the target set of trigram ranks + * + * @return int the sum of the differences between the ranks of + * the two trigram sets + * @access private + */ + function _distance($arr1, $arr2) + { + $sumdist = 0; + + foreach ($arr2 as $key => $value) { + if (isset($arr1[$key])) { + $distance = abs($value - $arr1[$key]); + } else { + // $this->_threshold sets the maximum possible distance value + // for any one pair of trigrams + $distance = $this->_threshold; + } + $sumdist += $distance; + } + + return $sumdist; + + // todo: there are other distance statistics to try, e.g. relative + // entropy, but they're probably more costly to compute + } + + /** + * Normalizes the score returned by _distance() + * + * Different if perl compatible or not + * + * @param int $score the score from _distance() + * @param int $base_count the number of trigrams being considered + * + * @return float the normalized score + * @see _distance() + * @access private + */ + function _normalize_score($score, $base_count = null) + { + if ($base_count === null) { + $base_count = $this->_threshold; + } + + if (!$this->_perl_compatible) { + return 1 - ($score / $base_count / $this->_threshold); + } else { + return floor($score / $base_count); + } + } + + + /** + * Detects the closeness of a sample of text to the known languages + * + * Calculates the statistical difference between the text and + * the trigrams for each language, normalizes the score then + * returns results for all languages in sorted order + * + * If perl compatible, the score is 300-0, 0 being most similar. + * Otherwise, it's 0-1 with 1 being most similar. + * + * The $sample text should be at least a few sentences in length; + * should be ascii-7 or utf8 encoded, if another and the mbstring extension + * is present it will try to detect and convert. However, experience has + * shown that mb_detect_encoding() *does not work very well* with at least + * some types of encoding. + * + * @param string $sample a sample of text to compare. + * @param int $limit if specified, return an array of the most likely + * $limit languages and their scores. + * + * @return mixed sorted array of language scores, blank array if no + * useable text was found + * @see _distance() + * @throws Text_LanguageDetect_Exception + */ + public function detect($sample, $limit = 0) + { + // input check + if (!Text_LanguageDetect_Parser::validateString($sample)) { + return array(); + } + + // check char encoding + // (only if mbstring extension is compiled and PHP > 4.0.6) + if (function_exists('mb_detect_encoding') + && function_exists('mb_convert_encoding') + ) { + // mb_detect_encoding isn't very reliable, to say the least + // detection should still work with a sufficient sample + // of ascii characters + $encoding = mb_detect_encoding($sample); + + // mb_detect_encoding() will return FALSE if detection fails + // don't attempt conversion if that's the case + if ($encoding != 'ASCII' && $encoding != 'UTF-8' + && $encoding !== false + ) { + // verify the encoding exists in mb_list_encodings + if (in_array($encoding, mb_list_encodings())) { + $sample = mb_convert_encoding($sample, 'UTF-8', $encoding); + } + } + } + + $sample_obj = new Text_LanguageDetect_Parser($sample); + $sample_obj->prepareTrigram(); + if ($this->_use_unicode_narrowing) { + $sample_obj->prepareUnicode(); + } + $sample_obj->setPadStart(!$this->_perl_compatible); + $sample_obj->analyze(); + + $trigram_freqs =& $sample_obj->getTrigramRanks(); + $trigram_count = count($trigram_freqs); + + if ($trigram_count == 0) { + return array(); + } + + $scores = array(); + + // use unicode block detection to narrow down the possibilities + if ($this->_use_unicode_narrowing) { + $blocks =& $sample_obj->getUnicodeBlocks(); + + if (is_array($blocks)) { + $present_blocks = array_keys($blocks); + } else { + throw new Text_LanguageDetect_Exception( + 'Error during block detection', + Text_LanguageDetect_Exception::BLOCK_DETECTION + ); + } + + $possible_langs = array(); + + foreach ($present_blocks as $blockname) { + if (isset($this->_unicode_map[$blockname])) { + + $possible_langs = array_merge( + $possible_langs, + array_keys($this->_unicode_map[$blockname]) + ); + + // todo: faster way to do this? + } + } + + // could also try an intersect operation rather than a union + // in other words, choose languages whose trigrams contain + // ALL of the unicode blocks found in this sample + // would improve speed but would be completely thrown off by an + // unexpected character, like an umlaut appearing in english text + + $possible_langs = array_intersect( + array_keys($this->_lang_db), + array_unique($possible_langs) + ); + + // needs to intersect it with the keys of _lang_db in case + // languages have been omitted + + } else { + // or just try 'em all + $possible_langs = array_keys($this->_lang_db); + } + + + foreach ($possible_langs as $lang) { + $scores[$lang] = $this->_normalize_score( + $this->_distance($this->_lang_db[$lang], $trigram_freqs), + $trigram_count + ); + } + + unset($sample_obj); + + if ($this->_perl_compatible) { + asort($scores); + } else { + arsort($scores); + } + + // todo: drop languages with a score of $this->_max_score? + + // limit the number of returned scores + if ($limit && is_numeric($limit)) { + $limited_scores = array(); + + $i = 0; + foreach ($scores as $key => $value) { + if ($i++ >= $limit) { + break; + } + + $limited_scores[$key] = $value; + } + + return $this->_convertToNameMode($limited_scores, true); + } else { + return $this->_convertToNameMode($scores, true); + } + } + + /** + * Returns only the most similar language to the text sample + * + * Calls $this->detect() and returns only the top result + * + * @param string $sample text to detect the language of + * + * @return string the name of the most likely language + * or null if no language is similar + * @see detect() + * @throws Text_LanguageDetect_Exception + */ + public function detectSimple($sample) + { + $scores = $this->detect($sample, 1); + + // if top language has the maximum possible score, + // then the top score will have been picked at random + if (!is_array($scores) || empty($scores) + || current($scores) == $this->_max_score + ) { + return null; + } else { + return key($scores); + } + } + + /** + * Returns an array containing the most similar language and a confidence + * rating + * + * Confidence is a simple measure calculated from the similarity score + * minus the similarity score from the next most similar language + * divided by the highest possible score. Languages that have closely + * related cousins (e.g. Norwegian and Danish) should generally have lower + * confidence scores. + * + * The similarity score answers the question "How likely is the text the + * returned language regardless of the other languages considered?" The + * confidence score is one way of answering the question "how likely is the + * text the detected language relative to the rest of the language model + * set?" + * + * To see how similar languages are a priori, see languageSimilarity() + * + * @param string $sample text for which language will be detected + * + * @return array most similar language, score and confidence rating + * or null if no language is similar + * @see detect() + * @throws Text_LanguageDetect_Exception + */ + public function detectConfidence($sample) + { + $scores = $this->detect($sample, 2); + + // if most similar language has the max score, it + // will have been picked at random + if (!is_array($scores) || empty($scores) + || current($scores) == $this->_max_score + ) { + return null; + } + + $arr['language'] = key($scores); + $arr['similarity'] = current($scores); + if (next($scores) !== false) { // if false then no next element + // the goal is to return a higher value if the distance between + // the similarity of the first score and the second score is high + + if ($this->_perl_compatible) { + $arr['confidence'] = (current($scores) - $arr['similarity']) + / $this->_max_score; + + } else { + $arr['confidence'] = $arr['similarity'] - current($scores); + + } + + } else { + $arr['confidence'] = null; + } + + return $arr; + } + + /** + * Returns the distribution of unicode blocks in a given utf8 string + * + * For the block name of a single char, use unicodeBlockName() + * + * @param string $str input string. Must be ascii or utf8 + * @param bool $skip_symbols if true, skip ascii digits, symbols and + * non-printing characters. Includes spaces, + * newlines and common punctutation characters. + * + * @return array + * @throws Text_LanguageDetect_Exception + */ + public function detectUnicodeBlocks($str, $skip_symbols) + { + $skip_symbols = (bool)$skip_symbols; + $str = (string)$str; + + $sample_obj = new Text_LanguageDetect_Parser($str); + $sample_obj->prepareUnicode(); + $sample_obj->prepareTrigram(false); + $sample_obj->setUnicodeSkipSymbols($skip_symbols); + $sample_obj->analyze(); + $blocks = $sample_obj->getUnicodeBlocks(); + unset($sample_obj); + return $blocks; + } + + /** + * Returns the block name for a given unicode value + * + * If passed a string, will assume it is being passed a UTF8-formatted + * character and will automatically convert. Otherwise it will assume it + * is being passed a numeric unicode value. + * + * Make sure input is of the correct type! + * + * @param mixed $unicode unicode value or utf8 char + * + * @return mixed the block name string or false if not found + * @throws Text_LanguageDetect_Exception + */ + public function unicodeBlockName($unicode) + { + if (is_string($unicode)) { + // assume it is being passed a utf8 char, so convert it + if (self::utf8strlen($unicode) > 1) { + throw new Text_LanguageDetect_Exception( + 'Pass a single char only to this method', + Text_LanguageDetect_Exception::PARAM_TYPE + ); + } + $unicode = $this->_utf8char2unicode($unicode); + + } elseif (!is_int($unicode)) { + throw new Text_LanguageDetect_Exception( + 'Input must be of type string or int.', + Text_LanguageDetect_Exception::PARAM_TYPE + ); + } + + $blocks = $this->_read_unicode_block_db(); + + $result = $this->_unicode_block_name($unicode, $blocks); + + if ($result == -1) { + return false; + } else { + return $result[2]; + } + } + + /** + * Searches the unicode block database + * + * Returns the block name for a given unicode value. unicodeBlockName() is + * the public interface for this function, which does input checks which + * this function omits for speed. + * + * @param int $unicode the unicode value + * @param array $blocks the block database + * @param int $block_count the number of defined blocks in the database + * + * @return mixed Block name, -1 if it failed + * @see unicodeBlockName() + * @access protected + */ + function _unicode_block_name($unicode, $blocks, $block_count = -1) + { + // for a reference, see + // http://www.unicode.org/Public/UNIDATA/Blocks.txt + + // assume that ascii characters are the most common + // so try it first for efficiency + if ($unicode <= $blocks[0][1]) { + return $blocks[0]; + } + + // the optional $block_count param is for efficiency + // so we this function doesn't have to run count() every time + if ($block_count != -1) { + $high = $block_count - 1; + } else { + $high = count($blocks) - 1; + } + + $low = 1; // start with 1 because ascii was 0 + + // your average binary search algorithm + while ($low <= $high) { + $mid = floor(($low + $high) / 2); + + if ($unicode < $blocks[$mid][0]) { + // if it's lower than the lower bound + $high = $mid - 1; + + } elseif ($unicode > $blocks[$mid][1]) { + // if it's higher than the upper bound + $low = $mid + 1; + + } else { + // found it + return $blocks[$mid]; + } + } + + // failed to find the block + return -1; + + // todo: differentiate when it's out of range or when it falls + // into an unassigned range? + } + + /** + * Brings up the unicode block database + * + * @return array the database of unicode block definitions + * @throws Text_LanguageDetect_Exception + * @access protected + */ + function _read_unicode_block_db() + { + // since the unicode definitions are always going to be the same, + // might as well share the memory for the db with all other instances + // of this class + static $data; + + if (!isset($data)) { + $data = $this->_readdb($this->_unicode_db_filename); + } + + return $data; + } + + /** + * Calculate the similarities between the language models + * + * Use this function to see how similar languages are to each other. + * + * If passed 2 language names, will return just those languages compared. + * If passed 1 language name, will return that language compared to + * all others. + * If passed none, will return an array of every language model compared + * to every other one. + * + * @param string $lang1 the name of the first language to be compared + * @param string $lang2 the name of the second language to be compared + * + * @return array scores of every language compared + * or the score of just the provided languages + * or null if one of the supplied languages does not exist + * @throws Text_LanguageDetect_Exception + */ + public function languageSimilarity($lang1 = null, $lang2 = null) + { + $lang1 = $this->_convertFromNameMode($lang1); + $lang2 = $this->_convertFromNameMode($lang2); + if ($lang1 != null) { + $lang1 = strtolower($lang1); + + // check if language model exists + if (!isset($this->_lang_db[$lang1])) { + return null; + } + + if ($lang2 != null) { + if (!isset($this->_lang_db[$lang2])) { + // check if language model exists + return null; + } + + $lang2 = strtolower($lang2); + + // compare just these two languages + return $this->_normalize_score( + $this->_distance( + $this->_lang_db[$lang1], + $this->_lang_db[$lang2] + ) + ); + + } else { + // compare just $lang1 to all languages + $return_arr = array(); + foreach ($this->_lang_db as $key => $value) { + if ($key != $lang1) { + // don't compare a language to itself + $return_arr[$key] = $this->_normalize_score( + $this->_distance($this->_lang_db[$lang1], $value) + ); + } + } + asort($return_arr); + + return $return_arr; + } + + + } else { + // compare all languages to each other + $return_arr = array(); + foreach (array_keys($this->_lang_db) as $lang1) { + foreach (array_keys($this->_lang_db) as $lang2) { + // skip comparing languages to themselves + if ($lang1 != $lang2) { + + if (isset($return_arr[$lang2][$lang1])) { + // don't re-calculate what's already been done + $return_arr[$lang1][$lang2] + = $return_arr[$lang2][$lang1]; + + } else { + // calculate + $return_arr[$lang1][$lang2] + = $this->_normalize_score( + $this->_distance( + $this->_lang_db[$lang1], + $this->_lang_db[$lang2] + ) + ); + + } + } + } + } + return $return_arr; + } + } + + /** + * Cluster known languages according to languageSimilarity() + * + * WARNING: this method is EXPERIMENTAL. It is not recommended for common + * use, and it may disappear or its functionality may change in future + * releases without notice. + * + * Uses a nearest neighbor technique to generate the maximum possible + * number of dendograms from the similarity data. + * + * @access public + * @return array language cluster data + * @throws Text_LanguageDetect_Exception + * @see languageSimilarity() + * @deprecated this function will eventually be removed and placed into + * the model generation class + */ + function clusterLanguages() + { + // todo: set the maximum number of clusters + // return cached result, if any + if (isset($this->_clusters)) { + return $this->_clusters; + } + + $langs = array_keys($this->_lang_db); + + $arr = $this->languageSimilarity(); + + sort($langs); + + foreach ($langs as $lang) { + if (!isset($this->_lang_db[$lang])) { + throw new Text_LanguageDetect_Exception( + "missing $lang!", + Text_LanguageDetect_Exception::UNKNOWN_LANGUAGE + ); + } + } + + // http://www.psychstat.missouristate.edu/multibook/mlt04m.html + foreach ($langs as $old_key => $lang1) { + $langs[$lang1] = $lang1; + unset($langs[$old_key]); + } + + $result_data = $really_map = array(); + + $i = 0; + while (count($langs) > 2 && $i++ < 200) { + $highest_score = -1; + $highest_key1 = ''; + $highest_key2 = ''; + foreach ($langs as $lang1) { + foreach ($langs as $lang2) { + if ($lang1 != $lang2 + && $arr[$lang1][$lang2] > $highest_score + ) { + $highest_score = $arr[$lang1][$lang2]; + $highest_key1 = $lang1; + $highest_key2 = $lang2; + } + } + } + + if (!$highest_key1) { + // should not ever happen + throw new Text_LanguageDetect_Exception( + "no highest key? (step: $i)", + Text_LanguageDetect_Exception::NO_HIGHEST_KEY + ); + } + + if ($highest_score == 0) { + // languages are perfectly dissimilar + break; + } + + // $highest_key1 and $highest_key2 are most similar + $sum1 = array_sum($arr[$highest_key1]); + $sum2 = array_sum($arr[$highest_key2]); + + // use the score for the one that is most similar to the rest of + // the field as the score for the group + // todo: could try averaging or "centroid" method instead + // seems like that might make more sense + // actually nearest neighbor may be better for binary searching + + + // for "Complete Linkage"/"furthest neighbor" + // sign should be < + // for "Single Linkage"/"nearest neighbor" method + // should should be > + // results seem to be pretty much the same with either method + + // figure out which to delete and which to replace + if ($sum1 > $sum2) { + $replaceme = $highest_key1; + $deleteme = $highest_key2; + } else { + $replaceme = $highest_key2; + $deleteme = $highest_key1; + } + + $newkey = $replaceme . ':' . $deleteme; + + // $replaceme is most similar to remaining languages + // replace $replaceme with '$newkey', deleting $deleteme + + // keep a record of which fork is really which language + $really_lang = $replaceme; + while (isset($really_map[$really_lang])) { + $really_lang = $really_map[$really_lang]; + } + $really_map[$newkey] = $really_lang; + + + // replace the best fitting key, delete the other + foreach ($arr as $key1 => $arr2) { + foreach ($arr2 as $key2 => $value2) { + if ($key2 == $replaceme) { + $arr[$key1][$newkey] = $arr[$key1][$key2]; + unset($arr[$key1][$key2]); + // replacing $arr[$key1][$key2] with $arr[$key1][$newkey] + } + + if ($key1 == $replaceme) { + $arr[$newkey][$key2] = $arr[$key1][$key2]; + unset($arr[$key1][$key2]); + // replacing $arr[$key1][$key2] with $arr[$newkey][$key2] + } + + if ($key1 == $deleteme || $key2 == $deleteme) { + // deleting $arr[$key1][$key2] + unset($arr[$key1][$key2]); + } + } + } + + + unset($langs[$highest_key1]); + unset($langs[$highest_key2]); + $langs[$newkey] = $newkey; + + + // some of these may be overkill + $result_data[$newkey] = array( + 'newkey' => $newkey, + 'count' => $i, + 'diff' => abs($sum1 - $sum2), + 'score' => $highest_score, + 'bestfit' => $replaceme, + 'otherfit' => $deleteme, + 'really' => $really_lang, + ); + } + + $return_val = array( + 'open_forks' => $langs, + // the top level of clusters + // clusters that are mutually exclusive + // or specified by a specific maximum + + 'fork_data' => $result_data, + // data for each split + + 'name_map' => $really_map, + // which cluster is really which language + // using the nearest neighbor technique, the cluster + // inherits all of the properties of its most-similar member + // this keeps track + ); + + + // saves the result in the object + $this->_clusters = $return_val; + + return $return_val; + } + + + /** + * Perform an intelligent detection based on clusterLanguages() + * + * WARNING: this method is EXPERIMENTAL. It is not recommended for common + * use, and it may disappear or its functionality may change in future + * releases without notice. + * + * This compares the sample text to top the top level of clusters. If the + * sample is similar to the cluster it will drop down and compare it to the + * languages in the cluster, and so on until it hits a leaf node. + * + * this should find the language in considerably fewer compares + * (the equivalent of a binary search), however clusterLanguages() is costly + * and the loss of accuracy from this technique is significant. + * + * This method may need to be 'fuzzier' in order to become more accurate. + * + * This function could be more useful if the universe of possible languages + * was very large, however in such cases some method of Bayesian inference + * might be more helpful. + * + * @param string $str input string + * + * @return array language scores (only those compared) + * @throws Text_LanguageDetect_Exception + * @see clusterLanguages() + */ + public function clusteredSearch($str) + { + // input check + if (!Text_LanguageDetect_Parser::validateString($str)) { + return array(); + } + + // clusterLanguages() will return a cached result if possible + // so it's safe to call it every time + $result = $this->clusterLanguages(); + + $dendogram_start = $result['open_forks']; + $dendogram_data = $result['fork_data']; + $dendogram_alias = $result['name_map']; + + $sample_obj = new Text_LanguageDetect_Parser($str); + $sample_obj->prepareTrigram(); + $sample_obj->setPadStart(!$this->_perl_compatible); + $sample_obj->analyze(); + $sample_result = $sample_obj->getTrigramRanks(); + $sample_count = count($sample_result); + + // input check + if ($sample_count == 0) { + return array(); + } + + $i = 0; // counts the number of steps + + foreach ($dendogram_start as $lang) { + if (isset($dendogram_alias[$lang])) { + $lang_key = $dendogram_alias[$lang]; + } else { + $lang_key = $lang; + } + + $scores[$lang] = $this->_normalize_score( + $this->_distance($this->_lang_db[$lang_key], $sample_result), + $sample_count + ); + + $i++; + } + + if ($this->_perl_compatible) { + asort($scores); + } else { + arsort($scores); + } + + $top_score = current($scores); + $top_key = key($scores); + + // of starting forks, $top_key is the most similar to the sample + + $cur_key = $top_key; + while (isset($dendogram_data[$cur_key])) { + $lang1 = $dendogram_data[$cur_key]['bestfit']; + $lang2 = $dendogram_data[$cur_key]['otherfit']; + foreach (array($lang1, $lang2) as $lang) { + if (isset($dendogram_alias[$lang])) { + $lang_key = $dendogram_alias[$lang]; + } else { + $lang_key = $lang; + } + + $scores[$lang] = $this->_normalize_score( + $this->_distance($this->_lang_db[$lang_key], $sample_result), + $sample_count + ); + + //todo: does not need to do same comparison again + } + + $i++; + + if ($scores[$lang1] > $scores[$lang2]) { + $cur_key = $lang1; + $loser_key = $lang2; + } else { + $cur_key = $lang2; + $loser_key = $lang1; + } + + $diff = $scores[$cur_key] - $scores[$loser_key]; + + // $cur_key ({$dendogram_alias[$cur_key]}) wins + // over $loser_key ({$dendogram_alias[$loser_key]}) + // with a difference of $diff + } + + // found result in $i compares + + // rather than sorting the result, preserve it so that you can see + // which paths the algorithm decided to take along the tree + + // but sometimes the last item is only the second highest + if (($this->_perl_compatible && (end($scores) > prev($scores))) + || (!$this->_perl_compatible && (end($scores) < prev($scores))) + ) { + $real_last_score = current($scores); + $real_last_key = key($scores); + + // swaps the 2nd-to-last item for the last item + unset($scores[$real_last_key]); + $scores[$real_last_key] = $real_last_score; + } + + + if (!$this->_perl_compatible) { + $scores = array_reverse($scores, true); + // second param requires php > 4.0.3 + } + + return $scores; + } + + /** + * ut8-safe strlen() + * + * Returns the numbers of characters (not bytes) in a utf8 string + * + * @param string $str string to get the length of + * + * @return int number of chars + */ + public static function utf8strlen($str) + { + // utf8_decode() will convert unknown chars to '?', which is actually + // ideal for counting. + + return strlen(utf8_decode($str)); + + // idea stolen from dokuwiki + } + + /** + * Returns the unicode value of a utf8 char + * + * @param string $char a utf8 (possibly multi-byte) char + * + * @return int unicode value + * @access protected + * @link http://en.wikipedia.org/wiki/UTF-8 + */ + function _utf8char2unicode($char) + { + // strlen() here will actually get the binary length of a single char + switch (strlen($char)) { + case 1: + // normal ASCII-7 byte + // 0xxxxxxx --> 0xxxxxxx + return ord($char{0}); + + case 2: + // 2 byte unicode + // 110zzzzx 10xxxxxx --> 00000zzz zxxxxxxx + $z = (ord($char{0}) & 0x000001F) << 6; + $x = (ord($char{1}) & 0x0000003F); + return ($z | $x); + + case 3: + // 3 byte unicode + // 1110zzzz 10zxxxxx 10xxxxxx --> zzzzzxxx xxxxxxxx + $z = (ord($char{0}) & 0x0000000F) << 12; + $x1 = (ord($char{1}) & 0x0000003F) << 6; + $x2 = (ord($char{2}) & 0x0000003F); + return ($z | $x1 | $x2); + + case 4: + // 4 byte unicode + // 11110zzz 10zzxxxx 10xxxxxx 10xxxxxx --> + // 000zzzzz xxxxxxxx xxxxxxxx + $z1 = (ord($char{0}) & 0x00000007) << 18; + $z2 = (ord($char{1}) & 0x0000003F) << 12; + $x1 = (ord($char{2}) & 0x0000003F) << 6; + $x2 = (ord($char{3}) & 0x0000003F); + return ($z1 | $z2 | $x1 | $x2); + } + } + + /** + * utf8-safe fast character iterator + * + * Will get the next character starting from $counter, which will then be + * incremented. If a multi-byte char the bytes will be concatenated and + * $counter will be incremeted by the number of bytes in the char. + * + * @param string $str the string being iterated over + * @param int &$counter the iterator, will increment by reference + * @param bool $special_convert whether to do special conversions + * + * @return char the next (possibly multi-byte) char from $counter + * @access private + */ + static function _next_char($str, &$counter, $special_convert = false) + { + $char = $str{$counter++}; + $ord = ord($char); + + // for a description of the utf8 system see + // http://www.phpclasses.org/browse/file/5131.html + + // normal ascii one byte char + if ($ord <= 127) { + // special conversions needed for this package + // (that only apply to regular ascii characters) + // lower case, and convert all non-alphanumeric characters + // other than "'" to space + if ($special_convert && $char != ' ' && $char != "'") { + if ($ord >= 65 && $ord <= 90) { // A-Z + $char = chr($ord + 32); // lower case + } elseif ($ord < 97 || $ord > 122) { // NOT a-z + $char = ' '; // convert to space + } + } + + return $char; + + } elseif ($ord >> 5 == 6) { // two-byte char + // multi-byte chars + $nextchar = $str{$counter++}; // get next byte + + // lower-casing of non-ascii characters is still incomplete + + if ($special_convert) { + // lower case latin accented characters + if ($ord == 195) { + $nextord = ord($nextchar); + $nextord_adj = $nextord + 64; + // for a reference, see + // http://www.ramsch.org/martin/uni/fmi-hp/iso8859-1.html + + // À - Þ but not × + if ($nextord_adj >= 192 + && $nextord_adj <= 222 + && $nextord_adj != 215 + ) { + $nextchar = chr($nextord + 32); + } + + } elseif ($ord == 208) { + // lower case cyrillic alphabet + $nextord = ord($nextchar); + // if A - Pe + if ($nextord >= 144 && $nextord <= 159) { + // lower case + $nextchar = chr($nextord + 32); + + } elseif ($nextord >= 160 && $nextord <= 175) { + // if Er - Ya + // lower case + $char = chr(209); // == $ord++ + $nextchar = chr($nextord - 32); + } + } + } + + // tag on next byte + return $char . $nextchar; + } elseif ($ord >> 4 == 14) { // three-byte char + + // tag on next 2 bytes + return $char . $str{$counter++} . $str{$counter++}; + + } elseif ($ord >> 3 == 30) { // four-byte char + + // tag on next 3 bytes + return $char . $str{$counter++} . $str{$counter++} . $str{$counter++}; + + } else { + // error? + } + } + + /** + * Converts an $language input parameter from the configured mode + * to the language name that is used internally. + * + * Works for strings and arrays. + * + * @param string|array $lang A language description ("english"/"en"/"eng") + * @param boolean $convertKey If $lang is an array, setting $key + * converts the keys to the language name. + * + * @return string|array Language name + */ + function _convertFromNameMode($lang, $convertKey = false) + { + if ($this->_name_mode == 0) { + return $lang; + } + + if ($this->_name_mode == 2) { + $method = 'code2ToName'; + } else { + $method = 'code3ToName'; + } + + if (is_string($lang)) { + return (string)Text_LanguageDetect_ISO639::$method($lang); + } + + $newlang = array(); + foreach ($lang as $key => $val) { + if ($convertKey) { + $newkey = (string)Text_LanguageDetect_ISO639::$method($key); + $newlang[$newkey] = $val; + } else { + $newlang[$key] = (string)Text_LanguageDetect_ISO639::$method($val); + } + } + return $newlang; + } + + /** + * Converts an $language output parameter from the language name that is + * used internally to the configured mode. + * + * Works for strings and arrays. + * + * @param string|array $lang A language description ("english"/"en"/"eng") + * @param boolean $convertKey If $lang is an array, setting $key + * converts the keys to the language name. + * + * @return string|array Language name + */ + function _convertToNameMode($lang, $convertKey = false) + { + if ($this->_name_mode == 0) { + return $lang; + } + + if ($this->_name_mode == 2) { + $method = 'nameToCode2'; + } else { + $method = 'nameToCode3'; + } + + if (is_string($lang)) { + return Text_LanguageDetect_ISO639::$method($lang); + } + + $newlang = array(); + foreach ($lang as $key => $val) { + if ($convertKey) { + $newkey = Text_LanguageDetect_ISO639::$method($key); + $newlang[$newkey] = $val; + } else { + $newlang[$key] = Text_LanguageDetect_ISO639::$method($val); + } + } + return $newlang; + } +} + +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ + +?> diff --git a/plugins/af_lang_detect/languagedetect/Text/LanguageDetect/Exception.php b/plugins/af_lang_detect/languagedetect/Text/LanguageDetect/Exception.php new file mode 100644 index 0000000000..196d994f5c --- /dev/null +++ b/plugins/af_lang_detect/languagedetect/Text/LanguageDetect/Exception.php @@ -0,0 +1,57 @@ + + * @copyright 2011 Christian Weiske + * @license http://www.debian.org/misc/bsd.license BSD + * @version SVN: $Id$ + * @link http://pear.php.net/package/Text_LanguageDetect/ + */ + +/** + * Provides a mapping between the languages from lang.dat and the + * ISO 639-1 and ISO-639-2 codes. + * + * Note that this class contains only languages that exist in lang.dat. + * + * @category Text + * @package Text_LanguageDetect + * @author Christian Weiske + * @copyright 2011 Christian Weiske + * @license http://www.debian.org/misc/bsd.license BSD + * @link http://www.loc.gov/standards/iso639-2/php/code_list.php + */ +class Text_LanguageDetect_ISO639 +{ + /** + * Maps all language names from the language database to the + * ISO 639-1 2-letter language code. + * + * NULL indicates that there is no 2-letter code. + * + * @var array + */ + public static $nameToCode2 = array( + 'albanian' => 'sq', + 'arabic' => 'ar', + 'azeri' => 'az', + 'bengali' => 'bn', + 'bulgarian' => 'bg', + 'cebuano' => null, + 'croatian' => 'hr', + 'czech' => 'cs', + 'danish' => 'da', + 'dutch' => 'nl', + 'english' => 'en', + 'estonian' => 'et', + 'farsi' => 'fa', + 'finnish' => 'fi', + 'french' => 'fr', + 'german' => 'de', + 'hausa' => 'ha', + 'hawaiian' => null, + 'hindi' => 'hi', + 'hungarian' => 'hu', + 'icelandic' => 'is', + 'indonesian' => 'id', + 'italian' => 'it', + 'kazakh' => 'kk', + 'kyrgyz' => 'ky', + 'latin' => 'la', + 'latvian' => 'lv', + 'lithuanian' => 'lt', + 'macedonian' => 'mk', + 'mongolian' => 'mn', + 'nepali' => 'ne', + 'norwegian' => 'no', + 'pashto' => 'ps', + 'pidgin' => null, + 'polish' => 'pl', + 'portuguese' => 'pt', + 'romanian' => 'ro', + 'russian' => 'ru', + 'serbian' => 'sr', + 'slovak' => 'sk', + 'slovene' => 'sl', + 'somali' => 'so', + 'spanish' => 'es', + 'swahili' => 'sw', + 'swedish' => 'sv', + 'tagalog' => 'tl', + 'turkish' => 'tr', + 'ukrainian' => 'uk', + 'urdu' => 'ur', + 'uzbek' => 'uz', + 'vietnamese' => 'vi', + 'welsh' => 'cy', + ); + + /** + * Maps all language names from the language database to the + * ISO 639-2 3-letter language code. + * + * @var array + */ + public static $nameToCode3 = array( + 'albanian' => 'sqi', + 'arabic' => 'ara', + 'azeri' => 'aze', + 'bengali' => 'ben', + 'bulgarian' => 'bul', + 'cebuano' => 'ceb', + 'croatian' => 'hrv', + 'czech' => 'ces', + 'danish' => 'dan', + 'dutch' => 'nld', + 'english' => 'eng', + 'estonian' => 'est', + 'farsi' => 'fas', + 'finnish' => 'fin', + 'french' => 'fra', + 'german' => 'deu', + 'hausa' => 'hau', + 'hawaiian' => 'haw', + 'hindi' => 'hin', + 'hungarian' => 'hun', + 'icelandic' => 'isl', + 'indonesian' => 'ind', + 'italian' => 'ita', + 'kazakh' => 'kaz', + 'kyrgyz' => 'kir', + 'latin' => 'lat', + 'latvian' => 'lav', + 'lithuanian' => 'lit', + 'macedonian' => 'mkd', + 'mongolian' => 'mon', + 'nepali' => 'nep', + 'norwegian' => 'nor', + 'pashto' => 'pus', + 'pidgin' => 'crp', + 'polish' => 'pol', + 'portuguese' => 'por', + 'romanian' => 'ron', + 'russian' => 'rus', + 'serbian' => 'srp', + 'slovak' => 'slk', + 'slovene' => 'slv', + 'somali' => 'som', + 'spanish' => 'spa', + 'swahili' => 'swa', + 'swedish' => 'swe', + 'tagalog' => 'tgl', + 'turkish' => 'tur', + 'ukrainian' => 'ukr', + 'urdu' => 'urd', + 'uzbek' => 'uzb', + 'vietnamese' => 'vie', + 'welsh' => 'cym', + ); + + /** + * Maps ISO 639-1 2-letter language codes to the language names + * in the language database + * + * Not all languages have a 2 letter code, so some are missing + * + * @var array + */ + public static $code2ToName = array( + 'ar' => 'arabic', + 'az' => 'azeri', + 'bg' => 'bulgarian', + 'bn' => 'bengali', + 'cs' => 'czech', + 'cy' => 'welsh', + 'da' => 'danish', + 'de' => 'german', + 'en' => 'english', + 'es' => 'spanish', + 'et' => 'estonian', + 'fa' => 'farsi', + 'fi' => 'finnish', + 'fr' => 'french', + 'ha' => 'hausa', + 'hi' => 'hindi', + 'hr' => 'croatian', + 'hu' => 'hungarian', + 'id' => 'indonesian', + 'is' => 'icelandic', + 'it' => 'italian', + 'kk' => 'kazakh', + 'ky' => 'kyrgyz', + 'la' => 'latin', + 'lt' => 'lithuanian', + 'lv' => 'latvian', + 'mk' => 'macedonian', + 'mn' => 'mongolian', + 'ne' => 'nepali', + 'nl' => 'dutch', + 'no' => 'norwegian', + 'pl' => 'polish', + 'ps' => 'pashto', + 'pt' => 'portuguese', + 'ro' => 'romanian', + 'ru' => 'russian', + 'sk' => 'slovak', + 'sl' => 'slovene', + 'so' => 'somali', + 'sq' => 'albanian', + 'sr' => 'serbian', + 'sv' => 'swedish', + 'sw' => 'swahili', + 'tl' => 'tagalog', + 'tr' => 'turkish', + 'uk' => 'ukrainian', + 'ur' => 'urdu', + 'uz' => 'uzbek', + 'vi' => 'vietnamese', + ); + + /** + * Maps ISO 639-2 3-letter language codes to the language names + * in the language database. + * + * @var array + */ + public static $code3ToName = array( + 'ara' => 'arabic', + 'aze' => 'azeri', + 'ben' => 'bengali', + 'bul' => 'bulgarian', + 'ceb' => 'cebuano', + 'ces' => 'czech', + 'crp' => 'pidgin', + 'cym' => 'welsh', + 'dan' => 'danish', + 'deu' => 'german', + 'eng' => 'english', + 'est' => 'estonian', + 'fas' => 'farsi', + 'fin' => 'finnish', + 'fra' => 'french', + 'hau' => 'hausa', + 'haw' => 'hawaiian', + 'hin' => 'hindi', + 'hrv' => 'croatian', + 'hun' => 'hungarian', + 'ind' => 'indonesian', + 'isl' => 'icelandic', + 'ita' => 'italian', + 'kaz' => 'kazakh', + 'kir' => 'kyrgyz', + 'lat' => 'latin', + 'lav' => 'latvian', + 'lit' => 'lithuanian', + 'mkd' => 'macedonian', + 'mon' => 'mongolian', + 'nep' => 'nepali', + 'nld' => 'dutch', + 'nor' => 'norwegian', + 'pol' => 'polish', + 'por' => 'portuguese', + 'pus' => 'pashto', + 'rom' => 'romanian', + 'rus' => 'russian', + 'slk' => 'slovak', + 'slv' => 'slovene', + 'som' => 'somali', + 'spa' => 'spanish', + 'sqi' => 'albanian', + 'srp' => 'serbian', + 'swa' => 'swahili', + 'swe' => 'swedish', + 'tgl' => 'tagalog', + 'tur' => 'turkish', + 'ukr' => 'ukrainian', + 'urd' => 'urdu', + 'uzb' => 'uzbek', + 'vie' => 'vietnamese', + ); + + /** + * Returns the 2-letter ISO 639-1 code for the given language name. + * + * @param string $lang English language name like "swedish" + * + * @return string Two-letter language code (e.g. "sv") or NULL if not found + */ + public static function nameToCode2($lang) + { + $lang = strtolower($lang); + if (!isset(self::$nameToCode2[$lang])) { + return null; + } + return self::$nameToCode2[$lang]; + } + + /** + * Returns the 3-letter ISO 639-2 code for the given language name. + * + * @param string $lang English language name like "swedish" + * + * @return string Three-letter language code (e.g. "swe") or NULL if not found + */ + public static function nameToCode3($lang) + { + $lang = strtolower($lang); + if (!isset(self::$nameToCode3[$lang])) { + return null; + } + return self::$nameToCode3[$lang]; + } + + /** + * Returns the language name for the given 2-letter ISO 639-1 code. + * + * @param string $code Two-letter language code (e.g. "sv") + * + * @return string English language name like "swedish" + */ + public static function code2ToName($code) + { + $lang = strtolower($code); + if (!isset(self::$code2ToName[$code])) { + return null; + } + return self::$code2ToName[$code]; + } + + /** + * Returns the language name for the given 3-letter ISO 639-2 code. + * + * @param string $code Three-letter language code (e.g. "swe") + * + * @return string English language name like "swedish" + */ + public static function code3ToName($code) + { + $lang = strtolower($code); + if (!isset(self::$code3ToName[$code])) { + return null; + } + return self::$code3ToName[$code]; + } +} + +?> \ No newline at end of file diff --git a/plugins/af_lang_detect/languagedetect/Text/LanguageDetect/Parser.php b/plugins/af_lang_detect/languagedetect/Text/LanguageDetect/Parser.php new file mode 100644 index 0000000000..1c20c2657e --- /dev/null +++ b/plugins/af_lang_detect/languagedetect/Text/LanguageDetect/Parser.php @@ -0,0 +1,349 @@ +_string = $string; + } + + /** + * Returns true if a string is suitable for parsing + * + * @param string $str input string to test + * @return bool true if acceptable, false if not + */ + public static function validateString($str) { + if (!empty($str) && strlen($str) > 3 && preg_match('/\S/', $str)) { + return true; + } else { + return false; + } + } + + /** + * turn on/off trigram counting + * + * @access public + * @param bool $bool true for on, false for off + */ + function prepareTrigram($bool = true) + { + $this->_compile_trigram = $bool; + } + + /** + * turn on/off unicode block counting + * + * @access public + * @param bool $bool true for on, false for off + */ + function prepareUnicode($bool = true) + { + $this->_compile_unicode = $bool; + } + + /** + * turn on/off padding the beginning of the sample string + * + * @access public + * @param bool $bool true for on, false for off + */ + function setPadStart($bool = true) + { + $this->_trigram_pad_start = $bool; + } + + /** + * Should the unicode block counter skip non-alphabetical ascii chars? + * + * @access public + * @param bool $bool true for on, false for off + */ + function setUnicodeSkipSymbols($bool = true) + { + $this->_unicode_skip_symbols = $bool; + } + + /** + * Returns the trigram ranks for the text sample + * + * @access public + * @return array trigram ranks in the text sample + */ + function &getTrigramRanks() + { + return $this->_trigram_ranks; + } + + /** + * Return the trigram freqency table + * + * only used in testing to make sure the parser is working + * + * @access public + * @return array trigram freqencies in the text sample + */ + function &getTrigramFreqs() + { + return $this->_trigram; + } + + /** + * returns the array of unicode blocks + * + * @access public + * @return array unicode blocks in the text sample + */ + function &getUnicodeBlocks() + { + return $this->_unicode_blocks; + } + + /** + * Executes the parsing operation + * + * Be sure to call the set*() functions to set options and the + * prepare*() functions first to tell it what kind of data to compute + * + * Afterwards the get*() functions can be used to access the compiled + * information. + * + * @access public + */ + function analyze() + { + $len = strlen($this->_string); + $byte_counter = 0; + + + // unicode startup + if ($this->_compile_unicode) { + $blocks = $this->_read_unicode_block_db(); + $block_count = count($blocks); + + $skipped_count = 0; + $unicode_chars = array(); + } + + // trigram startup + if ($this->_compile_trigram) { + // initialize them as blank so the parser will skip the first two + // (since it skips trigrams with more than 2 contiguous spaces) + $a = ' '; + $b = ' '; + + // kludge + // if it finds a valid trigram to start and the start pad option is + // off, then set a variable that will be used to reduce this + // trigram after parsing has finished + if (!$this->_trigram_pad_start) { + $a = $this->_next_char($this->_string, $byte_counter, true); + + if ($a != ' ') { + $b = $this->_next_char($this->_string, $byte_counter, true); + $dropone = " $a$b"; + } + + $byte_counter = 0; + $a = ' '; + $b = ' '; + } + } + + while ($byte_counter < $len) { + $char = $this->_next_char($this->_string, $byte_counter, true); + + + // language trigram detection + if ($this->_compile_trigram) { + if (!($b == ' ' && ($a == ' ' || $char == ' '))) { + if (!isset($this->_trigram[$a . $b . $char])) { + $this->_trigram[$a . $b . $char] = 1; + } else { + $this->_trigram[$a . $b . $char]++; + } + } + + $a = $b; + $b = $char; + } + + // unicode block detection + if ($this->_compile_unicode) { + if ($this->_unicode_skip_symbols + && strlen($char) == 1 + && ($char < 'A' || $char > 'z' + || ($char > 'Z' && $char < 'a')) + && $char != "'") { // does not skip the apostrophe + // since it's included in the language + // models + + $skipped_count++; + continue; + } + + // build an array of all the characters + if (isset($unicode_chars[$char])) { + $unicode_chars[$char]++; + } else { + $unicode_chars[$char] = 1; + } + } + + // todo: add byte detection here + } + + // unicode cleanup + if ($this->_compile_unicode) { + foreach ($unicode_chars as $utf8_char => $count) { + $search_result = $this->_unicode_block_name( + $this->_utf8char2unicode($utf8_char), $blocks, $block_count); + + if ($search_result != -1) { + $block_name = $search_result[2]; + } else { + $block_name = '[Malformatted]'; + } + + if (isset($this->_unicode_blocks[$block_name])) { + $this->_unicode_blocks[$block_name] += $count; + } else { + $this->_unicode_blocks[$block_name] = $count; + } + } + } + + + // trigram cleanup + if ($this->_compile_trigram) { + // pad the end + if ($b != ' ') { + if (!isset($this->_trigram["$a$b "])) { + $this->_trigram["$a$b "] = 1; + } else { + $this->_trigram["$a$b "]++; + } + } + + // perl compatibility; Language::Guess does not pad the beginning + // kludge + if (isset($dropone)) { + if ($this->_trigram[$dropone] == 1) { + unset($this->_trigram[$dropone]); + } else { + $this->_trigram[$dropone]--; + } + } + + if (!empty($this->_trigram)) { + $this->_trigram_ranks = $this->_arr_rank($this->_trigram); + } else { + $this->_trigram_ranks = array(); + } + } + } +} + +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ + +?> diff --git a/plugins/af_lang_detect/languagedetect/data/lang.dat b/plugins/af_lang_detect/languagedetect/data/lang.dat new file mode 100644 index 0000000000..c2a44f56e3 --- /dev/null +++ b/plugins/af_lang_detect/languagedetect/data/lang.dat @@ -0,0 +1 @@ +a:2:{s:7:"trigram";a:52:{s:8:"albanian";a:300:{s:4:"të ";s:1:"0";s:4:" të";s:1:"1";s:4:"në ";s:1:"2";s:4:"për";s:1:"3";s:4:" pë";s:1:"4";s:3:" e ";s:1:"5";s:3:"sht";s:1:"6";s:4:" në";s:1:"7";s:3:" sh";s:1:"8";s:3:"se ";s:1:"9";s:3:"et ";s:2:"10";s:4:"ë s";s:2:"11";s:4:"ë t";s:2:"12";s:3:" se";s:2:"13";s:3:"he ";s:2:"14";s:4:"jë ";s:2:"15";s:4:"ër ";s:2:"16";s:3:"dhe";s:2:"17";s:3:" pa";s:2:"18";s:4:"ë n";s:2:"19";s:4:"ë p";s:2:"20";s:4:" që";s:2:"21";s:3:" dh";s:2:"22";s:4:"një";s:2:"23";s:4:"ë m";s:2:"24";s:3:" nj";s:2:"25";s:4:"ësh";s:2:"26";s:3:"in ";s:2:"27";s:3:" me";s:2:"28";s:4:"që ";s:2:"29";s:3:" po";s:2:"30";s:3:"e n";s:2:"31";s:3:"e t";s:2:"32";s:3:"ish";s:2:"33";s:4:"më ";s:2:"34";s:4:"së ";s:2:"35";s:3:"me ";s:2:"36";s:4:"htë";s:2:"37";s:3:" ka";s:2:"38";s:3:" si";s:2:"39";s:3:"e k";s:2:"40";s:3:"e p";s:2:"41";s:3:" i ";s:2:"42";s:4:"anë";s:2:"43";s:3:"ar ";s:2:"44";s:3:" nu";s:2:"45";s:3:"und";s:2:"46";s:3:"ve ";s:2:"47";s:4:" ës";s:2:"48";s:3:"e s";s:2:"49";s:4:" më";s:2:"50";s:3:"nuk";s:2:"51";s:3:"par";s:2:"52";s:3:"uar";s:2:"53";s:3:"uk ";s:2:"54";s:3:"jo ";s:2:"55";s:4:"rë ";s:2:"56";s:3:"ta ";s:2:"57";s:4:"ë f";s:2:"58";s:3:"en ";s:2:"59";s:3:"it ";s:2:"60";s:3:"min";s:2:"61";s:3:"het";s:2:"62";s:3:"n e";s:2:"63";s:3:"ri ";s:2:"64";s:3:"shq";s:2:"65";s:4:"ë d";s:2:"66";s:3:" do";s:2:"67";s:3:" nd";s:2:"68";s:3:"sh ";s:2:"69";s:4:"ën ";s:2:"70";s:4:"atë";s:2:"71";s:3:"hqi";s:2:"72";s:3:"ist";s:2:"73";s:4:"ë q";s:2:"74";s:3:" gj";s:2:"75";s:3:" ng";s:2:"76";s:3:" th";s:2:"77";s:3:"a n";s:2:"78";s:3:"do ";s:2:"79";s:3:"end";s:2:"80";s:3:"imi";s:2:"81";s:3:"ndi";s:2:"82";s:3:"r t";s:2:"83";s:3:"rat";s:2:"84";s:4:"ë b";s:2:"85";s:4:"ëri";s:2:"86";s:3:" mu";s:2:"87";s:3:"art";s:2:"88";s:3:"ash";s:2:"89";s:3:"qip";s:2:"90";s:3:" ko";s:2:"91";s:3:"e m";s:2:"92";s:3:"edh";s:2:"93";s:3:"eri";s:2:"94";s:3:"je ";s:2:"95";s:3:"ka ";s:2:"96";s:3:"nga";s:2:"97";s:3:"si ";s:2:"98";s:3:"te ";s:2:"99";s:4:"ë k";s:3:"100";s:4:"ësi";s:3:"101";s:3:" ma";s:3:"102";s:3:" ti";s:3:"103";s:3:"eve";s:3:"104";s:3:"hje";s:3:"105";s:3:"ira";s:3:"106";s:3:"mun";s:3:"107";s:3:"on ";s:3:"108";s:3:"po ";s:3:"109";s:3:"re ";s:3:"110";s:3:" pr";s:3:"111";s:3:"im ";s:3:"112";s:3:"lit";s:3:"113";s:3:"o t";s:3:"114";s:3:"ur ";s:3:"115";s:4:"ë e";s:3:"116";s:4:"ë v";s:3:"117";s:4:"ët ";s:3:"118";s:3:" ku";s:3:"119";s:4:" së";s:3:"120";s:3:"e d";s:3:"121";s:3:"es ";s:3:"122";s:3:"ga ";s:3:"123";s:3:"iti";s:3:"124";s:3:"jet";s:3:"125";s:4:"ndë";s:3:"126";s:3:"oli";s:3:"127";s:3:"shi";s:3:"128";s:3:"tje";s:3:"129";s:4:" bë";s:3:"130";s:3:" z ";s:3:"131";s:3:"gje";s:3:"132";s:3:"kan";s:3:"133";s:3:"shk";s:3:"134";s:4:"ënd";s:3:"135";s:4:"ës ";s:3:"136";s:3:" de";s:3:"137";s:3:" kj";s:3:"138";s:3:" ru";s:3:"139";s:3:" vi";s:3:"140";s:3:"ara";s:3:"141";s:3:"gov";s:3:"142";s:3:"kjo";s:3:"143";s:3:"or ";s:3:"144";s:3:"r p";s:3:"145";s:3:"rto";s:3:"146";s:3:"rug";s:3:"147";s:3:"tet";s:3:"148";s:3:"ugo";s:3:"149";s:3:"ali";s:3:"150";s:3:"arr";s:3:"151";s:3:"at ";s:3:"152";s:3:"d t";s:3:"153";s:3:"ht ";s:3:"154";s:3:"i p";s:3:"155";s:4:"ipë";s:3:"156";s:3:"izi";s:3:"157";s:4:"jnë";s:3:"158";s:3:"n n";s:3:"159";s:3:"ohe";s:3:"160";s:3:"shu";s:3:"161";s:4:"shë";s:3:"162";s:3:"t e";s:3:"163";s:3:"tik";s:3:"164";s:3:"a e";s:3:"165";s:4:"arë";s:3:"166";s:4:"etë";s:3:"167";s:3:"hum";s:3:"168";s:3:"nd ";s:3:"169";s:3:"ndr";s:3:"170";s:3:"osh";s:3:"171";s:3:"ova";s:3:"172";s:3:"rim";s:3:"173";s:3:"tos";s:3:"174";s:3:"va ";s:3:"175";s:3:" fa";s:3:"176";s:3:" fi";s:3:"177";s:3:"a s";s:3:"178";s:3:"hen";s:3:"179";s:3:"i n";s:3:"180";s:3:"mar";s:3:"181";s:3:"ndo";s:3:"182";s:3:"por";s:3:"183";s:3:"ris";s:3:"184";s:3:"sa ";s:3:"185";s:3:"sis";s:3:"186";s:4:"tës";s:3:"187";s:4:"umë";s:3:"188";s:3:"viz";s:3:"189";s:3:"zit";s:3:"190";s:3:" di";s:3:"191";s:3:" mb";s:3:"192";s:3:"aj ";s:3:"193";s:3:"ana";s:3:"194";s:3:"ata";s:3:"195";s:4:"dër";s:3:"196";s:3:"e a";s:3:"197";s:3:"esh";s:3:"198";s:3:"ime";s:3:"199";s:3:"jes";s:3:"200";s:3:"lar";s:3:"201";s:3:"n s";s:3:"202";s:3:"nte";s:3:"203";s:3:"pol";s:3:"204";s:3:"r n";s:3:"205";s:3:"ran";s:3:"206";s:3:"res";s:3:"207";s:4:"rrë";s:3:"208";s:3:"tar";s:3:"209";s:4:"ë a";s:3:"210";s:4:"ë i";s:3:"211";s:3:" at";s:3:"212";s:3:" jo";s:3:"213";s:4:" kë";s:3:"214";s:3:" re";s:3:"215";s:3:"a k";s:3:"216";s:3:"ai ";s:3:"217";s:3:"akt";s:3:"218";s:4:"hë ";s:3:"219";s:4:"hën";s:3:"220";s:3:"i i";s:3:"221";s:3:"i m";s:3:"222";s:3:"ia ";s:3:"223";s:3:"men";s:3:"224";s:3:"nis";s:3:"225";s:3:"shm";s:3:"226";s:3:"str";s:3:"227";s:3:"t k";s:3:"228";s:3:"t n";s:3:"229";s:3:"t s";s:3:"230";s:4:"ë g";s:3:"231";s:4:"ërk";s:3:"232";s:4:"ëve";s:3:"233";s:3:" ai";s:3:"234";s:3:" ci";s:3:"235";s:3:" ed";s:3:"236";s:3:" ja";s:3:"237";s:3:" kr";s:3:"238";s:3:" qe";s:3:"239";s:3:" ta";s:3:"240";s:3:" ve";s:3:"241";s:3:"a p";s:3:"242";s:3:"cil";s:3:"243";s:3:"el ";s:3:"244";s:4:"erë";s:3:"245";s:3:"gji";s:3:"246";s:3:"hte";s:3:"247";s:3:"i t";s:3:"248";s:3:"jen";s:3:"249";s:3:"jit";s:3:"250";s:3:"k d";s:3:"251";s:4:"mën";s:3:"252";s:3:"n t";s:3:"253";s:3:"nyr";s:3:"254";s:3:"ori";s:3:"255";s:3:"pas";s:3:"256";s:3:"ra ";s:3:"257";s:3:"rie";s:3:"258";s:4:"rës";s:3:"259";s:3:"tor";s:3:"260";s:3:"uaj";s:3:"261";s:3:"yre";s:3:"262";s:4:"ëm ";s:3:"263";s:4:"ëny";s:3:"264";s:3:" ar";s:3:"265";s:3:" du";s:3:"266";s:3:" ga";s:3:"267";s:3:" je";s:3:"268";s:4:"dës";s:3:"269";s:3:"e e";s:3:"270";s:3:"e z";s:3:"271";s:3:"ha ";s:3:"272";s:3:"hme";s:3:"273";s:3:"ika";s:3:"274";s:3:"ini";s:3:"275";s:3:"ite";s:3:"276";s:3:"ith";s:3:"277";s:3:"koh";s:3:"278";s:3:"kra";s:3:"279";s:3:"ku ";s:3:"280";s:3:"lim";s:3:"281";s:3:"lis";s:3:"282";s:4:"qën";s:3:"283";s:4:"rën";s:3:"284";s:3:"s s";s:3:"285";s:3:"t d";s:3:"286";s:3:"t t";s:3:"287";s:3:"tir";s:3:"288";s:4:"tën";s:3:"289";s:3:"ver";s:3:"290";s:4:"ë j";s:3:"291";s:3:" ba";s:3:"292";s:3:" in";s:3:"293";s:3:" tr";s:3:"294";s:3:" zg";s:3:"295";s:3:"a a";s:3:"296";s:3:"a m";s:3:"297";s:3:"a t";s:3:"298";s:3:"abr";s:3:"299";}s:6:"arabic";a:300:{s:5:" ال";s:1:"0";s:6:"الع";s:1:"1";s:6:"لعر";s:1:"2";s:6:"عرا";s:1:"3";s:6:"راق";s:1:"4";s:5:" ÙÙŠ";s:1:"5";s:5:"ÙÙŠ ";s:1:"6";s:5:"ين ";s:1:"7";s:5:"ية ";s:1:"8";s:5:"Ù† ا";s:1:"9";s:6:"الم";s:2:"10";s:5:"ات ";s:2:"11";s:5:"من ";s:2:"12";s:5:"ÙŠ ا";s:2:"13";s:5:" من";s:2:"14";s:6:"الأ";s:2:"15";s:5:"Ø© ا";s:2:"16";s:5:"اق ";s:2:"17";s:5:" وا";s:2:"18";s:5:"اء ";s:2:"19";s:6:"الإ";s:2:"20";s:5:" أن";s:2:"21";s:6:"وال";s:2:"22";s:5:"ما ";s:2:"23";s:5:" عل";s:2:"24";s:5:"لى ";s:2:"25";s:5:"ت ا";s:2:"26";s:5:"ون ";s:2:"27";s:5:"هم ";s:2:"28";s:6:"اقي";s:2:"29";s:5:"ام ";s:2:"30";s:5:"Ù„ ا";s:2:"31";s:5:"أن ";s:2:"32";s:5:"Ù… ا";s:2:"33";s:6:"الت";s:2:"34";s:5:"لا ";s:2:"35";s:6:"الا";s:2:"36";s:5:"ان ";s:2:"37";s:5:"ها ";s:2:"38";s:5:"ال ";s:2:"39";s:5:"Ø© Ùˆ";s:2:"40";s:5:"ا ا";s:2:"41";s:6:"رها";s:2:"42";s:6:"لام";s:2:"43";s:6:"يين";s:2:"44";s:5:" ول";s:2:"45";s:6:"لأم";s:2:"46";s:5:"نا ";s:2:"47";s:6:"على";s:2:"48";s:5:"Ù† ÙŠ";s:2:"49";s:6:"الب";s:2:"50";s:5:"اد ";s:2:"51";s:6:"الق";s:2:"52";s:5:"د ا";s:2:"53";s:5:"ذا ";s:2:"54";s:5:"Ù‡ ا";s:2:"55";s:5:" با";s:2:"56";s:6:"الد";s:2:"57";s:5:"ب ا";s:2:"58";s:6:"مري";s:2:"59";s:5:"لم ";s:2:"60";s:5:" إن";s:2:"61";s:5:" لل";s:2:"62";s:6:"سلا";s:2:"63";s:6:"أمر";s:2:"64";s:6:"ريك";s:2:"65";s:5:"مة ";s:2:"66";s:5:"Ù‰ ا";s:2:"67";s:5:"ا ÙŠ";s:2:"68";s:5:" عن";s:2:"69";s:5:" هذ";s:2:"70";s:5:"Ø¡ ا";s:2:"71";s:5:"ر ا";s:2:"72";s:6:"كان";s:2:"73";s:6:"قتل";s:2:"74";s:6:"إسل";s:2:"75";s:6:"الح";s:2:"76";s:5:"وا ";s:2:"77";s:5:" إل";s:2:"78";s:5:"ا Ø£";s:2:"79";s:6:"بال";s:2:"80";s:5:"Ù† Ù…";s:2:"81";s:6:"الس";s:2:"82";s:5:"رة ";s:2:"83";s:6:"لإس";s:2:"84";s:5:"Ù† Ùˆ";s:2:"85";s:6:"هاب";s:2:"86";s:5:"ÙŠ Ùˆ";s:2:"87";s:5:"ير ";s:2:"88";s:5:" كا";s:2:"89";s:5:"لة ";s:2:"90";s:6:"يات";s:2:"91";s:5:" لا";s:2:"92";s:6:"انت";s:2:"93";s:5:"Ù† Ø£";s:2:"94";s:6:"يكي";s:2:"95";s:6:"الر";s:2:"96";s:6:"الو";s:2:"97";s:5:"Ø© Ù";s:2:"98";s:5:"دة ";s:2:"99";s:6:"الج";s:3:"100";s:5:"قي ";s:3:"101";s:5:"وي ";s:3:"102";s:6:"الذ";s:3:"103";s:6:"الش";s:3:"104";s:6:"امي";s:3:"105";s:6:"اني";s:3:"106";s:5:"ذه ";s:3:"107";s:5:"عن ";s:3:"108";s:6:"لما";s:3:"109";s:6:"هذه";s:3:"110";s:5:"ول ";s:3:"111";s:5:"ا٠";s:3:"112";s:6:"اوي";s:3:"113";s:6:"بري";s:3:"114";s:5:"Ø© Ù„";s:3:"115";s:5:" أم";s:3:"116";s:5:" لم";s:3:"117";s:5:" ما";s:3:"118";s:5:"يد ";s:3:"119";s:5:" أي";s:3:"120";s:6:"إره";s:3:"121";s:5:"ع ا";s:3:"122";s:6:"عمل";s:3:"123";s:6:"ولا";s:3:"124";s:6:"إلى";s:3:"125";s:6:"ابي";s:3:"126";s:5:"Ù† Ù";s:3:"127";s:6:"ختط";s:3:"128";s:5:"لك ";s:3:"129";s:5:"نه ";s:3:"130";s:5:"ني ";s:3:"131";s:5:"إن ";s:3:"132";s:6:"دين";s:3:"133";s:5:"٠ا";s:3:"134";s:6:"لذي";s:3:"135";s:5:"ÙŠ Ø£";s:3:"136";s:5:"ÙŠ ب";s:3:"137";s:5:" وأ";s:3:"138";s:5:"ا ع";s:3:"139";s:6:"الخ";s:3:"140";s:5:"تل ";s:3:"141";s:5:"تي ";s:3:"142";s:5:"قد ";s:3:"143";s:6:"لدي";s:3:"144";s:5:" كل";s:3:"145";s:5:" مع";s:3:"146";s:5:"اب ";s:3:"147";s:6:"اخت";s:3:"148";s:5:"ار ";s:3:"149";s:6:"الن";s:3:"150";s:6:"علا";s:3:"151";s:5:"Ù… Ùˆ";s:3:"152";s:5:"مع ";s:3:"153";s:5:"س ا";s:3:"154";s:5:"كل ";s:3:"155";s:6:"لاء";s:3:"156";s:5:"Ù† ب";s:3:"157";s:5:"Ù† ت";s:3:"158";s:5:"ÙŠ Ù…";s:3:"159";s:6:"عرب";s:3:"160";s:5:"Ù… ب";s:3:"161";s:5:" وق";s:3:"162";s:5:" يق";s:3:"163";s:5:"ا Ù„";s:3:"164";s:5:"ا Ù…";s:3:"165";s:6:"الÙ";s:3:"166";s:6:"تطا";s:3:"167";s:6:"داد";s:3:"168";s:6:"لمس";s:3:"169";s:5:"له ";s:3:"170";s:6:"هذا";s:3:"171";s:5:" مح";s:3:"172";s:6:"ؤلا";s:3:"173";s:5:"بي ";s:3:"174";s:5:"Ø© Ù…";s:3:"175";s:5:"Ù† Ù„";s:3:"176";s:6:"هؤل";s:3:"177";s:5:"كن ";s:3:"178";s:6:"لإر";s:3:"179";s:6:"لتي";s:3:"180";s:5:" أو";s:3:"181";s:5:" ان";s:3:"182";s:5:" عم";s:3:"183";s:5:"ا Ù";s:3:"184";s:5:"Ø© Ø£";s:3:"185";s:6:"طاÙ";s:3:"186";s:5:"عب ";s:3:"187";s:5:"Ù„ Ù…";s:3:"188";s:5:"Ù† ع";s:3:"189";s:5:"ور ";s:3:"190";s:5:"يا ";s:3:"191";s:5:" يس";s:3:"192";s:5:"ا ت";s:3:"193";s:5:"Ø© ب";s:3:"194";s:6:"راء";s:3:"195";s:6:"عال";s:3:"196";s:6:"قوا";s:3:"197";s:6:"قية";s:3:"198";s:6:"لعا";s:3:"199";s:5:"Ù… ÙŠ";s:3:"200";s:5:"مي ";s:3:"201";s:6:"مية";s:3:"202";s:6:"نية";s:3:"203";s:5:"أي ";s:3:"204";s:6:"ابا";s:3:"205";s:6:"بغد";s:3:"206";s:5:"بل ";s:3:"207";s:5:"رب ";s:3:"208";s:6:"عما";s:3:"209";s:6:"غدا";s:3:"210";s:6:"مال";s:3:"211";s:6:"ملي";s:3:"212";s:5:"يس ";s:3:"213";s:5:" بأ";s:3:"214";s:5:" بع";s:3:"215";s:5:" بغ";s:3:"216";s:5:" وم";s:3:"217";s:6:"بات";s:3:"218";s:6:"بية";s:3:"219";s:6:"ذلك";s:3:"220";s:5:"عة ";s:3:"221";s:6:"قاو";s:3:"222";s:6:"قيي";s:3:"223";s:5:"كي ";s:3:"224";s:5:"Ù… Ù…";s:3:"225";s:5:"ÙŠ ع";s:3:"226";s:5:" عر";s:3:"227";s:5:" قا";s:3:"228";s:5:"ا Ùˆ";s:3:"229";s:5:"رى ";s:3:"230";s:5:"Ù‚ ا";s:3:"231";s:6:"وات";s:3:"232";s:5:"وم ";s:3:"233";s:5:" هؤ";s:3:"234";s:5:"ا ب";s:3:"235";s:6:"دام";s:3:"236";s:5:"دي ";s:3:"237";s:6:"رات";s:3:"238";s:6:"شعب";s:3:"239";s:6:"لان";s:3:"240";s:6:"لشع";s:3:"241";s:6:"لقو";s:3:"242";s:6:"ليا";s:3:"243";s:5:"Ù† Ù‡";s:3:"244";s:5:"ÙŠ ت";s:3:"245";s:5:"ÙŠ ÙŠ";s:3:"246";s:5:" وه";s:3:"247";s:5:" يح";s:3:"248";s:6:"جرا";s:3:"249";s:6:"جما";s:3:"250";s:6:"حمد";s:3:"251";s:5:"دم ";s:3:"252";s:5:"كم ";s:3:"253";s:6:"لاو";s:3:"254";s:6:"لره";s:3:"255";s:6:"ماع";s:3:"256";s:5:"Ù† Ù‚";s:3:"257";s:5:"نة ";s:3:"258";s:5:"هي ";s:3:"259";s:5:" بل";s:3:"260";s:5:" به";s:3:"261";s:5:" له";s:3:"262";s:5:" وي";s:3:"263";s:5:"ا Ùƒ";s:3:"264";s:6:"اذا";s:3:"265";s:5:"اع ";s:3:"266";s:5:"ت Ù…";s:3:"267";s:6:"تخا";s:3:"268";s:6:"خاب";s:3:"269";s:5:"ر Ù…";s:3:"270";s:6:"لمت";s:3:"271";s:6:"مسل";s:3:"272";s:5:"Ù‰ Ø£";s:3:"273";s:6:"يست";s:3:"274";s:6:"يطا";s:3:"275";s:5:" لأ";s:3:"276";s:5:" لي";s:3:"277";s:6:"أمن";s:3:"278";s:6:"است";s:3:"279";s:6:"بعض";s:3:"280";s:5:"Ø© ت";s:3:"281";s:5:"ري ";s:3:"282";s:6:"صدا";s:3:"283";s:5:"Ù‚ Ùˆ";s:3:"284";s:6:"قول";s:3:"285";s:5:"مد ";s:3:"286";s:6:"نتخ";s:3:"287";s:6:"Ù†ÙØ³";s:3:"288";s:6:"نها";s:3:"289";s:6:"هنا";s:3:"290";s:6:"أعم";s:3:"291";s:6:"أنه";s:3:"292";s:6:"ائن";s:3:"293";s:6:"الآ";s:3:"294";s:6:"الك";s:3:"295";s:5:"حة ";s:3:"296";s:5:"د Ù…";s:3:"297";s:5:"ر ع";s:3:"298";s:6:"ربي";s:3:"299";}s:5:"azeri";a:300:{s:4:"lÉ™r";s:1:"0";s:3:"in ";s:1:"1";s:4:"ın ";s:1:"2";s:3:"lar";s:1:"3";s:3:"da ";s:1:"4";s:3:"an ";s:1:"5";s:3:"ir ";s:1:"6";s:4:"dÉ™ ";s:1:"7";s:3:"ki ";s:1:"8";s:3:" bi";s:1:"9";s:4:"É™n ";s:2:"10";s:4:"É™ri";s:2:"11";s:4:"arı";s:2:"12";s:4:"É™r ";s:2:"13";s:3:"dir";s:2:"14";s:3:"nda";s:2:"15";s:3:" ki";s:2:"16";s:3:"rin";s:2:"17";s:4:"nın";s:2:"18";s:4:"É™si";s:2:"19";s:3:"ini";s:2:"20";s:3:" ed";s:2:"21";s:3:" qa";s:2:"22";s:4:" tÉ™";s:2:"23";s:3:" ba";s:2:"24";s:3:" ol";s:2:"25";s:4:"ası";s:2:"26";s:4:"ilÉ™";s:2:"27";s:4:"rın";s:2:"28";s:3:" ya";s:2:"29";s:4:"anı";s:2:"30";s:4:" vÉ™";s:2:"31";s:4:"ndÉ™";s:2:"32";s:3:"ni ";s:2:"33";s:3:"ara";s:2:"34";s:5:"ını";s:2:"35";s:4:"ınd";s:2:"36";s:3:" bu";s:2:"37";s:3:"si ";s:2:"38";s:3:"ib ";s:2:"39";s:3:"aq ";s:2:"40";s:4:"dÉ™n";s:2:"41";s:3:"iya";s:2:"42";s:4:"nÉ™ ";s:2:"43";s:4:"rÉ™ ";s:2:"44";s:3:"n b";s:2:"45";s:4:"sın";s:2:"46";s:4:"vÉ™ ";s:2:"47";s:3:"iri";s:2:"48";s:4:"lÉ™ ";s:2:"49";s:3:"nin";s:2:"50";s:4:"É™li";s:2:"51";s:3:" de";s:2:"52";s:4:" mü";s:2:"53";s:3:"bir";s:2:"54";s:3:"n s";s:2:"55";s:3:"ri ";s:2:"56";s:4:"É™k ";s:2:"57";s:3:" az";s:2:"58";s:4:" sÉ™";s:2:"59";s:3:"ar ";s:2:"60";s:3:"bil";s:2:"61";s:4:"zÉ™r";s:2:"62";s:3:"bu ";s:2:"63";s:3:"dan";s:2:"64";s:3:"edi";s:2:"65";s:3:"ind";s:2:"66";s:3:"man";s:2:"67";s:3:"un ";s:2:"68";s:5:"É™rÉ™";s:2:"69";s:3:" ha";s:2:"70";s:3:"lan";s:2:"71";s:4:"yyÉ™";s:2:"72";s:3:"iyy";s:2:"73";s:3:" il";s:2:"74";s:3:" ne";s:2:"75";s:3:"r k";s:2:"76";s:4:"É™ b";s:2:"77";s:3:" is";s:2:"78";s:3:"na ";s:2:"79";s:3:"nun";s:2:"80";s:4:"ır ";s:2:"81";s:3:" da";s:2:"82";s:4:" hÉ™";s:2:"83";s:3:"a b";s:2:"84";s:4:"inÉ™";s:2:"85";s:3:"sin";s:2:"86";s:3:"yan";s:2:"87";s:4:"É™rb";s:2:"88";s:4:" dÉ™";s:2:"89";s:4:" mÉ™";s:2:"90";s:4:" qÉ™";s:2:"91";s:4:"dır";s:2:"92";s:3:"li ";s:2:"93";s:3:"ola";s:2:"94";s:3:"rba";s:2:"95";s:4:"azÉ™";s:2:"96";s:3:"can";s:2:"97";s:4:"lı ";s:2:"98";s:3:"nla";s:2:"99";s:3:" et";s:3:"100";s:4:" gö";s:3:"101";s:4:"alı";s:3:"102";s:3:"ayc";s:3:"103";s:3:"bay";s:3:"104";s:3:"eft";s:3:"105";s:3:"ist";s:3:"106";s:3:"n i";s:3:"107";s:3:"nef";s:3:"108";s:4:"tlÉ™";s:3:"109";s:3:"yca";s:3:"110";s:4:"yÉ™t";s:3:"111";s:5:"É™cÉ™";s:3:"112";s:3:" la";s:3:"113";s:3:"ild";s:3:"114";s:4:"nı ";s:3:"115";s:3:"tin";s:3:"116";s:3:"ldi";s:3:"117";s:3:"lik";s:3:"118";s:3:"n h";s:3:"119";s:3:"n m";s:3:"120";s:3:"oyu";s:3:"121";s:3:"raq";s:3:"122";s:3:"ya ";s:3:"123";s:4:"É™ti";s:3:"124";s:3:" ar";s:3:"125";s:3:"ada";s:3:"126";s:4:"edÉ™";s:3:"127";s:3:"mas";s:3:"128";s:4:"sı ";s:3:"129";s:4:"ına";s:3:"130";s:4:"É™ d";s:3:"131";s:5:"É™lÉ™";s:3:"132";s:4:"ayı";s:3:"133";s:3:"iyi";s:3:"134";s:3:"lma";s:3:"135";s:4:"mÉ™k";s:3:"136";s:3:"n d";s:3:"137";s:3:"ti ";s:3:"138";s:3:"yin";s:3:"139";s:3:"yun";s:3:"140";s:4:"É™t ";s:3:"141";s:4:"azı";s:3:"142";s:3:"ft ";s:3:"143";s:3:"i t";s:3:"144";s:3:"lli";s:3:"145";s:3:"n a";s:3:"146";s:3:"ra ";s:3:"147";s:4:" cÉ™";s:3:"148";s:4:" gÉ™";s:3:"149";s:3:" ko";s:3:"150";s:4:" nÉ™";s:3:"151";s:3:" oy";s:3:"152";s:3:"a d";s:3:"153";s:3:"ana";s:3:"154";s:4:"cÉ™k";s:3:"155";s:3:"eyi";s:3:"156";s:3:"ilm";s:3:"157";s:3:"irl";s:3:"158";s:3:"lay";s:3:"159";s:3:"liy";s:3:"160";s:3:"lub";s:3:"161";s:4:"n É™";s:3:"162";s:3:"ril";s:3:"163";s:4:"rlÉ™";s:3:"164";s:3:"unu";s:3:"165";s:3:"ver";s:3:"166";s:4:"ün ";s:3:"167";s:4:"É™ o";s:3:"168";s:4:"É™ni";s:3:"169";s:3:" he";s:3:"170";s:3:" ma";s:3:"171";s:3:" on";s:3:"172";s:3:" pa";s:3:"173";s:3:"ala";s:3:"174";s:3:"dey";s:3:"175";s:3:"i m";s:3:"176";s:3:"ima";s:3:"177";s:4:"lmÉ™";s:3:"178";s:4:"mÉ™t";s:3:"179";s:3:"par";s:3:"180";s:4:"yÉ™ ";s:3:"181";s:4:"É™tl";s:3:"182";s:3:" al";s:3:"183";s:3:" mi";s:3:"184";s:3:" sa";s:3:"185";s:4:" É™l";s:3:"186";s:4:"adı";s:3:"187";s:4:"akı";s:3:"188";s:3:"and";s:3:"189";s:3:"ard";s:3:"190";s:3:"art";s:3:"191";s:3:"ayi";s:3:"192";s:3:"i a";s:3:"193";s:3:"i q";s:3:"194";s:3:"i y";s:3:"195";s:3:"ili";s:3:"196";s:3:"ill";s:3:"197";s:4:"isÉ™";s:3:"198";s:3:"n o";s:3:"199";s:3:"n q";s:3:"200";s:3:"olu";s:3:"201";s:3:"rla";s:3:"202";s:4:"stÉ™";s:3:"203";s:4:"sÉ™ ";s:3:"204";s:3:"tan";s:3:"205";s:3:"tel";s:3:"206";s:3:"yar";s:3:"207";s:5:"É™dÉ™";s:3:"208";s:3:" me";s:3:"209";s:4:" rÉ™";s:3:"210";s:3:" ve";s:3:"211";s:3:" ye";s:3:"212";s:3:"a k";s:3:"213";s:3:"at ";s:3:"214";s:4:"baÅŸ";s:3:"215";s:3:"diy";s:3:"216";s:3:"ent";s:3:"217";s:3:"eti";s:3:"218";s:4:"hÉ™s";s:3:"219";s:3:"i i";s:3:"220";s:3:"ik ";s:3:"221";s:3:"la ";s:3:"222";s:4:"miÅŸ";s:3:"223";s:3:"n n";s:3:"224";s:3:"nu ";s:3:"225";s:3:"qar";s:3:"226";s:3:"ran";s:3:"227";s:4:"tÉ™r";s:3:"228";s:3:"xan";s:3:"229";s:4:"É™ a";s:3:"230";s:4:"É™ g";s:3:"231";s:4:"É™ t";s:3:"232";s:4:" dü";s:3:"233";s:3:"ama";s:3:"234";s:3:"b k";s:3:"235";s:3:"dil";s:3:"236";s:3:"era";s:3:"237";s:3:"etm";s:3:"238";s:3:"i b";s:3:"239";s:3:"kil";s:3:"240";s:3:"mil";s:3:"241";s:3:"n r";s:3:"242";s:3:"qla";s:3:"243";s:3:"r s";s:3:"244";s:3:"ras";s:3:"245";s:3:"siy";s:3:"246";s:3:"son";s:3:"247";s:3:"tim";s:3:"248";s:3:"yer";s:3:"249";s:4:"É™ k";s:3:"250";s:4:" gü";s:3:"251";s:3:" so";s:3:"252";s:4:" sö";s:3:"253";s:3:" te";s:3:"254";s:3:" xa";s:3:"255";s:3:"ai ";s:3:"256";s:3:"bar";s:3:"257";s:3:"cti";s:3:"258";s:3:"di ";s:3:"259";s:3:"eri";s:3:"260";s:4:"gör";s:3:"261";s:4:"gün";s:3:"262";s:4:"gÉ™l";s:3:"263";s:4:"hbÉ™";s:3:"264";s:4:"ihÉ™";s:3:"265";s:3:"iki";s:3:"266";s:3:"isi";s:3:"267";s:3:"lin";s:3:"268";s:3:"mai";s:3:"269";s:3:"maq";s:3:"270";s:3:"n k";s:3:"271";s:3:"n t";s:3:"272";s:3:"n v";s:3:"273";s:3:"onu";s:3:"274";s:3:"qan";s:3:"275";s:4:"qÉ™z";s:3:"276";s:4:"tÉ™ ";s:3:"277";s:3:"xal";s:3:"278";s:3:"yib";s:3:"279";s:3:"yih";s:3:"280";s:3:"zet";s:3:"281";s:4:"zır";s:3:"282";s:4:"ıb ";s:3:"283";s:4:"É™ m";s:3:"284";s:4:"É™ze";s:3:"285";s:3:" br";s:3:"286";s:3:" in";s:3:"287";s:4:" i̇";s:3:"288";s:3:" pr";s:3:"289";s:3:" ta";s:3:"290";s:3:" to";s:3:"291";s:5:" üç";s:3:"292";s:3:"a o";s:3:"293";s:3:"ali";s:3:"294";s:3:"ani";s:3:"295";s:3:"anl";s:3:"296";s:3:"aql";s:3:"297";s:3:"azi";s:3:"298";s:3:"bri";s:3:"299";}s:7:"bengali";a:300:{s:7:"ার ";s:1:"0";s:7:"য় ";s:1:"1";s:9:"েয়";s:1:"2";s:9:"য়া";s:1:"3";s:7:" কর";s:1:"4";s:7:"েত ";s:1:"5";s:7:" কা";s:1:"6";s:7:" পা";s:1:"7";s:7:" তা";s:1:"8";s:7:"না ";s:1:"9";s:9:"ায়";s:2:"10";s:7:"ের ";s:2:"11";s:9:"য়ে";s:2:"12";s:7:" বা";s:2:"13";s:7:"েব ";s:2:"14";s:7:" যা";s:2:"15";s:7:" হে";s:2:"16";s:7:" সা";s:2:"17";s:7:"ান ";s:2:"18";s:7:"েছ ";s:2:"19";s:7:" িন";s:2:"20";s:7:"েল ";s:2:"21";s:7:" িদ";s:2:"22";s:7:" না";s:2:"23";s:7:" িব";s:2:"24";s:7:"েক ";s:2:"25";s:7:"লা ";s:2:"26";s:7:"তা ";s:2:"27";s:7:" বઘ";s:2:"28";s:7:" িক";s:2:"29";s:9:"করে";s:2:"30";s:7:" পચ";s:2:"31";s:9:"াের";s:2:"32";s:9:"িনে";s:2:"33";s:7:"রা ";s:2:"34";s:7:" োব";s:2:"35";s:7:"কা ";s:2:"36";s:7:" কে";s:2:"37";s:7:" টা";s:2:"38";s:7:"র ক";s:2:"39";s:9:"েলা";s:2:"40";s:7:" োক";s:2:"41";s:7:" মা";s:2:"42";s:7:" োদ";s:2:"43";s:7:" োম";s:2:"44";s:7:"দর ";s:2:"45";s:7:"়া ";s:2:"46";s:9:"িদে";s:2:"47";s:9:"াকা";s:2:"48";s:9:"়েছ";s:2:"49";s:9:"েদর";s:2:"50";s:7:" আে";s:2:"51";s:5:" ও ";s:2:"52";s:7:"াল ";s:2:"53";s:7:"িট ";s:2:"54";s:7:" মà§";s:2:"55";s:9:"কের";s:2:"56";s:9:"হয়";s:2:"57";s:9:"করা";s:2:"58";s:7:"পর ";s:2:"59";s:9:"পাে";s:2:"60";s:7:" à¦à¦•";s:2:"61";s:7:" পদ";s:2:"62";s:9:"টাক";s:2:"63";s:7:"ড় ";s:2:"64";s:9:"কান";s:2:"65";s:7:"টা ";s:2:"66";s:9:"দગা";s:2:"67";s:9:"পদગ";s:2:"68";s:9:"াড়";s:2:"69";s:9:"োকা";s:2:"70";s:9:"ওয়";s:2:"71";s:9:"কাপ";s:2:"72";s:9:"হেয";s:2:"73";s:9:"েনর";s:2:"74";s:7:" হয";s:2:"75";s:9:"দেয";s:2:"76";s:7:"নর ";s:2:"77";s:9:"ানা";s:2:"78";s:9:"ােল";s:2:"79";s:7:" আর";s:2:"80";s:5:" ় ";s:2:"81";s:9:"বઘব";s:2:"82";s:9:"িয়";s:2:"83";s:7:" দা";s:2:"84";s:7:" সম";s:2:"85";s:9:"কার";s:2:"86";s:9:"হার";s:2:"87";s:7:"াই ";s:2:"88";s:9:"ড়া";s:2:"89";s:9:"িবি";s:2:"90";s:7:" রা";s:2:"91";s:7:" লা";s:2:"92";s:9:"নার";s:2:"93";s:9:"বহা";s:2:"94";s:7:"বা ";s:2:"95";s:9:"যায";s:2:"96";s:7:"েন ";s:2:"97";s:9:"ઘবহ";s:2:"98";s:7:" ভা";s:2:"99";s:7:" সে";s:3:"100";s:7:" োয";s:3:"101";s:7:"রর ";s:3:"102";s:9:"়ার";s:3:"103";s:9:"়াল";s:3:"104";s:7:"ગা ";s:3:"105";s:9:"থেক";s:3:"106";s:9:"ভাে";s:3:"107";s:7:"়ে ";s:3:"108";s:9:"েরর";s:3:"109";s:7:" ধর";s:3:"110";s:7:" হা";s:3:"111";s:7:"নઘ ";s:3:"112";s:9:"রেন";s:3:"113";s:9:"ােব";s:3:"114";s:9:"িড়";s:3:"115";s:7:"ির ";s:3:"116";s:7:" োথ";s:3:"117";s:9:"তার";s:3:"118";s:9:"বিভ";s:3:"119";s:9:"রেত";s:3:"120";s:9:"সাে";s:3:"121";s:9:"াকে";s:3:"122";s:9:"ােত";s:3:"123";s:9:"িভਭ";s:3:"124";s:7:"ে ব";s:3:"125";s:9:"োথে";s:3:"126";s:7:" োপ";s:3:"127";s:7:" োস";s:3:"128";s:9:"বার";s:3:"129";s:7:"ভਭ ";s:3:"130";s:7:"রন ";s:3:"131";s:7:"াম ";s:3:"132";s:7:" à¦à¦–";s:3:"133";s:7:"আর ";s:3:"134";s:9:"কাে";s:3:"135";s:7:"দন ";s:3:"136";s:9:"সাজ";s:3:"137";s:9:"ােক";s:3:"138";s:9:"ােন";s:3:"139";s:9:"েনা";s:3:"140";s:7:" ঘে";s:3:"141";s:7:" তে";s:3:"142";s:7:" রে";s:3:"143";s:9:"তেব";s:3:"144";s:7:"বন ";s:3:"145";s:9:"বઘা";s:3:"146";s:9:"েড়";s:3:"147";s:9:"েবন";s:3:"148";s:7:" খà§";s:3:"149";s:7:" চা";s:3:"150";s:7:" সà§";s:3:"151";s:7:"কে ";s:3:"152";s:9:"ধরে";s:3:"153";s:7:"র à§‹";s:3:"154";s:7:"় ি";s:3:"155";s:7:"া ি";s:3:"156";s:9:"ােথ";s:3:"157";s:9:"াਠা";s:3:"158";s:7:"িদ ";s:3:"159";s:7:"িন ";s:3:"160";s:7:" অন";s:3:"161";s:7:" আপ";s:3:"162";s:7:" আম";s:3:"163";s:7:" থা";s:3:"164";s:7:" বચ";s:3:"165";s:7:" োফ";s:3:"166";s:7:" ৌত";s:3:"167";s:9:"ঘের";s:3:"168";s:7:"তে ";s:3:"169";s:9:"ময়";s:3:"170";s:9:"যাਠ";s:3:"171";s:7:"র স";s:3:"172";s:9:"রাখ";s:3:"173";s:7:"া ব";s:3:"174";s:7:"া à§‹";s:3:"175";s:9:"ালা";s:3:"176";s:7:"িক ";s:3:"177";s:7:"িশ ";s:3:"178";s:7:"েখ ";s:3:"179";s:7:" à¦à¦°";s:3:"180";s:7:" চઓ";s:3:"181";s:7:" িড";s:3:"182";s:7:"খন ";s:3:"183";s:9:"ড়ে";s:3:"184";s:7:"র ব";s:3:"185";s:7:"়র ";s:3:"186";s:9:"াইে";s:3:"187";s:9:"ােদ";s:3:"188";s:9:"িদন";s:3:"189";s:9:"েরন";s:3:"190";s:7:" তੴ";s:3:"191";s:9:"ছাড";s:3:"192";s:9:"জনઘ";s:3:"193";s:9:"তাই";s:3:"194";s:7:"মা ";s:3:"195";s:9:"মাে";s:3:"196";s:9:"লার";s:3:"197";s:7:"াজ ";s:3:"198";s:9:"াতা";s:3:"199";s:9:"ামা";s:3:"200";s:9:"ਊেল";s:3:"201";s:9:"ગার";s:3:"202";s:7:" সব";s:3:"203";s:9:"আপন";s:3:"204";s:9:"à¦à¦•ট";s:3:"205";s:9:"কাি";s:3:"206";s:9:"জাই";s:3:"207";s:7:"টর ";s:3:"208";s:9:"ডজা";s:3:"209";s:9:"দেখ";s:3:"210";s:9:"পনা";s:3:"211";s:7:"রও ";s:3:"212";s:7:"লে ";s:3:"213";s:9:"হেব";s:3:"214";s:9:"াজা";s:3:"215";s:9:"ািট";s:3:"216";s:9:"িডজ";s:3:"217";s:7:"েথ ";s:3:"218";s:7:" à¦à¦¬";s:3:"219";s:7:" জন";s:3:"220";s:7:" জা";s:3:"221";s:9:"আমা";s:3:"222";s:9:"গেল";s:3:"223";s:9:"জান";s:3:"224";s:9:"নেত";s:3:"225";s:9:"বিশ";s:3:"226";s:9:"মà§à§‡";s:3:"227";s:9:"মেয";s:3:"228";s:7:"র প";s:3:"229";s:7:"সে ";s:3:"230";s:9:"হেল";s:3:"231";s:7:"় à§‹";s:3:"232";s:7:"া হ";s:3:"233";s:9:"াওয";s:3:"234";s:9:"োমক";s:3:"235";s:9:"ઘাি";s:3:"236";s:7:" অে";s:3:"237";s:5:" ট ";s:3:"238";s:7:" োগ";s:3:"239";s:7:" োন";s:3:"240";s:7:"জর ";s:3:"241";s:9:"তির";s:3:"242";s:9:"দাম";s:3:"243";s:9:"পড়";s:3:"244";s:9:"পার";s:3:"245";s:9:"বাঘ";s:3:"246";s:9:"মকা";s:3:"247";s:9:"মাম";s:3:"248";s:9:"য়র";s:3:"249";s:9:"যাে";s:3:"250";s:7:"র ম";s:3:"251";s:7:"রে ";s:3:"252";s:7:"লর ";s:3:"253";s:7:"া ক";s:3:"254";s:7:"াগ ";s:3:"255";s:9:"াবা";s:3:"256";s:9:"ারা";s:3:"257";s:9:"ািন";s:3:"258";s:7:"ে গ";s:3:"259";s:7:"েগ ";s:3:"260";s:9:"েলর";s:3:"261";s:9:"োদখ";s:3:"262";s:9:"োবি";s:3:"263";s:7:"ઓল ";s:3:"264";s:7:" দে";s:3:"265";s:7:" পà§";s:3:"266";s:7:" বে";s:3:"267";s:9:"অেন";s:3:"268";s:9:"à¦à¦–ন";s:3:"269";s:9:"কছà§";s:3:"270";s:9:"কাল";s:3:"271";s:9:"গেয";s:3:"272";s:7:"ছন ";s:3:"273";s:7:"ত প";s:3:"274";s:9:"নেয";s:3:"275";s:9:"পাি";s:3:"276";s:7:"মন ";s:3:"277";s:7:"র আ";s:3:"278";s:9:"রার";s:3:"279";s:7:"াও ";s:3:"280";s:7:"াপ ";s:3:"281";s:9:"িকছ";s:3:"282";s:9:"িগে";s:3:"283";s:9:"েছন";s:3:"284";s:9:"েজর";s:3:"285";s:9:"োমা";s:3:"286";s:9:"োমে";s:3:"287";s:9:"ৌতি";s:3:"288";s:9:"ઘাে";s:3:"289";s:3:" ' ";s:3:"290";s:7:" à¦à¦›";s:3:"291";s:7:" ছা";s:3:"292";s:7:" বল";s:3:"293";s:7:" যি";s:3:"294";s:7:" শি";s:3:"295";s:7:" িম";s:3:"296";s:7:" োল";s:3:"297";s:9:"à¦à¦›à¦¾";s:3:"298";s:7:"খা ";s:3:"299";}s:9:"bulgarian";a:300:{s:5:"на ";s:1:"0";s:5:" на";s:1:"1";s:5:"то ";s:1:"2";s:5:" пр";s:1:"3";s:5:" за";s:1:"4";s:5:"та ";s:1:"5";s:5:" по";s:1:"6";s:6:"ите";s:1:"7";s:5:"те ";s:1:"8";s:5:"а п";s:1:"9";s:5:"а Ñ";s:2:"10";s:5:" от";s:2:"11";s:5:"за ";s:2:"12";s:6:"ата";s:2:"13";s:5:"Ð¸Ñ ";s:2:"14";s:4:" в ";s:2:"15";s:5:"е н";s:2:"16";s:5:" да";s:2:"17";s:5:"а н";s:2:"18";s:5:" Ñе";s:2:"19";s:5:" ко";s:2:"20";s:5:"да ";s:2:"21";s:5:"от ";s:2:"22";s:6:"ани";s:2:"23";s:6:"пре";s:2:"24";s:5:"не ";s:2:"25";s:6:"ени";s:2:"26";s:5:"о н";s:2:"27";s:5:"ни ";s:2:"28";s:5:"Ñе ";s:2:"29";s:4:" и ";s:2:"30";s:5:"но ";s:2:"31";s:6:"ане";s:2:"32";s:6:"ето";s:2:"33";s:5:"а в";s:2:"34";s:5:"ва ";s:2:"35";s:6:"ван";s:2:"36";s:5:"е п";s:2:"37";s:5:"а о";s:2:"38";s:6:"ото";s:2:"39";s:6:"ран";s:2:"40";s:5:"ат ";s:2:"41";s:6:"ред";s:2:"42";s:5:" не";s:2:"43";s:5:"а д";s:2:"44";s:5:"и п";s:2:"45";s:5:" до";s:2:"46";s:6:"про";s:2:"47";s:5:" ÑÑŠ";s:2:"48";s:5:"ли ";s:2:"49";s:6:"при";s:2:"50";s:6:"ниÑ";s:2:"51";s:6:"Ñки";s:2:"52";s:6:"тел";s:2:"53";s:5:"а и";s:2:"54";s:5:"по ";s:2:"55";s:5:"ри ";s:2:"56";s:4:" е ";s:2:"57";s:5:" ка";s:2:"58";s:6:"ира";s:2:"59";s:6:"кат";s:2:"60";s:6:"ние";s:2:"61";s:6:"нит";s:2:"62";s:5:"е з";s:2:"63";s:5:"и Ñ";s:2:"64";s:5:"о Ñ";s:2:"65";s:6:"оÑÑ‚";s:2:"66";s:5:"че ";s:2:"67";s:5:" ра";s:2:"68";s:6:"иÑÑ‚";s:2:"69";s:5:"о п";s:2:"70";s:5:" из";s:2:"71";s:5:" Ñа";s:2:"72";s:5:"е д";s:2:"73";s:6:"ини";s:2:"74";s:5:"ки ";s:2:"75";s:6:"мин";s:2:"76";s:5:" ми";s:2:"77";s:5:"а б";s:2:"78";s:6:"ава";s:2:"79";s:5:"е в";s:2:"80";s:5:"ие ";s:2:"81";s:6:"пол";s:2:"82";s:6:"Ñтв";s:2:"83";s:5:"Ñ‚ н";s:2:"84";s:5:" въ";s:2:"85";s:5:" ÑÑ‚";s:2:"86";s:5:" то";s:2:"87";s:6:"аза";s:2:"88";s:5:"е о";s:2:"89";s:5:"ов ";s:2:"90";s:5:"ÑÑ‚ ";s:2:"91";s:5:"ÑŠÑ‚ ";s:2:"92";s:5:"и н";s:2:"93";s:6:"иÑÑ‚";s:2:"94";s:6:"нат";s:2:"95";s:5:"ра ";s:2:"96";s:5:" бъ";s:2:"97";s:5:" че";s:2:"98";s:6:"алн";s:2:"99";s:5:"е Ñ";s:3:"100";s:5:"ен ";s:3:"101";s:6:"еÑÑ‚";s:3:"102";s:5:"и д";s:3:"103";s:6:"лен";s:3:"104";s:6:"ниÑ";s:3:"105";s:5:"о о";s:3:"106";s:6:"ови";s:3:"107";s:5:" об";s:3:"108";s:5:" Ñл";s:3:"109";s:5:"а Ñ€";s:3:"110";s:6:"ато";s:3:"111";s:6:"кон";s:3:"112";s:6:"ноÑ";s:3:"113";s:6:"ров";s:3:"114";s:5:"ще ";s:3:"115";s:5:" ре";s:3:"116";s:4:" Ñ ";s:3:"117";s:5:" Ñп";s:3:"118";s:6:"ват";s:3:"119";s:6:"еше";s:3:"120";s:5:"и в";s:3:"121";s:6:"иет";s:3:"122";s:5:"о в";s:3:"123";s:6:"ове";s:3:"124";s:6:"Ñта";s:3:"125";s:5:"а к";s:3:"126";s:5:"а Ñ‚";s:3:"127";s:6:"дат";s:3:"128";s:6:"ент";s:3:"129";s:5:"ка ";s:3:"130";s:6:"лед";s:3:"131";s:6:"нет";s:3:"132";s:6:"ори";s:3:"133";s:6:"Ñтр";s:3:"134";s:6:"Ñтъ";s:3:"135";s:5:"ти ";s:3:"136";s:6:"тър";s:3:"137";s:5:" те";s:3:"138";s:5:"а з";s:3:"139";s:5:"а м";s:3:"140";s:5:"ад ";s:3:"141";s:6:"ана";s:3:"142";s:6:"ено";s:3:"143";s:5:"и о";s:3:"144";s:6:"ина";s:3:"145";s:6:"ити";s:3:"146";s:5:"ма ";s:3:"147";s:6:"Ñка";s:3:"148";s:6:"Ñле";s:3:"149";s:6:"тво";s:3:"150";s:6:"тер";s:3:"151";s:6:"циÑ";s:3:"152";s:5:"ÑÑ‚ ";s:3:"153";s:5:" бе";s:3:"154";s:5:" де";s:3:"155";s:5:" па";s:3:"156";s:6:"ате";s:3:"157";s:6:"вен";s:3:"158";s:5:"ви ";s:3:"159";s:6:"вит";s:3:"160";s:5:"и з";s:3:"161";s:5:"и и";s:3:"162";s:6:"нар";s:3:"163";s:6:"нов";s:3:"164";s:6:"ова";s:3:"165";s:6:"пов";s:3:"166";s:6:"рез";s:3:"167";s:6:"рит";s:3:"168";s:5:"Ñа ";s:3:"169";s:6:"Ñта";s:3:"170";s:5:" го";s:3:"171";s:5:" ще";s:3:"172";s:6:"али";s:3:"173";s:5:"в п";s:3:"174";s:6:"гра";s:3:"175";s:5:"е и";s:3:"176";s:6:"еди";s:3:"177";s:6:"ели";s:3:"178";s:6:"или";s:3:"179";s:6:"каз";s:3:"180";s:6:"кит";s:3:"181";s:6:"лно";s:3:"182";s:6:"мен";s:3:"183";s:6:"оли";s:3:"184";s:6:"раз";s:3:"185";s:5:" ве";s:3:"186";s:5:" гр";s:3:"187";s:5:" им";s:3:"188";s:5:" ме";s:3:"189";s:5:" пъ";s:3:"190";s:6:"ави";s:3:"191";s:6:"ако";s:3:"192";s:6:"ача";s:3:"193";s:6:"вин";s:3:"194";s:5:"во ";s:3:"195";s:6:"гов";s:3:"196";s:6:"дан";s:3:"197";s:5:"ди ";s:3:"198";s:5:"до ";s:3:"199";s:5:"ед ";s:3:"200";s:6:"ери";s:3:"201";s:6:"еро";s:3:"202";s:6:"жда";s:3:"203";s:6:"ито";s:3:"204";s:6:"ков";s:3:"205";s:6:"кол";s:3:"206";s:6:"лни";s:3:"207";s:6:"мер";s:3:"208";s:6:"нач";s:3:"209";s:5:"о з";s:3:"210";s:6:"ола";s:3:"211";s:5:"он ";s:3:"212";s:6:"она";s:3:"213";s:6:"пра";s:3:"214";s:6:"рав";s:3:"215";s:6:"рем";s:3:"216";s:6:"ÑиÑ";s:3:"217";s:6:"Ñти";s:3:"218";s:5:"Ñ‚ п";s:3:"219";s:6:"тан";s:3:"220";s:5:"ха ";s:3:"221";s:5:"ше ";s:3:"222";s:6:"шен";s:3:"223";s:6:"ълг";s:3:"224";s:5:" ба";s:3:"225";s:5:" Ñи";s:3:"226";s:6:"аро";s:3:"227";s:6:"бъл";s:3:"228";s:5:"в Ñ€";s:3:"229";s:6:"гар";s:3:"230";s:5:"е е";s:3:"231";s:6:"елн";s:3:"232";s:6:"еме";s:3:"233";s:6:"ико";s:3:"234";s:6:"има";s:3:"235";s:5:"ко ";s:3:"236";s:6:"кои";s:3:"237";s:5:"ла ";s:3:"238";s:6:"лга";s:3:"239";s:5:"о д";s:3:"240";s:6:"ози";s:3:"241";s:6:"оит";s:3:"242";s:6:"под";s:3:"243";s:6:"реÑ";s:3:"244";s:6:"рие";s:3:"245";s:6:"Ñто";s:3:"246";s:5:"Ñ‚ к";s:3:"247";s:5:"Ñ‚ м";s:3:"248";s:5:"Ñ‚ Ñ";s:3:"249";s:6:"уÑÑ‚";s:3:"250";s:5:" би";s:3:"251";s:5:" дв";s:3:"252";s:5:" дъ";s:3:"253";s:5:" ма";s:3:"254";s:5:" мо";s:3:"255";s:5:" ни";s:3:"256";s:5:" оÑ";s:3:"257";s:6:"ала";s:3:"258";s:6:"анÑ";s:3:"259";s:6:"ара";s:3:"260";s:6:"ати";s:3:"261";s:6:"аци";s:3:"262";s:6:"беш";s:3:"263";s:6:"вър";s:3:"264";s:5:"е Ñ€";s:3:"265";s:6:"едв";s:3:"266";s:6:"ема";s:3:"267";s:6:"жав";s:3:"268";s:5:"и к";s:3:"269";s:6:"иал";s:3:"270";s:6:"ица";s:3:"271";s:6:"иче";s:3:"272";s:6:"киÑ";s:3:"273";s:6:"лит";s:3:"274";s:5:"о б";s:3:"275";s:6:"ово";s:3:"276";s:6:"оди";s:3:"277";s:6:"ока";s:3:"278";s:6:"поÑ";s:3:"279";s:6:"род";s:3:"280";s:6:"Ñед";s:3:"281";s:6:"Ñлу";s:3:"282";s:5:"Ñ‚ и";s:3:"283";s:6:"тов";s:3:"284";s:6:"ува";s:3:"285";s:6:"циа";s:3:"286";s:6:"чеÑ";s:3:"287";s:5:"Ñ Ð·";s:3:"288";s:5:" во";s:3:"289";s:5:" ил";s:3:"290";s:5:" Ñк";s:3:"291";s:5:" тр";s:3:"292";s:5:" це";s:3:"293";s:6:"ами";s:3:"294";s:6:"ари";s:3:"295";s:6:"бат";s:3:"296";s:5:"би ";s:3:"297";s:6:"бра";s:3:"298";s:6:"бъд";s:3:"299";}s:7:"cebuano";a:300:{s:3:"ng ";s:1:"0";s:3:"sa ";s:1:"1";s:3:" sa";s:1:"2";s:3:"ang";s:1:"3";s:3:"ga ";s:1:"4";s:3:"nga";s:1:"5";s:3:" ka";s:1:"6";s:3:" ng";s:1:"7";s:3:"an ";s:1:"8";s:3:" an";s:1:"9";s:3:" na";s:2:"10";s:3:" ma";s:2:"11";s:3:" ni";s:2:"12";s:3:"a s";s:2:"13";s:3:"a n";s:2:"14";s:3:"on ";s:2:"15";s:3:" pa";s:2:"16";s:3:" si";s:2:"17";s:3:"a k";s:2:"18";s:3:"a m";s:2:"19";s:3:" ba";s:2:"20";s:3:"ong";s:2:"21";s:3:"a i";s:2:"22";s:3:"ila";s:2:"23";s:3:" mg";s:2:"24";s:3:"mga";s:2:"25";s:3:"a p";s:2:"26";s:3:"iya";s:2:"27";s:3:"a a";s:2:"28";s:3:"ay ";s:2:"29";s:3:"ka ";s:2:"30";s:3:"ala";s:2:"31";s:3:"ing";s:2:"32";s:3:"g m";s:2:"33";s:3:"n s";s:2:"34";s:3:"g n";s:2:"35";s:3:"lan";s:2:"36";s:3:" gi";s:2:"37";s:3:"na ";s:2:"38";s:3:"ni ";s:2:"39";s:3:"o s";s:2:"40";s:3:"g p";s:2:"41";s:3:"n n";s:2:"42";s:3:" da";s:2:"43";s:3:"ag ";s:2:"44";s:3:"pag";s:2:"45";s:3:"g s";s:2:"46";s:3:"yan";s:2:"47";s:3:"ayo";s:2:"48";s:3:"o n";s:2:"49";s:3:"si ";s:2:"50";s:3:" mo";s:2:"51";s:3:"a b";s:2:"52";s:3:"g a";s:2:"53";s:3:"ail";s:2:"54";s:3:"g b";s:2:"55";s:3:"han";s:2:"56";s:3:"a d";s:2:"57";s:3:"asu";s:2:"58";s:3:"nag";s:2:"59";s:3:"ya ";s:2:"60";s:3:"man";s:2:"61";s:3:"ne ";s:2:"62";s:3:"pan";s:2:"63";s:3:"kon";s:2:"64";s:3:" il";s:2:"65";s:3:" la";s:2:"66";s:3:"aka";s:2:"67";s:3:"ako";s:2:"68";s:3:"ana";s:2:"69";s:3:"bas";s:2:"70";s:3:"ko ";s:2:"71";s:3:"od ";s:2:"72";s:3:"yo ";s:2:"73";s:3:" di";s:2:"74";s:3:" ko";s:2:"75";s:3:" ug";s:2:"76";s:3:"a u";s:2:"77";s:3:"g k";s:2:"78";s:3:"kan";s:2:"79";s:3:"la ";s:2:"80";s:3:"len";s:2:"81";s:3:"sur";s:2:"82";s:3:"ug ";s:2:"83";s:3:" ai";s:2:"84";s:3:"apa";s:2:"85";s:3:"aw ";s:2:"86";s:3:"d s";s:2:"87";s:3:"g d";s:2:"88";s:3:"g g";s:2:"89";s:3:"ile";s:2:"90";s:3:"nin";s:2:"91";s:3:" iy";s:2:"92";s:3:" su";s:2:"93";s:3:"ene";s:2:"94";s:3:"og ";s:2:"95";s:3:"ot ";s:2:"96";s:3:"aba";s:2:"97";s:3:"aha";s:2:"98";s:3:"as ";s:2:"99";s:3:"imo";s:3:"100";s:3:" ki";s:3:"101";s:3:"a t";s:3:"102";s:3:"aga";s:3:"103";s:3:"ban";s:3:"104";s:3:"ero";s:3:"105";s:3:"nan";s:3:"106";s:3:"o k";s:3:"107";s:3:"ran";s:3:"108";s:3:"ron";s:3:"109";s:3:"sil";s:3:"110";s:3:"una";s:3:"111";s:3:"usa";s:3:"112";s:3:" us";s:3:"113";s:3:"a g";s:3:"114";s:3:"ahi";s:3:"115";s:3:"ani";s:3:"116";s:3:"er ";s:3:"117";s:3:"ha ";s:3:"118";s:3:"i a";s:3:"119";s:3:"rer";s:3:"120";s:3:"yon";s:3:"121";s:3:" pu";s:3:"122";s:3:"ini";s:3:"123";s:3:"nak";s:3:"124";s:3:"ro ";s:3:"125";s:3:"to ";s:3:"126";s:3:"ure";s:3:"127";s:3:" ed";s:3:"128";s:3:" og";s:3:"129";s:3:" wa";s:3:"130";s:3:"ili";s:3:"131";s:3:"mo ";s:3:"132";s:3:"n a";s:3:"133";s:3:"nd ";s:3:"134";s:3:"o a";s:3:"135";s:3:" ad";s:3:"136";s:3:" du";s:3:"137";s:3:" pr";s:3:"138";s:3:"aro";s:3:"139";s:3:"i s";s:3:"140";s:3:"ma ";s:3:"141";s:3:"n m";s:3:"142";s:3:"ulo";s:3:"143";s:3:"und";s:3:"144";s:3:" ta";s:3:"145";s:3:"ara";s:3:"146";s:3:"asa";s:3:"147";s:3:"ato";s:3:"148";s:3:"awa";s:3:"149";s:3:"dmu";s:3:"150";s:3:"e n";s:3:"151";s:3:"edm";s:3:"152";s:3:"ina";s:3:"153";s:3:"mak";s:3:"154";s:3:"mun";s:3:"155";s:3:"niy";s:3:"156";s:3:"san";s:3:"157";s:3:"wa ";s:3:"158";s:3:" tu";s:3:"159";s:3:" un";s:3:"160";s:3:"a l";s:3:"161";s:3:"bay";s:3:"162";s:3:"iga";s:3:"163";s:3:"ika";s:3:"164";s:3:"ita";s:3:"165";s:3:"kin";s:3:"166";s:3:"lis";s:3:"167";s:3:"may";s:3:"168";s:3:"os ";s:3:"169";s:3:" ar";s:3:"170";s:3:"ad ";s:3:"171";s:3:"ali";s:3:"172";s:3:"ama";s:3:"173";s:3:"ers";s:3:"174";s:3:"ipa";s:3:"175";s:3:"isa";s:3:"176";s:3:"mao";s:3:"177";s:3:"nim";s:3:"178";s:3:"t s";s:3:"179";s:3:"tin";s:3:"180";s:3:" ak";s:3:"181";s:3:" ap";s:3:"182";s:3:" hi";s:3:"183";s:3:"abo";s:3:"184";s:3:"agp";s:3:"185";s:3:"ano";s:3:"186";s:3:"ata";s:3:"187";s:3:"g i";s:3:"188";s:3:"gan";s:3:"189";s:3:"gka";s:3:"190";s:3:"gpa";s:3:"191";s:3:"i m";s:3:"192";s:3:"iha";s:3:"193";s:3:"k s";s:3:"194";s:3:"law";s:3:"195";s:3:"or ";s:3:"196";s:3:"rs ";s:3:"197";s:3:"siy";s:3:"198";s:3:"tag";s:3:"199";s:3:" al";s:3:"200";s:3:" at";s:3:"201";s:3:" ha";s:3:"202";s:3:" hu";s:3:"203";s:3:" im";s:3:"204";s:3:"a h";s:3:"205";s:3:"bu ";s:3:"206";s:3:"e s";s:3:"207";s:3:"gma";s:3:"208";s:3:"kas";s:3:"209";s:3:"lag";s:3:"210";s:3:"mon";s:3:"211";s:3:"nah";s:3:"212";s:3:"ngo";s:3:"213";s:3:"r s";s:3:"214";s:3:"ra ";s:3:"215";s:3:"sab";s:3:"216";s:3:"sam";s:3:"217";s:3:"sul";s:3:"218";s:3:"uba";s:3:"219";s:3:"uha";s:3:"220";s:3:" lo";s:3:"221";s:3:" re";s:3:"222";s:3:"ada";s:3:"223";s:3:"aki";s:3:"224";s:3:"aya";s:3:"225";s:3:"bah";s:3:"226";s:3:"ce ";s:3:"227";s:3:"d n";s:3:"228";s:3:"lab";s:3:"229";s:3:"pa ";s:3:"230";s:3:"pak";s:3:"231";s:3:"s n";s:3:"232";s:3:"s s";s:3:"233";s:3:"tan";s:3:"234";s:3:"taw";s:3:"235";s:3:"te ";s:3:"236";s:3:"uma";s:3:"237";s:3:"ura";s:3:"238";s:3:" in";s:3:"239";s:3:" lu";s:3:"240";s:3:"a c";s:3:"241";s:3:"abi";s:3:"242";s:3:"at ";s:3:"243";s:3:"awo";s:3:"244";s:3:"bat";s:3:"245";s:3:"dal";s:3:"246";s:3:"dla";s:3:"247";s:3:"ele";s:3:"248";s:3:"g t";s:3:"249";s:3:"g u";s:3:"250";s:3:"gay";s:3:"251";s:3:"go ";s:3:"252";s:3:"hab";s:3:"253";s:3:"hin";s:3:"254";s:3:"i e";s:3:"255";s:3:"i n";s:3:"256";s:3:"kab";s:3:"257";s:3:"kap";s:3:"258";s:3:"lay";s:3:"259";s:3:"lin";s:3:"260";s:3:"nil";s:3:"261";s:3:"pam";s:3:"262";s:3:"pas";s:3:"263";s:3:"pro";s:3:"264";s:3:"pul";s:3:"265";s:3:"ta ";s:3:"266";s:3:"ton";s:3:"267";s:3:"uga";s:3:"268";s:3:"ugm";s:3:"269";s:3:"unt";s:3:"270";s:3:" co";s:3:"271";s:3:" gu";s:3:"272";s:3:" mi";s:3:"273";s:3:" pi";s:3:"274";s:3:" ti";s:3:"275";s:3:"a o";s:3:"276";s:3:"abu";s:3:"277";s:3:"adl";s:3:"278";s:3:"ado";s:3:"279";s:3:"agh";s:3:"280";s:3:"agk";s:3:"281";s:3:"ao ";s:3:"282";s:3:"art";s:3:"283";s:3:"bal";s:3:"284";s:3:"cit";s:3:"285";s:3:"di ";s:3:"286";s:3:"dto";s:3:"287";s:3:"dun";s:3:"288";s:3:"ent";s:3:"289";s:3:"g e";s:3:"290";s:3:"gon";s:3:"291";s:3:"gug";s:3:"292";s:3:"ia ";s:3:"293";s:3:"iba";s:3:"294";s:3:"ice";s:3:"295";s:3:"in ";s:3:"296";s:3:"inu";s:3:"297";s:3:"it ";s:3:"298";s:3:"kaa";s:3:"299";}s:8:"croatian";a:300:{s:3:"je ";s:1:"0";s:3:" na";s:1:"1";s:3:" pr";s:1:"2";s:3:" po";s:1:"3";s:3:"na ";s:1:"4";s:3:" je";s:1:"5";s:3:" za";s:1:"6";s:3:"ije";s:1:"7";s:3:"ne ";s:1:"8";s:3:" i ";s:1:"9";s:3:"ti ";s:2:"10";s:3:"da ";s:2:"11";s:3:" ko";s:2:"12";s:3:" ne";s:2:"13";s:3:"li ";s:2:"14";s:3:" bi";s:2:"15";s:3:" da";s:2:"16";s:3:" u ";s:2:"17";s:3:"ma ";s:2:"18";s:3:"mo ";s:2:"19";s:3:"a n";s:2:"20";s:3:"ih ";s:2:"21";s:3:"za ";s:2:"22";s:3:"a s";s:2:"23";s:3:"ko ";s:2:"24";s:3:"i s";s:2:"25";s:3:"a p";s:2:"26";s:3:"koj";s:2:"27";s:3:"pro";s:2:"28";s:3:"ju ";s:2:"29";s:3:"se ";s:2:"30";s:3:" go";s:2:"31";s:3:"ost";s:2:"32";s:3:"to ";s:2:"33";s:3:"va ";s:2:"34";s:3:" do";s:2:"35";s:3:" to";s:2:"36";s:3:"e n";s:2:"37";s:3:"i p";s:2:"38";s:3:" od";s:2:"39";s:3:" ra";s:2:"40";s:3:"no ";s:2:"41";s:3:"ako";s:2:"42";s:3:"ka ";s:2:"43";s:3:"ni ";s:2:"44";s:3:" ka";s:2:"45";s:3:" se";s:2:"46";s:3:" mo";s:2:"47";s:3:" st";s:2:"48";s:3:"i n";s:2:"49";s:3:"ima";s:2:"50";s:3:"ja ";s:2:"51";s:3:"pri";s:2:"52";s:3:"vat";s:2:"53";s:3:"sta";s:2:"54";s:3:" su";s:2:"55";s:3:"ati";s:2:"56";s:3:"e p";s:2:"57";s:3:"ta ";s:2:"58";s:3:"tsk";s:2:"59";s:3:"e i";s:2:"60";s:3:"nij";s:2:"61";s:3:" tr";s:2:"62";s:3:"cij";s:2:"63";s:3:"jen";s:2:"64";s:3:"nos";s:2:"65";s:3:"o s";s:2:"66";s:3:" iz";s:2:"67";s:3:"om ";s:2:"68";s:3:"tro";s:2:"69";s:3:"ili";s:2:"70";s:3:"iti";s:2:"71";s:3:"pos";s:2:"72";s:3:" al";s:2:"73";s:3:"a i";s:2:"74";s:3:"a o";s:2:"75";s:3:"e s";s:2:"76";s:3:"ija";s:2:"77";s:3:"ini";s:2:"78";s:3:"pre";s:2:"79";s:3:"str";s:2:"80";s:3:"la ";s:2:"81";s:3:"og ";s:2:"82";s:3:"ovo";s:2:"83";s:3:" sv";s:2:"84";s:3:"ekt";s:2:"85";s:3:"nje";s:2:"86";s:3:"o p";s:2:"87";s:3:"odi";s:2:"88";s:3:"rva";s:2:"89";s:3:" ni";s:2:"90";s:3:"ali";s:2:"91";s:3:"min";s:2:"92";s:3:"rij";s:2:"93";s:3:"a t";s:2:"94";s:3:"a z";s:2:"95";s:3:"ats";s:2:"96";s:3:"iva";s:2:"97";s:3:"o t";s:2:"98";s:3:"od ";s:2:"99";s:3:"oje";s:3:"100";s:3:"ra ";s:3:"101";s:3:" hr";s:3:"102";s:3:"a m";s:3:"103";s:3:"a u";s:3:"104";s:3:"hrv";s:3:"105";s:3:"im ";s:3:"106";s:3:"ke ";s:3:"107";s:3:"o i";s:3:"108";s:3:"ovi";s:3:"109";s:3:"red";s:3:"110";s:3:"riv";s:3:"111";s:3:"te ";s:3:"112";s:3:"bi ";s:3:"113";s:3:"e o";s:3:"114";s:3:"god";s:3:"115";s:3:"i d";s:3:"116";s:3:"lek";s:3:"117";s:3:"umi";s:3:"118";s:3:"zvo";s:3:"119";s:3:"din";s:3:"120";s:3:"e u";s:3:"121";s:3:"ene";s:3:"122";s:3:"jed";s:3:"123";s:3:"ji ";s:3:"124";s:3:"lje";s:3:"125";s:3:"nog";s:3:"126";s:3:"su ";s:3:"127";s:3:" a ";s:3:"128";s:3:" el";s:3:"129";s:3:" mi";s:3:"130";s:3:" o ";s:3:"131";s:3:"a d";s:3:"132";s:3:"alu";s:3:"133";s:3:"ele";s:3:"134";s:3:"i u";s:3:"135";s:3:"izv";s:3:"136";s:3:"ktr";s:3:"137";s:3:"lum";s:3:"138";s:3:"o d";s:3:"139";s:3:"ori";s:3:"140";s:3:"rad";s:3:"141";s:3:"sto";s:3:"142";s:3:"a k";s:3:"143";s:3:"anj";s:3:"144";s:3:"ava";s:3:"145";s:3:"e k";s:3:"146";s:3:"men";s:3:"147";s:3:"nic";s:3:"148";s:3:"o j";s:3:"149";s:3:"oj ";s:3:"150";s:3:"ove";s:3:"151";s:3:"ski";s:3:"152";s:3:"tvr";s:3:"153";s:3:"una";s:3:"154";s:3:"vor";s:3:"155";s:3:" di";s:3:"156";s:3:" no";s:3:"157";s:3:" s ";s:3:"158";s:3:" ta";s:3:"159";s:3:" tv";s:3:"160";s:3:"i i";s:3:"161";s:3:"i o";s:3:"162";s:3:"kak";s:3:"163";s:4:"roÅ¡";s:3:"164";s:3:"sko";s:3:"165";s:3:"vod";s:3:"166";s:3:" sa";s:3:"167";s:4:" će";s:3:"168";s:3:"a b";s:3:"169";s:3:"adi";s:3:"170";s:3:"amo";s:3:"171";s:3:"eni";s:3:"172";s:3:"gov";s:3:"173";s:3:"iju";s:3:"174";s:3:"ku ";s:3:"175";s:3:"o n";s:3:"176";s:3:"ora";s:3:"177";s:3:"rav";s:3:"178";s:3:"ruj";s:3:"179";s:3:"smo";s:3:"180";s:3:"tav";s:3:"181";s:3:"tru";s:3:"182";s:3:"u p";s:3:"183";s:3:"ve ";s:3:"184";s:3:" in";s:3:"185";s:3:" pl";s:3:"186";s:3:"aci";s:3:"187";s:3:"bit";s:3:"188";s:3:"de ";s:3:"189";s:4:"diÅ¡";s:3:"190";s:3:"ema";s:3:"191";s:3:"i m";s:3:"192";s:3:"ika";s:3:"193";s:4:"iÅ¡t";s:3:"194";s:3:"jer";s:3:"195";s:3:"ki ";s:3:"196";s:3:"mog";s:3:"197";s:3:"nik";s:3:"198";s:3:"nov";s:3:"199";s:3:"nu ";s:3:"200";s:3:"oji";s:3:"201";s:3:"oli";s:3:"202";s:3:"pla";s:3:"203";s:3:"pod";s:3:"204";s:3:"st ";s:3:"205";s:3:"sti";s:3:"206";s:3:"tra";s:3:"207";s:3:"tre";s:3:"208";s:3:"vo ";s:3:"209";s:3:" sm";s:3:"210";s:4:" Å¡t";s:3:"211";s:3:"dan";s:3:"212";s:3:"e z";s:3:"213";s:3:"i t";s:3:"214";s:3:"io ";s:3:"215";s:3:"ist";s:3:"216";s:3:"kon";s:3:"217";s:3:"lo ";s:3:"218";s:3:"stv";s:3:"219";s:3:"u s";s:3:"220";s:3:"uje";s:3:"221";s:3:"ust";s:3:"222";s:4:"će ";s:3:"223";s:4:"ći ";s:3:"224";s:4:"Å¡to";s:3:"225";s:3:" dr";s:3:"226";s:3:" im";s:3:"227";s:3:" li";s:3:"228";s:3:"ada";s:3:"229";s:3:"aft";s:3:"230";s:3:"ani";s:3:"231";s:3:"ao ";s:3:"232";s:3:"ars";s:3:"233";s:3:"ata";s:3:"234";s:3:"e t";s:3:"235";s:3:"emo";s:3:"236";s:3:"i k";s:3:"237";s:3:"ine";s:3:"238";s:3:"jem";s:3:"239";s:3:"kov";s:3:"240";s:3:"lik";s:3:"241";s:3:"lji";s:3:"242";s:3:"mje";s:3:"243";s:3:"naf";s:3:"244";s:3:"ner";s:3:"245";s:3:"nih";s:3:"246";s:3:"nja";s:3:"247";s:3:"ogo";s:3:"248";s:3:"oiz";s:3:"249";s:3:"ome";s:3:"250";s:3:"pot";s:3:"251";s:3:"ran";s:3:"252";s:3:"ri ";s:3:"253";s:3:"roi";s:3:"254";s:3:"rtk";s:3:"255";s:3:"ska";s:3:"256";s:3:"ter";s:3:"257";s:3:"u i";s:3:"258";s:3:"u o";s:3:"259";s:3:"vi ";s:3:"260";s:3:"vrt";s:3:"261";s:3:" me";s:3:"262";s:3:" ug";s:3:"263";s:3:"ak ";s:3:"264";s:3:"ama";s:3:"265";s:4:"drž";s:3:"266";s:3:"e e";s:3:"267";s:3:"e g";s:3:"268";s:3:"e m";s:3:"269";s:3:"em ";s:3:"270";s:3:"eme";s:3:"271";s:3:"enj";s:3:"272";s:3:"ent";s:3:"273";s:3:"er ";s:3:"274";s:3:"ere";s:3:"275";s:3:"erg";s:3:"276";s:3:"eur";s:3:"277";s:3:"go ";s:3:"278";s:3:"i b";s:3:"279";s:3:"i z";s:3:"280";s:3:"jet";s:3:"281";s:3:"ksi";s:3:"282";s:3:"o u";s:3:"283";s:3:"oda";s:3:"284";s:3:"ona";s:3:"285";s:3:"pra";s:3:"286";s:3:"reb";s:3:"287";s:3:"rem";s:3:"288";s:3:"rop";s:3:"289";s:3:"tri";s:3:"290";s:4:"žav";s:3:"291";s:3:" ci";s:3:"292";s:3:" eu";s:3:"293";s:3:" re";s:3:"294";s:3:" te";s:3:"295";s:3:" uv";s:3:"296";s:3:" ve";s:3:"297";s:3:"aju";s:3:"298";s:3:"an ";s:3:"299";}s:5:"czech";a:300:{s:3:" pr";s:1:"0";s:3:" po";s:1:"1";s:4:"ní ";s:1:"2";s:3:"pro";s:1:"3";s:3:" na";s:1:"4";s:3:"na ";s:1:"5";s:4:" pÅ™";s:1:"6";s:3:"ch ";s:1:"7";s:3:" je";s:1:"8";s:3:" ne";s:1:"9";s:4:"že ";s:2:"10";s:4:" že";s:2:"11";s:3:" se";s:2:"12";s:3:" do";s:2:"13";s:3:" ro";s:2:"14";s:3:" st";s:2:"15";s:3:" v ";s:2:"16";s:3:" ve";s:2:"17";s:4:"pÅ™e";s:2:"18";s:3:"se ";s:2:"19";s:3:"ho ";s:2:"20";s:3:"sta";s:2:"21";s:3:" to";s:2:"22";s:3:" vy";s:2:"23";s:3:" za";s:2:"24";s:3:"ou ";s:2:"25";s:3:" a ";s:2:"26";s:3:"to ";s:2:"27";s:3:" by";s:2:"28";s:3:"la ";s:2:"29";s:3:"ce ";s:2:"30";s:3:"e v";s:2:"31";s:3:"ist";s:2:"32";s:3:"le ";s:2:"33";s:3:"pod";s:2:"34";s:4:"í p";s:2:"35";s:3:" vl";s:2:"36";s:3:"e n";s:2:"37";s:3:"e s";s:2:"38";s:3:"je ";s:2:"39";s:4:"ké ";s:2:"40";s:3:"by ";s:2:"41";s:3:"em ";s:2:"42";s:4:"ých";s:2:"43";s:3:" od";s:2:"44";s:3:"ova";s:2:"45";s:4:"Å™ed";s:2:"46";s:3:"dy ";s:2:"47";s:4:"ení";s:2:"48";s:3:"kon";s:2:"49";s:3:"li ";s:2:"50";s:4:"nÄ› ";s:2:"51";s:3:"str";s:2:"52";s:4:" zá";s:2:"53";s:3:"ve ";s:2:"54";s:3:" ka";s:2:"55";s:3:" sv";s:2:"56";s:3:"e p";s:2:"57";s:3:"it ";s:2:"58";s:4:"lád";s:2:"59";s:3:"oho";s:2:"60";s:3:"rov";s:2:"61";s:3:"roz";s:2:"62";s:3:"ter";s:2:"63";s:4:"vlá";s:2:"64";s:4:"ím ";s:2:"65";s:3:" ko";s:2:"66";s:3:"hod";s:2:"67";s:3:"nis";s:2:"68";s:5:"pří";s:2:"69";s:4:"ský";s:2:"70";s:3:" mi";s:2:"71";s:3:" ob";s:2:"72";s:3:" so";s:2:"73";s:3:"a p";s:2:"74";s:3:"ali";s:2:"75";s:3:"bud";s:2:"76";s:3:"edn";s:2:"77";s:3:"ick";s:2:"78";s:3:"kte";s:2:"79";s:3:"ku ";s:2:"80";s:3:"o s";s:2:"81";s:3:"al ";s:2:"82";s:3:"ci ";s:2:"83";s:3:"e t";s:2:"84";s:3:"il ";s:2:"85";s:3:"ny ";s:2:"86";s:4:"né ";s:2:"87";s:3:"odl";s:2:"88";s:4:"ová";s:2:"89";s:3:"rot";s:2:"90";s:3:"sou";s:2:"91";s:5:"ání";s:2:"92";s:3:" bu";s:2:"93";s:3:" mo";s:2:"94";s:3:" o ";s:2:"95";s:3:"ast";s:2:"96";s:3:"byl";s:2:"97";s:3:"de ";s:2:"98";s:3:"ek ";s:2:"99";s:3:"ost";s:3:"100";s:4:" mí";s:3:"101";s:3:" ta";s:3:"102";s:3:"es ";s:3:"103";s:3:"jed";s:3:"104";s:3:"ky ";s:3:"105";s:3:"las";s:3:"106";s:3:"m p";s:3:"107";s:3:"nes";s:3:"108";s:4:"ním";s:3:"109";s:3:"ran";s:3:"110";s:3:"rem";s:3:"111";s:3:"ros";s:3:"112";s:4:"ého";s:3:"113";s:3:" de";s:3:"114";s:3:" kt";s:3:"115";s:3:" ni";s:3:"116";s:3:" si";s:3:"117";s:4:" vý";s:3:"118";s:3:"at ";s:3:"119";s:4:"jí ";s:3:"120";s:4:"ký ";s:3:"121";s:3:"mi ";s:3:"122";s:3:"pre";s:3:"123";s:3:"tak";s:3:"124";s:3:"tan";s:3:"125";s:3:"y v";s:3:"126";s:4:"Å™ek";s:3:"127";s:3:" ch";s:3:"128";s:3:" li";s:3:"129";s:4:" ná";s:3:"130";s:3:" pa";s:3:"131";s:4:" Å™e";s:3:"132";s:3:"da ";s:3:"133";s:3:"dle";s:3:"134";s:3:"dne";s:3:"135";s:3:"i p";s:3:"136";s:3:"i v";s:3:"137";s:3:"ly ";s:3:"138";s:3:"min";s:3:"139";s:3:"o n";s:3:"140";s:3:"o v";s:3:"141";s:3:"pol";s:3:"142";s:3:"tra";s:3:"143";s:3:"val";s:3:"144";s:4:"vní";s:3:"145";s:4:"ích";s:3:"146";s:4:"ý p";s:3:"147";s:4:"Å™ej";s:3:"148";s:3:" ce";s:3:"149";s:3:" kd";s:3:"150";s:3:" le";s:3:"151";s:3:"a s";s:3:"152";s:3:"a z";s:3:"153";s:3:"cen";s:3:"154";s:3:"e k";s:3:"155";s:3:"eds";s:3:"156";s:3:"ekl";s:3:"157";s:3:"emi";s:3:"158";s:3:"kl ";s:3:"159";s:3:"lat";s:3:"160";s:3:"lo ";s:3:"161";s:4:"mié";s:3:"162";s:3:"nov";s:3:"163";s:3:"pra";s:3:"164";s:3:"sku";s:3:"165";s:4:"ské";s:3:"166";s:3:"sti";s:3:"167";s:3:"tav";s:3:"168";s:3:"ti ";s:3:"169";s:3:"ty ";s:3:"170";s:4:"ván";s:3:"171";s:4:"vé ";s:3:"172";s:3:"y n";s:3:"173";s:3:"y s";s:3:"174";s:4:"í s";s:3:"175";s:4:"í v";s:3:"176";s:4:"Ä› p";s:3:"177";s:3:" dn";s:3:"178";s:4:" nÄ›";s:3:"179";s:3:" sp";s:3:"180";s:4:" Äs";s:3:"181";s:3:"a n";s:3:"182";s:3:"a t";s:3:"183";s:3:"ak ";s:3:"184";s:4:"dní";s:3:"185";s:3:"doh";s:3:"186";s:3:"e b";s:3:"187";s:3:"e m";s:3:"188";s:3:"ejn";s:3:"189";s:3:"ena";s:3:"190";s:3:"est";s:3:"191";s:3:"ini";s:3:"192";s:3:"m z";s:3:"193";s:3:"nal";s:3:"194";s:3:"nou";s:3:"195";s:4:"ná ";s:3:"196";s:3:"ovi";s:3:"197";s:4:"ové";s:3:"198";s:4:"ový";s:3:"199";s:3:"rsk";s:3:"200";s:4:"stá";s:3:"201";s:4:"tí ";s:3:"202";s:4:"tÅ™e";s:3:"203";s:4:"tů ";s:3:"204";s:3:"ude";s:3:"205";s:3:"za ";s:3:"206";s:4:"é p";s:3:"207";s:4:"ém ";s:3:"208";s:4:"í d";s:3:"209";s:3:" ir";s:3:"210";s:3:" zv";s:3:"211";s:3:"ale";s:3:"212";s:4:"anÄ›";s:3:"213";s:3:"ave";s:3:"214";s:4:"cké";s:3:"215";s:3:"den";s:3:"216";s:3:"e z";s:3:"217";s:3:"ech";s:3:"218";s:3:"en ";s:3:"219";s:4:"erý";s:3:"220";s:3:"hla";s:3:"221";s:3:"i s";s:3:"222";s:4:"iér";s:3:"223";s:3:"lov";s:3:"224";s:3:"mu ";s:3:"225";s:3:"neb";s:3:"226";s:3:"nic";s:3:"227";s:3:"o b";s:3:"228";s:3:"o m";s:3:"229";s:3:"pad";s:3:"230";s:3:"pot";s:3:"231";s:3:"rav";s:3:"232";s:3:"rop";s:3:"233";s:4:"rý ";s:3:"234";s:3:"sed";s:3:"235";s:3:"si ";s:3:"236";s:3:"t p";s:3:"237";s:3:"tic";s:3:"238";s:3:"tu ";s:3:"239";s:4:"tÄ› ";s:3:"240";s:3:"u p";s:3:"241";s:3:"u v";s:3:"242";s:4:"vá ";s:3:"243";s:5:"výš";s:3:"244";s:4:"zvý";s:3:"245";s:5:"Äní";s:3:"246";s:5:"ří ";s:3:"247";s:4:"ům ";s:3:"248";s:3:" bl";s:3:"249";s:3:" br";s:3:"250";s:3:" ho";s:3:"251";s:3:" ja";s:3:"252";s:3:" re";s:3:"253";s:3:" s ";s:3:"254";s:3:" z ";s:3:"255";s:3:" zd";s:3:"256";s:3:"a v";s:3:"257";s:3:"ani";s:3:"258";s:3:"ato";s:3:"259";s:3:"bla";s:3:"260";s:3:"bri";s:3:"261";s:4:"eÄn";s:3:"262";s:4:"eÅ™e";s:3:"263";s:3:"h v";s:3:"264";s:3:"i n";s:3:"265";s:3:"ie ";s:3:"266";s:3:"ila";s:3:"267";s:3:"irs";s:3:"268";s:3:"ite";s:3:"269";s:3:"kov";s:3:"270";s:3:"nos";s:3:"271";s:3:"o o";s:3:"272";s:3:"o p";s:3:"273";s:3:"oce";s:3:"274";s:3:"ody";s:3:"275";s:3:"ohl";s:3:"276";s:3:"oli";s:3:"277";s:3:"ovo";s:3:"278";s:3:"pla";s:3:"279";s:4:"poÄ";s:3:"280";s:4:"prá";s:3:"281";s:3:"ra ";s:3:"282";s:3:"rit";s:3:"283";s:3:"rod";s:3:"284";s:3:"ry ";s:3:"285";s:3:"sd ";s:3:"286";s:3:"sko";s:3:"287";s:3:"ssd";s:3:"288";s:3:"tel";s:3:"289";s:3:"u s";s:3:"290";s:3:"vat";s:3:"291";s:4:"veÅ™";s:3:"292";s:3:"vit";s:3:"293";s:3:"vla";s:3:"294";s:3:"y p";s:3:"295";s:4:"áln";s:3:"296";s:4:"Äss";s:3:"297";s:4:"Å¡en";s:3:"298";s:3:" al";s:3:"299";}s:6:"danish";a:300:{s:3:"er ";s:1:"0";s:3:"en ";s:1:"1";s:3:" de";s:1:"2";s:3:"et ";s:1:"3";s:3:"der";s:1:"4";s:3:"de ";s:1:"5";s:3:"for";s:1:"6";s:3:" fo";s:1:"7";s:3:" i ";s:1:"8";s:3:"at ";s:1:"9";s:3:" at";s:2:"10";s:3:"re ";s:2:"11";s:3:"det";s:2:"12";s:3:" ha";s:2:"13";s:3:"nde";s:2:"14";s:3:"ere";s:2:"15";s:3:"ing";s:2:"16";s:3:"den";s:2:"17";s:3:" me";s:2:"18";s:3:" og";s:2:"19";s:3:"ger";s:2:"20";s:3:"ter";s:2:"21";s:3:" er";s:2:"22";s:3:" si";s:2:"23";s:3:"and";s:2:"24";s:3:" af";s:2:"25";s:3:"or ";s:2:"26";s:3:" st";s:2:"27";s:3:" ti";s:2:"28";s:3:" en";s:2:"29";s:3:"og ";s:2:"30";s:3:"ar ";s:2:"31";s:3:"il ";s:2:"32";s:3:"r s";s:2:"33";s:3:"ige";s:2:"34";s:3:"til";s:2:"35";s:3:"ke ";s:2:"36";s:3:"r e";s:2:"37";s:3:"af ";s:2:"38";s:3:"kke";s:2:"39";s:3:" ma";s:2:"40";s:4:" pÃ¥";s:2:"41";s:3:"om ";s:2:"42";s:4:"pÃ¥ ";s:2:"43";s:3:"ed ";s:2:"44";s:3:"ge ";s:2:"45";s:3:"end";s:2:"46";s:3:"nge";s:2:"47";s:3:"t s";s:2:"48";s:3:"e s";s:2:"49";s:3:"ler";s:2:"50";s:3:" sk";s:2:"51";s:3:"els";s:2:"52";s:3:"ern";s:2:"53";s:3:"sig";s:2:"54";s:3:"ne ";s:2:"55";s:3:"lig";s:2:"56";s:3:"r d";s:2:"57";s:3:"ska";s:2:"58";s:3:" vi";s:2:"59";s:3:"har";s:2:"60";s:3:" be";s:2:"61";s:3:" se";s:2:"62";s:3:"an ";s:2:"63";s:3:"ikk";s:2:"64";s:3:"lle";s:2:"65";s:3:"gen";s:2:"66";s:3:"n f";s:2:"67";s:3:"ste";s:2:"68";s:3:"t a";s:2:"69";s:3:"t d";s:2:"70";s:3:"rin";s:2:"71";s:3:" ik";s:2:"72";s:3:"es ";s:2:"73";s:3:"ng ";s:2:"74";s:3:"ver";s:2:"75";s:3:"r b";s:2:"76";s:3:"sen";s:2:"77";s:3:"ede";s:2:"78";s:3:"men";s:2:"79";s:3:"r i";s:2:"80";s:3:" he";s:2:"81";s:3:" et";s:2:"82";s:3:"ig ";s:2:"83";s:3:"lan";s:2:"84";s:3:"med";s:2:"85";s:3:"nd ";s:2:"86";s:3:"rne";s:2:"87";s:3:" da";s:2:"88";s:3:" in";s:2:"89";s:3:"e t";s:2:"90";s:3:"mme";s:2:"91";s:3:"und";s:2:"92";s:3:" om";s:2:"93";s:3:"e e";s:2:"94";s:3:"e m";s:2:"95";s:3:"her";s:2:"96";s:3:"le ";s:2:"97";s:3:"r f";s:2:"98";s:3:"t f";s:2:"99";s:4:"sÃ¥ ";s:3:"100";s:3:"te ";s:3:"101";s:3:" so";s:3:"102";s:3:"ele";s:3:"103";s:3:"t e";s:3:"104";s:3:" ko";s:3:"105";s:3:"est";s:3:"106";s:3:"ske";s:3:"107";s:3:" bl";s:3:"108";s:3:"e f";s:3:"109";s:3:"ekt";s:3:"110";s:3:"mar";s:3:"111";s:3:"bru";s:3:"112";s:3:"e a";s:3:"113";s:3:"el ";s:3:"114";s:3:"ers";s:3:"115";s:3:"ret";s:3:"116";s:3:"som";s:3:"117";s:3:"tte";s:3:"118";s:3:"ve ";s:3:"119";s:3:" la";s:3:"120";s:3:" ud";s:3:"121";s:3:" ve";s:3:"122";s:3:"age";s:3:"123";s:3:"e d";s:3:"124";s:3:"e h";s:3:"125";s:3:"lse";s:3:"126";s:3:"man";s:3:"127";s:3:"rug";s:3:"128";s:3:"sel";s:3:"129";s:3:"ser";s:3:"130";s:3:" fi";s:3:"131";s:3:" op";s:3:"132";s:3:" pr";s:3:"133";s:3:"dt ";s:3:"134";s:3:"e i";s:3:"135";s:3:"n m";s:3:"136";s:3:"r m";s:3:"137";s:3:" an";s:3:"138";s:3:" re";s:3:"139";s:3:" sa";s:3:"140";s:3:"ion";s:3:"141";s:3:"ner";s:3:"142";s:3:"res";s:3:"143";s:3:"t i";s:3:"144";s:3:"get";s:3:"145";s:3:"n s";s:3:"146";s:3:"one";s:3:"147";s:3:"orb";s:3:"148";s:3:"t h";s:3:"149";s:3:"vis";s:3:"150";s:4:"Ã¥r ";s:3:"151";s:3:" fr";s:3:"152";s:3:"bil";s:3:"153";s:3:"e k";s:3:"154";s:3:"ens";s:3:"155";s:3:"ind";s:3:"156";s:3:"omm";s:3:"157";s:3:"t m";s:3:"158";s:3:" hv";s:3:"159";s:3:" je";s:3:"160";s:3:"dan";s:3:"161";s:3:"ent";s:3:"162";s:3:"fte";s:3:"163";s:3:"nin";s:3:"164";s:3:" mi";s:3:"165";s:3:"e o";s:3:"166";s:3:"e p";s:3:"167";s:3:"n o";s:3:"168";s:3:"nte";s:3:"169";s:3:" ku";s:3:"170";s:3:"ell";s:3:"171";s:3:"nas";s:3:"172";s:3:"ore";s:3:"173";s:3:"r h";s:3:"174";s:3:"r k";s:3:"175";s:3:"sta";s:3:"176";s:3:"sto";s:3:"177";s:3:"dag";s:3:"178";s:3:"eri";s:3:"179";s:3:"kun";s:3:"180";s:3:"lde";s:3:"181";s:3:"mer";s:3:"182";s:3:"r a";s:3:"183";s:3:"r v";s:3:"184";s:3:"rek";s:3:"185";s:3:"rer";s:3:"186";s:3:"t o";s:3:"187";s:3:"tor";s:3:"188";s:4:"tør";s:3:"189";s:4:" fÃ¥";s:3:"190";s:4:" mÃ¥";s:3:"191";s:3:" to";s:3:"192";s:3:"boe";s:3:"193";s:3:"che";s:3:"194";s:3:"e v";s:3:"195";s:3:"i d";s:3:"196";s:3:"ive";s:3:"197";s:3:"kab";s:3:"198";s:3:"ns ";s:3:"199";s:3:"oel";s:3:"200";s:3:"se ";s:3:"201";s:3:"t v";s:3:"202";s:3:" al";s:3:"203";s:3:" bo";s:3:"204";s:3:" un";s:3:"205";s:3:"ans";s:3:"206";s:3:"dre";s:3:"207";s:3:"ire";s:3:"208";s:4:"køb";s:3:"209";s:3:"ors";s:3:"210";s:3:"ove";s:3:"211";s:3:"ren";s:3:"212";s:3:"t b";s:3:"213";s:4:"ør ";s:3:"214";s:3:" ka";s:3:"215";s:3:"ald";s:3:"216";s:3:"bet";s:3:"217";s:3:"gt ";s:3:"218";s:3:"isk";s:3:"219";s:3:"kal";s:3:"220";s:3:"kom";s:3:"221";s:3:"lev";s:3:"222";s:3:"n d";s:3:"223";s:3:"n i";s:3:"224";s:3:"pri";s:3:"225";s:3:"r p";s:3:"226";s:3:"rbr";s:3:"227";s:4:"søg";s:3:"228";s:3:"tel";s:3:"229";s:4:" sÃ¥";s:3:"230";s:3:" te";s:3:"231";s:3:" va";s:3:"232";s:3:"al ";s:3:"233";s:3:"dir";s:3:"234";s:3:"eje";s:3:"235";s:3:"fis";s:3:"236";s:4:"gsÃ¥";s:3:"237";s:3:"isc";s:3:"238";s:3:"jer";s:3:"239";s:3:"ker";s:3:"240";s:3:"ogs";s:3:"241";s:3:"sch";s:3:"242";s:3:"st ";s:3:"243";s:3:"t k";s:3:"244";s:3:"uge";s:3:"245";s:3:" di";s:3:"246";s:3:"ag ";s:3:"247";s:3:"d a";s:3:"248";s:3:"g i";s:3:"249";s:3:"ill";s:3:"250";s:3:"l a";s:3:"251";s:3:"lsk";s:3:"252";s:3:"n a";s:3:"253";s:3:"on ";s:3:"254";s:3:"sam";s:3:"255";s:3:"str";s:3:"256";s:3:"tet";s:3:"257";s:3:"var";s:3:"258";s:3:" mo";s:3:"259";s:3:"art";s:3:"260";s:3:"ash";s:3:"261";s:3:"att";s:3:"262";s:3:"e b";s:3:"263";s:3:"han";s:3:"264";s:3:"hav";s:3:"265";s:3:"kla";s:3:"266";s:3:"kon";s:3:"267";s:3:"n t";s:3:"268";s:3:"ned";s:3:"269";s:3:"r o";s:3:"270";s:3:"ra ";s:3:"271";s:3:"rre";s:3:"272";s:3:"ves";s:3:"273";s:3:"vil";s:3:"274";s:3:" el";s:3:"275";s:3:" kr";s:3:"276";s:3:" ov";s:3:"277";s:3:"ann";s:3:"278";s:3:"e u";s:3:"279";s:3:"ess";s:3:"280";s:3:"fra";s:3:"281";s:3:"g a";s:3:"282";s:3:"g d";s:3:"283";s:3:"int";s:3:"284";s:3:"ngs";s:3:"285";s:3:"rde";s:3:"286";s:3:"tra";s:3:"287";s:4:" Ã¥r";s:3:"288";s:3:"akt";s:3:"289";s:3:"asi";s:3:"290";s:3:"em ";s:3:"291";s:3:"gel";s:3:"292";s:3:"gym";s:3:"293";s:3:"hol";s:3:"294";s:3:"kan";s:3:"295";s:3:"mna";s:3:"296";s:3:"n h";s:3:"297";s:3:"nsk";s:3:"298";s:3:"old";s:3:"299";}s:5:"dutch";a:300:{s:3:"en ";s:1:"0";s:3:"de ";s:1:"1";s:3:" de";s:1:"2";s:3:"et ";s:1:"3";s:3:"an ";s:1:"4";s:3:" he";s:1:"5";s:3:"er ";s:1:"6";s:3:" va";s:1:"7";s:3:"n d";s:1:"8";s:3:"van";s:1:"9";s:3:"een";s:2:"10";s:3:"het";s:2:"11";s:3:" ge";s:2:"12";s:3:"oor";s:2:"13";s:3:" ee";s:2:"14";s:3:"der";s:2:"15";s:3:" en";s:2:"16";s:3:"ij ";s:2:"17";s:3:"aar";s:2:"18";s:3:"gen";s:2:"19";s:3:"te ";s:2:"20";s:3:"ver";s:2:"21";s:3:" in";s:2:"22";s:3:" me";s:2:"23";s:3:"aan";s:2:"24";s:3:"den";s:2:"25";s:3:" we";s:2:"26";s:3:"at ";s:2:"27";s:3:"in ";s:2:"28";s:3:" da";s:2:"29";s:3:" te";s:2:"30";s:3:"eer";s:2:"31";s:3:"nde";s:2:"32";s:3:"ter";s:2:"33";s:3:"ste";s:2:"34";s:3:"n v";s:2:"35";s:3:" vo";s:2:"36";s:3:" zi";s:2:"37";s:3:"ing";s:2:"38";s:3:"n h";s:2:"39";s:3:"voo";s:2:"40";s:3:"is ";s:2:"41";s:3:" op";s:2:"42";s:3:"tie";s:2:"43";s:3:" aa";s:2:"44";s:3:"ede";s:2:"45";s:3:"erd";s:2:"46";s:3:"ers";s:2:"47";s:3:" be";s:2:"48";s:3:"eme";s:2:"49";s:3:"ten";s:2:"50";s:3:"ken";s:2:"51";s:3:"n e";s:2:"52";s:3:" ni";s:2:"53";s:3:" ve";s:2:"54";s:3:"ent";s:2:"55";s:3:"ijn";s:2:"56";s:3:"jn ";s:2:"57";s:3:"mee";s:2:"58";s:3:"iet";s:2:"59";s:3:"n w";s:2:"60";s:3:"ng ";s:2:"61";s:3:"nie";s:2:"62";s:3:" is";s:2:"63";s:3:"cht";s:2:"64";s:3:"dat";s:2:"65";s:3:"ere";s:2:"66";s:3:"ie ";s:2:"67";s:3:"ijk";s:2:"68";s:3:"n b";s:2:"69";s:3:"rde";s:2:"70";s:3:"ar ";s:2:"71";s:3:"e b";s:2:"72";s:3:"e a";s:2:"73";s:3:"met";s:2:"74";s:3:"t d";s:2:"75";s:3:"el ";s:2:"76";s:3:"ond";s:2:"77";s:3:"t h";s:2:"78";s:3:" al";s:2:"79";s:3:"e w";s:2:"80";s:3:"op ";s:2:"81";s:3:"ren";s:2:"82";s:3:" di";s:2:"83";s:3:" on";s:2:"84";s:3:"al ";s:2:"85";s:3:"and";s:2:"86";s:3:"bij";s:2:"87";s:3:"zij";s:2:"88";s:3:" bi";s:2:"89";s:3:" hi";s:2:"90";s:3:" wi";s:2:"91";s:3:"or ";s:2:"92";s:3:"r d";s:2:"93";s:3:"t v";s:2:"94";s:3:" wa";s:2:"95";s:3:"e h";s:2:"96";s:3:"lle";s:2:"97";s:3:"rt ";s:2:"98";s:3:"ang";s:2:"99";s:3:"hij";s:3:"100";s:3:"men";s:3:"101";s:3:"n a";s:3:"102";s:3:"n z";s:3:"103";s:3:"rs ";s:3:"104";s:3:" om";s:3:"105";s:3:"e o";s:3:"106";s:3:"e v";s:3:"107";s:3:"end";s:3:"108";s:3:"est";s:3:"109";s:3:"n t";s:3:"110";s:3:"par";s:3:"111";s:3:" pa";s:3:"112";s:3:" pr";s:3:"113";s:3:" ze";s:3:"114";s:3:"e g";s:3:"115";s:3:"e p";s:3:"116";s:3:"n p";s:3:"117";s:3:"ord";s:3:"118";s:3:"oud";s:3:"119";s:3:"raa";s:3:"120";s:3:"sch";s:3:"121";s:3:"t e";s:3:"122";s:3:"ege";s:3:"123";s:3:"ich";s:3:"124";s:3:"ien";s:3:"125";s:3:"aat";s:3:"126";s:3:"ek ";s:3:"127";s:3:"len";s:3:"128";s:3:"n m";s:3:"129";s:3:"nge";s:3:"130";s:3:"nt ";s:3:"131";s:3:"ove";s:3:"132";s:3:"rd ";s:3:"133";s:3:"wer";s:3:"134";s:3:" ma";s:3:"135";s:3:" mi";s:3:"136";s:3:"daa";s:3:"137";s:3:"e k";s:3:"138";s:3:"lij";s:3:"139";s:3:"mer";s:3:"140";s:3:"n g";s:3:"141";s:3:"n o";s:3:"142";s:3:"om ";s:3:"143";s:3:"sen";s:3:"144";s:3:"t b";s:3:"145";s:3:"wij";s:3:"146";s:3:" ho";s:3:"147";s:3:"e m";s:3:"148";s:3:"ele";s:3:"149";s:3:"gem";s:3:"150";s:3:"heb";s:3:"151";s:3:"pen";s:3:"152";s:3:"ude";s:3:"153";s:3:" bo";s:3:"154";s:3:" ja";s:3:"155";s:3:"die";s:3:"156";s:3:"e e";s:3:"157";s:3:"eli";s:3:"158";s:3:"erk";s:3:"159";s:3:"le ";s:3:"160";s:3:"pro";s:3:"161";s:3:"rij";s:3:"162";s:3:" er";s:3:"163";s:3:" za";s:3:"164";s:3:"e d";s:3:"165";s:3:"ens";s:3:"166";s:3:"ind";s:3:"167";s:3:"ke ";s:3:"168";s:3:"n k";s:3:"169";s:3:"nd ";s:3:"170";s:3:"nen";s:3:"171";s:3:"nte";s:3:"172";s:3:"r h";s:3:"173";s:3:"s d";s:3:"174";s:3:"s e";s:3:"175";s:3:"t z";s:3:"176";s:3:" b ";s:3:"177";s:3:" co";s:3:"178";s:3:" ik";s:3:"179";s:3:" ko";s:3:"180";s:3:" ov";s:3:"181";s:3:"eke";s:3:"182";s:3:"hou";s:3:"183";s:3:"ik ";s:3:"184";s:3:"iti";s:3:"185";s:3:"lan";s:3:"186";s:3:"ns ";s:3:"187";s:3:"t g";s:3:"188";s:3:"t m";s:3:"189";s:3:" do";s:3:"190";s:3:" le";s:3:"191";s:3:" zo";s:3:"192";s:3:"ams";s:3:"193";s:3:"e z";s:3:"194";s:3:"g v";s:3:"195";s:3:"it ";s:3:"196";s:3:"je ";s:3:"197";s:3:"ls ";s:3:"198";s:3:"maa";s:3:"199";s:3:"n i";s:3:"200";s:3:"nke";s:3:"201";s:3:"rke";s:3:"202";s:3:"uit";s:3:"203";s:3:" ha";s:3:"204";s:3:" ka";s:3:"205";s:3:" mo";s:3:"206";s:3:" re";s:3:"207";s:3:" st";s:3:"208";s:3:" to";s:3:"209";s:3:"age";s:3:"210";s:3:"als";s:3:"211";s:3:"ark";s:3:"212";s:3:"art";s:3:"213";s:3:"ben";s:3:"214";s:3:"e r";s:3:"215";s:3:"e s";s:3:"216";s:3:"ert";s:3:"217";s:3:"eze";s:3:"218";s:3:"ht ";s:3:"219";s:3:"ijd";s:3:"220";s:3:"lem";s:3:"221";s:3:"r v";s:3:"222";s:3:"rte";s:3:"223";s:3:"t p";s:3:"224";s:3:"zeg";s:3:"225";s:3:"zic";s:3:"226";s:3:"aak";s:3:"227";s:3:"aal";s:3:"228";s:3:"ag ";s:3:"229";s:3:"ale";s:3:"230";s:3:"bbe";s:3:"231";s:3:"ch ";s:3:"232";s:3:"e t";s:3:"233";s:3:"ebb";s:3:"234";s:3:"erz";s:3:"235";s:3:"ft ";s:3:"236";s:3:"ge ";s:3:"237";s:3:"led";s:3:"238";s:3:"mst";s:3:"239";s:3:"n n";s:3:"240";s:3:"oek";s:3:"241";s:3:"r i";s:3:"242";s:3:"t o";s:3:"243";s:3:"t w";s:3:"244";s:3:"tel";s:3:"245";s:3:"tte";s:3:"246";s:3:"uur";s:3:"247";s:3:"we ";s:3:"248";s:3:"zit";s:3:"249";s:3:" af";s:3:"250";s:3:" li";s:3:"251";s:3:" ui";s:3:"252";s:3:"ak ";s:3:"253";s:3:"all";s:3:"254";s:3:"aut";s:3:"255";s:3:"doo";s:3:"256";s:3:"e i";s:3:"257";s:3:"ene";s:3:"258";s:3:"erg";s:3:"259";s:3:"ete";s:3:"260";s:3:"ges";s:3:"261";s:3:"hee";s:3:"262";s:3:"jaa";s:3:"263";s:3:"jke";s:3:"264";s:3:"kee";s:3:"265";s:3:"kel";s:3:"266";s:3:"kom";s:3:"267";s:3:"lee";s:3:"268";s:3:"moe";s:3:"269";s:3:"n s";s:3:"270";s:3:"ort";s:3:"271";s:3:"rec";s:3:"272";s:3:"s o";s:3:"273";s:3:"s v";s:3:"274";s:3:"teg";s:3:"275";s:3:"tij";s:3:"276";s:3:"ven";s:3:"277";s:3:"waa";s:3:"278";s:3:"wel";s:3:"279";s:3:" an";s:3:"280";s:3:" au";s:3:"281";s:3:" bu";s:3:"282";s:3:" gr";s:3:"283";s:3:" pl";s:3:"284";s:3:" ti";s:3:"285";s:3:"'' ";s:3:"286";s:3:"ade";s:3:"287";s:3:"dag";s:3:"288";s:3:"e l";s:3:"289";s:3:"ech";s:3:"290";s:3:"eel";s:3:"291";s:3:"eft";s:3:"292";s:3:"ger";s:3:"293";s:3:"gt ";s:3:"294";s:3:"ig ";s:3:"295";s:3:"itt";s:3:"296";s:3:"j d";s:3:"297";s:3:"ppe";s:3:"298";s:3:"rda";s:3:"299";}s:7:"english";a:300:{s:3:" th";s:1:"0";s:3:"the";s:1:"1";s:3:"he ";s:1:"2";s:3:"ed ";s:1:"3";s:3:" to";s:1:"4";s:3:" in";s:1:"5";s:3:"er ";s:1:"6";s:3:"ing";s:1:"7";s:3:"ng ";s:1:"8";s:3:" an";s:1:"9";s:3:"nd ";s:2:"10";s:3:" of";s:2:"11";s:3:"and";s:2:"12";s:3:"to ";s:2:"13";s:3:"of ";s:2:"14";s:3:" co";s:2:"15";s:3:"at ";s:2:"16";s:3:"on ";s:2:"17";s:3:"in ";s:2:"18";s:3:" a ";s:2:"19";s:3:"d t";s:2:"20";s:3:" he";s:2:"21";s:3:"e t";s:2:"22";s:3:"ion";s:2:"23";s:3:"es ";s:2:"24";s:3:" re";s:2:"25";s:3:"re ";s:2:"26";s:3:"hat";s:2:"27";s:3:" sa";s:2:"28";s:3:" st";s:2:"29";s:3:" ha";s:2:"30";s:3:"her";s:2:"31";s:3:"tha";s:2:"32";s:3:"tio";s:2:"33";s:3:"or ";s:2:"34";s:3:" ''";s:2:"35";s:3:"en ";s:2:"36";s:3:" wh";s:2:"37";s:3:"e s";s:2:"38";s:3:"ent";s:2:"39";s:3:"n t";s:2:"40";s:3:"s a";s:2:"41";s:3:"as ";s:2:"42";s:3:"for";s:2:"43";s:3:"is ";s:2:"44";s:3:"t t";s:2:"45";s:3:" be";s:2:"46";s:3:"ld ";s:2:"47";s:3:"e a";s:2:"48";s:3:"rs ";s:2:"49";s:3:" wa";s:2:"50";s:3:"ut ";s:2:"51";s:3:"ve ";s:2:"52";s:3:"ll ";s:2:"53";s:3:"al ";s:2:"54";s:3:" ma";s:2:"55";s:3:"e i";s:2:"56";s:3:" fo";s:2:"57";s:3:"'s ";s:2:"58";s:3:"an ";s:2:"59";s:3:"est";s:2:"60";s:3:" hi";s:2:"61";s:3:" mo";s:2:"62";s:3:" se";s:2:"63";s:3:" pr";s:2:"64";s:3:"s t";s:2:"65";s:3:"ate";s:2:"66";s:3:"st ";s:2:"67";s:3:"ter";s:2:"68";s:3:"ere";s:2:"69";s:3:"ted";s:2:"70";s:3:"nt ";s:2:"71";s:3:"ver";s:2:"72";s:3:"d a";s:2:"73";s:3:" wi";s:2:"74";s:3:"se ";s:2:"75";s:3:"e c";s:2:"76";s:3:"ect";s:2:"77";s:3:"ns ";s:2:"78";s:3:" on";s:2:"79";s:3:"ly ";s:2:"80";s:3:"tol";s:2:"81";s:3:"ey ";s:2:"82";s:3:"r t";s:2:"83";s:3:" ca";s:2:"84";s:3:"ati";s:2:"85";s:3:"ts ";s:2:"86";s:3:"all";s:2:"87";s:3:" no";s:2:"88";s:3:"his";s:2:"89";s:3:"s o";s:2:"90";s:3:"ers";s:2:"91";s:3:"con";s:2:"92";s:3:"e o";s:2:"93";s:3:"ear";s:2:"94";s:3:"f t";s:2:"95";s:3:"e w";s:2:"96";s:3:"was";s:2:"97";s:3:"ons";s:2:"98";s:3:"sta";s:2:"99";s:3:"'' ";s:3:"100";s:3:"sti";s:3:"101";s:3:"n a";s:3:"102";s:3:"sto";s:3:"103";s:3:"t h";s:3:"104";s:3:" we";s:3:"105";s:3:"id ";s:3:"106";s:3:"th ";s:3:"107";s:3:" it";s:3:"108";s:3:"ce ";s:3:"109";s:3:" di";s:3:"110";s:3:"ave";s:3:"111";s:3:"d h";s:3:"112";s:3:"cou";s:3:"113";s:3:"pro";s:3:"114";s:3:"ad ";s:3:"115";s:3:"oll";s:3:"116";s:3:"ry ";s:3:"117";s:3:"d s";s:3:"118";s:3:"e m";s:3:"119";s:3:" so";s:3:"120";s:3:"ill";s:3:"121";s:3:"cti";s:3:"122";s:3:"te ";s:3:"123";s:3:"tor";s:3:"124";s:3:"eve";s:3:"125";s:3:"g t";s:3:"126";s:3:"it ";s:3:"127";s:3:" ch";s:3:"128";s:3:" de";s:3:"129";s:3:"hav";s:3:"130";s:3:"oul";s:3:"131";s:3:"ty ";s:3:"132";s:3:"uld";s:3:"133";s:3:"use";s:3:"134";s:3:" al";s:3:"135";s:3:"are";s:3:"136";s:3:"ch ";s:3:"137";s:3:"me ";s:3:"138";s:3:"out";s:3:"139";s:3:"ove";s:3:"140";s:3:"wit";s:3:"141";s:3:"ys ";s:3:"142";s:3:"chi";s:3:"143";s:3:"t a";s:3:"144";s:3:"ith";s:3:"145";s:3:"oth";s:3:"146";s:3:" ab";s:3:"147";s:3:" te";s:3:"148";s:3:" wo";s:3:"149";s:3:"s s";s:3:"150";s:3:"res";s:3:"151";s:3:"t w";s:3:"152";s:3:"tin";s:3:"153";s:3:"e b";s:3:"154";s:3:"e h";s:3:"155";s:3:"nce";s:3:"156";s:3:"t s";s:3:"157";s:3:"y t";s:3:"158";s:3:"e p";s:3:"159";s:3:"ele";s:3:"160";s:3:"hin";s:3:"161";s:3:"s i";s:3:"162";s:3:"nte";s:3:"163";s:3:" li";s:3:"164";s:3:"le ";s:3:"165";s:3:" do";s:3:"166";s:3:"aid";s:3:"167";s:3:"hey";s:3:"168";s:3:"ne ";s:3:"169";s:3:"s w";s:3:"170";s:3:" as";s:3:"171";s:3:" fr";s:3:"172";s:3:" tr";s:3:"173";s:3:"end";s:3:"174";s:3:"sai";s:3:"175";s:3:" el";s:3:"176";s:3:" ne";s:3:"177";s:3:" su";s:3:"178";s:3:"'t ";s:3:"179";s:3:"ay ";s:3:"180";s:3:"hou";s:3:"181";s:3:"ive";s:3:"182";s:3:"lec";s:3:"183";s:3:"n't";s:3:"184";s:3:" ye";s:3:"185";s:3:"but";s:3:"186";s:3:"d o";s:3:"187";s:3:"o t";s:3:"188";s:3:"y o";s:3:"189";s:3:" ho";s:3:"190";s:3:" me";s:3:"191";s:3:"be ";s:3:"192";s:3:"cal";s:3:"193";s:3:"e e";s:3:"194";s:3:"had";s:3:"195";s:3:"ple";s:3:"196";s:3:" at";s:3:"197";s:3:" bu";s:3:"198";s:3:" la";s:3:"199";s:3:"d b";s:3:"200";s:3:"s h";s:3:"201";s:3:"say";s:3:"202";s:3:"t i";s:3:"203";s:3:" ar";s:3:"204";s:3:"e f";s:3:"205";s:3:"ght";s:3:"206";s:3:"hil";s:3:"207";s:3:"igh";s:3:"208";s:3:"int";s:3:"209";s:3:"not";s:3:"210";s:3:"ren";s:3:"211";s:3:" is";s:3:"212";s:3:" pa";s:3:"213";s:3:" sh";s:3:"214";s:3:"ays";s:3:"215";s:3:"com";s:3:"216";s:3:"n s";s:3:"217";s:3:"r a";s:3:"218";s:3:"rin";s:3:"219";s:3:"y a";s:3:"220";s:3:" un";s:3:"221";s:3:"n c";s:3:"222";s:3:"om ";s:3:"223";s:3:"thi";s:3:"224";s:3:" mi";s:3:"225";s:3:"by ";s:3:"226";s:3:"d i";s:3:"227";s:3:"e d";s:3:"228";s:3:"e n";s:3:"229";s:3:"t o";s:3:"230";s:3:" by";s:3:"231";s:3:"e r";s:3:"232";s:3:"eri";s:3:"233";s:3:"old";s:3:"234";s:3:"ome";s:3:"235";s:3:"whe";s:3:"236";s:3:"yea";s:3:"237";s:3:" gr";s:3:"238";s:3:"ar ";s:3:"239";s:3:"ity";s:3:"240";s:3:"mpl";s:3:"241";s:3:"oun";s:3:"242";s:3:"one";s:3:"243";s:3:"ow ";s:3:"244";s:3:"r s";s:3:"245";s:3:"s f";s:3:"246";s:3:"tat";s:3:"247";s:3:" ba";s:3:"248";s:3:" vo";s:3:"249";s:3:"bou";s:3:"250";s:3:"sam";s:3:"251";s:3:"tim";s:3:"252";s:3:"vot";s:3:"253";s:3:"abo";s:3:"254";s:3:"ant";s:3:"255";s:3:"ds ";s:3:"256";s:3:"ial";s:3:"257";s:3:"ine";s:3:"258";s:3:"man";s:3:"259";s:3:"men";s:3:"260";s:3:" or";s:3:"261";s:3:" po";s:3:"262";s:3:"amp";s:3:"263";s:3:"can";s:3:"264";s:3:"der";s:3:"265";s:3:"e l";s:3:"266";s:3:"les";s:3:"267";s:3:"ny ";s:3:"268";s:3:"ot ";s:3:"269";s:3:"rec";s:3:"270";s:3:"tes";s:3:"271";s:3:"tho";s:3:"272";s:3:"ica";s:3:"273";s:3:"ild";s:3:"274";s:3:"ir ";s:3:"275";s:3:"nde";s:3:"276";s:3:"ose";s:3:"277";s:3:"ous";s:3:"278";s:3:"pre";s:3:"279";s:3:"ste";s:3:"280";s:3:"era";s:3:"281";s:3:"per";s:3:"282";s:3:"r o";s:3:"283";s:3:"red";s:3:"284";s:3:"rie";s:3:"285";s:3:" bo";s:3:"286";s:3:" le";s:3:"287";s:3:"ali";s:3:"288";s:3:"ars";s:3:"289";s:3:"ore";s:3:"290";s:3:"ric";s:3:"291";s:3:"s m";s:3:"292";s:3:"str";s:3:"293";s:3:" fa";s:3:"294";s:3:"ess";s:3:"295";s:3:"ie ";s:3:"296";s:3:"ist";s:3:"297";s:3:"lat";s:3:"298";s:3:"uri";s:3:"299";}s:8:"estonian";a:300:{s:3:"st ";s:1:"0";s:3:" ka";s:1:"1";s:3:"on ";s:1:"2";s:3:"ja ";s:1:"3";s:3:" va";s:1:"4";s:3:" on";s:1:"5";s:3:" ja";s:1:"6";s:3:" ko";s:1:"7";s:3:"se ";s:1:"8";s:3:"ast";s:1:"9";s:3:"le ";s:2:"10";s:3:"es ";s:2:"11";s:3:"as ";s:2:"12";s:3:"is ";s:2:"13";s:3:"ud ";s:2:"14";s:3:" sa";s:2:"15";s:3:"da ";s:2:"16";s:3:"ga ";s:2:"17";s:3:" ta";s:2:"18";s:3:"aja";s:2:"19";s:3:"sta";s:2:"20";s:3:" ku";s:2:"21";s:3:" pe";s:2:"22";s:3:"a k";s:2:"23";s:3:"est";s:2:"24";s:3:"ist";s:2:"25";s:3:"ks ";s:2:"26";s:3:"ta ";s:2:"27";s:3:"al ";s:2:"28";s:3:"ava";s:2:"29";s:3:"id ";s:2:"30";s:3:"saa";s:2:"31";s:3:"mis";s:2:"32";s:3:"te ";s:2:"33";s:3:"val";s:2:"34";s:3:" et";s:2:"35";s:3:"nud";s:2:"36";s:3:" te";s:2:"37";s:3:"inn";s:2:"38";s:3:" se";s:2:"39";s:3:" tu";s:2:"40";s:3:"a v";s:2:"41";s:3:"alu";s:2:"42";s:3:"e k";s:2:"43";s:3:"ise";s:2:"44";s:3:"lu ";s:2:"45";s:3:"ma ";s:2:"46";s:3:"mes";s:2:"47";s:3:" mi";s:2:"48";s:3:"et ";s:2:"49";s:3:"iku";s:2:"50";s:3:"lin";s:2:"51";s:3:"ad ";s:2:"52";s:3:"el ";s:2:"53";s:3:"ime";s:2:"54";s:3:"ne ";s:2:"55";s:3:"nna";s:2:"56";s:3:" ha";s:2:"57";s:3:" in";s:2:"58";s:3:" ke";s:2:"59";s:4:" võ";s:2:"60";s:3:"a s";s:2:"61";s:3:"a t";s:2:"62";s:3:"ab ";s:2:"63";s:3:"e s";s:2:"64";s:3:"esi";s:2:"65";s:3:" la";s:2:"66";s:3:" li";s:2:"67";s:3:"e v";s:2:"68";s:3:"eks";s:2:"69";s:3:"ema";s:2:"70";s:3:"las";s:2:"71";s:3:"les";s:2:"72";s:3:"rju";s:2:"73";s:3:"tle";s:2:"74";s:3:"tsi";s:2:"75";s:3:"tus";s:2:"76";s:3:"upa";s:2:"77";s:3:"use";s:2:"78";s:3:"ust";s:2:"79";s:3:"var";s:2:"80";s:4:" lä";s:2:"81";s:3:"ali";s:2:"82";s:3:"arj";s:2:"83";s:3:"de ";s:2:"84";s:3:"ete";s:2:"85";s:3:"i t";s:2:"86";s:3:"iga";s:2:"87";s:3:"ilm";s:2:"88";s:3:"kui";s:2:"89";s:3:"li ";s:2:"90";s:3:"tul";s:2:"91";s:3:" ei";s:2:"92";s:3:" me";s:2:"93";s:4:" sõ";s:2:"94";s:3:"aal";s:2:"95";s:3:"ata";s:2:"96";s:3:"dus";s:2:"97";s:3:"ei ";s:2:"98";s:3:"nik";s:2:"99";s:3:"pea";s:3:"100";s:3:"s k";s:3:"101";s:3:"s o";s:3:"102";s:3:"sal";s:3:"103";s:4:"sõn";s:3:"104";s:3:"ter";s:3:"105";s:3:"ul ";s:3:"106";s:4:"või";s:3:"107";s:3:" el";s:3:"108";s:3:" ne";s:3:"109";s:3:"a j";s:3:"110";s:3:"ate";s:3:"111";s:3:"end";s:3:"112";s:3:"i k";s:3:"113";s:3:"ita";s:3:"114";s:3:"kar";s:3:"115";s:3:"kor";s:3:"116";s:3:"l o";s:3:"117";s:3:"lt ";s:3:"118";s:3:"maa";s:3:"119";s:3:"oli";s:3:"120";s:3:"sti";s:3:"121";s:3:"vad";s:3:"122";s:5:"ään";s:3:"123";s:3:" ju";s:3:"124";s:4:" jä";s:3:"125";s:4:" kü";s:3:"126";s:3:" ma";s:3:"127";s:3:" po";s:3:"128";s:4:" üt";s:3:"129";s:3:"aas";s:3:"130";s:3:"aks";s:3:"131";s:3:"at ";s:3:"132";s:3:"ed ";s:3:"133";s:3:"eri";s:3:"134";s:3:"hoi";s:3:"135";s:3:"i s";s:3:"136";s:3:"ka ";s:3:"137";s:3:"la ";s:3:"138";s:3:"nni";s:3:"139";s:3:"oid";s:3:"140";s:3:"pai";s:3:"141";s:3:"rit";s:3:"142";s:3:"us ";s:3:"143";s:4:"ütl";s:3:"144";s:3:" aa";s:3:"145";s:3:" lo";s:3:"146";s:3:" to";s:3:"147";s:3:" ve";s:3:"148";s:3:"a e";s:3:"149";s:3:"ada";s:3:"150";s:3:"aid";s:3:"151";s:3:"ami";s:3:"152";s:3:"and";s:3:"153";s:3:"dla";s:3:"154";s:3:"e j";s:3:"155";s:3:"ega";s:3:"156";s:3:"gi ";s:3:"157";s:3:"gu ";s:3:"158";s:3:"i p";s:3:"159";s:3:"idl";s:3:"160";s:3:"ik ";s:3:"161";s:3:"ini";s:3:"162";s:3:"jup";s:3:"163";s:3:"kal";s:3:"164";s:3:"kas";s:3:"165";s:3:"kes";s:3:"166";s:3:"koh";s:3:"167";s:3:"s e";s:3:"168";s:3:"s p";s:3:"169";s:3:"sel";s:3:"170";s:3:"sse";s:3:"171";s:3:"ui ";s:3:"172";s:3:" pi";s:3:"173";s:3:" si";s:3:"174";s:3:"aru";s:3:"175";s:3:"eda";s:3:"176";s:3:"eva";s:3:"177";s:3:"fil";s:3:"178";s:3:"i v";s:3:"179";s:3:"ida";s:3:"180";s:3:"ing";s:3:"181";s:5:"lää";s:3:"182";s:3:"me ";s:3:"183";s:3:"na ";s:3:"184";s:3:"nda";s:3:"185";s:3:"nim";s:3:"186";s:3:"ole";s:3:"187";s:3:"ots";s:3:"188";s:3:"ris";s:3:"189";s:3:"s l";s:3:"190";s:3:"sia";s:3:"191";s:3:"t p";s:3:"192";s:3:" en";s:3:"193";s:3:" mu";s:3:"194";s:3:" ol";s:3:"195";s:4:" põ";s:3:"196";s:3:" su";s:3:"197";s:4:" vä";s:3:"198";s:4:" üh";s:3:"199";s:3:"a l";s:3:"200";s:3:"a p";s:3:"201";s:3:"aga";s:3:"202";s:3:"ale";s:3:"203";s:3:"aps";s:3:"204";s:3:"arv";s:3:"205";s:3:"e a";s:3:"206";s:3:"ela";s:3:"207";s:3:"ika";s:3:"208";s:3:"lle";s:3:"209";s:3:"loo";s:3:"210";s:3:"mal";s:3:"211";s:3:"pet";s:3:"212";s:3:"t k";s:3:"213";s:3:"tee";s:3:"214";s:3:"tis";s:3:"215";s:3:"vat";s:3:"216";s:4:"äne";s:3:"217";s:4:"õnn";s:3:"218";s:3:" es";s:3:"219";s:3:" fi";s:3:"220";s:3:" vi";s:3:"221";s:3:"a i";s:3:"222";s:3:"a o";s:3:"223";s:3:"aab";s:3:"224";s:3:"aap";s:3:"225";s:3:"ala";s:3:"226";s:3:"alt";s:3:"227";s:3:"ama";s:3:"228";s:3:"anu";s:3:"229";s:3:"e p";s:3:"230";s:3:"e t";s:3:"231";s:3:"eal";s:3:"232";s:3:"eli";s:3:"233";s:3:"haa";s:3:"234";s:3:"hin";s:3:"235";s:3:"iva";s:3:"236";s:3:"kon";s:3:"237";s:3:"ku ";s:3:"238";s:3:"lik";s:3:"239";s:3:"lm ";s:3:"240";s:3:"min";s:3:"241";s:3:"n t";s:3:"242";s:3:"odu";s:3:"243";s:3:"oon";s:3:"244";s:3:"psa";s:3:"245";s:3:"ri ";s:3:"246";s:3:"si ";s:3:"247";s:3:"stu";s:3:"248";s:3:"t e";s:3:"249";s:3:"t s";s:3:"250";s:3:"ti ";s:3:"251";s:3:"ule";s:3:"252";s:3:"uur";s:3:"253";s:3:"vas";s:3:"254";s:3:"vee";s:3:"255";s:3:" ki";s:3:"256";s:3:" ni";s:3:"257";s:4:" nä";s:3:"258";s:3:" ra";s:3:"259";s:3:"aig";s:3:"260";s:3:"aka";s:3:"261";s:3:"all";s:3:"262";s:3:"atu";s:3:"263";s:3:"e e";s:3:"264";s:3:"eis";s:3:"265";s:3:"ers";s:3:"266";s:3:"i e";s:3:"267";s:3:"ii ";s:3:"268";s:3:"iis";s:3:"269";s:3:"il ";s:3:"270";s:3:"ima";s:3:"271";s:3:"its";s:3:"272";s:3:"kka";s:3:"273";s:3:"kuh";s:3:"274";s:3:"l k";s:3:"275";s:3:"lat";s:3:"276";s:3:"maj";s:3:"277";s:3:"ndu";s:3:"278";s:3:"ni ";s:3:"279";s:3:"nii";s:3:"280";s:3:"oma";s:3:"281";s:3:"ool";s:3:"282";s:3:"rso";s:3:"283";s:3:"ru ";s:3:"284";s:3:"rva";s:3:"285";s:3:"s t";s:3:"286";s:3:"sek";s:3:"287";s:3:"son";s:3:"288";s:3:"ste";s:3:"289";s:3:"t m";s:3:"290";s:3:"taj";s:3:"291";s:3:"tam";s:3:"292";s:3:"ude";s:3:"293";s:3:"uho";s:3:"294";s:3:"vai";s:3:"295";s:3:" ag";s:3:"296";s:3:" os";s:3:"297";s:3:" pa";s:3:"298";s:3:" re";s:3:"299";}s:5:"farsi";a:300:{s:5:"ان ";s:1:"0";s:5:"ای ";s:1:"1";s:5:"Ù‡ ا";s:1:"2";s:5:" اي";s:1:"3";s:5:" در";s:1:"4";s:5:"به ";s:1:"5";s:5:" بر";s:1:"6";s:5:"در ";s:1:"7";s:6:"ران";s:1:"8";s:5:" به";s:1:"9";s:5:"ÛŒ ا";s:2:"10";s:5:"از ";s:2:"11";s:5:"ين ";s:2:"12";s:5:"Ù…ÛŒ ";s:2:"13";s:5:" از";s:2:"14";s:5:"ده ";s:2:"15";s:5:"ست ";s:2:"16";s:6:"است";s:2:"17";s:5:" اس";s:2:"18";s:5:" Ú©Ù‡";s:2:"19";s:5:"Ú©Ù‡ ";s:2:"20";s:6:"اير";s:2:"21";s:5:"ند ";s:2:"22";s:6:"اين";s:2:"23";s:5:" ها";s:2:"24";s:6:"يرا";s:2:"25";s:5:"ود ";s:2:"26";s:5:" را";s:2:"27";s:6:"های";s:2:"28";s:5:" خو";s:2:"29";s:5:"ته ";s:2:"30";s:5:"را ";s:2:"31";s:6:"رای";s:2:"32";s:5:"رد ";s:2:"33";s:5:"Ù† ب";s:2:"34";s:6:"کرد";s:2:"35";s:4:" Ùˆ ";s:2:"36";s:5:" کر";s:2:"37";s:5:"ات ";s:2:"38";s:6:"برا";s:2:"39";s:5:"د Ú©";s:2:"40";s:6:"مان";s:2:"41";s:5:"ÛŒ د";s:2:"42";s:5:" ان";s:2:"43";s:6:"خوا";s:2:"44";s:6:"شور";s:2:"45";s:5:" با";s:2:"46";s:5:"Ù† ا";s:2:"47";s:5:" سا";s:2:"48";s:6:"تمی";s:2:"49";s:5:"ری ";s:2:"50";s:6:"اتم";s:2:"51";s:5:"ا ا";s:2:"52";s:6:"واه";s:2:"53";s:5:" ات";s:2:"54";s:5:" عر";s:2:"55";s:5:"اق ";s:2:"56";s:5:"ر Ù…";s:2:"57";s:6:"راق";s:2:"58";s:6:"عرا";s:2:"59";s:5:"ÛŒ ب";s:2:"60";s:5:" تا";s:2:"61";s:5:" تو";s:2:"62";s:5:"ار ";s:2:"63";s:5:"ر ا";s:2:"64";s:5:"Ù† Ù…";s:2:"65";s:5:"Ù‡ ب";s:2:"66";s:5:"ور ";s:2:"67";s:5:"يد ";s:2:"68";s:5:"ÛŒ Ú©";s:2:"69";s:5:" ام";s:2:"70";s:5:" دا";s:2:"71";s:5:" Ú©Ù†";s:2:"72";s:6:"اهد";s:2:"73";s:5:"هد ";s:2:"74";s:5:" آن";s:2:"75";s:5:" Ù…ÛŒ";s:2:"76";s:5:" ني";s:2:"77";s:5:" Ú¯Ù";s:2:"78";s:5:"د ا";s:2:"79";s:6:"Ú¯ÙØª";s:2:"80";s:5:" Ú©Ø´";s:2:"81";s:5:"ا ب";s:2:"82";s:5:"Ù†ÛŒ ";s:2:"83";s:5:"ها ";s:2:"84";s:6:"کشو";s:2:"85";s:5:" رو";s:2:"86";s:5:"ت Ú©";s:2:"87";s:6:"نيو";s:2:"88";s:5:"Ù‡ Ù…";s:2:"89";s:5:"ÙˆÛŒ ";s:2:"90";s:5:"ÛŒ ت";s:2:"91";s:5:" شو";s:2:"92";s:5:"ال ";s:2:"93";s:6:"دار";s:2:"94";s:5:"مه ";s:2:"95";s:5:"Ù† Ú©";s:2:"96";s:5:"Ù‡ د";s:2:"97";s:5:"يه ";s:2:"98";s:5:" ما";s:2:"99";s:6:"امه";s:3:"100";s:5:"د ب";s:3:"101";s:6:"زار";s:3:"102";s:6:"ورا";s:3:"103";s:6:"گزا";s:3:"104";s:5:" پي";s:3:"105";s:5:"آن ";s:3:"106";s:6:"انت";s:3:"107";s:5:"ت ا";s:3:"108";s:5:"ÙØª ";s:3:"109";s:5:"Ù‡ Ù†";s:3:"110";s:5:"ÛŒ Ø®";s:3:"111";s:6:"اما";s:3:"112";s:6:"بات";s:3:"113";s:5:"ما ";s:3:"114";s:6:"ملل";s:3:"115";s:6:"نام";s:3:"116";s:5:"ير ";s:3:"117";s:5:"ÛŒ Ù…";s:3:"118";s:5:"ÛŒ Ù‡";s:3:"119";s:5:" آم";s:3:"120";s:5:" ای";s:3:"121";s:5:" من";s:3:"122";s:6:"انس";s:3:"123";s:6:"اني";s:3:"124";s:5:"ت د";s:3:"125";s:6:"رده";s:3:"126";s:6:"ساز";s:3:"127";s:5:"Ù† د";s:3:"128";s:5:"نه ";s:3:"129";s:6:"ورد";s:3:"130";s:5:" او";s:3:"131";s:5:" بي";s:3:"132";s:5:" سو";s:3:"133";s:5:" شد";s:3:"134";s:6:"اده";s:3:"135";s:6:"اند";s:3:"136";s:5:"با ";s:3:"137";s:5:"ت ب";s:3:"138";s:5:"ر ب";s:3:"139";s:5:"ز ا";s:3:"140";s:6:"زما";s:3:"141";s:6:"سته";s:3:"142";s:5:"Ù† ر";s:3:"143";s:5:"Ù‡ س";s:3:"144";s:6:"وان";s:3:"145";s:5:"وز ";s:3:"146";s:5:"ÛŒ ر";s:3:"147";s:5:"ÛŒ س";s:3:"148";s:5:" هس";s:3:"149";s:6:"ابا";s:3:"150";s:5:"ام ";s:3:"151";s:6:"اور";s:3:"152";s:6:"تخا";s:3:"153";s:6:"خاب";s:3:"154";s:6:"خود";s:3:"155";s:5:"د د";s:3:"156";s:5:"دن ";s:3:"157";s:6:"رها";s:3:"158";s:6:"روز";s:3:"159";s:6:"رگز";s:3:"160";s:6:"نتخ";s:3:"161";s:5:"Ù‡ Ø´";s:3:"162";s:5:"Ù‡ Ù‡";s:3:"163";s:6:"هست";s:3:"164";s:5:"يت ";s:3:"165";s:5:"يم ";s:3:"166";s:5:" دو";s:3:"167";s:5:" دي";s:3:"168";s:5:" مو";s:3:"169";s:5:" نو";s:3:"170";s:5:" هم";s:3:"171";s:5:" کا";s:3:"172";s:5:"اد ";s:3:"173";s:6:"اری";s:3:"174";s:6:"انی";s:3:"175";s:5:"بر ";s:3:"176";s:6:"بود";s:3:"177";s:5:"ت Ù‡";s:3:"178";s:5:"Ø­ Ù‡";s:3:"179";s:6:"حال";s:3:"180";s:5:"رش ";s:3:"181";s:5:"عه ";s:3:"182";s:5:"Ù„ÛŒ ";s:3:"183";s:5:"وم ";s:3:"184";s:6:"ژان";s:3:"185";s:5:" سل";s:3:"186";s:6:"آمر";s:3:"187";s:5:"اح ";s:3:"188";s:6:"توس";s:3:"189";s:6:"داد";s:3:"190";s:6:"دام";s:3:"191";s:5:"ر د";s:3:"192";s:5:"ره ";s:3:"193";s:6:"ريک";s:3:"194";s:5:"زی ";s:3:"195";s:6:"سلا";s:3:"196";s:6:"شود";s:3:"197";s:6:"لاح";s:3:"198";s:6:"مري";s:3:"199";s:6:"نند";s:3:"200";s:5:"Ù‡ ع";s:3:"201";s:6:"يما";s:3:"202";s:6:"يکا";s:3:"203";s:6:"پيم";s:3:"204";s:5:"گر ";s:3:"205";s:5:" Ø¢Ú˜";s:3:"206";s:5:" ال";s:3:"207";s:5:" بو";s:3:"208";s:5:" مق";s:3:"209";s:5:" مل";s:3:"210";s:5:" ÙˆÛŒ";s:3:"211";s:6:"آژا";s:3:"212";s:6:"ازم";s:3:"213";s:6:"ازی";s:3:"214";s:6:"بار";s:3:"215";s:6:"برن";s:3:"216";s:5:"ر Ø¢";s:3:"217";s:5:"ز س";s:3:"218";s:6:"سعه";s:3:"219";s:6:"شته";s:3:"220";s:6:"مات";s:3:"221";s:5:"Ù† Ø¢";s:3:"222";s:5:"Ù† Ù¾";s:3:"223";s:5:"نس ";s:3:"224";s:5:"Ù‡ Ú¯";s:3:"225";s:6:"وسع";s:3:"226";s:6:"يان";s:3:"227";s:6:"يوم";s:3:"228";s:5:"کا ";s:3:"229";s:6:"کام";s:3:"230";s:6:"کند";s:3:"231";s:5:" خا";s:3:"232";s:5:" سر";s:3:"233";s:6:"آور";s:3:"234";s:6:"ارد";s:3:"235";s:6:"اقد";s:3:"236";s:6:"ايم";s:3:"237";s:6:"ايی";s:3:"238";s:6:"برگ";s:3:"239";s:5:"ت ع";s:3:"240";s:5:"تن ";s:3:"241";s:5:"خت ";s:3:"242";s:5:"د Ùˆ";s:3:"243";s:5:"ر Ø®";s:3:"244";s:5:"رک ";s:3:"245";s:6:"زير";s:3:"246";s:6:"ÙØªÙ‡";s:3:"247";s:6:"قدا";s:3:"248";s:5:"Ù„ ت";s:3:"249";s:6:"مين";s:3:"250";s:5:"Ù† Ú¯";s:3:"251";s:5:"Ù‡ Ø¢";s:3:"252";s:5:"Ù‡ Ø®";s:3:"253";s:5:"Ù‡ Ú©";s:3:"254";s:6:"ورک";s:3:"255";s:6:"ويو";s:3:"256";s:6:"يور";s:3:"257";s:6:"يوي";s:3:"258";s:5:"ÙŠÛŒ ";s:3:"259";s:5:"Ú© ت";s:3:"260";s:5:"ÛŒ Ø´";s:3:"261";s:5:" اق";s:3:"262";s:5:" حا";s:3:"263";s:5:" حق";s:3:"264";s:5:" دس";s:3:"265";s:5:" Ø´Ú©";s:3:"266";s:5:" عم";s:3:"267";s:5:" ÙŠÚ©";s:3:"268";s:5:"ا ت";s:3:"269";s:5:"ا د";s:3:"270";s:6:"ارج";s:3:"271";s:6:"بين";s:3:"272";s:5:"ت Ù…";s:3:"273";s:5:"ت Ùˆ";s:3:"274";s:6:"تاي";s:3:"275";s:6:"دست";s:3:"276";s:5:"ر Ø­";s:3:"277";s:5:"ر س";s:3:"278";s:6:"رنا";s:3:"279";s:5:"ز ب";s:3:"280";s:6:"شکا";s:3:"281";s:5:"لل ";s:3:"282";s:5:"Ù… Ú©";s:3:"283";s:5:"مز ";s:3:"284";s:6:"ندا";s:3:"285";s:6:"نوا";s:3:"286";s:5:"Ùˆ ا";s:3:"287";s:6:"وره";s:3:"288";s:5:"ون ";s:3:"289";s:6:"وند";s:3:"290";s:6:"يمز";s:3:"291";s:5:" آو";s:3:"292";s:5:" اع";s:3:"293";s:5:" ÙØ±";s:3:"294";s:5:" مت";s:3:"295";s:5:" نه";s:3:"296";s:5:" هر";s:3:"297";s:5:" وز";s:3:"298";s:5:" گز";s:3:"299";}s:7:"finnish";a:300:{s:3:"en ";s:1:"0";s:3:"in ";s:1:"1";s:3:"an ";s:1:"2";s:3:"on ";s:1:"3";s:3:"ist";s:1:"4";s:3:"ta ";s:1:"5";s:3:"ja ";s:1:"6";s:3:"n t";s:1:"7";s:3:"sa ";s:1:"8";s:3:"sta";s:1:"9";s:3:"aan";s:2:"10";s:3:"n p";s:2:"11";s:3:" on";s:2:"12";s:3:"ssa";s:2:"13";s:3:"tta";s:2:"14";s:4:"tä ";s:2:"15";s:3:" ka";s:2:"16";s:3:" pa";s:2:"17";s:3:"si ";s:2:"18";s:3:" ja";s:2:"19";s:3:"n k";s:2:"20";s:3:"lla";s:2:"21";s:4:"än ";s:2:"22";s:3:"een";s:2:"23";s:3:"n v";s:2:"24";s:3:"ksi";s:2:"25";s:3:"ett";s:2:"26";s:3:"nen";s:2:"27";s:3:"taa";s:2:"28";s:4:"ttä";s:2:"29";s:3:" va";s:2:"30";s:3:"ill";s:2:"31";s:3:"itt";s:2:"32";s:3:" jo";s:2:"33";s:3:" ko";s:2:"34";s:3:"n s";s:2:"35";s:3:" tu";s:2:"36";s:3:"ia ";s:2:"37";s:3:" su";s:2:"38";s:3:"a p";s:2:"39";s:3:"aa ";s:2:"40";s:3:"la ";s:2:"41";s:3:"lle";s:2:"42";s:3:"n m";s:2:"43";s:3:"le ";s:2:"44";s:3:"tte";s:2:"45";s:3:"na ";s:2:"46";s:3:" ta";s:2:"47";s:3:" ve";s:2:"48";s:3:"at ";s:2:"49";s:3:" vi";s:2:"50";s:3:"utt";s:2:"51";s:3:" sa";s:2:"52";s:3:"ise";s:2:"53";s:3:"sen";s:2:"54";s:3:" ku";s:2:"55";s:4:" nä";s:2:"56";s:4:" pä";s:2:"57";s:3:"ste";s:2:"58";s:3:" ol";s:2:"59";s:3:"a t";s:2:"60";s:3:"ais";s:2:"61";s:3:"maa";s:2:"62";s:3:"ti ";s:2:"63";s:3:"a o";s:2:"64";s:3:"oit";s:2:"65";s:5:"pää";s:2:"66";s:3:" pi";s:2:"67";s:3:"a v";s:2:"68";s:3:"ala";s:2:"69";s:3:"ine";s:2:"70";s:3:"isi";s:2:"71";s:3:"tel";s:2:"72";s:3:"tti";s:2:"73";s:3:" si";s:2:"74";s:3:"a k";s:2:"75";s:3:"all";s:2:"76";s:3:"iin";s:2:"77";s:3:"kin";s:2:"78";s:4:"stä";s:2:"79";s:3:"uom";s:2:"80";s:3:"vii";s:2:"81";s:3:" ma";s:2:"82";s:3:" se";s:2:"83";s:4:"enä";s:2:"84";s:3:" mu";s:2:"85";s:3:"a s";s:2:"86";s:3:"est";s:2:"87";s:3:"iss";s:2:"88";s:4:"llä";s:2:"89";s:3:"lok";s:2:"90";s:4:"lä ";s:2:"91";s:3:"n j";s:2:"92";s:3:"n o";s:2:"93";s:3:"toi";s:2:"94";s:3:"ven";s:2:"95";s:3:"ytt";s:2:"96";s:3:" li";s:2:"97";s:3:"ain";s:2:"98";s:3:"et ";s:2:"99";s:3:"ina";s:3:"100";s:3:"n a";s:3:"101";s:3:"n n";s:3:"102";s:3:"oll";s:3:"103";s:3:"plo";s:3:"104";s:3:"ten";s:3:"105";s:3:"ust";s:3:"106";s:4:"äll";s:3:"107";s:5:"ään";s:3:"108";s:3:" to";s:3:"109";s:3:"den";s:3:"110";s:3:"men";s:3:"111";s:3:"oki";s:3:"112";s:3:"suo";s:3:"113";s:4:"sä ";s:3:"114";s:5:"tää";s:3:"115";s:3:"uks";s:3:"116";s:3:"vat";s:3:"117";s:3:" al";s:3:"118";s:3:" ke";s:3:"119";s:3:" te";s:3:"120";s:3:"a e";s:3:"121";s:3:"lii";s:3:"122";s:3:"tai";s:3:"123";s:3:"tei";s:3:"124";s:4:"äis";s:3:"125";s:5:"ää ";s:3:"126";s:3:" pl";s:3:"127";s:3:"ell";s:3:"128";s:3:"i t";s:3:"129";s:3:"ide";s:3:"130";s:3:"ikk";s:3:"131";s:3:"ki ";s:3:"132";s:3:"nta";s:3:"133";s:3:"ova";s:3:"134";s:3:"yst";s:3:"135";s:3:"yt ";s:3:"136";s:4:"ä p";s:3:"137";s:4:"äyt";s:3:"138";s:3:" ha";s:3:"139";s:3:" pe";s:3:"140";s:4:" tä";s:3:"141";s:3:"a n";s:3:"142";s:3:"aik";s:3:"143";s:3:"i p";s:3:"144";s:3:"i v";s:3:"145";s:3:"nyt";s:3:"146";s:4:"näy";s:3:"147";s:3:"pal";s:3:"148";s:3:"tee";s:3:"149";s:3:"un ";s:3:"150";s:3:" me";s:3:"151";s:3:"a m";s:3:"152";s:3:"ess";s:3:"153";s:3:"kau";s:3:"154";s:3:"pai";s:3:"155";s:3:"stu";s:3:"156";s:3:"ut ";s:3:"157";s:3:"voi";s:3:"158";s:3:" et";s:3:"159";s:3:"a h";s:3:"160";s:3:"eis";s:3:"161";s:3:"hte";s:3:"162";s:3:"i o";s:3:"163";s:3:"iik";s:3:"164";s:3:"ita";s:3:"165";s:3:"jou";s:3:"166";s:3:"mis";s:3:"167";s:3:"nin";s:3:"168";s:3:"nut";s:3:"169";s:3:"sia";s:3:"170";s:4:"ssä";s:3:"171";s:3:"van";s:3:"172";s:3:" ty";s:3:"173";s:3:" yh";s:3:"174";s:3:"aks";s:3:"175";s:3:"ime";s:3:"176";s:3:"loi";s:3:"177";s:3:"me ";s:3:"178";s:3:"n e";s:3:"179";s:3:"n h";s:3:"180";s:3:"n l";s:3:"181";s:3:"oin";s:3:"182";s:3:"ome";s:3:"183";s:3:"ott";s:3:"184";s:3:"ouk";s:3:"185";s:3:"sit";s:3:"186";s:3:"sti";s:3:"187";s:3:"tet";s:3:"188";s:3:"tie";s:3:"189";s:3:"ukk";s:3:"190";s:4:"ä k";s:3:"191";s:3:" ra";s:3:"192";s:3:" ti";s:3:"193";s:3:"aja";s:3:"194";s:3:"asi";s:3:"195";s:3:"ent";s:3:"196";s:3:"iga";s:3:"197";s:3:"iig";s:3:"198";s:3:"ite";s:3:"199";s:3:"jan";s:3:"200";s:3:"kaa";s:3:"201";s:3:"kse";s:3:"202";s:3:"laa";s:3:"203";s:3:"lan";s:3:"204";s:3:"li ";s:3:"205";s:4:"näj";s:3:"206";s:3:"ole";s:3:"207";s:3:"tii";s:3:"208";s:3:"usi";s:3:"209";s:5:"äjä";s:3:"210";s:3:" ov";s:3:"211";s:3:"a a";s:3:"212";s:3:"ant";s:3:"213";s:3:"ava";s:3:"214";s:3:"ei ";s:3:"215";s:3:"eri";s:3:"216";s:3:"kan";s:3:"217";s:3:"kku";s:3:"218";s:3:"lai";s:3:"219";s:3:"lis";s:3:"220";s:4:"läi";s:3:"221";s:3:"mat";s:3:"222";s:3:"ois";s:3:"223";s:3:"pel";s:3:"224";s:3:"sil";s:3:"225";s:3:"sty";s:3:"226";s:3:"taj";s:3:"227";s:3:"tav";s:3:"228";s:3:"ttu";s:3:"229";s:4:"työ";s:3:"230";s:4:"yös";s:3:"231";s:4:"ä o";s:3:"232";s:3:" ai";s:3:"233";s:3:" pu";s:3:"234";s:3:"a j";s:3:"235";s:3:"a l";s:3:"236";s:3:"aal";s:3:"237";s:3:"arv";s:3:"238";s:3:"ass";s:3:"239";s:3:"ien";s:3:"240";s:3:"imi";s:3:"241";s:3:"imm";s:3:"242";s:4:"itä";s:3:"243";s:3:"ka ";s:3:"244";s:3:"kes";s:3:"245";s:3:"kue";s:3:"246";s:3:"lee";s:3:"247";s:3:"lin";s:3:"248";s:3:"llo";s:3:"249";s:3:"one";s:3:"250";s:3:"ri ";s:3:"251";s:3:"t o";s:3:"252";s:3:"t p";s:3:"253";s:3:"tu ";s:3:"254";s:3:"val";s:3:"255";s:3:"vuo";s:3:"256";s:3:" ei";s:3:"257";s:3:" he";s:3:"258";s:3:" hy";s:3:"259";s:3:" my";s:3:"260";s:3:" vo";s:3:"261";s:3:"ali";s:3:"262";s:3:"alo";s:3:"263";s:3:"ano";s:3:"264";s:3:"ast";s:3:"265";s:3:"att";s:3:"266";s:3:"auk";s:3:"267";s:3:"eli";s:3:"268";s:3:"ely";s:3:"269";s:3:"hti";s:3:"270";s:3:"ika";s:3:"271";s:3:"ken";s:3:"272";s:3:"kki";s:3:"273";s:3:"lys";s:3:"274";s:3:"min";s:3:"275";s:4:"myö";s:3:"276";s:3:"oht";s:3:"277";s:3:"oma";s:3:"278";s:3:"tus";s:3:"279";s:3:"umi";s:3:"280";s:3:"yks";s:3:"281";s:4:"ät ";s:3:"282";s:5:"ääl";s:3:"283";s:4:"ös ";s:3:"284";s:3:" ar";s:3:"285";s:3:" eu";s:3:"286";s:3:" hu";s:3:"287";s:3:" na";s:3:"288";s:3:"aat";s:3:"289";s:3:"alk";s:3:"290";s:3:"alu";s:3:"291";s:3:"ans";s:3:"292";s:3:"arj";s:3:"293";s:3:"enn";s:3:"294";s:3:"han";s:3:"295";s:3:"kuu";s:3:"296";s:3:"n y";s:3:"297";s:3:"set";s:3:"298";s:3:"sim";s:3:"299";}s:6:"french";a:300:{s:3:"es ";s:1:"0";s:3:" de";s:1:"1";s:3:"de ";s:1:"2";s:3:" le";s:1:"3";s:3:"ent";s:1:"4";s:3:"le ";s:1:"5";s:3:"nt ";s:1:"6";s:3:"la ";s:1:"7";s:3:"s d";s:1:"8";s:3:" la";s:1:"9";s:3:"ion";s:2:"10";s:3:"on ";s:2:"11";s:3:"re ";s:2:"12";s:3:" pa";s:2:"13";s:3:"e l";s:2:"14";s:3:"e d";s:2:"15";s:3:" l'";s:2:"16";s:3:"e p";s:2:"17";s:3:" co";s:2:"18";s:3:" pr";s:2:"19";s:3:"tio";s:2:"20";s:3:"ns ";s:2:"21";s:3:" en";s:2:"22";s:3:"ne ";s:2:"23";s:3:"que";s:2:"24";s:3:"r l";s:2:"25";s:3:"les";s:2:"26";s:3:"ur ";s:2:"27";s:3:"en ";s:2:"28";s:3:"ati";s:2:"29";s:3:"ue ";s:2:"30";s:3:" po";s:2:"31";s:3:" d'";s:2:"32";s:3:"par";s:2:"33";s:3:" a ";s:2:"34";s:3:"et ";s:2:"35";s:3:"it ";s:2:"36";s:3:" qu";s:2:"37";s:3:"men";s:2:"38";s:3:"ons";s:2:"39";s:3:"te ";s:2:"40";s:3:" et";s:2:"41";s:3:"t d";s:2:"42";s:3:" re";s:2:"43";s:3:"des";s:2:"44";s:3:" un";s:2:"45";s:3:"ie ";s:2:"46";s:3:"s l";s:2:"47";s:3:" su";s:2:"48";s:3:"pou";s:2:"49";s:3:" au";s:2:"50";s:4:" à ";s:2:"51";s:3:"con";s:2:"52";s:3:"er ";s:2:"53";s:3:" no";s:2:"54";s:3:"ait";s:2:"55";s:3:"e c";s:2:"56";s:3:"se ";s:2:"57";s:4:"té ";s:2:"58";s:3:"du ";s:2:"59";s:3:" du";s:2:"60";s:4:" dé";s:2:"61";s:3:"ce ";s:2:"62";s:3:"e e";s:2:"63";s:3:"is ";s:2:"64";s:3:"n d";s:2:"65";s:3:"s a";s:2:"66";s:3:" so";s:2:"67";s:3:"e r";s:2:"68";s:3:"e s";s:2:"69";s:3:"our";s:2:"70";s:3:"res";s:2:"71";s:3:"ssi";s:2:"72";s:3:"eur";s:2:"73";s:3:" se";s:2:"74";s:3:"eme";s:2:"75";s:3:"est";s:2:"76";s:3:"us ";s:2:"77";s:3:"sur";s:2:"78";s:3:"ant";s:2:"79";s:3:"iqu";s:2:"80";s:3:"s p";s:2:"81";s:3:"une";s:2:"82";s:3:"uss";s:2:"83";s:3:"l'a";s:2:"84";s:3:"pro";s:2:"85";s:3:"ter";s:2:"86";s:3:"tre";s:2:"87";s:3:"end";s:2:"88";s:3:"rs ";s:2:"89";s:3:" ce";s:2:"90";s:3:"e a";s:2:"91";s:3:"t p";s:2:"92";s:3:"un ";s:2:"93";s:3:" ma";s:2:"94";s:3:" ru";s:2:"95";s:4:" ré";s:2:"96";s:3:"ous";s:2:"97";s:3:"ris";s:2:"98";s:3:"rus";s:2:"99";s:3:"sse";s:3:"100";s:3:"ans";s:3:"101";s:3:"ar ";s:3:"102";s:3:"com";s:3:"103";s:3:"e m";s:3:"104";s:3:"ire";s:3:"105";s:3:"nce";s:3:"106";s:3:"nte";s:3:"107";s:3:"t l";s:3:"108";s:3:" av";s:3:"109";s:3:" mo";s:3:"110";s:3:" te";s:3:"111";s:3:"il ";s:3:"112";s:3:"me ";s:3:"113";s:3:"ont";s:3:"114";s:3:"ten";s:3:"115";s:3:"a p";s:3:"116";s:3:"dan";s:3:"117";s:3:"pas";s:3:"118";s:3:"qui";s:3:"119";s:3:"s e";s:3:"120";s:3:"s s";s:3:"121";s:3:" in";s:3:"122";s:3:"ist";s:3:"123";s:3:"lle";s:3:"124";s:3:"nou";s:3:"125";s:4:"pré";s:3:"126";s:3:"'un";s:3:"127";s:3:"air";s:3:"128";s:3:"d'a";s:3:"129";s:3:"ir ";s:3:"130";s:3:"n e";s:3:"131";s:3:"rop";s:3:"132";s:3:"ts ";s:3:"133";s:3:" da";s:3:"134";s:3:"a s";s:3:"135";s:3:"as ";s:3:"136";s:3:"au ";s:3:"137";s:3:"den";s:3:"138";s:3:"mai";s:3:"139";s:3:"mis";s:3:"140";s:3:"ori";s:3:"141";s:3:"out";s:3:"142";s:3:"rme";s:3:"143";s:3:"sio";s:3:"144";s:3:"tte";s:3:"145";s:3:"ux ";s:3:"146";s:3:"a d";s:3:"147";s:3:"ien";s:3:"148";s:3:"n a";s:3:"149";s:3:"ntr";s:3:"150";s:3:"omm";s:3:"151";s:3:"ort";s:3:"152";s:3:"ouv";s:3:"153";s:3:"s c";s:3:"154";s:3:"son";s:3:"155";s:3:"tes";s:3:"156";s:3:"ver";s:3:"157";s:4:"ère";s:3:"158";s:3:" il";s:3:"159";s:3:" m ";s:3:"160";s:3:" sa";s:3:"161";s:3:" ve";s:3:"162";s:3:"a r";s:3:"163";s:3:"ais";s:3:"164";s:3:"ava";s:3:"165";s:3:"di ";s:3:"166";s:3:"n p";s:3:"167";s:3:"sti";s:3:"168";s:3:"ven";s:3:"169";s:3:" mi";s:3:"170";s:3:"ain";s:3:"171";s:3:"enc";s:3:"172";s:3:"for";s:3:"173";s:4:"ité";s:3:"174";s:3:"lar";s:3:"175";s:3:"oir";s:3:"176";s:3:"rem";s:3:"177";s:3:"ren";s:3:"178";s:3:"rro";s:3:"179";s:4:"rés";s:3:"180";s:3:"sie";s:3:"181";s:3:"t a";s:3:"182";s:3:"tur";s:3:"183";s:3:" pe";s:3:"184";s:3:" to";s:3:"185";s:3:"d'u";s:3:"186";s:3:"ell";s:3:"187";s:3:"err";s:3:"188";s:3:"ers";s:3:"189";s:3:"ide";s:3:"190";s:3:"ine";s:3:"191";s:3:"iss";s:3:"192";s:3:"mes";s:3:"193";s:3:"por";s:3:"194";s:3:"ran";s:3:"195";s:3:"sit";s:3:"196";s:3:"st ";s:3:"197";s:3:"t r";s:3:"198";s:3:"uti";s:3:"199";s:3:"vai";s:3:"200";s:4:"é l";s:3:"201";s:4:"ési";s:3:"202";s:3:" di";s:3:"203";s:3:" n'";s:3:"204";s:4:" ét";s:3:"205";s:3:"a c";s:3:"206";s:3:"ass";s:3:"207";s:3:"e t";s:3:"208";s:3:"in ";s:3:"209";s:3:"nde";s:3:"210";s:3:"pre";s:3:"211";s:3:"rat";s:3:"212";s:3:"s m";s:3:"213";s:3:"ste";s:3:"214";s:3:"tai";s:3:"215";s:3:"tch";s:3:"216";s:3:"ui ";s:3:"217";s:3:"uro";s:3:"218";s:4:"ès ";s:3:"219";s:3:" es";s:3:"220";s:3:" fo";s:3:"221";s:3:" tr";s:3:"222";s:3:"'ad";s:3:"223";s:3:"app";s:3:"224";s:3:"aux";s:3:"225";s:4:"e à";s:3:"226";s:3:"ett";s:3:"227";s:3:"iti";s:3:"228";s:3:"lit";s:3:"229";s:3:"nal";s:3:"230";s:4:"opé";s:3:"231";s:3:"r d";s:3:"232";s:3:"ra ";s:3:"233";s:3:"rai";s:3:"234";s:3:"ror";s:3:"235";s:3:"s r";s:3:"236";s:3:"tat";s:3:"237";s:4:"uté";s:3:"238";s:4:"à l";s:3:"239";s:3:" af";s:3:"240";s:3:"anc";s:3:"241";s:3:"ara";s:3:"242";s:3:"art";s:3:"243";s:3:"bre";s:3:"244";s:4:"ché";s:3:"245";s:3:"dre";s:3:"246";s:3:"e f";s:3:"247";s:3:"ens";s:3:"248";s:3:"lem";s:3:"249";s:3:"n r";s:3:"250";s:3:"n t";s:3:"251";s:3:"ndr";s:3:"252";s:3:"nne";s:3:"253";s:3:"onn";s:3:"254";s:3:"pos";s:3:"255";s:3:"s t";s:3:"256";s:3:"tiq";s:3:"257";s:3:"ure";s:3:"258";s:3:" tu";s:3:"259";s:3:"ale";s:3:"260";s:3:"and";s:3:"261";s:3:"ave";s:3:"262";s:3:"cla";s:3:"263";s:3:"cou";s:3:"264";s:3:"e n";s:3:"265";s:3:"emb";s:3:"266";s:3:"ins";s:3:"267";s:3:"jou";s:3:"268";s:3:"mme";s:3:"269";s:3:"rie";s:3:"270";s:4:"rès";s:3:"271";s:3:"sem";s:3:"272";s:3:"str";s:3:"273";s:3:"t i";s:3:"274";s:3:"ues";s:3:"275";s:3:"uni";s:3:"276";s:3:"uve";s:3:"277";s:4:"é d";s:3:"278";s:4:"ée ";s:3:"279";s:3:" ch";s:3:"280";s:3:" do";s:3:"281";s:3:" eu";s:3:"282";s:3:" fa";s:3:"283";s:3:" lo";s:3:"284";s:3:" ne";s:3:"285";s:3:" ra";s:3:"286";s:3:"arl";s:3:"287";s:3:"att";s:3:"288";s:3:"ec ";s:3:"289";s:3:"ica";s:3:"290";s:3:"l a";s:3:"291";s:3:"l'o";s:3:"292";s:4:"l'é";s:3:"293";s:3:"mmi";s:3:"294";s:3:"nta";s:3:"295";s:3:"orm";s:3:"296";s:3:"ou ";s:3:"297";s:3:"r u";s:3:"298";s:3:"rle";s:3:"299";}s:6:"german";a:300:{s:3:"en ";s:1:"0";s:3:"er ";s:1:"1";s:3:" de";s:1:"2";s:3:"der";s:1:"3";s:3:"ie ";s:1:"4";s:3:" di";s:1:"5";s:3:"die";s:1:"6";s:3:"sch";s:1:"7";s:3:"ein";s:1:"8";s:3:"che";s:1:"9";s:3:"ich";s:2:"10";s:3:"den";s:2:"11";s:3:"in ";s:2:"12";s:3:"te ";s:2:"13";s:3:"ch ";s:2:"14";s:3:" ei";s:2:"15";s:3:"ung";s:2:"16";s:3:"n d";s:2:"17";s:3:"nd ";s:2:"18";s:3:" be";s:2:"19";s:3:"ver";s:2:"20";s:3:"es ";s:2:"21";s:3:" zu";s:2:"22";s:3:"eit";s:2:"23";s:3:"gen";s:2:"24";s:3:"und";s:2:"25";s:3:" un";s:2:"26";s:3:" au";s:2:"27";s:3:" in";s:2:"28";s:3:"cht";s:2:"29";s:3:"it ";s:2:"30";s:3:"ten";s:2:"31";s:3:" da";s:2:"32";s:3:"ent";s:2:"33";s:3:" ve";s:2:"34";s:3:"and";s:2:"35";s:3:" ge";s:2:"36";s:3:"ine";s:2:"37";s:3:" mi";s:2:"38";s:3:"r d";s:2:"39";s:3:"hen";s:2:"40";s:3:"ng ";s:2:"41";s:3:"nde";s:2:"42";s:3:" vo";s:2:"43";s:3:"e d";s:2:"44";s:3:"ber";s:2:"45";s:3:"men";s:2:"46";s:3:"ei ";s:2:"47";s:3:"mit";s:2:"48";s:3:" st";s:2:"49";s:3:"ter";s:2:"50";s:3:"ren";s:2:"51";s:3:"t d";s:2:"52";s:3:" er";s:2:"53";s:3:"ere";s:2:"54";s:3:"n s";s:2:"55";s:3:"ste";s:2:"56";s:3:" se";s:2:"57";s:3:"e s";s:2:"58";s:3:"ht ";s:2:"59";s:3:"des";s:2:"60";s:3:"ist";s:2:"61";s:3:"ne ";s:2:"62";s:3:"auf";s:2:"63";s:3:"e a";s:2:"64";s:3:"isc";s:2:"65";s:3:"on ";s:2:"66";s:3:"rte";s:2:"67";s:3:" re";s:2:"68";s:3:" we";s:2:"69";s:3:"ges";s:2:"70";s:3:"uch";s:2:"71";s:4:" fü";s:2:"72";s:3:" so";s:2:"73";s:3:"bei";s:2:"74";s:3:"e e";s:2:"75";s:3:"nen";s:2:"76";s:3:"r s";s:2:"77";s:3:"ach";s:2:"78";s:4:"für";s:2:"79";s:3:"ier";s:2:"80";s:3:"par";s:2:"81";s:4:"ür ";s:2:"82";s:3:" ha";s:2:"83";s:3:"as ";s:2:"84";s:3:"ert";s:2:"85";s:3:" an";s:2:"86";s:3:" pa";s:2:"87";s:3:" sa";s:2:"88";s:3:" sp";s:2:"89";s:3:" wi";s:2:"90";s:3:"for";s:2:"91";s:3:"tag";s:2:"92";s:3:"zu ";s:2:"93";s:3:"das";s:2:"94";s:3:"rei";s:2:"95";s:3:"he ";s:2:"96";s:3:"hre";s:2:"97";s:3:"nte";s:2:"98";s:3:"sen";s:2:"99";s:3:"vor";s:3:"100";s:3:" sc";s:3:"101";s:3:"ech";s:3:"102";s:3:"etz";s:3:"103";s:3:"hei";s:3:"104";s:3:"lan";s:3:"105";s:3:"n a";s:3:"106";s:3:"pd ";s:3:"107";s:3:"st ";s:3:"108";s:3:"sta";s:3:"109";s:3:"ese";s:3:"110";s:3:"lic";s:3:"111";s:3:" ab";s:3:"112";s:3:" si";s:3:"113";s:3:"gte";s:3:"114";s:3:" wa";s:3:"115";s:3:"iti";s:3:"116";s:3:"kei";s:3:"117";s:3:"n e";s:3:"118";s:3:"nge";s:3:"119";s:3:"sei";s:3:"120";s:3:"tra";s:3:"121";s:3:"zen";s:3:"122";s:3:" im";s:3:"123";s:3:" la";s:3:"124";s:3:"art";s:3:"125";s:3:"im ";s:3:"126";s:3:"lle";s:3:"127";s:3:"n w";s:3:"128";s:3:"rde";s:3:"129";s:3:"rec";s:3:"130";s:3:"set";s:3:"131";s:3:"str";s:3:"132";s:3:"tei";s:3:"133";s:3:"tte";s:3:"134";s:3:" ni";s:3:"135";s:3:"e p";s:3:"136";s:3:"ehe";s:3:"137";s:3:"ers";s:3:"138";s:3:"g d";s:3:"139";s:3:"nic";s:3:"140";s:3:"von";s:3:"141";s:3:" al";s:3:"142";s:3:" pr";s:3:"143";s:3:"an ";s:3:"144";s:3:"aus";s:3:"145";s:3:"erf";s:3:"146";s:3:"r e";s:3:"147";s:3:"tze";s:3:"148";s:4:"tür";s:3:"149";s:3:"uf ";s:3:"150";s:3:"ag ";s:3:"151";s:3:"als";s:3:"152";s:3:"ar ";s:3:"153";s:3:"chs";s:3:"154";s:3:"end";s:3:"155";s:3:"ge ";s:3:"156";s:3:"ige";s:3:"157";s:3:"ion";s:3:"158";s:3:"ls ";s:3:"159";s:3:"n m";s:3:"160";s:3:"ngs";s:3:"161";s:3:"nis";s:3:"162";s:3:"nt ";s:3:"163";s:3:"ord";s:3:"164";s:3:"s s";s:3:"165";s:3:"sse";s:3:"166";s:4:" tü";s:3:"167";s:3:"ahl";s:3:"168";s:3:"e b";s:3:"169";s:3:"ede";s:3:"170";s:3:"em ";s:3:"171";s:3:"len";s:3:"172";s:3:"n i";s:3:"173";s:3:"orm";s:3:"174";s:3:"pro";s:3:"175";s:3:"rke";s:3:"176";s:3:"run";s:3:"177";s:3:"s d";s:3:"178";s:3:"wah";s:3:"179";s:3:"wer";s:3:"180";s:4:"ürk";s:3:"181";s:3:" me";s:3:"182";s:3:"age";s:3:"183";s:3:"att";s:3:"184";s:3:"ell";s:3:"185";s:3:"est";s:3:"186";s:3:"hat";s:3:"187";s:3:"n b";s:3:"188";s:3:"oll";s:3:"189";s:3:"raf";s:3:"190";s:3:"s a";s:3:"191";s:3:"tsc";s:3:"192";s:3:" es";s:3:"193";s:3:" fo";s:3:"194";s:3:" gr";s:3:"195";s:3:" ja";s:3:"196";s:3:"abe";s:3:"197";s:3:"auc";s:3:"198";s:3:"ben";s:3:"199";s:3:"e n";s:3:"200";s:3:"ege";s:3:"201";s:3:"lie";s:3:"202";s:3:"n u";s:3:"203";s:3:"r v";s:3:"204";s:3:"re ";s:3:"205";s:3:"rit";s:3:"206";s:3:"sag";s:3:"207";s:3:" am";s:3:"208";s:3:"agt";s:3:"209";s:3:"ahr";s:3:"210";s:3:"bra";s:3:"211";s:3:"de ";s:3:"212";s:3:"erd";s:3:"213";s:3:"her";s:3:"214";s:3:"ite";s:3:"215";s:3:"le ";s:3:"216";s:3:"n p";s:3:"217";s:3:"n v";s:3:"218";s:3:"or ";s:3:"219";s:3:"rbe";s:3:"220";s:3:"rt ";s:3:"221";s:3:"sic";s:3:"222";s:3:"wie";s:3:"223";s:4:"übe";s:3:"224";s:3:" is";s:3:"225";s:4:" üb";s:3:"226";s:3:"cha";s:3:"227";s:3:"chi";s:3:"228";s:3:"e f";s:3:"229";s:3:"e m";s:3:"230";s:3:"eri";s:3:"231";s:3:"ied";s:3:"232";s:3:"mme";s:3:"233";s:3:"ner";s:3:"234";s:3:"r a";s:3:"235";s:3:"sti";s:3:"236";s:3:"t a";s:3:"237";s:3:"t s";s:3:"238";s:3:"tis";s:3:"239";s:3:" ko";s:3:"240";s:3:"arb";s:3:"241";s:3:"ds ";s:3:"242";s:3:"gan";s:3:"243";s:3:"n z";s:3:"244";s:3:"r f";s:3:"245";s:3:"r w";s:3:"246";s:3:"ran";s:3:"247";s:3:"se ";s:3:"248";s:3:"t i";s:3:"249";s:3:"wei";s:3:"250";s:3:"wir";s:3:"251";s:3:" br";s:3:"252";s:3:" np";s:3:"253";s:3:"am ";s:3:"254";s:3:"bes";s:3:"255";s:3:"d d";s:3:"256";s:3:"deu";s:3:"257";s:3:"e g";s:3:"258";s:3:"e k";s:3:"259";s:3:"efo";s:3:"260";s:3:"et ";s:3:"261";s:3:"eut";s:3:"262";s:3:"fen";s:3:"263";s:3:"hse";s:3:"264";s:3:"lte";s:3:"265";s:3:"n r";s:3:"266";s:3:"npd";s:3:"267";s:3:"r b";s:3:"268";s:3:"rhe";s:3:"269";s:3:"t w";s:3:"270";s:3:"tz ";s:3:"271";s:3:" fr";s:3:"272";s:3:" ih";s:3:"273";s:3:" ke";s:3:"274";s:3:" ma";s:3:"275";s:3:"ame";s:3:"276";s:3:"ang";s:3:"277";s:3:"d s";s:3:"278";s:3:"eil";s:3:"279";s:3:"el ";s:3:"280";s:3:"era";s:3:"281";s:3:"erh";s:3:"282";s:3:"h d";s:3:"283";s:3:"i d";s:3:"284";s:3:"kan";s:3:"285";s:3:"n f";s:3:"286";s:3:"n l";s:3:"287";s:3:"nts";s:3:"288";s:3:"och";s:3:"289";s:3:"rag";s:3:"290";s:3:"rd ";s:3:"291";s:3:"spd";s:3:"292";s:3:"spr";s:3:"293";s:3:"tio";s:3:"294";s:3:" ar";s:3:"295";s:3:" en";s:3:"296";s:3:" ka";s:3:"297";s:3:"ark";s:3:"298";s:3:"ass";s:3:"299";}s:5:"hausa";a:300:{s:3:" da";s:1:"0";s:3:"da ";s:1:"1";s:3:"in ";s:1:"2";s:3:"an ";s:1:"3";s:3:"ya ";s:1:"4";s:3:" wa";s:1:"5";s:3:" ya";s:1:"6";s:3:"na ";s:1:"7";s:3:"ar ";s:1:"8";s:3:"a d";s:1:"9";s:3:" ma";s:2:"10";s:3:"wa ";s:2:"11";s:3:"a a";s:2:"12";s:3:"a k";s:2:"13";s:3:"a s";s:2:"14";s:3:" ta";s:2:"15";s:3:"wan";s:2:"16";s:3:" a ";s:2:"17";s:3:" ba";s:2:"18";s:3:" ka";s:2:"19";s:3:"ta ";s:2:"20";s:3:"a y";s:2:"21";s:3:"n d";s:2:"22";s:3:" ha";s:2:"23";s:3:" na";s:2:"24";s:3:" su";s:2:"25";s:3:" sa";s:2:"26";s:3:"kin";s:2:"27";s:3:"sa ";s:2:"28";s:3:"ata";s:2:"29";s:3:" ko";s:2:"30";s:3:"a t";s:2:"31";s:3:"su ";s:2:"32";s:3:" ga";s:2:"33";s:3:"ai ";s:2:"34";s:3:" sh";s:2:"35";s:3:"a m";s:2:"36";s:3:"uwa";s:2:"37";s:3:"iya";s:2:"38";s:3:"ma ";s:2:"39";s:3:"a w";s:2:"40";s:3:"asa";s:2:"41";s:3:"yan";s:2:"42";s:3:"ka ";s:2:"43";s:3:"ani";s:2:"44";s:3:"shi";s:2:"45";s:3:"a b";s:2:"46";s:3:"a h";s:2:"47";s:3:"a c";s:2:"48";s:3:"ama";s:2:"49";s:3:"ba ";s:2:"50";s:3:"nan";s:2:"51";s:3:"n a";s:2:"52";s:3:" mu";s:2:"53";s:3:"ana";s:2:"54";s:3:" yi";s:2:"55";s:3:"a g";s:2:"56";s:3:" za";s:2:"57";s:3:"i d";s:2:"58";s:3:" ku";s:2:"59";s:3:"aka";s:2:"60";s:3:"yi ";s:2:"61";s:3:"n k";s:2:"62";s:3:"ann";s:2:"63";s:3:"ke ";s:2:"64";s:3:"tar";s:2:"65";s:3:" ci";s:2:"66";s:3:"iki";s:2:"67";s:3:"n s";s:2:"68";s:3:"ko ";s:2:"69";s:3:" ra";s:2:"70";s:3:"ki ";s:2:"71";s:3:"ne ";s:2:"72";s:3:"a z";s:2:"73";s:3:"mat";s:2:"74";s:3:"hak";s:2:"75";s:3:"nin";s:2:"76";s:3:"e d";s:2:"77";s:3:"nna";s:2:"78";s:3:"uma";s:2:"79";s:3:"nda";s:2:"80";s:3:"a n";s:2:"81";s:3:"ada";s:2:"82";s:3:"cik";s:2:"83";s:3:"ni ";s:2:"84";s:3:"rin";s:2:"85";s:3:"una";s:2:"86";s:3:"ara";s:2:"87";s:3:"kum";s:2:"88";s:3:"akk";s:2:"89";s:3:" ce";s:2:"90";s:3:" du";s:2:"91";s:3:"man";s:2:"92";s:3:"n y";s:2:"93";s:3:"nci";s:2:"94";s:3:"sar";s:2:"95";s:3:"aki";s:2:"96";s:3:"awa";s:2:"97";s:3:"ci ";s:2:"98";s:3:"kan";s:2:"99";s:3:"kar";s:3:"100";s:3:"ari";s:3:"101";s:3:"n m";s:3:"102";s:3:"and";s:3:"103";s:3:"hi ";s:3:"104";s:3:"n t";s:3:"105";s:3:"ga ";s:3:"106";s:3:"owa";s:3:"107";s:3:"ash";s:3:"108";s:3:"kam";s:3:"109";s:3:"dan";s:3:"110";s:3:"ewa";s:3:"111";s:3:"nsa";s:3:"112";s:3:"ali";s:3:"113";s:3:"ami";s:3:"114";s:3:" ab";s:3:"115";s:3:" do";s:3:"116";s:3:"anc";s:3:"117";s:3:"n r";s:3:"118";s:3:"aya";s:3:"119";s:3:"i n";s:3:"120";s:3:"sun";s:3:"121";s:3:"uka";s:3:"122";s:3:" al";s:3:"123";s:3:" ne";s:3:"124";s:3:"a'a";s:3:"125";s:3:"cew";s:3:"126";s:3:"cin";s:3:"127";s:3:"mas";s:3:"128";s:3:"tak";s:3:"129";s:3:"un ";s:3:"130";s:3:"aba";s:3:"131";s:3:"kow";s:3:"132";s:3:"a r";s:3:"133";s:3:"ra ";s:3:"134";s:3:" ja";s:3:"135";s:4:" Æ™a";s:3:"136";s:3:"en ";s:3:"137";s:3:"r d";s:3:"138";s:3:"sam";s:3:"139";s:3:"tsa";s:3:"140";s:3:" ru";s:3:"141";s:3:"ce ";s:3:"142";s:3:"i a";s:3:"143";s:3:"abi";s:3:"144";s:3:"ida";s:3:"145";s:3:"mut";s:3:"146";s:3:"n g";s:3:"147";s:3:"n j";s:3:"148";s:3:"san";s:3:"149";s:4:"a Æ™";s:3:"150";s:3:"har";s:3:"151";s:3:"on ";s:3:"152";s:3:"i m";s:3:"153";s:3:"suk";s:3:"154";s:3:" ak";s:3:"155";s:3:" ji";s:3:"156";s:3:"yar";s:3:"157";s:3:"'ya";s:3:"158";s:3:"kwa";s:3:"159";s:3:"min";s:3:"160";s:3:" 'y";s:3:"161";s:3:"ane";s:3:"162";s:3:"ban";s:3:"163";s:3:"ins";s:3:"164";s:3:"ruw";s:3:"165";s:3:"i k";s:3:"166";s:3:"n h";s:3:"167";s:3:" ad";s:3:"168";s:3:"ake";s:3:"169";s:3:"n w";s:3:"170";s:3:"sha";s:3:"171";s:3:"utu";s:3:"172";s:4:" Æ´a";s:3:"173";s:3:"bay";s:3:"174";s:3:"tan";s:3:"175";s:4:"Æ´an";s:3:"176";s:3:"bin";s:3:"177";s:3:"duk";s:3:"178";s:3:"e m";s:3:"179";s:3:"n n";s:3:"180";s:3:"oka";s:3:"181";s:3:"yin";s:3:"182";s:4:"É—an";s:3:"183";s:3:" fa";s:3:"184";s:3:"a i";s:3:"185";s:3:"kki";s:3:"186";s:3:"re ";s:3:"187";s:3:"za ";s:3:"188";s:3:"ala";s:3:"189";s:3:"asu";s:3:"190";s:3:"han";s:3:"191";s:3:"i y";s:3:"192";s:3:"mar";s:3:"193";s:3:"ran";s:3:"194";s:4:"Æ™as";s:3:"195";s:3:"add";s:3:"196";s:3:"ars";s:3:"197";s:3:"gab";s:3:"198";s:3:"ira";s:3:"199";s:3:"mma";s:3:"200";s:3:"u d";s:3:"201";s:3:" ts";s:3:"202";s:3:"abb";s:3:"203";s:3:"abu";s:3:"204";s:3:"aga";s:3:"205";s:3:"gar";s:3:"206";s:3:"n b";s:3:"207";s:4:" É—a";s:3:"208";s:3:"aci";s:3:"209";s:3:"aik";s:3:"210";s:3:"am ";s:3:"211";s:3:"dun";s:3:"212";s:3:"e s";s:3:"213";s:3:"i b";s:3:"214";s:3:"i w";s:3:"215";s:3:"kas";s:3:"216";s:3:"kok";s:3:"217";s:3:"wam";s:3:"218";s:3:" am";s:3:"219";s:3:"amf";s:3:"220";s:3:"bba";s:3:"221";s:3:"din";s:3:"222";s:3:"fan";s:3:"223";s:3:"gwa";s:3:"224";s:3:"i s";s:3:"225";s:3:"wat";s:3:"226";s:3:"ano";s:3:"227";s:3:"are";s:3:"228";s:3:"dai";s:3:"229";s:3:"iri";s:3:"230";s:3:"ma'";s:3:"231";s:3:" la";s:3:"232";s:3:"all";s:3:"233";s:3:"dam";s:3:"234";s:3:"ika";s:3:"235";s:3:"mi ";s:3:"236";s:3:"she";s:3:"237";s:3:"tum";s:3:"238";s:3:"uni";s:3:"239";s:3:" an";s:3:"240";s:3:" ai";s:3:"241";s:3:" ke";s:3:"242";s:3:" ki";s:3:"243";s:3:"dag";s:3:"244";s:3:"mai";s:3:"245";s:3:"mfa";s:3:"246";s:3:"no ";s:3:"247";s:3:"nsu";s:3:"248";s:3:"o d";s:3:"249";s:3:"sak";s:3:"250";s:3:"um ";s:3:"251";s:3:" bi";s:3:"252";s:3:" gw";s:3:"253";s:3:" kw";s:3:"254";s:3:"jam";s:3:"255";s:3:"yya";s:3:"256";s:3:"a j";s:3:"257";s:3:"fa ";s:3:"258";s:3:"uta";s:3:"259";s:3:" hu";s:3:"260";s:3:"'a ";s:3:"261";s:3:"ans";s:3:"262";s:4:"aÉ—a";s:3:"263";s:3:"dda";s:3:"264";s:3:"hin";s:3:"265";s:3:"niy";s:3:"266";s:3:"r s";s:3:"267";s:3:"bat";s:3:"268";s:3:"dar";s:3:"269";s:3:"gan";s:3:"270";s:3:"i t";s:3:"271";s:3:"nta";s:3:"272";s:3:"oki";s:3:"273";s:3:"omi";s:3:"274";s:3:"sal";s:3:"275";s:3:"a l";s:3:"276";s:3:"kac";s:3:"277";s:3:"lla";s:3:"278";s:3:"wad";s:3:"279";s:3:"war";s:3:"280";s:3:"amm";s:3:"281";s:3:"dom";s:3:"282";s:3:"r m";s:3:"283";s:3:"ras";s:3:"284";s:3:"sai";s:3:"285";s:3:" lo";s:3:"286";s:3:"ats";s:3:"287";s:3:"hal";s:3:"288";s:3:"kat";s:3:"289";s:3:"li ";s:3:"290";s:3:"lok";s:3:"291";s:3:"n c";s:3:"292";s:3:"nar";s:3:"293";s:3:"tin";s:3:"294";s:3:"afa";s:3:"295";s:3:"bub";s:3:"296";s:3:"i g";s:3:"297";s:3:"isa";s:3:"298";s:3:"mak";s:3:"299";}s:8:"hawaiian";a:300:{s:3:" ka";s:1:"0";s:3:"na ";s:1:"1";s:3:" o ";s:1:"2";s:3:"ka ";s:1:"3";s:3:" ma";s:1:"4";s:3:" a ";s:1:"5";s:3:" la";s:1:"6";s:3:"a i";s:1:"7";s:3:"a m";s:1:"8";s:3:" i ";s:1:"9";s:3:"la ";s:2:"10";s:3:"ana";s:2:"11";s:3:"ai ";s:2:"12";s:3:"ia ";s:2:"13";s:3:"a o";s:2:"14";s:3:"a k";s:2:"15";s:3:"a h";s:2:"16";s:3:"o k";s:2:"17";s:3:" ke";s:2:"18";s:3:"a a";s:2:"19";s:3:"i k";s:2:"20";s:3:" ho";s:2:"21";s:3:" ia";s:2:"22";s:3:"ua ";s:2:"23";s:3:" na";s:2:"24";s:3:" me";s:2:"25";s:3:"e k";s:2:"26";s:3:"e a";s:2:"27";s:3:"au ";s:2:"28";s:3:"ke ";s:2:"29";s:3:"ma ";s:2:"30";s:3:"mai";s:2:"31";s:3:"aku";s:2:"32";s:3:" ak";s:2:"33";s:3:"ahi";s:2:"34";s:3:" ha";s:2:"35";s:3:" ko";s:2:"36";s:3:" e ";s:2:"37";s:3:"a l";s:2:"38";s:3:" no";s:2:"39";s:3:"me ";s:2:"40";s:3:"ku ";s:2:"41";s:3:"aka";s:2:"42";s:3:"kan";s:2:"43";s:3:"no ";s:2:"44";s:3:"i a";s:2:"45";s:3:"ho ";s:2:"46";s:3:"ou ";s:2:"47";s:3:" ai";s:2:"48";s:3:"i o";s:2:"49";s:3:"a p";s:2:"50";s:3:"o l";s:2:"51";s:3:"o a";s:2:"52";s:3:"ama";s:2:"53";s:3:"a n";s:2:"54";s:3:" an";s:2:"55";s:3:"i m";s:2:"56";s:3:"han";s:2:"57";s:3:"i i";s:2:"58";s:3:"iho";s:2:"59";s:3:"kou";s:2:"60";s:3:"ne ";s:2:"61";s:3:" ih";s:2:"62";s:3:"o i";s:2:"63";s:3:"iki";s:2:"64";s:3:"ona";s:2:"65";s:3:"hoo";s:2:"66";s:3:"le ";s:2:"67";s:3:"e h";s:2:"68";s:3:" he";s:2:"69";s:3:"ina";s:2:"70";s:3:" wa";s:2:"71";s:3:"ea ";s:2:"72";s:3:"ako";s:2:"73";s:3:"u i";s:2:"74";s:3:"kah";s:2:"75";s:3:"oe ";s:2:"76";s:3:"i l";s:2:"77";s:3:"u a";s:2:"78";s:3:" pa";s:2:"79";s:3:"hoi";s:2:"80";s:3:"e i";s:2:"81";s:3:"era";s:2:"82";s:3:"ko ";s:2:"83";s:3:"u m";s:2:"84";s:3:"kua";s:2:"85";s:3:"mak";s:2:"86";s:3:"oi ";s:2:"87";s:3:"kai";s:2:"88";s:3:"i n";s:2:"89";s:3:"a e";s:2:"90";s:3:"hin";s:2:"91";s:3:"ane";s:2:"92";s:3:" ol";s:2:"93";s:3:"i h";s:2:"94";s:3:"mea";s:2:"95";s:3:"wah";s:2:"96";s:3:"lak";s:2:"97";s:3:"e m";s:2:"98";s:3:"o n";s:2:"99";s:3:"u l";s:3:"100";s:3:"ika";s:3:"101";s:3:"ki ";s:3:"102";s:3:"a w";s:3:"103";s:3:"mal";s:3:"104";s:3:"hi ";s:3:"105";s:3:"e n";s:3:"106";s:3:"u o";s:3:"107";s:3:"hik";s:3:"108";s:3:" ku";s:3:"109";s:3:"e l";s:3:"110";s:3:"ele";s:3:"111";s:3:"ra ";s:3:"112";s:3:"ber";s:3:"113";s:3:"ine";s:3:"114";s:3:"abe";s:3:"115";s:3:"ain";s:3:"116";s:3:"ala";s:3:"117";s:3:"lo ";s:3:"118";s:3:" po";s:3:"119";s:3:"kon";s:3:"120";s:3:" ab";s:3:"121";s:3:"ole";s:3:"122";s:3:"he ";s:3:"123";s:3:"pau";s:3:"124";s:3:"mah";s:3:"125";s:3:"va ";s:3:"126";s:3:"ela";s:3:"127";s:3:"kau";s:3:"128";s:3:"nak";s:3:"129";s:3:" oe";s:3:"130";s:3:"kei";s:3:"131";s:3:"oia";s:3:"132";s:3:" ie";s:3:"133";s:3:"ram";s:3:"134";s:3:" oi";s:3:"135";s:3:"oa ";s:3:"136";s:3:"eho";s:3:"137";s:3:"hov";s:3:"138";s:3:"ieh";s:3:"139";s:3:"ova";s:3:"140";s:3:" ua";s:3:"141";s:3:"una";s:3:"142";s:3:"ara";s:3:"143";s:3:"o s";s:3:"144";s:3:"awa";s:3:"145";s:3:"o o";s:3:"146";s:3:"nau";s:3:"147";s:3:"u n";s:3:"148";s:3:"wa ";s:3:"149";s:3:"wai";s:3:"150";s:3:"hel";s:3:"151";s:3:" ae";s:3:"152";s:3:" al";s:3:"153";s:3:"ae ";s:3:"154";s:3:"ta ";s:3:"155";s:3:"aik";s:3:"156";s:3:" hi";s:3:"157";s:3:"ale";s:3:"158";s:3:"ila";s:3:"159";s:3:"lel";s:3:"160";s:3:"ali";s:3:"161";s:3:"eik";s:3:"162";s:3:"olo";s:3:"163";s:3:"onu";s:3:"164";s:3:" lo";s:3:"165";s:3:"aua";s:3:"166";s:3:"e o";s:3:"167";s:3:"ola";s:3:"168";s:3:"hon";s:3:"169";s:3:"mam";s:3:"170";s:3:"nan";s:3:"171";s:3:" au";s:3:"172";s:3:"aha";s:3:"173";s:3:"lau";s:3:"174";s:3:"nua";s:3:"175";s:3:"oho";s:3:"176";s:3:"oma";s:3:"177";s:3:" ao";s:3:"178";s:3:"ii ";s:3:"179";s:3:"alu";s:3:"180";s:3:"ima";s:3:"181";s:3:"mau";s:3:"182";s:3:"ike";s:3:"183";s:3:"apa";s:3:"184";s:3:"elo";s:3:"185";s:3:"lii";s:3:"186";s:3:"poe";s:3:"187";s:3:"aia";s:3:"188";s:3:"noa";s:3:"189";s:3:" in";s:3:"190";s:3:"o m";s:3:"191";s:3:"oka";s:3:"192";s:3:"'u ";s:3:"193";s:3:"aho";s:3:"194";s:3:"ei ";s:3:"195";s:3:"eka";s:3:"196";s:3:"ha ";s:3:"197";s:3:"lu ";s:3:"198";s:3:"nei";s:3:"199";s:3:"hol";s:3:"200";s:3:"ino";s:3:"201";s:3:"o e";s:3:"202";s:3:"ema";s:3:"203";s:3:"iwa";s:3:"204";s:3:"olu";s:3:"205";s:3:"ada";s:3:"206";s:3:"naa";s:3:"207";s:3:"pa ";s:3:"208";s:3:"u k";s:3:"209";s:3:"ewa";s:3:"210";s:3:"hua";s:3:"211";s:3:"lam";s:3:"212";s:3:"lua";s:3:"213";s:3:"o h";s:3:"214";s:3:"ook";s:3:"215";s:3:"u h";s:3:"216";s:3:" li";s:3:"217";s:3:"ahu";s:3:"218";s:3:"amu";s:3:"219";s:3:"ui ";s:3:"220";s:3:" il";s:3:"221";s:3:" mo";s:3:"222";s:3:" se";s:3:"223";s:3:"eia";s:3:"224";s:3:"law";s:3:"225";s:3:" hu";s:3:"226";s:3:" ik";s:3:"227";s:3:"ail";s:3:"228";s:3:"e p";s:3:"229";s:3:"li ";s:3:"230";s:3:"lun";s:3:"231";s:3:"uli";s:3:"232";s:3:"io ";s:3:"233";s:3:"kik";s:3:"234";s:3:"noh";s:3:"235";s:3:"u e";s:3:"236";s:3:" sa";s:3:"237";s:3:"aaw";s:3:"238";s:3:"awe";s:3:"239";s:3:"ena";s:3:"240";s:3:"hal";s:3:"241";s:3:"kol";s:3:"242";s:3:"lan";s:3:"243";s:3:" le";s:3:"244";s:3:" ne";s:3:"245";s:3:"a'u";s:3:"246";s:3:"ilo";s:3:"247";s:3:"kap";s:3:"248";s:3:"oko";s:3:"249";s:3:"sa ";s:3:"250";s:3:" pe";s:3:"251";s:3:"hop";s:3:"252";s:3:"loa";s:3:"253";s:3:"ope";s:3:"254";s:3:"pe ";s:3:"255";s:3:" ad";s:3:"256";s:3:" pu";s:3:"257";s:3:"ahe";s:3:"258";s:3:"aol";s:3:"259";s:3:"ia'";s:3:"260";s:3:"lai";s:3:"261";s:3:"loh";s:3:"262";s:3:"na'";s:3:"263";s:3:"oom";s:3:"264";s:3:"aau";s:3:"265";s:3:"eri";s:3:"266";s:3:"kul";s:3:"267";s:3:"we ";s:3:"268";s:3:"ake";s:3:"269";s:3:"kek";s:3:"270";s:3:"laa";s:3:"271";s:3:"ri ";s:3:"272";s:3:"iku";s:3:"273";s:3:"kak";s:3:"274";s:3:"lim";s:3:"275";s:3:"nah";s:3:"276";s:3:"ner";s:3:"277";s:3:"nui";s:3:"278";s:3:"ono";s:3:"279";s:3:"a u";s:3:"280";s:3:"dam";s:3:"281";s:3:"kum";s:3:"282";s:3:"lok";s:3:"283";s:3:"mua";s:3:"284";s:3:"uma";s:3:"285";s:3:"wal";s:3:"286";s:3:"wi ";s:3:"287";s:3:"'i ";s:3:"288";s:3:"a'i";s:3:"289";s:3:"aan";s:3:"290";s:3:"alo";s:3:"291";s:3:"eta";s:3:"292";s:3:"mu ";s:3:"293";s:3:"ohe";s:3:"294";s:3:"u p";s:3:"295";s:3:"ula";s:3:"296";s:3:"uwa";s:3:"297";s:3:" nu";s:3:"298";s:3:"amo";s:3:"299";}s:5:"hindi";a:300:{s:7:"ें ";s:1:"0";s:7:" है";s:1:"1";s:9:"में";s:1:"2";s:7:" मे";s:1:"3";s:7:"ने ";s:1:"4";s:7:"की ";s:1:"5";s:7:"के ";s:1:"6";s:7:"है ";s:1:"7";s:7:" के";s:1:"8";s:7:" की";s:1:"9";s:7:" को";s:2:"10";s:7:"ों ";s:2:"11";s:7:"को ";s:2:"12";s:7:"ा ह";s:2:"13";s:7:" का";s:2:"14";s:7:"से ";s:2:"15";s:7:"ा क";s:2:"16";s:7:"े क";s:2:"17";s:7:"ं क";s:2:"18";s:7:"या ";s:2:"19";s:7:" कि";s:2:"20";s:7:" से";s:2:"21";s:7:"का ";s:2:"22";s:7:"ी क";s:2:"23";s:7:" ने";s:2:"24";s:7:" और";s:2:"25";s:7:"और ";s:2:"26";s:7:"ना ";s:2:"27";s:7:"कि ";s:2:"28";s:7:"भी ";s:2:"29";s:7:"ी स";s:2:"30";s:7:" जा";s:2:"31";s:7:" पर";s:2:"32";s:7:"ार ";s:2:"33";s:7:" कर";s:2:"34";s:7:"ी ह";s:2:"35";s:7:" हो";s:2:"36";s:7:"ही ";s:2:"37";s:9:"िया";s:2:"38";s:7:" इस";s:2:"39";s:7:" रह";s:2:"40";s:7:"र क";s:2:"41";s:9:"à¥à¤¨à¤¾";s:2:"42";s:7:"ता ";s:2:"43";s:7:"ान ";s:2:"44";s:7:"े स";s:2:"45";s:7:" भी";s:2:"46";s:7:" रा";s:2:"47";s:7:"े ह";s:2:"48";s:7:" चà¥";s:2:"49";s:7:" पा";s:2:"50";s:7:"पर ";s:2:"51";s:9:"चà¥à¤¨";s:2:"52";s:9:"नाव";s:2:"53";s:7:" कह";s:2:"54";s:9:"पà¥à¤°";s:2:"55";s:7:" भा";s:2:"56";s:9:"राज";s:2:"57";s:9:"हैं";s:2:"58";s:7:"ा स";s:2:"59";s:7:"ै क";s:2:"60";s:7:"ैं ";s:2:"61";s:7:"नी ";s:2:"62";s:7:"ल क";s:2:"63";s:7:"ीं ";s:2:"64";s:7:"़ी ";s:2:"65";s:7:"था ";s:2:"66";s:7:"री ";s:2:"67";s:7:"ाव ";s:2:"68";s:7:"े ब";s:2:"69";s:7:" पà¥";s:2:"70";s:9:"कà¥à¤·";s:2:"71";s:7:"पा ";s:2:"72";s:7:"ले ";s:2:"73";s:7:" दे";s:2:"74";s:7:"ला ";s:2:"75";s:7:"हा ";s:2:"76";s:9:"ाजप";s:2:"77";s:7:" था";s:2:"78";s:7:" नह";s:2:"79";s:7:"इस ";s:2:"80";s:7:"कर ";s:2:"81";s:9:"जपा";s:2:"82";s:9:"नही";s:2:"83";s:9:"भाज";s:2:"84";s:9:"यों";s:2:"85";s:7:"र स";s:2:"86";s:9:"हीं";s:2:"87";s:7:" अम";s:2:"88";s:7:" बा";s:2:"89";s:7:" मा";s:2:"90";s:7:" वि";s:2:"91";s:9:"रीक";s:2:"92";s:7:"िठ";s:2:"93";s:7:"े प";s:2:"94";s:9:"à¥à¤¯à¤¾";s:2:"95";s:7:" ही";s:2:"96";s:7:"ं म";s:2:"97";s:9:"कार";s:2:"98";s:7:"ा ज";s:2:"99";s:7:"े ल";s:3:"100";s:7:" ता";s:3:"101";s:7:" दि";s:3:"102";s:7:" सा";s:3:"103";s:7:" हम";s:3:"104";s:7:"ा न";s:3:"105";s:7:"ा म";s:3:"106";s:9:"ाक़";s:3:"107";s:9:"à¥à¤¤à¤¾";s:3:"108";s:7:" à¤à¤•";s:3:"109";s:7:" सं";s:3:"110";s:7:" सà¥";s:3:"111";s:9:"अमर";s:3:"112";s:9:"क़ी";s:3:"113";s:9:"ताज";s:3:"114";s:9:"मरी";s:3:"115";s:9:"सà¥à¤¥";s:3:"116";s:7:"ा थ";s:3:"117";s:9:"ारà¥";s:3:"118";s:7:" हà¥";s:3:"119";s:9:"इरा";s:3:"120";s:7:"à¤à¤• ";s:3:"121";s:7:"न क";s:3:"122";s:7:"र म";s:3:"123";s:9:"राक";s:3:"124";s:7:"ी ज";s:3:"125";s:7:"ी न";s:3:"126";s:7:" इर";s:3:"127";s:7:" उन";s:3:"128";s:7:" पह";s:3:"129";s:9:"कहा";s:3:"130";s:7:"ते ";s:3:"131";s:7:"े अ";s:3:"132";s:7:" तो";s:3:"133";s:7:" सà¥";s:3:"134";s:7:"ति ";s:3:"135";s:7:"ती ";s:3:"136";s:7:"तो ";s:3:"137";s:9:"मिल";s:3:"138";s:7:"िक ";s:3:"139";s:9:"ियो";s:3:"140";s:9:"à¥à¤°à¥‡";s:3:"141";s:7:" अप";s:3:"142";s:7:" फ़";s:3:"143";s:7:" लि";s:3:"144";s:7:" लो";s:3:"145";s:7:" सम";s:3:"146";s:7:"म क";s:3:"147";s:9:"रà¥à¤Ÿ";s:3:"148";s:7:"हो ";s:3:"149";s:7:"ा च";s:3:"150";s:7:"ाई ";s:3:"151";s:9:"ाने";s:3:"152";s:7:"िन ";s:3:"153";s:7:"à¥à¤¯ ";s:3:"154";s:7:" उस";s:3:"155";s:7:" क़";s:3:"156";s:7:" सक";s:3:"157";s:7:" सै";s:3:"158";s:7:"ं प";s:3:"159";s:7:"ं ह";s:3:"160";s:7:"गी ";s:3:"161";s:7:"त क";s:3:"162";s:9:"मान";s:3:"163";s:7:"र न";s:3:"164";s:9:"षà¥à¤Ÿ";s:3:"165";s:7:"स क";s:3:"166";s:9:"सà¥à¤¤";s:3:"167";s:7:"ाठ";s:3:"168";s:7:"ी ब";s:3:"169";s:7:"ी म";s:3:"170";s:9:"à¥à¤°à¥€";s:3:"171";s:7:" दो";s:3:"172";s:7:" मि";s:3:"173";s:7:" मà¥";s:3:"174";s:7:" ले";s:3:"175";s:7:" शा";s:3:"176";s:7:"ं स";s:3:"177";s:9:"ज़ा";s:3:"178";s:9:"तà¥à¤°";s:3:"179";s:7:"थी ";s:3:"180";s:9:"लिà¤";s:3:"181";s:7:"सी ";s:3:"182";s:7:"़ा ";s:3:"183";s:9:"़ार";s:3:"184";s:9:"ांग";s:3:"185";s:7:"े द";s:3:"186";s:7:"े म";s:3:"187";s:7:"à¥à¤µ ";s:3:"188";s:7:" ना";s:3:"189";s:7:" बन";s:3:"190";s:9:"ंगà¥";s:3:"191";s:9:"कां";s:3:"192";s:7:"गा ";s:3:"193";s:9:"गà¥à¤°";s:3:"194";s:7:"जा ";s:3:"195";s:9:"जà¥à¤¯";s:3:"196";s:7:"दी ";s:3:"197";s:7:"न म";s:3:"198";s:9:"पार";s:3:"199";s:7:"भा ";s:3:"200";s:9:"रही";s:3:"201";s:7:"रे ";s:3:"202";s:9:"रेस";s:3:"203";s:7:"ली ";s:3:"204";s:9:"सभा";s:3:"205";s:7:"ा र";s:3:"206";s:7:"ाल ";s:3:"207";s:7:"ी अ";s:3:"208";s:9:"ीकी";s:3:"209";s:7:"े त";s:3:"210";s:7:"ेश ";s:3:"211";s:7:" अं";s:3:"212";s:7:" तक";s:3:"213";s:7:" या";s:3:"214";s:7:"ई ह";s:3:"215";s:9:"करन";s:3:"216";s:7:"तक ";s:3:"217";s:9:"देश";s:3:"218";s:9:"वरà¥";s:3:"219";s:9:"ाया";s:3:"220";s:7:"ी भ";s:3:"221";s:7:"ेस ";s:3:"222";s:7:"à¥à¤· ";s:3:"223";s:7:" गय";s:3:"224";s:7:" जि";s:3:"225";s:7:" थी";s:3:"226";s:7:" बड";s:3:"227";s:7:" यह";s:3:"228";s:7:" वा";s:3:"229";s:9:"ंतर";s:3:"230";s:9:"अंत";s:3:"231";s:7:"क़ ";s:3:"232";s:9:"गया";s:3:"233";s:7:"टी ";s:3:"234";s:9:"निक";s:3:"235";s:9:"नà¥à¤¹";s:3:"236";s:9:"पहल";s:3:"237";s:9:"बड़";s:3:"238";s:9:"मार";s:3:"239";s:7:"र प";s:3:"240";s:9:"रने";s:3:"241";s:9:"ाज़";s:3:"242";s:7:"ि इ";s:3:"243";s:7:"ी र";s:3:"244";s:7:"े ज";s:3:"245";s:7:"े व";s:3:"246";s:7:"à¥à¤Ÿ ";s:3:"247";s:9:"à¥à¤Ÿà¥€";s:3:"248";s:7:" अब";s:3:"249";s:7:" लग";s:3:"250";s:7:" वर";s:3:"251";s:7:" सी";s:3:"252";s:7:"ं भ";s:3:"253";s:9:"उनà¥";s:3:"254";s:7:"क क";s:3:"255";s:9:"किय";s:3:"256";s:9:"देख";s:3:"257";s:9:"पूर";s:3:"258";s:9:"फ़à¥";s:3:"259";s:7:"यह ";s:3:"260";s:9:"यान";s:3:"261";s:9:"रिक";s:3:"262";s:9:"रिय";s:3:"263";s:9:"रà¥à¤¡";s:3:"264";s:9:"लेक";s:3:"265";s:9:"सकत";s:3:"266";s:9:"हों";s:3:"267";s:9:"होग";s:3:"268";s:7:"ा अ";s:3:"269";s:7:"ा द";s:3:"270";s:7:"ा प";s:3:"271";s:7:"ाद ";s:3:"272";s:9:"ारा";s:3:"273";s:7:"ित ";s:3:"274";s:7:"ी त";s:3:"275";s:7:"ी प";s:3:"276";s:7:"ो क";s:3:"277";s:7:"ो द";s:3:"278";s:7:" ते";s:3:"279";s:7:" नि";s:3:"280";s:7:" सर";s:3:"281";s:7:" हा";s:3:"282";s:7:"ं द";s:3:"283";s:9:"अपन";s:3:"284";s:9:"जान";s:3:"285";s:7:"त म";s:3:"286";s:9:"थित";s:3:"287";s:9:"पनी";s:3:"288";s:9:"महल";s:3:"289";s:7:"र ह";s:3:"290";s:9:"लोग";s:3:"291";s:7:"व क";s:3:"292";s:9:"हना";s:3:"293";s:7:"हल ";s:3:"294";s:9:"हाà¤";s:3:"295";s:9:"ाजà¥";s:3:"296";s:9:"ाना";s:3:"297";s:9:"िकà¥";s:3:"298";s:9:"िसà¥";s:3:"299";}s:9:"hungarian";a:300:{s:3:" a ";s:1:"0";s:3:" az";s:1:"1";s:3:" sz";s:1:"2";s:3:"az ";s:1:"3";s:3:" me";s:1:"4";s:3:"en ";s:1:"5";s:3:" el";s:1:"6";s:3:" ho";s:1:"7";s:3:"ek ";s:1:"8";s:3:"gy ";s:1:"9";s:3:"tt ";s:2:"10";s:3:"ett";s:2:"11";s:3:"sze";s:2:"12";s:3:" fe";s:2:"13";s:4:"és ";s:2:"14";s:3:" ki";s:2:"15";s:3:"tet";s:2:"16";s:3:" be";s:2:"17";s:3:"et ";s:2:"18";s:3:"ter";s:2:"19";s:4:" kö";s:2:"20";s:4:" és";s:2:"21";s:3:"hog";s:2:"22";s:3:"meg";s:2:"23";s:3:"ogy";s:2:"24";s:3:"szt";s:2:"25";s:3:"te ";s:2:"26";s:3:"t a";s:2:"27";s:3:"zet";s:2:"28";s:3:"a m";s:2:"29";s:3:"nek";s:2:"30";s:3:"nt ";s:2:"31";s:4:"ség";s:2:"32";s:4:"szá";s:2:"33";s:3:"ak ";s:2:"34";s:3:" va";s:2:"35";s:3:"an ";s:2:"36";s:3:"eze";s:2:"37";s:3:"ra ";s:2:"38";s:3:"ta ";s:2:"39";s:3:" mi";s:2:"40";s:3:"int";s:2:"41";s:4:"köz";s:2:"42";s:3:" is";s:2:"43";s:3:"esz";s:2:"44";s:3:"fel";s:2:"45";s:3:"min";s:2:"46";s:3:"nak";s:2:"47";s:3:"ors";s:2:"48";s:3:"zer";s:2:"49";s:3:" te";s:2:"50";s:3:"a a";s:2:"51";s:3:"a k";s:2:"52";s:3:"is ";s:2:"53";s:3:" cs";s:2:"54";s:3:"ele";s:2:"55";s:3:"er ";s:2:"56";s:3:"men";s:2:"57";s:3:"si ";s:2:"58";s:3:"tek";s:2:"59";s:3:"ti ";s:2:"60";s:3:" ne";s:2:"61";s:3:"csa";s:2:"62";s:3:"ent";s:2:"63";s:3:"z e";s:2:"64";s:3:"a t";s:2:"65";s:3:"ala";s:2:"66";s:3:"ere";s:2:"67";s:3:"es ";s:2:"68";s:3:"lom";s:2:"69";s:3:"lte";s:2:"70";s:3:"mon";s:2:"71";s:3:"ond";s:2:"72";s:3:"rsz";s:2:"73";s:3:"sza";s:2:"74";s:3:"tte";s:2:"75";s:4:"zág";s:2:"76";s:4:"ány";s:2:"77";s:3:" fo";s:2:"78";s:3:" ma";s:2:"79";s:3:"ai ";s:2:"80";s:3:"ben";s:2:"81";s:3:"el ";s:2:"82";s:3:"ene";s:2:"83";s:3:"ik ";s:2:"84";s:3:"jel";s:2:"85";s:4:"tás";s:2:"86";s:4:"áll";s:2:"87";s:3:" ha";s:2:"88";s:3:" le";s:2:"89";s:4:" ál";s:2:"90";s:3:"agy";s:2:"91";s:4:"alá";s:2:"92";s:3:"isz";s:2:"93";s:3:"y a";s:2:"94";s:3:"zte";s:2:"95";s:4:"ás ";s:2:"96";s:3:" al";s:2:"97";s:3:"e a";s:2:"98";s:3:"egy";s:2:"99";s:3:"ely";s:3:"100";s:3:"for";s:3:"101";s:3:"lat";s:3:"102";s:3:"lt ";s:3:"103";s:3:"n a";s:3:"104";s:3:"oga";s:3:"105";s:3:"on ";s:3:"106";s:3:"re ";s:3:"107";s:3:"st ";s:3:"108";s:4:"ság";s:3:"109";s:3:"t m";s:3:"110";s:4:"án ";s:3:"111";s:4:"ét ";s:3:"112";s:4:"ült";s:3:"113";s:3:" je";s:3:"114";s:3:"gi ";s:3:"115";s:3:"k a";s:3:"116";s:4:"kül";s:3:"117";s:3:"lam";s:3:"118";s:3:"len";s:3:"119";s:4:"lás";s:3:"120";s:4:"más";s:3:"121";s:3:"s k";s:3:"122";s:3:"vez";s:3:"123";s:4:"áso";s:3:"124";s:5:"özö";s:3:"125";s:3:" ta";s:3:"126";s:3:"a s";s:3:"127";s:3:"a v";s:3:"128";s:3:"asz";s:3:"129";s:4:"atá";s:3:"130";s:4:"etÅ‘";s:3:"131";s:3:"kez";s:3:"132";s:3:"let";s:3:"133";s:3:"mag";s:3:"134";s:3:"nem";s:3:"135";s:4:"szé";s:3:"136";s:3:"z m";s:3:"137";s:4:"át ";s:3:"138";s:4:"éte";s:3:"139";s:4:"ölt";s:3:"140";s:3:" de";s:3:"141";s:3:" gy";s:3:"142";s:4:" ké";s:3:"143";s:3:" mo";s:3:"144";s:4:" vá";s:3:"145";s:4:" ér";s:3:"146";s:3:"a b";s:3:"147";s:3:"a f";s:3:"148";s:3:"ami";s:3:"149";s:3:"at ";s:3:"150";s:3:"ato";s:3:"151";s:3:"att";s:3:"152";s:3:"bef";s:3:"153";s:3:"dta";s:3:"154";s:3:"gya";s:3:"155";s:3:"hat";s:3:"156";s:3:"i s";s:3:"157";s:3:"las";s:3:"158";s:3:"ndt";s:3:"159";s:3:"rt ";s:3:"160";s:3:"szo";s:3:"161";s:3:"t k";s:3:"162";s:4:"tár";s:3:"163";s:4:"tés";s:3:"164";s:3:"van";s:3:"165";s:5:"ásá";s:3:"166";s:4:"ól ";s:3:"167";s:4:" bé";s:3:"168";s:3:" eg";s:3:"169";s:3:" or";s:3:"170";s:4:" pá";s:3:"171";s:4:" pé";s:3:"172";s:3:" ve";s:3:"173";s:3:"ban";s:3:"174";s:3:"eke";s:3:"175";s:4:"ekü";s:3:"176";s:4:"elÅ‘";s:3:"177";s:3:"erv";s:3:"178";s:3:"ete";s:3:"179";s:3:"fog";s:3:"180";s:3:"i a";s:3:"181";s:3:"kis";s:3:"182";s:4:"lád";s:3:"183";s:3:"nte";s:3:"184";s:3:"nye";s:3:"185";s:3:"nyi";s:3:"186";s:3:"ok ";s:3:"187";s:4:"omá";s:3:"188";s:3:"os ";s:3:"189";s:4:"rán";s:3:"190";s:4:"rás";s:3:"191";s:3:"sal";s:3:"192";s:3:"t e";s:3:"193";s:4:"vál";s:3:"194";s:3:"yar";s:3:"195";s:4:"ágo";s:3:"196";s:4:"ála";s:3:"197";s:4:"ége";s:3:"198";s:4:"ény";s:3:"199";s:4:"ött";s:3:"200";s:4:" tá";s:3:"201";s:4:"adó";s:3:"202";s:3:"elh";s:3:"203";s:3:"fej";s:3:"204";s:3:"het";s:3:"205";s:3:"hoz";s:3:"206";s:3:"ill";s:3:"207";s:4:"jár";s:3:"208";s:4:"kés";s:3:"209";s:3:"llo";s:3:"210";s:3:"mi ";s:3:"211";s:3:"ny ";s:3:"212";s:3:"ont";s:3:"213";s:3:"ren";s:3:"214";s:3:"res";s:3:"215";s:3:"rin";s:3:"216";s:3:"s a";s:3:"217";s:3:"s e";s:3:"218";s:3:"ssz";s:3:"219";s:3:"zt ";s:3:"220";s:3:" ez";s:3:"221";s:3:" ka";s:3:"222";s:3:" ke";s:3:"223";s:3:" ko";s:3:"224";s:3:" re";s:3:"225";s:3:"a h";s:3:"226";s:3:"a n";s:3:"227";s:3:"den";s:3:"228";s:4:"dó ";s:3:"229";s:3:"efo";s:3:"230";s:3:"gad";s:3:"231";s:3:"gat";s:3:"232";s:3:"gye";s:3:"233";s:3:"hel";s:3:"234";s:3:"k e";s:3:"235";s:3:"ket";s:3:"236";s:3:"les";s:3:"237";s:4:"mán";s:3:"238";s:3:"nde";s:3:"239";s:3:"nis";s:3:"240";s:3:"ozz";s:3:"241";s:3:"t b";s:3:"242";s:3:"t i";s:3:"243";s:4:"t é";s:3:"244";s:3:"tat";s:3:"245";s:3:"tos";s:3:"246";s:3:"val";s:3:"247";s:3:"z o";s:3:"248";s:3:"zak";s:3:"249";s:4:"ád ";s:3:"250";s:4:"ály";s:3:"251";s:4:"ára";s:3:"252";s:4:"ési";s:3:"253";s:4:"ész";s:3:"254";s:3:" ak";s:3:"255";s:3:" am";s:3:"256";s:3:" es";s:3:"257";s:4:" há";s:3:"258";s:3:" ny";s:3:"259";s:4:" tö";s:3:"260";s:3:"aka";s:3:"261";s:3:"art";s:3:"262";s:4:"ató";s:3:"263";s:3:"azt";s:3:"264";s:3:"bbe";s:3:"265";s:3:"ber";s:3:"266";s:4:"ció";s:3:"267";s:3:"cso";s:3:"268";s:3:"em ";s:3:"269";s:3:"eti";s:3:"270";s:4:"eté";s:3:"271";s:3:"gal";s:3:"272";s:3:"i t";s:3:"273";s:3:"ini";s:3:"274";s:3:"ist";s:3:"275";s:3:"ja ";s:3:"276";s:3:"ker";s:3:"277";s:3:"ki ";s:3:"278";s:3:"kor";s:3:"279";s:3:"koz";s:3:"280";s:4:"l é";s:3:"281";s:4:"ljá";s:3:"282";s:3:"lye";s:3:"283";s:3:"n v";s:3:"284";s:3:"ni ";s:3:"285";s:4:"pál";s:3:"286";s:3:"ror";s:3:"287";s:4:"ról";s:3:"288";s:4:"rül";s:3:"289";s:3:"s c";s:3:"290";s:3:"s p";s:3:"291";s:3:"s s";s:3:"292";s:3:"s v";s:3:"293";s:3:"sok";s:3:"294";s:3:"t j";s:3:"295";s:3:"t t";s:3:"296";s:3:"tar";s:3:"297";s:3:"tel";s:3:"298";s:3:"vat";s:3:"299";}s:9:"icelandic";a:300:{s:4:"að ";s:1:"0";s:3:"um ";s:1:"1";s:4:" að";s:1:"2";s:3:"ir ";s:1:"3";s:4:"ið ";s:1:"4";s:3:"ur ";s:1:"5";s:3:" ve";s:1:"6";s:4:" í ";s:1:"7";s:3:"na ";s:1:"8";s:4:" á ";s:1:"9";s:3:" se";s:2:"10";s:3:" er";s:2:"11";s:3:" og";s:2:"12";s:3:"ar ";s:2:"13";s:3:"og ";s:2:"14";s:3:"ver";s:2:"15";s:3:" mi";s:2:"16";s:3:"inn";s:2:"17";s:3:"nn ";s:2:"18";s:3:" fy";s:2:"19";s:3:"er ";s:2:"20";s:3:"fyr";s:2:"21";s:3:" ek";s:2:"22";s:3:" en";s:2:"23";s:3:" ha";s:2:"24";s:3:" he";s:2:"25";s:3:"ekk";s:2:"26";s:3:" st";s:2:"27";s:3:"ki ";s:2:"28";s:3:"st ";s:2:"29";s:4:"ði ";s:2:"30";s:3:" ba";s:2:"31";s:3:" me";s:2:"32";s:3:" vi";s:2:"33";s:3:"ig ";s:2:"34";s:3:"rir";s:2:"35";s:3:"yri";s:2:"36";s:3:" um";s:2:"37";s:3:"g f";s:2:"38";s:3:"leg";s:2:"39";s:3:"lei";s:2:"40";s:3:"ns ";s:2:"41";s:4:"ð s";s:2:"42";s:3:" ei";s:2:"43";s:4:" þa";s:2:"44";s:3:"in ";s:2:"45";s:3:"kki";s:2:"46";s:3:"r h";s:2:"47";s:3:"r s";s:2:"48";s:3:"egi";s:2:"49";s:3:"ein";s:2:"50";s:3:"ga ";s:2:"51";s:3:"ing";s:2:"52";s:3:"ra ";s:2:"53";s:3:"sta";s:2:"54";s:3:" va";s:2:"55";s:4:" þe";s:2:"56";s:3:"ann";s:2:"57";s:3:"en ";s:2:"58";s:3:"mil";s:2:"59";s:3:"sem";s:2:"60";s:4:"tjó";s:2:"61";s:4:"arð";s:2:"62";s:3:"di ";s:2:"63";s:3:"eit";s:2:"64";s:3:"haf";s:2:"65";s:3:"ill";s:2:"66";s:3:"ins";s:2:"67";s:3:"ist";s:2:"68";s:3:"llj";s:2:"69";s:3:"ndi";s:2:"70";s:3:"r a";s:2:"71";s:3:"r e";s:2:"72";s:3:"seg";s:2:"73";s:3:"un ";s:2:"74";s:3:"var";s:2:"75";s:3:" bi";s:2:"76";s:3:" el";s:2:"77";s:3:" fo";s:2:"78";s:3:" ge";s:2:"79";s:3:" yf";s:2:"80";s:3:"and";s:2:"81";s:3:"aug";s:2:"82";s:3:"bau";s:2:"83";s:3:"big";s:2:"84";s:3:"ega";s:2:"85";s:3:"eld";s:2:"86";s:4:"erð";s:2:"87";s:3:"fir";s:2:"88";s:3:"foo";s:2:"89";s:3:"gin";s:2:"90";s:3:"itt";s:2:"91";s:3:"n s";s:2:"92";s:3:"ngi";s:2:"93";s:3:"num";s:2:"94";s:3:"od ";s:2:"95";s:3:"ood";s:2:"96";s:3:"sin";s:2:"97";s:3:"ta ";s:2:"98";s:3:"tt ";s:2:"99";s:4:"við";s:3:"100";s:3:"yfi";s:3:"101";s:4:"ð e";s:3:"102";s:4:"ð f";s:3:"103";s:3:" hr";s:3:"104";s:4:" sé";s:3:"105";s:4:" þv";s:3:"106";s:3:"a e";s:3:"107";s:4:"a á";s:3:"108";s:3:"em ";s:3:"109";s:3:"gi ";s:3:"110";s:3:"i f";s:3:"111";s:3:"jar";s:3:"112";s:4:"jór";s:3:"113";s:3:"lja";s:3:"114";s:3:"m e";s:3:"115";s:4:"r á";s:3:"116";s:3:"rei";s:3:"117";s:3:"rst";s:3:"118";s:4:"rða";s:3:"119";s:4:"rði";s:3:"120";s:4:"rðu";s:3:"121";s:3:"stj";s:3:"122";s:3:"und";s:3:"123";s:3:"veg";s:3:"124";s:4:"ví ";s:3:"125";s:4:"ð v";s:3:"126";s:5:"það";s:3:"127";s:5:"því";s:3:"128";s:3:" fj";s:3:"129";s:3:" ko";s:3:"130";s:3:" sl";s:3:"131";s:3:"eik";s:3:"132";s:3:"end";s:3:"133";s:3:"ert";s:3:"134";s:3:"ess";s:3:"135";s:4:"fjá";s:3:"136";s:3:"fur";s:3:"137";s:3:"gir";s:3:"138";s:4:"hús";s:3:"139";s:4:"jár";s:3:"140";s:3:"n e";s:3:"141";s:3:"ri ";s:3:"142";s:3:"tar";s:3:"143";s:5:"ð þ";s:3:"144";s:4:"ðar";s:3:"145";s:4:"ður";s:3:"146";s:4:"þes";s:3:"147";s:3:" br";s:3:"148";s:4:" hú";s:3:"149";s:3:" kr";s:3:"150";s:3:" le";s:3:"151";s:3:" up";s:3:"152";s:3:"a s";s:3:"153";s:3:"egg";s:3:"154";s:3:"i s";s:3:"155";s:3:"irt";s:3:"156";s:3:"ja ";s:3:"157";s:4:"kið";s:3:"158";s:3:"len";s:3:"159";s:4:"með";s:3:"160";s:3:"mik";s:3:"161";s:3:"n b";s:3:"162";s:3:"nar";s:3:"163";s:3:"nir";s:3:"164";s:3:"nun";s:3:"165";s:3:"r f";s:3:"166";s:3:"r v";s:3:"167";s:4:"rið";s:3:"168";s:3:"rt ";s:3:"169";s:3:"sti";s:3:"170";s:3:"t v";s:3:"171";s:3:"ti ";s:3:"172";s:3:"una";s:3:"173";s:3:"upp";s:3:"174";s:4:"ða ";s:3:"175";s:4:"óna";s:3:"176";s:3:" al";s:3:"177";s:3:" fr";s:3:"178";s:3:" gr";s:3:"179";s:3:"a v";s:3:"180";s:3:"all";s:3:"181";s:3:"an ";s:3:"182";s:3:"da ";s:3:"183";s:4:"eið";s:3:"184";s:4:"eð ";s:3:"185";s:3:"fa ";s:3:"186";s:3:"fra";s:3:"187";s:3:"g e";s:3:"188";s:3:"ger";s:3:"189";s:4:"gið";s:3:"190";s:3:"gt ";s:3:"191";s:3:"han";s:3:"192";s:3:"hef";s:3:"193";s:3:"hel";s:3:"194";s:3:"her";s:3:"195";s:3:"hra";s:3:"196";s:3:"i a";s:3:"197";s:3:"i e";s:3:"198";s:3:"i v";s:3:"199";s:4:"i þ";s:3:"200";s:3:"iki";s:3:"201";s:4:"jón";s:3:"202";s:4:"jör";s:3:"203";s:3:"ka ";s:3:"204";s:4:"kró";s:3:"205";s:4:"lík";s:3:"206";s:3:"m h";s:3:"207";s:3:"n a";s:3:"208";s:3:"nga";s:3:"209";s:3:"r l";s:3:"210";s:3:"ram";s:3:"211";s:3:"ru ";s:3:"212";s:5:"ráð";s:3:"213";s:4:"rón";s:3:"214";s:3:"svo";s:3:"215";s:3:"vin";s:3:"216";s:4:"í b";s:3:"217";s:4:"í h";s:3:"218";s:4:"ð h";s:3:"219";s:4:"ð k";s:3:"220";s:4:"ð m";s:3:"221";s:5:"örð";s:3:"222";s:3:" af";s:3:"223";s:3:" fa";s:3:"224";s:4:" lí";s:3:"225";s:4:" rá";s:3:"226";s:3:" sk";s:3:"227";s:3:" sv";s:3:"228";s:3:" te";s:3:"229";s:3:"a b";s:3:"230";s:3:"a f";s:3:"231";s:3:"a h";s:3:"232";s:3:"a k";s:3:"233";s:3:"a u";s:3:"234";s:3:"afi";s:3:"235";s:3:"agn";s:3:"236";s:3:"arn";s:3:"237";s:3:"ast";s:3:"238";s:3:"ber";s:3:"239";s:3:"efu";s:3:"240";s:3:"enn";s:3:"241";s:3:"erb";s:3:"242";s:3:"erg";s:3:"243";s:3:"fi ";s:3:"244";s:3:"g a";s:3:"245";s:3:"gar";s:3:"246";s:4:"iðs";s:3:"247";s:3:"ker";s:3:"248";s:3:"kke";s:3:"249";s:3:"lan";s:3:"250";s:4:"ljó";s:3:"251";s:3:"llt";s:3:"252";s:3:"ma ";s:3:"253";s:4:"mið";s:3:"254";s:3:"n v";s:3:"255";s:4:"n í";s:3:"256";s:3:"nan";s:3:"257";s:3:"nda";s:3:"258";s:3:"ndu";s:3:"259";s:4:"nið";s:3:"260";s:3:"nna";s:3:"261";s:3:"nnu";s:3:"262";s:3:"nu ";s:3:"263";s:3:"r o";s:3:"264";s:3:"rbe";s:3:"265";s:3:"rgi";s:3:"266";s:4:"slö";s:3:"267";s:4:"sé ";s:3:"268";s:3:"t a";s:3:"269";s:3:"t h";s:3:"270";s:3:"til";s:3:"271";s:3:"tin";s:3:"272";s:3:"ugu";s:3:"273";s:3:"vil";s:3:"274";s:3:"ygg";s:3:"275";s:4:"á s";s:3:"276";s:4:"ð a";s:3:"277";s:4:"ð b";s:3:"278";s:4:"órn";s:3:"279";s:4:"ögn";s:3:"280";s:4:"öku";s:3:"281";s:3:" at";s:3:"282";s:3:" fi";s:3:"283";s:4:" fé";s:3:"284";s:3:" ka";s:3:"285";s:3:" ma";s:3:"286";s:3:" no";s:3:"287";s:3:" sa";s:3:"288";s:3:" si";s:3:"289";s:3:" ti";s:3:"290";s:4:" ák";s:3:"291";s:3:"a m";s:3:"292";s:3:"a t";s:3:"293";s:4:"a í";s:3:"294";s:4:"a þ";s:3:"295";s:3:"afa";s:3:"296";s:3:"afs";s:3:"297";s:3:"ald";s:3:"298";s:3:"arf";s:3:"299";}s:10:"indonesian";a:300:{s:3:"an ";s:1:"0";s:3:" me";s:1:"1";s:3:"kan";s:1:"2";s:3:"ang";s:1:"3";s:3:"ng ";s:1:"4";s:3:" pe";s:1:"5";s:3:"men";s:1:"6";s:3:" di";s:1:"7";s:3:" ke";s:1:"8";s:3:" da";s:1:"9";s:3:" se";s:2:"10";s:3:"eng";s:2:"11";s:3:" be";s:2:"12";s:3:"nga";s:2:"13";s:3:"nya";s:2:"14";s:3:" te";s:2:"15";s:3:"ah ";s:2:"16";s:3:"ber";s:2:"17";s:3:"aka";s:2:"18";s:3:" ya";s:2:"19";s:3:"dan";s:2:"20";s:3:"di ";s:2:"21";s:3:"yan";s:2:"22";s:3:"n p";s:2:"23";s:3:"per";s:2:"24";s:3:"a m";s:2:"25";s:3:"ita";s:2:"26";s:3:" pa";s:2:"27";s:3:"da ";s:2:"28";s:3:"ata";s:2:"29";s:3:"ada";s:2:"30";s:3:"ya ";s:2:"31";s:3:"ta ";s:2:"32";s:3:" in";s:2:"33";s:3:"ala";s:2:"34";s:3:"eri";s:2:"35";s:3:"ia ";s:2:"36";s:3:"a d";s:2:"37";s:3:"n k";s:2:"38";s:3:"am ";s:2:"39";s:3:"ga ";s:2:"40";s:3:"at ";s:2:"41";s:3:"era";s:2:"42";s:3:"n d";s:2:"43";s:3:"ter";s:2:"44";s:3:" ka";s:2:"45";s:3:"a p";s:2:"46";s:3:"ari";s:2:"47";s:3:"emb";s:2:"48";s:3:"n m";s:2:"49";s:3:"ri ";s:2:"50";s:3:" ba";s:2:"51";s:3:"aan";s:2:"52";s:3:"ak ";s:2:"53";s:3:"ra ";s:2:"54";s:3:" it";s:2:"55";s:3:"ara";s:2:"56";s:3:"ela";s:2:"57";s:3:"ni ";s:2:"58";s:3:"ali";s:2:"59";s:3:"ran";s:2:"60";s:3:"ar ";s:2:"61";s:3:"eru";s:2:"62";s:3:"lah";s:2:"63";s:3:"a b";s:2:"64";s:3:"asi";s:2:"65";s:3:"awa";s:2:"66";s:3:"eba";s:2:"67";s:3:"gan";s:2:"68";s:3:"n b";s:2:"69";s:3:" ha";s:2:"70";s:3:"ini";s:2:"71";s:3:"mer";s:2:"72";s:3:" la";s:2:"73";s:3:" mi";s:2:"74";s:3:"and";s:2:"75";s:3:"ena";s:2:"76";s:3:"wan";s:2:"77";s:3:" sa";s:2:"78";s:3:"aha";s:2:"79";s:3:"lam";s:2:"80";s:3:"n i";s:2:"81";s:3:"nda";s:2:"82";s:3:" wa";s:2:"83";s:3:"a i";s:2:"84";s:3:"dua";s:2:"85";s:3:"g m";s:2:"86";s:3:"mi ";s:2:"87";s:3:"n a";s:2:"88";s:3:"rus";s:2:"89";s:3:"tel";s:2:"90";s:3:"yak";s:2:"91";s:3:" an";s:2:"92";s:3:"dal";s:2:"93";s:3:"h d";s:2:"94";s:3:"i s";s:2:"95";s:3:"ing";s:2:"96";s:3:"min";s:2:"97";s:3:"ngg";s:2:"98";s:3:"tak";s:2:"99";s:3:"ami";s:3:"100";s:3:"beb";s:3:"101";s:3:"den";s:3:"102";s:3:"gat";s:3:"103";s:3:"ian";s:3:"104";s:3:"ih ";s:3:"105";s:3:"pad";s:3:"106";s:3:"rga";s:3:"107";s:3:"san";s:3:"108";s:3:"ua ";s:3:"109";s:3:" de";s:3:"110";s:3:"a t";s:3:"111";s:3:"arg";s:3:"112";s:3:"dar";s:3:"113";s:3:"elu";s:3:"114";s:3:"har";s:3:"115";s:3:"i k";s:3:"116";s:3:"i m";s:3:"117";s:3:"i p";s:3:"118";s:3:"ika";s:3:"119";s:3:"in ";s:3:"120";s:3:"iny";s:3:"121";s:3:"itu";s:3:"122";s:3:"mba";s:3:"123";s:3:"n t";s:3:"124";s:3:"ntu";s:3:"125";s:3:"pan";s:3:"126";s:3:"pen";s:3:"127";s:3:"sah";s:3:"128";s:3:"tan";s:3:"129";s:3:"tu ";s:3:"130";s:3:"a k";s:3:"131";s:3:"ban";s:3:"132";s:3:"edu";s:3:"133";s:3:"eka";s:3:"134";s:3:"g d";s:3:"135";s:3:"ka ";s:3:"136";s:3:"ker";s:3:"137";s:3:"nde";s:3:"138";s:3:"nta";s:3:"139";s:3:"ora";s:3:"140";s:3:"usa";s:3:"141";s:3:" du";s:3:"142";s:3:" ma";s:3:"143";s:3:"a s";s:3:"144";s:3:"ai ";s:3:"145";s:3:"ant";s:3:"146";s:3:"bas";s:3:"147";s:3:"end";s:3:"148";s:3:"i d";s:3:"149";s:3:"ira";s:3:"150";s:3:"kam";s:3:"151";s:3:"lan";s:3:"152";s:3:"n s";s:3:"153";s:3:"uli";s:3:"154";s:3:"al ";s:3:"155";s:3:"apa";s:3:"156";s:3:"ere";s:3:"157";s:3:"ert";s:3:"158";s:3:"lia";s:3:"159";s:3:"mem";s:3:"160";s:3:"rka";s:3:"161";s:3:"si ";s:3:"162";s:3:"tal";s:3:"163";s:3:"ung";s:3:"164";s:3:" ak";s:3:"165";s:3:"a a";s:3:"166";s:3:"a w";s:3:"167";s:3:"ani";s:3:"168";s:3:"ask";s:3:"169";s:3:"ent";s:3:"170";s:3:"gar";s:3:"171";s:3:"haa";s:3:"172";s:3:"i i";s:3:"173";s:3:"isa";s:3:"174";s:3:"ked";s:3:"175";s:3:"mbe";s:3:"176";s:3:"ska";s:3:"177";s:3:"tor";s:3:"178";s:3:"uan";s:3:"179";s:3:"uk ";s:3:"180";s:3:"uka";s:3:"181";s:3:" ad";s:3:"182";s:3:" to";s:3:"183";s:3:"asa";s:3:"184";s:3:"aya";s:3:"185";s:3:"bag";s:3:"186";s:3:"dia";s:3:"187";s:3:"dun";s:3:"188";s:3:"erj";s:3:"189";s:3:"mas";s:3:"190";s:3:"na ";s:3:"191";s:3:"rek";s:3:"192";s:3:"rit";s:3:"193";s:3:"sih";s:3:"194";s:3:"us ";s:3:"195";s:3:" bi";s:3:"196";s:3:"a h";s:3:"197";s:3:"ama";s:3:"198";s:3:"dib";s:3:"199";s:3:"ers";s:3:"200";s:3:"g s";s:3:"201";s:3:"han";s:3:"202";s:3:"ik ";s:3:"203";s:3:"kem";s:3:"204";s:3:"ma ";s:3:"205";s:3:"n l";s:3:"206";s:3:"nit";s:3:"207";s:3:"r b";s:3:"208";s:3:"rja";s:3:"209";s:3:"sa ";s:3:"210";s:3:" ju";s:3:"211";s:3:" or";s:3:"212";s:3:" si";s:3:"213";s:3:" ti";s:3:"214";s:3:"a y";s:3:"215";s:3:"aga";s:3:"216";s:3:"any";s:3:"217";s:3:"as ";s:3:"218";s:3:"cul";s:3:"219";s:3:"eme";s:3:"220";s:3:"emu";s:3:"221";s:3:"eny";s:3:"222";s:3:"epa";s:3:"223";s:3:"erb";s:3:"224";s:3:"erl";s:3:"225";s:3:"gi ";s:3:"226";s:3:"h m";s:3:"227";s:3:"i a";s:3:"228";s:3:"kel";s:3:"229";s:3:"li ";s:3:"230";s:3:"mel";s:3:"231";s:3:"nia";s:3:"232";s:3:"opa";s:3:"233";s:3:"rta";s:3:"234";s:3:"sia";s:3:"235";s:3:"tah";s:3:"236";s:3:"ula";s:3:"237";s:3:"un ";s:3:"238";s:3:"unt";s:3:"239";s:3:" at";s:3:"240";s:3:" bu";s:3:"241";s:3:" pu";s:3:"242";s:3:" ta";s:3:"243";s:3:"agi";s:3:"244";s:3:"alu";s:3:"245";s:3:"amb";s:3:"246";s:3:"bah";s:3:"247";s:3:"bis";s:3:"248";s:3:"er ";s:3:"249";s:3:"i t";s:3:"250";s:3:"ibe";s:3:"251";s:3:"ir ";s:3:"252";s:3:"ja ";s:3:"253";s:3:"k m";s:3:"254";s:3:"kar";s:3:"255";s:3:"lai";s:3:"256";s:3:"lal";s:3:"257";s:3:"lu ";s:3:"258";s:3:"mpa";s:3:"259";s:3:"ngk";s:3:"260";s:3:"nja";s:3:"261";s:3:"or ";s:3:"262";s:3:"pa ";s:3:"263";s:3:"pas";s:3:"264";s:3:"pem";s:3:"265";s:3:"rak";s:3:"266";s:3:"rik";s:3:"267";s:3:"seb";s:3:"268";s:3:"tam";s:3:"269";s:3:"tem";s:3:"270";s:3:"top";s:3:"271";s:3:"tuk";s:3:"272";s:3:"uni";s:3:"273";s:3:"war";s:3:"274";s:3:" al";s:3:"275";s:3:" ga";s:3:"276";s:3:" ge";s:3:"277";s:3:" ir";s:3:"278";s:3:" ja";s:3:"279";s:3:" mu";s:3:"280";s:3:" na";s:3:"281";s:3:" pr";s:3:"282";s:3:" su";s:3:"283";s:3:" un";s:3:"284";s:3:"ad ";s:3:"285";s:3:"adi";s:3:"286";s:3:"akt";s:3:"287";s:3:"ann";s:3:"288";s:3:"apo";s:3:"289";s:3:"bel";s:3:"290";s:3:"bul";s:3:"291";s:3:"der";s:3:"292";s:3:"ega";s:3:"293";s:3:"eke";s:3:"294";s:3:"ema";s:3:"295";s:3:"emp";s:3:"296";s:3:"ene";s:3:"297";s:3:"enj";s:3:"298";s:3:"esa";s:3:"299";}s:7:"italian";a:300:{s:3:" di";s:1:"0";s:3:"to ";s:1:"1";s:3:"la ";s:1:"2";s:3:" de";s:1:"3";s:3:"di ";s:1:"4";s:3:"no ";s:1:"5";s:3:" co";s:1:"6";s:3:"re ";s:1:"7";s:3:"ion";s:1:"8";s:3:"e d";s:1:"9";s:3:" e ";s:2:"10";s:3:"le ";s:2:"11";s:3:"del";s:2:"12";s:3:"ne ";s:2:"13";s:3:"ti ";s:2:"14";s:3:"ell";s:2:"15";s:3:" la";s:2:"16";s:3:" un";s:2:"17";s:3:"ni ";s:2:"18";s:3:"i d";s:2:"19";s:3:"per";s:2:"20";s:3:" pe";s:2:"21";s:3:"ent";s:2:"22";s:3:" in";s:2:"23";s:3:"one";s:2:"24";s:3:"he ";s:2:"25";s:3:"ta ";s:2:"26";s:3:"zio";s:2:"27";s:3:"che";s:2:"28";s:3:"o d";s:2:"29";s:3:"a d";s:2:"30";s:3:"na ";s:2:"31";s:3:"ato";s:2:"32";s:3:"e s";s:2:"33";s:3:" so";s:2:"34";s:3:"i s";s:2:"35";s:3:"lla";s:2:"36";s:3:"a p";s:2:"37";s:3:"li ";s:2:"38";s:3:"te ";s:2:"39";s:3:" al";s:2:"40";s:3:" ch";s:2:"41";s:3:"er ";s:2:"42";s:3:" pa";s:2:"43";s:3:" si";s:2:"44";s:3:"con";s:2:"45";s:3:"sta";s:2:"46";s:3:" pr";s:2:"47";s:3:"a c";s:2:"48";s:3:" se";s:2:"49";s:3:"el ";s:2:"50";s:3:"ia ";s:2:"51";s:3:"si ";s:2:"52";s:3:"e p";s:2:"53";s:3:" da";s:2:"54";s:3:"e i";s:2:"55";s:3:"i p";s:2:"56";s:3:"ont";s:2:"57";s:3:"ano";s:2:"58";s:3:"i c";s:2:"59";s:3:"all";s:2:"60";s:3:"azi";s:2:"61";s:3:"nte";s:2:"62";s:3:"on ";s:2:"63";s:3:"nti";s:2:"64";s:3:"o s";s:2:"65";s:3:" ri";s:2:"66";s:3:"i a";s:2:"67";s:3:"o a";s:2:"68";s:3:"un ";s:2:"69";s:3:" an";s:2:"70";s:3:"are";s:2:"71";s:3:"ari";s:2:"72";s:3:"e a";s:2:"73";s:3:"i e";s:2:"74";s:3:"ita";s:2:"75";s:3:"men";s:2:"76";s:3:"ri ";s:2:"77";s:3:" ca";s:2:"78";s:3:" il";s:2:"79";s:3:" no";s:2:"80";s:3:" po";s:2:"81";s:3:"a s";s:2:"82";s:3:"ant";s:2:"83";s:3:"il ";s:2:"84";s:3:"in ";s:2:"85";s:3:"a l";s:2:"86";s:3:"ati";s:2:"87";s:3:"cia";s:2:"88";s:3:"e c";s:2:"89";s:3:"ro ";s:2:"90";s:3:"ann";s:2:"91";s:3:"est";s:2:"92";s:3:"gli";s:2:"93";s:4:"tà ";s:2:"94";s:3:" qu";s:2:"95";s:3:"e l";s:2:"96";s:3:"nta";s:2:"97";s:3:" a ";s:2:"98";s:3:"com";s:2:"99";s:3:"o c";s:3:"100";s:3:"ra ";s:3:"101";s:3:" le";s:3:"102";s:3:" ne";s:3:"103";s:3:"ali";s:3:"104";s:3:"ere";s:3:"105";s:3:"ist";s:3:"106";s:3:" ma";s:3:"107";s:4:" è ";s:3:"108";s:3:"io ";s:3:"109";s:3:"lle";s:3:"110";s:3:"me ";s:3:"111";s:3:"era";s:3:"112";s:3:"ica";s:3:"113";s:3:"ost";s:3:"114";s:3:"pro";s:3:"115";s:3:"tar";s:3:"116";s:3:"una";s:3:"117";s:3:" pi";s:3:"118";s:3:"da ";s:3:"119";s:3:"tat";s:3:"120";s:3:" mi";s:3:"121";s:3:"att";s:3:"122";s:3:"ca ";s:3:"123";s:3:"mo ";s:3:"124";s:3:"non";s:3:"125";s:3:"par";s:3:"126";s:3:"sti";s:3:"127";s:3:" fa";s:3:"128";s:3:" i ";s:3:"129";s:3:" re";s:3:"130";s:3:" su";s:3:"131";s:3:"ess";s:3:"132";s:3:"ini";s:3:"133";s:3:"nto";s:3:"134";s:3:"o l";s:3:"135";s:3:"ssi";s:3:"136";s:3:"tto";s:3:"137";s:3:"a e";s:3:"138";s:3:"ame";s:3:"139";s:3:"col";s:3:"140";s:3:"ei ";s:3:"141";s:3:"ma ";s:3:"142";s:3:"o i";s:3:"143";s:3:"za ";s:3:"144";s:3:" st";s:3:"145";s:3:"a a";s:3:"146";s:3:"ale";s:3:"147";s:3:"anc";s:3:"148";s:3:"ani";s:3:"149";s:3:"i m";s:3:"150";s:3:"ian";s:3:"151";s:3:"o p";s:3:"152";s:3:"oni";s:3:"153";s:3:"sio";s:3:"154";s:3:"tan";s:3:"155";s:3:"tti";s:3:"156";s:3:" lo";s:3:"157";s:3:"i r";s:3:"158";s:3:"oci";s:3:"159";s:3:"oli";s:3:"160";s:3:"ona";s:3:"161";s:3:"ono";s:3:"162";s:3:"tra";s:3:"163";s:3:" l ";s:3:"164";s:3:"a r";s:3:"165";s:3:"eri";s:3:"166";s:3:"ett";s:3:"167";s:3:"lo ";s:3:"168";s:3:"nza";s:3:"169";s:3:"que";s:3:"170";s:3:"str";s:3:"171";s:3:"ter";s:3:"172";s:3:"tta";s:3:"173";s:3:" ba";s:3:"174";s:3:" li";s:3:"175";s:3:" te";s:3:"176";s:3:"ass";s:3:"177";s:3:"e f";s:3:"178";s:3:"enz";s:3:"179";s:3:"for";s:3:"180";s:3:"nno";s:3:"181";s:3:"olo";s:3:"182";s:3:"ori";s:3:"183";s:3:"res";s:3:"184";s:3:"tor";s:3:"185";s:3:" ci";s:3:"186";s:3:" vo";s:3:"187";s:3:"a i";s:3:"188";s:3:"al ";s:3:"189";s:3:"chi";s:3:"190";s:3:"e n";s:3:"191";s:3:"lia";s:3:"192";s:3:"pre";s:3:"193";s:3:"ria";s:3:"194";s:3:"uni";s:3:"195";s:3:"ver";s:3:"196";s:3:" sp";s:3:"197";s:3:"imo";s:3:"198";s:3:"l a";s:3:"199";s:3:"l c";s:3:"200";s:3:"ran";s:3:"201";s:3:"sen";s:3:"202";s:3:"soc";s:3:"203";s:3:"tic";s:3:"204";s:3:" fi";s:3:"205";s:3:" mo";s:3:"206";s:3:"a n";s:3:"207";s:3:"ce ";s:3:"208";s:3:"dei";s:3:"209";s:3:"ggi";s:3:"210";s:3:"gio";s:3:"211";s:3:"iti";s:3:"212";s:3:"l s";s:3:"213";s:3:"lit";s:3:"214";s:3:"ll ";s:3:"215";s:3:"mon";s:3:"216";s:3:"ola";s:3:"217";s:3:"pac";s:3:"218";s:3:"sim";s:3:"219";s:3:"tit";s:3:"220";s:3:"utt";s:3:"221";s:3:"vol";s:3:"222";s:3:" ar";s:3:"223";s:3:" fo";s:3:"224";s:3:" ha";s:3:"225";s:3:" sa";s:3:"226";s:3:"acc";s:3:"227";s:3:"e r";s:3:"228";s:3:"ire";s:3:"229";s:3:"man";s:3:"230";s:3:"ntr";s:3:"231";s:3:"rat";s:3:"232";s:3:"sco";s:3:"233";s:3:"tro";s:3:"234";s:3:"tut";s:3:"235";s:3:"va ";s:3:"236";s:3:" do";s:3:"237";s:3:" gi";s:3:"238";s:3:" me";s:3:"239";s:3:" sc";s:3:"240";s:3:" tu";s:3:"241";s:3:" ve";s:3:"242";s:3:" vi";s:3:"243";s:3:"a m";s:3:"244";s:3:"ber";s:3:"245";s:3:"can";s:3:"246";s:3:"cit";s:3:"247";s:3:"i l";s:3:"248";s:3:"ier";s:3:"249";s:4:"ità";s:3:"250";s:3:"lli";s:3:"251";s:3:"min";s:3:"252";s:3:"n p";s:3:"253";s:3:"nat";s:3:"254";s:3:"nda";s:3:"255";s:3:"o e";s:3:"256";s:3:"o f";s:3:"257";s:3:"o u";s:3:"258";s:3:"ore";s:3:"259";s:3:"oro";s:3:"260";s:3:"ort";s:3:"261";s:3:"sto";s:3:"262";s:3:"ten";s:3:"263";s:3:"tiv";s:3:"264";s:3:"van";s:3:"265";s:3:"art";s:3:"266";s:3:"cco";s:3:"267";s:3:"ci ";s:3:"268";s:3:"cos";s:3:"269";s:3:"dal";s:3:"270";s:3:"e v";s:3:"271";s:3:"i i";s:3:"272";s:3:"ila";s:3:"273";s:3:"ino";s:3:"274";s:3:"l p";s:3:"275";s:3:"n c";s:3:"276";s:3:"nit";s:3:"277";s:3:"ole";s:3:"278";s:3:"ome";s:3:"279";s:3:"po ";s:3:"280";s:3:"rio";s:3:"281";s:3:"sa ";s:3:"282";s:3:" ce";s:3:"283";s:3:" es";s:3:"284";s:3:" tr";s:3:"285";s:3:"a b";s:3:"286";s:3:"and";s:3:"287";s:3:"ata";s:3:"288";s:3:"der";s:3:"289";s:3:"ens";s:3:"290";s:3:"ers";s:3:"291";s:3:"gi ";s:3:"292";s:3:"ial";s:3:"293";s:3:"ina";s:3:"294";s:3:"itt";s:3:"295";s:3:"izi";s:3:"296";s:3:"lan";s:3:"297";s:3:"lor";s:3:"298";s:3:"mil";s:3:"299";}s:6:"kazakh";a:300:{s:5:"ан ";s:1:"0";s:5:"ен ";s:1:"1";s:5:"ың ";s:1:"2";s:5:" қа";s:1:"3";s:5:" ба";s:1:"4";s:5:"ай ";s:1:"5";s:6:"нда";s:1:"6";s:5:"ын ";s:1:"7";s:5:" Ñа";s:1:"8";s:5:" ал";s:1:"9";s:5:"ді ";s:2:"10";s:6:"ары";s:2:"11";s:5:"ды ";s:2:"12";s:5:"ып ";s:2:"13";s:5:" мұ";s:2:"14";s:5:" бі";s:2:"15";s:6:"аÑÑ‹";s:2:"16";s:5:"да ";s:2:"17";s:6:"най";s:2:"18";s:5:" жа";s:2:"19";s:6:"мұн";s:2:"20";s:6:"Ñта";s:2:"21";s:6:"ған";s:2:"22";s:5:"н б";s:2:"23";s:6:"ұна";s:2:"24";s:5:" бо";s:2:"25";s:6:"ның";s:2:"26";s:5:"ін ";s:2:"27";s:6:"лар";s:2:"28";s:6:"Ñын";s:2:"29";s:5:" де";s:2:"30";s:6:"аға";s:2:"31";s:6:"тан";s:2:"32";s:5:" кө";s:2:"33";s:6:"бір";s:2:"34";s:5:"ер ";s:2:"35";s:6:"мен";s:2:"36";s:6:"аза";s:2:"37";s:6:"ынд";s:2:"38";s:6:"ыны";s:2:"39";s:5:" ме";s:2:"40";s:6:"анд";s:2:"41";s:6:"ері";s:2:"42";s:6:"бол";s:2:"43";s:6:"дың";s:2:"44";s:6:"қаз";s:2:"45";s:6:"аты";s:2:"46";s:5:"ÑÑ‹ ";s:2:"47";s:6:"тын";s:2:"48";s:5:"Ò“Ñ‹ ";s:2:"49";s:5:" ке";s:2:"50";s:5:"ар ";s:2:"51";s:6:"зақ";s:2:"52";s:5:"ық ";s:2:"53";s:6:"ала";s:2:"54";s:6:"алы";s:2:"55";s:6:"аны";s:2:"56";s:6:"ара";s:2:"57";s:6:"ағы";s:2:"58";s:6:"ген";s:2:"59";s:6:"тар";s:2:"60";s:6:"тер";s:2:"61";s:6:"тыр";s:2:"62";s:6:"айд";s:2:"63";s:6:"ард";s:2:"64";s:5:"де ";s:2:"65";s:5:"ға ";s:2:"66";s:5:" қо";s:2:"67";s:6:"бар";s:2:"68";s:5:"Ñ–Ò£ ";s:2:"69";s:6:"қан";s:2:"70";s:5:" бе";s:2:"71";s:5:" қы";s:2:"72";s:6:"ақÑ";s:2:"73";s:6:"гер";s:2:"74";s:6:"дан";s:2:"75";s:6:"дар";s:2:"76";s:6:"лық";s:2:"77";s:6:"лға";s:2:"78";s:6:"ына";s:2:"79";s:5:"Ñ–Ñ€ ";s:2:"80";s:6:"ірі";s:2:"81";s:6:"ғаÑ";s:2:"82";s:5:" та";s:2:"83";s:5:"а б";s:2:"84";s:5:"гі ";s:2:"85";s:6:"еді";s:2:"86";s:6:"еле";s:2:"87";s:6:"йды";s:2:"88";s:5:"н к";s:2:"89";s:5:"н Ñ‚";s:2:"90";s:6:"ола";s:2:"91";s:6:"рын";s:2:"92";s:5:"іп ";s:2:"93";s:6:"Ò›ÑÑ‚";s:2:"94";s:6:"қта";s:2:"95";s:5:"Ò£ б";s:2:"96";s:5:" ай";s:2:"97";s:5:" ол";s:2:"98";s:5:" Ñо";s:2:"99";s:6:"айт";s:3:"100";s:6:"дағ";s:3:"101";s:6:"иге";s:3:"102";s:6:"лер";s:3:"103";s:6:"лып";s:3:"104";s:5:"н а";s:3:"105";s:5:"ік ";s:3:"106";s:6:"ақт";s:3:"107";s:6:"бағ";s:3:"108";s:6:"кен";s:3:"109";s:5:"н Ò›";s:3:"110";s:5:"ны ";s:3:"111";s:6:"рге";s:3:"112";s:6:"рға";s:3:"113";s:5:"ыр ";s:3:"114";s:5:" ар";s:3:"115";s:6:"алғ";s:3:"116";s:6:"аÑа";s:3:"117";s:6:"баÑ";s:3:"118";s:6:"бер";s:3:"119";s:5:"ге ";s:3:"120";s:6:"еті";s:3:"121";s:5:"на ";s:3:"122";s:6:"нде";s:3:"123";s:5:"не ";s:3:"124";s:6:"ниг";s:3:"125";s:6:"рды";s:3:"126";s:5:"ры ";s:3:"127";s:6:"Ñай";s:3:"128";s:5:" ау";s:3:"129";s:5:" кү";s:3:"130";s:5:" ни";s:3:"131";s:5:" от";s:3:"132";s:5:" өз";s:3:"133";s:6:"ауд";s:3:"134";s:5:"еп ";s:3:"135";s:6:"иÑл";s:3:"136";s:6:"лты";s:3:"137";s:5:"н ж";s:3:"138";s:5:"н о";s:3:"139";s:6:"оÑÑ‹";s:3:"140";s:6:"оты";s:3:"141";s:6:"рып";s:3:"142";s:5:"рі ";s:3:"143";s:6:"тке";s:3:"144";s:5:"ты ";s:3:"145";s:5:"Ñ‹ б";s:3:"146";s:5:"Ñ‹ ж";s:3:"147";s:6:"ылы";s:3:"148";s:6:"Ñ‹ÑÑ‹";s:3:"149";s:5:"Ñ– Ñ";s:3:"150";s:6:"қар";s:3:"151";s:5:" бұ";s:3:"152";s:5:" да";s:3:"153";s:5:" же";s:3:"154";s:5:" тұ";s:3:"155";s:5:" Ò›Ò±";s:3:"156";s:6:"ады";s:3:"157";s:6:"айл";s:3:"158";s:5:"ап ";s:3:"159";s:6:"ата";s:3:"160";s:6:"ені";s:3:"161";s:6:"йла";s:3:"162";s:5:"н м";s:3:"163";s:5:"н Ñ";s:3:"164";s:6:"нды";s:3:"165";s:6:"нді";s:3:"166";s:5:"Ñ€ м";s:3:"167";s:6:"тай";s:3:"168";s:6:"тін";s:3:"169";s:5:"Ñ‹ Ñ‚";s:3:"170";s:5:"Ñ‹Ñ ";s:3:"171";s:6:"інд";s:3:"172";s:5:" би";s:3:"173";s:5:"а ж";s:3:"174";s:6:"ауы";s:3:"175";s:6:"деп";s:3:"176";s:6:"дің";s:3:"177";s:6:"еке";s:3:"178";s:6:"ери";s:3:"179";s:6:"йын";s:3:"180";s:6:"кел";s:3:"181";s:6:"лды";s:3:"182";s:5:"ма ";s:3:"183";s:6:"нан";s:3:"184";s:6:"оны";s:3:"185";s:5:"п ж";s:3:"186";s:5:"п о";s:3:"187";s:5:"Ñ€ б";s:3:"188";s:6:"риÑ";s:3:"189";s:6:"рла";s:3:"190";s:6:"уда";s:3:"191";s:6:"шыл";s:3:"192";s:5:"Ñ‹ а";s:3:"193";s:6:"ықт";s:3:"194";s:5:"Ñ– а";s:3:"195";s:5:"Ñ– б";s:3:"196";s:5:"із ";s:3:"197";s:6:"ілі";s:3:"198";s:5:"Ò£ Ò›";s:3:"199";s:5:" аÑ";s:3:"200";s:5:" ек";s:3:"201";s:5:" жо";s:3:"202";s:5:" мә";s:3:"203";s:5:" оÑ";s:3:"204";s:5:" ре";s:3:"205";s:5:" Ñе";s:3:"206";s:6:"алд";s:3:"207";s:6:"дал";s:3:"208";s:6:"дег";s:3:"209";s:6:"дей";s:3:"210";s:5:"е б";s:3:"211";s:5:"ет ";s:3:"212";s:6:"жаÑ";s:3:"213";s:5:"й б";s:3:"214";s:6:"лау";s:3:"215";s:6:"лда";s:3:"216";s:6:"мет";s:3:"217";s:6:"нын";s:3:"218";s:6:"Ñар";s:3:"219";s:5:"ÑÑ– ";s:3:"220";s:5:"ті ";s:3:"221";s:6:"ыры";s:3:"222";s:6:"ыта";s:3:"223";s:6:"Ñ–ÑÑ–";s:3:"224";s:5:"Ò£ а";s:3:"225";s:6:"өте";s:3:"226";s:5:" ат";s:3:"227";s:5:" ел";s:3:"228";s:5:" жү";s:3:"229";s:5:" ма";s:3:"230";s:5:" то";s:3:"231";s:5:" шы";s:3:"232";s:5:"а а";s:3:"233";s:6:"алт";s:3:"234";s:6:"ама";s:3:"235";s:6:"арл";s:3:"236";s:6:"аÑÑ‚";s:3:"237";s:6:"бұл";s:3:"238";s:6:"дай";s:3:"239";s:6:"дық";s:3:"240";s:5:"ек ";s:3:"241";s:6:"ель";s:3:"242";s:6:"еÑÑ–";s:3:"243";s:6:"зді";s:3:"244";s:6:"көт";s:3:"245";s:6:"лем";s:3:"246";s:5:"ль ";s:3:"247";s:5:"н е";s:3:"248";s:5:"п а";s:3:"249";s:5:"Ñ€ а";s:3:"250";s:6:"реÑ";s:3:"251";s:5:"Ñа ";s:3:"252";s:5:"та ";s:3:"253";s:6:"тте";s:3:"254";s:6:"тұр";s:3:"255";s:5:"шы ";s:3:"256";s:5:"Ñ‹ д";s:3:"257";s:5:"Ñ‹ Ò›";s:3:"258";s:5:"ыз ";s:3:"259";s:6:"қыт";s:3:"260";s:5:" ко";s:3:"261";s:5:" не";s:3:"262";s:5:" ой";s:3:"263";s:5:" ор";s:3:"264";s:5:" ÑÒ±";s:3:"265";s:5:" тү";s:3:"266";s:6:"аль";s:3:"267";s:6:"аре";s:3:"268";s:6:"атт";s:3:"269";s:6:"дір";s:3:"270";s:5:"ев ";s:3:"271";s:6:"егі";s:3:"272";s:6:"еда";s:3:"273";s:6:"екі";s:3:"274";s:6:"елд";s:3:"275";s:6:"ерг";s:3:"276";s:6:"ерд";s:3:"277";s:6:"иÑд";s:3:"278";s:6:"кер";s:3:"279";s:6:"кет";s:3:"280";s:6:"лыÑ";s:3:"281";s:6:"ліÑ";s:3:"282";s:6:"мед";s:3:"283";s:6:"мпи";s:3:"284";s:5:"н д";s:3:"285";s:5:"ні ";s:3:"286";s:6:"нін";s:3:"287";s:5:"п Ñ‚";s:3:"288";s:6:"пек";s:3:"289";s:6:"рел";s:3:"290";s:6:"рта";s:3:"291";s:6:"ріл";s:3:"292";s:6:"рін";s:3:"293";s:6:"Ñен";s:3:"294";s:6:"тал";s:3:"295";s:6:"шіл";s:3:"296";s:5:"Ñ‹ к";s:3:"297";s:5:"Ñ‹ м";s:3:"298";s:6:"Ñ‹ÑÑ‚";s:3:"299";}s:6:"kyrgyz";a:300:{s:5:"ын ";s:1:"0";s:5:"ан ";s:1:"1";s:5:" жа";s:1:"2";s:5:"ен ";s:1:"3";s:5:"да ";s:1:"4";s:5:" та";s:1:"5";s:5:"ар ";s:1:"6";s:5:"ин ";s:1:"7";s:5:" ка";s:1:"8";s:6:"ары";s:1:"9";s:5:" ал";s:2:"10";s:5:" ба";s:2:"11";s:5:" би";s:2:"12";s:6:"лар";s:2:"13";s:5:" бо";s:2:"14";s:5:" кы";s:2:"15";s:6:"ала";s:2:"16";s:5:"н к";s:2:"17";s:5:" Ñа";s:2:"18";s:6:"нда";s:2:"19";s:6:"ган";s:2:"20";s:6:"тар";s:2:"21";s:5:" де";s:2:"22";s:6:"анд";s:2:"23";s:5:"н б";s:2:"24";s:5:" ке";s:2:"25";s:6:"ард";s:2:"26";s:6:"мен";s:2:"27";s:5:"н Ñ‚";s:2:"28";s:6:"ара";s:2:"29";s:6:"нын";s:2:"30";s:5:" да";s:2:"31";s:5:" ме";s:2:"32";s:6:"кыр";s:2:"33";s:5:" че";s:2:"34";s:5:"н а";s:2:"35";s:5:"ры ";s:2:"36";s:5:" ко";s:2:"37";s:6:"ген";s:2:"38";s:6:"дар";s:2:"39";s:6:"кен";s:2:"40";s:6:"кта";s:2:"41";s:5:"уу ";s:2:"42";s:6:"ене";s:2:"43";s:6:"ери";s:2:"44";s:5:" ша";s:2:"45";s:6:"алы";s:2:"46";s:5:"ат ";s:2:"47";s:5:"на ";s:2:"48";s:5:" кө";s:2:"49";s:5:" Ñм";s:2:"50";s:6:"аты";s:2:"51";s:6:"дан";s:2:"52";s:6:"деп";s:2:"53";s:6:"дын";s:2:"54";s:5:"еп ";s:2:"55";s:6:"нен";s:2:"56";s:6:"рын";s:2:"57";s:5:" бе";s:2:"58";s:6:"кан";s:2:"59";s:6:"луу";s:2:"60";s:6:"ргы";s:2:"61";s:6:"тан";s:2:"62";s:6:"шай";s:2:"63";s:6:"ырг";s:2:"64";s:5:"үн ";s:2:"65";s:5:" ар";s:2:"66";s:5:" ма";s:2:"67";s:6:"агы";s:2:"68";s:6:"акт";s:2:"69";s:6:"аны";s:2:"70";s:5:"гы ";s:2:"71";s:6:"гыз";s:2:"72";s:5:"ды ";s:2:"73";s:6:"рда";s:2:"74";s:5:"ай ";s:2:"75";s:6:"бир";s:2:"76";s:6:"бол";s:2:"77";s:5:"ер ";s:2:"78";s:5:"н Ñ";s:2:"79";s:6:"нды";s:2:"80";s:5:"ун ";s:2:"81";s:5:"ча ";s:2:"82";s:6:"ынд";s:2:"83";s:5:"а к";s:2:"84";s:6:"ага";s:2:"85";s:6:"айл";s:2:"86";s:6:"ана";s:2:"87";s:5:"ап ";s:2:"88";s:5:"га ";s:2:"89";s:6:"лге";s:2:"90";s:6:"нча";s:2:"91";s:5:"п к";s:2:"92";s:6:"рды";s:2:"93";s:6:"туу";s:2:"94";s:6:"ыны";s:2:"95";s:5:" ан";s:2:"96";s:5:" өз";s:2:"97";s:6:"ама";s:2:"98";s:6:"ата";s:2:"99";s:6:"дин";s:3:"100";s:5:"йт ";s:3:"101";s:6:"лга";s:3:"102";s:6:"лоо";s:3:"103";s:5:"оо ";s:3:"104";s:5:"ри ";s:3:"105";s:6:"тин";s:3:"106";s:5:"ыз ";s:3:"107";s:5:"ып ";s:3:"108";s:6:"Ó©Ñ€Ò¯";s:3:"109";s:5:" па";s:3:"110";s:5:" Ñк";s:3:"111";s:5:"а б";s:3:"112";s:6:"алг";s:3:"113";s:6:"аÑÑ‹";s:3:"114";s:6:"ашт";s:3:"115";s:6:"биз";s:3:"116";s:6:"кел";s:3:"117";s:6:"кте";s:3:"118";s:6:"тал";s:3:"119";s:5:" не";s:3:"120";s:5:" Ñу";s:3:"121";s:6:"акы";s:3:"122";s:6:"ент";s:3:"123";s:6:"инд";s:3:"124";s:5:"ир ";s:3:"125";s:6:"кал";s:3:"126";s:5:"н д";s:3:"127";s:6:"нде";s:3:"128";s:6:"ого";s:3:"129";s:6:"онд";s:3:"130";s:6:"оюн";s:3:"131";s:5:"Ñ€ б";s:3:"132";s:5:"Ñ€ м";s:3:"133";s:6:"ран";s:3:"134";s:6:"Ñал";s:3:"135";s:6:"Ñта";s:3:"136";s:5:"ÑÑ‹ ";s:3:"137";s:6:"ура";s:3:"138";s:6:"ыгы";s:3:"139";s:5:" аш";s:3:"140";s:5:" ми";s:3:"141";s:5:" ÑÑ‹";s:3:"142";s:5:" ту";s:3:"143";s:5:"ал ";s:3:"144";s:6:"арт";s:3:"145";s:6:"бор";s:3:"146";s:6:"елг";s:3:"147";s:6:"ени";s:3:"148";s:5:"ет ";s:3:"149";s:6:"жат";s:3:"150";s:6:"йло";s:3:"151";s:6:"кар";s:3:"152";s:5:"н м";s:3:"153";s:6:"огу";s:3:"154";s:5:"п а";s:3:"155";s:5:"п ж";s:3:"156";s:5:"Ñ€ Ñ";s:3:"157";s:6:"Ñын";s:3:"158";s:5:"ык ";s:3:"159";s:6:"юнч";s:3:"160";s:5:" бу";s:3:"161";s:5:" ур";s:3:"162";s:5:"а а";s:3:"163";s:5:"ак ";s:3:"164";s:6:"алд";s:3:"165";s:6:"алу";s:3:"166";s:6:"бар";s:3:"167";s:6:"бер";s:3:"168";s:6:"бою";s:3:"169";s:5:"ге ";s:3:"170";s:6:"дон";s:3:"171";s:6:"еги";s:3:"172";s:6:"ект";s:3:"173";s:6:"ефт";s:3:"174";s:5:"из ";s:3:"175";s:6:"кат";s:3:"176";s:6:"лды";s:3:"177";s:5:"н ч";s:3:"178";s:5:"н Ñ";s:3:"179";s:5:"н Ó©";s:3:"180";s:6:"ндо";s:3:"181";s:6:"неф";s:3:"182";s:5:"он ";s:3:"183";s:6:"Ñат";s:3:"184";s:6:"тор";s:3:"185";s:5:"ты ";s:3:"186";s:6:"уда";s:3:"187";s:5:"ул ";s:3:"188";s:6:"ула";s:3:"189";s:6:"ууд";s:3:"190";s:5:"Ñ‹ б";s:3:"191";s:5:"Ñ‹ ж";s:3:"192";s:5:"Ñ‹ к";s:3:"193";s:5:"ыл ";s:3:"194";s:6:"ына";s:3:"195";s:6:"Ñке";s:3:"196";s:6:"ÑÑÑ‹";s:3:"197";s:5:" ат";s:3:"198";s:5:" до";s:3:"199";s:5:" жы";s:3:"200";s:5:" Ñо";s:3:"201";s:5:" чы";s:3:"202";s:6:"ааÑ";s:3:"203";s:6:"айт";s:3:"204";s:6:"аÑÑ‚";s:3:"205";s:6:"баа";s:3:"206";s:6:"баш";s:3:"207";s:6:"гар";s:3:"208";s:6:"гын";s:3:"209";s:5:"дө ";s:3:"210";s:5:"е б";s:3:"211";s:5:"ек ";s:3:"212";s:6:"жыл";s:3:"213";s:5:"и б";s:3:"214";s:5:"ик ";s:3:"215";s:6:"иÑÑ";s:3:"216";s:6:"кыз";s:3:"217";s:6:"лда";s:3:"218";s:6:"лык";s:3:"219";s:6:"мда";s:3:"220";s:5:"н ж";s:3:"221";s:6:"нди";s:3:"222";s:5:"ни ";s:3:"223";s:6:"нин";s:3:"224";s:6:"орд";s:3:"225";s:6:"рдо";s:3:"226";s:6:"Ñто";s:3:"227";s:5:"та ";s:3:"228";s:6:"тер";s:3:"229";s:6:"тти";s:3:"230";s:6:"тур";s:3:"231";s:6:"тын";s:3:"232";s:5:"уп ";s:3:"233";s:6:"ушу";s:3:"234";s:6:"фти";s:3:"235";s:6:"ыкт";s:3:"236";s:5:"үп ";s:3:"237";s:5:"өн ";s:3:"238";s:5:" ай";s:3:"239";s:5:" бү";s:3:"240";s:5:" ич";s:3:"241";s:5:" иш";s:3:"242";s:5:" мо";s:3:"243";s:5:" пр";s:3:"244";s:5:" ре";s:3:"245";s:5:" өк";s:3:"246";s:5:" Ó©Ñ‚";s:3:"247";s:5:"а д";s:3:"248";s:5:"а у";s:3:"249";s:5:"а Ñ";s:3:"250";s:6:"айм";s:3:"251";s:6:"амд";s:3:"252";s:6:"атт";s:3:"253";s:6:"бек";s:3:"254";s:6:"бул";s:3:"255";s:6:"гол";s:3:"256";s:6:"дег";s:3:"257";s:6:"еге";s:3:"258";s:6:"ейт";s:3:"259";s:6:"еле";s:3:"260";s:6:"енд";s:3:"261";s:6:"жак";s:3:"262";s:5:"и к";s:3:"263";s:6:"ини";s:3:"264";s:6:"ири";s:3:"265";s:6:"йма";s:3:"266";s:6:"кто";s:3:"267";s:6:"лик";s:3:"268";s:6:"мак";s:3:"269";s:6:"меÑ";s:3:"270";s:5:"н у";s:3:"271";s:5:"н ш";s:3:"272";s:6:"нтт";s:3:"273";s:5:"ол ";s:3:"274";s:6:"оло";s:3:"275";s:6:"пар";s:3:"276";s:6:"рак";s:3:"277";s:6:"Ñ€Ò¯Ò¯";s:3:"278";s:6:"Ñыр";s:3:"279";s:5:"ти ";s:3:"280";s:6:"тик";s:3:"281";s:6:"тта";s:3:"282";s:6:"төр";s:3:"283";s:5:"у ж";s:3:"284";s:5:"у Ñ";s:3:"285";s:6:"шка";s:3:"286";s:5:"Ñ‹ м";s:3:"287";s:6:"ызы";s:3:"288";s:6:"ылд";s:3:"289";s:6:"Ñме";s:3:"290";s:6:"үрү";s:3:"291";s:6:"өлү";s:3:"292";s:6:"өтө";s:3:"293";s:5:" же";s:3:"294";s:5:" тү";s:3:"295";s:5:" Ñл";s:3:"296";s:5:" өн";s:3:"297";s:5:"а ж";s:3:"298";s:6:"ады";s:3:"299";}s:5:"latin";a:300:{s:3:"um ";s:1:"0";s:3:"us ";s:1:"1";s:3:"ut ";s:1:"2";s:3:"et ";s:1:"3";s:3:"is ";s:1:"4";s:3:" et";s:1:"5";s:3:" in";s:1:"6";s:3:" qu";s:1:"7";s:3:"tur";s:1:"8";s:3:" pr";s:1:"9";s:3:"est";s:2:"10";s:3:"tio";s:2:"11";s:3:" au";s:2:"12";s:3:"am ";s:2:"13";s:3:"em ";s:2:"14";s:3:"aut";s:2:"15";s:3:" di";s:2:"16";s:3:"ent";s:2:"17";s:3:"in ";s:2:"18";s:3:"dic";s:2:"19";s:3:"t e";s:2:"20";s:3:" es";s:2:"21";s:3:"ur ";s:2:"22";s:3:"ati";s:2:"23";s:3:"ion";s:2:"24";s:3:"st ";s:2:"25";s:3:" ut";s:2:"26";s:3:"ae ";s:2:"27";s:3:"qua";s:2:"28";s:3:" de";s:2:"29";s:3:"nt ";s:2:"30";s:3:" su";s:2:"31";s:3:" si";s:2:"32";s:3:"itu";s:2:"33";s:3:"unt";s:2:"34";s:3:"rum";s:2:"35";s:3:"ia ";s:2:"36";s:3:"es ";s:2:"37";s:3:"ter";s:2:"38";s:3:" re";s:2:"39";s:3:"nti";s:2:"40";s:3:"rae";s:2:"41";s:3:"s e";s:2:"42";s:3:"qui";s:2:"43";s:3:"io ";s:2:"44";s:3:"pro";s:2:"45";s:3:"it ";s:2:"46";s:3:"per";s:2:"47";s:3:"ita";s:2:"48";s:3:"one";s:2:"49";s:3:"ici";s:2:"50";s:3:"ius";s:2:"51";s:3:" co";s:2:"52";s:3:"t d";s:2:"53";s:3:"bus";s:2:"54";s:3:"pra";s:2:"55";s:3:"m e";s:2:"56";s:3:" no";s:2:"57";s:3:"edi";s:2:"58";s:3:"tia";s:2:"59";s:3:"ue ";s:2:"60";s:3:"ibu";s:2:"61";s:3:" se";s:2:"62";s:3:" ad";s:2:"63";s:3:"er ";s:2:"64";s:3:" fi";s:2:"65";s:3:"ili";s:2:"66";s:3:"que";s:2:"67";s:3:"t i";s:2:"68";s:3:"de ";s:2:"69";s:3:"oru";s:2:"70";s:3:" te";s:2:"71";s:3:"ali";s:2:"72";s:3:" pe";s:2:"73";s:3:"aed";s:2:"74";s:3:"cit";s:2:"75";s:3:"m d";s:2:"76";s:3:"t s";s:2:"77";s:3:"tat";s:2:"78";s:3:"tem";s:2:"79";s:3:"tis";s:2:"80";s:3:"t p";s:2:"81";s:3:"sti";s:2:"82";s:3:"te ";s:2:"83";s:3:"cum";s:2:"84";s:3:"ere";s:2:"85";s:3:"ium";s:2:"86";s:3:" ex";s:2:"87";s:3:"rat";s:2:"88";s:3:"ta ";s:2:"89";s:3:"con";s:2:"90";s:3:"cti";s:2:"91";s:3:"oni";s:2:"92";s:3:"ra ";s:2:"93";s:3:"s i";s:2:"94";s:3:" cu";s:2:"95";s:3:" sa";s:2:"96";s:3:"eni";s:2:"97";s:3:"nis";s:2:"98";s:3:"nte";s:2:"99";s:3:"eri";s:3:"100";s:3:"omi";s:3:"101";s:3:"re ";s:3:"102";s:3:"s a";s:3:"103";s:3:"min";s:3:"104";s:3:"os ";s:3:"105";s:3:"ti ";s:3:"106";s:3:"uer";s:3:"107";s:3:" ma";s:3:"108";s:3:" ue";s:3:"109";s:3:"m s";s:3:"110";s:3:"nem";s:3:"111";s:3:"t m";s:3:"112";s:3:" mo";s:3:"113";s:3:" po";s:3:"114";s:3:" ui";s:3:"115";s:3:"gen";s:3:"116";s:3:"ict";s:3:"117";s:3:"m i";s:3:"118";s:3:"ris";s:3:"119";s:3:"s s";s:3:"120";s:3:"t a";s:3:"121";s:3:"uae";s:3:"122";s:3:" do";s:3:"123";s:3:"m a";s:3:"124";s:3:"t c";s:3:"125";s:3:" ge";s:3:"126";s:3:"as ";s:3:"127";s:3:"e i";s:3:"128";s:3:"e p";s:3:"129";s:3:"ne ";s:3:"130";s:3:" ca";s:3:"131";s:3:"ine";s:3:"132";s:3:"quo";s:3:"133";s:3:"s p";s:3:"134";s:3:" al";s:3:"135";s:3:"e e";s:3:"136";s:3:"ntu";s:3:"137";s:3:"ro ";s:3:"138";s:3:"tri";s:3:"139";s:3:"tus";s:3:"140";s:3:"uit";s:3:"141";s:3:"atu";s:3:"142";s:3:"ini";s:3:"143";s:3:"iqu";s:3:"144";s:3:"m p";s:3:"145";s:3:"ost";s:3:"146";s:3:"res";s:3:"147";s:3:"ura";s:3:"148";s:3:" ac";s:3:"149";s:3:" fu";s:3:"150";s:3:"a e";s:3:"151";s:3:"ant";s:3:"152";s:3:"nes";s:3:"153";s:3:"nim";s:3:"154";s:3:"sun";s:3:"155";s:3:"tra";s:3:"156";s:3:"e a";s:3:"157";s:3:"s d";s:3:"158";s:3:" pa";s:3:"159";s:3:" uo";s:3:"160";s:3:"ecu";s:3:"161";s:3:" om";s:3:"162";s:3:" tu";s:3:"163";s:3:"ad ";s:3:"164";s:3:"cut";s:3:"165";s:3:"omn";s:3:"166";s:3:"s q";s:3:"167";s:3:" ei";s:3:"168";s:3:"ex ";s:3:"169";s:3:"icu";s:3:"170";s:3:"tor";s:3:"171";s:3:"uid";s:3:"172";s:3:" ip";s:3:"173";s:3:" me";s:3:"174";s:3:"e s";s:3:"175";s:3:"era";s:3:"176";s:3:"eru";s:3:"177";s:3:"iam";s:3:"178";s:3:"ide";s:3:"179";s:3:"ips";s:3:"180";s:3:" iu";s:3:"181";s:3:"a s";s:3:"182";s:3:"do ";s:3:"183";s:3:"e d";s:3:"184";s:3:"eiu";s:3:"185";s:3:"ica";s:3:"186";s:3:"im ";s:3:"187";s:3:"m c";s:3:"188";s:3:"m u";s:3:"189";s:3:"tiu";s:3:"190";s:3:" ho";s:3:"191";s:3:"cat";s:3:"192";s:3:"ist";s:3:"193";s:3:"nat";s:3:"194";s:3:"on ";s:3:"195";s:3:"pti";s:3:"196";s:3:"reg";s:3:"197";s:3:"rit";s:3:"198";s:3:"s t";s:3:"199";s:3:"sic";s:3:"200";s:3:"spe";s:3:"201";s:3:" en";s:3:"202";s:3:" sp";s:3:"203";s:3:"dis";s:3:"204";s:3:"eli";s:3:"205";s:3:"liq";s:3:"206";s:3:"lis";s:3:"207";s:3:"men";s:3:"208";s:3:"mus";s:3:"209";s:3:"num";s:3:"210";s:3:"pos";s:3:"211";s:3:"sio";s:3:"212";s:3:" an";s:3:"213";s:3:" gr";s:3:"214";s:3:"abi";s:3:"215";s:3:"acc";s:3:"216";s:3:"ect";s:3:"217";s:3:"ri ";s:3:"218";s:3:"uan";s:3:"219";s:3:" le";s:3:"220";s:3:"ecc";s:3:"221";s:3:"ete";s:3:"222";s:3:"gra";s:3:"223";s:3:"non";s:3:"224";s:3:"se ";s:3:"225";s:3:"uen";s:3:"226";s:3:"uis";s:3:"227";s:3:" fa";s:3:"228";s:3:" tr";s:3:"229";s:3:"ate";s:3:"230";s:3:"e c";s:3:"231";s:3:"fil";s:3:"232";s:3:"na ";s:3:"233";s:3:"ni ";s:3:"234";s:3:"pul";s:3:"235";s:3:"s f";s:3:"236";s:3:"ui ";s:3:"237";s:3:"at ";s:3:"238";s:3:"cce";s:3:"239";s:3:"dam";s:3:"240";s:3:"i e";s:3:"241";s:3:"ina";s:3:"242";s:3:"leg";s:3:"243";s:3:"nos";s:3:"244";s:3:"ori";s:3:"245";s:3:"pec";s:3:"246";s:3:"rop";s:3:"247";s:3:"sta";s:3:"248";s:3:"uia";s:3:"249";s:3:"ene";s:3:"250";s:3:"iue";s:3:"251";s:3:"iui";s:3:"252";s:3:"siu";s:3:"253";s:3:"t t";s:3:"254";s:3:"t u";s:3:"255";s:3:"tib";s:3:"256";s:3:"tit";s:3:"257";s:3:" da";s:3:"258";s:3:" ne";s:3:"259";s:3:"a d";s:3:"260";s:3:"and";s:3:"261";s:3:"ege";s:3:"262";s:3:"equ";s:3:"263";s:3:"hom";s:3:"264";s:3:"imu";s:3:"265";s:3:"lor";s:3:"266";s:3:"m m";s:3:"267";s:3:"mni";s:3:"268";s:3:"ndo";s:3:"269";s:3:"ner";s:3:"270";s:3:"o e";s:3:"271";s:3:"r e";s:3:"272";s:3:"sit";s:3:"273";s:3:"tum";s:3:"274";s:3:"utu";s:3:"275";s:3:"a p";s:3:"276";s:3:"bis";s:3:"277";s:3:"bit";s:3:"278";s:3:"cer";s:3:"279";s:3:"cta";s:3:"280";s:3:"dom";s:3:"281";s:3:"fut";s:3:"282";s:3:"i s";s:3:"283";s:3:"ign";s:3:"284";s:3:"int";s:3:"285";s:3:"mod";s:3:"286";s:3:"ndu";s:3:"287";s:3:"nit";s:3:"288";s:3:"rib";s:3:"289";s:3:"rti";s:3:"290";s:3:"tas";s:3:"291";s:3:"und";s:3:"292";s:3:" ab";s:3:"293";s:3:"err";s:3:"294";s:3:"ers";s:3:"295";s:3:"ite";s:3:"296";s:3:"iti";s:3:"297";s:3:"m t";s:3:"298";s:3:"o p";s:3:"299";}s:7:"latvian";a:300:{s:3:"as ";s:1:"0";s:3:" la";s:1:"1";s:3:" pa";s:1:"2";s:3:" ne";s:1:"3";s:3:"es ";s:1:"4";s:3:" un";s:1:"5";s:3:"un ";s:1:"6";s:3:" ka";s:1:"7";s:3:" va";s:1:"8";s:3:"ar ";s:1:"9";s:3:"s p";s:2:"10";s:3:" ar";s:2:"11";s:3:" vi";s:2:"12";s:3:"is ";s:2:"13";s:3:"ai ";s:2:"14";s:3:" no";s:2:"15";s:3:"ja ";s:2:"16";s:3:"ija";s:2:"17";s:3:"iem";s:2:"18";s:3:"em ";s:2:"19";s:3:"tu ";s:2:"20";s:3:"tie";s:2:"21";s:3:"vie";s:2:"22";s:3:"lat";s:2:"23";s:3:"aks";s:2:"24";s:3:"ien";s:2:"25";s:3:"kst";s:2:"26";s:3:"ies";s:2:"27";s:3:"s a";s:2:"28";s:3:"rak";s:2:"29";s:3:"atv";s:2:"30";s:3:"tvi";s:2:"31";s:3:" ja";s:2:"32";s:3:" pi";s:2:"33";s:3:"ka ";s:2:"34";s:3:" ir";s:2:"35";s:3:"ir ";s:2:"36";s:3:"ta ";s:2:"37";s:3:" sa";s:2:"38";s:3:"ts ";s:2:"39";s:4:" kÄ";s:2:"40";s:4:"Äs ";s:2:"41";s:3:" ti";s:2:"42";s:3:"ot ";s:2:"43";s:3:"s n";s:2:"44";s:3:" ie";s:2:"45";s:3:" ta";s:2:"46";s:4:"arÄ«";s:2:"47";s:3:"par";s:2:"48";s:3:"pie";s:2:"49";s:3:" pr";s:2:"50";s:4:"kÄ ";s:2:"51";s:3:" at";s:2:"52";s:3:" ra";s:2:"53";s:3:"am ";s:2:"54";s:4:"inÄ";s:2:"55";s:4:"tÄ ";s:2:"56";s:3:" iz";s:2:"57";s:3:"jas";s:2:"58";s:3:"lai";s:2:"59";s:3:" na";s:2:"60";s:3:"aut";s:2:"61";s:4:"ieÅ¡";s:2:"62";s:3:"s s";s:2:"63";s:3:" ap";s:2:"64";s:3:" ko";s:2:"65";s:3:" st";s:2:"66";s:3:"iek";s:2:"67";s:3:"iet";s:2:"68";s:3:"jau";s:2:"69";s:3:"us ";s:2:"70";s:4:"rÄ« ";s:2:"71";s:3:"tik";s:2:"72";s:4:"Ä«ba";s:2:"73";s:3:"na ";s:2:"74";s:3:" ga";s:2:"75";s:3:"cij";s:2:"76";s:3:"s i";s:2:"77";s:3:" uz";s:2:"78";s:3:"jum";s:2:"79";s:3:"s v";s:2:"80";s:3:"ms ";s:2:"81";s:3:"var";s:2:"82";s:3:" ku";s:2:"83";s:3:" ma";s:2:"84";s:4:"jÄ ";s:2:"85";s:3:"sta";s:2:"86";s:3:"s u";s:2:"87";s:4:" tÄ";s:2:"88";s:3:"die";s:2:"89";s:3:"kai";s:2:"90";s:3:"kas";s:2:"91";s:3:"ska";s:2:"92";s:3:" ci";s:2:"93";s:3:" da";s:2:"94";s:3:"kur";s:2:"95";s:3:"lie";s:2:"96";s:3:"tas";s:2:"97";s:3:"a p";s:2:"98";s:3:"est";s:2:"99";s:4:"stÄ";s:3:"100";s:4:"Å¡an";s:3:"101";s:3:"nes";s:3:"102";s:3:"nie";s:3:"103";s:3:"s d";s:3:"104";s:3:"s m";s:3:"105";s:3:"val";s:3:"106";s:3:" di";s:3:"107";s:3:" es";s:3:"108";s:3:" re";s:3:"109";s:3:"no ";s:3:"110";s:3:"to ";s:3:"111";s:3:"umu";s:3:"112";s:3:"vai";s:3:"113";s:4:"Å¡i ";s:3:"114";s:4:" vÄ“";s:3:"115";s:3:"kum";s:3:"116";s:3:"nu ";s:3:"117";s:3:"rie";s:3:"118";s:3:"s t";s:3:"119";s:4:"Äm ";s:3:"120";s:3:"ad ";s:3:"121";s:3:"et ";s:3:"122";s:3:"mu ";s:3:"123";s:3:"s l";s:3:"124";s:3:" be";s:3:"125";s:3:"aud";s:3:"126";s:3:"tur";s:3:"127";s:3:"vij";s:3:"128";s:4:"viņ";s:3:"129";s:4:"Äju";s:3:"130";s:3:"bas";s:3:"131";s:3:"gad";s:3:"132";s:3:"i n";s:3:"133";s:3:"ika";s:3:"134";s:3:"os ";s:3:"135";s:3:"a v";s:3:"136";s:3:"not";s:3:"137";s:3:"oti";s:3:"138";s:3:"sts";s:3:"139";s:3:"aik";s:3:"140";s:3:"u a";s:3:"141";s:4:"Ä a";s:3:"142";s:4:"Äk ";s:3:"143";s:3:" to";s:3:"144";s:3:"ied";s:3:"145";s:3:"stu";s:3:"146";s:3:"ti ";s:3:"147";s:3:"u p";s:3:"148";s:4:"vÄ“l";s:3:"149";s:4:"Äci";s:3:"150";s:4:" Å¡o";s:3:"151";s:3:"gi ";s:3:"152";s:3:"ko ";s:3:"153";s:3:"pro";s:3:"154";s:3:"s r";s:3:"155";s:4:"tÄj";s:3:"156";s:3:"u s";s:3:"157";s:3:"u v";s:3:"158";s:3:"vis";s:3:"159";s:3:"aun";s:3:"160";s:3:"ks ";s:3:"161";s:3:"str";s:3:"162";s:3:"zin";s:3:"163";s:3:"a a";s:3:"164";s:4:"adÄ«";s:3:"165";s:3:"da ";s:3:"166";s:3:"dar";s:3:"167";s:3:"ena";s:3:"168";s:3:"ici";s:3:"169";s:3:"kra";s:3:"170";s:3:"nas";s:3:"171";s:4:"stÄ«";s:3:"172";s:4:"Å¡u ";s:3:"173";s:4:" mÄ“";s:3:"174";s:3:"a n";s:3:"175";s:3:"eci";s:3:"176";s:3:"i s";s:3:"177";s:3:"ie ";s:3:"178";s:4:"iņa";s:3:"179";s:3:"ju ";s:3:"180";s:3:"las";s:3:"181";s:3:"r t";s:3:"182";s:3:"ums";s:3:"183";s:4:"Å¡ie";s:3:"184";s:3:"bu ";s:3:"185";s:3:"cit";s:3:"186";s:3:"i a";s:3:"187";s:3:"ina";s:3:"188";s:3:"ma ";s:3:"189";s:3:"pus";s:3:"190";s:3:"ra ";s:3:"191";s:3:" au";s:3:"192";s:3:" se";s:3:"193";s:3:" sl";s:3:"194";s:3:"a s";s:3:"195";s:3:"ais";s:3:"196";s:4:"eÅ¡i";s:3:"197";s:3:"iec";s:3:"198";s:3:"iku";s:3:"199";s:4:"pÄr";s:3:"200";s:3:"s b";s:3:"201";s:3:"s k";s:3:"202";s:3:"sot";s:3:"203";s:5:"ÄdÄ";s:3:"204";s:3:" in";s:3:"205";s:3:" li";s:3:"206";s:3:" tr";s:3:"207";s:3:"ana";s:3:"208";s:3:"eso";s:3:"209";s:3:"ikr";s:3:"210";s:3:"man";s:3:"211";s:3:"ne ";s:3:"212";s:3:"u k";s:3:"213";s:3:" tu";s:3:"214";s:3:"an ";s:3:"215";s:3:"av ";s:3:"216";s:3:"bet";s:3:"217";s:4:"bÅ«t";s:3:"218";s:3:"im ";s:3:"219";s:3:"isk";s:3:"220";s:4:"lÄ«d";s:3:"221";s:3:"nav";s:3:"222";s:3:"ras";s:3:"223";s:3:"ri ";s:3:"224";s:3:"s g";s:3:"225";s:3:"sti";s:3:"226";s:4:"Ä«dz";s:3:"227";s:3:" ai";s:3:"228";s:3:"arb";s:3:"229";s:3:"cin";s:3:"230";s:3:"das";s:3:"231";s:3:"ent";s:3:"232";s:3:"gal";s:3:"233";s:3:"i p";s:3:"234";s:3:"lik";s:3:"235";s:4:"mÄ ";s:3:"236";s:3:"nek";s:3:"237";s:3:"pat";s:3:"238";s:4:"rÄ“t";s:3:"239";s:3:"si ";s:3:"240";s:3:"tra";s:3:"241";s:4:"uÅ¡i";s:3:"242";s:3:"vei";s:3:"243";s:3:" br";s:3:"244";s:3:" pu";s:3:"245";s:3:" sk";s:3:"246";s:3:"als";s:3:"247";s:3:"ama";s:3:"248";s:3:"edz";s:3:"249";s:3:"eka";s:3:"250";s:4:"eÅ¡u";s:3:"251";s:3:"ieg";s:3:"252";s:3:"jis";s:3:"253";s:3:"kam";s:3:"254";s:3:"lst";s:3:"255";s:4:"nÄk";s:3:"256";s:3:"oli";s:3:"257";s:3:"pre";s:3:"258";s:4:"pÄ“c";s:3:"259";s:3:"rot";s:3:"260";s:4:"tÄs";s:3:"261";s:3:"usi";s:3:"262";s:4:"Ä“l ";s:3:"263";s:4:"Ä“s ";s:3:"264";s:3:" bi";s:3:"265";s:3:" de";s:3:"266";s:3:" me";s:3:"267";s:4:" pÄ";s:3:"268";s:3:"a i";s:3:"269";s:3:"aid";s:3:"270";s:4:"ajÄ";s:3:"271";s:3:"ikt";s:3:"272";s:3:"kat";s:3:"273";s:3:"lic";s:3:"274";s:3:"lod";s:3:"275";s:3:"mi ";s:3:"276";s:3:"ni ";s:3:"277";s:3:"pri";s:3:"278";s:4:"rÄd";s:3:"279";s:4:"rÄ«g";s:3:"280";s:3:"sim";s:3:"281";s:4:"trÄ";s:3:"282";s:3:"u l";s:3:"283";s:3:"uto";s:3:"284";s:3:"uz ";s:3:"285";s:4:"Ä“c ";s:3:"286";s:5:"Ä«tÄ";s:3:"287";s:3:" ce";s:3:"288";s:4:" jÄ";s:3:"289";s:3:" sv";s:3:"290";s:3:"a t";s:3:"291";s:3:"aga";s:3:"292";s:3:"aiz";s:3:"293";s:3:"atu";s:3:"294";s:3:"ba ";s:3:"295";s:3:"cie";s:3:"296";s:3:"du ";s:3:"297";s:3:"dzi";s:3:"298";s:4:"dzÄ«";s:3:"299";}s:10:"lithuanian";a:300:{s:3:"as ";s:1:"0";s:3:" pa";s:1:"1";s:3:" ka";s:1:"2";s:3:"ai ";s:1:"3";s:3:"us ";s:1:"4";s:3:"os ";s:1:"5";s:3:"is ";s:1:"6";s:3:" ne";s:1:"7";s:3:" ir";s:1:"8";s:3:"ir ";s:1:"9";s:3:"ti ";s:2:"10";s:3:" pr";s:2:"11";s:3:"aus";s:2:"12";s:3:"ini";s:2:"13";s:3:"s p";s:2:"14";s:3:"pas";s:2:"15";s:4:"ių ";s:2:"16";s:3:" ta";s:2:"17";s:3:" vi";s:2:"18";s:3:"iau";s:2:"19";s:3:" ko";s:2:"20";s:3:" su";s:2:"21";s:3:"kai";s:2:"22";s:3:"o p";s:2:"23";s:3:"usi";s:2:"24";s:3:" sa";s:2:"25";s:3:"vo ";s:2:"26";s:3:"tai";s:2:"27";s:3:"ali";s:2:"28";s:4:"tų ";s:2:"29";s:3:"io ";s:2:"30";s:3:"jo ";s:2:"31";s:3:"s k";s:2:"32";s:3:"sta";s:2:"33";s:3:"iai";s:2:"34";s:3:" bu";s:2:"35";s:3:" nu";s:2:"36";s:3:"ius";s:2:"37";s:3:"mo ";s:2:"38";s:3:" po";s:2:"39";s:3:"ien";s:2:"40";s:3:"s s";s:2:"41";s:3:"tas";s:2:"42";s:3:" me";s:2:"43";s:3:"uvo";s:2:"44";s:3:"kad";s:2:"45";s:4:" iÅ¡";s:2:"46";s:3:" la";s:2:"47";s:3:"to ";s:2:"48";s:3:"ais";s:2:"49";s:3:"ie ";s:2:"50";s:3:"kur";s:2:"51";s:3:"uri";s:2:"52";s:3:" ku";s:2:"53";s:3:"ijo";s:2:"54";s:4:"Äia";s:2:"55";s:3:"au ";s:2:"56";s:3:"met";s:2:"57";s:3:"je ";s:2:"58";s:3:" va";s:2:"59";s:3:"ad ";s:2:"60";s:3:" ap";s:2:"61";s:3:"and";s:2:"62";s:3:" gr";s:2:"63";s:3:" ti";s:2:"64";s:3:"kal";s:2:"65";s:3:"asi";s:2:"66";s:3:"i p";s:2:"67";s:4:"iÄi";s:2:"68";s:3:"s i";s:2:"69";s:3:"s v";s:2:"70";s:3:"ink";s:2:"71";s:3:"o n";s:2:"72";s:4:"Ä—s ";s:2:"73";s:3:"buv";s:2:"74";s:3:"s a";s:2:"75";s:3:" ga";s:2:"76";s:3:"aip";s:2:"77";s:3:"avi";s:2:"78";s:3:"mas";s:2:"79";s:3:"pri";s:2:"80";s:3:"tik";s:2:"81";s:3:" re";s:2:"82";s:3:"etu";s:2:"83";s:3:"jos";s:2:"84";s:3:" da";s:2:"85";s:3:"ent";s:2:"86";s:3:"oli";s:2:"87";s:3:"par";s:2:"88";s:3:"ant";s:2:"89";s:3:"ara";s:2:"90";s:3:"tar";s:2:"91";s:3:"ama";s:2:"92";s:3:"gal";s:2:"93";s:3:"imo";s:2:"94";s:4:"iÅ¡k";s:2:"95";s:3:"o s";s:2:"96";s:3:" at";s:2:"97";s:3:" be";s:2:"98";s:4:" į ";s:2:"99";s:3:"min";s:3:"100";s:3:"tin";s:3:"101";s:3:" tu";s:3:"102";s:3:"s n";s:3:"103";s:3:" jo";s:3:"104";s:3:"dar";s:3:"105";s:3:"ip ";s:3:"106";s:3:"rei";s:3:"107";s:3:" te";s:3:"108";s:4:"dži";s:3:"109";s:3:"kas";s:3:"110";s:3:"nin";s:3:"111";s:3:"tei";s:3:"112";s:3:"vie";s:3:"113";s:3:" li";s:3:"114";s:3:" se";s:3:"115";s:3:"cij";s:3:"116";s:3:"gar";s:3:"117";s:3:"lai";s:3:"118";s:3:"art";s:3:"119";s:3:"lau";s:3:"120";s:3:"ras";s:3:"121";s:3:"no ";s:3:"122";s:3:"o k";s:3:"123";s:4:"tÄ… ";s:3:"124";s:3:" ar";s:3:"125";s:4:"Ä—jo";s:3:"126";s:4:"viÄ";s:3:"127";s:3:"iga";s:3:"128";s:3:"pra";s:3:"129";s:3:"vis";s:3:"130";s:3:" na";s:3:"131";s:3:"men";s:3:"132";s:3:"oki";s:3:"133";s:4:"raÅ¡";s:3:"134";s:3:"s t";s:3:"135";s:3:"iet";s:3:"136";s:3:"ika";s:3:"137";s:3:"int";s:3:"138";s:3:"kom";s:3:"139";s:3:"tam";s:3:"140";s:3:"aug";s:3:"141";s:3:"avo";s:3:"142";s:3:"rie";s:3:"143";s:3:"s b";s:3:"144";s:3:" st";s:3:"145";s:3:"eim";s:3:"146";s:3:"ko ";s:3:"147";s:3:"nus";s:3:"148";s:3:"pol";s:3:"149";s:3:"ria";s:3:"150";s:3:"sau";s:3:"151";s:3:"api";s:3:"152";s:3:"me ";s:3:"153";s:3:"ne ";s:3:"154";s:3:"sik";s:3:"155";s:4:" Å¡i";s:3:"156";s:3:"i n";s:3:"157";s:3:"ia ";s:3:"158";s:3:"ici";s:3:"159";s:3:"oja";s:3:"160";s:3:"sak";s:3:"161";s:3:"sti";s:3:"162";s:3:"ui ";s:3:"163";s:3:"ame";s:3:"164";s:3:"lie";s:3:"165";s:3:"o t";s:3:"166";s:3:"pie";s:3:"167";s:4:"Äiu";s:3:"168";s:3:" di";s:3:"169";s:3:" pe";s:3:"170";s:3:"gri";s:3:"171";s:3:"ios";s:3:"172";s:3:"lia";s:3:"173";s:3:"lin";s:3:"174";s:3:"s d";s:3:"175";s:3:"s g";s:3:"176";s:3:"ta ";s:3:"177";s:3:"uot";s:3:"178";s:3:" ja";s:3:"179";s:4:" už";s:3:"180";s:3:"aut";s:3:"181";s:3:"i s";s:3:"182";s:3:"ino";s:3:"183";s:4:"mÄ… ";s:3:"184";s:3:"oje";s:3:"185";s:3:"rav";s:3:"186";s:4:"dÄ—l";s:3:"187";s:3:"nti";s:3:"188";s:3:"o a";s:3:"189";s:3:"toj";s:3:"190";s:4:"Ä—l ";s:3:"191";s:3:" to";s:3:"192";s:3:" vy";s:3:"193";s:3:"ar ";s:3:"194";s:3:"ina";s:3:"195";s:3:"lic";s:3:"196";s:3:"o v";s:3:"197";s:3:"sei";s:3:"198";s:3:"su ";s:3:"199";s:3:" mi";s:3:"200";s:3:" pi";s:3:"201";s:3:"din";s:3:"202";s:4:"iÅ¡ ";s:3:"203";s:3:"lan";s:3:"204";s:3:"si ";s:3:"205";s:3:"tus";s:3:"206";s:3:" ba";s:3:"207";s:3:"asa";s:3:"208";s:3:"ata";s:3:"209";s:3:"kla";s:3:"210";s:3:"omi";s:3:"211";s:3:"tat";s:3:"212";s:3:" an";s:3:"213";s:3:" ji";s:3:"214";s:3:"als";s:3:"215";s:3:"ena";s:3:"216";s:4:"jų ";s:3:"217";s:3:"nuo";s:3:"218";s:3:"per";s:3:"219";s:3:"rig";s:3:"220";s:3:"s m";s:3:"221";s:3:"val";s:3:"222";s:3:"yta";s:3:"223";s:4:"Äio";s:3:"224";s:3:" ra";s:3:"225";s:3:"i k";s:3:"226";s:3:"lik";s:3:"227";s:3:"net";s:3:"228";s:4:"nÄ— ";s:3:"229";s:3:"tis";s:3:"230";s:3:"tuo";s:3:"231";s:3:"yti";s:3:"232";s:4:"Ä™s ";s:3:"233";s:4:"ų s";s:3:"234";s:3:"ada";s:3:"235";s:3:"ari";s:3:"236";s:3:"do ";s:3:"237";s:3:"eik";s:3:"238";s:3:"eis";s:3:"239";s:3:"ist";s:3:"240";s:3:"lst";s:3:"241";s:3:"ma ";s:3:"242";s:3:"nes";s:3:"243";s:3:"sav";s:3:"244";s:3:"sio";s:3:"245";s:3:"tau";s:3:"246";s:3:" ki";s:3:"247";s:3:"aik";s:3:"248";s:3:"aud";s:3:"249";s:3:"ies";s:3:"250";s:3:"ori";s:3:"251";s:3:"s r";s:3:"252";s:3:"ska";s:3:"253";s:3:" ge";s:3:"254";s:3:"ast";s:3:"255";s:3:"eig";s:3:"256";s:3:"et ";s:3:"257";s:3:"iam";s:3:"258";s:3:"isa";s:3:"259";s:3:"mis";s:3:"260";s:3:"nam";s:3:"261";s:3:"ome";s:3:"262";s:4:"žia";s:3:"263";s:3:"aba";s:3:"264";s:3:"aul";s:3:"265";s:3:"ikr";s:3:"266";s:4:"kÄ… ";s:3:"267";s:3:"nta";s:3:"268";s:3:"ra ";s:3:"269";s:3:"tur";s:3:"270";s:3:" ma";s:3:"271";s:3:"die";s:3:"272";s:3:"ei ";s:3:"273";s:3:"i t";s:3:"274";s:3:"nas";s:3:"275";s:3:"rin";s:3:"276";s:3:"sto";s:3:"277";s:3:"tie";s:3:"278";s:3:"tuv";s:3:"279";s:3:"vos";s:3:"280";s:4:"ų p";s:3:"281";s:4:" dÄ—";s:3:"282";s:3:"are";s:3:"283";s:3:"ats";s:3:"284";s:4:"enÄ—";s:3:"285";s:3:"ili";s:3:"286";s:3:"ima";s:3:"287";s:3:"kar";s:3:"288";s:3:"ms ";s:3:"289";s:3:"nia";s:3:"290";s:3:"r p";s:3:"291";s:3:"rod";s:3:"292";s:3:"s l";s:3:"293";s:3:" o ";s:3:"294";s:3:"e p";s:3:"295";s:3:"es ";s:3:"296";s:3:"ide";s:3:"297";s:3:"ik ";s:3:"298";s:3:"ja ";s:3:"299";}s:10:"macedonian";a:300:{s:5:"на ";s:1:"0";s:5:" на";s:1:"1";s:5:"та ";s:1:"2";s:6:"ата";s:1:"3";s:6:"ија";s:1:"4";s:5:" пр";s:1:"5";s:5:"то ";s:1:"6";s:5:"ја ";s:1:"7";s:5:" за";s:1:"8";s:5:"а н";s:1:"9";s:4:" и ";s:2:"10";s:5:"а Ñ";s:2:"11";s:5:"те ";s:2:"12";s:6:"ите";s:2:"13";s:5:" ко";s:2:"14";s:5:"от ";s:2:"15";s:5:" де";s:2:"16";s:5:" по";s:2:"17";s:5:"а д";s:2:"18";s:5:"во ";s:2:"19";s:5:"за ";s:2:"20";s:5:" во";s:2:"21";s:5:" од";s:2:"22";s:5:" Ñе";s:2:"23";s:5:" не";s:2:"24";s:5:"Ñе ";s:2:"25";s:5:" до";s:2:"26";s:5:"а в";s:2:"27";s:5:"ка ";s:2:"28";s:6:"ање";s:2:"29";s:5:"а п";s:2:"30";s:5:"о п";s:2:"31";s:6:"ува";s:2:"32";s:6:"циј";s:2:"33";s:5:"а о";s:2:"34";s:6:"ици";s:2:"35";s:6:"ето";s:2:"36";s:5:"о н";s:2:"37";s:6:"ани";s:2:"38";s:5:"ни ";s:2:"39";s:5:" вл";s:2:"40";s:6:"дек";s:2:"41";s:6:"ека";s:2:"42";s:6:"њет";s:2:"43";s:5:"ќе ";s:2:"44";s:4:" е ";s:2:"45";s:5:"а з";s:2:"46";s:5:"а и";s:2:"47";s:5:"ат ";s:2:"48";s:6:"вла";s:2:"49";s:5:"го ";s:2:"50";s:5:"е н";s:2:"51";s:5:"од ";s:2:"52";s:6:"пре";s:2:"53";s:5:" го";s:2:"54";s:5:" да";s:2:"55";s:5:" ма";s:2:"56";s:5:" ре";s:2:"57";s:5:" ќе";s:2:"58";s:6:"али";s:2:"59";s:5:"и д";s:2:"60";s:5:"и н";s:2:"61";s:6:"иот";s:2:"62";s:6:"нат";s:2:"63";s:6:"ово";s:2:"64";s:5:" па";s:2:"65";s:5:" ра";s:2:"66";s:5:" Ñо";s:2:"67";s:6:"ове";s:2:"68";s:6:"пра";s:2:"69";s:6:"што";s:2:"70";s:5:"ње ";s:2:"71";s:5:"а е";s:2:"72";s:5:"да ";s:2:"73";s:6:"дат";s:2:"74";s:6:"дон";s:2:"75";s:5:"е в";s:2:"76";s:5:"е д";s:2:"77";s:5:"е з";s:2:"78";s:5:"е Ñ";s:2:"79";s:6:"кон";s:2:"80";s:6:"нит";s:2:"81";s:5:"но ";s:2:"82";s:6:"они";s:2:"83";s:6:"ото";s:2:"84";s:6:"пар";s:2:"85";s:6:"при";s:2:"86";s:6:"Ñта";s:2:"87";s:5:"Ñ‚ н";s:2:"88";s:5:" шт";s:2:"89";s:5:"а к";s:2:"90";s:6:"аци";s:2:"91";s:5:"ва ";s:2:"92";s:6:"вањ";s:2:"93";s:5:"е п";s:2:"94";s:6:"ени";s:2:"95";s:5:"ла ";s:2:"96";s:6:"лад";s:2:"97";s:6:"мак";s:2:"98";s:6:"неÑ";s:2:"99";s:6:"ноÑ";s:3:"100";s:6:"про";s:3:"101";s:6:"рен";s:3:"102";s:6:"јат";s:3:"103";s:5:" ин";s:3:"104";s:5:" ме";s:3:"105";s:5:" то";s:3:"106";s:5:"а г";s:3:"107";s:5:"а м";s:3:"108";s:5:"а Ñ€";s:3:"109";s:6:"аке";s:3:"110";s:6:"ако";s:3:"111";s:6:"вор";s:3:"112";s:6:"гов";s:3:"113";s:6:"едо";s:3:"114";s:6:"ена";s:3:"115";s:5:"и и";s:3:"116";s:6:"ира";s:3:"117";s:6:"кед";s:3:"118";s:5:"не ";s:3:"119";s:6:"ниц";s:3:"120";s:6:"ниј";s:3:"121";s:6:"оÑÑ‚";s:3:"122";s:5:"ра ";s:3:"123";s:6:"рат";s:3:"124";s:6:"ред";s:3:"125";s:6:"Ñка";s:3:"126";s:6:"тен";s:3:"127";s:5:" ка";s:3:"128";s:5:" Ñп";s:3:"129";s:5:" ја";s:3:"130";s:5:"а Ñ‚";s:3:"131";s:6:"аде";s:3:"132";s:6:"арт";s:3:"133";s:5:"е г";s:3:"134";s:5:"е и";s:3:"135";s:6:"кат";s:3:"136";s:6:"лаÑ";s:3:"137";s:6:"нио";s:3:"138";s:5:"о Ñ";s:3:"139";s:5:"ри ";s:3:"140";s:5:" ба";s:3:"141";s:5:" би";s:3:"142";s:6:"ава";s:3:"143";s:6:"ате";s:3:"144";s:6:"вни";s:3:"145";s:5:"д н";s:3:"146";s:6:"ден";s:3:"147";s:6:"дов";s:3:"148";s:6:"држ";s:3:"149";s:6:"дув";s:3:"150";s:5:"е о";s:3:"151";s:5:"ен ";s:3:"152";s:6:"ере";s:3:"153";s:6:"ери";s:3:"154";s:5:"и п";s:3:"155";s:5:"и Ñ";s:3:"156";s:6:"ина";s:3:"157";s:6:"кој";s:3:"158";s:6:"нци";s:3:"159";s:5:"о м";s:3:"160";s:5:"о о";s:3:"161";s:6:"одн";s:3:"162";s:6:"пор";s:3:"163";s:6:"Ñки";s:3:"164";s:6:"Ñпо";s:3:"165";s:6:"Ñтв";s:3:"166";s:6:"Ñти";s:3:"167";s:6:"тво";s:3:"168";s:5:"ти ";s:3:"169";s:5:" об";s:3:"170";s:5:" ов";s:3:"171";s:5:"а б";s:3:"172";s:6:"алн";s:3:"173";s:6:"ара";s:3:"174";s:6:"бар";s:3:"175";s:5:"е к";s:3:"176";s:5:"ед ";s:3:"177";s:6:"ент";s:3:"178";s:6:"еѓу";s:3:"179";s:5:"и о";s:3:"180";s:5:"ии ";s:3:"181";s:6:"меѓ";s:3:"182";s:5:"о д";s:3:"183";s:6:"оја";s:3:"184";s:6:"пот";s:3:"185";s:6:"раз";s:3:"186";s:6:"раш";s:3:"187";s:6:"Ñпр";s:3:"188";s:6:"Ñто";s:3:"189";s:5:"Ñ‚ д";s:3:"190";s:5:"ци ";s:3:"191";s:5:" бе";s:3:"192";s:5:" гр";s:3:"193";s:5:" др";s:3:"194";s:5:" из";s:3:"195";s:5:" ÑÑ‚";s:3:"196";s:5:"аа ";s:3:"197";s:6:"бид";s:3:"198";s:6:"вед";s:3:"199";s:6:"гла";s:3:"200";s:6:"еко";s:3:"201";s:6:"енд";s:3:"202";s:6:"еÑе";s:3:"203";s:6:"етÑ";s:3:"204";s:6:"зац";s:3:"205";s:5:"и Ñ‚";s:3:"206";s:6:"иза";s:3:"207";s:6:"инÑ";s:3:"208";s:6:"иÑÑ‚";s:3:"209";s:5:"ки ";s:3:"210";s:6:"ков";s:3:"211";s:6:"кол";s:3:"212";s:5:"ку ";s:3:"213";s:6:"лиц";s:3:"214";s:5:"о з";s:3:"215";s:5:"о и";s:3:"216";s:6:"ова";s:3:"217";s:6:"олк";s:3:"218";s:6:"оре";s:3:"219";s:6:"ори";s:3:"220";s:6:"под";s:3:"221";s:6:"рањ";s:3:"222";s:6:"реф";s:3:"223";s:6:"ржа";s:3:"224";s:6:"ров";s:3:"225";s:6:"рти";s:3:"226";s:5:"Ñо ";s:3:"227";s:6:"тор";s:3:"228";s:6:"фер";s:3:"229";s:6:"цен";s:3:"230";s:6:"цит";s:3:"231";s:4:" а ";s:3:"232";s:5:" вр";s:3:"233";s:5:" гл";s:3:"234";s:5:" дп";s:3:"235";s:5:" мо";s:3:"236";s:5:" ни";s:3:"237";s:5:" но";s:3:"238";s:5:" оп";s:3:"239";s:5:" от";s:3:"240";s:5:"а Ñœ";s:3:"241";s:6:"або";s:3:"242";s:6:"ада";s:3:"243";s:6:"аÑа";s:3:"244";s:6:"аша";s:3:"245";s:5:"ба ";s:3:"246";s:6:"бот";s:3:"247";s:6:"ваа";s:3:"248";s:6:"ват";s:3:"249";s:6:"вот";s:3:"250";s:5:"ги ";s:3:"251";s:6:"гра";s:3:"252";s:5:"де ";s:3:"253";s:6:"дин";s:3:"254";s:6:"дум";s:3:"255";s:6:"евр";s:3:"256";s:6:"еду";s:3:"257";s:6:"ено";s:3:"258";s:6:"ера";s:3:"259";s:5:"ÐµÑ ";s:3:"260";s:6:"ење";s:3:"261";s:5:"же ";s:3:"262";s:6:"зак";s:3:"263";s:5:"и в";s:3:"264";s:6:"ила";s:3:"265";s:6:"иту";s:3:"266";s:6:"коа";s:3:"267";s:6:"кои";s:3:"268";s:6:"лан";s:3:"269";s:6:"лку";s:3:"270";s:6:"лож";s:3:"271";s:6:"мот";s:3:"272";s:6:"нду";s:3:"273";s:6:"нÑÑ‚";s:3:"274";s:5:"о в";s:3:"275";s:5:"оа ";s:3:"276";s:6:"оал";s:3:"277";s:6:"обр";s:3:"278";s:5:"ов ";s:3:"279";s:6:"ови";s:3:"280";s:6:"овн";s:3:"281";s:5:"ои ";s:3:"282";s:5:"ор ";s:3:"283";s:6:"орм";s:3:"284";s:5:"ој ";s:3:"285";s:6:"рет";s:3:"286";s:6:"Ñед";s:3:"287";s:5:"ÑÑ‚ ";s:3:"288";s:6:"тер";s:3:"289";s:6:"тиј";s:3:"290";s:6:"тоа";s:3:"291";s:6:"фор";s:3:"292";s:6:"ции";s:3:"293";s:5:"ѓу ";s:3:"294";s:5:" ал";s:3:"295";s:5:" ве";s:3:"296";s:5:" вм";s:3:"297";s:5:" ги";s:3:"298";s:5:" ду";s:3:"299";}s:9:"mongolian";a:300:{s:5:"ын ";s:1:"0";s:5:" ба";s:1:"1";s:5:"йн ";s:1:"2";s:6:"бай";s:1:"3";s:6:"ийн";s:1:"4";s:6:"уул";s:1:"5";s:5:" ул";s:1:"6";s:6:"улÑ";s:1:"7";s:5:"ан ";s:1:"8";s:5:" ха";s:1:"9";s:6:"ний";s:2:"10";s:5:"н Ñ…";s:2:"11";s:6:"гаа";s:2:"12";s:6:"Ñын";s:2:"13";s:5:"ий ";s:2:"14";s:6:"лÑÑ‹";s:2:"15";s:5:" бо";s:2:"16";s:5:"й б";s:2:"17";s:5:"Ñн ";s:2:"18";s:5:"ах ";s:2:"19";s:6:"бол";s:2:"20";s:5:"ол ";s:2:"21";s:5:"н б";s:2:"22";s:6:"оло";s:2:"23";s:5:" Ñ…Ñ";s:2:"24";s:6:"онг";s:2:"25";s:6:"гол";s:2:"26";s:6:"гуу";s:2:"27";s:6:"нго";s:2:"28";s:5:"ыг ";s:2:"29";s:6:"жил";s:2:"30";s:5:" мо";s:2:"31";s:6:"лаг";s:2:"32";s:6:"лла";s:2:"33";s:6:"мон";s:2:"34";s:5:" тє";s:2:"35";s:5:" ху";s:2:"36";s:6:"айд";s:2:"37";s:5:"ны ";s:2:"38";s:5:"он ";s:2:"39";s:6:"Ñан";s:2:"40";s:6:"хий";s:2:"41";s:5:" аж";s:2:"42";s:5:" ор";s:2:"43";s:5:"л у";s:2:"44";s:5:"н Ñ‚";s:2:"45";s:6:"улг";s:2:"46";s:6:"айг";s:2:"47";s:6:"длы";s:2:"48";s:5:"йг ";s:2:"49";s:5:" за";s:2:"50";s:6:"дÑÑ";s:2:"51";s:5:"н а";s:2:"52";s:6:"ндÑ";s:2:"53";s:6:"ула";s:2:"54";s:5:"ÑÑ ";s:2:"55";s:6:"ага";s:2:"56";s:6:"ийг";s:2:"57";s:4:"vй ";s:2:"58";s:5:"аа ";s:2:"59";s:5:"й а";s:2:"60";s:6:"лын";s:2:"61";s:5:"н з";s:2:"62";s:5:" аю";s:2:"63";s:5:" зє";s:2:"64";s:6:"аар";s:2:"65";s:5:"ад ";s:2:"66";s:5:"ар ";s:2:"67";s:5:"гvй";s:2:"68";s:6:"зєв";s:2:"69";s:6:"ажи";s:2:"70";s:5:"ал ";s:2:"71";s:6:"аюу";s:2:"72";s:5:"г Ñ…";s:2:"73";s:5:"лгv";s:2:"74";s:5:"лж ";s:2:"75";s:6:"Ñни";s:2:"76";s:6:"ÑÑн";s:2:"77";s:6:"юул";s:2:"78";s:6:"йдл";s:2:"79";s:6:"лыг";s:2:"80";s:6:"нхи";s:2:"81";s:6:"ууд";s:2:"82";s:6:"хам";s:2:"83";s:5:" нÑ";s:2:"84";s:5:" Ñа";s:2:"85";s:6:"гий";s:2:"86";s:6:"лах";s:2:"87";s:6:"лєл";s:2:"88";s:6:"рєн";s:2:"89";s:6:"єгч";s:2:"90";s:5:" та";s:2:"91";s:6:"илл";s:2:"92";s:6:"лий";s:2:"93";s:6:"лÑÑ…";s:2:"94";s:6:"рий";s:2:"95";s:5:"ÑÑ… ";s:2:"96";s:5:" ер";s:2:"97";s:5:" ÑÑ€";s:2:"98";s:6:"влє";s:2:"99";s:6:"ерє";s:3:"100";s:6:"ийл";s:3:"101";s:6:"лон";s:3:"102";s:6:"лєг";s:3:"103";s:6:"євл";s:3:"104";s:6:"єнх";s:3:"105";s:5:" хо";s:3:"106";s:6:"ари";s:3:"107";s:5:"их ";s:3:"108";s:6:"хан";s:3:"109";s:5:"ÑÑ€ ";s:3:"110";s:5:"єн ";s:3:"111";s:4:"vvл";s:3:"112";s:5:"ж б";s:3:"113";s:6:"Ñ‚Ñй";s:3:"114";s:5:"Ñ… Ñ…";s:3:"115";s:6:"Ñрх";s:3:"116";s:4:" vн";s:3:"117";s:5:" нь";s:3:"118";s:5:"vнд";s:3:"119";s:6:"алт";s:3:"120";s:6:"йлє";s:3:"121";s:5:"нь ";s:3:"122";s:6:"тєр";s:3:"123";s:5:" га";s:3:"124";s:5:" Ñу";s:3:"125";s:6:"аан";s:3:"126";s:6:"даа";s:3:"127";s:6:"илц";s:3:"128";s:6:"йгу";s:3:"129";s:5:"л а";s:3:"130";s:6:"лаа";s:3:"131";s:5:"н н";s:3:"132";s:6:"руу";s:3:"133";s:5:"Ñй ";s:3:"134";s:5:" то";s:3:"135";s:5:"н Ñ";s:3:"136";s:6:"рил";s:3:"137";s:6:"єри";s:3:"138";s:6:"ааг";s:3:"139";s:5:"гч ";s:3:"140";s:6:"лÑÑ";s:3:"141";s:5:"н о";s:3:"142";s:6:"Ñ€Ñг";s:3:"143";s:6:"Ñуу";s:3:"144";s:6:"ÑÑ€Ñ";s:3:"145";s:6:"їїл";s:3:"146";s:4:" yн";s:3:"147";s:5:" бу";s:3:"148";s:5:" дÑ";s:3:"149";s:5:" ол";s:3:"150";s:5:" ту";s:3:"151";s:5:" ши";s:3:"152";s:5:"yнд";s:3:"153";s:6:"аши";s:3:"154";s:5:"г Ñ‚";s:3:"155";s:5:"иг ";s:3:"156";s:5:"йл ";s:3:"157";s:6:"хар";s:3:"158";s:6:"шин";s:3:"159";s:5:"Ñг ";s:3:"160";s:5:"єр ";s:3:"161";s:5:" их";s:3:"162";s:5:" Ñ…Ñ”";s:3:"163";s:5:" Ñ…Ñ—";s:3:"164";s:5:"ам ";s:3:"165";s:6:"анг";s:3:"166";s:5:"ин ";s:3:"167";s:6:"йга";s:3:"168";s:6:"лÑа";s:3:"169";s:4:"н v";s:3:"170";s:5:"н е";s:3:"171";s:6:"нал";s:3:"172";s:5:"нд ";s:3:"173";s:6:"хуу";s:3:"174";s:6:"цаа";s:3:"175";s:5:"Ñд ";s:3:"176";s:6:"ÑÑÑ€";s:3:"177";s:5:"єл ";s:3:"178";s:5:"vйл";s:3:"179";s:6:"ада";s:3:"180";s:6:"айн";s:3:"181";s:6:"ала";s:3:"182";s:6:"амт";s:3:"183";s:6:"гах";s:3:"184";s:5:"д Ñ…";s:3:"185";s:6:"дал";s:3:"186";s:6:"зар";s:3:"187";s:5:"л б";s:3:"188";s:6:"лан";s:3:"189";s:5:"н д";s:3:"190";s:6:"ÑÑн";s:3:"191";s:6:"улл";s:3:"192";s:5:"Ñ… б";s:3:"193";s:6:"Ñ…ÑÑ€";s:3:"194";s:4:" бv";s:3:"195";s:5:" да";s:3:"196";s:5:" зо";s:3:"197";s:5:"vÑ€Ñ";s:3:"198";s:6:"аад";s:3:"199";s:6:"гÑÑ";s:3:"200";s:6:"лÑн";s:3:"201";s:5:"н и";s:3:"202";s:5:"н Ñ";s:3:"203";s:6:"нга";s:3:"204";s:5:"Ð½Ñ ";s:3:"205";s:6:"тал";s:3:"206";s:6:"тын";s:3:"207";s:6:"хур";s:3:"208";s:5:"Ñл ";s:3:"209";s:5:" на";s:3:"210";s:5:" ни";s:3:"211";s:5:" он";s:3:"212";s:5:"vлÑ";s:3:"213";s:5:"аг ";s:3:"214";s:5:"аж ";s:3:"215";s:5:"ай ";s:3:"216";s:6:"ата";s:3:"217";s:6:"бар";s:3:"218";s:5:"г б";s:3:"219";s:6:"гад";s:3:"220";s:6:"гїй";s:3:"221";s:5:"й Ñ…";s:3:"222";s:5:"лт ";s:3:"223";s:5:"н м";s:3:"224";s:5:"на ";s:3:"225";s:6:"оро";s:3:"226";s:6:"уль";s:3:"227";s:6:"чин";s:3:"228";s:5:"Ñж ";s:3:"229";s:6:"ÑнÑ";s:3:"230";s:6:"ÑÑд";s:3:"231";s:5:"їй ";s:3:"232";s:6:"їлÑ";s:3:"233";s:5:" би";s:3:"234";s:5:" Ñ‚Ñ";s:3:"235";s:5:" Ñн";s:3:"236";s:6:"аны";s:3:"237";s:6:"дий";s:3:"238";s:6:"дÑÑ";s:3:"239";s:6:"лал";s:3:"240";s:6:"лга";s:3:"241";s:5:"лд ";s:3:"242";s:6:"лог";s:3:"243";s:5:"ль ";s:3:"244";s:5:"н у";s:3:"245";s:5:"н Ñ—";s:3:"246";s:5:"Ñ€ б";s:3:"247";s:6:"рал";s:3:"248";s:6:"Ñон";s:3:"249";s:6:"тай";s:3:"250";s:6:"удл";s:3:"251";s:6:"Ñлт";s:3:"252";s:6:"Ñрг";s:3:"253";s:6:"єлє";s:3:"254";s:4:" vй";s:3:"255";s:4:" в ";s:3:"256";s:5:" гÑ";s:3:"257";s:4:" Ñ…v";s:3:"258";s:6:"ара";s:3:"259";s:5:"бvÑ€";s:3:"260";s:5:"д н";s:3:"261";s:5:"д о";s:3:"262";s:5:"л Ñ…";s:3:"263";s:5:"Ð»Ñ ";s:3:"264";s:6:"лты";s:3:"265";s:5:"н г";s:3:"266";s:6:"нÑг";s:3:"267";s:6:"огт";s:3:"268";s:6:"олы";s:3:"269";s:6:"оёр";s:3:"270";s:5:"Ñ€ Ñ‚";s:3:"271";s:6:"Ñ€ÑÑ";s:3:"272";s:6:"тав";s:3:"273";s:6:"тог";s:3:"274";s:6:"уур";s:3:"275";s:6:"хоё";s:3:"276";s:6:"Ñ…Ñл";s:3:"277";s:6:"Ñ…ÑÑ";s:3:"278";s:6:"ÑлÑ";s:3:"279";s:5:"ёр ";s:3:"280";s:5:" ав";s:3:"281";s:5:" аÑ";s:3:"282";s:5:" аш";s:3:"283";s:5:" ду";s:3:"284";s:5:" Ñо";s:3:"285";s:5:" чи";s:3:"286";s:5:" Ñв";s:3:"287";s:5:" єр";s:3:"288";s:6:"аал";s:3:"289";s:6:"алд";s:3:"290";s:6:"амж";s:3:"291";s:6:"анд";s:3:"292";s:6:"аÑу";s:3:"293";s:6:"вÑÑ€";s:3:"294";s:5:"г у";s:3:"295";s:6:"двÑ";s:3:"296";s:4:"жvv";s:3:"297";s:6:"лца";s:3:"298";s:6:"лÑл";s:3:"299";}s:6:"nepali";a:300:{s:7:"को ";s:1:"0";s:7:"का ";s:1:"1";s:7:"मा ";s:1:"2";s:9:"हरà¥";s:1:"3";s:7:" ने";s:1:"4";s:9:"नेप";s:1:"5";s:9:"पाल";s:1:"6";s:9:"ेपा";s:1:"7";s:7:" सम";s:1:"8";s:7:"ले ";s:1:"9";s:7:" पà¥";s:2:"10";s:9:"पà¥à¤°";s:2:"11";s:9:"कार";s:2:"12";s:7:"ा स";s:2:"13";s:9:"à¤à¤•ो";s:2:"14";s:7:" भà¤";s:2:"15";s:5:" छ ";s:2:"16";s:7:" भा";s:2:"17";s:9:"à¥à¤°à¤®";s:2:"18";s:7:" गर";s:2:"19";s:9:"रà¥à¤•";s:2:"20";s:5:" र ";s:2:"21";s:9:"भार";s:2:"22";s:9:"ारत";s:2:"23";s:7:" का";s:2:"24";s:7:" वि";s:2:"25";s:9:"भà¤à¤•";s:2:"26";s:9:"ाली";s:2:"27";s:7:"ली ";s:2:"28";s:7:"ा प";s:2:"29";s:9:"ीहर";s:2:"30";s:9:"ारà¥";s:2:"31";s:7:"ो छ";s:2:"32";s:7:"ना ";s:2:"33";s:7:"रॠ";s:2:"34";s:9:"ालक";s:2:"35";s:9:"à¥à¤¯à¤¾";s:2:"36";s:7:" बा";s:2:"37";s:9:"à¤à¤•ा";s:2:"38";s:7:"ने ";s:2:"39";s:9:"नà¥à¤¤";s:2:"40";s:7:"ा ब";s:2:"41";s:9:"ाको";s:2:"42";s:7:"ार ";s:2:"43";s:7:"ा भ";s:2:"44";s:9:"ाहर";s:2:"45";s:9:"à¥à¤°à¥‹";s:2:"46";s:9:"कà¥à¤·";s:2:"47";s:7:"नॠ";s:2:"48";s:9:"ारी";s:2:"49";s:7:" नि";s:2:"50";s:7:"ा न";s:2:"51";s:7:"ी स";s:2:"52";s:7:" डà¥";s:2:"53";s:9:"कà¥à¤°";s:2:"54";s:9:"जना";s:2:"55";s:7:"यो ";s:2:"56";s:7:"ा छ";s:2:"57";s:9:"ेवा";s:2:"58";s:9:"à¥à¤¤à¤¾";s:2:"59";s:7:" रा";s:2:"60";s:9:"तà¥à¤¯";s:2:"61";s:9:"नà¥à¤¦";s:2:"62";s:9:"हà¥à¤¨";s:2:"63";s:7:"ा क";s:2:"64";s:9:"ामा";s:2:"65";s:7:"ी न";s:2:"66";s:9:"à¥à¤¦à¤¾";s:2:"67";s:7:" से";s:2:"68";s:9:"छनà¥";s:2:"69";s:9:"मà¥à¤¬";s:2:"70";s:9:"रोत";s:2:"71";s:9:"सेव";s:2:"72";s:9:"सà¥à¤¤";s:2:"73";s:9:"सà¥à¤°";s:2:"74";s:9:"ेका";s:2:"75";s:7:"à¥à¤¤ ";s:2:"76";s:7:" बी";s:2:"77";s:7:" हà¥";s:2:"78";s:9:"कà¥à¤¤";s:2:"79";s:9:"तà¥à¤°";s:2:"80";s:7:"रत ";s:2:"81";s:9:"रà¥à¤¨";s:2:"82";s:9:"रà¥à¤¯";s:2:"83";s:7:"ा र";s:2:"84";s:9:"ाका";s:2:"85";s:9:"à¥à¤•ो";s:2:"86";s:7:" à¤à¤•";s:2:"87";s:7:" सं";s:2:"88";s:7:" सà¥";s:2:"89";s:9:"बीब";s:2:"90";s:9:"बीस";s:2:"91";s:9:"लको";s:2:"92";s:9:"सà¥à¤¯";s:2:"93";s:9:"ीबी";s:2:"94";s:9:"ीसी";s:2:"95";s:9:"ेको";s:2:"96";s:7:"ो स";s:2:"97";s:9:"à¥à¤¯à¤•";s:2:"98";s:7:" छन";s:2:"99";s:7:" जन";s:3:"100";s:7:" बि";s:3:"101";s:7:" मà¥";s:3:"102";s:7:" सà¥";s:3:"103";s:9:"गरà¥";s:3:"104";s:9:"ताह";s:3:"105";s:9:"नà¥à¤§";s:3:"106";s:9:"बार";s:3:"107";s:9:"मनà¥";s:3:"108";s:9:"मसà¥";s:3:"109";s:9:"रà¥à¤²";s:3:"110";s:9:"लाई";s:3:"111";s:7:"ा व";s:3:"112";s:7:"ाई ";s:3:"113";s:7:"ाल ";s:3:"114";s:9:"िका";s:3:"115";s:7:" तà¥";s:3:"116";s:7:" मा";s:3:"117";s:7:" यस";s:3:"118";s:7:" रà¥";s:3:"119";s:9:"ताक";s:3:"120";s:9:"बनà¥";s:3:"121";s:7:"र ब";s:3:"122";s:7:"रण ";s:3:"123";s:9:"रà¥à¤ª";s:3:"124";s:9:"रेक";s:3:"125";s:9:"षà¥à¤Ÿ";s:3:"126";s:9:"समà¥";s:3:"127";s:7:"सी ";s:3:"128";s:9:"ाà¤à¤•";s:3:"129";s:9:"à¥à¤•ा";s:3:"130";s:9:"à¥à¤•à¥";s:3:"131";s:7:" अध";s:3:"132";s:7:" अन";s:3:"133";s:7:" तथ";s:3:"134";s:7:" थि";s:3:"135";s:7:" दे";s:3:"136";s:7:" पर";s:3:"137";s:7:" बै";s:3:"138";s:9:"तथा";s:3:"139";s:7:"ता ";s:3:"140";s:7:"दा ";s:3:"141";s:9:"दà¥à¤¦";s:3:"142";s:7:"नी ";s:3:"143";s:9:"बाट";s:3:"144";s:9:"यकà¥";s:3:"145";s:7:"री ";s:3:"146";s:9:"रीह";s:3:"147";s:9:"रà¥à¤®";s:3:"148";s:9:"लका";s:3:"149";s:9:"समस";s:3:"150";s:7:"ा अ";s:3:"151";s:7:"ा à¤";s:3:"152";s:7:"ाट ";s:3:"153";s:7:"िय ";s:3:"154";s:7:"ो प";s:3:"155";s:7:"ो म";s:3:"156";s:7:"à¥à¤¨ ";s:3:"157";s:9:"à¥à¤¨à¥‡";s:3:"158";s:9:"à¥à¤·à¤¾";s:3:"159";s:7:" पा";s:3:"160";s:7:" यो";s:3:"161";s:7:" हा";s:3:"162";s:9:"अधि";s:3:"163";s:9:"डà¥à¤µ";s:3:"164";s:7:"त भ";s:3:"165";s:7:"त स";s:3:"166";s:7:"था ";s:3:"167";s:9:"धिक";s:3:"168";s:9:"पमा";s:3:"169";s:9:"बैठ";s:3:"170";s:9:"मà¥à¤¦";s:3:"171";s:7:"या ";s:3:"172";s:9:"यà¥à¤•";s:3:"173";s:7:"र न";s:3:"174";s:9:"रति";s:3:"175";s:9:"वान";s:3:"176";s:9:"सार";s:3:"177";s:7:"ा आ";s:3:"178";s:7:"ा ज";s:3:"179";s:7:"ा ह";s:3:"180";s:9:"à¥à¤¦à¥";s:3:"181";s:9:"à¥à¤ªà¤®";s:3:"182";s:9:"à¥à¤²à¥‡";s:3:"183";s:9:"à¥à¤µà¤¾";s:3:"184";s:9:"ैठक";s:3:"185";s:7:"ो ब";s:3:"186";s:9:"à¥à¤¤à¤°";s:3:"187";s:7:"à¥à¤¯ ";s:3:"188";s:9:"à¥à¤¯à¤¸";s:3:"189";s:7:" कà¥";s:3:"190";s:7:" मन";s:3:"191";s:7:" रह";s:3:"192";s:9:"चार";s:3:"193";s:9:"तिय";s:3:"194";s:7:"दै ";s:3:"195";s:9:"निर";s:3:"196";s:7:"नॠ";s:3:"197";s:9:"परà¥";s:3:"198";s:9:"रकà¥";s:3:"199";s:9:"रà¥à¤¦";s:3:"200";s:9:"समा";s:3:"201";s:9:"सà¥à¤°";s:3:"202";s:9:"ाउन";s:3:"203";s:7:"ान ";s:3:"204";s:9:"ानम";s:3:"205";s:9:"ारण";s:3:"206";s:9:"ाले";s:3:"207";s:7:"ि ब";s:3:"208";s:9:"ियो";s:3:"209";s:9:"à¥à¤¨à¥";s:3:"210";s:9:"à¥à¤°à¤•";s:3:"211";s:9:"à¥à¤¤à¥";s:3:"212";s:9:"à¥à¤¬à¤¨";s:3:"213";s:9:"à¥à¤°à¤¾";s:3:"214";s:7:"à¥à¤· ";s:3:"215";s:7:" आर";s:3:"216";s:7:" जल";s:3:"217";s:7:" बे";s:3:"218";s:7:" या";s:3:"219";s:7:" सा";s:3:"220";s:9:"आà¤à¤•";s:3:"221";s:7:"à¤à¤• ";s:3:"222";s:9:"करà¥";s:3:"223";s:9:"जलस";s:3:"224";s:9:"णका";s:3:"225";s:7:"त र";s:3:"226";s:9:"दà¥à¤°";s:3:"227";s:9:"धान";s:3:"228";s:7:"धि ";s:3:"229";s:9:"नका";s:3:"230";s:9:"नमा";s:3:"231";s:7:"नि ";s:3:"232";s:9:"ममा";s:3:"233";s:7:"रम ";s:3:"234";s:9:"रहे";s:3:"235";s:9:"राज";s:3:"236";s:9:"लसà¥";s:3:"237";s:7:"ला ";s:3:"238";s:9:"वार";s:3:"239";s:9:"सका";s:3:"240";s:9:"हिल";s:3:"241";s:9:"हेक";s:3:"242";s:7:"ा त";s:3:"243";s:9:"ारे";s:3:"244";s:9:"िनà¥";s:3:"245";s:9:"िसà¥";s:3:"246";s:7:"े स";s:3:"247";s:7:"ो न";s:3:"248";s:7:"ो र";s:3:"249";s:7:"ोत ";s:3:"250";s:9:"à¥à¤§à¤¿";s:3:"251";s:9:"à¥à¤®à¥€";s:3:"252";s:9:"à¥à¤°à¤¸";s:3:"253";s:7:" दà¥";s:3:"254";s:7:" पन";s:3:"255";s:7:" बत";s:3:"256";s:7:" बन";s:3:"257";s:7:" भन";s:3:"258";s:9:"ंयà¥";s:3:"259";s:9:"आरम";s:3:"260";s:7:"खि ";s:3:"261";s:9:"णà¥à¤¡";s:3:"262";s:9:"तका";s:3:"263";s:9:"ताल";s:3:"264";s:7:"दी ";s:3:"265";s:9:"देख";s:3:"266";s:9:"निय";s:3:"267";s:9:"पनि";s:3:"268";s:9:"पà¥à¤¤";s:3:"269";s:9:"बता";s:3:"270";s:7:"मी ";s:3:"271";s:9:"मà¥à¤­";s:3:"272";s:7:"र स";s:3:"273";s:9:"रमà¥";s:3:"274";s:9:"लमा";s:3:"275";s:9:"विश";s:3:"276";s:9:"षाक";s:3:"277";s:9:"संय";s:3:"278";s:7:"ा ड";s:3:"279";s:7:"ा म";s:3:"280";s:9:"ानक";s:3:"281";s:9:"ालम";s:3:"282";s:7:"ि भ";s:3:"283";s:7:"ित ";s:3:"284";s:7:"ी प";s:3:"285";s:7:"ी र";s:3:"286";s:7:"ॠभ";s:3:"287";s:9:"à¥à¤¨à¥‡";s:3:"288";s:7:"े ग";s:3:"289";s:9:"ेखि";s:3:"290";s:7:"ेर ";s:3:"291";s:7:"ो भ";s:3:"292";s:7:"ो व";s:3:"293";s:7:"ो ह";s:3:"294";s:7:"à¥à¤­ ";s:3:"295";s:7:"à¥à¤° ";s:3:"296";s:7:" ता";s:3:"297";s:7:" नम";s:3:"298";s:7:" ना";s:3:"299";}s:9:"norwegian";a:300:{s:3:"er ";s:1:"0";s:3:"en ";s:1:"1";s:3:"et ";s:1:"2";s:3:" de";s:1:"3";s:3:"det";s:1:"4";s:3:" i ";s:1:"5";s:3:"for";s:1:"6";s:3:"il ";s:1:"7";s:3:" fo";s:1:"8";s:3:" me";s:1:"9";s:3:"ing";s:2:"10";s:3:"om ";s:2:"11";s:3:" ha";s:2:"12";s:3:" og";s:2:"13";s:3:"ter";s:2:"14";s:3:" er";s:2:"15";s:3:" ti";s:2:"16";s:3:" st";s:2:"17";s:3:"og ";s:2:"18";s:3:"til";s:2:"19";s:3:"ne ";s:2:"20";s:3:" vi";s:2:"21";s:3:"re ";s:2:"22";s:3:" en";s:2:"23";s:3:" se";s:2:"24";s:3:"te ";s:2:"25";s:3:"or ";s:2:"26";s:3:"de ";s:2:"27";s:3:"kke";s:2:"28";s:3:"ke ";s:2:"29";s:3:"ar ";s:2:"30";s:3:"ng ";s:2:"31";s:3:"r s";s:2:"32";s:3:"ene";s:2:"33";s:3:" so";s:2:"34";s:3:"e s";s:2:"35";s:3:"der";s:2:"36";s:3:"an ";s:2:"37";s:3:"som";s:2:"38";s:3:"ste";s:2:"39";s:3:"at ";s:2:"40";s:3:"ed ";s:2:"41";s:3:"r i";s:2:"42";s:3:" av";s:2:"43";s:3:" in";s:2:"44";s:3:"men";s:2:"45";s:3:" at";s:2:"46";s:3:" ko";s:2:"47";s:4:" pÃ¥";s:2:"48";s:3:"har";s:2:"49";s:3:" si";s:2:"50";s:3:"ere";s:2:"51";s:4:"pÃ¥ ";s:2:"52";s:3:"nde";s:2:"53";s:3:"and";s:2:"54";s:3:"els";s:2:"55";s:3:"ett";s:2:"56";s:3:"tte";s:2:"57";s:3:"lig";s:2:"58";s:3:"t s";s:2:"59";s:3:"den";s:2:"60";s:3:"t i";s:2:"61";s:3:"ikk";s:2:"62";s:3:"med";s:2:"63";s:3:"n s";s:2:"64";s:3:"rt ";s:2:"65";s:3:"ser";s:2:"66";s:3:"ska";s:2:"67";s:3:"t e";s:2:"68";s:3:"ker";s:2:"69";s:3:"sen";s:2:"70";s:3:"av ";s:2:"71";s:3:"ler";s:2:"72";s:3:"r a";s:2:"73";s:3:"ten";s:2:"74";s:3:"e f";s:2:"75";s:3:"r e";s:2:"76";s:3:"r t";s:2:"77";s:3:"ede";s:2:"78";s:3:"ig ";s:2:"79";s:3:" re";s:2:"80";s:3:"han";s:2:"81";s:3:"lle";s:2:"82";s:3:"ner";s:2:"83";s:3:" bl";s:2:"84";s:3:" fr";s:2:"85";s:3:"le ";s:2:"86";s:3:" ve";s:2:"87";s:3:"e t";s:2:"88";s:3:"lan";s:2:"89";s:3:"mme";s:2:"90";s:3:"nge";s:2:"91";s:3:" be";s:2:"92";s:3:" ik";s:2:"93";s:3:" om";s:2:"94";s:4:" Ã¥ ";s:2:"95";s:3:"ell";s:2:"96";s:3:"sel";s:2:"97";s:3:"sta";s:2:"98";s:3:"ver";s:2:"99";s:3:" et";s:3:"100";s:3:" sk";s:3:"101";s:3:"nte";s:3:"102";s:3:"one";s:3:"103";s:3:"ore";s:3:"104";s:3:"r d";s:3:"105";s:3:"ske";s:3:"106";s:3:" an";s:3:"107";s:3:" la";s:3:"108";s:3:"del";s:3:"109";s:3:"gen";s:3:"110";s:3:"nin";s:3:"111";s:3:"r f";s:3:"112";s:3:"r v";s:3:"113";s:3:"se ";s:3:"114";s:3:" po";s:3:"115";s:3:"ir ";s:3:"116";s:3:"jon";s:3:"117";s:3:"mer";s:3:"118";s:3:"nen";s:3:"119";s:3:"omm";s:3:"120";s:3:"sjo";s:3:"121";s:3:" fl";s:3:"122";s:3:" sa";s:3:"123";s:3:"ern";s:3:"124";s:3:"kom";s:3:"125";s:3:"r m";s:3:"126";s:3:"r o";s:3:"127";s:3:"ren";s:3:"128";s:3:"vil";s:3:"129";s:3:"ale";s:3:"130";s:3:"es ";s:3:"131";s:3:"n a";s:3:"132";s:3:"t f";s:3:"133";s:3:" le";s:3:"134";s:3:"bli";s:3:"135";s:3:"e e";s:3:"136";s:3:"e i";s:3:"137";s:3:"e v";s:3:"138";s:3:"het";s:3:"139";s:3:"ye ";s:3:"140";s:3:" ir";s:3:"141";s:3:"al ";s:3:"142";s:3:"e o";s:3:"143";s:3:"ide";s:3:"144";s:3:"iti";s:3:"145";s:3:"lit";s:3:"146";s:3:"nne";s:3:"147";s:3:"ran";s:3:"148";s:3:"t o";s:3:"149";s:3:"tal";s:3:"150";s:3:"tat";s:3:"151";s:3:"tt ";s:3:"152";s:3:" ka";s:3:"153";s:3:"ans";s:3:"154";s:3:"asj";s:3:"155";s:3:"ge ";s:3:"156";s:3:"inn";s:3:"157";s:3:"kon";s:3:"158";s:3:"lse";s:3:"159";s:3:"pet";s:3:"160";s:3:"t d";s:3:"161";s:3:"vi ";s:3:"162";s:3:" ut";s:3:"163";s:3:"ent";s:3:"164";s:3:"eri";s:3:"165";s:3:"oli";s:3:"166";s:3:"r p";s:3:"167";s:3:"ret";s:3:"168";s:3:"ris";s:3:"169";s:3:"sto";s:3:"170";s:3:"str";s:3:"171";s:3:"t a";s:3:"172";s:3:" ga";s:3:"173";s:3:"all";s:3:"174";s:3:"ape";s:3:"175";s:3:"g s";s:3:"176";s:3:"ill";s:3:"177";s:3:"ira";s:3:"178";s:3:"kap";s:3:"179";s:3:"nn ";s:3:"180";s:3:"opp";s:3:"181";s:3:"r h";s:3:"182";s:3:"rin";s:3:"183";s:3:" br";s:3:"184";s:3:" op";s:3:"185";s:3:"e m";s:3:"186";s:3:"ert";s:3:"187";s:3:"ger";s:3:"188";s:3:"ion";s:3:"189";s:3:"kal";s:3:"190";s:3:"lsk";s:3:"191";s:3:"nes";s:3:"192";s:3:" gj";s:3:"193";s:3:" mi";s:3:"194";s:3:" pr";s:3:"195";s:3:"ang";s:3:"196";s:3:"e h";s:3:"197";s:3:"e r";s:3:"198";s:3:"elt";s:3:"199";s:3:"enn";s:3:"200";s:3:"i s";s:3:"201";s:3:"ist";s:3:"202";s:3:"jen";s:3:"203";s:3:"kan";s:3:"204";s:3:"lt ";s:3:"205";s:3:"nal";s:3:"206";s:3:"res";s:3:"207";s:3:"tor";s:3:"208";s:3:"ass";s:3:"209";s:3:"dre";s:3:"210";s:3:"e b";s:3:"211";s:3:"e p";s:3:"212";s:3:"mel";s:3:"213";s:3:"n t";s:3:"214";s:3:"nse";s:3:"215";s:3:"ort";s:3:"216";s:3:"per";s:3:"217";s:3:"reg";s:3:"218";s:3:"sje";s:3:"219";s:3:"t p";s:3:"220";s:3:"t v";s:3:"221";s:3:" hv";s:3:"222";s:4:" nÃ¥";s:3:"223";s:3:" va";s:3:"224";s:3:"ann";s:3:"225";s:3:"ato";s:3:"226";s:3:"e a";s:3:"227";s:3:"est";s:3:"228";s:3:"ise";s:3:"229";s:3:"isk";s:3:"230";s:3:"oil";s:3:"231";s:3:"ord";s:3:"232";s:3:"pol";s:3:"233";s:3:"ra ";s:3:"234";s:3:"rak";s:3:"235";s:3:"sse";s:3:"236";s:3:"toi";s:3:"237";s:3:" gr";s:3:"238";s:3:"ak ";s:3:"239";s:3:"eg ";s:3:"240";s:3:"ele";s:3:"241";s:3:"g a";s:3:"242";s:3:"ige";s:3:"243";s:3:"igh";s:3:"244";s:3:"m e";s:3:"245";s:3:"n f";s:3:"246";s:3:"n v";s:3:"247";s:3:"ndr";s:3:"248";s:3:"nsk";s:3:"249";s:3:"rer";s:3:"250";s:3:"t m";s:3:"251";s:3:"und";s:3:"252";s:3:"var";s:3:"253";s:4:"Ã¥r ";s:3:"254";s:3:" he";s:3:"255";s:3:" no";s:3:"256";s:3:" ny";s:3:"257";s:3:"end";s:3:"258";s:3:"ete";s:3:"259";s:3:"fly";s:3:"260";s:3:"g i";s:3:"261";s:3:"ghe";s:3:"262";s:3:"ier";s:3:"263";s:3:"ind";s:3:"264";s:3:"int";s:3:"265";s:3:"lin";s:3:"266";s:3:"n d";s:3:"267";s:3:"n p";s:3:"268";s:3:"rne";s:3:"269";s:3:"sak";s:3:"270";s:3:"sie";s:3:"271";s:3:"t b";s:3:"272";s:3:"tid";s:3:"273";s:3:" al";s:3:"274";s:3:" pa";s:3:"275";s:3:" tr";s:3:"276";s:3:"ag ";s:3:"277";s:3:"dig";s:3:"278";s:3:"e d";s:3:"279";s:3:"e k";s:3:"280";s:3:"ess";s:3:"281";s:3:"hol";s:3:"282";s:3:"i d";s:3:"283";s:3:"lag";s:3:"284";s:3:"led";s:3:"285";s:3:"n e";s:3:"286";s:3:"n i";s:3:"287";s:3:"n o";s:3:"288";s:3:"pri";s:3:"289";s:3:"r b";s:3:"290";s:3:"st ";s:3:"291";s:3:" fe";s:3:"292";s:3:" li";s:3:"293";s:3:" ry";s:3:"294";s:3:"air";s:3:"295";s:3:"ake";s:3:"296";s:3:"d s";s:3:"297";s:3:"eas";s:3:"298";s:3:"egi";s:3:"299";}s:6:"pashto";a:300:{s:4:" د ";s:1:"0";s:5:"اؤ ";s:1:"1";s:5:" اؤ";s:1:"2";s:5:"نو ";s:1:"3";s:5:"Û Ø¯";s:1:"4";s:5:"ره ";s:1:"5";s:5:" په";s:1:"6";s:5:"نه ";s:1:"7";s:5:"Ú†Û ";s:1:"8";s:5:" Ú†Û";s:1:"9";s:5:"په ";s:2:"10";s:5:"Ù‡ د";s:2:"11";s:5:"ته ";s:2:"12";s:5:"Ùˆ ا";s:2:"13";s:6:"ونو";s:2:"14";s:5:"Ùˆ د";s:2:"15";s:5:" او";s:2:"16";s:6:"انو";s:2:"17";s:6:"ونه";s:2:"18";s:5:"Ù‡ Ú©";s:2:"19";s:5:" دا";s:2:"20";s:5:"Ù‡ ا";s:2:"21";s:5:"Ø¯Û ";s:2:"22";s:5:"ÚšÛ ";s:2:"23";s:5:" Ú©Û";s:2:"24";s:5:"ان ";s:2:"25";s:5:"لو ";s:2:"26";s:5:"هم ";s:2:"27";s:5:"Ùˆ Ù…";s:2:"28";s:6:"Ú©ÚšÛ";s:2:"29";s:5:"Ù‡ Ù…";s:2:"30";s:5:"Ù‰ ا";s:2:"31";s:5:" نو";s:2:"32";s:5:" ته";s:2:"33";s:5:" Ú©Úš";s:2:"34";s:6:"رون";s:2:"35";s:5:"Ú©Û ";s:2:"36";s:5:"ده ";s:2:"37";s:5:"له ";s:2:"38";s:5:"به ";s:2:"39";s:5:"رو ";s:2:"40";s:5:" هم";s:2:"41";s:5:"Ù‡ Ùˆ";s:2:"42";s:5:"وى ";s:2:"43";s:5:"او ";s:2:"44";s:6:"تون";s:2:"45";s:5:"دا ";s:2:"46";s:5:" Ú©Ùˆ";s:2:"47";s:5:" Ú©Ú“";s:2:"48";s:6:"قام";s:2:"49";s:5:" تر";s:2:"50";s:6:"ران";s:2:"51";s:5:"Ù‡ Ù¾";s:2:"52";s:5:"Û Ùˆ";s:2:"53";s:5:"Û Ù¾";s:2:"54";s:5:" به";s:2:"55";s:5:" خو";s:2:"56";s:5:"تو ";s:2:"57";s:5:"د د";s:2:"58";s:5:"د ا";s:2:"59";s:5:"Ù‡ ت";s:2:"60";s:5:"Ùˆ Ù¾";s:2:"61";s:5:"يا ";s:2:"62";s:5:" خپ";s:2:"63";s:5:" دو";s:2:"64";s:5:" را";s:2:"65";s:5:" مش";s:2:"66";s:5:" پر";s:2:"67";s:6:"ارو";s:2:"68";s:5:"Ø±Û ";s:2:"69";s:5:"Ù… د";s:2:"70";s:6:"مشر";s:2:"71";s:5:" شو";s:2:"72";s:5:" ور";s:2:"73";s:5:"ار ";s:2:"74";s:5:"دى ";s:2:"75";s:5:" اد";s:2:"76";s:5:" دى";s:2:"77";s:5:" مو";s:2:"78";s:5:"د Ù¾";s:2:"79";s:5:"لي ";s:2:"80";s:5:"Ùˆ Ú©";s:2:"81";s:5:" مق";s:2:"82";s:5:" يو";s:2:"83";s:5:"ؤ د";s:2:"84";s:6:"خپل";s:2:"85";s:6:"سره";s:2:"86";s:5:"Ù‡ Ú†";s:2:"87";s:5:"ور ";s:2:"88";s:5:" تا";s:2:"89";s:5:" دÛ";s:2:"90";s:5:" رو";s:2:"91";s:5:" سر";s:2:"92";s:5:" مل";s:2:"93";s:5:" کا";s:2:"94";s:5:"ؤ ا";s:2:"95";s:6:"اره";s:2:"96";s:6:"برو";s:2:"97";s:5:"مه ";s:2:"98";s:5:"Ù‡ ب";s:2:"99";s:5:"Ùˆ ت";s:3:"100";s:6:"پښت";s:3:"101";s:5:" با";s:3:"102";s:5:" دغ";s:3:"103";s:5:" قب";s:3:"104";s:5:" له";s:3:"105";s:5:" وا";s:3:"106";s:5:" پا";s:3:"107";s:5:" Ù¾Úš";s:3:"108";s:5:"د Ù…";s:3:"109";s:5:"د Ù‡";s:3:"110";s:5:"Ù„Û ";s:3:"111";s:6:"مات";s:3:"112";s:5:"مو ";s:3:"113";s:5:"Ù‡ Ù‡";s:3:"114";s:5:"وي ";s:3:"115";s:5:"Û Ø¨";s:3:"116";s:5:"Û Ú©";s:3:"117";s:5:" ده";s:3:"118";s:5:" قا";s:3:"119";s:5:"ال ";s:3:"120";s:6:"اما";s:3:"121";s:5:"د Ù†";s:3:"122";s:6:"قبر";s:3:"123";s:5:"Ù‡ Ù†";s:3:"124";s:6:"پار";s:3:"125";s:5:" اث";s:3:"126";s:5:" بي";s:3:"127";s:5:" لا";s:3:"128";s:5:" لر";s:3:"129";s:6:"اثا";s:3:"130";s:5:"د Ø®";s:3:"131";s:6:"دار";s:3:"132";s:6:"ريخ";s:3:"133";s:6:"شرا";s:3:"134";s:6:"مقا";s:3:"135";s:5:"Ù†Û ";s:3:"136";s:5:"Ù‡ ر";s:3:"137";s:5:"Ù‡ Ù„";s:3:"138";s:6:"ولو";s:3:"139";s:5:"يو ";s:3:"140";s:6:"کوم";s:3:"141";s:5:" دد";s:3:"142";s:5:" لو";s:3:"143";s:5:" مح";s:3:"144";s:5:" مر";s:3:"145";s:5:" وو";s:3:"146";s:6:"اتو";s:3:"147";s:6:"اري";s:3:"148";s:6:"الو";s:3:"149";s:6:"اند";s:3:"150";s:6:"خان";s:3:"151";s:5:"د ت";s:3:"152";s:5:"Ø³Û ";s:3:"153";s:5:"لى ";s:3:"154";s:6:"نور";s:3:"155";s:5:"Ùˆ Ù„";s:3:"156";s:5:"ÙŠ Ú†";s:3:"157";s:5:"Ú“ÙŠ ";s:3:"158";s:6:"ښتو";s:3:"159";s:5:"Û Ù„";s:3:"160";s:5:" جو";s:3:"161";s:5:" سي";s:3:"162";s:5:"ام ";s:3:"163";s:6:"بان";s:3:"164";s:6:"تار";s:3:"165";s:5:"تر ";s:3:"166";s:6:"ثار";s:3:"167";s:5:"خو ";s:3:"168";s:5:"دو ";s:3:"169";s:5:"ر Ú©";s:3:"170";s:5:"Ù„ د";s:3:"171";s:6:"مون";s:3:"172";s:6:"ندÛ";s:3:"173";s:5:"Ùˆ Ù†";s:3:"174";s:5:"ول ";s:3:"175";s:5:"وه ";s:3:"176";s:5:"Ù‰ Ùˆ";s:3:"177";s:5:"ÙŠ د";s:3:"178";s:5:"Û Ø§";s:3:"179";s:5:"Û Øª";s:3:"180";s:5:"Û ÙŠ";s:3:"181";s:5:" Ø­Ú©";s:3:"182";s:5:" خب";s:3:"183";s:5:" نه";s:3:"184";s:5:" پو";s:3:"185";s:5:"ا د";s:3:"186";s:5:"ØªÛ ";s:3:"187";s:6:"جوړ";s:3:"188";s:6:"Ø­Ú©Ù…";s:3:"189";s:6:"Ø­Ú©Ùˆ";s:3:"190";s:6:"خبر";s:3:"191";s:6:"دان";s:3:"192";s:5:"ر د";s:3:"193";s:5:"غه ";s:3:"194";s:6:"قاÙ";s:3:"195";s:6:"محک";s:3:"196";s:6:"وال";s:3:"197";s:6:"ومت";s:3:"198";s:6:"ويل";s:3:"199";s:5:"Ù‰ د";s:3:"200";s:5:"Ù‰ Ù…";s:3:"201";s:6:"يره";s:3:"202";s:5:"پر ";s:3:"203";s:6:"کول";s:3:"204";s:5:"Û Ù‡";s:3:"205";s:5:" تي";s:3:"206";s:5:" خا";s:3:"207";s:5:" ÙˆÚ©";s:3:"208";s:5:" يا";s:3:"209";s:5:" ÚØ§";s:3:"210";s:5:"ؤ Ù‚";s:3:"211";s:6:"انÛ";s:3:"212";s:5:"بى ";s:3:"213";s:5:"غو ";s:3:"214";s:5:"Ù‡ Ø®";s:3:"215";s:5:"Ùˆ ب";s:3:"216";s:6:"ودا";s:3:"217";s:6:"يدو";s:3:"218";s:5:"Ú“Û ";s:3:"219";s:6:"کال";s:3:"220";s:5:" بر";s:3:"221";s:5:" قد";s:3:"222";s:5:" مي";s:3:"223";s:5:" وي";s:3:"224";s:5:" کر";s:3:"225";s:5:"ؤ Ù…";s:3:"226";s:5:"ات ";s:3:"227";s:6:"ايي";s:3:"228";s:5:"تى ";s:3:"229";s:6:"تيا";s:3:"230";s:6:"تير";s:3:"231";s:6:"خوا";s:3:"232";s:6:"دغو";s:3:"233";s:5:"دم ";s:3:"234";s:6:"ديم";s:3:"235";s:5:"ر Ùˆ";s:3:"236";s:6:"قدي";s:3:"237";s:5:"Ù… Ø®";s:3:"238";s:6:"مان";s:3:"239";s:5:"Ù…Û ";s:3:"240";s:6:"نيو";s:3:"241";s:5:"Ù†Ú– ";s:3:"242";s:5:"Ù‡ ÙŠ";s:3:"243";s:5:"Ùˆ س";s:3:"244";s:5:"Ùˆ Ú†";s:3:"245";s:6:"وان";s:3:"246";s:6:"ورو";s:3:"247";s:6:"ونږ";s:3:"248";s:6:"پور";s:3:"249";s:5:"Ú“Ù‡ ";s:3:"250";s:5:"Ú“Ùˆ ";s:3:"251";s:5:"Û Ø¯";s:3:"252";s:5:"Û Ù†";s:3:"253";s:5:" اه";s:3:"254";s:5:" زي";s:3:"255";s:5:" سو";s:3:"256";s:5:" شي";s:3:"257";s:5:" هر";s:3:"258";s:5:" هغ";s:3:"259";s:5:" ښا";s:3:"260";s:6:"اتل";s:3:"261";s:5:"اق ";s:3:"262";s:6:"اني";s:3:"263";s:6:"بري";s:3:"264";s:5:"Ø¨Û ";s:3:"265";s:5:"ت ا";s:3:"266";s:5:"د ب";s:3:"267";s:5:"د س";s:3:"268";s:5:"ر Ù…";s:3:"269";s:5:"رى ";s:3:"270";s:6:"عرا";s:3:"271";s:6:"لان";s:3:"272";s:5:"مى ";s:3:"273";s:5:"نى ";s:3:"274";s:5:"Ùˆ Ø®";s:3:"275";s:5:"وئ ";s:3:"276";s:6:"ورک";s:3:"277";s:6:"ورÛ";s:3:"278";s:5:"ون ";s:3:"279";s:6:"ÙˆÚ©Ú“";s:3:"280";s:5:"Ù‰ Ú†";s:3:"281";s:6:"يمه";s:3:"282";s:5:"ÙŠÛ ";s:3:"283";s:6:"ښتن";s:3:"284";s:5:"Ú©Ù‡ ";s:3:"285";s:6:"Ú©Ú“ÙŠ";s:3:"286";s:5:"Û Ø®";s:3:"287";s:5:"Û’ Ø´";s:3:"288";s:5:" تح";s:3:"289";s:5:" تو";s:3:"290";s:5:" در";s:3:"291";s:5:" دپ";s:3:"292";s:5:" صو";s:3:"293";s:5:" عر";s:3:"294";s:5:" ول";s:3:"295";s:5:" يؤ";s:3:"296";s:5:" Ù¾Û€";s:3:"297";s:5:" Ú…Ùˆ";s:3:"298";s:5:"ا ا";s:3:"299";}s:6:"pidgin";a:300:{s:3:" de";s:1:"0";s:3:" we";s:1:"1";s:3:" di";s:1:"2";s:3:"di ";s:1:"3";s:3:"dem";s:1:"4";s:3:"em ";s:1:"5";s:3:"ay ";s:1:"6";s:3:" sa";s:1:"7";s:3:"or ";s:1:"8";s:3:"say";s:1:"9";s:3:"ke ";s:2:"10";s:3:"ey ";s:2:"11";s:3:" an";s:2:"12";s:3:" go";s:2:"13";s:3:" e ";s:2:"14";s:3:" to";s:2:"15";s:3:" ma";s:2:"16";s:3:"e d";s:2:"17";s:3:"wey";s:2:"18";s:3:"for";s:2:"19";s:3:"nd ";s:2:"20";s:3:"to ";s:2:"21";s:3:" be";s:2:"22";s:3:" fo";s:2:"23";s:3:"ake";s:2:"24";s:3:"im ";s:2:"25";s:3:" pe";s:2:"26";s:3:"le ";s:2:"27";s:3:"go ";s:2:"28";s:3:"ll ";s:2:"29";s:3:"de ";s:2:"30";s:3:"e s";s:2:"31";s:3:"on ";s:2:"32";s:3:"get";s:2:"33";s:3:"ght";s:2:"34";s:3:"igh";s:2:"35";s:3:" ri";s:2:"36";s:3:"et ";s:2:"37";s:3:"rig";s:2:"38";s:3:" ge";s:2:"39";s:3:"y d";s:2:"40";s:3:" na";s:2:"41";s:3:"mak";s:2:"42";s:3:"t t";s:2:"43";s:3:" no";s:2:"44";s:3:"and";s:2:"45";s:3:"tin";s:2:"46";s:3:"ing";s:2:"47";s:3:"eve";s:2:"48";s:3:"ri ";s:2:"49";s:3:" im";s:2:"50";s:3:" am";s:2:"51";s:3:" or";s:2:"52";s:3:"am ";s:2:"53";s:3:"be ";s:2:"54";s:3:" ev";s:2:"55";s:3:" ta";s:2:"56";s:3:"ht ";s:2:"57";s:3:"e w";s:2:"58";s:3:" li";s:2:"59";s:3:"eri";s:2:"60";s:3:"ng ";s:2:"61";s:3:"ver";s:2:"62";s:3:"all";s:2:"63";s:3:"e f";s:2:"64";s:3:"ers";s:2:"65";s:3:"ntr";s:2:"66";s:3:"ont";s:2:"67";s:3:" do";s:2:"68";s:3:"r d";s:2:"69";s:3:" ko";s:2:"70";s:3:" ti";s:2:"71";s:3:"an ";s:2:"72";s:3:"kon";s:2:"73";s:3:"per";s:2:"74";s:3:"tri";s:2:"75";s:3:"y e";s:2:"76";s:3:"rso";s:2:"77";s:3:"son";s:2:"78";s:3:"no ";s:2:"79";s:3:"ome";s:2:"80";s:3:"is ";s:2:"81";s:3:"do ";s:2:"82";s:3:"ne ";s:2:"83";s:3:"one";s:2:"84";s:3:"ion";s:2:"85";s:3:"m g";s:2:"86";s:3:"i k";s:2:"87";s:3:" al";s:2:"88";s:3:"bod";s:2:"89";s:3:"i w";s:2:"90";s:3:"odi";s:2:"91";s:3:" so";s:2:"92";s:3:" wo";s:2:"93";s:3:"o d";s:2:"94";s:3:"st ";s:2:"95";s:3:"t r";s:2:"96";s:3:" of";s:2:"97";s:3:"aim";s:2:"98";s:3:"e g";s:2:"99";s:3:"nai";s:3:"100";s:3:" co";s:3:"101";s:3:"dis";s:3:"102";s:3:"me ";s:3:"103";s:3:"of ";s:3:"104";s:3:" wa";s:3:"105";s:3:"e t";s:3:"106";s:3:" ar";s:3:"107";s:3:"e l";s:3:"108";s:3:"ike";s:3:"109";s:3:"lik";s:3:"110";s:3:"t a";s:3:"111";s:3:"wor";s:3:"112";s:3:"alk";s:3:"113";s:3:"ell";s:3:"114";s:3:"eop";s:3:"115";s:3:"lk ";s:3:"116";s:3:"opl";s:3:"117";s:3:"peo";s:3:"118";s:3:"ple";s:3:"119";s:3:"re ";s:3:"120";s:3:"tal";s:3:"121";s:3:"any";s:3:"122";s:3:"e a";s:3:"123";s:3:"o g";s:3:"124";s:3:"art";s:3:"125";s:3:"cle";s:3:"126";s:3:"i p";s:3:"127";s:3:"icl";s:3:"128";s:3:"rti";s:3:"129";s:3:"the";s:3:"130";s:3:"tic";s:3:"131";s:3:"we ";s:3:"132";s:3:"f d";s:3:"133";s:3:"in ";s:3:"134";s:3:" mu";s:3:"135";s:3:"e n";s:3:"136";s:3:"e o";s:3:"137";s:3:"mus";s:3:"138";s:3:"n d";s:3:"139";s:3:"na ";s:3:"140";s:3:"o m";s:3:"141";s:3:"ust";s:3:"142";s:3:"wel";s:3:"143";s:3:"e e";s:3:"144";s:3:"her";s:3:"145";s:3:"m d";s:3:"146";s:3:"nt ";s:3:"147";s:3:" fi";s:3:"148";s:3:"at ";s:3:"149";s:3:"e b";s:3:"150";s:3:"it ";s:3:"151";s:3:"m w";s:3:"152";s:3:"o t";s:3:"153";s:3:"wan";s:3:"154";s:3:"com";s:3:"155";s:3:"da ";s:3:"156";s:3:"fit";s:3:"157";s:3:"m b";s:3:"158";s:3:"so ";s:3:"159";s:3:" fr";s:3:"160";s:3:"ce ";s:3:"161";s:3:"er ";s:3:"162";s:3:"o a";s:3:"163";s:3:" if";s:3:"164";s:3:" on";s:3:"165";s:3:"ent";s:3:"166";s:3:"if ";s:3:"167";s:3:"ind";s:3:"168";s:3:"kin";s:3:"169";s:3:"l d";s:3:"170";s:3:"man";s:3:"171";s:3:"o s";s:3:"172";s:3:" se";s:3:"173";s:3:"y a";s:3:"174";s:3:"y m";s:3:"175";s:3:" re";s:3:"176";s:3:"ee ";s:3:"177";s:3:"k a";s:3:"178";s:3:"t s";s:3:"179";s:3:"ve ";s:3:"180";s:3:"y w";s:3:"181";s:3:" ki";s:3:"182";s:3:"eti";s:3:"183";s:3:"men";s:3:"184";s:3:"ta ";s:3:"185";s:3:"y n";s:3:"186";s:3:"d t";s:3:"187";s:3:"dey";s:3:"188";s:3:"e c";s:3:"189";s:3:"i o";s:3:"190";s:3:"ibo";s:3:"191";s:3:"ld ";s:3:"192";s:3:"m t";s:3:"193";s:3:"n b";s:3:"194";s:3:"o b";s:3:"195";s:3:"ow ";s:3:"196";s:3:"ree";s:3:"197";s:3:"rio";s:3:"198";s:3:"t d";s:3:"199";s:3:" hu";s:3:"200";s:3:" su";s:3:"201";s:3:"en ";s:3:"202";s:3:"hts";s:3:"203";s:3:"ive";s:3:"204";s:3:"m n";s:3:"205";s:3:"n g";s:3:"206";s:3:"ny ";s:3:"207";s:3:"oth";s:3:"208";s:3:"ts ";s:3:"209";s:3:" as";s:3:"210";s:3:" wh";s:3:"211";s:3:"as ";s:3:"212";s:3:"gom";s:3:"213";s:3:"hum";s:3:"214";s:3:"k s";s:3:"215";s:3:"oda";s:3:"216";s:3:"ork";s:3:"217";s:3:"se ";s:3:"218";s:3:"uma";s:3:"219";s:3:"ut ";s:3:"220";s:3:" ba";s:3:"221";s:3:" ot";s:3:"222";s:3:"ano";s:3:"223";s:3:"m a";s:3:"224";s:3:"m s";s:3:"225";s:3:"nod";s:3:"226";s:3:"om ";s:3:"227";s:3:"r a";s:3:"228";s:3:"r i";s:3:"229";s:3:"rk ";s:3:"230";s:3:" fa";s:3:"231";s:3:" si";s:3:"232";s:3:" th";s:3:"233";s:3:"ad ";s:3:"234";s:3:"e m";s:3:"235";s:3:"eac";s:3:"236";s:3:"m m";s:3:"237";s:3:"n w";s:3:"238";s:3:"nob";s:3:"239";s:3:"orl";s:3:"240";s:3:"out";s:3:"241";s:3:"own";s:3:"242";s:3:"r s";s:3:"243";s:3:"r w";s:3:"244";s:3:"rib";s:3:"245";s:3:"rld";s:3:"246";s:3:"s w";s:3:"247";s:3:"ure";s:3:"248";s:3:"wn ";s:3:"249";s:3:" ow";s:3:"250";s:3:"a d";s:3:"251";s:3:"bad";s:3:"252";s:3:"ch ";s:3:"253";s:3:"fre";s:3:"254";s:3:"gs ";s:3:"255";s:3:"m k";s:3:"256";s:3:"nce";s:3:"257";s:3:"ngs";s:3:"258";s:3:"o f";s:3:"259";s:3:"obo";s:3:"260";s:3:"rea";s:3:"261";s:3:"sur";s:3:"262";s:3:"y o";s:3:"263";s:3:" ab";s:3:"264";s:3:" un";s:3:"265";s:3:"abo";s:3:"266";s:3:"ach";s:3:"267";s:3:"bou";s:3:"268";s:3:"d m";s:3:"269";s:3:"dat";s:3:"270";s:3:"e p";s:3:"271";s:3:"g w";s:3:"272";s:3:"hol";s:3:"273";s:3:"i m";s:3:"274";s:3:"i r";s:3:"275";s:3:"m f";s:3:"276";s:3:"m o";s:3:"277";s:3:"n o";s:3:"278";s:3:"now";s:3:"279";s:3:"ry ";s:3:"280";s:3:"s a";s:3:"281";s:3:"t o";s:3:"282";s:3:"tay";s:3:"283";s:3:"wet";s:3:"284";s:3:" ag";s:3:"285";s:3:" bo";s:3:"286";s:3:" da";s:3:"287";s:3:" pr";s:3:"288";s:3:"arr";s:3:"289";s:3:"ati";s:3:"290";s:3:"d d";s:3:"291";s:3:"d p";s:3:"292";s:3:"i g";s:3:"293";s:3:"i t";s:3:"294";s:3:"liv";s:3:"295";s:3:"ly ";s:3:"296";s:3:"n a";s:3:"297";s:3:"od ";s:3:"298";s:3:"ok ";s:3:"299";}s:6:"polish";a:300:{s:3:"ie ";s:1:"0";s:3:"nie";s:1:"1";s:3:"em ";s:1:"2";s:3:" ni";s:1:"3";s:3:" po";s:1:"4";s:3:" pr";s:1:"5";s:3:"dzi";s:1:"6";s:3:" na";s:1:"7";s:4:"że ";s:1:"8";s:3:"rze";s:1:"9";s:3:"na ";s:2:"10";s:4:"Å‚em";s:2:"11";s:3:"wie";s:2:"12";s:3:" w ";s:2:"13";s:4:" że";s:2:"14";s:3:"go ";s:2:"15";s:3:" by";s:2:"16";s:3:"prz";s:2:"17";s:3:"owa";s:2:"18";s:4:"iÄ™ ";s:2:"19";s:3:" do";s:2:"20";s:3:" si";s:2:"21";s:3:"owi";s:2:"22";s:3:" pa";s:2:"23";s:3:" za";s:2:"24";s:3:"ch ";s:2:"25";s:3:"ego";s:2:"26";s:4:"aÅ‚ ";s:2:"27";s:4:"siÄ™";s:2:"28";s:3:"ej ";s:2:"29";s:4:"waÅ‚";s:2:"30";s:3:"ym ";s:2:"31";s:3:"ani";s:2:"32";s:4:"aÅ‚e";s:2:"33";s:3:"to ";s:2:"34";s:3:" i ";s:2:"35";s:3:" to";s:2:"36";s:3:" te";s:2:"37";s:3:"e p";s:2:"38";s:3:" je";s:2:"39";s:3:" z ";s:2:"40";s:3:"czy";s:2:"41";s:4:"byÅ‚";s:2:"42";s:3:"pan";s:2:"43";s:3:"sta";s:2:"44";s:3:"kie";s:2:"45";s:3:" ja";s:2:"46";s:3:"do ";s:2:"47";s:3:" ch";s:2:"48";s:3:" cz";s:2:"49";s:3:" wi";s:2:"50";s:4:"iaÅ‚";s:2:"51";s:3:"a p";s:2:"52";s:3:"pow";s:2:"53";s:3:" mi";s:2:"54";s:3:"li ";s:2:"55";s:3:"eni";s:2:"56";s:3:"zie";s:2:"57";s:3:" ta";s:2:"58";s:3:" wa";s:2:"59";s:4:"Å‚o ";s:2:"60";s:4:"ać ";s:2:"61";s:3:"dy ";s:2:"62";s:3:"ak ";s:2:"63";s:3:"e w";s:2:"64";s:3:" a ";s:2:"65";s:3:" od";s:2:"66";s:3:" st";s:2:"67";s:3:"nia";s:2:"68";s:3:"rzy";s:2:"69";s:3:"ied";s:2:"70";s:3:" kt";s:2:"71";s:3:"odz";s:2:"72";s:3:"cie";s:2:"73";s:3:"cze";s:2:"74";s:3:"ia ";s:2:"75";s:3:"iel";s:2:"76";s:4:"któ";s:2:"77";s:3:"o p";s:2:"78";s:4:"tór";s:2:"79";s:4:"Å›ci";s:2:"80";s:3:" sp";s:2:"81";s:3:" wy";s:2:"82";s:3:"jak";s:2:"83";s:3:"tak";s:2:"84";s:3:"zy ";s:2:"85";s:3:" mo";s:2:"86";s:5:"ałę";s:2:"87";s:3:"pro";s:2:"88";s:3:"ski";s:2:"89";s:3:"tem";s:2:"90";s:5:"łęs";s:2:"91";s:3:" tr";s:2:"92";s:3:"e m";s:2:"93";s:3:"jes";s:2:"94";s:3:"my ";s:2:"95";s:3:" ro";s:2:"96";s:3:"edz";s:2:"97";s:3:"eli";s:2:"98";s:3:"iej";s:2:"99";s:3:" rz";s:3:"100";s:3:"a n";s:3:"101";s:3:"ale";s:3:"102";s:3:"an ";s:3:"103";s:3:"e s";s:3:"104";s:3:"est";s:3:"105";s:3:"le ";s:3:"106";s:3:"o s";s:3:"107";s:3:"i p";s:3:"108";s:3:"ki ";s:3:"109";s:3:" co";s:3:"110";s:3:"ada";s:3:"111";s:3:"czn";s:3:"112";s:3:"e t";s:3:"113";s:3:"e z";s:3:"114";s:3:"ent";s:3:"115";s:3:"ny ";s:3:"116";s:3:"pre";s:3:"117";s:4:"rzÄ…";s:3:"118";s:3:"y s";s:3:"119";s:3:" ko";s:3:"120";s:3:" o ";s:3:"121";s:3:"ach";s:3:"122";s:3:"am ";s:3:"123";s:3:"e n";s:3:"124";s:3:"o t";s:3:"125";s:3:"oli";s:3:"126";s:3:"pod";s:3:"127";s:3:"zia";s:3:"128";s:3:" go";s:3:"129";s:3:" ka";s:3:"130";s:3:"by ";s:3:"131";s:3:"ieg";s:3:"132";s:3:"ier";s:3:"133";s:4:"noÅ›";s:3:"134";s:3:"roz";s:3:"135";s:3:"spo";s:3:"136";s:3:"ych";s:3:"137";s:4:"zÄ…d";s:3:"138";s:3:" mn";s:3:"139";s:3:"acz";s:3:"140";s:3:"adz";s:3:"141";s:3:"bie";s:3:"142";s:3:"cho";s:3:"143";s:3:"mni";s:3:"144";s:3:"o n";s:3:"145";s:3:"ost";s:3:"146";s:3:"pra";s:3:"147";s:3:"ze ";s:3:"148";s:4:"Å‚a ";s:3:"149";s:3:" so";s:3:"150";s:3:"a m";s:3:"151";s:3:"cza";s:3:"152";s:3:"iem";s:3:"153";s:4:"ić ";s:3:"154";s:3:"obi";s:3:"155";s:4:"yÅ‚ ";s:3:"156";s:4:"yÅ‚o";s:3:"157";s:3:" mu";s:3:"158";s:4:" mó";s:3:"159";s:3:"a t";s:3:"160";s:3:"acj";s:3:"161";s:3:"ci ";s:3:"162";s:3:"e b";s:3:"163";s:3:"ich";s:3:"164";s:3:"kan";s:3:"165";s:3:"mi ";s:3:"166";s:3:"mie";s:3:"167";s:4:"oÅ›c";s:3:"168";s:3:"row";s:3:"169";s:3:"zen";s:3:"170";s:3:"zyd";s:3:"171";s:3:" al";s:3:"172";s:3:" re";s:3:"173";s:3:"a w";s:3:"174";s:3:"den";s:3:"175";s:3:"edy";s:3:"176";s:4:"iÅ‚ ";s:3:"177";s:3:"ko ";s:3:"178";s:3:"o w";s:3:"179";s:3:"rac";s:3:"180";s:4:"Å›my";s:3:"181";s:3:" ma";s:3:"182";s:3:" ra";s:3:"183";s:3:" sz";s:3:"184";s:3:" ty";s:3:"185";s:3:"e j";s:3:"186";s:3:"isk";s:3:"187";s:3:"ji ";s:3:"188";s:3:"ka ";s:3:"189";s:3:"m s";s:3:"190";s:3:"no ";s:3:"191";s:3:"o z";s:3:"192";s:3:"rez";s:3:"193";s:3:"wa ";s:3:"194";s:4:"ów ";s:3:"195";s:4:"Å‚ow";s:3:"196";s:5:"ść ";s:3:"197";s:3:" ob";s:3:"198";s:3:"ech";s:3:"199";s:3:"ecz";s:3:"200";s:3:"ezy";s:3:"201";s:3:"i w";s:3:"202";s:3:"ja ";s:3:"203";s:3:"kon";s:3:"204";s:4:"mów";s:3:"205";s:3:"ne ";s:3:"206";s:3:"ni ";s:3:"207";s:3:"now";s:3:"208";s:3:"nym";s:3:"209";s:3:"pol";s:3:"210";s:3:"pot";s:3:"211";s:3:"yde";s:3:"212";s:3:" dl";s:3:"213";s:3:" sy";s:3:"214";s:3:"a s";s:3:"215";s:3:"aki";s:3:"216";s:3:"ali";s:3:"217";s:3:"dla";s:3:"218";s:3:"icz";s:3:"219";s:3:"ku ";s:3:"220";s:3:"ocz";s:3:"221";s:3:"st ";s:3:"222";s:3:"str";s:3:"223";s:3:"szy";s:3:"224";s:3:"trz";s:3:"225";s:3:"wia";s:3:"226";s:3:"y p";s:3:"227";s:3:"za ";s:3:"228";s:3:" wt";s:3:"229";s:3:"chc";s:3:"230";s:3:"esz";s:3:"231";s:3:"iec";s:3:"232";s:3:"im ";s:3:"233";s:3:"la ";s:3:"234";s:3:"o m";s:3:"235";s:3:"sa ";s:3:"236";s:4:"wać";s:3:"237";s:3:"y n";s:3:"238";s:3:"zac";s:3:"239";s:3:"zec";s:3:"240";s:3:" gd";s:3:"241";s:3:"a z";s:3:"242";s:3:"ard";s:3:"243";s:3:"co ";s:3:"244";s:3:"dar";s:3:"245";s:3:"e r";s:3:"246";s:3:"ien";s:3:"247";s:3:"m n";s:3:"248";s:3:"m w";s:3:"249";s:3:"mia";s:3:"250";s:4:"moż";s:3:"251";s:3:"raw";s:3:"252";s:3:"rdz";s:3:"253";s:3:"tan";s:3:"254";s:3:"ted";s:3:"255";s:3:"teg";s:3:"256";s:4:"wiÅ‚";s:3:"257";s:3:"wte";s:3:"258";s:3:"y z";s:3:"259";s:3:"zna";s:3:"260";s:4:"zÅ‚o";s:3:"261";s:3:"a r";s:3:"262";s:3:"awi";s:3:"263";s:3:"bar";s:3:"264";s:3:"cji";s:3:"265";s:4:"czÄ…";s:3:"266";s:3:"dow";s:3:"267";s:4:"eż ";s:3:"268";s:3:"gdy";s:3:"269";s:3:"iek";s:3:"270";s:3:"je ";s:3:"271";s:3:"o d";s:3:"272";s:4:"taÅ‚";s:3:"273";s:3:"wal";s:3:"274";s:3:"wsz";s:3:"275";s:3:"zed";s:3:"276";s:4:"ówi";s:3:"277";s:4:"Ä™sa";s:3:"278";s:3:" ba";s:3:"279";s:3:" lu";s:3:"280";s:3:" wo";s:3:"281";s:3:"aln";s:3:"282";s:3:"arn";s:3:"283";s:3:"ba ";s:3:"284";s:3:"dzo";s:3:"285";s:3:"e c";s:3:"286";s:3:"hod";s:3:"287";s:3:"igi";s:3:"288";s:3:"lig";s:3:"289";s:3:"m p";s:3:"290";s:4:"myÅ›";s:3:"291";s:3:"o c";s:3:"292";s:3:"oni";s:3:"293";s:3:"rel";s:3:"294";s:3:"sku";s:3:"295";s:3:"ste";s:3:"296";s:3:"y w";s:3:"297";s:3:"yst";s:3:"298";s:3:"z w";s:3:"299";}s:10:"portuguese";a:300:{s:3:"de ";s:1:"0";s:3:" de";s:1:"1";s:3:"os ";s:1:"2";s:3:"as ";s:1:"3";s:3:"que";s:1:"4";s:3:" co";s:1:"5";s:4:"ão ";s:1:"6";s:3:"o d";s:1:"7";s:3:" qu";s:1:"8";s:3:"ue ";s:1:"9";s:3:" a ";s:2:"10";s:3:"do ";s:2:"11";s:3:"ent";s:2:"12";s:3:" se";s:2:"13";s:3:"a d";s:2:"14";s:3:"s d";s:2:"15";s:3:"e a";s:2:"16";s:3:"es ";s:2:"17";s:3:" pr";s:2:"18";s:3:"ra ";s:2:"19";s:3:"da ";s:2:"20";s:3:" es";s:2:"21";s:3:" pa";s:2:"22";s:3:"to ";s:2:"23";s:3:" o ";s:2:"24";s:3:"em ";s:2:"25";s:3:"con";s:2:"26";s:3:"o p";s:2:"27";s:3:" do";s:2:"28";s:3:"est";s:2:"29";s:3:"nte";s:2:"30";s:5:"ção";s:2:"31";s:3:" da";s:2:"32";s:3:" re";s:2:"33";s:3:"ma ";s:2:"34";s:3:"par";s:2:"35";s:3:" te";s:2:"36";s:3:"ara";s:2:"37";s:3:"ida";s:2:"38";s:3:" e ";s:2:"39";s:3:"ade";s:2:"40";s:3:"is ";s:2:"41";s:3:" um";s:2:"42";s:3:" po";s:2:"43";s:3:"a a";s:2:"44";s:3:"a p";s:2:"45";s:3:"dad";s:2:"46";s:3:"no ";s:2:"47";s:3:"te ";s:2:"48";s:3:" no";s:2:"49";s:5:"açã";s:2:"50";s:3:"pro";s:2:"51";s:3:"al ";s:2:"52";s:3:"com";s:2:"53";s:3:"e d";s:2:"54";s:3:"s a";s:2:"55";s:3:" as";s:2:"56";s:3:"a c";s:2:"57";s:3:"er ";s:2:"58";s:3:"men";s:2:"59";s:3:"s e";s:2:"60";s:3:"ais";s:2:"61";s:3:"nto";s:2:"62";s:3:"res";s:2:"63";s:3:"a s";s:2:"64";s:3:"ado";s:2:"65";s:3:"ist";s:2:"66";s:3:"s p";s:2:"67";s:3:"tem";s:2:"68";s:3:"e c";s:2:"69";s:3:"e s";s:2:"70";s:3:"ia ";s:2:"71";s:3:"o s";s:2:"72";s:3:"o a";s:2:"73";s:3:"o c";s:2:"74";s:3:"e p";s:2:"75";s:3:"sta";s:2:"76";s:3:"ta ";s:2:"77";s:3:"tra";s:2:"78";s:3:"ura";s:2:"79";s:3:" di";s:2:"80";s:3:" pe";s:2:"81";s:3:"ar ";s:2:"82";s:3:"e e";s:2:"83";s:3:"ser";s:2:"84";s:3:"uma";s:2:"85";s:3:"mos";s:2:"86";s:3:"se ";s:2:"87";s:3:" ca";s:2:"88";s:3:"o e";s:2:"89";s:3:" na";s:2:"90";s:3:"a e";s:2:"91";s:3:"des";s:2:"92";s:3:"ont";s:2:"93";s:3:"por";s:2:"94";s:3:" in";s:2:"95";s:3:" ma";s:2:"96";s:3:"ect";s:2:"97";s:3:"o q";s:2:"98";s:3:"ria";s:2:"99";s:3:"s c";s:3:"100";s:3:"ste";s:3:"101";s:3:"ver";s:3:"102";s:3:"cia";s:3:"103";s:3:"dos";s:3:"104";s:3:"ica";s:3:"105";s:3:"str";s:3:"106";s:3:" ao";s:3:"107";s:3:" em";s:3:"108";s:3:"das";s:3:"109";s:3:"e t";s:3:"110";s:3:"ito";s:3:"111";s:3:"iza";s:3:"112";s:3:"pre";s:3:"113";s:3:"tos";s:3:"114";s:4:" nã";s:3:"115";s:3:"ada";s:3:"116";s:4:"não";s:3:"117";s:3:"ess";s:3:"118";s:3:"eve";s:3:"119";s:3:"or ";s:3:"120";s:3:"ran";s:3:"121";s:3:"s n";s:3:"122";s:3:"s t";s:3:"123";s:3:"tur";s:3:"124";s:3:" ac";s:3:"125";s:3:" fa";s:3:"126";s:3:"a r";s:3:"127";s:3:"ens";s:3:"128";s:3:"eri";s:3:"129";s:3:"na ";s:3:"130";s:3:"sso";s:3:"131";s:3:" si";s:3:"132";s:4:" é ";s:3:"133";s:3:"bra";s:3:"134";s:3:"esp";s:3:"135";s:3:"mo ";s:3:"136";s:3:"nos";s:3:"137";s:3:"ro ";s:3:"138";s:3:"um ";s:3:"139";s:3:"a n";s:3:"140";s:3:"ao ";s:3:"141";s:3:"ico";s:3:"142";s:3:"liz";s:3:"143";s:3:"min";s:3:"144";s:3:"o n";s:3:"145";s:3:"ons";s:3:"146";s:3:"pri";s:3:"147";s:3:"ten";s:3:"148";s:3:"tic";s:3:"149";s:4:"ões";s:3:"150";s:3:" tr";s:3:"151";s:3:"a m";s:3:"152";s:3:"aga";s:3:"153";s:3:"e n";s:3:"154";s:3:"ili";s:3:"155";s:3:"ime";s:3:"156";s:3:"m a";s:3:"157";s:3:"nci";s:3:"158";s:3:"nha";s:3:"159";s:3:"nta";s:3:"160";s:3:"spe";s:3:"161";s:3:"tiv";s:3:"162";s:3:"am ";s:3:"163";s:3:"ano";s:3:"164";s:3:"arc";s:3:"165";s:3:"ass";s:3:"166";s:3:"cer";s:3:"167";s:3:"e o";s:3:"168";s:3:"ece";s:3:"169";s:3:"emo";s:3:"170";s:3:"ga ";s:3:"171";s:3:"o m";s:3:"172";s:3:"rag";s:3:"173";s:3:"so ";s:3:"174";s:4:"são";s:3:"175";s:3:" au";s:3:"176";s:3:" os";s:3:"177";s:3:" sa";s:3:"178";s:3:"ali";s:3:"179";s:3:"ca ";s:3:"180";s:3:"ema";s:3:"181";s:3:"emp";s:3:"182";s:3:"ici";s:3:"183";s:3:"ido";s:3:"184";s:3:"inh";s:3:"185";s:3:"iss";s:3:"186";s:3:"l d";s:3:"187";s:3:"la ";s:3:"188";s:3:"lic";s:3:"189";s:3:"m c";s:3:"190";s:3:"mai";s:3:"191";s:3:"onc";s:3:"192";s:3:"pec";s:3:"193";s:3:"ram";s:3:"194";s:3:"s q";s:3:"195";s:3:" ci";s:3:"196";s:3:" en";s:3:"197";s:3:" fo";s:3:"198";s:3:"a o";s:3:"199";s:3:"ame";s:3:"200";s:3:"car";s:3:"201";s:3:"co ";s:3:"202";s:3:"der";s:3:"203";s:3:"eir";s:3:"204";s:3:"ho ";s:3:"205";s:3:"io ";s:3:"206";s:3:"om ";s:3:"207";s:3:"ora";s:3:"208";s:3:"r a";s:3:"209";s:3:"sen";s:3:"210";s:3:"ter";s:3:"211";s:3:" br";s:3:"212";s:3:" ex";s:3:"213";s:3:"a u";s:3:"214";s:3:"cul";s:3:"215";s:3:"dev";s:3:"216";s:3:"e u";s:3:"217";s:3:"ha ";s:3:"218";s:3:"mpr";s:3:"219";s:3:"nce";s:3:"220";s:3:"oca";s:3:"221";s:3:"ove";s:3:"222";s:3:"rio";s:3:"223";s:3:"s o";s:3:"224";s:3:"sa ";s:3:"225";s:3:"sem";s:3:"226";s:3:"tes";s:3:"227";s:3:"uni";s:3:"228";s:3:"ven";s:3:"229";s:4:"zaç";s:3:"230";s:5:"çõe";s:3:"231";s:3:" ad";s:3:"232";s:3:" al";s:3:"233";s:3:" an";s:3:"234";s:3:" mi";s:3:"235";s:3:" mo";s:3:"236";s:3:" ve";s:3:"237";s:4:" à ";s:3:"238";s:3:"a i";s:3:"239";s:3:"a q";s:3:"240";s:3:"ala";s:3:"241";s:3:"amo";s:3:"242";s:3:"bli";s:3:"243";s:3:"cen";s:3:"244";s:3:"col";s:3:"245";s:3:"cos";s:3:"246";s:3:"cto";s:3:"247";s:3:"e m";s:3:"248";s:3:"e v";s:3:"249";s:3:"ede";s:3:"250";s:4:"gás";s:3:"251";s:3:"ias";s:3:"252";s:3:"ita";s:3:"253";s:3:"iva";s:3:"254";s:3:"ndo";s:3:"255";s:3:"o t";s:3:"256";s:3:"ore";s:3:"257";s:3:"r d";s:3:"258";s:3:"ral";s:3:"259";s:3:"rea";s:3:"260";s:3:"s f";s:3:"261";s:3:"sid";s:3:"262";s:3:"tro";s:3:"263";s:3:"vel";s:3:"264";s:3:"vid";s:3:"265";s:4:"ás ";s:3:"266";s:3:" ap";s:3:"267";s:3:" ar";s:3:"268";s:3:" ce";s:3:"269";s:3:" ou";s:3:"270";s:4:" pú";s:3:"271";s:3:" so";s:3:"272";s:3:" vi";s:3:"273";s:3:"a f";s:3:"274";s:3:"act";s:3:"275";s:3:"arr";s:3:"276";s:3:"bil";s:3:"277";s:3:"cam";s:3:"278";s:3:"e f";s:3:"279";s:3:"e i";s:3:"280";s:3:"el ";s:3:"281";s:3:"for";s:3:"282";s:3:"lem";s:3:"283";s:3:"lid";s:3:"284";s:3:"lo ";s:3:"285";s:3:"m d";s:3:"286";s:3:"mar";s:3:"287";s:3:"nde";s:3:"288";s:3:"o o";s:3:"289";s:3:"omo";s:3:"290";s:3:"ort";s:3:"291";s:3:"per";s:3:"292";s:4:"púb";s:3:"293";s:3:"r u";s:3:"294";s:3:"rei";s:3:"295";s:3:"rem";s:3:"296";s:3:"ros";s:3:"297";s:3:"rre";s:3:"298";s:3:"ssi";s:3:"299";}s:8:"romanian";a:300:{s:3:" de";s:1:"0";s:4:" în";s:1:"1";s:3:"de ";s:1:"2";s:3:" a ";s:1:"3";s:3:"ul ";s:1:"4";s:3:" co";s:1:"5";s:4:"în ";s:1:"6";s:3:"re ";s:1:"7";s:3:"e d";s:1:"8";s:3:"ea ";s:1:"9";s:3:" di";s:2:"10";s:3:" pr";s:2:"11";s:3:"le ";s:2:"12";s:4:"ÅŸi ";s:2:"13";s:3:"are";s:2:"14";s:3:"at ";s:2:"15";s:3:"con";s:2:"16";s:3:"ui ";s:2:"17";s:4:" ÅŸi";s:2:"18";s:3:"i d";s:2:"19";s:3:"ii ";s:2:"20";s:3:" cu";s:2:"21";s:3:"e a";s:2:"22";s:3:"lui";s:2:"23";s:3:"ern";s:2:"24";s:3:"te ";s:2:"25";s:3:"cu ";s:2:"26";s:3:" la";s:2:"27";s:3:"a c";s:2:"28";s:4:"că ";s:2:"29";s:3:"din";s:2:"30";s:3:"e c";s:2:"31";s:3:"or ";s:2:"32";s:3:"ulu";s:2:"33";s:3:"ne ";s:2:"34";s:3:"ter";s:2:"35";s:3:"la ";s:2:"36";s:4:"să ";s:2:"37";s:3:"tat";s:2:"38";s:3:"tre";s:2:"39";s:3:" ac";s:2:"40";s:4:" să";s:2:"41";s:3:"est";s:2:"42";s:3:"st ";s:2:"43";s:4:"tă ";s:2:"44";s:3:" ca";s:2:"45";s:3:" ma";s:2:"46";s:3:" pe";s:2:"47";s:3:"cur";s:2:"48";s:3:"ist";s:2:"49";s:4:"mân";s:2:"50";s:3:"a d";s:2:"51";s:3:"i c";s:2:"52";s:3:"nat";s:2:"53";s:3:" ce";s:2:"54";s:3:"i a";s:2:"55";s:3:"ia ";s:2:"56";s:3:"in ";s:2:"57";s:3:"scu";s:2:"58";s:3:" mi";s:2:"59";s:3:"ato";s:2:"60";s:4:"aÅ£i";s:2:"61";s:3:"ie ";s:2:"62";s:3:" re";s:2:"63";s:3:" se";s:2:"64";s:3:"a a";s:2:"65";s:3:"int";s:2:"66";s:3:"ntr";s:2:"67";s:3:"tru";s:2:"68";s:3:"uri";s:2:"69";s:4:"ă a";s:2:"70";s:3:" fo";s:2:"71";s:3:" pa";s:2:"72";s:3:"ate";s:2:"73";s:3:"ini";s:2:"74";s:3:"tul";s:2:"75";s:3:"ent";s:2:"76";s:3:"min";s:2:"77";s:3:"pre";s:2:"78";s:3:"pro";s:2:"79";s:3:"a p";s:2:"80";s:3:"e p";s:2:"81";s:3:"e s";s:2:"82";s:3:"ei ";s:2:"83";s:4:"nă ";s:2:"84";s:3:"par";s:2:"85";s:3:"rna";s:2:"86";s:3:"rul";s:2:"87";s:3:"tor";s:2:"88";s:3:" in";s:2:"89";s:3:" ro";s:2:"90";s:3:" tr";s:2:"91";s:3:" un";s:2:"92";s:3:"al ";s:2:"93";s:3:"ale";s:2:"94";s:3:"art";s:2:"95";s:3:"ce ";s:2:"96";s:3:"e e";s:2:"97";s:4:"e î";s:2:"98";s:3:"fos";s:2:"99";s:3:"ita";s:3:"100";s:3:"nte";s:3:"101";s:4:"omâ";s:3:"102";s:3:"ost";s:3:"103";s:3:"rom";s:3:"104";s:3:"ru ";s:3:"105";s:3:"str";s:3:"106";s:3:"ver";s:3:"107";s:3:" ex";s:3:"108";s:3:" na";s:3:"109";s:3:"a f";s:3:"110";s:3:"lor";s:3:"111";s:3:"nis";s:3:"112";s:3:"rea";s:3:"113";s:3:"rit";s:3:"114";s:3:" al";s:3:"115";s:3:" eu";s:3:"116";s:3:" no";s:3:"117";s:3:"ace";s:3:"118";s:3:"cer";s:3:"119";s:3:"ile";s:3:"120";s:3:"nal";s:3:"121";s:3:"pri";s:3:"122";s:3:"ri ";s:3:"123";s:3:"sta";s:3:"124";s:3:"ste";s:3:"125";s:4:"Å£ie";s:3:"126";s:3:" au";s:3:"127";s:3:" da";s:3:"128";s:3:" ju";s:3:"129";s:3:" po";s:3:"130";s:3:"ar ";s:3:"131";s:3:"au ";s:3:"132";s:3:"ele";s:3:"133";s:3:"ere";s:3:"134";s:3:"eri";s:3:"135";s:3:"ina";s:3:"136";s:3:"n a";s:3:"137";s:3:"n c";s:3:"138";s:3:"res";s:3:"139";s:3:"se ";s:3:"140";s:3:"t a";s:3:"141";s:3:"tea";s:3:"142";s:4:" că";s:3:"143";s:3:" do";s:3:"144";s:3:" fi";s:3:"145";s:3:"a s";s:3:"146";s:4:"ată";s:3:"147";s:3:"com";s:3:"148";s:4:"e ÅŸ";s:3:"149";s:3:"eur";s:3:"150";s:3:"guv";s:3:"151";s:3:"i s";s:3:"152";s:3:"ice";s:3:"153";s:3:"ili";s:3:"154";s:3:"na ";s:3:"155";s:3:"rec";s:3:"156";s:3:"rep";s:3:"157";s:3:"ril";s:3:"158";s:3:"rne";s:3:"159";s:3:"rti";s:3:"160";s:3:"uro";s:3:"161";s:3:"uve";s:3:"162";s:4:"ă p";s:3:"163";s:3:" ar";s:3:"164";s:3:" o ";s:3:"165";s:3:" su";s:3:"166";s:3:" vi";s:3:"167";s:3:"dec";s:3:"168";s:3:"dre";s:3:"169";s:3:"oar";s:3:"170";s:3:"ons";s:3:"171";s:3:"pe ";s:3:"172";s:3:"rii";s:3:"173";s:3:" ad";s:3:"174";s:3:" ge";s:3:"175";s:3:"a m";s:3:"176";s:3:"a r";s:3:"177";s:3:"ain";s:3:"178";s:3:"ali";s:3:"179";s:3:"car";s:3:"180";s:3:"cat";s:3:"181";s:3:"ecu";s:3:"182";s:3:"ene";s:3:"183";s:3:"ept";s:3:"184";s:3:"ext";s:3:"185";s:3:"ilo";s:3:"186";s:3:"iu ";s:3:"187";s:3:"n p";s:3:"188";s:3:"ori";s:3:"189";s:3:"sec";s:3:"190";s:3:"u p";s:3:"191";s:3:"une";s:3:"192";s:4:"ă c";s:3:"193";s:4:"ÅŸti";s:3:"194";s:4:"Å£ia";s:3:"195";s:3:" ch";s:3:"196";s:3:" gu";s:3:"197";s:3:"ai ";s:3:"198";s:3:"ani";s:3:"199";s:3:"cea";s:3:"200";s:3:"e f";s:3:"201";s:3:"isc";s:3:"202";s:3:"l a";s:3:"203";s:3:"lic";s:3:"204";s:3:"liu";s:3:"205";s:3:"mar";s:3:"206";s:3:"nic";s:3:"207";s:3:"nt ";s:3:"208";s:3:"nul";s:3:"209";s:3:"ris";s:3:"210";s:3:"t c";s:3:"211";s:3:"t p";s:3:"212";s:3:"tic";s:3:"213";s:3:"tid";s:3:"214";s:3:"u a";s:3:"215";s:3:"ucr";s:3:"216";s:3:" as";s:3:"217";s:3:" dr";s:3:"218";s:3:" fa";s:3:"219";s:3:" nu";s:3:"220";s:3:" pu";s:3:"221";s:3:" to";s:3:"222";s:3:"cra";s:3:"223";s:3:"dis";s:3:"224";s:4:"enÅ£";s:3:"225";s:3:"esc";s:3:"226";s:3:"gen";s:3:"227";s:3:"it ";s:3:"228";s:3:"ivi";s:3:"229";s:3:"l d";s:3:"230";s:3:"n d";s:3:"231";s:3:"nd ";s:3:"232";s:3:"nu ";s:3:"233";s:3:"ond";s:3:"234";s:3:"pen";s:3:"235";s:3:"ral";s:3:"236";s:3:"riv";s:3:"237";s:3:"rte";s:3:"238";s:3:"sti";s:3:"239";s:3:"t d";s:3:"240";s:3:"ta ";s:3:"241";s:3:"to ";s:3:"242";s:3:"uni";s:3:"243";s:3:"xte";s:3:"244";s:4:"ând";s:3:"245";s:4:"îns";s:3:"246";s:4:"ă s";s:3:"247";s:3:" bl";s:3:"248";s:3:" st";s:3:"249";s:3:" uc";s:3:"250";s:3:"a b";s:3:"251";s:3:"a i";s:3:"252";s:3:"a l";s:3:"253";s:3:"air";s:3:"254";s:3:"ast";s:3:"255";s:3:"bla";s:3:"256";s:3:"bri";s:3:"257";s:3:"che";s:3:"258";s:3:"duc";s:3:"259";s:3:"dul";s:3:"260";s:3:"e m";s:3:"261";s:3:"eas";s:3:"262";s:3:"edi";s:3:"263";s:3:"esp";s:3:"264";s:3:"i l";s:3:"265";s:3:"i p";s:3:"266";s:3:"ica";s:3:"267";s:4:"ică";s:3:"268";s:3:"ir ";s:3:"269";s:3:"iun";s:3:"270";s:3:"jud";s:3:"271";s:3:"lai";s:3:"272";s:3:"lul";s:3:"273";s:3:"mai";s:3:"274";s:3:"men";s:3:"275";s:3:"ni ";s:3:"276";s:3:"pus";s:3:"277";s:3:"put";s:3:"278";s:3:"ra ";s:3:"279";s:3:"rai";s:3:"280";s:3:"rop";s:3:"281";s:3:"sil";s:3:"282";s:3:"ti ";s:3:"283";s:3:"tra";s:3:"284";s:3:"u s";s:3:"285";s:3:"ua ";s:3:"286";s:3:"ude";s:3:"287";s:3:"urs";s:3:"288";s:4:"ân ";s:3:"289";s:4:"înt";s:3:"290";s:5:"ţă ";s:3:"291";s:3:" lu";s:3:"292";s:3:" mo";s:3:"293";s:3:" s ";s:3:"294";s:3:" sa";s:3:"295";s:3:" sc";s:3:"296";s:3:"a u";s:3:"297";s:3:"an ";s:3:"298";s:3:"atu";s:3:"299";}s:7:"russian";a:300:{s:5:" на";s:1:"0";s:5:" пр";s:1:"1";s:5:"то ";s:1:"2";s:5:" не";s:1:"3";s:5:"ли ";s:1:"4";s:5:" по";s:1:"5";s:5:"но ";s:1:"6";s:4:" в ";s:1:"7";s:5:"на ";s:1:"8";s:5:"ть ";s:1:"9";s:5:"не ";s:2:"10";s:4:" и ";s:2:"11";s:5:" ко";s:2:"12";s:5:"ом ";s:2:"13";s:6:"про";s:2:"14";s:5:" то";s:2:"15";s:5:"их ";s:2:"16";s:5:" ка";s:2:"17";s:6:"ать";s:2:"18";s:6:"ото";s:2:"19";s:5:" за";s:2:"20";s:5:"ие ";s:2:"21";s:6:"ова";s:2:"22";s:6:"тел";s:2:"23";s:6:"тор";s:2:"24";s:5:" де";s:2:"25";s:5:"ой ";s:2:"26";s:6:"Ñти";s:2:"27";s:5:" от";s:2:"28";s:5:"ах ";s:2:"29";s:5:"ми ";s:2:"30";s:6:"Ñтр";s:2:"31";s:5:" бе";s:2:"32";s:5:" во";s:2:"33";s:5:" ра";s:2:"34";s:5:"Ð°Ñ ";s:2:"35";s:6:"ват";s:2:"36";s:5:"ей ";s:2:"37";s:5:"ет ";s:2:"38";s:5:"же ";s:2:"39";s:6:"иче";s:2:"40";s:5:"Ð¸Ñ ";s:2:"41";s:5:"ов ";s:2:"42";s:6:"Ñто";s:2:"43";s:5:" об";s:2:"44";s:6:"вер";s:2:"45";s:5:"го ";s:2:"46";s:5:"и в";s:2:"47";s:5:"и п";s:2:"48";s:5:"и Ñ";s:2:"49";s:5:"ии ";s:2:"50";s:6:"иÑÑ‚";s:2:"51";s:5:"о в";s:2:"52";s:6:"оÑÑ‚";s:2:"53";s:6:"тра";s:2:"54";s:5:" те";s:2:"55";s:6:"ели";s:2:"56";s:6:"ере";s:2:"57";s:6:"кот";s:2:"58";s:6:"льн";s:2:"59";s:6:"ник";s:2:"60";s:6:"нти";s:2:"61";s:5:"о Ñ";s:2:"62";s:6:"рор";s:2:"63";s:6:"Ñтв";s:2:"64";s:6:"чеÑ";s:2:"65";s:5:" бо";s:2:"66";s:5:" ве";s:2:"67";s:5:" да";s:2:"68";s:5:" ин";s:2:"69";s:5:" но";s:2:"70";s:4:" Ñ ";s:2:"71";s:5:" Ñо";s:2:"72";s:5:" Ñп";s:2:"73";s:5:" ÑÑ‚";s:2:"74";s:5:" чт";s:2:"75";s:6:"али";s:2:"76";s:6:"ами";s:2:"77";s:6:"вид";s:2:"78";s:6:"дет";s:2:"79";s:5:"е н";s:2:"80";s:6:"ель";s:2:"81";s:6:"еÑк";s:2:"82";s:6:"еÑÑ‚";s:2:"83";s:6:"зал";s:2:"84";s:5:"и н";s:2:"85";s:6:"ива";s:2:"86";s:6:"кон";s:2:"87";s:6:"ого";s:2:"88";s:6:"одн";s:2:"89";s:6:"ожн";s:2:"90";s:6:"оль";s:2:"91";s:6:"ори";s:2:"92";s:6:"ров";s:2:"93";s:6:"Ñко";s:2:"94";s:5:"ÑÑ ";s:2:"95";s:6:"тер";s:2:"96";s:6:"что";s:2:"97";s:5:" мо";s:2:"98";s:5:" Ñа";s:2:"99";s:5:" ÑÑ‚";s:3:"100";s:6:"ант";s:3:"101";s:6:"вÑе";s:3:"102";s:6:"ерр";s:3:"103";s:6:"еÑл";s:3:"104";s:6:"иде";s:3:"105";s:6:"ина";s:3:"106";s:6:"ино";s:3:"107";s:6:"иро";s:3:"108";s:6:"ите";s:3:"109";s:5:"ка ";s:3:"110";s:5:"ко ";s:3:"111";s:6:"кол";s:3:"112";s:6:"ком";s:3:"113";s:5:"ла ";s:3:"114";s:6:"ниÑ";s:3:"115";s:5:"о Ñ‚";s:3:"116";s:6:"оло";s:3:"117";s:6:"ран";s:3:"118";s:6:"ред";s:3:"119";s:5:"ÑÑŒ ";s:3:"120";s:6:"тив";s:3:"121";s:6:"тич";s:3:"122";s:5:"ых ";s:3:"123";s:5:" ви";s:3:"124";s:5:" вÑ";s:3:"125";s:5:" го";s:3:"126";s:5:" ма";s:3:"127";s:5:" Ñл";s:3:"128";s:6:"ако";s:3:"129";s:6:"ани";s:3:"130";s:6:"аÑÑ‚";s:3:"131";s:6:"без";s:3:"132";s:6:"дел";s:3:"133";s:5:"е д";s:3:"134";s:5:"е п";s:3:"135";s:5:"ем ";s:3:"136";s:6:"жно";s:3:"137";s:5:"и д";s:3:"138";s:6:"ика";s:3:"139";s:6:"каз";s:3:"140";s:6:"как";s:3:"141";s:5:"ки ";s:3:"142";s:6:"ноÑ";s:3:"143";s:5:"о н";s:3:"144";s:6:"опа";s:3:"145";s:6:"при";s:3:"146";s:6:"рро";s:3:"147";s:6:"Ñки";s:3:"148";s:5:"ти ";s:3:"149";s:6:"тов";s:3:"150";s:5:"ые ";s:3:"151";s:5:" вы";s:3:"152";s:5:" до";s:3:"153";s:5:" ме";s:3:"154";s:5:" ни";s:3:"155";s:5:" од";s:3:"156";s:5:" ро";s:3:"157";s:5:" Ñв";s:3:"158";s:5:" чи";s:3:"159";s:5:"а н";s:3:"160";s:6:"ает";s:3:"161";s:6:"аза";s:3:"162";s:6:"ате";s:3:"163";s:6:"беÑ";s:3:"164";s:5:"в п";s:3:"165";s:5:"ва ";s:3:"166";s:5:"е в";s:3:"167";s:5:"е м";s:3:"168";s:5:"е Ñ";s:3:"169";s:5:"ез ";s:3:"170";s:6:"ени";s:3:"171";s:5:"за ";s:3:"172";s:6:"зна";s:3:"173";s:6:"ини";s:3:"174";s:6:"кам";s:3:"175";s:6:"ках";s:3:"176";s:6:"кто";s:3:"177";s:6:"лов";s:3:"178";s:6:"мер";s:3:"179";s:6:"мож";s:3:"180";s:6:"нал";s:3:"181";s:6:"ниц";s:3:"182";s:5:"ны ";s:3:"183";s:6:"ным";s:3:"184";s:6:"ора";s:3:"185";s:6:"оро";s:3:"186";s:5:"от ";s:3:"187";s:6:"пор";s:3:"188";s:6:"рав";s:3:"189";s:6:"реÑ";s:3:"190";s:6:"риÑ";s:3:"191";s:6:"роÑ";s:3:"192";s:6:"Ñка";s:3:"193";s:5:"Ñ‚ н";s:3:"194";s:6:"том";s:3:"195";s:6:"чит";s:3:"196";s:6:"шко";s:3:"197";s:5:" бы";s:3:"198";s:4:" о ";s:3:"199";s:5:" тр";s:3:"200";s:5:" уж";s:3:"201";s:5:" чу";s:3:"202";s:5:" шк";s:3:"203";s:5:"а б";s:3:"204";s:5:"а в";s:3:"205";s:5:"а Ñ€";s:3:"206";s:6:"аби";s:3:"207";s:6:"ала";s:3:"208";s:6:"ало";s:3:"209";s:6:"аль";s:3:"210";s:6:"анн";s:3:"211";s:6:"ати";s:3:"212";s:6:"бин";s:3:"213";s:6:"веÑ";s:3:"214";s:6:"вно";s:3:"215";s:5:"во ";s:3:"216";s:6:"вши";s:3:"217";s:6:"дал";s:3:"218";s:6:"дат";s:3:"219";s:6:"дно";s:3:"220";s:5:"е з";s:3:"221";s:6:"его";s:3:"222";s:6:"еле";s:3:"223";s:6:"енн";s:3:"224";s:6:"ент";s:3:"225";s:6:"ете";s:3:"226";s:5:"и о";s:3:"227";s:6:"или";s:3:"228";s:6:"иÑÑŒ";s:3:"229";s:5:"ит ";s:3:"230";s:6:"ици";s:3:"231";s:6:"ков";s:3:"232";s:6:"лен";s:3:"233";s:6:"льк";s:3:"234";s:6:"мен";s:3:"235";s:5:"мы ";s:3:"236";s:6:"нет";s:3:"237";s:5:"ни ";s:3:"238";s:6:"нны";s:3:"239";s:6:"ног";s:3:"240";s:6:"ной";s:3:"241";s:6:"ном";s:3:"242";s:5:"о п";s:3:"243";s:6:"обн";s:3:"244";s:6:"ове";s:3:"245";s:6:"овн";s:3:"246";s:6:"оры";s:3:"247";s:6:"пер";s:3:"248";s:5:"по ";s:3:"249";s:6:"пра";s:3:"250";s:6:"пре";s:3:"251";s:6:"раз";s:3:"252";s:6:"роп";s:3:"253";s:5:"ры ";s:3:"254";s:5:"Ñе ";s:3:"255";s:6:"Ñли";s:3:"256";s:6:"Ñов";s:3:"257";s:6:"тре";s:3:"258";s:6:"Ñ‚ÑÑ";s:3:"259";s:6:"уро";s:3:"260";s:6:"цел";s:3:"261";s:6:"чно";s:3:"262";s:5:"ÑŒ в";s:3:"263";s:6:"ько";s:3:"264";s:6:"ьно";s:3:"265";s:6:"Ñто";s:3:"266";s:5:"ÑŽÑ‚ ";s:3:"267";s:5:"Ñ Ð½";s:3:"268";s:5:" ан";s:3:"269";s:5:" еÑ";s:3:"270";s:5:" же";s:3:"271";s:5:" из";s:3:"272";s:5:" кт";s:3:"273";s:5:" ми";s:3:"274";s:5:" мы";s:3:"275";s:5:" пе";s:3:"276";s:5:" Ñе";s:3:"277";s:5:" це";s:3:"278";s:5:"а м";s:3:"279";s:5:"а п";s:3:"280";s:5:"а Ñ‚";s:3:"281";s:6:"авш";s:3:"282";s:6:"аже";s:3:"283";s:5:"ак ";s:3:"284";s:5:"ал ";s:3:"285";s:6:"але";s:3:"286";s:6:"ане";s:3:"287";s:6:"ачи";s:3:"288";s:6:"ают";s:3:"289";s:6:"бна";s:3:"290";s:6:"бол";s:3:"291";s:5:"бы ";s:3:"292";s:5:"в и";s:3:"293";s:5:"в Ñ";s:3:"294";s:6:"ван";s:3:"295";s:6:"гра";s:3:"296";s:6:"даж";s:3:"297";s:6:"ден";s:3:"298";s:5:"е к";s:3:"299";}s:7:"serbian";a:300:{s:5:" на";s:1:"0";s:5:" је";s:1:"1";s:5:" по";s:1:"2";s:5:"је ";s:1:"3";s:4:" и ";s:1:"4";s:5:" не";s:1:"5";s:5:" пр";s:1:"6";s:5:"га ";s:1:"7";s:5:" Ñв";s:1:"8";s:5:"ог ";s:1:"9";s:5:"а Ñ";s:2:"10";s:5:"их ";s:2:"11";s:5:"на ";s:2:"12";s:6:"кој";s:2:"13";s:6:"ога";s:2:"14";s:4:" у ";s:2:"15";s:5:"а п";s:2:"16";s:5:"не ";s:2:"17";s:5:"ни ";s:2:"18";s:5:"ти ";s:2:"19";s:5:" да";s:2:"20";s:5:"ом ";s:2:"21";s:5:" ве";s:2:"22";s:5:" ÑÑ€";s:2:"23";s:5:"и Ñ";s:2:"24";s:6:"Ñко";s:2:"25";s:5:" об";s:2:"26";s:5:"а н";s:2:"27";s:5:"да ";s:2:"28";s:5:"е н";s:2:"29";s:5:"но ";s:2:"30";s:6:"ног";s:2:"31";s:5:"о ј";s:2:"32";s:5:"ој ";s:2:"33";s:5:" за";s:2:"34";s:5:"ва ";s:2:"35";s:5:"е Ñ";s:2:"36";s:5:"и п";s:2:"37";s:5:"ма ";s:2:"38";s:6:"ник";s:2:"39";s:6:"обр";s:2:"40";s:6:"ова";s:2:"41";s:5:" ко";s:2:"42";s:5:"а и";s:2:"43";s:6:"диј";s:2:"44";s:5:"е п";s:2:"45";s:5:"ка ";s:2:"46";s:5:"ко ";s:2:"47";s:6:"ког";s:2:"48";s:6:"оÑÑ‚";s:2:"49";s:6:"Ñве";s:2:"50";s:6:"Ñтв";s:2:"51";s:6:"Ñти";s:2:"52";s:6:"тра";s:2:"53";s:6:"еди";s:2:"54";s:6:"има";s:2:"55";s:6:"пок";s:2:"56";s:6:"пра";s:2:"57";s:6:"раз";s:2:"58";s:5:"те ";s:2:"59";s:5:" бо";s:2:"60";s:5:" ви";s:2:"61";s:5:" Ñа";s:2:"62";s:6:"аво";s:2:"63";s:6:"бра";s:2:"64";s:6:"гоÑ";s:2:"65";s:5:"е и";s:2:"66";s:6:"ели";s:2:"67";s:6:"ени";s:2:"68";s:5:"за ";s:2:"69";s:6:"ики";s:2:"70";s:5:"ио ";s:2:"71";s:6:"пре";s:2:"72";s:6:"рав";s:2:"73";s:6:"рад";s:2:"74";s:5:"у Ñ";s:2:"75";s:5:"ју ";s:2:"76";s:5:"ња ";s:2:"77";s:5:" би";s:2:"78";s:5:" до";s:2:"79";s:5:" ÑÑ‚";s:2:"80";s:6:"аÑÑ‚";s:2:"81";s:6:"бој";s:2:"82";s:6:"ебо";s:2:"83";s:5:"и н";s:2:"84";s:5:"им ";s:2:"85";s:5:"ку ";s:2:"86";s:6:"лан";s:2:"87";s:6:"неб";s:2:"88";s:6:"ово";s:2:"89";s:6:"ого";s:2:"90";s:6:"оÑл";s:2:"91";s:6:"ојш";s:2:"92";s:6:"пед";s:2:"93";s:6:"Ñтр";s:2:"94";s:6:"чаÑ";s:2:"95";s:5:" го";s:2:"96";s:5:" кр";s:2:"97";s:5:" мо";s:2:"98";s:5:" чл";s:2:"99";s:5:"а м";s:3:"100";s:5:"а о";s:3:"101";s:6:"ако";s:3:"102";s:6:"ача";s:3:"103";s:6:"вел";s:3:"104";s:6:"вет";s:3:"105";s:6:"вог";s:3:"106";s:6:"еда";s:3:"107";s:6:"иÑÑ‚";s:3:"108";s:6:"ити";s:3:"109";s:6:"ије";s:3:"110";s:6:"око";s:3:"111";s:6:"Ñло";s:3:"112";s:6:"Ñрб";s:3:"113";s:6:"чла";s:3:"114";s:5:" бе";s:3:"115";s:5:" оÑ";s:3:"116";s:5:" от";s:3:"117";s:5:" ре";s:3:"118";s:5:" Ñе";s:3:"119";s:5:"а в";s:3:"120";s:5:"ан ";s:3:"121";s:6:"бог";s:3:"122";s:6:"бро";s:3:"123";s:6:"вен";s:3:"124";s:6:"гра";s:3:"125";s:5:"е о";s:3:"126";s:6:"ика";s:3:"127";s:6:"ија";s:3:"128";s:6:"ких";s:3:"129";s:6:"ком";s:3:"130";s:5:"ли ";s:3:"131";s:5:"ну ";s:3:"132";s:6:"ота";s:3:"133";s:6:"ојн";s:3:"134";s:6:"под";s:3:"135";s:6:"рбÑ";s:3:"136";s:6:"ред";s:3:"137";s:6:"рој";s:3:"138";s:5:"Ñа ";s:3:"139";s:6:"Ñни";s:3:"140";s:6:"тач";s:3:"141";s:6:"тва";s:3:"142";s:5:"ја ";s:3:"143";s:5:"ји ";s:3:"144";s:5:" ка";s:3:"145";s:5:" ов";s:3:"146";s:5:" тр";s:3:"147";s:5:"а ј";s:3:"148";s:6:"ави";s:3:"149";s:5:"аз ";s:3:"150";s:6:"ано";s:3:"151";s:6:"био";s:3:"152";s:6:"вик";s:3:"153";s:5:"во ";s:3:"154";s:6:"гов";s:3:"155";s:6:"дни";s:3:"156";s:5:"е ч";s:3:"157";s:6:"его";s:3:"158";s:5:"и о";s:3:"159";s:6:"ива";s:3:"160";s:6:"иво";s:3:"161";s:5:"ик ";s:3:"162";s:6:"ине";s:3:"163";s:6:"ини";s:3:"164";s:6:"ипе";s:3:"165";s:6:"кип";s:3:"166";s:6:"лик";s:3:"167";s:5:"ло ";s:3:"168";s:6:"наш";s:3:"169";s:6:"ноÑ";s:3:"170";s:5:"о Ñ‚";s:3:"171";s:5:"од ";s:3:"172";s:6:"оди";s:3:"173";s:6:"она";s:3:"174";s:6:"оји";s:3:"175";s:6:"поч";s:3:"176";s:6:"про";s:3:"177";s:5:"ра ";s:3:"178";s:6:"риÑ";s:3:"179";s:6:"род";s:3:"180";s:6:"Ñ€ÑÑ‚";s:3:"181";s:5:"Ñе ";s:3:"182";s:6:"Ñпо";s:3:"183";s:6:"Ñта";s:3:"184";s:6:"тић";s:3:"185";s:5:"у д";s:3:"186";s:5:"у н";s:3:"187";s:5:"у о";s:3:"188";s:6:"чин";s:3:"189";s:5:"ша ";s:3:"190";s:6:"јед";s:3:"191";s:6:"јни";s:3:"192";s:5:"ће ";s:3:"193";s:4:" м ";s:3:"194";s:5:" ме";s:3:"195";s:5:" ни";s:3:"196";s:5:" он";s:3:"197";s:5:" па";s:3:"198";s:5:" Ñл";s:3:"199";s:5:" те";s:3:"200";s:5:"а у";s:3:"201";s:6:"ава";s:3:"202";s:6:"аве";s:3:"203";s:6:"авн";s:3:"204";s:6:"ана";s:3:"205";s:5:"ао ";s:3:"206";s:6:"ати";s:3:"207";s:6:"аци";s:3:"208";s:6:"ају";s:3:"209";s:6:"ања";s:3:"210";s:6:"бÑк";s:3:"211";s:6:"вор";s:3:"212";s:6:"воÑ";s:3:"213";s:6:"вÑк";s:3:"214";s:6:"дин";s:3:"215";s:5:"е у";s:3:"216";s:6:"едн";s:3:"217";s:6:"ези";s:3:"218";s:6:"ека";s:3:"219";s:6:"ено";s:3:"220";s:6:"ето";s:3:"221";s:6:"ења";s:3:"222";s:6:"жив";s:3:"223";s:5:"и г";s:3:"224";s:5:"и и";s:3:"225";s:5:"и к";s:3:"226";s:5:"и Ñ‚";s:3:"227";s:6:"ику";s:3:"228";s:6:"ичк";s:3:"229";s:5:"ки ";s:3:"230";s:6:"крÑ";s:3:"231";s:5:"ла ";s:3:"232";s:6:"лав";s:3:"233";s:6:"лит";s:3:"234";s:5:"ме ";s:3:"235";s:6:"мен";s:3:"236";s:6:"нац";s:3:"237";s:5:"о н";s:3:"238";s:5:"о п";s:3:"239";s:5:"о у";s:3:"240";s:6:"одн";s:3:"241";s:6:"оли";s:3:"242";s:6:"орн";s:3:"243";s:6:"оÑн";s:3:"244";s:6:"оÑп";s:3:"245";s:6:"оче";s:3:"246";s:6:"пÑк";s:3:"247";s:6:"реч";s:3:"248";s:6:"рпÑ";s:3:"249";s:6:"Ñво";s:3:"250";s:6:"Ñки";s:3:"251";s:6:"Ñла";s:3:"252";s:6:"Ñрп";s:3:"253";s:5:"Ñу ";s:3:"254";s:5:"та ";s:3:"255";s:6:"тав";s:3:"256";s:6:"тве";s:3:"257";s:5:"у б";s:3:"258";s:6:"јез";s:3:"259";s:5:"ћи ";s:3:"260";s:5:" ен";s:3:"261";s:5:" жи";s:3:"262";s:5:" им";s:3:"263";s:5:" му";s:3:"264";s:5:" од";s:3:"265";s:5:" Ñу";s:3:"266";s:5:" та";s:3:"267";s:5:" Ñ…Ñ€";s:3:"268";s:5:" ча";s:3:"269";s:5:" шт";s:3:"270";s:5:" ње";s:3:"271";s:5:"а д";s:3:"272";s:5:"а з";s:3:"273";s:5:"а к";s:3:"274";s:5:"а Ñ‚";s:3:"275";s:6:"аду";s:3:"276";s:6:"ало";s:3:"277";s:6:"ани";s:3:"278";s:6:"аÑо";s:3:"279";s:6:"ван";s:3:"280";s:6:"вач";s:3:"281";s:6:"вањ";s:3:"282";s:6:"вед";s:3:"283";s:5:"ви ";s:3:"284";s:6:"вно";s:3:"285";s:6:"вот";s:3:"286";s:6:"вој";s:3:"287";s:5:"ву ";s:3:"288";s:6:"доб";s:3:"289";s:6:"дру";s:3:"290";s:6:"дÑе";s:3:"291";s:5:"ду ";s:3:"292";s:5:"е б";s:3:"293";s:5:"е д";s:3:"294";s:5:"е м";s:3:"295";s:5:"ем ";s:3:"296";s:6:"ема";s:3:"297";s:6:"ент";s:3:"298";s:6:"енц";s:3:"299";}s:6:"slovak";a:300:{s:3:" pr";s:1:"0";s:3:" po";s:1:"1";s:3:" ne";s:1:"2";s:3:" a ";s:1:"3";s:3:"ch ";s:1:"4";s:3:" na";s:1:"5";s:3:" je";s:1:"6";s:4:"ní ";s:1:"7";s:3:"je ";s:1:"8";s:3:" do";s:1:"9";s:3:"na ";s:2:"10";s:3:"ova";s:2:"11";s:3:" v ";s:2:"12";s:3:"to ";s:2:"13";s:3:"ho ";s:2:"14";s:3:"ou ";s:2:"15";s:3:" to";s:2:"16";s:3:"ick";s:2:"17";s:3:"ter";s:2:"18";s:4:"že ";s:2:"19";s:3:" st";s:2:"20";s:3:" za";s:2:"21";s:3:"ost";s:2:"22";s:4:"ých";s:2:"23";s:3:" se";s:2:"24";s:3:"pro";s:2:"25";s:3:" te";s:2:"26";s:3:"e s";s:2:"27";s:4:" že";s:2:"28";s:3:"a p";s:2:"29";s:3:" kt";s:2:"30";s:3:"pre";s:2:"31";s:3:" by";s:2:"32";s:3:" o ";s:2:"33";s:3:"se ";s:2:"34";s:3:"kon";s:2:"35";s:4:" pÅ™";s:2:"36";s:3:"a s";s:2:"37";s:4:"né ";s:2:"38";s:4:"nÄ› ";s:2:"39";s:3:"sti";s:2:"40";s:3:"ako";s:2:"41";s:3:"ist";s:2:"42";s:3:"mu ";s:2:"43";s:3:"ame";s:2:"44";s:3:"ent";s:2:"45";s:3:"ky ";s:2:"46";s:3:"la ";s:2:"47";s:3:"pod";s:2:"48";s:3:" ve";s:2:"49";s:3:" ob";s:2:"50";s:3:"om ";s:2:"51";s:3:"vat";s:2:"52";s:3:" ko";s:2:"53";s:3:"sta";s:2:"54";s:3:"em ";s:2:"55";s:3:"le ";s:2:"56";s:3:"a v";s:2:"57";s:3:"by ";s:2:"58";s:3:"e p";s:2:"59";s:3:"ko ";s:2:"60";s:3:"eri";s:2:"61";s:3:"kte";s:2:"62";s:3:"sa ";s:2:"63";s:4:"ého";s:2:"64";s:3:"e v";s:2:"65";s:3:"mer";s:2:"66";s:3:"tel";s:2:"67";s:3:" ak";s:2:"68";s:3:" sv";s:2:"69";s:4:" zá";s:2:"70";s:3:"hla";s:2:"71";s:3:"las";s:2:"72";s:3:"lo ";s:2:"73";s:3:" ta";s:2:"74";s:3:"a n";s:2:"75";s:3:"ej ";s:2:"76";s:3:"li ";s:2:"77";s:3:"ne ";s:2:"78";s:3:" sa";s:2:"79";s:3:"ak ";s:2:"80";s:3:"ani";s:2:"81";s:3:"ate";s:2:"82";s:3:"ia ";s:2:"83";s:3:"sou";s:2:"84";s:3:" so";s:2:"85";s:4:"ení";s:2:"86";s:3:"ie ";s:2:"87";s:3:" re";s:2:"88";s:3:"ce ";s:2:"89";s:3:"e n";s:2:"90";s:3:"ori";s:2:"91";s:3:"tic";s:2:"92";s:3:" vy";s:2:"93";s:3:"a t";s:2:"94";s:4:"ké ";s:2:"95";s:3:"nos";s:2:"96";s:3:"o s";s:2:"97";s:3:"str";s:2:"98";s:3:"ti ";s:2:"99";s:3:"uje";s:3:"100";s:3:" sp";s:3:"101";s:3:"lov";s:3:"102";s:3:"o p";s:3:"103";s:3:"oli";s:3:"104";s:4:"ová";s:3:"105";s:4:" ná";s:3:"106";s:3:"ale";s:3:"107";s:3:"den";s:3:"108";s:3:"e o";s:3:"109";s:3:"ku ";s:3:"110";s:3:"val";s:3:"111";s:3:" am";s:3:"112";s:3:" ro";s:3:"113";s:3:" si";s:3:"114";s:3:"nie";s:3:"115";s:3:"pol";s:3:"116";s:3:"tra";s:3:"117";s:3:" al";s:3:"118";s:3:"ali";s:3:"119";s:3:"o v";s:3:"120";s:3:"tor";s:3:"121";s:3:" mo";s:3:"122";s:3:" ni";s:3:"123";s:3:"ci ";s:3:"124";s:3:"o n";s:3:"125";s:4:"ím ";s:3:"126";s:3:" le";s:3:"127";s:3:" pa";s:3:"128";s:3:" s ";s:3:"129";s:3:"al ";s:3:"130";s:3:"ati";s:3:"131";s:3:"ero";s:3:"132";s:3:"ove";s:3:"133";s:3:"rov";s:3:"134";s:4:"ván";s:3:"135";s:4:"ích";s:3:"136";s:3:" ja";s:3:"137";s:3:" z ";s:3:"138";s:4:"cké";s:3:"139";s:3:"e z";s:3:"140";s:3:" od";s:3:"141";s:3:"byl";s:3:"142";s:3:"de ";s:3:"143";s:3:"dob";s:3:"144";s:3:"nep";s:3:"145";s:3:"pra";s:3:"146";s:3:"ric";s:3:"147";s:3:"spo";s:3:"148";s:3:"tak";s:3:"149";s:4:" vÅ¡";s:3:"150";s:3:"a a";s:3:"151";s:3:"e t";s:3:"152";s:3:"lit";s:3:"153";s:3:"me ";s:3:"154";s:3:"nej";s:3:"155";s:3:"no ";s:3:"156";s:4:"nýc";s:3:"157";s:3:"o t";s:3:"158";s:3:"a j";s:3:"159";s:3:"e a";s:3:"160";s:3:"en ";s:3:"161";s:3:"est";s:3:"162";s:4:"jí ";s:3:"163";s:3:"mi ";s:3:"164";s:3:"slo";s:3:"165";s:4:"stá";s:3:"166";s:3:"u v";s:3:"167";s:3:"for";s:3:"168";s:3:"nou";s:3:"169";s:3:"pos";s:3:"170";s:4:"pÅ™e";s:3:"171";s:3:"si ";s:3:"172";s:3:"tom";s:3:"173";s:3:" vl";s:3:"174";s:3:"a z";s:3:"175";s:3:"ly ";s:3:"176";s:3:"orm";s:3:"177";s:3:"ris";s:3:"178";s:3:"za ";s:3:"179";s:4:"zák";s:3:"180";s:3:" k ";s:3:"181";s:3:"at ";s:3:"182";s:4:"cký";s:3:"183";s:3:"dno";s:3:"184";s:3:"dos";s:3:"185";s:3:"dy ";s:3:"186";s:3:"jak";s:3:"187";s:3:"kov";s:3:"188";s:3:"ny ";s:3:"189";s:3:"res";s:3:"190";s:3:"ror";s:3:"191";s:3:"sto";s:3:"192";s:3:"van";s:3:"193";s:3:" op";s:3:"194";s:3:"da ";s:3:"195";s:3:"do ";s:3:"196";s:3:"e j";s:3:"197";s:3:"hod";s:3:"198";s:3:"len";s:3:"199";s:4:"ný ";s:3:"200";s:3:"o z";s:3:"201";s:3:"poz";s:3:"202";s:3:"pri";s:3:"203";s:3:"ran";s:3:"204";s:3:"u s";s:3:"205";s:3:" ab";s:3:"206";s:3:"aj ";s:3:"207";s:3:"ast";s:3:"208";s:3:"it ";s:3:"209";s:3:"kto";s:3:"210";s:3:"o o";s:3:"211";s:3:"oby";s:3:"212";s:3:"odo";s:3:"213";s:3:"u p";s:3:"214";s:3:"va ";s:3:"215";s:5:"ání";s:3:"216";s:4:"í p";s:3:"217";s:4:"ým ";s:3:"218";s:3:" in";s:3:"219";s:3:" mi";s:3:"220";s:4:"aÅ¥ ";s:3:"221";s:3:"dov";s:3:"222";s:3:"ka ";s:3:"223";s:3:"nsk";s:3:"224";s:4:"áln";s:3:"225";s:3:" an";s:3:"226";s:3:" bu";s:3:"227";s:3:" sl";s:3:"228";s:3:" tr";s:3:"229";s:3:"e m";s:3:"230";s:3:"ech";s:3:"231";s:3:"edn";s:3:"232";s:3:"i n";s:3:"233";s:4:"kýc";s:3:"234";s:4:"níc";s:3:"235";s:3:"ov ";s:3:"236";s:5:"pří";s:3:"237";s:4:"í a";s:3:"238";s:3:" aj";s:3:"239";s:3:" bo";s:3:"240";s:3:"a d";s:3:"241";s:3:"ide";s:3:"242";s:3:"o a";s:3:"243";s:3:"o d";s:3:"244";s:3:"och";s:3:"245";s:3:"pov";s:3:"246";s:3:"svo";s:3:"247";s:4:"é s";s:3:"248";s:3:" kd";s:3:"249";s:3:" vo";s:3:"250";s:4:" vý";s:3:"251";s:3:"bud";s:3:"252";s:3:"ich";s:3:"253";s:3:"il ";s:3:"254";s:3:"ili";s:3:"255";s:3:"ni ";s:3:"256";s:4:"ním";s:3:"257";s:3:"od ";s:3:"258";s:3:"osl";s:3:"259";s:3:"ouh";s:3:"260";s:3:"rav";s:3:"261";s:3:"roz";s:3:"262";s:3:"st ";s:3:"263";s:3:"stv";s:3:"264";s:3:"tu ";s:3:"265";s:3:"u a";s:3:"266";s:4:"vál";s:3:"267";s:3:"y s";s:3:"268";s:4:"í s";s:3:"269";s:4:"í v";s:3:"270";s:3:" hl";s:3:"271";s:3:" li";s:3:"272";s:3:" me";s:3:"273";s:3:"a m";s:3:"274";s:3:"e b";s:3:"275";s:3:"h s";s:3:"276";s:3:"i p";s:3:"277";s:3:"i s";s:3:"278";s:3:"iti";s:3:"279";s:4:"lád";s:3:"280";s:3:"nem";s:3:"281";s:3:"nov";s:3:"282";s:3:"opo";s:3:"283";s:3:"uhl";s:3:"284";s:3:"eno";s:3:"285";s:3:"ens";s:3:"286";s:3:"men";s:3:"287";s:3:"nes";s:3:"288";s:3:"obo";s:3:"289";s:3:"te ";s:3:"290";s:3:"ved";s:3:"291";s:4:"vlá";s:3:"292";s:3:"y n";s:3:"293";s:3:" ma";s:3:"294";s:3:" mu";s:3:"295";s:4:" vá";s:3:"296";s:3:"bez";s:3:"297";s:3:"byv";s:3:"298";s:3:"cho";s:3:"299";}s:7:"slovene";a:300:{s:3:"je ";s:1:"0";s:3:" pr";s:1:"1";s:3:" po";s:1:"2";s:3:" je";s:1:"3";s:3:" v ";s:1:"4";s:3:" za";s:1:"5";s:3:" na";s:1:"6";s:3:"pre";s:1:"7";s:3:"da ";s:1:"8";s:3:" da";s:1:"9";s:3:"ki ";s:2:"10";s:3:"ti ";s:2:"11";s:3:"ja ";s:2:"12";s:3:"ne ";s:2:"13";s:3:" in";s:2:"14";s:3:"in ";s:2:"15";s:3:"li ";s:2:"16";s:3:"no ";s:2:"17";s:3:"na ";s:2:"18";s:3:"ni ";s:2:"19";s:3:" bi";s:2:"20";s:3:"jo ";s:2:"21";s:3:" ne";s:2:"22";s:3:"nje";s:2:"23";s:3:"e p";s:2:"24";s:3:"i p";s:2:"25";s:3:"pri";s:2:"26";s:3:"o p";s:2:"27";s:3:"red";s:2:"28";s:3:" do";s:2:"29";s:3:"anj";s:2:"30";s:3:"em ";s:2:"31";s:3:"ih ";s:2:"32";s:3:" bo";s:2:"33";s:3:" ki";s:2:"34";s:3:" iz";s:2:"35";s:3:" se";s:2:"36";s:3:" so";s:2:"37";s:3:"al ";s:2:"38";s:3:" de";s:2:"39";s:3:"e v";s:2:"40";s:3:"i s";s:2:"41";s:3:"ko ";s:2:"42";s:3:"bil";s:2:"43";s:3:"ira";s:2:"44";s:3:"ove";s:2:"45";s:3:" br";s:2:"46";s:3:" ob";s:2:"47";s:3:"e b";s:2:"48";s:3:"i n";s:2:"49";s:3:"ova";s:2:"50";s:3:"se ";s:2:"51";s:3:"za ";s:2:"52";s:3:"la ";s:2:"53";s:3:" ja";s:2:"54";s:3:"ati";s:2:"55";s:3:"so ";s:2:"56";s:3:"ter";s:2:"57";s:3:" ta";s:2:"58";s:3:"a s";s:2:"59";s:3:"del";s:2:"60";s:3:"e d";s:2:"61";s:3:" dr";s:2:"62";s:3:" od";s:2:"63";s:3:"a n";s:2:"64";s:3:"ar ";s:2:"65";s:3:"jal";s:2:"66";s:3:"ji ";s:2:"67";s:3:"rit";s:2:"68";s:3:" ka";s:2:"69";s:3:" ko";s:2:"70";s:3:" pa";s:2:"71";s:3:"a b";s:2:"72";s:3:"ani";s:2:"73";s:3:"e s";s:2:"74";s:3:"er ";s:2:"75";s:3:"ili";s:2:"76";s:3:"lov";s:2:"77";s:3:"o v";s:2:"78";s:3:"tov";s:2:"79";s:3:" ir";s:2:"80";s:3:" ni";s:2:"81";s:3:" vo";s:2:"82";s:3:"a j";s:2:"83";s:3:"bi ";s:2:"84";s:3:"bri";s:2:"85";s:3:"iti";s:2:"86";s:3:"let";s:2:"87";s:3:"o n";s:2:"88";s:3:"tan";s:2:"89";s:4:"Å¡e ";s:2:"90";s:3:" le";s:2:"91";s:3:" te";s:2:"92";s:3:"eni";s:2:"93";s:3:"eri";s:2:"94";s:3:"ita";s:2:"95";s:3:"kat";s:2:"96";s:3:"por";s:2:"97";s:3:"pro";s:2:"98";s:3:"ali";s:2:"99";s:3:"ke ";s:3:"100";s:3:"oli";s:3:"101";s:3:"ov ";s:3:"102";s:3:"pra";s:3:"103";s:3:"ri ";s:3:"104";s:3:"uar";s:3:"105";s:3:"ve ";s:3:"106";s:3:" to";s:3:"107";s:3:"a i";s:3:"108";s:3:"a v";s:3:"109";s:3:"ako";s:3:"110";s:3:"arj";s:3:"111";s:3:"ate";s:3:"112";s:3:"di ";s:3:"113";s:3:"do ";s:3:"114";s:3:"ga ";s:3:"115";s:3:"le ";s:3:"116";s:3:"lo ";s:3:"117";s:3:"mer";s:3:"118";s:3:"o s";s:3:"119";s:3:"oda";s:3:"120";s:3:"oro";s:3:"121";s:3:"pod";s:3:"122";s:3:" ma";s:3:"123";s:3:" mo";s:3:"124";s:3:" si";s:3:"125";s:3:"a p";s:3:"126";s:3:"bod";s:3:"127";s:3:"e n";s:3:"128";s:3:"ega";s:3:"129";s:3:"ju ";s:3:"130";s:3:"ka ";s:3:"131";s:3:"lje";s:3:"132";s:3:"rav";s:3:"133";s:3:"ta ";s:3:"134";s:3:"a o";s:3:"135";s:3:"e t";s:3:"136";s:3:"e z";s:3:"137";s:3:"i d";s:3:"138";s:3:"i v";s:3:"139";s:3:"ila";s:3:"140";s:3:"lit";s:3:"141";s:3:"nih";s:3:"142";s:3:"odo";s:3:"143";s:3:"sti";s:3:"144";s:3:"to ";s:3:"145";s:3:"var";s:3:"146";s:3:"ved";s:3:"147";s:3:"vol";s:3:"148";s:3:" la";s:3:"149";s:3:" no";s:3:"150";s:3:" vs";s:3:"151";s:3:"a d";s:3:"152";s:3:"agu";s:3:"153";s:3:"aja";s:3:"154";s:3:"dej";s:3:"155";s:3:"dnj";s:3:"156";s:3:"eda";s:3:"157";s:3:"gov";s:3:"158";s:3:"gua";s:3:"159";s:3:"jag";s:3:"160";s:3:"jem";s:3:"161";s:3:"kon";s:3:"162";s:3:"ku ";s:3:"163";s:3:"nij";s:3:"164";s:3:"omo";s:3:"165";s:4:"oÄi";s:3:"166";s:3:"pov";s:3:"167";s:3:"rak";s:3:"168";s:3:"rja";s:3:"169";s:3:"sta";s:3:"170";s:3:"tev";s:3:"171";s:3:"a t";s:3:"172";s:3:"aj ";s:3:"173";s:3:"ed ";s:3:"174";s:3:"eja";s:3:"175";s:3:"ent";s:3:"176";s:3:"ev ";s:3:"177";s:3:"i i";s:3:"178";s:3:"i o";s:3:"179";s:3:"ijo";s:3:"180";s:3:"ist";s:3:"181";s:3:"ost";s:3:"182";s:3:"ske";s:3:"183";s:3:"str";s:3:"184";s:3:" ra";s:3:"185";s:3:" s ";s:3:"186";s:3:" tr";s:3:"187";s:4:" Å¡e";s:3:"188";s:3:"arn";s:3:"189";s:3:"bo ";s:3:"190";s:4:"drž";s:3:"191";s:3:"i j";s:3:"192";s:3:"ilo";s:3:"193";s:3:"izv";s:3:"194";s:3:"jen";s:3:"195";s:3:"lja";s:3:"196";s:3:"nsk";s:3:"197";s:3:"o d";s:3:"198";s:3:"o i";s:3:"199";s:3:"om ";s:3:"200";s:3:"ora";s:3:"201";s:3:"ovo";s:3:"202";s:3:"raz";s:3:"203";s:4:"rža";s:3:"204";s:3:"tak";s:3:"205";s:3:"va ";s:3:"206";s:3:"ven";s:3:"207";s:4:"žav";s:3:"208";s:3:" me";s:3:"209";s:4:" Äe";s:3:"210";s:3:"ame";s:3:"211";s:3:"avi";s:3:"212";s:3:"e i";s:3:"213";s:3:"e o";s:3:"214";s:3:"eka";s:3:"215";s:3:"gre";s:3:"216";s:3:"i t";s:3:"217";s:3:"ija";s:3:"218";s:3:"il ";s:3:"219";s:3:"ite";s:3:"220";s:3:"kra";s:3:"221";s:3:"lju";s:3:"222";s:3:"mor";s:3:"223";s:3:"nik";s:3:"224";s:3:"o t";s:3:"225";s:3:"obi";s:3:"226";s:3:"odn";s:3:"227";s:3:"ran";s:3:"228";s:3:"re ";s:3:"229";s:3:"sto";s:3:"230";s:3:"stv";s:3:"231";s:3:"udi";s:3:"232";s:3:"v i";s:3:"233";s:3:"van";s:3:"234";s:3:" am";s:3:"235";s:3:" sp";s:3:"236";s:3:" st";s:3:"237";s:3:" tu";s:3:"238";s:3:" ve";s:3:"239";s:4:" že";s:3:"240";s:3:"ajo";s:3:"241";s:3:"ale";s:3:"242";s:3:"apo";s:3:"243";s:3:"dal";s:3:"244";s:3:"dru";s:3:"245";s:3:"e j";s:3:"246";s:3:"edn";s:3:"247";s:3:"ejo";s:3:"248";s:3:"elo";s:3:"249";s:3:"est";s:3:"250";s:3:"etj";s:3:"251";s:3:"eva";s:3:"252";s:3:"iji";s:3:"253";s:3:"ik ";s:3:"254";s:3:"im ";s:3:"255";s:3:"itv";s:3:"256";s:3:"mob";s:3:"257";s:3:"nap";s:3:"258";s:3:"nek";s:3:"259";s:3:"pol";s:3:"260";s:3:"pos";s:3:"261";s:3:"rat";s:3:"262";s:3:"ski";s:3:"263";s:4:"tiÄ";s:3:"264";s:3:"tom";s:3:"265";s:3:"ton";s:3:"266";s:3:"tra";s:3:"267";s:3:"tud";s:3:"268";s:3:"tve";s:3:"269";s:3:"v b";s:3:"270";s:3:"vil";s:3:"271";s:3:"vse";s:3:"272";s:4:"Äit";s:3:"273";s:3:" av";s:3:"274";s:3:" gr";s:3:"275";s:3:"a z";s:3:"276";s:3:"ans";s:3:"277";s:3:"ast";s:3:"278";s:3:"avt";s:3:"279";s:3:"dan";s:3:"280";s:3:"e m";s:3:"281";s:3:"eds";s:3:"282";s:3:"for";s:3:"283";s:3:"i z";s:3:"284";s:3:"kot";s:3:"285";s:3:"mi ";s:3:"286";s:3:"nim";s:3:"287";s:3:"o b";s:3:"288";s:3:"o o";s:3:"289";s:3:"od ";s:3:"290";s:3:"odl";s:3:"291";s:3:"oiz";s:3:"292";s:3:"ot ";s:3:"293";s:3:"par";s:3:"294";s:3:"pot";s:3:"295";s:3:"rje";s:3:"296";s:3:"roi";s:3:"297";s:3:"tem";s:3:"298";s:3:"val";s:3:"299";}s:6:"somali";a:300:{s:3:"ka ";s:1:"0";s:3:"ay ";s:1:"1";s:3:"da ";s:1:"2";s:3:" ay";s:1:"3";s:3:"aal";s:1:"4";s:3:"oo ";s:1:"5";s:3:"aan";s:1:"6";s:3:" ka";s:1:"7";s:3:"an ";s:1:"8";s:3:"in ";s:1:"9";s:3:" in";s:2:"10";s:3:"ada";s:2:"11";s:3:"maa";s:2:"12";s:3:"aba";s:2:"13";s:3:" so";s:2:"14";s:3:"ali";s:2:"15";s:3:"bad";s:2:"16";s:3:"add";s:2:"17";s:3:"soo";s:2:"18";s:3:" na";s:2:"19";s:3:"aha";s:2:"20";s:3:"ku ";s:2:"21";s:3:"ta ";s:2:"22";s:3:" wa";s:2:"23";s:3:"yo ";s:2:"24";s:3:"a s";s:2:"25";s:3:"oma";s:2:"26";s:3:"yaa";s:2:"27";s:3:" ba";s:2:"28";s:3:" ku";s:2:"29";s:3:" la";s:2:"30";s:3:" oo";s:2:"31";s:3:"iya";s:2:"32";s:3:"sha";s:2:"33";s:3:"a a";s:2:"34";s:3:"dda";s:2:"35";s:3:"nab";s:2:"36";s:3:"nta";s:2:"37";s:3:" da";s:2:"38";s:3:" ma";s:2:"39";s:3:"nka";s:2:"40";s:3:"uu ";s:2:"41";s:3:"y i";s:2:"42";s:3:"aya";s:2:"43";s:3:"ha ";s:2:"44";s:3:"raa";s:2:"45";s:3:" dh";s:2:"46";s:3:" qa";s:2:"47";s:3:"a k";s:2:"48";s:3:"ala";s:2:"49";s:3:"baa";s:2:"50";s:3:"doo";s:2:"51";s:3:"had";s:2:"52";s:3:"liy";s:2:"53";s:3:"oom";s:2:"54";s:3:" ha";s:2:"55";s:3:" sh";s:2:"56";s:3:"a d";s:2:"57";s:3:"a i";s:2:"58";s:3:"a n";s:2:"59";s:3:"aar";s:2:"60";s:3:"ee ";s:2:"61";s:3:"ey ";s:2:"62";s:3:"y k";s:2:"63";s:3:"ya ";s:2:"64";s:3:" ee";s:2:"65";s:3:" iy";s:2:"66";s:3:"aa ";s:2:"67";s:3:"aaq";s:2:"68";s:3:"gaa";s:2:"69";s:3:"lam";s:2:"70";s:3:" bu";s:2:"71";s:3:"a b";s:2:"72";s:3:"a m";s:2:"73";s:3:"ad ";s:2:"74";s:3:"aga";s:2:"75";s:3:"ama";s:2:"76";s:3:"iyo";s:2:"77";s:3:"la ";s:2:"78";s:3:"a c";s:2:"79";s:3:"a l";s:2:"80";s:3:"een";s:2:"81";s:3:"int";s:2:"82";s:3:"she";s:2:"83";s:3:"wax";s:2:"84";s:3:"yee";s:2:"85";s:3:" si";s:2:"86";s:3:" uu";s:2:"87";s:3:"a h";s:2:"88";s:3:"aas";s:2:"89";s:3:"alk";s:2:"90";s:3:"dha";s:2:"91";s:3:"gu ";s:2:"92";s:3:"hee";s:2:"93";s:3:"ii ";s:2:"94";s:3:"ira";s:2:"95";s:3:"mad";s:2:"96";s:3:"o a";s:2:"97";s:3:"o k";s:2:"98";s:3:"qay";s:2:"99";s:3:" ah";s:3:"100";s:3:" ca";s:3:"101";s:3:" wu";s:3:"102";s:3:"ank";s:3:"103";s:3:"ash";s:3:"104";s:3:"axa";s:3:"105";s:3:"eed";s:3:"106";s:3:"en ";s:3:"107";s:3:"ga ";s:3:"108";s:3:"haa";s:3:"109";s:3:"n a";s:3:"110";s:3:"n s";s:3:"111";s:3:"naa";s:3:"112";s:3:"nay";s:3:"113";s:3:"o d";s:3:"114";s:3:"taa";s:3:"115";s:3:"u b";s:3:"116";s:3:"uxu";s:3:"117";s:3:"wux";s:3:"118";s:3:"xuu";s:3:"119";s:3:" ci";s:3:"120";s:3:" do";s:3:"121";s:3:" ho";s:3:"122";s:3:" ta";s:3:"123";s:3:"a g";s:3:"124";s:3:"a u";s:3:"125";s:3:"ana";s:3:"126";s:3:"ayo";s:3:"127";s:3:"dhi";s:3:"128";s:3:"iin";s:3:"129";s:3:"lag";s:3:"130";s:3:"lin";s:3:"131";s:3:"lka";s:3:"132";s:3:"o i";s:3:"133";s:3:"san";s:3:"134";s:3:"u s";s:3:"135";s:3:"una";s:3:"136";s:3:"uun";s:3:"137";s:3:" ga";s:3:"138";s:3:" xa";s:3:"139";s:3:" xu";s:3:"140";s:3:"aab";s:3:"141";s:3:"abt";s:3:"142";s:3:"aq ";s:3:"143";s:3:"aqa";s:3:"144";s:3:"ara";s:3:"145";s:3:"arl";s:3:"146";s:3:"caa";s:3:"147";s:3:"cir";s:3:"148";s:3:"eeg";s:3:"149";s:3:"eel";s:3:"150";s:3:"isa";s:3:"151";s:3:"kal";s:3:"152";s:3:"lah";s:3:"153";s:3:"ney";s:3:"154";s:3:"qaa";s:3:"155";s:3:"rla";s:3:"156";s:3:"sad";s:3:"157";s:3:"sii";s:3:"158";s:3:"u d";s:3:"159";s:3:"wad";s:3:"160";s:3:" ad";s:3:"161";s:3:" ar";s:3:"162";s:3:" di";s:3:"163";s:3:" jo";s:3:"164";s:3:" ra";s:3:"165";s:3:" sa";s:3:"166";s:3:" u ";s:3:"167";s:3:" yi";s:3:"168";s:3:"a j";s:3:"169";s:3:"a q";s:3:"170";s:3:"aad";s:3:"171";s:3:"aat";s:3:"172";s:3:"aay";s:3:"173";s:3:"ah ";s:3:"174";s:3:"ale";s:3:"175";s:3:"amk";s:3:"176";s:3:"ari";s:3:"177";s:3:"as ";s:3:"178";s:3:"aye";s:3:"179";s:3:"bus";s:3:"180";s:3:"dal";s:3:"181";s:3:"ddu";s:3:"182";s:3:"dii";s:3:"183";s:3:"du ";s:3:"184";s:3:"duu";s:3:"185";s:3:"ed ";s:3:"186";s:3:"ege";s:3:"187";s:3:"gey";s:3:"188";s:3:"hay";s:3:"189";s:3:"hii";s:3:"190";s:3:"ida";s:3:"191";s:3:"ine";s:3:"192";s:3:"joo";s:3:"193";s:3:"laa";s:3:"194";s:3:"lay";s:3:"195";s:3:"mar";s:3:"196";s:3:"mee";s:3:"197";s:3:"n b";s:3:"198";s:3:"n d";s:3:"199";s:3:"n m";s:3:"200";s:3:"no ";s:3:"201";s:3:"o b";s:3:"202";s:3:"o l";s:3:"203";s:3:"oog";s:3:"204";s:3:"oon";s:3:"205";s:3:"rga";s:3:"206";s:3:"sh ";s:3:"207";s:3:"sid";s:3:"208";s:3:"u q";s:3:"209";s:3:"unk";s:3:"210";s:3:"ush";s:3:"211";s:3:"xa ";s:3:"212";s:3:"y d";s:3:"213";s:3:" bi";s:3:"214";s:3:" gu";s:3:"215";s:3:" is";s:3:"216";s:3:" ke";s:3:"217";s:3:" lo";s:3:"218";s:3:" me";s:3:"219";s:3:" mu";s:3:"220";s:3:" qo";s:3:"221";s:3:" ug";s:3:"222";s:3:"a e";s:3:"223";s:3:"a o";s:3:"224";s:3:"a w";s:3:"225";s:3:"adi";s:3:"226";s:3:"ado";s:3:"227";s:3:"agu";s:3:"228";s:3:"al ";s:3:"229";s:3:"ant";s:3:"230";s:3:"ark";s:3:"231";s:3:"asa";s:3:"232";s:3:"awi";s:3:"233";s:3:"bta";s:3:"234";s:3:"bul";s:3:"235";s:3:"d a";s:3:"236";s:3:"dag";s:3:"237";s:3:"dan";s:3:"238";s:3:"do ";s:3:"239";s:3:"e s";s:3:"240";s:3:"gal";s:3:"241";s:3:"gay";s:3:"242";s:3:"guu";s:3:"243";s:3:"h e";s:3:"244";s:3:"hal";s:3:"245";s:3:"iga";s:3:"246";s:3:"ihi";s:3:"247";s:3:"iri";s:3:"248";s:3:"iye";s:3:"249";s:3:"ken";s:3:"250";s:3:"lad";s:3:"251";s:3:"lid";s:3:"252";s:3:"lsh";s:3:"253";s:3:"mag";s:3:"254";s:3:"mun";s:3:"255";s:3:"n h";s:3:"256";s:3:"n i";s:3:"257";s:3:"na ";s:3:"258";s:3:"o n";s:3:"259";s:3:"o w";s:3:"260";s:3:"ood";s:3:"261";s:3:"oor";s:3:"262";s:3:"ora";s:3:"263";s:3:"qab";s:3:"264";s:3:"qor";s:3:"265";s:3:"rab";s:3:"266";s:3:"rit";s:3:"267";s:3:"rta";s:3:"268";s:3:"s o";s:3:"269";s:3:"sab";s:3:"270";s:3:"ska";s:3:"271";s:3:"to ";s:3:"272";s:3:"u a";s:3:"273";s:3:"u h";s:3:"274";s:3:"u u";s:3:"275";s:3:"ud ";s:3:"276";s:3:"ugu";s:3:"277";s:3:"uls";s:3:"278";s:3:"uud";s:3:"279";s:3:"waa";s:3:"280";s:3:"xus";s:3:"281";s:3:"y b";s:3:"282";s:3:"y q";s:3:"283";s:3:"y s";s:3:"284";s:3:"yad";s:3:"285";s:3:"yay";s:3:"286";s:3:"yih";s:3:"287";s:3:" aa";s:3:"288";s:3:" bo";s:3:"289";s:3:" br";s:3:"290";s:3:" go";s:3:"291";s:3:" ji";s:3:"292";s:3:" mi";s:3:"293";s:3:" of";s:3:"294";s:3:" ti";s:3:"295";s:3:" um";s:3:"296";s:3:" wi";s:3:"297";s:3:" xo";s:3:"298";s:3:"a x";s:3:"299";}s:7:"spanish";a:300:{s:3:" de";s:1:"0";s:3:"de ";s:1:"1";s:3:" la";s:1:"2";s:3:"os ";s:1:"3";s:3:"la ";s:1:"4";s:3:"el ";s:1:"5";s:3:"es ";s:1:"6";s:3:" qu";s:1:"7";s:3:" co";s:1:"8";s:3:"e l";s:1:"9";s:3:"as ";s:2:"10";s:3:"que";s:2:"11";s:3:" el";s:2:"12";s:3:"ue ";s:2:"13";s:3:"en ";s:2:"14";s:3:"ent";s:2:"15";s:3:" en";s:2:"16";s:3:" se";s:2:"17";s:3:"nte";s:2:"18";s:3:"res";s:2:"19";s:3:"con";s:2:"20";s:3:"est";s:2:"21";s:3:" es";s:2:"22";s:3:"s d";s:2:"23";s:3:" lo";s:2:"24";s:3:" pr";s:2:"25";s:3:"los";s:2:"26";s:3:" y ";s:2:"27";s:3:"do ";s:2:"28";s:4:"ón ";s:2:"29";s:4:"ión";s:2:"30";s:3:" un";s:2:"31";s:4:"ció";s:2:"32";s:3:"del";s:2:"33";s:3:"o d";s:2:"34";s:3:" po";s:2:"35";s:3:"a d";s:2:"36";s:3:"aci";s:2:"37";s:3:"sta";s:2:"38";s:3:"te ";s:2:"39";s:3:"ado";s:2:"40";s:3:"pre";s:2:"41";s:3:"to ";s:2:"42";s:3:"par";s:2:"43";s:3:"a e";s:2:"44";s:3:"a l";s:2:"45";s:3:"ra ";s:2:"46";s:3:"al ";s:2:"47";s:3:"e e";s:2:"48";s:3:"se ";s:2:"49";s:3:"pro";s:2:"50";s:3:"ar ";s:2:"51";s:3:"ia ";s:2:"52";s:3:"o e";s:2:"53";s:3:" re";s:2:"54";s:3:"ida";s:2:"55";s:3:"dad";s:2:"56";s:3:"tra";s:2:"57";s:3:"por";s:2:"58";s:3:"s p";s:2:"59";s:3:" a ";s:2:"60";s:3:"a p";s:2:"61";s:3:"ara";s:2:"62";s:3:"cia";s:2:"63";s:3:" pa";s:2:"64";s:3:"com";s:2:"65";s:3:"no ";s:2:"66";s:3:" di";s:2:"67";s:3:" in";s:2:"68";s:3:"ien";s:2:"69";s:3:"n l";s:2:"70";s:3:"ad ";s:2:"71";s:3:"ant";s:2:"72";s:3:"e s";s:2:"73";s:3:"men";s:2:"74";s:3:"a c";s:2:"75";s:3:"on ";s:2:"76";s:3:"un ";s:2:"77";s:3:"las";s:2:"78";s:3:"nci";s:2:"79";s:3:" tr";s:2:"80";s:3:"cio";s:2:"81";s:3:"ier";s:2:"82";s:3:"nto";s:2:"83";s:3:"tiv";s:2:"84";s:3:"n d";s:2:"85";s:3:"n e";s:2:"86";s:3:"or ";s:2:"87";s:3:"s c";s:2:"88";s:3:"enc";s:2:"89";s:3:"ern";s:2:"90";s:3:"io ";s:2:"91";s:3:"a s";s:2:"92";s:3:"ici";s:2:"93";s:3:"s e";s:2:"94";s:3:" ma";s:2:"95";s:3:"dos";s:2:"96";s:3:"e a";s:2:"97";s:3:"e c";s:2:"98";s:3:"emp";s:2:"99";s:3:"ica";s:3:"100";s:3:"ivo";s:3:"101";s:3:"l p";s:3:"102";s:3:"n c";s:3:"103";s:3:"r e";s:3:"104";s:3:"ta ";s:3:"105";s:3:"ter";s:3:"106";s:3:"e d";s:3:"107";s:3:"esa";s:3:"108";s:3:"ez ";s:3:"109";s:3:"mpr";s:3:"110";s:3:"o a";s:3:"111";s:3:"s a";s:3:"112";s:3:" ca";s:3:"113";s:3:" su";s:3:"114";s:3:"ion";s:3:"115";s:3:" cu";s:3:"116";s:3:" ju";s:3:"117";s:3:"an ";s:3:"118";s:3:"da ";s:3:"119";s:3:"ene";s:3:"120";s:3:"ero";s:3:"121";s:3:"na ";s:3:"122";s:3:"rec";s:3:"123";s:3:"ro ";s:3:"124";s:3:"tar";s:3:"125";s:3:" al";s:3:"126";s:3:" an";s:3:"127";s:3:"bie";s:3:"128";s:3:"e p";s:3:"129";s:3:"er ";s:3:"130";s:3:"l c";s:3:"131";s:3:"n p";s:3:"132";s:3:"omp";s:3:"133";s:3:"ten";s:3:"134";s:3:" em";s:3:"135";s:3:"ist";s:3:"136";s:3:"nes";s:3:"137";s:3:"nta";s:3:"138";s:3:"o c";s:3:"139";s:3:"so ";s:3:"140";s:3:"tes";s:3:"141";s:3:"era";s:3:"142";s:3:"l d";s:3:"143";s:3:"l m";s:3:"144";s:3:"les";s:3:"145";s:3:"ntr";s:3:"146";s:3:"o s";s:3:"147";s:3:"ore";s:3:"148";s:4:"rá ";s:3:"149";s:3:"s q";s:3:"150";s:3:"s y";s:3:"151";s:3:"sto";s:3:"152";s:3:"a a";s:3:"153";s:3:"a r";s:3:"154";s:3:"ari";s:3:"155";s:3:"des";s:3:"156";s:3:"e q";s:3:"157";s:3:"ivi";s:3:"158";s:3:"lic";s:3:"159";s:3:"lo ";s:3:"160";s:3:"n a";s:3:"161";s:3:"one";s:3:"162";s:3:"ora";s:3:"163";s:3:"per";s:3:"164";s:3:"pue";s:3:"165";s:3:"r l";s:3:"166";s:3:"re ";s:3:"167";s:3:"ren";s:3:"168";s:3:"una";s:3:"169";s:4:"ía ";s:3:"170";s:3:"ada";s:3:"171";s:3:"cas";s:3:"172";s:3:"ere";s:3:"173";s:3:"ide";s:3:"174";s:3:"min";s:3:"175";s:3:"n s";s:3:"176";s:3:"ndo";s:3:"177";s:3:"ran";s:3:"178";s:3:"rno";s:3:"179";s:3:" ac";s:3:"180";s:3:" ex";s:3:"181";s:3:" go";s:3:"182";s:3:" no";s:3:"183";s:3:"a t";s:3:"184";s:3:"aba";s:3:"185";s:3:"ble";s:3:"186";s:3:"ece";s:3:"187";s:3:"ect";s:3:"188";s:3:"l a";s:3:"189";s:3:"l g";s:3:"190";s:3:"lid";s:3:"191";s:3:"nsi";s:3:"192";s:3:"ons";s:3:"193";s:3:"rac";s:3:"194";s:3:"rio";s:3:"195";s:3:"str";s:3:"196";s:3:"uer";s:3:"197";s:3:"ust";s:3:"198";s:3:" ha";s:3:"199";s:3:" le";s:3:"200";s:3:" mi";s:3:"201";s:3:" mu";s:3:"202";s:3:" ob";s:3:"203";s:3:" pe";s:3:"204";s:3:" pu";s:3:"205";s:3:" so";s:3:"206";s:3:"a i";s:3:"207";s:3:"ale";s:3:"208";s:3:"ca ";s:3:"209";s:3:"cto";s:3:"210";s:3:"e i";s:3:"211";s:3:"e u";s:3:"212";s:3:"eso";s:3:"213";s:3:"fer";s:3:"214";s:3:"fic";s:3:"215";s:3:"gob";s:3:"216";s:3:"jo ";s:3:"217";s:3:"ma ";s:3:"218";s:3:"mpl";s:3:"219";s:3:"o p";s:3:"220";s:3:"obi";s:3:"221";s:3:"s m";s:3:"222";s:3:"sa ";s:3:"223";s:3:"sep";s:3:"224";s:3:"ste";s:3:"225";s:3:"sti";s:3:"226";s:3:"tad";s:3:"227";s:3:"tod";s:3:"228";s:3:"y s";s:3:"229";s:3:" ci";s:3:"230";s:3:"and";s:3:"231";s:3:"ces";s:3:"232";s:4:"có ";s:3:"233";s:3:"dor";s:3:"234";s:3:"e m";s:3:"235";s:3:"eci";s:3:"236";s:3:"eco";s:3:"237";s:3:"esi";s:3:"238";s:3:"int";s:3:"239";s:3:"iza";s:3:"240";s:3:"l e";s:3:"241";s:3:"lar";s:3:"242";s:3:"mie";s:3:"243";s:3:"ner";s:3:"244";s:3:"orc";s:3:"245";s:3:"rci";s:3:"246";s:3:"ria";s:3:"247";s:3:"tic";s:3:"248";s:3:"tor";s:3:"249";s:3:" as";s:3:"250";s:3:" si";s:3:"251";s:3:"ce ";s:3:"252";s:3:"den";s:3:"253";s:3:"e r";s:3:"254";s:3:"e t";s:3:"255";s:3:"end";s:3:"256";s:3:"eri";s:3:"257";s:3:"esp";s:3:"258";s:3:"ial";s:3:"259";s:3:"ido";s:3:"260";s:3:"ina";s:3:"261";s:3:"inc";s:3:"262";s:3:"mit";s:3:"263";s:3:"o l";s:3:"264";s:3:"ome";s:3:"265";s:3:"pli";s:3:"266";s:3:"ras";s:3:"267";s:3:"s t";s:3:"268";s:3:"sid";s:3:"269";s:3:"sup";s:3:"270";s:3:"tab";s:3:"271";s:3:"uen";s:3:"272";s:3:"ues";s:3:"273";s:3:"ura";s:3:"274";s:3:"vo ";s:3:"275";s:3:"vor";s:3:"276";s:3:" sa";s:3:"277";s:3:" ti";s:3:"278";s:3:"abl";s:3:"279";s:3:"ali";s:3:"280";s:3:"aso";s:3:"281";s:3:"ast";s:3:"282";s:3:"cor";s:3:"283";s:3:"cti";s:3:"284";s:3:"cue";s:3:"285";s:3:"div";s:3:"286";s:3:"duc";s:3:"287";s:3:"ens";s:3:"288";s:3:"eti";s:3:"289";s:3:"imi";s:3:"290";s:3:"ini";s:3:"291";s:3:"lec";s:3:"292";s:3:"o q";s:3:"293";s:3:"oce";s:3:"294";s:3:"ort";s:3:"295";s:3:"ral";s:3:"296";s:3:"rma";s:3:"297";s:3:"roc";s:3:"298";s:3:"rod";s:3:"299";}s:7:"swahili";a:300:{s:3:" wa";s:1:"0";s:3:"wa ";s:1:"1";s:3:"a k";s:1:"2";s:3:"a m";s:1:"3";s:3:" ku";s:1:"4";s:3:" ya";s:1:"5";s:3:"a w";s:1:"6";s:3:"ya ";s:1:"7";s:3:"ni ";s:1:"8";s:3:" ma";s:1:"9";s:3:"ka ";s:2:"10";s:3:"a u";s:2:"11";s:3:"na ";s:2:"12";s:3:"za ";s:2:"13";s:3:"ia ";s:2:"14";s:3:" na";s:2:"15";s:3:"ika";s:2:"16";s:3:"ma ";s:2:"17";s:3:"ali";s:2:"18";s:3:"a n";s:2:"19";s:3:" am";s:2:"20";s:3:"ili";s:2:"21";s:3:"kwa";s:2:"22";s:3:" kw";s:2:"23";s:3:"ini";s:2:"24";s:3:" ha";s:2:"25";s:3:"ame";s:2:"26";s:3:"ana";s:2:"27";s:3:"i n";s:2:"28";s:3:" za";s:2:"29";s:3:"a h";s:2:"30";s:3:"ema";s:2:"31";s:3:"i m";s:2:"32";s:3:"i y";s:2:"33";s:3:"kuw";s:2:"34";s:3:"la ";s:2:"35";s:3:"o w";s:2:"36";s:3:"a y";s:2:"37";s:3:"ata";s:2:"38";s:3:"sem";s:2:"39";s:3:" la";s:2:"40";s:3:"ati";s:2:"41";s:3:"chi";s:2:"42";s:3:"i w";s:2:"43";s:3:"uwa";s:2:"44";s:3:"aki";s:2:"45";s:3:"li ";s:2:"46";s:3:"eka";s:2:"47";s:3:"ira";s:2:"48";s:3:" nc";s:2:"49";s:3:"a s";s:2:"50";s:3:"iki";s:2:"51";s:3:"kat";s:2:"52";s:3:"nch";s:2:"53";s:3:" ka";s:2:"54";s:3:" ki";s:2:"55";s:3:"a b";s:2:"56";s:3:"aji";s:2:"57";s:3:"amb";s:2:"58";s:3:"ra ";s:2:"59";s:3:"ri ";s:2:"60";s:3:"rik";s:2:"61";s:3:"ada";s:2:"62";s:3:"mat";s:2:"63";s:3:"mba";s:2:"64";s:3:"mes";s:2:"65";s:3:"yo ";s:2:"66";s:3:"zi ";s:2:"67";s:3:"da ";s:2:"68";s:3:"hi ";s:2:"69";s:3:"i k";s:2:"70";s:3:"ja ";s:2:"71";s:3:"kut";s:2:"72";s:3:"tek";s:2:"73";s:3:"wan";s:2:"74";s:3:" bi";s:2:"75";s:3:"a a";s:2:"76";s:3:"aka";s:2:"77";s:3:"ao ";s:2:"78";s:3:"asi";s:2:"79";s:3:"cha";s:2:"80";s:3:"ese";s:2:"81";s:3:"eza";s:2:"82";s:3:"ke ";s:2:"83";s:3:"moj";s:2:"84";s:3:"oja";s:2:"85";s:3:" hi";s:2:"86";s:3:"a z";s:2:"87";s:3:"end";s:2:"88";s:3:"ha ";s:2:"89";s:3:"ji ";s:2:"90";s:3:"mu ";s:2:"91";s:3:"shi";s:2:"92";s:3:"wat";s:2:"93";s:3:" bw";s:2:"94";s:3:"ake";s:2:"95";s:3:"ara";s:2:"96";s:3:"bw ";s:2:"97";s:3:"i h";s:2:"98";s:3:"imb";s:2:"99";s:3:"tik";s:3:"100";s:3:"wak";s:3:"101";s:3:"wal";s:3:"102";s:3:" hu";s:3:"103";s:3:" mi";s:3:"104";s:3:" mk";s:3:"105";s:3:" ni";s:3:"106";s:3:" ra";s:3:"107";s:3:" um";s:3:"108";s:3:"a l";s:3:"109";s:3:"ate";s:3:"110";s:3:"esh";s:3:"111";s:3:"ina";s:3:"112";s:3:"ish";s:3:"113";s:3:"kim";s:3:"114";s:3:"o k";s:3:"115";s:3:" ir";s:3:"116";s:3:"a i";s:3:"117";s:3:"ala";s:3:"118";s:3:"ani";s:3:"119";s:3:"aq ";s:3:"120";s:3:"azi";s:3:"121";s:3:"hin";s:3:"122";s:3:"i a";s:3:"123";s:3:"idi";s:3:"124";s:3:"ima";s:3:"125";s:3:"ita";s:3:"126";s:3:"rai";s:3:"127";s:3:"raq";s:3:"128";s:3:"sha";s:3:"129";s:3:" ms";s:3:"130";s:3:" se";s:3:"131";s:3:"afr";s:3:"132";s:3:"ama";s:3:"133";s:3:"ano";s:3:"134";s:3:"ea ";s:3:"135";s:3:"ele";s:3:"136";s:3:"fri";s:3:"137";s:3:"go ";s:3:"138";s:3:"i i";s:3:"139";s:3:"ifa";s:3:"140";s:3:"iwa";s:3:"141";s:3:"iyo";s:3:"142";s:3:"kus";s:3:"143";s:3:"lia";s:3:"144";s:3:"lio";s:3:"145";s:3:"maj";s:3:"146";s:3:"mku";s:3:"147";s:3:"no ";s:3:"148";s:3:"tan";s:3:"149";s:3:"uli";s:3:"150";s:3:"uta";s:3:"151";s:3:"wen";s:3:"152";s:3:" al";s:3:"153";s:3:"a j";s:3:"154";s:3:"aad";s:3:"155";s:3:"aid";s:3:"156";s:3:"ari";s:3:"157";s:3:"awa";s:3:"158";s:3:"ba ";s:3:"159";s:3:"fa ";s:3:"160";s:3:"nde";s:3:"161";s:3:"nge";s:3:"162";s:3:"nya";s:3:"163";s:3:"o y";s:3:"164";s:3:"u w";s:3:"165";s:3:"ua ";s:3:"166";s:3:"umo";s:3:"167";s:3:"waz";s:3:"168";s:3:"ye ";s:3:"169";s:3:" ut";s:3:"170";s:3:" vi";s:3:"171";s:3:"a d";s:3:"172";s:3:"a t";s:3:"173";s:3:"aif";s:3:"174";s:3:"di ";s:3:"175";s:3:"ere";s:3:"176";s:3:"ing";s:3:"177";s:3:"kin";s:3:"178";s:3:"nda";s:3:"179";s:3:"o n";s:3:"180";s:3:"oa ";s:3:"181";s:3:"tai";s:3:"182";s:3:"toa";s:3:"183";s:3:"usa";s:3:"184";s:3:"uto";s:3:"185";s:3:"was";s:3:"186";s:3:"yak";s:3:"187";s:3:"zo ";s:3:"188";s:3:" ji";s:3:"189";s:3:" mw";s:3:"190";s:3:"a p";s:3:"191";s:3:"aia";s:3:"192";s:3:"amu";s:3:"193";s:3:"ang";s:3:"194";s:3:"bik";s:3:"195";s:3:"bo ";s:3:"196";s:3:"del";s:3:"197";s:3:"e w";s:3:"198";s:3:"ene";s:3:"199";s:3:"eng";s:3:"200";s:3:"ich";s:3:"201";s:3:"iri";s:3:"202";s:3:"iti";s:3:"203";s:3:"ito";s:3:"204";s:3:"ki ";s:3:"205";s:3:"kir";s:3:"206";s:3:"ko ";s:3:"207";s:3:"kuu";s:3:"208";s:3:"mar";s:3:"209";s:3:"mbo";s:3:"210";s:3:"mil";s:3:"211";s:3:"ngi";s:3:"212";s:3:"ngo";s:3:"213";s:3:"o l";s:3:"214";s:3:"ong";s:3:"215";s:3:"si ";s:3:"216";s:3:"ta ";s:3:"217";s:3:"tak";s:3:"218";s:3:"u y";s:3:"219";s:3:"umu";s:3:"220";s:3:"usi";s:3:"221";s:3:"uu ";s:3:"222";s:3:"wam";s:3:"223";s:3:" af";s:3:"224";s:3:" ba";s:3:"225";s:3:" li";s:3:"226";s:3:" si";s:3:"227";s:3:" zi";s:3:"228";s:3:"a v";s:3:"229";s:3:"ami";s:3:"230";s:3:"atu";s:3:"231";s:3:"awi";s:3:"232";s:3:"eri";s:3:"233";s:3:"fan";s:3:"234";s:3:"fur";s:3:"235";s:3:"ger";s:3:"236";s:3:"i z";s:3:"237";s:3:"isi";s:3:"238";s:3:"izo";s:3:"239";s:3:"lea";s:3:"240";s:3:"mbi";s:3:"241";s:3:"mwa";s:3:"242";s:3:"nye";s:3:"243";s:3:"o h";s:3:"244";s:3:"o m";s:3:"245";s:3:"oni";s:3:"246";s:3:"rez";s:3:"247";s:3:"saa";s:3:"248";s:3:"ser";s:3:"249";s:3:"sin";s:3:"250";s:3:"tat";s:3:"251";s:3:"tis";s:3:"252";s:3:"tu ";s:3:"253";s:3:"uin";s:3:"254";s:3:"uki";s:3:"255";s:3:"ur ";s:3:"256";s:3:"wi ";s:3:"257";s:3:"yar";s:3:"258";s:3:" da";s:3:"259";s:3:" en";s:3:"260";s:3:" mp";s:3:"261";s:3:" ny";s:3:"262";s:3:" ta";s:3:"263";s:3:" ul";s:3:"264";s:3:" we";s:3:"265";s:3:"a c";s:3:"266";s:3:"a f";s:3:"267";s:3:"ais";s:3:"268";s:3:"apo";s:3:"269";s:3:"ayo";s:3:"270";s:3:"bar";s:3:"271";s:3:"dhi";s:3:"272";s:3:"e a";s:3:"273";s:3:"eke";s:3:"274";s:3:"eny";s:3:"275";s:3:"eon";s:3:"276";s:3:"hai";s:3:"277";s:3:"han";s:3:"278";s:3:"hiy";s:3:"279";s:3:"hur";s:3:"280";s:3:"i s";s:3:"281";s:3:"imw";s:3:"282";s:3:"kal";s:3:"283";s:3:"kwe";s:3:"284";s:3:"lak";s:3:"285";s:3:"lam";s:3:"286";s:3:"mak";s:3:"287";s:3:"msa";s:3:"288";s:3:"ne ";s:3:"289";s:3:"ngu";s:3:"290";s:3:"ru ";s:3:"291";s:3:"sal";s:3:"292";s:3:"swa";s:3:"293";s:3:"te ";s:3:"294";s:3:"ti ";s:3:"295";s:3:"uku";s:3:"296";s:3:"uma";s:3:"297";s:3:"una";s:3:"298";s:3:"uru";s:3:"299";}s:7:"swedish";a:300:{s:3:"en ";s:1:"0";s:3:" de";s:1:"1";s:3:"et ";s:1:"2";s:3:"er ";s:1:"3";s:3:"tt ";s:1:"4";s:3:"om ";s:1:"5";s:4:"för";s:1:"6";s:3:"ar ";s:1:"7";s:3:"de ";s:1:"8";s:3:"att";s:1:"9";s:4:" fö";s:2:"10";s:3:"ing";s:2:"11";s:3:" in";s:2:"12";s:3:" at";s:2:"13";s:3:" i ";s:2:"14";s:3:"det";s:2:"15";s:3:"ch ";s:2:"16";s:3:"an ";s:2:"17";s:3:"gen";s:2:"18";s:3:" an";s:2:"19";s:3:"t s";s:2:"20";s:3:"som";s:2:"21";s:3:"te ";s:2:"22";s:3:" oc";s:2:"23";s:3:"ter";s:2:"24";s:3:" ha";s:2:"25";s:3:"lle";s:2:"26";s:3:"och";s:2:"27";s:3:" sk";s:2:"28";s:3:" so";s:2:"29";s:3:"ra ";s:2:"30";s:3:"r a";s:2:"31";s:3:" me";s:2:"32";s:3:"var";s:2:"33";s:3:"nde";s:2:"34";s:4:"är ";s:2:"35";s:3:" ko";s:2:"36";s:3:"on ";s:2:"37";s:3:"ans";s:2:"38";s:3:"int";s:2:"39";s:3:"n s";s:2:"40";s:3:"na ";s:2:"41";s:3:" en";s:2:"42";s:3:" fr";s:2:"43";s:4:" pÃ¥";s:2:"44";s:3:" st";s:2:"45";s:3:" va";s:2:"46";s:3:"and";s:2:"47";s:3:"nte";s:2:"48";s:4:"pÃ¥ ";s:2:"49";s:3:"ska";s:2:"50";s:3:"ta ";s:2:"51";s:3:" vi";s:2:"52";s:3:"der";s:2:"53";s:4:"äll";s:2:"54";s:4:"örs";s:2:"55";s:3:" om";s:2:"56";s:3:"da ";s:2:"57";s:3:"kri";s:2:"58";s:3:"ka ";s:2:"59";s:3:"nst";s:2:"60";s:3:" ho";s:2:"61";s:3:"as ";s:2:"62";s:4:"stä";s:2:"63";s:3:"r d";s:2:"64";s:3:"t f";s:2:"65";s:3:"upp";s:2:"66";s:3:" be";s:2:"67";s:3:"nge";s:2:"68";s:3:"r s";s:2:"69";s:3:"tal";s:2:"70";s:4:"täl";s:2:"71";s:4:"ör ";s:2:"72";s:3:" av";s:2:"73";s:3:"ger";s:2:"74";s:3:"ill";s:2:"75";s:3:"ng ";s:2:"76";s:3:"e s";s:2:"77";s:3:"ekt";s:2:"78";s:3:"ade";s:2:"79";s:3:"era";s:2:"80";s:3:"ers";s:2:"81";s:3:"har";s:2:"82";s:3:"ll ";s:2:"83";s:3:"lld";s:2:"84";s:3:"rin";s:2:"85";s:3:"rna";s:2:"86";s:4:"säk";s:2:"87";s:3:"und";s:2:"88";s:3:"inn";s:2:"89";s:3:"lig";s:2:"90";s:3:"ns ";s:2:"91";s:3:" ma";s:2:"92";s:3:" pr";s:2:"93";s:3:" up";s:2:"94";s:3:"age";s:2:"95";s:3:"av ";s:2:"96";s:3:"iva";s:2:"97";s:3:"kti";s:2:"98";s:3:"lda";s:2:"99";s:3:"orn";s:3:"100";s:3:"son";s:3:"101";s:3:"ts ";s:3:"102";s:3:"tta";s:3:"103";s:4:"äkr";s:3:"104";s:3:" sj";s:3:"105";s:3:" ti";s:3:"106";s:3:"avt";s:3:"107";s:3:"ber";s:3:"108";s:3:"els";s:3:"109";s:3:"eta";s:3:"110";s:3:"kol";s:3:"111";s:3:"men";s:3:"112";s:3:"n d";s:3:"113";s:3:"t k";s:3:"114";s:3:"vta";s:3:"115";s:4:"Ã¥r ";s:3:"116";s:3:"juk";s:3:"117";s:3:"man";s:3:"118";s:3:"n f";s:3:"119";s:3:"nin";s:3:"120";s:3:"r i";s:3:"121";s:4:"rsä";s:3:"122";s:3:"sju";s:3:"123";s:3:"sso";s:3:"124";s:4:" är";s:3:"125";s:3:"a s";s:3:"126";s:3:"ach";s:3:"127";s:3:"ag ";s:3:"128";s:3:"bac";s:3:"129";s:3:"den";s:3:"130";s:3:"ett";s:3:"131";s:3:"fte";s:3:"132";s:3:"hor";s:3:"133";s:3:"nba";s:3:"134";s:3:"oll";s:3:"135";s:3:"rnb";s:3:"136";s:3:"ste";s:3:"137";s:3:"til";s:3:"138";s:3:" ef";s:3:"139";s:3:" si";s:3:"140";s:3:"a a";s:3:"141";s:3:"e h";s:3:"142";s:3:"ed ";s:3:"143";s:3:"eft";s:3:"144";s:3:"ga ";s:3:"145";s:3:"ig ";s:3:"146";s:3:"it ";s:3:"147";s:3:"ler";s:3:"148";s:3:"med";s:3:"149";s:3:"n i";s:3:"150";s:3:"nd ";s:3:"151";s:4:"sÃ¥ ";s:3:"152";s:3:"tiv";s:3:"153";s:3:" bl";s:3:"154";s:3:" et";s:3:"155";s:3:" fi";s:3:"156";s:4:" sä";s:3:"157";s:3:"at ";s:3:"158";s:3:"des";s:3:"159";s:3:"e a";s:3:"160";s:3:"gar";s:3:"161";s:3:"get";s:3:"162";s:3:"lan";s:3:"163";s:3:"lss";s:3:"164";s:3:"ost";s:3:"165";s:3:"r b";s:3:"166";s:3:"r e";s:3:"167";s:3:"re ";s:3:"168";s:3:"ret";s:3:"169";s:3:"sta";s:3:"170";s:3:"t i";s:3:"171";s:3:" ge";s:3:"172";s:3:" he";s:3:"173";s:3:" re";s:3:"174";s:3:"a f";s:3:"175";s:3:"all";s:3:"176";s:3:"bos";s:3:"177";s:3:"ets";s:3:"178";s:3:"lek";s:3:"179";s:3:"let";s:3:"180";s:3:"ner";s:3:"181";s:3:"nna";s:3:"182";s:3:"nne";s:3:"183";s:3:"r f";s:3:"184";s:3:"rit";s:3:"185";s:3:"s s";s:3:"186";s:3:"sen";s:3:"187";s:3:"sto";s:3:"188";s:3:"tor";s:3:"189";s:3:"vav";s:3:"190";s:3:"ygg";s:3:"191";s:3:" ka";s:3:"192";s:4:" sÃ¥";s:3:"193";s:3:" tr";s:3:"194";s:3:" ut";s:3:"195";s:3:"ad ";s:3:"196";s:3:"al ";s:3:"197";s:3:"are";s:3:"198";s:3:"e o";s:3:"199";s:3:"gon";s:3:"200";s:3:"kom";s:3:"201";s:3:"n a";s:3:"202";s:3:"n h";s:3:"203";s:3:"nga";s:3:"204";s:3:"r h";s:3:"205";s:3:"ren";s:3:"206";s:3:"t d";s:3:"207";s:3:"tag";s:3:"208";s:3:"tar";s:3:"209";s:3:"tre";s:3:"210";s:4:"ätt";s:3:"211";s:4:" fÃ¥";s:3:"212";s:4:" hä";s:3:"213";s:3:" se";s:3:"214";s:3:"a d";s:3:"215";s:3:"a i";s:3:"216";s:3:"a p";s:3:"217";s:3:"ale";s:3:"218";s:3:"ann";s:3:"219";s:3:"ara";s:3:"220";s:3:"byg";s:3:"221";s:3:"gt ";s:3:"222";s:3:"han";s:3:"223";s:3:"igt";s:3:"224";s:3:"kan";s:3:"225";s:3:"la ";s:3:"226";s:3:"n o";s:3:"227";s:3:"nom";s:3:"228";s:3:"nsk";s:3:"229";s:3:"omm";s:3:"230";s:3:"r k";s:3:"231";s:3:"r p";s:3:"232";s:3:"r v";s:3:"233";s:3:"s f";s:3:"234";s:3:"s k";s:3:"235";s:3:"t a";s:3:"236";s:3:"t p";s:3:"237";s:3:"ver";s:3:"238";s:3:" bo";s:3:"239";s:3:" br";s:3:"240";s:3:" ku";s:3:"241";s:4:" nÃ¥";s:3:"242";s:3:"a b";s:3:"243";s:3:"a e";s:3:"244";s:3:"del";s:3:"245";s:3:"ens";s:3:"246";s:3:"es ";s:3:"247";s:3:"fin";s:3:"248";s:3:"ige";s:3:"249";s:3:"m s";s:3:"250";s:3:"n p";s:3:"251";s:4:"nÃ¥g";s:3:"252";s:3:"or ";s:3:"253";s:3:"r o";s:3:"254";s:3:"rbe";s:3:"255";s:3:"rs ";s:3:"256";s:3:"rt ";s:3:"257";s:3:"s a";s:3:"258";s:3:"s n";s:3:"259";s:3:"skr";s:3:"260";s:3:"t o";s:3:"261";s:3:"ten";s:3:"262";s:3:"tio";s:3:"263";s:3:"ven";s:3:"264";s:3:" al";s:3:"265";s:3:" ja";s:3:"266";s:3:" p ";s:3:"267";s:3:" r ";s:3:"268";s:3:" sa";s:3:"269";s:3:"a h";s:3:"270";s:3:"bet";s:3:"271";s:3:"cke";s:3:"272";s:3:"dra";s:3:"273";s:3:"e f";s:3:"274";s:3:"e i";s:3:"275";s:3:"eda";s:3:"276";s:3:"eno";s:3:"277";s:4:"erä";s:3:"278";s:3:"ess";s:3:"279";s:3:"ion";s:3:"280";s:3:"jag";s:3:"281";s:3:"m f";s:3:"282";s:3:"ne ";s:3:"283";s:3:"nns";s:3:"284";s:3:"pro";s:3:"285";s:3:"r t";s:3:"286";s:3:"rar";s:3:"287";s:3:"riv";s:3:"288";s:4:"rät";s:3:"289";s:3:"t e";s:3:"290";s:3:"t t";s:3:"291";s:3:"ust";s:3:"292";s:3:"vad";s:3:"293";s:4:"öre";s:3:"294";s:3:" ar";s:3:"295";s:3:" by";s:3:"296";s:3:" kr";s:3:"297";s:3:" mi";s:3:"298";s:3:"arb";s:3:"299";}s:7:"tagalog";a:300:{s:3:"ng ";s:1:"0";s:3:"ang";s:1:"1";s:3:" na";s:1:"2";s:3:" sa";s:1:"3";s:3:"an ";s:1:"4";s:3:"nan";s:1:"5";s:3:"sa ";s:1:"6";s:3:"na ";s:1:"7";s:3:" ma";s:1:"8";s:3:" ca";s:1:"9";s:3:"ay ";s:2:"10";s:3:"n g";s:2:"11";s:3:" an";s:2:"12";s:3:"ong";s:2:"13";s:3:" ga";s:2:"14";s:3:"at ";s:2:"15";s:3:" pa";s:2:"16";s:3:"ala";s:2:"17";s:3:" si";s:2:"18";s:3:"a n";s:2:"19";s:3:"ga ";s:2:"20";s:3:"g n";s:2:"21";s:3:"g m";s:2:"22";s:3:"ito";s:2:"23";s:3:"g c";s:2:"24";s:3:"man";s:2:"25";s:3:"san";s:2:"26";s:3:"g s";s:2:"27";s:3:"ing";s:2:"28";s:3:"to ";s:2:"29";s:3:"ila";s:2:"30";s:3:"ina";s:2:"31";s:3:" di";s:2:"32";s:3:" ta";s:2:"33";s:3:"aga";s:2:"34";s:3:"iya";s:2:"35";s:3:"aca";s:2:"36";s:3:"g t";s:2:"37";s:3:" at";s:2:"38";s:3:"aya";s:2:"39";s:3:"ama";s:2:"40";s:3:"lan";s:2:"41";s:3:"a a";s:2:"42";s:3:"qui";s:2:"43";s:3:"a c";s:2:"44";s:3:"a s";s:2:"45";s:3:"nag";s:2:"46";s:3:" ba";s:2:"47";s:3:"g i";s:2:"48";s:3:"tan";s:2:"49";s:3:"'t ";s:2:"50";s:3:" cu";s:2:"51";s:3:"aua";s:2:"52";s:3:"g p";s:2:"53";s:3:" ni";s:2:"54";s:3:"os ";s:2:"55";s:3:"'y ";s:2:"56";s:3:"a m";s:2:"57";s:3:" n ";s:2:"58";s:3:"la ";s:2:"59";s:3:" la";s:2:"60";s:3:"o n";s:2:"61";s:3:"yan";s:2:"62";s:3:" ay";s:2:"63";s:3:"usa";s:2:"64";s:3:"cay";s:2:"65";s:3:"on ";s:2:"66";s:3:"ya ";s:2:"67";s:3:" it";s:2:"68";s:3:"al ";s:2:"69";s:3:"apa";s:2:"70";s:3:"ata";s:2:"71";s:3:"t n";s:2:"72";s:3:"uan";s:2:"73";s:3:"aha";s:2:"74";s:3:"asa";s:2:"75";s:3:"pag";s:2:"76";s:3:" gu";s:2:"77";s:3:"g l";s:2:"78";s:3:"di ";s:2:"79";s:3:"mag";s:2:"80";s:3:"aba";s:2:"81";s:3:"g a";s:2:"82";s:3:"ara";s:2:"83";s:3:"a p";s:2:"84";s:3:"in ";s:2:"85";s:3:"ana";s:2:"86";s:3:"it ";s:2:"87";s:3:"si ";s:2:"88";s:3:"cus";s:2:"89";s:3:"g b";s:2:"90";s:3:"uin";s:2:"91";s:3:"a t";s:2:"92";s:3:"as ";s:2:"93";s:3:"n n";s:2:"94";s:3:"hin";s:2:"95";s:3:" hi";s:2:"96";s:3:"a't";s:2:"97";s:3:"ali";s:2:"98";s:3:" bu";s:2:"99";s:3:"gan";s:3:"100";s:3:"uma";s:3:"101";s:3:"a d";s:3:"102";s:3:"agc";s:3:"103";s:3:"aqu";s:3:"104";s:3:"g d";s:3:"105";s:3:" tu";s:3:"106";s:3:"aon";s:3:"107";s:3:"ari";s:3:"108";s:3:"cas";s:3:"109";s:3:"i n";s:3:"110";s:3:"niy";s:3:"111";s:3:"pin";s:3:"112";s:3:"a i";s:3:"113";s:3:"gca";s:3:"114";s:3:"siy";s:3:"115";s:3:"a'y";s:3:"116";s:3:"yao";s:3:"117";s:3:"ag ";s:3:"118";s:3:"ca ";s:3:"119";s:3:"han";s:3:"120";s:3:"ili";s:3:"121";s:3:"pan";s:3:"122";s:3:"sin";s:3:"123";s:3:"ual";s:3:"124";s:3:"n s";s:3:"125";s:3:"nam";s:3:"126";s:3:" lu";s:3:"127";s:3:"can";s:3:"128";s:3:"dit";s:3:"129";s:3:"gui";s:3:"130";s:3:"y n";s:3:"131";s:3:"gal";s:3:"132";s:3:"hat";s:3:"133";s:3:"nal";s:3:"134";s:3:" is";s:3:"135";s:3:"bag";s:3:"136";s:3:"fra";s:3:"137";s:3:" fr";s:3:"138";s:3:" su";s:3:"139";s:3:"a l";s:3:"140";s:3:" co";s:3:"141";s:3:"ani";s:3:"142";s:3:" bi";s:3:"143";s:3:" da";s:3:"144";s:3:"alo";s:3:"145";s:3:"isa";s:3:"146";s:3:"ita";s:3:"147";s:3:"may";s:3:"148";s:3:"o s";s:3:"149";s:3:"sil";s:3:"150";s:3:"una";s:3:"151";s:3:" in";s:3:"152";s:3:" pi";s:3:"153";s:3:"l n";s:3:"154";s:3:"nil";s:3:"155";s:3:"o a";s:3:"156";s:3:"pat";s:3:"157";s:3:"sac";s:3:"158";s:3:"t s";s:3:"159";s:3:" ua";s:3:"160";s:3:"agu";s:3:"161";s:3:"ail";s:3:"162";s:3:"bin";s:3:"163";s:3:"dal";s:3:"164";s:3:"g h";s:3:"165";s:3:"ndi";s:3:"166";s:3:"oon";s:3:"167";s:3:"ua ";s:3:"168";s:3:" ha";s:3:"169";s:3:"ind";s:3:"170";s:3:"ran";s:3:"171";s:3:"s n";s:3:"172";s:3:"tin";s:3:"173";s:3:"ulo";s:3:"174";s:3:"eng";s:3:"175";s:3:"g f";s:3:"176";s:3:"ini";s:3:"177";s:3:"lah";s:3:"178";s:3:"lo ";s:3:"179";s:3:"rai";s:3:"180";s:3:"rin";s:3:"181";s:3:"ton";s:3:"182";s:3:"g u";s:3:"183";s:3:"inu";s:3:"184";s:3:"lon";s:3:"185";s:3:"o'y";s:3:"186";s:3:"t a";s:3:"187";s:3:" ar";s:3:"188";s:3:"a b";s:3:"189";s:3:"ad ";s:3:"190";s:3:"bay";s:3:"191";s:3:"cal";s:3:"192";s:3:"gya";s:3:"193";s:3:"ile";s:3:"194";s:3:"mat";s:3:"195";s:3:"n a";s:3:"196";s:3:"pau";s:3:"197";s:3:"ra ";s:3:"198";s:3:"tay";s:3:"199";s:3:"y m";s:3:"200";s:3:"ant";s:3:"201";s:3:"ban";s:3:"202";s:3:"i m";s:3:"203";s:3:"nas";s:3:"204";s:3:"nay";s:3:"205";s:3:"no ";s:3:"206";s:3:"sti";s:3:"207";s:3:" ti";s:3:"208";s:3:"ags";s:3:"209";s:3:"g g";s:3:"210";s:3:"ta ";s:3:"211";s:3:"uit";s:3:"212";s:3:"uno";s:3:"213";s:3:" ib";s:3:"214";s:3:" ya";s:3:"215";s:3:"a u";s:3:"216";s:3:"abi";s:3:"217";s:3:"ati";s:3:"218";s:3:"cap";s:3:"219";s:3:"ig ";s:3:"220";s:3:"is ";s:3:"221";s:3:"la'";s:3:"222";s:3:" do";s:3:"223";s:3:" pu";s:3:"224";s:3:"api";s:3:"225";s:3:"ayo";s:3:"226";s:3:"gos";s:3:"227";s:3:"gul";s:3:"228";s:3:"lal";s:3:"229";s:3:"tag";s:3:"230";s:3:"til";s:3:"231";s:3:"tun";s:3:"232";s:3:"y c";s:3:"233";s:3:"y s";s:3:"234";s:3:"yon";s:3:"235";s:3:"ano";s:3:"236";s:3:"bur";s:3:"237";s:3:"iba";s:3:"238";s:3:"isi";s:3:"239";s:3:"lam";s:3:"240";s:3:"nac";s:3:"241";s:3:"nat";s:3:"242";s:3:"ni ";s:3:"243";s:3:"nto";s:3:"244";s:3:"od ";s:3:"245";s:3:"pa ";s:3:"246";s:3:"rgo";s:3:"247";s:3:"urg";s:3:"248";s:3:" m ";s:3:"249";s:3:"adr";s:3:"250";s:3:"ast";s:3:"251";s:3:"cag";s:3:"252";s:3:"gay";s:3:"253";s:3:"gsi";s:3:"254";s:3:"i p";s:3:"255";s:3:"ino";s:3:"256";s:3:"len";s:3:"257";s:3:"lin";s:3:"258";s:3:"m g";s:3:"259";s:3:"mar";s:3:"260";s:3:"nah";s:3:"261";s:3:"to'";s:3:"262";s:3:" de";s:3:"263";s:3:"a h";s:3:"264";s:3:"cat";s:3:"265";s:3:"cau";s:3:"266";s:3:"con";s:3:"267";s:3:"iqu";s:3:"268";s:3:"lac";s:3:"269";s:3:"mab";s:3:"270";s:3:"min";s:3:"271";s:3:"og ";s:3:"272";s:3:"par";s:3:"273";s:3:"sal";s:3:"274";s:3:" za";s:3:"275";s:3:"ao ";s:3:"276";s:3:"doo";s:3:"277";s:3:"ipi";s:3:"278";s:3:"nod";s:3:"279";s:3:"nte";s:3:"280";s:3:"uha";s:3:"281";s:3:"ula";s:3:"282";s:3:" re";s:3:"283";s:3:"ill";s:3:"284";s:3:"lit";s:3:"285";s:3:"mac";s:3:"286";s:3:"nit";s:3:"287";s:3:"o't";s:3:"288";s:3:"or ";s:3:"289";s:3:"ora";s:3:"290";s:3:"sum";s:3:"291";s:3:"y p";s:3:"292";s:3:" al";s:3:"293";s:3:" mi";s:3:"294";s:3:" um";s:3:"295";s:3:"aco";s:3:"296";s:3:"ada";s:3:"297";s:3:"agd";s:3:"298";s:3:"cab";s:3:"299";}s:7:"turkish";a:300:{s:3:"lar";s:1:"0";s:3:"en ";s:1:"1";s:3:"ler";s:1:"2";s:3:"an ";s:1:"3";s:3:"in ";s:1:"4";s:3:" bi";s:1:"5";s:3:" ya";s:1:"6";s:3:"eri";s:1:"7";s:3:"de ";s:1:"8";s:3:" ka";s:1:"9";s:3:"ir ";s:2:"10";s:4:"arı";s:2:"11";s:3:" ba";s:2:"12";s:3:" de";s:2:"13";s:3:" ha";s:2:"14";s:4:"ın ";s:2:"15";s:3:"ara";s:2:"16";s:3:"bir";s:2:"17";s:3:" ve";s:2:"18";s:3:" sa";s:2:"19";s:3:"ile";s:2:"20";s:3:"le ";s:2:"21";s:3:"nde";s:2:"22";s:3:"da ";s:2:"23";s:3:" bu";s:2:"24";s:3:"ana";s:2:"25";s:3:"ini";s:2:"26";s:5:"ını";s:2:"27";s:3:"er ";s:2:"28";s:3:"ve ";s:2:"29";s:4:" yı";s:2:"30";s:3:"lma";s:2:"31";s:4:"yıl";s:2:"32";s:3:" ol";s:2:"33";s:3:"ar ";s:2:"34";s:3:"n b";s:2:"35";s:3:"nda";s:2:"36";s:3:"aya";s:2:"37";s:3:"li ";s:2:"38";s:4:"ası";s:2:"39";s:3:" ge";s:2:"40";s:3:"ind";s:2:"41";s:3:"n k";s:2:"42";s:3:"esi";s:2:"43";s:3:"lan";s:2:"44";s:3:"nla";s:2:"45";s:3:"ak ";s:2:"46";s:4:"anı";s:2:"47";s:3:"eni";s:2:"48";s:3:"ni ";s:2:"49";s:4:"nı ";s:2:"50";s:4:"rın";s:2:"51";s:3:"san";s:2:"52";s:3:" ko";s:2:"53";s:3:" ye";s:2:"54";s:3:"maz";s:2:"55";s:4:"baÅŸ";s:2:"56";s:3:"ili";s:2:"57";s:3:"rin";s:2:"58";s:4:"alı";s:2:"59";s:3:"az ";s:2:"60";s:3:"hal";s:2:"61";s:4:"ınd";s:2:"62";s:3:" da";s:2:"63";s:4:" gü";s:2:"64";s:3:"ele";s:2:"65";s:4:"ılm";s:2:"66";s:6:"ığı";s:2:"67";s:3:"eki";s:2:"68";s:4:"gün";s:2:"69";s:3:"i b";s:2:"70";s:4:"içi";s:2:"71";s:3:"den";s:2:"72";s:3:"kar";s:2:"73";s:3:"si ";s:2:"74";s:3:" il";s:2:"75";s:3:"e y";s:2:"76";s:3:"na ";s:2:"77";s:3:"yor";s:2:"78";s:3:"ek ";s:2:"79";s:3:"n s";s:2:"80";s:4:" iç";s:2:"81";s:3:"bu ";s:2:"82";s:3:"e b";s:2:"83";s:3:"im ";s:2:"84";s:3:"ki ";s:2:"85";s:3:"len";s:2:"86";s:3:"ri ";s:2:"87";s:4:"sın";s:2:"88";s:3:" so";s:2:"89";s:4:"ün ";s:2:"90";s:3:" ta";s:2:"91";s:3:"nin";s:2:"92";s:4:"iÄŸi";s:2:"93";s:3:"tan";s:2:"94";s:3:"yan";s:2:"95";s:3:" si";s:2:"96";s:3:"nat";s:2:"97";s:4:"nın";s:2:"98";s:3:"kan";s:2:"99";s:4:"rı ";s:3:"100";s:4:"çin";s:3:"101";s:5:"ğı ";s:3:"102";s:3:"eli";s:3:"103";s:3:"n a";s:3:"104";s:4:"ır ";s:3:"105";s:3:" an";s:3:"106";s:3:"ine";s:3:"107";s:3:"n y";s:3:"108";s:3:"ola";s:3:"109";s:3:" ar";s:3:"110";s:3:"al ";s:3:"111";s:3:"e s";s:3:"112";s:3:"lik";s:3:"113";s:3:"n d";s:3:"114";s:3:"sin";s:3:"115";s:3:" al";s:3:"116";s:4:" dü";s:3:"117";s:3:"anl";s:3:"118";s:3:"ne ";s:3:"119";s:3:"ya ";s:3:"120";s:4:"ım ";s:3:"121";s:4:"ına";s:3:"122";s:3:" be";s:3:"123";s:3:"ada";s:3:"124";s:3:"ala";s:3:"125";s:3:"ama";s:3:"126";s:3:"ilm";s:3:"127";s:3:"or ";s:3:"128";s:4:"sı ";s:3:"129";s:3:"yen";s:3:"130";s:3:" me";s:3:"131";s:4:"atı";s:3:"132";s:3:"di ";s:3:"133";s:3:"eti";s:3:"134";s:3:"ken";s:3:"135";s:3:"la ";s:3:"136";s:4:"lı ";s:3:"137";s:3:"oru";s:3:"138";s:4:" gö";s:3:"139";s:3:" in";s:3:"140";s:3:"and";s:3:"141";s:3:"e d";s:3:"142";s:3:"men";s:3:"143";s:3:"un ";s:3:"144";s:4:"öne";s:3:"145";s:3:"a d";s:3:"146";s:3:"at ";s:3:"147";s:3:"e a";s:3:"148";s:3:"e g";s:3:"149";s:3:"yar";s:3:"150";s:3:" ku";s:3:"151";s:4:"ayı";s:3:"152";s:3:"dan";s:3:"153";s:3:"edi";s:3:"154";s:3:"iri";s:3:"155";s:5:"ünü";s:3:"156";s:4:"ÄŸi ";s:3:"157";s:5:"ılı";s:3:"158";s:3:"eme";s:3:"159";s:4:"eÄŸi";s:3:"160";s:3:"i k";s:3:"161";s:3:"i y";s:3:"162";s:4:"ıla";s:3:"163";s:4:" ça";s:3:"164";s:3:"a y";s:3:"165";s:3:"alk";s:3:"166";s:4:"dı ";s:3:"167";s:3:"ede";s:3:"168";s:3:"el ";s:3:"169";s:4:"ndı";s:3:"170";s:3:"ra ";s:3:"171";s:4:"üne";s:3:"172";s:4:" sü";s:3:"173";s:4:"dır";s:3:"174";s:3:"e k";s:3:"175";s:3:"ere";s:3:"176";s:3:"ik ";s:3:"177";s:3:"imi";s:3:"178";s:4:"iÅŸi";s:3:"179";s:3:"mas";s:3:"180";s:3:"n h";s:3:"181";s:4:"sür";s:3:"182";s:3:"yle";s:3:"183";s:3:" ad";s:3:"184";s:3:" fi";s:3:"185";s:3:" gi";s:3:"186";s:3:" se";s:3:"187";s:3:"a k";s:3:"188";s:3:"arl";s:3:"189";s:5:"aşı";s:3:"190";s:3:"iyo";s:3:"191";s:3:"kla";s:3:"192";s:5:"lığ";s:3:"193";s:3:"nem";s:3:"194";s:3:"ney";s:3:"195";s:3:"rme";s:3:"196";s:3:"ste";s:3:"197";s:4:"tı ";s:3:"198";s:3:"unl";s:3:"199";s:3:"ver";s:3:"200";s:4:" sı";s:3:"201";s:3:" te";s:3:"202";s:3:" to";s:3:"203";s:3:"a s";s:3:"204";s:4:"aÅŸk";s:3:"205";s:3:"ekl";s:3:"206";s:3:"end";s:3:"207";s:3:"kal";s:3:"208";s:4:"liÄŸ";s:3:"209";s:3:"min";s:3:"210";s:4:"tır";s:3:"211";s:3:"ulu";s:3:"212";s:3:"unu";s:3:"213";s:3:"yap";s:3:"214";s:3:"ye ";s:3:"215";s:4:"ı i";s:3:"216";s:4:"ÅŸka";s:3:"217";s:5:"ÅŸtı";s:3:"218";s:4:" bü";s:3:"219";s:3:" ke";s:3:"220";s:3:" ki";s:3:"221";s:3:"ard";s:3:"222";s:3:"art";s:3:"223";s:4:"aÅŸa";s:3:"224";s:3:"n i";s:3:"225";s:3:"ndi";s:3:"226";s:3:"ti ";s:3:"227";s:3:"top";s:3:"228";s:4:"ı b";s:3:"229";s:3:" va";s:3:"230";s:4:" ön";s:3:"231";s:3:"aki";s:3:"232";s:3:"cak";s:3:"233";s:3:"ey ";s:3:"234";s:3:"fil";s:3:"235";s:3:"isi";s:3:"236";s:3:"kle";s:3:"237";s:3:"kur";s:3:"238";s:3:"man";s:3:"239";s:3:"nce";s:3:"240";s:3:"nle";s:3:"241";s:3:"nun";s:3:"242";s:3:"rak";s:3:"243";s:4:"ık ";s:3:"244";s:3:" en";s:3:"245";s:3:" yo";s:3:"246";s:3:"a g";s:3:"247";s:3:"lis";s:3:"248";s:3:"mak";s:3:"249";s:3:"n g";s:3:"250";s:3:"tir";s:3:"251";s:3:"yas";s:3:"252";s:4:" iÅŸ";s:3:"253";s:4:" yö";s:3:"254";s:3:"ale";s:3:"255";s:3:"bil";s:3:"256";s:3:"bul";s:3:"257";s:3:"et ";s:3:"258";s:3:"i d";s:3:"259";s:3:"iye";s:3:"260";s:3:"kil";s:3:"261";s:3:"ma ";s:3:"262";s:3:"n e";s:3:"263";s:3:"n t";s:3:"264";s:3:"nu ";s:3:"265";s:3:"olu";s:3:"266";s:3:"rla";s:3:"267";s:3:"te ";s:3:"268";s:4:"yön";s:3:"269";s:5:"çık";s:3:"270";s:3:" ay";s:3:"271";s:4:" mü";s:3:"272";s:4:" ço";s:3:"273";s:5:" çı";s:3:"274";s:3:"a a";s:3:"275";s:3:"a b";s:3:"276";s:3:"ata";s:3:"277";s:3:"der";s:3:"278";s:3:"gel";s:3:"279";s:3:"i g";s:3:"280";s:3:"i i";s:3:"281";s:3:"ill";s:3:"282";s:3:"ist";s:3:"283";s:4:"ldı";s:3:"284";s:3:"lu ";s:3:"285";s:3:"mek";s:3:"286";s:3:"mle";s:3:"287";s:4:"n ç";s:3:"288";s:3:"onu";s:3:"289";s:3:"opl";s:3:"290";s:3:"ran";s:3:"291";s:3:"rat";s:3:"292";s:4:"rdı";s:3:"293";s:3:"rke";s:3:"294";s:3:"siy";s:3:"295";s:3:"son";s:3:"296";s:3:"ta ";s:3:"297";s:5:"tçı";s:3:"298";s:4:"tın";s:3:"299";}s:9:"ukrainian";a:300:{s:5:" на";s:1:"0";s:5:" за";s:1:"1";s:6:"ннÑ";s:1:"2";s:5:"Ð½Ñ ";s:1:"3";s:5:"на ";s:1:"4";s:5:" пр";s:1:"5";s:6:"ого";s:1:"6";s:5:"го ";s:1:"7";s:6:"Ñьк";s:1:"8";s:5:" по";s:1:"9";s:4:" у ";s:2:"10";s:6:"від";s:2:"11";s:6:"ере";s:2:"12";s:5:" мі";s:2:"13";s:5:" не";s:2:"14";s:5:"их ";s:2:"15";s:5:"ть ";s:2:"16";s:6:"пер";s:2:"17";s:5:" ві";s:2:"18";s:5:"ів ";s:2:"19";s:5:" пе";s:2:"20";s:5:" що";s:2:"21";s:6:"льн";s:2:"22";s:5:"ми ";s:2:"23";s:5:"ні ";s:2:"24";s:5:"не ";s:2:"25";s:5:"ти ";s:2:"26";s:6:"ати";s:2:"27";s:6:"енн";s:2:"28";s:6:"міÑ";s:2:"29";s:6:"пра";s:2:"30";s:6:"ува";s:2:"31";s:6:"ник";s:2:"32";s:6:"про";s:2:"33";s:6:"рав";s:2:"34";s:6:"івн";s:2:"35";s:5:" та";s:2:"36";s:6:"буд";s:2:"37";s:6:"влі";s:2:"38";s:6:"рів";s:2:"39";s:5:" ко";s:2:"40";s:5:" рі";s:2:"41";s:6:"аль";s:2:"42";s:5:"но ";s:2:"43";s:6:"ому";s:2:"44";s:5:"що ";s:2:"45";s:5:" ви";s:2:"46";s:5:"му ";s:2:"47";s:6:"рев";s:2:"48";s:5:"ÑÑ ";s:2:"49";s:6:"інн";s:2:"50";s:5:" до";s:2:"51";s:5:" уп";s:2:"52";s:6:"авл";s:2:"53";s:6:"анн";s:2:"54";s:6:"ком";s:2:"55";s:5:"ли ";s:2:"56";s:6:"лін";s:2:"57";s:6:"ног";s:2:"58";s:6:"упр";s:2:"59";s:5:" бу";s:2:"60";s:4:" з ";s:2:"61";s:5:" ро";s:2:"62";s:5:"за ";s:2:"63";s:5:"и н";s:2:"64";s:6:"нов";s:2:"65";s:6:"оро";s:2:"66";s:6:"оÑÑ‚";s:2:"67";s:6:"Ñта";s:2:"68";s:5:"ті ";s:2:"69";s:6:"ють";s:2:"70";s:5:" мо";s:2:"71";s:5:" ні";s:2:"72";s:5:" Ñк";s:2:"73";s:6:"бор";s:2:"74";s:5:"ва ";s:2:"75";s:6:"ван";s:2:"76";s:6:"ень";s:2:"77";s:5:"и п";s:2:"78";s:5:"нь ";s:2:"79";s:6:"ові";s:2:"80";s:6:"рон";s:2:"81";s:6:"Ñті";s:2:"82";s:5:"та ";s:2:"83";s:5:"у в";s:2:"84";s:6:"ько";s:2:"85";s:6:"Ñ–ÑÑ‚";s:2:"86";s:4:" в ";s:2:"87";s:5:" ре";s:2:"88";s:5:"до ";s:2:"89";s:5:"е п";s:2:"90";s:6:"заб";s:2:"91";s:5:"ий ";s:2:"92";s:6:"нÑÑŒ";s:2:"93";s:5:"о в";s:2:"94";s:5:"о п";s:2:"95";s:6:"при";s:2:"96";s:5:"Ñ– п";s:2:"97";s:5:" ку";s:2:"98";s:5:" пі";s:2:"99";s:5:" Ñп";s:3:"100";s:5:"а п";s:3:"101";s:6:"або";s:3:"102";s:6:"анÑ";s:3:"103";s:6:"аці";s:3:"104";s:6:"ват";s:3:"105";s:6:"вни";s:3:"106";s:5:"и в";s:3:"107";s:6:"ими";s:3:"108";s:5:"ка ";s:3:"109";s:6:"нен";s:3:"110";s:6:"ніч";s:3:"111";s:6:"она";s:3:"112";s:5:"ої ";s:3:"113";s:6:"пов";s:3:"114";s:6:"ьки";s:3:"115";s:6:"ьно";s:3:"116";s:6:"ізн";s:3:"117";s:6:"ічн";s:3:"118";s:5:" ав";s:3:"119";s:5:" ма";s:3:"120";s:5:" ор";s:3:"121";s:5:" Ñу";s:3:"122";s:5:" чи";s:3:"123";s:5:" ін";s:3:"124";s:5:"а з";s:3:"125";s:5:"ам ";s:3:"126";s:5:"ає ";s:3:"127";s:6:"вне";s:3:"128";s:6:"вто";s:3:"129";s:6:"дом";s:3:"130";s:6:"ент";s:3:"131";s:6:"жит";s:3:"132";s:6:"зни";s:3:"133";s:5:"им ";s:3:"134";s:6:"итл";s:3:"135";s:5:"ла ";s:3:"136";s:6:"них";s:3:"137";s:6:"ниц";s:3:"138";s:6:"ова";s:3:"139";s:6:"ови";s:3:"140";s:5:"ом ";s:3:"141";s:6:"пор";s:3:"142";s:6:"тьÑ";s:3:"143";s:5:"у Ñ€";s:3:"144";s:6:"ÑŒÑÑ";s:3:"145";s:6:"ідо";s:3:"146";s:6:"іль";s:3:"147";s:6:"Ñ–ÑÑŒ";s:3:"148";s:5:" ва";s:3:"149";s:5:" ді";s:3:"150";s:5:" жи";s:3:"151";s:5:" че";s:3:"152";s:4:" Ñ– ";s:3:"153";s:5:"а в";s:3:"154";s:5:"а н";s:3:"155";s:6:"али";s:3:"156";s:6:"вез";s:3:"157";s:6:"вно";s:3:"158";s:6:"еве";s:3:"159";s:6:"езе";s:3:"160";s:6:"зен";s:3:"161";s:6:"ицт";s:3:"162";s:5:"ки ";s:3:"163";s:6:"ких";s:3:"164";s:6:"кон";s:3:"165";s:5:"ку ";s:3:"166";s:6:"лаÑ";s:3:"167";s:5:"Ð»Ñ ";s:3:"168";s:6:"мож";s:3:"169";s:6:"нач";s:3:"170";s:6:"ним";s:3:"171";s:6:"ної";s:3:"172";s:5:"о б";s:3:"173";s:6:"ову";s:3:"174";s:6:"оди";s:3:"175";s:5:"ою ";s:3:"176";s:5:"ро ";s:3:"177";s:6:"рок";s:3:"178";s:6:"Ñно";s:3:"179";s:6:"Ñпо";s:3:"180";s:6:"так";s:3:"181";s:6:"тва";s:3:"182";s:5:"ту ";s:3:"183";s:5:"у п";s:3:"184";s:6:"цтв";s:3:"185";s:6:"ьни";s:3:"186";s:5:"Ñ Ð·";s:3:"187";s:5:"Ñ– м";s:3:"188";s:5:"Ñ–Ñ— ";s:3:"189";s:5:" вÑ";s:3:"190";s:5:" гр";s:3:"191";s:5:" де";s:3:"192";s:5:" но";s:3:"193";s:5:" па";s:3:"194";s:5:" Ñе";s:3:"195";s:5:" ук";s:3:"196";s:5:" Ñ—Ñ…";s:3:"197";s:5:"а о";s:3:"198";s:6:"авт";s:3:"199";s:6:"аÑÑ‚";s:3:"200";s:6:"ают";s:3:"201";s:6:"вар";s:3:"202";s:6:"ден";s:3:"203";s:5:"ди ";s:3:"204";s:5:"ду ";s:3:"205";s:6:"зна";s:3:"206";s:5:"и з";s:3:"207";s:6:"ико";s:3:"208";s:6:"иÑÑ";s:3:"209";s:6:"ити";s:3:"210";s:6:"ког";s:3:"211";s:6:"мен";s:3:"212";s:6:"ном";s:3:"213";s:5:"ну ";s:3:"214";s:5:"о н";s:3:"215";s:5:"о Ñ";s:3:"216";s:6:"обу";s:3:"217";s:6:"ово";s:3:"218";s:6:"пла";s:3:"219";s:6:"ран";s:3:"220";s:6:"рив";s:3:"221";s:6:"роб";s:3:"222";s:6:"Ñка";s:3:"223";s:6:"тан";s:3:"224";s:6:"тим";s:3:"225";s:6:"тиÑ";s:3:"226";s:5:"то ";s:3:"227";s:6:"тра";s:3:"228";s:6:"удо";s:3:"229";s:6:"чин";s:3:"230";s:6:"чни";s:3:"231";s:5:"Ñ– в";s:3:"232";s:5:"Ñ–ÑŽ ";s:3:"233";s:4:" а ";s:3:"234";s:5:" во";s:3:"235";s:5:" да";s:3:"236";s:5:" кв";s:3:"237";s:5:" ме";s:3:"238";s:5:" об";s:3:"239";s:5:" Ñк";s:3:"240";s:5:" ти";s:3:"241";s:5:" фі";s:3:"242";s:4:" Ñ” ";s:3:"243";s:5:"а Ñ€";s:3:"244";s:5:"а Ñ";s:3:"245";s:5:"а у";s:3:"246";s:5:"ак ";s:3:"247";s:6:"ані";s:3:"248";s:6:"арт";s:3:"249";s:6:"аÑн";s:3:"250";s:5:"в у";s:3:"251";s:6:"вик";s:3:"252";s:6:"віз";s:3:"253";s:6:"дов";s:3:"254";s:6:"дпо";s:3:"255";s:6:"дів";s:3:"256";s:6:"еві";s:3:"257";s:6:"енÑ";s:3:"258";s:5:"же ";s:3:"259";s:5:"и м";s:3:"260";s:5:"и Ñ";s:3:"261";s:6:"ика";s:3:"262";s:6:"ичн";s:3:"263";s:5:"кі ";s:3:"264";s:6:"ків";s:3:"265";s:6:"між";s:3:"266";s:6:"нан";s:3:"267";s:6:"ноÑ";s:3:"268";s:5:"о у";s:3:"269";s:6:"обл";s:3:"270";s:6:"одн";s:3:"271";s:5:"ок ";s:3:"272";s:6:"оло";s:3:"273";s:6:"отр";s:3:"274";s:6:"рен";s:3:"275";s:6:"рим";s:3:"276";s:6:"роз";s:3:"277";s:5:"ÑÑŒ ";s:3:"278";s:5:"ÑÑ– ";s:3:"279";s:6:"тла";s:3:"280";s:6:"тів";s:3:"281";s:5:"у з";s:3:"282";s:6:"уго";s:3:"283";s:6:"уді";s:3:"284";s:5:"чи ";s:3:"285";s:5:"ше ";s:3:"286";s:5:"Ñ Ð½";s:3:"287";s:5:"Ñ Ñƒ";s:3:"288";s:6:"ідп";s:3:"289";s:5:"ій ";s:3:"290";s:6:"іна";s:3:"291";s:5:"Ñ–Ñ ";s:3:"292";s:5:" ка";s:3:"293";s:5:" ни";s:3:"294";s:5:" оÑ";s:3:"295";s:5:" Ñи";s:3:"296";s:5:" то";s:3:"297";s:5:" тр";s:3:"298";s:5:" уг";s:3:"299";}s:4:"urdu";a:300:{s:5:"یں ";s:1:"0";s:5:" Ú©ÛŒ";s:1:"1";s:5:"Ú©Û’ ";s:1:"2";s:5:" Ú©Û’";s:1:"3";s:5:"Ù†Û’ ";s:1:"4";s:5:" Ú©Û";s:1:"5";s:5:"Û’ Ú©";s:1:"6";s:5:"Ú©ÛŒ ";s:1:"7";s:6:"میں";s:1:"8";s:5:" Ù…ÛŒ";s:1:"9";s:5:"ÛÛ’ ";s:2:"10";s:5:"ÙˆÚº ";s:2:"11";s:5:"Ú©Û ";s:2:"12";s:5:" ÛÛ’";s:2:"13";s:5:"ان ";s:2:"14";s:6:"Ûیں";s:2:"15";s:5:"ور ";s:2:"16";s:5:" Ú©Ùˆ";s:2:"17";s:5:"یا ";s:2:"18";s:5:" ان";s:2:"19";s:5:" Ù†Û’";s:2:"20";s:5:"سے ";s:2:"21";s:5:" سے";s:2:"22";s:5:" کر";s:2:"23";s:6:"ستا";s:2:"24";s:5:" او";s:2:"25";s:6:"اور";s:2:"26";s:6:"تان";s:2:"27";s:5:"ر Ú©";s:2:"28";s:5:"ÛŒ Ú©";s:2:"29";s:5:" اس";s:2:"30";s:5:"Û’ ا";s:2:"31";s:5:" پا";s:2:"32";s:5:" ÛÙˆ";s:2:"33";s:5:" پر";s:2:"34";s:5:"ر٠";s:2:"35";s:5:" کا";s:2:"36";s:5:"ا Ú©";s:2:"37";s:5:"ÛŒ ا";s:2:"38";s:5:" ÛÛŒ";s:2:"39";s:5:"در ";s:2:"40";s:5:"Ú©Ùˆ ";s:2:"41";s:5:" ای";s:2:"42";s:5:"Úº Ú©";s:2:"43";s:5:" مش";s:2:"44";s:5:" مل";s:2:"45";s:5:"ات ";s:2:"46";s:6:"صدر";s:2:"47";s:6:"اکس";s:2:"48";s:6:"شرÙ";s:2:"49";s:6:"مشر";s:2:"50";s:6:"پاک";s:2:"51";s:6:"کست";s:2:"52";s:5:"ÛŒ Ù…";s:2:"53";s:5:" دی";s:2:"54";s:5:" صد";s:2:"55";s:5:" ÛŒÛ";s:2:"56";s:5:"ا Û";s:2:"57";s:5:"Ù† Ú©";s:2:"58";s:6:"وال";s:2:"59";s:5:"ÛŒÛ ";s:2:"60";s:5:"Û’ Ùˆ";s:2:"61";s:5:" بھ";s:2:"62";s:5:" دو";s:2:"63";s:5:"اس ";s:2:"64";s:5:"ر ا";s:2:"65";s:6:"Ù†ÛÛŒ";s:2:"66";s:5:"کا ";s:2:"67";s:5:"Û’ س";s:2:"68";s:5:"ئی ";s:2:"69";s:5:"Û Ø§";s:2:"70";s:5:"یت ";s:2:"71";s:5:"Û’ Û";s:2:"72";s:5:"ت Ú©";s:2:"73";s:5:" سا";s:2:"74";s:5:"Ù„Û’ ";s:2:"75";s:5:"ÛØ§ ";s:2:"76";s:5:"Û’ ب";s:2:"77";s:5:" وا";s:2:"78";s:5:"ار ";s:2:"79";s:5:"Ù†ÛŒ ";s:2:"80";s:6:"Ú©ÛØ§";s:2:"81";s:5:"ÛŒ Û";s:2:"82";s:5:"Û’ Ù…";s:2:"83";s:5:" سی";s:2:"84";s:5:" Ù„ÛŒ";s:2:"85";s:6:"انÛ";s:2:"86";s:6:"انی";s:2:"87";s:5:"ر Ù…";s:2:"88";s:5:"ر Ù¾";s:2:"89";s:6:"ریت";s:2:"90";s:5:"Ù† Ù…";s:2:"91";s:5:"ھا ";s:2:"92";s:5:"یر ";s:2:"93";s:5:" جا";s:2:"94";s:5:" جن";s:2:"95";s:5:"ئے ";s:2:"96";s:5:"پر ";s:2:"97";s:5:"Úº Ù†";s:2:"98";s:5:"Û Ú©";s:2:"99";s:5:"ÛŒ Ùˆ";s:3:"100";s:5:"Û’ د";s:3:"101";s:5:" تو";s:3:"102";s:5:" تھ";s:3:"103";s:5:" Ú¯ÛŒ";s:3:"104";s:6:"ایک";s:3:"105";s:5:"Ù„ Ú©";s:3:"106";s:5:"نا ";s:3:"107";s:5:"کر ";s:3:"108";s:5:"Úº Ù…";s:3:"109";s:5:"یک ";s:3:"110";s:5:" با";s:3:"111";s:5:"ا ت";s:3:"112";s:5:"دی ";s:3:"113";s:5:"Ù† س";s:3:"114";s:6:"کیا";s:3:"115";s:6:"یوں";s:3:"116";s:5:"Û’ ج";s:3:"117";s:5:"ال ";s:3:"118";s:5:"تو ";s:3:"119";s:5:"Úº ا";s:3:"120";s:5:"Û’ Ù¾";s:3:"121";s:5:" چا";s:3:"122";s:5:"ام ";s:3:"123";s:6:"بھی";s:3:"124";s:5:"تی ";s:3:"125";s:5:"تے ";s:3:"126";s:6:"دوس";s:3:"127";s:5:"س Ú©";s:3:"128";s:6:"ملک";s:3:"129";s:5:"Ù† ا";s:3:"130";s:6:"Ûور";s:3:"131";s:5:"یے ";s:3:"132";s:5:" مو";s:3:"133";s:5:" ÙˆÚ©";s:3:"134";s:6:"ائی";s:3:"135";s:6:"ارت";s:3:"136";s:6:"الے";s:3:"137";s:6:"بھا";s:3:"138";s:6:"ردی";s:3:"139";s:5:"ری ";s:3:"140";s:5:"ÙˆÛ ";s:3:"141";s:6:"ویز";s:3:"142";s:5:"Úº د";s:3:"143";s:5:"Ú¾ÛŒ ";s:3:"144";s:5:"ÛŒ س";s:3:"145";s:5:" رÛ";s:3:"146";s:5:" من";s:3:"147";s:5:" Ù†Û";s:3:"148";s:5:" ور";s:3:"149";s:5:" ÙˆÛ";s:3:"150";s:5:" ÛÙ†";s:3:"151";s:5:"ا ا";s:3:"152";s:6:"است";s:3:"153";s:5:"ت ا";s:3:"154";s:5:"ت Ù¾";s:3:"155";s:5:"د Ú©";s:3:"156";s:5:"ز Ù…";s:3:"157";s:5:"ند ";s:3:"158";s:6:"ورد";s:3:"159";s:6:"ÙˆÚ©Ù„";s:3:"160";s:5:"Ú¯ÛŒ ";s:3:"161";s:6:"گیا";s:3:"162";s:5:"Û Ù¾";s:3:"163";s:5:"یز ";s:3:"164";s:5:"Û’ ت";s:3:"165";s:5:" اع";s:3:"166";s:5:" اپ";s:3:"167";s:5:" جس";s:3:"168";s:5:" جم";s:3:"169";s:5:" جو";s:3:"170";s:5:" سر";s:3:"171";s:6:"اپن";s:3:"172";s:6:"اکث";s:3:"173";s:6:"تھا";s:3:"174";s:6:"ثری";s:3:"175";s:6:"دیا";s:3:"176";s:5:"ر د";s:3:"177";s:5:"رت ";s:3:"178";s:6:"روی";s:3:"179";s:5:"سی ";s:3:"180";s:6:"ملا";s:3:"181";s:6:"ندو";s:3:"182";s:6:"وست";s:3:"183";s:6:"پرو";s:3:"184";s:6:"چاÛ";s:3:"185";s:6:"کثر";s:3:"186";s:6:"کلا";s:3:"187";s:5:"Û Û";s:3:"188";s:6:"Ûند";s:3:"189";s:5:"ÛÙˆ ";s:3:"190";s:5:"Û’ Ù„";s:3:"191";s:5:" اک";s:3:"192";s:5:" دا";s:3:"193";s:5:" سن";s:3:"194";s:5:" وز";s:3:"195";s:5:" Ù¾ÛŒ";s:3:"196";s:5:"ا Ú†";s:3:"197";s:5:"اء ";s:3:"198";s:6:"اتھ";s:3:"199";s:6:"اقا";s:3:"200";s:5:"Ø§Û ";s:3:"201";s:5:"تھ ";s:3:"202";s:5:"دو ";s:3:"203";s:5:"ر ب";s:3:"204";s:6:"روا";s:3:"205";s:5:"رے ";s:3:"206";s:6:"سات";s:3:"207";s:5:"Ù Ú©";s:3:"208";s:6:"قات";s:3:"209";s:5:"لا ";s:3:"210";s:6:"لاء";s:3:"211";s:5:"Ù… Ù…";s:3:"212";s:5:"Ù… Ú©";s:3:"213";s:5:"من ";s:3:"214";s:6:"نوں";s:3:"215";s:5:"Ùˆ ا";s:3:"216";s:6:"کرن";s:3:"217";s:5:"Úº Û";s:3:"218";s:6:"ھار";s:3:"219";s:6:"Ûوئ";s:3:"220";s:5:"ÛÛŒ ";s:3:"221";s:5:"یش ";s:3:"222";s:5:" ام";s:3:"223";s:5:" لا";s:3:"224";s:5:" مس";s:3:"225";s:5:" پو";s:3:"226";s:5:" Ù¾Û";s:3:"227";s:6:"انے";s:3:"228";s:5:"ت Ù…";s:3:"229";s:5:"ت Û";s:3:"230";s:5:"ج Ú©";s:3:"231";s:6:"دون";s:3:"232";s:6:"زیر";s:3:"233";s:5:"س س";s:3:"234";s:5:"Ø´ Ú©";s:3:"235";s:5:"Ù Ù†";s:3:"236";s:5:"Ù„ Û";s:3:"237";s:6:"لاق";s:3:"238";s:5:"Ù„ÛŒ ";s:3:"239";s:6:"وری";s:3:"240";s:6:"وزی";s:3:"241";s:6:"ونو";s:3:"242";s:6:"Ú©Ú¾Ù†";s:3:"243";s:5:"گا ";s:3:"244";s:5:"Úº س";s:3:"245";s:5:"Úº Ú¯";s:3:"246";s:6:"Ú¾Ù†Û’";s:3:"247";s:5:"Ú¾Û’ ";s:3:"248";s:5:"Û Ø¨";s:3:"249";s:5:"Û Ø¬";s:3:"250";s:5:"ÛØ± ";s:3:"251";s:5:"ÛŒ Ø¢";s:3:"252";s:5:"ÛŒ Ù¾";s:3:"253";s:5:" حا";s:3:"254";s:5:" ÙˆÙ";s:3:"255";s:5:" گا";s:3:"256";s:5:"ا ج";s:3:"257";s:5:"ا Ú¯";s:3:"258";s:5:"اد ";s:3:"259";s:6:"ادی";s:3:"260";s:6:"اعظ";s:3:"261";s:6:"Ø§ÛØª";s:3:"262";s:5:"جس ";s:3:"263";s:6:"جمÛ";s:3:"264";s:5:"جو ";s:3:"265";s:5:"ر س";s:3:"266";s:5:"ر Û";s:3:"267";s:6:"رنے";s:3:"268";s:5:"س Ù…";s:3:"269";s:5:"سا ";s:3:"270";s:6:"سند";s:3:"271";s:6:"سنگ";s:3:"272";s:5:"ظم ";s:3:"273";s:6:"عظم";s:3:"274";s:5:"Ù„ Ù…";s:3:"275";s:6:"لیے";s:3:"276";s:5:"مل ";s:3:"277";s:6:"موÛ";s:3:"278";s:6:"Ù…ÛÙˆ";s:3:"279";s:6:"Ù†Ú¯Ú¾";s:3:"280";s:5:"Ùˆ ص";s:3:"281";s:6:"ورٹ";s:3:"282";s:6:"ÙˆÛÙ†";s:3:"283";s:5:"Ú©Ù† ";s:3:"284";s:5:"Ú¯Ú¾ ";s:3:"285";s:5:"Ú¯Û’ ";s:3:"286";s:5:"Úº ج";s:3:"287";s:5:"Úº Ùˆ";s:3:"288";s:5:"Úº ÛŒ";s:3:"289";s:5:"Û Ø¯";s:3:"290";s:5:"ÛÙ† ";s:3:"291";s:6:"ÛÙˆÚº";s:3:"292";s:5:"Û’ Ø­";s:3:"293";s:5:"Û’ Ú¯";s:3:"294";s:5:"Û’ ÛŒ";s:3:"295";s:5:" اگ";s:3:"296";s:5:" بع";s:3:"297";s:5:" رو";s:3:"298";s:5:" شا";s:3:"299";}s:5:"uzbek";a:300:{s:5:"ан ";s:1:"0";s:6:"ган";s:1:"1";s:6:"лар";s:1:"2";s:5:"га ";s:1:"3";s:5:"нг ";s:1:"4";s:6:"инг";s:1:"5";s:6:"нин";s:1:"6";s:5:"да ";s:1:"7";s:5:"ни ";s:1:"8";s:6:"ида";s:1:"9";s:6:"ари";s:2:"10";s:6:"ига";s:2:"11";s:6:"ини";s:2:"12";s:5:"ар ";s:2:"13";s:5:"ди ";s:2:"14";s:5:" би";s:2:"15";s:6:"ани";s:2:"16";s:5:" бо";s:2:"17";s:6:"дан";s:2:"18";s:6:"лга";s:2:"19";s:5:" ҳа";s:2:"20";s:5:" ва";s:2:"21";s:5:" Ñа";s:2:"22";s:5:"ги ";s:2:"23";s:6:"ила";s:2:"24";s:5:"н б";s:2:"25";s:5:"и б";s:2:"26";s:5:" кў";s:2:"27";s:5:" та";s:2:"28";s:5:"ир ";s:2:"29";s:5:" ма";s:2:"30";s:6:"ага";s:2:"31";s:6:"ала";s:2:"32";s:6:"бир";s:2:"33";s:5:"ри ";s:2:"34";s:6:"тга";s:2:"35";s:6:"лан";s:2:"36";s:6:"лик";s:2:"37";s:5:"а к";s:2:"38";s:6:"аги";s:2:"39";s:6:"ати";s:2:"40";s:5:"та ";s:2:"41";s:6:"ади";s:2:"42";s:6:"даг";s:2:"43";s:6:"рга";s:2:"44";s:5:" йи";s:2:"45";s:5:" ми";s:2:"46";s:5:" па";s:2:"47";s:5:" бў";s:2:"48";s:5:" қа";s:2:"49";s:5:" қи";s:2:"50";s:5:"а б";s:2:"51";s:6:"илл";s:2:"52";s:5:"ли ";s:2:"53";s:6:"аÑи";s:2:"54";s:5:"и Ñ‚";s:2:"55";s:5:"ик ";s:2:"56";s:6:"или";s:2:"57";s:6:"лла";s:2:"58";s:6:"ард";s:2:"59";s:6:"вчи";s:2:"60";s:5:"ва ";s:2:"61";s:5:"иб ";s:2:"62";s:6:"ири";s:2:"63";s:6:"лиг";s:2:"64";s:6:"нга";s:2:"65";s:6:"ран";s:2:"66";s:5:" ке";s:2:"67";s:5:" ўз";s:2:"68";s:5:"а Ñ";s:2:"69";s:6:"ахт";s:2:"70";s:6:"бўл";s:2:"71";s:6:"иги";s:2:"72";s:6:"кўр";s:2:"73";s:6:"рда";s:2:"74";s:6:"рни";s:2:"75";s:5:"Ñа ";s:2:"76";s:5:" бе";s:2:"77";s:5:" бу";s:2:"78";s:5:" да";s:2:"79";s:5:" жа";s:2:"80";s:5:"а Ñ‚";s:2:"81";s:6:"ази";s:2:"82";s:6:"ери";s:2:"83";s:5:"и а";s:2:"84";s:6:"илг";s:2:"85";s:6:"йил";s:2:"86";s:6:"ман";s:2:"87";s:6:"пах";s:2:"88";s:6:"рид";s:2:"89";s:5:"ти ";s:2:"90";s:6:"увч";s:2:"91";s:6:"хта";s:2:"92";s:5:" не";s:2:"93";s:5:" Ñо";s:2:"94";s:5:" уч";s:2:"95";s:6:"айт";s:2:"96";s:6:"лли";s:2:"97";s:6:"тла";s:2:"98";s:5:" ай";s:2:"99";s:5:" фр";s:3:"100";s:5:" ÑÑ‚";s:3:"101";s:5:" ҳо";s:3:"102";s:5:"а Ò›";s:3:"103";s:6:"али";s:3:"104";s:6:"аро";s:3:"105";s:6:"бер";s:3:"106";s:6:"бил";s:3:"107";s:6:"бор";s:3:"108";s:6:"ими";s:3:"109";s:6:"иÑÑ‚";s:3:"110";s:5:"он ";s:3:"111";s:6:"рин";s:3:"112";s:6:"тер";s:3:"113";s:6:"тил";s:3:"114";s:5:"ун ";s:3:"115";s:6:"фра";s:3:"116";s:6:"қил";s:3:"117";s:5:" ба";s:3:"118";s:5:" ол";s:3:"119";s:6:"анÑ";s:3:"120";s:6:"ефт";s:3:"121";s:6:"зир";s:3:"122";s:6:"кат";s:3:"123";s:6:"мил";s:3:"124";s:6:"неф";s:3:"125";s:6:"Ñаг";s:3:"126";s:5:"чи ";s:3:"127";s:6:"ўра";s:3:"128";s:5:" на";s:3:"129";s:5:" те";s:3:"130";s:5:" Ñн";s:3:"131";s:5:"а Ñ";s:3:"132";s:5:"ам ";s:3:"133";s:6:"арн";s:3:"134";s:5:"ат ";s:3:"135";s:5:"иш ";s:3:"136";s:5:"ма ";s:3:"137";s:6:"нла";s:3:"138";s:6:"рли";s:3:"139";s:6:"чил";s:3:"140";s:6:"шга";s:3:"141";s:5:" иш";s:3:"142";s:5:" му";s:3:"143";s:5:" ÑžÒ›";s:3:"144";s:6:"ара";s:3:"145";s:6:"ваз";s:3:"146";s:5:"и у";s:3:"147";s:5:"иқ ";s:3:"148";s:6:"моқ";s:3:"149";s:6:"рим";s:3:"150";s:6:"учу";s:3:"151";s:6:"чун";s:3:"152";s:5:"ши ";s:3:"153";s:6:"Ñнг";s:3:"154";s:6:"қув";s:3:"155";s:6:"ҳам";s:3:"156";s:5:" ÑÑž";s:3:"157";s:5:" ши";s:3:"158";s:6:"бар";s:3:"159";s:6:"бек";s:3:"160";s:6:"дам";s:3:"161";s:5:"и Ò³";s:3:"162";s:6:"иши";s:3:"163";s:6:"лад";s:3:"164";s:6:"оли";s:3:"165";s:6:"олл";s:3:"166";s:6:"ори";s:3:"167";s:6:"оқд";s:3:"168";s:5:"Ñ€ б";s:3:"169";s:5:"ра ";s:3:"170";s:6:"рла";s:3:"171";s:6:"уни";s:3:"172";s:5:"фт ";s:3:"173";s:6:"ўлг";s:3:"174";s:6:"ўқу";s:3:"175";s:5:" де";s:3:"176";s:5:" ка";s:3:"177";s:5:" қў";s:3:"178";s:5:"а Ñž";s:3:"179";s:6:"аба";s:3:"180";s:6:"амм";s:3:"181";s:6:"атл";s:3:"182";s:5:"б к";s:3:"183";s:6:"бош";s:3:"184";s:6:"збе";s:3:"185";s:5:"и в";s:3:"186";s:5:"им ";s:3:"187";s:5:"ин ";s:3:"188";s:6:"ишл";s:3:"189";s:6:"лаб";s:3:"190";s:6:"лей";s:3:"191";s:6:"мин";s:3:"192";s:5:"н д";s:3:"193";s:6:"нда";s:3:"194";s:5:"оқ ";s:3:"195";s:5:"Ñ€ м";s:3:"196";s:6:"рил";s:3:"197";s:6:"Ñид";s:3:"198";s:6:"тал";s:3:"199";s:6:"тан";s:3:"200";s:6:"тид";s:3:"201";s:6:"тон";s:3:"202";s:6:"ўзб";s:3:"203";s:5:" ам";s:3:"204";s:5:" ки";s:3:"205";s:5:"а Ò³";s:3:"206";s:6:"анг";s:3:"207";s:6:"анд";s:3:"208";s:6:"арт";s:3:"209";s:6:"аёт";s:3:"210";s:6:"дир";s:3:"211";s:6:"ент";s:3:"212";s:5:"и д";s:3:"213";s:5:"и м";s:3:"214";s:5:"и о";s:3:"215";s:5:"и Ñ";s:3:"216";s:6:"иро";s:3:"217";s:6:"йти";s:3:"218";s:6:"нÑу";s:3:"219";s:6:"оди";s:3:"220";s:5:"ор ";s:3:"221";s:5:"Ñи ";s:3:"222";s:6:"тиш";s:3:"223";s:6:"тоб";s:3:"224";s:6:"Ñти";s:3:"225";s:6:"қар";s:3:"226";s:6:"қда";s:3:"227";s:5:" бл";s:3:"228";s:5:" ге";s:3:"229";s:5:" до";s:3:"230";s:5:" ду";s:3:"231";s:5:" но";s:3:"232";s:5:" пр";s:3:"233";s:5:" ра";s:3:"234";s:5:" фо";s:3:"235";s:5:" қо";s:3:"236";s:5:"а м";s:3:"237";s:5:"а о";s:3:"238";s:6:"айд";s:3:"239";s:6:"ало";s:3:"240";s:6:"ама";s:3:"241";s:6:"бле";s:3:"242";s:5:"г н";s:3:"243";s:6:"дол";s:3:"244";s:6:"ейр";s:3:"245";s:5:"ек ";s:3:"246";s:6:"ерг";s:3:"247";s:6:"жар";s:3:"248";s:6:"зид";s:3:"249";s:5:"и к";s:3:"250";s:5:"и Ñ„";s:3:"251";s:5:"ий ";s:3:"252";s:6:"ило";s:3:"253";s:6:"лди";s:3:"254";s:6:"либ";s:3:"255";s:6:"лин";s:3:"256";s:5:"ми ";s:3:"257";s:6:"мма";s:3:"258";s:5:"н в";s:3:"259";s:5:"н к";s:3:"260";s:5:"н Ñž";s:3:"261";s:5:"н Ò³";s:3:"262";s:6:"ози";s:3:"263";s:6:"ора";s:3:"264";s:6:"оÑи";s:3:"265";s:6:"раÑ";s:3:"266";s:6:"риш";s:3:"267";s:6:"рка";s:3:"268";s:6:"роқ";s:3:"269";s:6:"Ñто";s:3:"270";s:6:"тин";s:3:"271";s:6:"хат";s:3:"272";s:6:"шир";s:3:"273";s:5:" ав";s:3:"274";s:5:" рў";s:3:"275";s:5:" ту";s:3:"276";s:5:" ўт";s:3:"277";s:5:"а п";s:3:"278";s:6:"авт";s:3:"279";s:6:"ада";s:3:"280";s:6:"аза";s:3:"281";s:6:"анл";s:3:"282";s:5:"б б";s:3:"283";s:6:"бой";s:3:"284";s:5:"бу ";s:3:"285";s:6:"вто";s:3:"286";s:5:"г Ñ";s:3:"287";s:6:"гин";s:3:"288";s:6:"дар";s:3:"289";s:6:"ден";s:3:"290";s:6:"дун";s:3:"291";s:6:"иде";s:3:"292";s:6:"ион";s:3:"293";s:6:"ирл";s:3:"294";s:6:"ишг";s:3:"295";s:6:"йха";s:3:"296";s:6:"кел";s:3:"297";s:6:"кўп";s:3:"298";s:6:"лио";s:3:"299";}s:10:"vietnamese";a:300:{s:3:"ng ";s:1:"0";s:3:" th";s:1:"1";s:3:" ch";s:1:"2";s:3:"g t";s:1:"3";s:3:" nh";s:1:"4";s:4:"ông";s:1:"5";s:3:" kh";s:1:"6";s:3:" tr";s:1:"7";s:3:"nh ";s:1:"8";s:4:" cô";s:1:"9";s:4:"côn";s:2:"10";s:3:" ty";s:2:"11";s:3:"ty ";s:2:"12";s:3:"i t";s:2:"13";s:3:"n t";s:2:"14";s:3:" ng";s:2:"15";s:5:"ại ";s:2:"16";s:3:" ti";s:2:"17";s:3:"ch ";s:2:"18";s:3:"y l";s:2:"19";s:5:"á»n ";s:2:"20";s:5:" đư";s:2:"21";s:3:"hi ";s:2:"22";s:5:" gở";s:2:"23";s:5:"gởi";s:2:"24";s:5:"iá»n";s:2:"25";s:5:"tiá»";s:2:"26";s:5:"ởi ";s:2:"27";s:3:" gi";s:2:"28";s:3:" le";s:2:"29";s:3:" vi";s:2:"30";s:3:"cho";s:2:"31";s:3:"ho ";s:2:"32";s:4:"khá";s:2:"33";s:4:" và";s:2:"34";s:4:"hác";s:2:"35";s:3:" ph";s:2:"36";s:3:"am ";s:2:"37";s:4:"hàn";s:2:"38";s:4:"ách";s:2:"39";s:4:"ôi ";s:2:"40";s:3:"i n";s:2:"41";s:6:"ược";s:2:"42";s:5:"ợc ";s:2:"43";s:4:" tô";s:2:"44";s:4:"chú";s:2:"45";s:5:"iệt";s:2:"46";s:4:"tôi";s:2:"47";s:4:"ên ";s:2:"48";s:4:"úng";s:2:"49";s:5:"ệt ";s:2:"50";s:4:" có";s:2:"51";s:3:"c t";s:2:"52";s:4:"có ";s:2:"53";s:4:"hún";s:2:"54";s:5:"việ";s:2:"55";s:7:"đượ";s:2:"56";s:3:" na";s:2:"57";s:3:"g c";s:2:"58";s:3:"i c";s:2:"59";s:3:"n c";s:2:"60";s:3:"n n";s:2:"61";s:3:"t n";s:2:"62";s:4:"và ";s:2:"63";s:3:"n l";s:2:"64";s:4:"n Ä‘";s:2:"65";s:4:"àng";s:2:"66";s:4:"ác ";s:2:"67";s:5:"ất ";s:2:"68";s:3:"h l";s:2:"69";s:3:"nam";s:2:"70";s:4:"ân ";s:2:"71";s:4:"ăm ";s:2:"72";s:4:" hà";s:2:"73";s:4:" là";s:2:"74";s:4:" nă";s:2:"75";s:3:" qu";s:2:"76";s:5:" tạ";s:2:"77";s:3:"g m";s:2:"78";s:4:"năm";s:2:"79";s:5:"tại";s:2:"80";s:5:"á»›i ";s:2:"81";s:5:" lẹ";s:2:"82";s:3:"ay ";s:2:"83";s:3:"e g";s:2:"84";s:3:"h h";s:2:"85";s:3:"i v";s:2:"86";s:4:"i Ä‘";s:2:"87";s:3:"le ";s:2:"88";s:5:"lẹ ";s:2:"89";s:5:"á»u ";s:2:"90";s:5:"á»i ";s:2:"91";s:4:"hân";s:2:"92";s:3:"nhi";s:2:"93";s:3:"t t";s:2:"94";s:5:" cá»§";s:2:"95";s:5:" má»™";s:2:"96";s:5:" vá»";s:2:"97";s:4:" Ä‘i";s:2:"98";s:3:"an ";s:2:"99";s:5:"cá»§a";s:3:"100";s:4:"là ";s:3:"101";s:5:"má»™t";s:3:"102";s:5:"vá» ";s:3:"103";s:4:"ành";s:3:"104";s:5:"ết ";s:3:"105";s:5:"á»™t ";s:3:"106";s:5:"á»§a ";s:3:"107";s:3:" bi";s:3:"108";s:4:" cá";s:3:"109";s:3:"a c";s:3:"110";s:3:"anh";s:3:"111";s:4:"các";s:3:"112";s:3:"h c";s:3:"113";s:5:"iá»u";s:3:"114";s:3:"m t";s:3:"115";s:5:"ện ";s:3:"116";s:3:" ho";s:3:"117";s:3:"'s ";s:3:"118";s:3:"ave";s:3:"119";s:3:"e's";s:3:"120";s:3:"el ";s:3:"121";s:3:"g n";s:3:"122";s:3:"le'";s:3:"123";s:3:"n v";s:3:"124";s:3:"o c";s:3:"125";s:3:"rav";s:3:"126";s:3:"s t";s:3:"127";s:3:"thi";s:3:"128";s:3:"tra";s:3:"129";s:3:"vel";s:3:"130";s:5:"ận ";s:3:"131";s:5:"ến ";s:3:"132";s:3:" ba";s:3:"133";s:3:" cu";s:3:"134";s:3:" sa";s:3:"135";s:5:" đó";s:3:"136";s:6:" đế";s:3:"137";s:3:"c c";s:3:"138";s:3:"chu";s:3:"139";s:5:"hiá»";s:3:"140";s:3:"huy";s:3:"141";s:3:"khi";s:3:"142";s:4:"nhâ";s:3:"143";s:4:"như";s:3:"144";s:3:"ong";s:3:"145";s:3:"ron";s:3:"146";s:3:"thu";s:3:"147";s:4:"thư";s:3:"148";s:3:"tro";s:3:"149";s:3:"y c";s:3:"150";s:4:"ày ";s:3:"151";s:6:"đến";s:3:"152";s:6:"ưá»i";s:3:"153";s:6:"ưá»n";s:3:"154";s:5:"á» v";s:3:"155";s:5:"á»ng";s:3:"156";s:5:" vá»›";s:3:"157";s:5:"cuá»™";s:3:"158";s:4:"g Ä‘";s:3:"159";s:5:"iết";s:3:"160";s:5:"iện";s:3:"161";s:4:"ngà";s:3:"162";s:3:"o t";s:3:"163";s:3:"u c";s:3:"164";s:5:"uá»™c";s:3:"165";s:5:"vá»›i";s:3:"166";s:4:"à c";s:3:"167";s:4:"ài ";s:3:"168";s:4:"Æ¡ng";s:3:"169";s:5:"ươn";s:3:"170";s:5:"ải ";s:3:"171";s:5:"á»™c ";s:3:"172";s:5:"ức ";s:3:"173";s:3:" an";s:3:"174";s:5:" lậ";s:3:"175";s:3:" ra";s:3:"176";s:5:" sẽ";s:3:"177";s:5:" số";s:3:"178";s:5:" tổ";s:3:"179";s:3:"a k";s:3:"180";s:5:"biế";s:3:"181";s:3:"c n";s:3:"182";s:4:"c Ä‘";s:3:"183";s:5:"chứ";s:3:"184";s:3:"g v";s:3:"185";s:3:"gia";s:3:"186";s:4:"gày";s:3:"187";s:4:"hán";s:3:"188";s:4:"hôn";s:3:"189";s:4:"hư ";s:3:"190";s:5:"hức";s:3:"191";s:3:"i g";s:3:"192";s:3:"i h";s:3:"193";s:3:"i k";s:3:"194";s:3:"i p";s:3:"195";s:4:"iên";s:3:"196";s:4:"khô";s:3:"197";s:5:"lập";s:3:"198";s:3:"n k";s:3:"199";s:3:"ra ";s:3:"200";s:4:"rên";s:3:"201";s:5:"sẽ ";s:3:"202";s:3:"t c";s:3:"203";s:4:"thà";s:3:"204";s:4:"trê";s:3:"205";s:5:"tổ ";s:3:"206";s:3:"u n";s:3:"207";s:3:"y t";s:3:"208";s:4:"ình";s:3:"209";s:5:"ấy ";s:3:"210";s:5:"ập ";s:3:"211";s:5:"ổ c";s:3:"212";s:4:" má";s:3:"213";s:6:" để";s:3:"214";s:3:"ai ";s:3:"215";s:3:"c s";s:3:"216";s:6:"gưá»";s:3:"217";s:3:"h v";s:3:"218";s:3:"hoa";s:3:"219";s:5:"hoạ";s:3:"220";s:3:"inh";s:3:"221";s:3:"m n";s:3:"222";s:4:"máy";s:3:"223";s:3:"n g";s:3:"224";s:4:"ngư";s:3:"225";s:5:"nhậ";s:3:"226";s:3:"o n";s:3:"227";s:3:"oa ";s:3:"228";s:4:"oàn";s:3:"229";s:3:"p c";s:3:"230";s:5:"số ";s:3:"231";s:4:"t Ä‘";s:3:"232";s:3:"y v";s:3:"233";s:4:"ào ";s:3:"234";s:4:"áy ";s:3:"235";s:4:"ăn ";s:3:"236";s:5:"đó ";s:3:"237";s:6:"để ";s:3:"238";s:6:"ước";s:3:"239";s:5:"ần ";s:3:"240";s:5:"ển ";s:3:"241";s:5:"á»›c ";s:3:"242";s:4:" bá";s:3:"243";s:4:" cÆ¡";s:3:"244";s:5:" cả";s:3:"245";s:5:" cầ";s:3:"246";s:5:" há»";s:3:"247";s:5:" kỳ";s:3:"248";s:3:" li";s:3:"249";s:5:" mạ";s:3:"250";s:5:" sở";s:3:"251";s:5:" tặ";s:3:"252";s:4:" vé";s:3:"253";s:5:" vụ";s:3:"254";s:6:" đạ";s:3:"255";s:4:"a Ä‘";s:3:"256";s:3:"bay";s:3:"257";s:4:"cÆ¡ ";s:3:"258";s:3:"g s";s:3:"259";s:3:"han";s:3:"260";s:5:"hươ";s:3:"261";s:3:"i s";s:3:"262";s:5:"kỳ ";s:3:"263";s:3:"m c";s:3:"264";s:3:"n m";s:3:"265";s:3:"n p";s:3:"266";s:3:"o b";s:3:"267";s:5:"oại";s:3:"268";s:3:"qua";s:3:"269";s:5:"sở ";s:3:"270";s:3:"tha";s:3:"271";s:4:"thá";s:3:"272";s:5:"tặn";s:3:"273";s:4:"vào";s:3:"274";s:4:"vé ";s:3:"275";s:5:"vụ ";s:3:"276";s:3:"y b";s:3:"277";s:4:"àn ";s:3:"278";s:4:"áng";s:3:"279";s:4:"Æ¡ s";s:3:"280";s:5:"ầu ";s:3:"281";s:5:"ật ";s:3:"282";s:5:"ặng";s:3:"283";s:5:"á»c ";s:3:"284";s:5:"ở t";s:3:"285";s:5:"ững";s:3:"286";s:3:" du";s:3:"287";s:3:" lu";s:3:"288";s:3:" ta";s:3:"289";s:3:" to";s:3:"290";s:5:" từ";s:3:"291";s:5:" ở ";s:3:"292";s:3:"a v";s:3:"293";s:3:"ao ";s:3:"294";s:3:"c v";s:3:"295";s:5:"cả ";s:3:"296";s:3:"du ";s:3:"297";s:3:"g l";s:3:"298";s:5:"giả";s:3:"299";}s:5:"welsh";a:300:{s:3:"yn ";s:1:"0";s:3:"dd ";s:1:"1";s:3:" yn";s:1:"2";s:3:" y ";s:1:"3";s:3:"ydd";s:1:"4";s:3:"eth";s:1:"5";s:3:"th ";s:1:"6";s:3:" i ";s:1:"7";s:3:"aet";s:1:"8";s:3:"d y";s:1:"9";s:3:"ch ";s:2:"10";s:3:"od ";s:2:"11";s:3:"ol ";s:2:"12";s:3:"edd";s:2:"13";s:3:" ga";s:2:"14";s:3:" gw";s:2:"15";s:3:"'r ";s:2:"16";s:3:"au ";s:2:"17";s:3:"ddi";s:2:"18";s:3:"ad ";s:2:"19";s:3:" cy";s:2:"20";s:3:" gy";s:2:"21";s:3:" ei";s:2:"22";s:3:" o ";s:2:"23";s:3:"iad";s:2:"24";s:3:"yr ";s:2:"25";s:3:"an ";s:2:"26";s:3:"bod";s:2:"27";s:3:"wed";s:2:"28";s:3:" bo";s:2:"29";s:3:" dd";s:2:"30";s:3:"el ";s:2:"31";s:3:"n y";s:2:"32";s:3:" am";s:2:"33";s:3:"di ";s:2:"34";s:3:"edi";s:2:"35";s:3:"on ";s:2:"36";s:3:" we";s:2:"37";s:3:" ym";s:2:"38";s:3:" ar";s:2:"39";s:3:" rh";s:2:"40";s:3:"odd";s:2:"41";s:3:" ca";s:2:"42";s:3:" ma";s:2:"43";s:3:"ael";s:2:"44";s:3:"oed";s:2:"45";s:3:"dae";s:2:"46";s:3:"n a";s:2:"47";s:3:"dda";s:2:"48";s:3:"er ";s:2:"49";s:3:"h y";s:2:"50";s:3:"all";s:2:"51";s:3:"ei ";s:2:"52";s:3:" ll";s:2:"53";s:3:"am ";s:2:"54";s:3:"eu ";s:2:"55";s:3:"fod";s:2:"56";s:3:"fyd";s:2:"57";s:3:"l y";s:2:"58";s:3:"n g";s:2:"59";s:3:"wyn";s:2:"60";s:3:"d a";s:2:"61";s:3:"i g";s:2:"62";s:3:"mae";s:2:"63";s:3:"neu";s:2:"64";s:3:"os ";s:2:"65";s:3:" ne";s:2:"66";s:3:"d i";s:2:"67";s:3:"dod";s:2:"68";s:3:"dol";s:2:"69";s:3:"n c";s:2:"70";s:3:"r h";s:2:"71";s:3:"wyd";s:2:"72";s:3:"wyr";s:2:"73";s:3:"ai ";s:2:"74";s:3:"ar ";s:2:"75";s:3:"in ";s:2:"76";s:3:"rth";s:2:"77";s:3:" fy";s:2:"78";s:3:" he";s:2:"79";s:3:" me";s:2:"80";s:3:" yr";s:2:"81";s:3:"'n ";s:2:"82";s:3:"dia";s:2:"83";s:3:"est";s:2:"84";s:3:"h c";s:2:"85";s:3:"hai";s:2:"86";s:3:"i d";s:2:"87";s:3:"id ";s:2:"88";s:3:"r y";s:2:"89";s:3:"y b";s:2:"90";s:3:" dy";s:2:"91";s:3:" ha";s:2:"92";s:3:"ada";s:2:"93";s:3:"i b";s:2:"94";s:3:"n i";s:2:"95";s:3:"ote";s:2:"96";s:3:"rot";s:2:"97";s:3:"tes";s:2:"98";s:3:"y g";s:2:"99";s:3:"yd ";s:3:"100";s:3:" ad";s:3:"101";s:3:" mr";s:3:"102";s:3:" un";s:3:"103";s:3:"cyn";s:3:"104";s:3:"dau";s:3:"105";s:3:"ddy";s:3:"106";s:3:"edo";s:3:"107";s:3:"i c";s:3:"108";s:3:"i w";s:3:"109";s:3:"ith";s:3:"110";s:3:"lae";s:3:"111";s:3:"lla";s:3:"112";s:3:"nd ";s:3:"113";s:3:"oda";s:3:"114";s:3:"ryd";s:3:"115";s:3:"tho";s:3:"116";s:3:" a ";s:3:"117";s:3:" dr";s:3:"118";s:3:"aid";s:3:"119";s:3:"ain";s:3:"120";s:3:"ddo";s:3:"121";s:3:"dyd";s:3:"122";s:3:"fyn";s:3:"123";s:3:"gyn";s:3:"124";s:3:"hol";s:3:"125";s:3:"io ";s:3:"126";s:3:"o a";s:3:"127";s:3:"wch";s:3:"128";s:3:"wyb";s:3:"129";s:3:"ybo";s:3:"130";s:3:"ych";s:3:"131";s:3:" br";s:3:"132";s:3:" by";s:3:"133";s:3:" di";s:3:"134";s:3:" fe";s:3:"135";s:3:" na";s:3:"136";s:3:" o'";s:3:"137";s:3:" pe";s:3:"138";s:3:"art";s:3:"139";s:3:"byd";s:3:"140";s:3:"dro";s:3:"141";s:3:"gal";s:3:"142";s:3:"l e";s:3:"143";s:3:"lai";s:3:"144";s:3:"mr ";s:3:"145";s:3:"n n";s:3:"146";s:3:"r a";s:3:"147";s:3:"rhy";s:3:"148";s:3:"wn ";s:3:"149";s:3:"ynn";s:3:"150";s:3:" on";s:3:"151";s:3:" r ";s:3:"152";s:3:"cae";s:3:"153";s:3:"d g";s:3:"154";s:3:"d o";s:3:"155";s:3:"d w";s:3:"156";s:3:"gan";s:3:"157";s:3:"gwy";s:3:"158";s:3:"n d";s:3:"159";s:3:"n f";s:3:"160";s:3:"n o";s:3:"161";s:3:"ned";s:3:"162";s:3:"ni ";s:3:"163";s:3:"o'r";s:3:"164";s:3:"r d";s:3:"165";s:3:"ud ";s:3:"166";s:3:"wei";s:3:"167";s:3:"wrt";s:3:"168";s:3:" an";s:3:"169";s:3:" cw";s:3:"170";s:3:" da";s:3:"171";s:3:" ni";s:3:"172";s:3:" pa";s:3:"173";s:3:" pr";s:3:"174";s:3:" wy";s:3:"175";s:3:"d e";s:3:"176";s:3:"dai";s:3:"177";s:3:"dim";s:3:"178";s:3:"eud";s:3:"179";s:3:"gwa";s:3:"180";s:3:"idd";s:3:"181";s:3:"im ";s:3:"182";s:3:"iri";s:3:"183";s:3:"lwy";s:3:"184";s:3:"n b";s:3:"185";s:3:"nol";s:3:"186";s:3:"r o";s:3:"187";s:3:"rwy";s:3:"188";s:3:" ch";s:3:"189";s:3:" er";s:3:"190";s:3:" fo";s:3:"191";s:3:" ge";s:3:"192";s:3:" hy";s:3:"193";s:3:" i'";s:3:"194";s:3:" ro";s:3:"195";s:3:" sa";s:3:"196";s:3:" tr";s:3:"197";s:3:"bob";s:3:"198";s:3:"cwy";s:3:"199";s:3:"cyf";s:3:"200";s:3:"dio";s:3:"201";s:3:"dyn";s:3:"202";s:3:"eit";s:3:"203";s:3:"hel";s:3:"204";s:3:"hyn";s:3:"205";s:3:"ich";s:3:"206";s:3:"ll ";s:3:"207";s:3:"mdd";s:3:"208";s:3:"n r";s:3:"209";s:3:"ond";s:3:"210";s:3:"pro";s:3:"211";s:3:"r c";s:3:"212";s:3:"r g";s:3:"213";s:3:"red";s:3:"214";s:3:"rha";s:3:"215";s:3:"u a";s:3:"216";s:3:"u c";s:3:"217";s:3:"u y";s:3:"218";s:3:"y c";s:3:"219";s:3:"ymd";s:3:"220";s:3:"ymr";s:3:"221";s:3:"yw ";s:3:"222";s:3:" ac";s:3:"223";s:3:" be";s:3:"224";s:3:" bl";s:3:"225";s:3:" co";s:3:"226";s:3:" os";s:3:"227";s:3:"adw";s:3:"228";s:3:"ae ";s:3:"229";s:3:"af ";s:3:"230";s:3:"d p";s:3:"231";s:3:"efn";s:3:"232";s:3:"eic";s:3:"233";s:3:"en ";s:3:"234";s:3:"eol";s:3:"235";s:3:"es ";s:3:"236";s:3:"fer";s:3:"237";s:3:"gel";s:3:"238";s:3:"h g";s:3:"239";s:3:"hod";s:3:"240";s:3:"ied";s:3:"241";s:3:"ir ";s:3:"242";s:3:"laf";s:3:"243";s:3:"n h";s:3:"244";s:3:"na ";s:3:"245";s:3:"nyd";s:3:"246";s:3:"odo";s:3:"247";s:3:"ofy";s:3:"248";s:3:"rdd";s:3:"249";s:3:"rie";s:3:"250";s:3:"ros";s:3:"251";s:3:"stw";s:3:"252";s:3:"twy";s:3:"253";s:3:"yda";s:3:"254";s:3:"yng";s:3:"255";s:3:" at";s:3:"256";s:3:" de";s:3:"257";s:3:" go";s:3:"258";s:3:" id";s:3:"259";s:3:" oe";s:3:"260";s:4:" â ";s:3:"261";s:3:"'ch";s:3:"262";s:3:"ac ";s:3:"263";s:3:"ach";s:3:"264";s:3:"ae'";s:3:"265";s:3:"al ";s:3:"266";s:3:"bl ";s:3:"267";s:3:"d c";s:3:"268";s:3:"d l";s:3:"269";s:3:"dan";s:3:"270";s:3:"dde";s:3:"271";s:3:"ddw";s:3:"272";s:3:"dir";s:3:"273";s:3:"dla";s:3:"274";s:3:"ed ";s:3:"275";s:3:"ela";s:3:"276";s:3:"ell";s:3:"277";s:3:"ene";s:3:"278";s:3:"ewn";s:3:"279";s:3:"gyd";s:3:"280";s:3:"hau";s:3:"281";s:3:"hyw";s:3:"282";s:3:"i a";s:3:"283";s:3:"i f";s:3:"284";s:3:"iol";s:3:"285";s:3:"ion";s:3:"286";s:3:"l a";s:3:"287";s:3:"l i";s:3:"288";s:3:"lia";s:3:"289";s:3:"med";s:3:"290";s:3:"mon";s:3:"291";s:3:"n s";s:3:"292";s:3:"no ";s:3:"293";s:3:"obl";s:3:"294";s:3:"ola";s:3:"295";s:3:"ref";s:3:"296";s:3:"rn ";s:3:"297";s:3:"thi";s:3:"298";s:3:"un ";s:3:"299";}}s:18:"trigram-unicodemap";a:13:{s:11:"Basic Latin";a:38:{s:8:"albanian";i:661;s:5:"azeri";i:653;s:7:"bengali";i:1;s:7:"cebuano";i:750;s:8:"croatian";i:733;s:5:"czech";i:652;s:6:"danish";i:734;s:5:"dutch";i:741;s:7:"english";i:723;s:8:"estonian";i:739;s:7:"finnish";i:743;s:6:"french";i:733;s:6:"german";i:750;s:5:"hausa";i:752;s:8:"hawaiian";i:751;s:9:"hungarian";i:693;s:9:"icelandic";i:662;s:10:"indonesian";i:776;s:7:"italian";i:741;s:5:"latin";i:764;s:7:"latvian";i:693;s:10:"lithuanian";i:738;s:9:"mongolian";i:19;s:9:"norwegian";i:742;s:6:"pidgin";i:702;s:6:"polish";i:701;s:10:"portuguese";i:726;s:8:"romanian";i:714;s:6:"slovak";i:677;s:7:"slovene";i:740;s:6:"somali";i:755;s:7:"spanish";i:749;s:7:"swahili";i:770;s:7:"swedish";i:717;s:7:"tagalog";i:767;s:7:"turkish";i:673;s:10:"vietnamese";i:503;s:5:"welsh";i:728;}s:18:"Latin-1 Supplement";a:21:{s:8:"albanian";i:68;s:5:"azeri";i:10;s:5:"czech";i:51;s:6:"danish";i:13;s:8:"estonian";i:19;s:7:"finnish";i:39;s:6:"french";i:21;s:6:"german";i:8;s:9:"hungarian";i:72;s:9:"icelandic";i:80;s:7:"italian";i:3;s:9:"norwegian";i:5;s:6:"polish";i:6;s:10:"portuguese";i:18;s:8:"romanian";i:9;s:6:"slovak";i:37;s:7:"spanish";i:6;s:7:"swedish";i:26;s:7:"turkish";i:25;s:10:"vietnamese";i:56;s:5:"welsh";i:1;}s:14:"[Malformatted]";a:42:{s:8:"albanian";i:68;s:6:"arabic";i:724;s:5:"azeri";i:109;s:7:"bengali";i:1472;s:9:"bulgarian";i:750;s:8:"croatian";i:10;s:5:"czech";i:78;s:6:"danish";i:13;s:8:"estonian";i:19;s:5:"farsi";i:706;s:7:"finnish";i:39;s:6:"french";i:21;s:6:"german";i:8;s:5:"hausa";i:8;s:5:"hindi";i:1386;s:9:"hungarian";i:74;s:9:"icelandic";i:80;s:7:"italian";i:3;s:6:"kazakh";i:767;s:6:"kyrgyz";i:767;s:7:"latvian";i:56;s:10:"lithuanian";i:30;s:10:"macedonian";i:755;s:9:"mongolian";i:743;s:6:"nepali";i:1514;s:9:"norwegian";i:5;s:6:"pashto";i:677;s:6:"polish";i:45;s:10:"portuguese";i:18;s:8:"romanian";i:31;s:7:"russian";i:759;s:7:"serbian";i:757;s:6:"slovak";i:45;s:7:"slovene";i:10;s:7:"spanish";i:6;s:7:"swedish";i:26;s:7:"turkish";i:87;s:9:"ukrainian";i:748;s:4:"urdu";i:682;s:5:"uzbek";i:773;s:10:"vietnamese";i:289;s:5:"welsh";i:1;}s:6:"Arabic";a:4:{s:6:"arabic";i:724;s:5:"farsi";i:706;s:6:"pashto";i:677;s:4:"urdu";i:682;}s:16:"Latin Extended-B";a:3:{s:5:"azeri";i:73;s:5:"hausa";i:8;s:10:"vietnamese";i:19;}s:16:"Latin Extended-A";a:12:{s:5:"azeri";i:25;s:8:"croatian";i:10;s:5:"czech";i:27;s:9:"hungarian";i:2;s:7:"latvian";i:56;s:10:"lithuanian";i:30;s:6:"polish";i:39;s:8:"romanian";i:22;s:6:"slovak";i:8;s:7:"slovene";i:10;s:7:"turkish";i:62;s:10:"vietnamese";i:20;}s:27:"Combining Diacritical Marks";a:1:{s:5:"azeri";i:1;}s:7:"Bengali";a:1:{s:7:"bengali";i:714;}s:8:"Gujarati";a:1:{s:7:"bengali";i:16;}s:8:"Gurmukhi";a:1:{s:7:"bengali";i:6;}s:8:"Cyrillic";a:9:{s:9:"bulgarian";i:750;s:6:"kazakh";i:767;s:6:"kyrgyz";i:767;s:10:"macedonian";i:755;s:9:"mongolian";i:743;s:7:"russian";i:759;s:7:"serbian";i:757;s:9:"ukrainian";i:748;s:5:"uzbek";i:773;}s:10:"Devanagari";a:2:{s:5:"hindi";i:693;s:6:"nepali";i:757;}s:25:"Latin Extended Additional";a:1:{s:10:"vietnamese";i:97;}}} \ No newline at end of file diff --git a/plugins/af_lang_detect/languagedetect/data/unicode_blocks.dat b/plugins/af_lang_detect/languagedetect/data/unicode_blocks.dat new file mode 100644 index 0000000000..3b24cd2c16 --- /dev/null +++ b/plugins/af_lang_detect/languagedetect/data/unicode_blocks.dat @@ -0,0 +1 @@ +a:145:{i:0;a:3:{i:0;s:6:"0x0000";i:1;s:6:"0x007F";i:2;s:11:"Basic Latin";}i:1;a:3:{i:0;s:6:"0x0080";i:1;s:6:"0x00FF";i:2;s:18:"Latin-1 Supplement";}i:2;a:3:{i:0;s:6:"0x0100";i:1;s:6:"0x017F";i:2;s:16:"Latin Extended-A";}i:3;a:3:{i:0;s:6:"0x0180";i:1;s:6:"0x024F";i:2;s:16:"Latin Extended-B";}i:4;a:3:{i:0;s:6:"0x0250";i:1;s:6:"0x02AF";i:2;s:14:"IPA Extensions";}i:5;a:3:{i:0;s:6:"0x02B0";i:1;s:6:"0x02FF";i:2;s:24:"Spacing Modifier Letters";}i:6;a:3:{i:0;s:6:"0x0300";i:1;s:6:"0x036F";i:2;s:27:"Combining Diacritical Marks";}i:7;a:3:{i:0;s:6:"0x0370";i:1;s:6:"0x03FF";i:2;s:16:"Greek and Coptic";}i:8;a:3:{i:0;s:6:"0x0400";i:1;s:6:"0x04FF";i:2;s:8:"Cyrillic";}i:9;a:3:{i:0;s:6:"0x0500";i:1;s:6:"0x052F";i:2;s:19:"Cyrillic Supplement";}i:10;a:3:{i:0;s:6:"0x0530";i:1;s:6:"0x058F";i:2;s:8:"Armenian";}i:11;a:3:{i:0;s:6:"0x0590";i:1;s:6:"0x05FF";i:2;s:6:"Hebrew";}i:12;a:3:{i:0;s:6:"0x0600";i:1;s:6:"0x06FF";i:2;s:6:"Arabic";}i:13;a:3:{i:0;s:6:"0x0700";i:1;s:6:"0x074F";i:2;s:6:"Syriac";}i:14;a:3:{i:0;s:6:"0x0750";i:1;s:6:"0x077F";i:2;s:17:"Arabic Supplement";}i:15;a:3:{i:0;s:6:"0x0780";i:1;s:6:"0x07BF";i:2;s:6:"Thaana";}i:16;a:3:{i:0;s:6:"0x0900";i:1;s:6:"0x097F";i:2;s:10:"Devanagari";}i:17;a:3:{i:0;s:6:"0x0980";i:1;s:6:"0x09FF";i:2;s:7:"Bengali";}i:18;a:3:{i:0;s:6:"0x0A00";i:1;s:6:"0x0A7F";i:2;s:8:"Gurmukhi";}i:19;a:3:{i:0;s:6:"0x0A80";i:1;s:6:"0x0AFF";i:2;s:8:"Gujarati";}i:20;a:3:{i:0;s:6:"0x0B00";i:1;s:6:"0x0B7F";i:2;s:5:"Oriya";}i:21;a:3:{i:0;s:6:"0x0B80";i:1;s:6:"0x0BFF";i:2;s:5:"Tamil";}i:22;a:3:{i:0;s:6:"0x0C00";i:1;s:6:"0x0C7F";i:2;s:6:"Telugu";}i:23;a:3:{i:0;s:6:"0x0C80";i:1;s:6:"0x0CFF";i:2;s:7:"Kannada";}i:24;a:3:{i:0;s:6:"0x0D00";i:1;s:6:"0x0D7F";i:2;s:9:"Malayalam";}i:25;a:3:{i:0;s:6:"0x0D80";i:1;s:6:"0x0DFF";i:2;s:7:"Sinhala";}i:26;a:3:{i:0;s:6:"0x0E00";i:1;s:6:"0x0E7F";i:2;s:4:"Thai";}i:27;a:3:{i:0;s:6:"0x0E80";i:1;s:6:"0x0EFF";i:2;s:3:"Lao";}i:28;a:3:{i:0;s:6:"0x0F00";i:1;s:6:"0x0FFF";i:2;s:7:"Tibetan";}i:29;a:3:{i:0;s:6:"0x1000";i:1;s:6:"0x109F";i:2;s:7:"Myanmar";}i:30;a:3:{i:0;s:6:"0x10A0";i:1;s:6:"0x10FF";i:2;s:8:"Georgian";}i:31;a:3:{i:0;s:6:"0x1100";i:1;s:6:"0x11FF";i:2;s:11:"Hangul Jamo";}i:32;a:3:{i:0;s:6:"0x1200";i:1;s:6:"0x137F";i:2;s:8:"Ethiopic";}i:33;a:3:{i:0;s:6:"0x1380";i:1;s:6:"0x139F";i:2;s:19:"Ethiopic Supplement";}i:34;a:3:{i:0;s:6:"0x13A0";i:1;s:6:"0x13FF";i:2;s:8:"Cherokee";}i:35;a:3:{i:0;s:6:"0x1400";i:1;s:6:"0x167F";i:2;s:37:"Unified Canadian Aboriginal Syllabics";}i:36;a:3:{i:0;s:6:"0x1680";i:1;s:6:"0x169F";i:2;s:5:"Ogham";}i:37;a:3:{i:0;s:6:"0x16A0";i:1;s:6:"0x16FF";i:2;s:5:"Runic";}i:38;a:3:{i:0;s:6:"0x1700";i:1;s:6:"0x171F";i:2;s:7:"Tagalog";}i:39;a:3:{i:0;s:6:"0x1720";i:1;s:6:"0x173F";i:2;s:7:"Hanunoo";}i:40;a:3:{i:0;s:6:"0x1740";i:1;s:6:"0x175F";i:2;s:5:"Buhid";}i:41;a:3:{i:0;s:6:"0x1760";i:1;s:6:"0x177F";i:2;s:8:"Tagbanwa";}i:42;a:3:{i:0;s:6:"0x1780";i:1;s:6:"0x17FF";i:2;s:5:"Khmer";}i:43;a:3:{i:0;s:6:"0x1800";i:1;s:6:"0x18AF";i:2;s:9:"Mongolian";}i:44;a:3:{i:0;s:6:"0x1900";i:1;s:6:"0x194F";i:2;s:5:"Limbu";}i:45;a:3:{i:0;s:6:"0x1950";i:1;s:6:"0x197F";i:2;s:6:"Tai Le";}i:46;a:3:{i:0;s:6:"0x1980";i:1;s:6:"0x19DF";i:2;s:11:"New Tai Lue";}i:47;a:3:{i:0;s:6:"0x19E0";i:1;s:6:"0x19FF";i:2;s:13:"Khmer Symbols";}i:48;a:3:{i:0;s:6:"0x1A00";i:1;s:6:"0x1A1F";i:2;s:8:"Buginese";}i:49;a:3:{i:0;s:6:"0x1D00";i:1;s:6:"0x1D7F";i:2;s:19:"Phonetic Extensions";}i:50;a:3:{i:0;s:6:"0x1D80";i:1;s:6:"0x1DBF";i:2;s:30:"Phonetic Extensions Supplement";}i:51;a:3:{i:0;s:6:"0x1DC0";i:1;s:6:"0x1DFF";i:2;s:38:"Combining Diacritical Marks Supplement";}i:52;a:3:{i:0;s:6:"0x1E00";i:1;s:6:"0x1EFF";i:2;s:25:"Latin Extended Additional";}i:53;a:3:{i:0;s:6:"0x1F00";i:1;s:6:"0x1FFF";i:2;s:14:"Greek Extended";}i:54;a:3:{i:0;s:6:"0x2000";i:1;s:6:"0x206F";i:2;s:19:"General Punctuation";}i:55;a:3:{i:0;s:6:"0x2070";i:1;s:6:"0x209F";i:2;s:27:"Superscripts and Subscripts";}i:56;a:3:{i:0;s:6:"0x20A0";i:1;s:6:"0x20CF";i:2;s:16:"Currency Symbols";}i:57;a:3:{i:0;s:6:"0x20D0";i:1;s:6:"0x20FF";i:2;s:39:"Combining Diacritical Marks for Symbols";}i:58;a:3:{i:0;s:6:"0x2100";i:1;s:6:"0x214F";i:2;s:18:"Letterlike Symbols";}i:59;a:3:{i:0;s:6:"0x2150";i:1;s:6:"0x218F";i:2;s:12:"Number Forms";}i:60;a:3:{i:0;s:6:"0x2190";i:1;s:6:"0x21FF";i:2;s:6:"Arrows";}i:61;a:3:{i:0;s:6:"0x2200";i:1;s:6:"0x22FF";i:2;s:22:"Mathematical Operators";}i:62;a:3:{i:0;s:6:"0x2300";i:1;s:6:"0x23FF";i:2;s:23:"Miscellaneous Technical";}i:63;a:3:{i:0;s:6:"0x2400";i:1;s:6:"0x243F";i:2;s:16:"Control Pictures";}i:64;a:3:{i:0;s:6:"0x2440";i:1;s:6:"0x245F";i:2;s:29:"Optical Character Recognition";}i:65;a:3:{i:0;s:6:"0x2460";i:1;s:6:"0x24FF";i:2;s:22:"Enclosed Alphanumerics";}i:66;a:3:{i:0;s:6:"0x2500";i:1;s:6:"0x257F";i:2;s:11:"Box Drawing";}i:67;a:3:{i:0;s:6:"0x2580";i:1;s:6:"0x259F";i:2;s:14:"Block Elements";}i:68;a:3:{i:0;s:6:"0x25A0";i:1;s:6:"0x25FF";i:2;s:16:"Geometric Shapes";}i:69;a:3:{i:0;s:6:"0x2600";i:1;s:6:"0x26FF";i:2;s:21:"Miscellaneous Symbols";}i:70;a:3:{i:0;s:6:"0x2700";i:1;s:6:"0x27BF";i:2;s:8:"Dingbats";}i:71;a:3:{i:0;s:6:"0x27C0";i:1;s:6:"0x27EF";i:2;s:36:"Miscellaneous Mathematical Symbols-A";}i:72;a:3:{i:0;s:6:"0x27F0";i:1;s:6:"0x27FF";i:2;s:21:"Supplemental Arrows-A";}i:73;a:3:{i:0;s:6:"0x2800";i:1;s:6:"0x28FF";i:2;s:16:"Braille Patterns";}i:74;a:3:{i:0;s:6:"0x2900";i:1;s:6:"0x297F";i:2;s:21:"Supplemental Arrows-B";}i:75;a:3:{i:0;s:6:"0x2980";i:1;s:6:"0x29FF";i:2;s:36:"Miscellaneous Mathematical Symbols-B";}i:76;a:3:{i:0;s:6:"0x2A00";i:1;s:6:"0x2AFF";i:2;s:35:"Supplemental Mathematical Operators";}i:77;a:3:{i:0;s:6:"0x2B00";i:1;s:6:"0x2BFF";i:2;s:32:"Miscellaneous Symbols and Arrows";}i:78;a:3:{i:0;s:6:"0x2C00";i:1;s:6:"0x2C5F";i:2;s:10:"Glagolitic";}i:79;a:3:{i:0;s:6:"0x2C80";i:1;s:6:"0x2CFF";i:2;s:6:"Coptic";}i:80;a:3:{i:0;s:6:"0x2D00";i:1;s:6:"0x2D2F";i:2;s:19:"Georgian Supplement";}i:81;a:3:{i:0;s:6:"0x2D30";i:1;s:6:"0x2D7F";i:2;s:8:"Tifinagh";}i:82;a:3:{i:0;s:6:"0x2D80";i:1;s:6:"0x2DDF";i:2;s:17:"Ethiopic Extended";}i:83;a:3:{i:0;s:6:"0x2E00";i:1;s:6:"0x2E7F";i:2;s:24:"Supplemental Punctuation";}i:84;a:3:{i:0;s:6:"0x2E80";i:1;s:6:"0x2EFF";i:2;s:23:"CJK Radicals Supplement";}i:85;a:3:{i:0;s:6:"0x2F00";i:1;s:6:"0x2FDF";i:2;s:15:"Kangxi Radicals";}i:86;a:3:{i:0;s:6:"0x2FF0";i:1;s:6:"0x2FFF";i:2;s:34:"Ideographic Description Characters";}i:87;a:3:{i:0;s:6:"0x3000";i:1;s:6:"0x303F";i:2;s:27:"CJK Symbols and Punctuation";}i:88;a:3:{i:0;s:6:"0x3040";i:1;s:6:"0x309F";i:2;s:8:"Hiragana";}i:89;a:3:{i:0;s:6:"0x30A0";i:1;s:6:"0x30FF";i:2;s:8:"Katakana";}i:90;a:3:{i:0;s:6:"0x3100";i:1;s:6:"0x312F";i:2;s:8:"Bopomofo";}i:91;a:3:{i:0;s:6:"0x3130";i:1;s:6:"0x318F";i:2;s:25:"Hangul Compatibility Jamo";}i:92;a:3:{i:0;s:6:"0x3190";i:1;s:6:"0x319F";i:2;s:6:"Kanbun";}i:93;a:3:{i:0;s:6:"0x31A0";i:1;s:6:"0x31BF";i:2;s:17:"Bopomofo Extended";}i:94;a:3:{i:0;s:6:"0x31C0";i:1;s:6:"0x31EF";i:2;s:11:"CJK Strokes";}i:95;a:3:{i:0;s:6:"0x31F0";i:1;s:6:"0x31FF";i:2;s:28:"Katakana Phonetic Extensions";}i:96;a:3:{i:0;s:6:"0x3200";i:1;s:6:"0x32FF";i:2;s:31:"Enclosed CJK Letters and Months";}i:97;a:3:{i:0;s:6:"0x3300";i:1;s:6:"0x33FF";i:2;s:17:"CJK Compatibility";}i:98;a:3:{i:0;s:6:"0x3400";i:1;s:6:"0x4DBF";i:2;s:34:"CJK Unified Ideographs Extension A";}i:99;a:3:{i:0;s:6:"0x4DC0";i:1;s:6:"0x4DFF";i:2;s:23:"Yijing Hexagram Symbols";}i:100;a:3:{i:0;s:6:"0x4E00";i:1;s:6:"0x9FFF";i:2;s:22:"CJK Unified Ideographs";}i:101;a:3:{i:0;s:6:"0xA000";i:1;s:6:"0xA48F";i:2;s:12:"Yi Syllables";}i:102;a:3:{i:0;s:6:"0xA490";i:1;s:6:"0xA4CF";i:2;s:11:"Yi Radicals";}i:103;a:3:{i:0;s:6:"0xA700";i:1;s:6:"0xA71F";i:2;s:21:"Modifier Tone Letters";}i:104;a:3:{i:0;s:6:"0xA800";i:1;s:6:"0xA82F";i:2;s:12:"Syloti Nagri";}i:105;a:3:{i:0;s:6:"0xAC00";i:1;s:6:"0xD7AF";i:2;s:16:"Hangul Syllables";}i:106;a:3:{i:0;s:6:"0xD800";i:1;s:6:"0xDB7F";i:2;s:15:"High Surrogates";}i:107;a:3:{i:0;s:6:"0xDB80";i:1;s:6:"0xDBFF";i:2;s:27:"High Private Use Surrogates";}i:108;a:3:{i:0;s:6:"0xDC00";i:1;s:6:"0xDFFF";i:2;s:14:"Low Surrogates";}i:109;a:3:{i:0;s:6:"0xE000";i:1;s:6:"0xF8FF";i:2;s:16:"Private Use Area";}i:110;a:3:{i:0;s:6:"0xF900";i:1;s:6:"0xFAFF";i:2;s:28:"CJK Compatibility Ideographs";}i:111;a:3:{i:0;s:6:"0xFB00";i:1;s:6:"0xFB4F";i:2;s:29:"Alphabetic Presentation Forms";}i:112;a:3:{i:0;s:6:"0xFB50";i:1;s:6:"0xFDFF";i:2;s:27:"Arabic Presentation Forms-A";}i:113;a:3:{i:0;s:6:"0xFE00";i:1;s:6:"0xFE0F";i:2;s:19:"Variation Selectors";}i:114;a:3:{i:0;s:6:"0xFE10";i:1;s:6:"0xFE1F";i:2;s:14:"Vertical Forms";}i:115;a:3:{i:0;s:6:"0xFE20";i:1;s:6:"0xFE2F";i:2;s:20:"Combining Half Marks";}i:116;a:3:{i:0;s:6:"0xFE30";i:1;s:6:"0xFE4F";i:2;s:23:"CJK Compatibility Forms";}i:117;a:3:{i:0;s:6:"0xFE50";i:1;s:6:"0xFE6F";i:2;s:19:"Small Form Variants";}i:118;a:3:{i:0;s:6:"0xFE70";i:1;s:6:"0xFEFF";i:2;s:27:"Arabic Presentation Forms-B";}i:119;a:3:{i:0;s:6:"0xFF00";i:1;s:6:"0xFFEF";i:2;s:29:"Halfwidth and Fullwidth Forms";}i:120;a:3:{i:0;s:6:"0xFFF0";i:1;s:6:"0xFFFF";i:2;s:8:"Specials";}i:121;a:3:{i:0;s:7:"0x10000";i:1;s:7:"0x1007F";i:2;s:18:"Linear B Syllabary";}i:122;a:3:{i:0;s:7:"0x10080";i:1;s:7:"0x100FF";i:2;s:18:"Linear B Ideograms";}i:123;a:3:{i:0;s:7:"0x10100";i:1;s:7:"0x1013F";i:2;s:14:"Aegean Numbers";}i:124;a:3:{i:0;s:7:"0x10140";i:1;s:7:"0x1018F";i:2;s:21:"Ancient Greek Numbers";}i:125;a:3:{i:0;s:7:"0x10300";i:1;s:7:"0x1032F";i:2;s:10:"Old Italic";}i:126;a:3:{i:0;s:7:"0x10330";i:1;s:7:"0x1034F";i:2;s:6:"Gothic";}i:127;a:3:{i:0;s:7:"0x10380";i:1;s:7:"0x1039F";i:2;s:8:"Ugaritic";}i:128;a:3:{i:0;s:7:"0x103A0";i:1;s:7:"0x103DF";i:2;s:11:"Old Persian";}i:129;a:3:{i:0;s:7:"0x10400";i:1;s:7:"0x1044F";i:2;s:7:"Deseret";}i:130;a:3:{i:0;s:7:"0x10450";i:1;s:7:"0x1047F";i:2;s:7:"Shavian";}i:131;a:3:{i:0;s:7:"0x10480";i:1;s:7:"0x104AF";i:2;s:7:"Osmanya";}i:132;a:3:{i:0;s:7:"0x10800";i:1;s:7:"0x1083F";i:2;s:17:"Cypriot Syllabary";}i:133;a:3:{i:0;s:7:"0x10A00";i:1;s:7:"0x10A5F";i:2;s:10:"Kharoshthi";}i:134;a:3:{i:0;s:7:"0x1D000";i:1;s:7:"0x1D0FF";i:2;s:25:"Byzantine Musical Symbols";}i:135;a:3:{i:0;s:7:"0x1D100";i:1;s:7:"0x1D1FF";i:2;s:15:"Musical Symbols";}i:136;a:3:{i:0;s:7:"0x1D200";i:1;s:7:"0x1D24F";i:2;s:30:"Ancient Greek Musical Notation";}i:137;a:3:{i:0;s:7:"0x1D300";i:1;s:7:"0x1D35F";i:2;s:21:"Tai Xuan Jing Symbols";}i:138;a:3:{i:0;s:7:"0x1D400";i:1;s:7:"0x1D7FF";i:2;s:33:"Mathematical Alphanumeric Symbols";}i:139;a:3:{i:0;s:7:"0x20000";i:1;s:7:"0x2A6DF";i:2;s:34:"CJK Unified Ideographs Extension B";}i:140;a:3:{i:0;s:7:"0x2F800";i:1;s:7:"0x2FA1F";i:2;s:39:"CJK Compatibility Ideographs Supplement";}i:141;a:3:{i:0;s:7:"0xE0000";i:1;s:7:"0xE007F";i:2;s:4:"Tags";}i:142;a:3:{i:0;s:7:"0xE0100";i:1;s:7:"0xE01EF";i:2;s:30:"Variation Selectors Supplement";}i:143;a:3:{i:0;s:7:"0xF0000";i:1;s:7:"0xFFFFF";i:2;s:32:"Supplementary Private Use Area-A";}i:144;a:3:{i:0;s:8:"0x100000";i:1;s:8:"0x10FFFF";i:2;s:32:"Supplementary Private Use Area-B";}} \ No newline at end of file diff --git a/plugins/af_psql_trgm/button.png b/plugins/af_psql_trgm/button.png new file mode 100644 index 0000000000..9b3422c61e Binary files /dev/null and b/plugins/af_psql_trgm/button.png differ diff --git a/plugins/af_psql_trgm/init.js b/plugins/af_psql_trgm/init.js new file mode 100644 index 0000000000..621ccb7463 --- /dev/null +++ b/plugins/af_psql_trgm/init.js @@ -0,0 +1,25 @@ +function showTrgmRelated(id) { + try { + + var query = "backend.php?op=pluginhandler&plugin=af_psql_trgm&method=showrelated¶m=" + param_escape(id); + + if (dijit.byId("trgmRelatedDlg")) + dijit.byId("trgmRelatedDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "trgmRelatedDlg", + title: __("Related articles"), + style: "width: 600px", + execute: function() { + + }, + href: query, + }); + + dialog.show(); + + } catch (e) { + exception_error("showTrgmRelated", e); + } +} + diff --git a/plugins/af_psql_trgm/init.php b/plugins/af_psql_trgm/init.php new file mode 100644 index 0000000000..ad24559c5b --- /dev/null +++ b/plugins/af_psql_trgm/init.php @@ -0,0 +1,331 @@ + 1) $similarity = 1; + + if ($min_title_length < 0) $min_title_length = 0; + + $similarity = sprintf("%.2f", $similarity); + + $this->host->set($this, "similarity", $similarity); + $this->host->set($this, "min_title_length", $min_title_length); + $this->host->set($this, "enable_globally", $enable_globally); + + echo T_sprintf("Data saved (%s, %d)", $similarity, $enable_globally); + } + + function init($host) { + $this->host = $host; + + $host->add_hook($host::HOOK_ARTICLE_FILTER, $this); + $host->add_hook($host::HOOK_PREFS_TAB, $this); + $host->add_hook($host::HOOK_PREFS_EDIT_FEED, $this); + $host->add_hook($host::HOOK_PREFS_SAVE_FEED, $this); + $host->add_hook($host::HOOK_ARTICLE_BUTTON, $this); + + } + + function get_js() { + return file_get_contents(__DIR__ . "/init.js"); + } + + function showrelated() { + $id = (int) db_escape_string($_REQUEST['param']); + $owner_uid = $_SESSION["uid"]; + + $result = db_query("SELECT title FROM ttrss_entries, ttrss_user_entries + WHERE ref_id = id AND id = $id AND owner_uid = $owner_uid"); + + $title = db_fetch_result($result, 0, "title"); + + print "

      $title

      "; + + $title = db_escape_string($title); + $result = db_query("SELECT ttrss_entries.id AS id, + feed_id, + ttrss_entries.title AS title, + updated, link, + ttrss_feeds.title AS feed_title, + SIMILARITY(ttrss_entries.title, '$title') AS sm + FROM + ttrss_entries, ttrss_user_entries LEFT JOIN ttrss_feeds ON (ttrss_feeds.id = feed_id) + WHERE + ttrss_entries.id = ref_id AND + ttrss_user_entries.owner_uid = $owner_uid AND + ttrss_entries.id != $id AND + date_entered >= NOW() - INTERVAL '2 weeks' + ORDER BY + sm DESC, date_entered DESC + LIMIT 10"); + + print "
        "; + + while ($line = db_fetch_assoc($result)) { + print "
      • "; + print "
        " . + smart_date_time(strtotime($line["updated"])) + . "
        "; + + $sm = sprintf("%.2f", $line['sm']); + print ""; + + $article_link = htmlspecialchars($line["link"]); + print " ". + $line["title"].""; + + print " (". + htmlspecialchars($line["feed_title"]).")"; + + print " ($sm)"; + + print "
      • "; + } + + print "
      "; + + print "
      "; + print ""; + print "
      "; + + + } + + function hook_article_button($line) { + return ""; + } + + function hook_prefs_tab($args) { + if ($args != "prefFeeds") return; + + print "
      "; + + if (DB_TYPE != "pgsql") { + print_error("Database type not supported."); + } + + $result = db_query("select 'similarity'::regproc"); + + if (db_num_rows($result) == 0) { + print_error("pg_trgm extension not found."); + } + + $similarity = $this->host->get($this, "similarity"); + $min_title_length = $this->host->get($this, "min_title_length"); + $enable_globally = $this->host->get($this, "enable_globally"); + + if (!$similarity) $similarity = '0.75'; + if (!$min_title_length) $min_title_length = '32'; + + $enable_globally_checked = $enable_globally ? "checked" : ""; + + print "
      "; + + print ""; + + print ""; + print ""; + print ""; + + print_notice("PostgreSQL trigram extension returns string similarity as a floating point number (0-1). Setting it too low might produce false positives, zero disables checking."); + + print "
      "; + print_notice("Enable the plugin for specific feeds in the feed editor."); + + print "

      " . __("Global settings") . "

      "; + + print ""; + + print ""; + print ""; + print ""; + print ""; + print ""; + print ""; + + print "
      ".__("Minimum similarity:")." +
      ".__("Minimum title length:")." +
      ".__("Enable for all feeds:")." +
      "; + + print "

      "; + + print "

      "; + + $enabled_feeds = $this->host->get($this, "enabled_feeds"); + if (!array($enabled_feeds)) $enabled_feeds = array(); + + $enabled_feeds = $this->filter_unknown_feeds($enabled_feeds); + $this->host->set($this, "enabled_feeds", $enabled_feeds); + + if (count($enabled_feeds) > 0) { + print "

      " . __("Currently enabled for (click to edit):") . "

      "; + + print ""; + } + + print "
      "; + } + + function hook_prefs_edit_feed($feed_id) { + print "
      ".__("Similarity (pg_trgm)")."
      "; + print "
      "; + + $enabled_feeds = $this->host->get($this, "enabled_feeds"); + if (!array($enabled_feeds)) $enabled_feeds = array(); + + $key = array_search($feed_id, $enabled_feeds); + $checked = $key !== FALSE ? "checked" : ""; + + print "
       "; + + print "
      "; + } + + function hook_prefs_save_feed($feed_id) { + $enabled_feeds = $this->host->get($this, "enabled_feeds"); + if (!is_array($enabled_feeds)) $enabled_feeds = array(); + + $enable = checkbox_to_sql_bool($_POST["trgm_similarity_enabled"]) == 'true'; + $key = array_search($feed_id, $enabled_feeds); + + if ($enable) { + if ($key === FALSE) { + array_push($enabled_feeds, $feed_id); + } + } else { + if ($key !== FALSE) { + unset($enabled_feeds[$key]); + } + } + + $this->host->set($this, "enabled_feeds", $enabled_feeds); + } + + function hook_article_filter($article) { + + if (DB_TYPE != "pgsql") return $article; + + $result = db_query("select 'similarity'::regproc"); + if (db_num_rows($result) == 0) return $article; + + $enable_globally = $this->host->get($this, "enable_globally"); + + if (!$enable_globally) { + $enabled_feeds = $this->host->get($this, "enabled_feeds"); + $key = array_search($article["feed"]["id"], $enabled_feeds); + if ($key === FALSE) return $article; + } + + $similarity = (float) $this->host->get($this, "similarity"); + if ($similarity < 0.01) return $article; + + $min_title_length = (int) $this->host->get($this, "min_length"); + if (mb_strlen($article["title"]) < $min_title_length) return $article; + + + $owner_uid = $article["owner_uid"]; + $entry_guid = $article["guid_hashed"]; + $title_escaped = db_escape_string($article["title"]); + + // trgm does not return similarity=1 for completely equal strings + + $result = db_query("SELECT COUNT(id) AS nequal + FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id AND + date_entered >= NOW() - interval '1 day' AND + title = '$title_escaped' AND + guid != '$entry_guid' AND + owner_uid = $owner_uid"); + + $nequal = db_fetch_result($result, 0, "nequal"); + _debug("af_psql_trgm: num equals: $nequal"); + + if ($nequal != 0) { + $article["force_catchup"] = true; + return $article; + } + + $result = db_query("SELECT MAX(SIMILARITY(title, '$title_escaped')) AS ms + FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id AND + date_entered >= NOW() - interval '1 day' AND + guid != '$entry_guid' AND + owner_uid = $owner_uid"); + + $similarity_result = db_fetch_result($result, 0, "ms"); + + _debug("af_psql_trgm: similarity result: $similarity_result"); + + if ($similarity_result >= $similarity) { + $article["force_catchup"] = true; + } + + return $article; + + } + + function api_version() { + return 2; + } + + private function filter_unknown_feeds($enabled_feeds) { + $tmp = array(); + + foreach ($enabled_feeds as $feed) { + + $result = db_query("SELECT id FROM ttrss_feeds WHERE id = '$feed' AND owner_uid = " . $_SESSION["uid"]); + + if (db_num_rows($result) != 0) { + array_push($tmp, $feed); + } + } + + return $tmp; + } + +} +?> diff --git a/plugins/af_readability/init.php b/plugins/af_readability/init.php new file mode 100644 index 0000000000..b4ccdd335d --- /dev/null +++ b/plugins/af_readability/init.php @@ -0,0 +1,187 @@ +host = $host; + + $host->add_hook($host::HOOK_ARTICLE_FILTER, $this); + $host->add_hook($host::HOOK_PREFS_TAB, $this); + $host->add_hook($host::HOOK_PREFS_EDIT_FEED, $this); + $host->add_hook($host::HOOK_PREFS_SAVE_FEED, $this); + } + + function hook_prefs_tab($args) { + if ($args != "prefFeeds") return; + + print "
      "; + + print_notice("Enable the plugin for specific feeds in the feed editor."); + + $enabled_feeds = $this->host->get($this, "enabled_feeds"); + if (!array($enabled_feeds)) $enabled_feeds = array(); + + $enabled_feeds = $this->filter_unknown_feeds($enabled_feeds); + $this->host->set($this, "enabled_feeds", $enabled_feeds); + + if (count($enabled_feeds) > 0) { + print "

      " . __("Currently enabled for (click to edit):") . "

      "; + + print ""; + } + + print "
      "; + } + + function hook_prefs_edit_feed($feed_id) { + print "
      ".__("Readability")."
      "; + print "
      "; + + $enabled_feeds = $this->host->get($this, "enabled_feeds"); + if (!array($enabled_feeds)) $enabled_feeds = array(); + + $key = array_search($feed_id, $enabled_feeds); + $checked = $key !== FALSE ? "checked" : ""; + + print "
       "; + + print "
      "; + } + + function hook_prefs_save_feed($feed_id) { + $enabled_feeds = $this->host->get($this, "enabled_feeds"); + if (!is_array($enabled_feeds)) $enabled_feeds = array(); + + $enable = checkbox_to_sql_bool($_POST["af_readability_enabled"]) == 'true'; + $key = array_search($feed_id, $enabled_feeds); + + if ($enable) { + if ($key === FALSE) { + array_push($enabled_feeds, $feed_id); + } + } else { + if ($key !== FALSE) { + unset($enabled_feeds[$key]); + } + } + + $this->host->set($this, "enabled_feeds", $enabled_feeds); + } + + function hook_article_filter($article) { + + $enabled_feeds = $this->host->get($this, "enabled_feeds"); + $key = array_search($article["feed"]["id"], $enabled_feeds); + if ($key === FALSE) return $article; + + if (!class_exists("Readability")) require_once(dirname(dirname(__DIR__)). "/lib/readability/Readability.php"); + + if (function_exists("curl_init")) { + $ch = curl_init($article["link"]); + curl_setopt($ch, CURLOPT_TIMEOUT, 5); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_HEADER, true); + curl_setopt($ch, CURLOPT_NOBODY, true); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, + !ini_get("safe_mode") && !ini_get("open_basedir")); + curl_setopt($ch, CURLOPT_USERAGENT, SELF_USER_AGENT); + + @$result = curl_exec($ch); + $content_type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE); + + if (strpos($content_type, "text/html") === FALSE) + return $article; + } + + $tmp = fetch_file_contents($article["link"]); + + if ($tmp) { + $tmpdoc = new DOMDocument("1.0", "UTF-8"); + + if (!$tmpdoc->loadHTML($tmp)) + return $article; + + if (strtolower($tmpdoc->encoding) != 'utf-8') { + $tmpxpath = new DOMXPath($tmpdoc); + + foreach ($tmpxpath->query("//meta") as $elem) { + $elem->parentNode->removeChild($elem); + } + + $tmp = $tmpdoc->saveHTML(); + } + + $r = new Readability($tmp, $article["link"]); + + if ($r->init()) { + + $tmpxpath = new DOMXPath($r->dom); + + $entries = $tmpxpath->query('(//a[@href]|//img[@src])'); + + foreach ($entries as $entry) { + if ($entry->hasAttribute("href")) { + $entry->setAttribute("href", + rewrite_relative_url($article["link"], $entry->getAttribute("href"))); + + } + + if ($entry->hasAttribute("src")) { + $entry->setAttribute("src", + rewrite_relative_url($article["link"], $entry->getAttribute("src"))); + + } + + } + + $article["content"] = $r->articleContent->innerHTML; + } + } + + return $article; + + } + + function api_version() { + return 2; + } + + private function filter_unknown_feeds($enabled_feeds) { + $tmp = array(); + + foreach ($enabled_feeds as $feed) { + + $result = db_query("SELECT id FROM ttrss_feeds WHERE id = '$feed' AND owner_uid = " . $_SESSION["uid"]); + + if (db_num_rows($result) != 0) { + array_push($tmp, $feed); + } + } + + return $tmp; + } + +} +?> diff --git a/plugins/af_redditimgur/init.php b/plugins/af_redditimgur/init.php new file mode 100644 index 0000000000..023d7c1816 --- /dev/null +++ b/plugins/af_redditimgur/init.php @@ -0,0 +1,344 @@ +host = $host; + + $host->add_hook($host::HOOK_ARTICLE_FILTER, $this); + $host->add_hook($host::HOOK_PREFS_TAB, $this); + } + + function hook_prefs_tab($args) { + if ($args != "prefFeeds") return; + + print "
      "; + + $enable_readability = $this->host->get($this, "enable_readability"); + $enable_readability_checked = $enable_readability ? "checked" : ""; + + print "
      "; + + print ""; + + print ""; + print ""; + print ""; + + print "

      " . __("Global settings") . "

      "; + + print_notice("Uses Readability (full-text-rss) implementation by FiveFilters.org"); + print "

      "; + + print " "; + + print ""; + + print "

      "; + + print "

      "; + + print "
      "; + } + + function save() { + $enable_readability = checkbox_to_sql_bool($_POST["enable_readability"]) == "true"; + + $this->host->set($this, "enable_readability", $enable_readability); + + echo __("Configuration saved"); + } + + private function inline_stuff($article, &$doc, $xpath) { + + $entries = $xpath->query('(//a[@href]|//img[@src])'); + + $found = false; + + foreach ($entries as $entry) { + if ($entry->hasAttribute("href")) { + + $matches = array(); + + if (preg_match("/\.gfycat.com\/([a-z]+)?(\.[a-z]+)$/i", $entry->getAttribute("href"), $matches)) { + $entry->setAttribute("href", "http://www.gfycat.com/".$matches[1]); + } + + if (preg_match("/https?:\/\/(www\.)?gfycat.com\/([a-z]+)$/i", $entry->getAttribute("href"), $matches)) { + + $tmp = fetch_file_contents($entry->getAttribute("href")); + + if ($tmp) { + $tmpdoc = new DOMDocument(); + @$tmpdoc->loadHTML($tmp); + + if ($tmpdoc) { + $tmpxpath = new DOMXPath($tmpdoc); + + $source_meta = $tmpxpath->query("//meta[@property='og:video']")->item(0); + $poster_meta = $tmpxpath->query("//meta[@property='og:image' and contains(@content,'thumbs.gfycat.com')]")->item(0); + + if ($source_meta) { + $source_stream = $source_meta->getAttribute("content"); + $poster_url = false; + + if ($source_stream) { + + if ($poster_meta) + $poster_url = $poster_meta->getAttribute("content"); + + $this->handle_as_video($doc, $entry, $source_stream, $poster_url); + $found = 1; + } + } + } + } + + } + + // imgur .gif -> .gifv + if (preg_match("/i\.imgur\.com\/(.*?)\.gif$/i", $entry->getAttribute("href"))) { + $entry->setAttribute("href", + str_replace(".gif", ".gifv", $entry->getAttribute("href"))); + } + + if (preg_match("/\.(gifv)$/i", $entry->getAttribute("href"))) { + + $source_stream = str_replace(".gifv", ".mp4", $entry->getAttribute("href")); + + if (strpos($source_stream, "i.imgur.com") !== FALSE) + $poster_url = str_replace(".mp4", "h.jpg", $source_stream); + + $this->handle_as_video($doc, $entry, $source_stream, $poster_url); + + $found = true; + } + + $matches = array(); + if (preg_match("/\.youtube\.com\/v\/([\w-]+)/", $entry->getAttribute("href"), $matches) || + preg_match("/\.youtube\.com\/.*?[\&\?]v=([\w-]+)/", $entry->getAttribute("href"), $matches) || + preg_match("/\.youtube\.com\/watch\?v=([\w-]+)/", $entry->getAttribute("href"), $matches) || + preg_match("/\/\/youtu.be\/([\w-]+)/", $entry->getAttribute("href"), $matches)) { + + $vid_id = $matches[1]; + + $iframe = $doc->createElement("iframe"); + $iframe->setAttribute("class", "youtube-player"); + $iframe->setAttribute("type", "text/html"); + $iframe->setAttribute("width", "640"); + $iframe->setAttribute("height", "385"); + $iframe->setAttribute("src", "https://www.youtube.com/embed/$vid_id"); + $iframe->setAttribute("allowfullscreen", "1"); + $iframe->setAttribute("frameborder", "0"); + + $br = $doc->createElement('br'); + $entry->parentNode->insertBefore($iframe, $entry); + $entry->parentNode->insertBefore($br, $entry); + + $found = true; + } + + if (preg_match("/\.(jpg|jpeg|gif|png)(\?[0-9][0-9]*)?$/i", $entry->getAttribute("href"))) { + $img = $doc->createElement('img'); + $img->setAttribute("src", $entry->getAttribute("href")); + + $br = $doc->createElement('br'); + $entry->parentNode->insertBefore($img, $entry); + $entry->parentNode->insertBefore($br, $entry); + + $found = true; + } + + // linked albums & pages + + if (preg_match("/^https?:\/\/(m\.)?imgur.com\/([^\.\/]+$)/", $entry->getAttribute("href"), $matches) || + preg_match("/^https?:\/\/imgur.com\/(a|album|gallery)\/[^\.]+$/", $entry->getAttribute("href"), $matches)) { + + $album_content = fetch_file_contents($entry->getAttribute("href"), + false, false, false, false, 10); + + if ($album_content) { + $adoc = new DOMDocument(); + @$adoc->loadHTML($album_content); + + if ($adoc) { + $axpath = new DOMXPath($adoc); + $aentries = $axpath->query("//meta[@property='og:image']"); + $urls = array(); + + foreach ($aentries as $aentry) { + + $url = str_replace("?fb", "", $aentry->getAttribute("content")); + + if (!in_array($url, $urls)) { + $img = $doc->createElement('img'); + $img->setAttribute("src", $url); + $entry->parentNode->insertBefore($doc->createElement('br'), $entry); + + $br = $doc->createElement('br'); + + $entry->parentNode->insertBefore($img, $entry); + $entry->parentNode->insertBefore($br, $entry); + + array_push($urls, $url); + + $found = true; + } + } + } + } + } + } + + // remove tiny thumbnails + if ($entry->hasAttribute("src")) { + if ($entry->parentNode && $entry->parentNode->parentNode) { + $entry->parentNode->parentNode->removeChild($entry->parentNode); + } + } + } + + return $found; + } + + function hook_article_filter($article) { + + if (strpos($article["link"], "reddit.com/r/") !== FALSE) { + $doc = new DOMDocument(); + @$doc->loadHTML($article["content"]); + $xpath = new DOMXPath($doc); + + $found = $this->inline_stuff($article, $doc, $xpath); + + if (function_exists("curl_init") && !$found && $this->host->get($this, "enable_readability") && + mb_strlen(strip_tags($article["content"])) <= 150) { + + if (!class_exists("Readability")) require_once(dirname(dirname(__DIR__)). "/lib/readability/Readability.php"); + + $content_link = $xpath->query("(//a[contains(., '[link]')])")->item(0); + + if ($content_link && + strpos($content_link->getAttribute("href"), "twitter.com") === FALSE && + strpos($content_link->getAttribute("href"), "youtube.com") === FALSE && + strpos($content_link->getAttribute("href"), "reddit.com") === FALSE) { + + /* link may lead to a huge video file or whatever, we need to check content type before trying to + parse it which p much requires curl */ + + $ch = curl_init($content_link->getAttribute("href")); + curl_setopt($ch, CURLOPT_TIMEOUT, 5); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_HEADER, true); + curl_setopt($ch, CURLOPT_NOBODY, true); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, + !ini_get("safe_mode") && !ini_get("open_basedir")); + curl_setopt($ch, CURLOPT_USERAGENT, SELF_USER_AGENT); + + @$result = curl_exec($ch); + $content_type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE); + + if ($content_type && strpos($content_type, "text/html") !== FALSE) { + + $tmp = fetch_file_contents($content_link->getAttribute("href")); + + if ($tmp) { + $r = new Readability($tmp, $content_link->getAttribute("href")); + + if ($r->init()) { + + $tmpxpath = new DOMXPath($r->dom); + + $entries = $tmpxpath->query('(//a[@href]|//img[@src])'); + + foreach ($entries as $entry) { + if ($entry->hasAttribute("href")) { + $entry->setAttribute("href", + rewrite_relative_url($content_link->getAttribute("href"), $entry->getAttribute("href"))); + + } + + if ($entry->hasAttribute("src")) { + $entry->setAttribute("src", + rewrite_relative_url($content_link->getAttribute("href"), $entry->getAttribute("src"))); + + } + + } + + $article["content"] = $r->articleContent->innerHTML . "
      " . $article["content"]; + + // prob not a very good idea (breaks wikipedia pages, etc) - + // inliner currently is not really fit for any random web content + + //$doc = new DOMDocument(); + //@$doc->loadHTML($article["content"]); + //$xpath = new DOMXPath($doc); + //$found = $this->inline_stuff($article, $doc, $xpath); + } + } + } + } + + } + + $node = $doc->getElementsByTagName('body')->item(0); + + if ($node && $found) { + $article["content"] = $doc->saveXML($node); + } + } + + return $article; + } + + function api_version() { + return 2; + } + + private function handle_as_video($doc, $entry, $source_stream, $poster_url = false) { + + $video = $doc->createElement('video'); + $video->setAttribute("autoplay", "1"); + $video->setAttribute("controls", "1"); + $video->setAttribute("loop", "1"); + + if ($poster_url) $video->setAttribute("poster", $poster_url); + + $source = $doc->createElement('source'); + $source->setAttribute("src", $source_stream); + $source->setAttribute("type", "video/mp4"); + + $video->appendChild($source); + + $br = $doc->createElement('br'); + $entry->parentNode->insertBefore($video, $entry); + $entry->parentNode->insertBefore($br, $entry); + + $img = $doc->createElement('img'); + $img->setAttribute("src", + "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D"); + + $entry->parentNode->insertBefore($img, $entry); + } +} +?> diff --git a/plugins/af_sort_bayes/chart_bar.png b/plugins/af_sort_bayes/chart_bar.png new file mode 100644 index 0000000000..9051fbc609 Binary files /dev/null and b/plugins/af_sort_bayes/chart_bar.png differ diff --git a/plugins/af_sort_bayes/init.js b/plugins/af_sort_bayes/init.js new file mode 100644 index 0000000000..bb6bf5954f --- /dev/null +++ b/plugins/af_sort_bayes/init.js @@ -0,0 +1,81 @@ +function bayesTrain(id, train_up, event) { + try { + + event.stopPropagation(); + + var query = "backend.php?op=pluginhandler&plugin=af_sort_bayes&method=trainArticle&article_id=" + param_escape(id) + + "&train_up=" + param_escape(train_up); + + notify_progress("Loading, please wait..."); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify(transport.responseText); + updateScore(id); + } }); + + } catch (e) { + exception_error("showTrgmRelated", e); + } +} + +function bayesClearDatabase() { + try { + + if (confirm(__("Clear classifier database?"))) { + + var query = "backend.php?op=pluginhandler&plugin=af_sort_bayes&method=clearDatabase"; + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function (transport) { + notify(transport.responseText); + bayesUpdateUI(); + } + }); + } + + } catch (e) { + exception_error("showTrgmRelated", e); + } +} + +function bayesUpdateUI() { + try { + + var query = "backend.php?op=pluginhandler&plugin=af_sort_bayes&method=renderPrefsUI"; + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function (transport) { + dijit.byId("af_sort_bayes_prefs").attr("content", transport.responseText); + } + }); + + } catch (e) { + exception_error("showTrgmRelated", e); + } +} + +function bayesShow(id) { + try { + if (dijit.byId("bayesShowDlg")) + dijit.byId("bayesShowDlg").destroyRecursive(); + + var query = "backend.php?op=pluginhandler&plugin=af_sort_bayes&method=showArticleStats&article_id=" + param_escape(id); + + dialog = new dijit.Dialog({ + id: "bayesShowDlg", + title: __("Classifier information"), + style: "width: 600px", + href: query}); + + dialog.show(); + + } catch (e) { + exception_error("shareArticle", e); + } +} + + diff --git a/plugins/af_sort_bayes/init.php b/plugins/af_sort_bayes/init.php new file mode 100644 index 0000000000..6599baa0f6 --- /dev/null +++ b/plugins/af_sort_bayes/init.php @@ -0,0 +1,413 @@ +host = $host; + $this->dbh = Db::get(); + + $this->init_database(); + + $host->add_hook($host::HOOK_ARTICLE_FILTER, $this); + $host->add_hook($host::HOOK_PREFS_TAB, $this); + $host->add_hook($host::HOOK_ARTICLE_BUTTON, $this); + + } + + function trainArticle() { + $article_id = (int) $_REQUEST["article_id"]; + $train_up = sql_bool_to_bool($_REQUEST["train_up"]); + + //$category = $train_up ? "GOOD" : "UGLY"; + $dst_category = "UGLY"; + + $nbs = new NaiveBayesianStorage($_SESSION["uid"]); + $nb = new NaiveBayesian($nbs); + + $result = $this->dbh->query("SELECT score, guid, title, content FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id AND id = " . + $article_id . " AND owner_uid = " . $_SESSION["uid"]); + + if ($this->dbh->num_rows($result) != 0) { + $guid = $this->dbh->fetch_result($result, 0, "guid"); + $title = $this->dbh->fetch_result($result, 0, "title"); + $content = mb_substr(mb_strtolower($title . " " . strip_tags($this->dbh->fetch_result($result, 0, "content"))), 0, $this->max_document_length); + $score = $this->dbh->fetch_result($result, 0, "score"); + + $this->dbh->query("BEGIN"); + + $ref = $nbs->getReference($guid, false); + + if (isset($ref['category_id'])) { + $current_category = $nbs->getCategoryById($ref['category_id']); + } else { + $current_category = "UGLY"; + } + + // set score to fixed value for now + + if ($train_up) { + switch ($current_category) { + case "UGLY": + $dst_category = "GOOD"; + $score = $this->score_modifier; + break; + case "BAD": + $dst_category = "UGLY"; + $score = 0; + break; + case "GOOD": + $dst_category = "GOOD"; + break; + } + } else { + switch ($current_category) { + case "UGLY": + $dst_category = "BAD"; + $score = -$this->score_modifier; + break; + case "BAD": + $dst_category = "BAD"; + break; + case "GOOD": + $dst_category = "UGLY"; + $score = 0; + break; + } + } + + $nb->untrain($guid, $content); + $nb->train($guid, $nbs->getCategoryByName($dst_category), $content); + + $this->dbh->query("UPDATE ttrss_user_entries SET score = '$score' WHERE ref_id = $article_id AND owner_uid = " . $_SESSION["uid"]); + + $nb->updateProbabilities(); + + $this->dbh->query("COMMIT"); + + } + + print "$article_id :: $dst_category :: $score"; + } + + function get_js() { + return file_get_contents(__DIR__ . "/init.js"); + } + + function get_prefs_js() { + return file_get_contents(__DIR__ . "/init.js"); + } + + function hook_article_button($line) { + return "" . + "" . + ""; + + } + + function init_database() { + $prefix = $this->sql_prefix; + + // TODO there probably should be a way for plugins to determine their schema version to upgrade tables + + /*$this->dbh->query("DROP TABLE IF EXISTS ${prefix}_wordfreqs", false); + $this->dbh->query("DROP TABLE IF EXISTS ${prefix}_references", false); + $this->dbh->query("DROP TABLE IF EXISTS ${prefix}_categories", false);*/ + + $this->dbh->query("BEGIN"); + + // PG only for the time being + + if (DB_TYPE == "mysql") { + + $this->dbh->query("CREATE TABLE IF NOT EXISTS ${prefix}_categories ( + id INTEGER NOT NULL PRIMARY KEY auto_increment, + category varchar(100) NOT NULL DEFAULT '', + probability DOUBLE NOT NULL DEFAULT '0', + owner_uid INTEGER NOT NULL, + FOREIGN KEY (owner_uid) REFERENCES ttrss_users(id) ON DELETE CASCADE, + word_count BIGINT NOT NULL DEFAULT '0') ENGINE=InnoDB"); + + $this->dbh->query("CREATE TABLE IF NOT EXISTS ${prefix}_references ( + id INTEGER NOT NULL PRIMARY KEY auto_increment, + document_id VARCHAR(255) NOT NULL, + category_id INTEGER NOT NULL, + FOREIGN KEY (category_id) REFERENCES ${prefix}_categories(id) ON DELETE CASCADE, + owner_uid INTEGER NOT NULL, + FOREIGN KEY (owner_uid) REFERENCES ttrss_users(id) ON DELETE CASCADE) ENGINE=InnoDB"); + + $this->dbh->query("CREATE TABLE IF NOT EXISTS ${prefix}_wordfreqs ( + word varchar(100) NOT NULL DEFAULT '', + category_id INTEGER NOT NULL, + FOREIGN KEY (category_id) REFERENCES ${prefix}_categories(id) ON DELETE CASCADE, + owner_uid INTEGER NOT NULL, + FOREIGN KEY (owner_uid) REFERENCES ttrss_users(id) ON DELETE CASCADE, + count BIGINT NOT NULL DEFAULT '0') ENGINE=InnoDB"); + + + } else { + $this->dbh->query("CREATE TABLE IF NOT EXISTS ${prefix}_categories ( + id SERIAL NOT NULL PRIMARY KEY, + category varchar(100) NOT NULL DEFAULT '', + probability DOUBLE PRECISION NOT NULL DEFAULT '0', + owner_uid INTEGER NOT NULL REFERENCES ttrss_users(id) ON DELETE CASCADE, + word_count BIGINT NOT NULL DEFAULT '0')"); + + $this->dbh->query("CREATE TABLE IF NOT EXISTS ${prefix}_references ( + id SERIAL NOT NULL PRIMARY KEY, + document_id VARCHAR(255) NOT NULL, + category_id INTEGER NOT NULL REFERENCES ${prefix}_categories(id) ON DELETE CASCADE, + owner_uid INTEGER NOT NULL REFERENCES ttrss_users(id) ON DELETE CASCADE)"); + + $this->dbh->query("CREATE TABLE IF NOT EXISTS ${prefix}_wordfreqs ( + word varchar(100) NOT NULL DEFAULT '', + category_id INTEGER NOT NULL REFERENCES ${prefix}_categories(id) ON DELETE CASCADE, + owner_uid INTEGER NOT NULL REFERENCES ttrss_users(id) ON DELETE CASCADE, + count BIGINT NOT NULL DEFAULT '0')"); + } + + $owner_uid = @$_SESSION["uid"]; + + if ($owner_uid) { + $result = $this->dbh->query("SELECT id FROM ${prefix}_categories WHERE owner_uid = $owner_uid LIMIT 1"); + + if ($this->dbh->num_rows($result) == 0) { + $this->dbh->query("INSERT INTO ${prefix}_categories (category, owner_uid) VALUES ('GOOD', $owner_uid)"); + $this->dbh->query("INSERT INTO ${prefix}_categories (category, owner_uid) VALUES ('BAD', $owner_uid)"); + $this->dbh->query("INSERT INTO ${prefix}_categories (category, owner_uid) VALUES ('UGLY', $owner_uid)"); + } + } + + $this->dbh->query("COMMIT"); + } + + function renderPrefsUI() { + $result = $this->dbh->query("SELECT category, probability, word_count, + (SELECT COUNT(id) FROM {$this->sql_prefix}_references WHERE + category_id = {$this->sql_prefix}_categories.id) as doc_count + FROM {$this->sql_prefix}_categories WHERE owner_uid = " . $_SESSION["uid"]); + + print "

      " . __("Statistics") . "

      "; + + print "

      ".T_sprintf("Required UGLY word count for automatic matching: %d", $this->auto_categorize_threshold)."

      "; + + print ""; + print ""; + + while ($line = $this->dbh->fetch_assoc($result)) { + print ""; + foreach ($line as $k => $v) { + if ($k == "probability") $v = sprintf("%.3f", $v); + + print ""; + } + print ""; + } + + print "
      CategoryProbabilityWordsArticles
      $v
      "; + + print "

      " . __("Last matched articles") . "

      "; + + $result = $this->dbh->query("SELECT te.title, category, tf.title AS feed_title + FROM ttrss_entries AS te, ttrss_user_entries AS tu, ttrss_feeds AS tf, {$this->sql_prefix}_references AS tr, {$this->sql_prefix}_categories AS tc + WHERE tf.id = tu.feed_id AND tu.ref_id = te.id AND tc.id = tr.category_id AND tr.document_id = te.guid ORDER BY te.id DESC LIMIT 20"); + + print "
        "; + + while ($line = $this->dbh->fetch_assoc($result)) { + print "
      • " . $line["category"] . ": " . $line["title"] . " (" . $line["feed_title"] . ")
      • "; + } + + print "
      "; + + print " "; + + print " "; + + // + } + + function hook_prefs_tab($args) { + if ($args != "prefPrefs") return; + + print "
      "; + + $this->renderPrefsUI(); + + print "
      "; + } + + function hook_article_filter($article) { + $owner_uid = $article["owner_uid"]; + + // guid already includes owner_uid so we don't need to include it + $result = $this->dbh->query("SELECT id FROM {$this->sql_prefix}_references WHERE + document_id = '" . $this->dbh->escape_string($article['guid_hashed']) . "'"); + + if (db_num_rows($result) != 0) { + _debug("bayes: article already categorized"); + return $article; + } + + $nbs = new NaiveBayesianStorage($owner_uid); + $nb = new NaiveBayesian($nbs); + + $categories = $nbs->getCategories(); + + if (count($categories) > 0) { + + $count_neutral = 0; + + $id_good = 0; + $id_ugly = 0; + $id_bad = 0; + + foreach ($categories as $id => $cat) { + if ($cat["category"] == "GOOD") { + $id_good = $id; + } else if ($cat["category"] == "UGLY") { + $id_ugly = $id; + $count_neutral += $cat["word_count"]; + } else if ($cat["category"] == "BAD") { + $id_bad = $id; + } + } + + $dst_category = $id_ugly; + + $bayes_content = mb_substr(mb_strtolower($article["title"] . " " . strip_tags($article["content"])), 0, $this->max_document_length); + + if ($count_neutral >= $this->auto_categorize_threshold) { + // enable automatic categorization + + $result = $nb->categorize($bayes_content); + + //print_r($result); + + if (count($result) == 3) { + $prob_good = $result[$id_good]; + $prob_bad = $result[$id_bad]; + + if (!is_nan($prob_good) && $prob_good > 0.90) { + $dst_category = $id_good; + $article["score_modifier"] += $this->score_modifier; + } else if (!is_nan($prob_bad) && $prob_bad > 0.90) { + $dst_category = $id_bad; + $article["score_modifier"] -= $this->score_modifier; + } + } + + _debug("bayes, dst category: $dst_category"); + } + + $nb->train($article["guid_hashed"], $dst_category, $bayes_content); + + $nb->updateProbabilities(); + } + + return $article; + + } + + function clearDatabase() { + $prefix = $this->sql_prefix; + + $this->dbh->query("BEGIN"); + $this->dbh->query("DELETE FROM ${prefix}_references WHERE owner_uid = " . $_SESSION["uid"]); + $this->dbh->query("DELETE FROM ${prefix}_wordfreqs WHERE owner_uid = " . $_SESSION["uid"]); + $this->dbh->query("COMMIT"); + + $nbs = new NaiveBayesianStorage($_SESSION["uid"]); + $nb = new NaiveBayesian($nbs); + $nb->updateProbabilities(); + } + + function showArticleStats() { + $article_id = (int) $_REQUEST["article_id"]; + + $result = $this->dbh->query("SELECT score, guid, title, content FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id AND id = " . + $article_id . " AND owner_uid = " . $_SESSION["uid"]); + + if ($this->dbh->num_rows($result) != 0) { + $guid = $this->dbh->fetch_result($result, 0, "guid"); + $title = $this->dbh->fetch_result($result, 0, "title"); + + $content = mb_substr(mb_strtolower($title . " " . strip_tags($this->dbh->fetch_result($result, 0, "content"))), 0, $this->max_document_length); + + print "

      " . $title . "

      "; + + $nbs = new NaiveBayesianStorage($_SESSION["uid"]); + $nb = new NaiveBayesian($nbs); + + $categories = $nbs->getCategories(); + + $ref = $nbs->getReference($guid, false); + + $current_cat = isset($ref["category_id"]) ? $categories[$ref["category_id"]]["category"] : "N/A"; + + print "

      " . T_sprintf("Currently stored as: %s", $current_cat) . "

      "; + + $result = $nb->categorize($content); + + print "

      " . __("Classifier result") . "

      "; + + print ""; + print ""; + + foreach ($result as $k => $v) { + print ""; + print ""; + print ""; + + print ""; + } + + print "
      CategoryProbability
      " . $categories[$k]["category"] . "" . $v . "
      "; + + } else { + print_error("Article not found"); + } + + print "
      "; + + print ""; + + print "
      "; + + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/af_sort_bayes/lib/COPYING b/plugins/af_sort_bayes/lib/COPYING new file mode 100644 index 0000000000..207a79cbdb --- /dev/null +++ b/plugins/af_sort_bayes/lib/COPYING @@ -0,0 +1,278 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + diff --git a/plugins/af_sort_bayes/lib/HISTORY b/plugins/af_sort_bayes/lib/HISTORY new file mode 100644 index 0000000000..24cfb05d6f --- /dev/null +++ b/plugins/af_sort_bayes/lib/HISTORY @@ -0,0 +1 @@ +2003/11/02 - Sortie de la version initiale 1.0 diff --git a/plugins/af_sort_bayes/lib/LICENSE b/plugins/af_sort_bayes/lib/LICENSE new file mode 100644 index 0000000000..d7f1051397 --- /dev/null +++ b/plugins/af_sort_bayes/lib/LICENSE @@ -0,0 +1,339 @@ +GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/plugins/af_sort_bayes/lib/README.md b/plugins/af_sort_bayes/lib/README.md new file mode 100644 index 0000000000..79b16ae6ac --- /dev/null +++ b/plugins/af_sort_bayes/lib/README.md @@ -0,0 +1,41 @@ +PHP Naive Bayesian Filter +============================================================ +This library implements Naive Bayes classifier. Original Project developed by Loic d'Anterroches [loic xhtml.net]. This Library is very Usefull but is not Published now. so Salvage from [Internet Archive] and create Github Repositry. + +see more information to Original Readme.txt and [Original Page]. +And If there is a problem with the publication of this repository, I will close this repository. + + +[loic xhtml.net]: +[Internet Archive]: +[Original Page]: + +Writing by Japanese +------------------------------------------------------------ +ã“ã®ãƒ©ã‚¤ãƒ–ラリã¯å˜ç´”ベイズ分類器を実装ã—ãŸãƒ©ã‚¤ãƒ–ラリã§ã™ã€‚å…ƒã®ãƒ—ロジェクトã¯Loic d'AnterrochesãŒä½œæˆã—ã¦ã„ã¾ã™ã€‚éžå¸¸ã«æœ‰ç›Šãªãƒ©ã‚¤ãƒ–ラリã§ã™ãŒã€ç¾åœ¨ã¯å…¬é–‹ã•れã¦ã„ãªã„よã†ã§ã™ã€‚ãã“ã§ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã‹ã‚‰ãƒ©ã‚¤ãƒ–ラリをサルベージã—ã€Githubã®ãƒ¬ãƒã‚¸ãƒˆãƒªã‚’作æˆã—ã¾ã—ãŸã€‚ + +より詳ã—ã„æƒ…å ±ã¯ã‚ªãƒªã‚¸ãƒŠãƒ«ã®Readme.txtã‚’å‚ç…§ã—ã¦ãã ã•ã„。 +ã‚‚ã—ã€ã“ã®ãƒ¬ãƒã‚¸ãƒˆãƒªã®å…¬é–‹ã«å•題ãŒã‚るよã†ãªã‚‰ã°ã€ã“ã®ãƒ¬ãƒã‚¸ãƒˆãƒªã‚’削除ã—ã¾ã™ã€‚ + +extract Original Readme +------------------------------------------------------------ +> This file is part of PHP Naive Bayesian Filter. +> +> The Initial Developer of the Original Code is +> Loic d'Anterroches [loic xhtml.net]. +> Portions created by the Initial Developer are Copyright (C) 2003 +> the Initial Developer. All Rights Reserved. +> +> PHP Naive Bayesian Filter is free software; you can redistribute it +> and/or modify it under the terms of the GNU General Public License as +> published by the Free Software Foundation; either version 2 of +> the License, or (at your option) any later version. +> +> PHP Naive Bayesian Filter is distributed in the hope that it will +> be useful, but WITHOUT ANY WARRANTY; without even the implied +> warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +> See the GNU General Public License for more details. +> +> You should have received a copy of the GNU General Public License +> along with Foobar; if not, write to the Free Software +> Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA \ No newline at end of file diff --git a/plugins/af_sort_bayes/lib/README.txt b/plugins/af_sort_bayes/lib/README.txt new file mode 100644 index 0000000000..e3230f32f4 --- /dev/null +++ b/plugins/af_sort_bayes/lib/README.txt @@ -0,0 +1,86 @@ +/* + ***** BEGIN LICENSE BLOCK ***** + This file is part of PHP Naive Bayesian Filter. + + The Initial Developer of the Original Code is + Loic d'Anterroches [loic xhtml.net]. + Portions created by the Initial Developer are Copyright (C) 2003 + the Initial Developer. All Rights Reserved. + + PHP Naive Bayesian Filter is free software; you can redistribute it + and/or modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + PHP Naive Bayesian Filter is distributed in the hope that it will + be useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Foobar; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + ***** END LICENSE BLOCK ***** +*/ + + +** Presentation ** + +Voici une implementation generale d'un filtre reposant sur le theoreme de Bayes. +L'application la plus connue est le filtre anti-spam. Vous pouvez aussi +l'utiliser pour faire de la classification automatique de documents. + +Ce programme se base sur la version simplifiee du theoreme de Bayes comme +decrite par Ken Williams, ken@mathforum.org sur la page +http://mathforum.org/~ken/bayes/bayes.html au 31/10/2003. + +Le systeme permet de maniere generale de faire la classification de documents +textes dans differentes categories. Si vous voulez l'utiliser pour une +classification de vos messages entre spam et non-spam, alors il vous faudra 2 +categories, une "spam" et une "nonspam". + +J'ai cree ce script car c'est une sujet a la mode en ce moment. Particulierement +pour filtrer les commentaires et les trackbacks dans les blogs. Le systeme +propose ici permet d'avoir plus que deux categories spam et non spam. Cela permet +donc theoriquement de l'utiliser pour la classification dans de multiples +categories. + +Un petit script 'index.php' vous permet de tester le systeme, ensuite vous +pouvez inclure la classe dans vos scripts. Les fichiers class.naivebayesian.php +et class.naivebayesianstorage.php peuvent aussi etre utilises avec la licence +GNU Lesser General Public License Version 2.1 ou ulterieure. + + +** Fonctionnalites ** + +- Une classe avec la logique de base, une autre qui est l'interface de stockage. +- Stockage des donnees dans une base de données pour le moment MySQL mais +vous pouvez utiliser celle que vous voulez via l'interface de stockage. +- Apprentissage +- Desapprentissage +- Archivage automatique des documents "reference" +- L'interface de stockage par defaut utilise MySQL et repose sur deux classes +d'Olivier Meunier. + +** Utilisation ** + +Regardez le code de index.php +Pour une bonne utilisation il vous faut creer une autre classe qui herite de +NaiveBayesian pour avoir votre propre fonction pour ignorer les mots qui ne +portent pas de sens particulier. Ceci n'est pas fait dans 'index.php' + +class votreclass extends NaiveBayesian +{ + function getIgnoreList() + { + return array('the', 'that', 'you', 'for', 'and'); + } +} + + +** Des questions ** + +Pouvez me contacter par email a loic xhtml.net, ou venir sur http://www.xhtml.net/ + + diff --git a/plugins/af_sort_bayes/lib/VERSION b/plugins/af_sort_bayes/lib/VERSION new file mode 100644 index 0000000000..d3827e75a5 --- /dev/null +++ b/plugins/af_sort_bayes/lib/VERSION @@ -0,0 +1 @@ +1.0 diff --git a/plugins/af_sort_bayes/lib/class.naivebayesian.php b/plugins/af_sort_bayes/lib/class.naivebayesian.php new file mode 100644 index 0000000000..4a4ffa7eba --- /dev/null +++ b/plugins/af_sort_bayes/lib/class.naivebayesian.php @@ -0,0 +1,297 @@ +nbs = $nbs; + + return true; + } + + /** categorize a document. + Get list of categories in which the document can be categorized + with a score for each category. + + @return array keys = category ids, values = scores + @param string document + */ + function categorize($document) { + $scores = array(); + $categories = $this->nbs->getCategories(); + $tokens = $this->_getTokens($document); + + // calculate the score in each category + $total_words = 0; + $ncat = 0; + + while (list($category, $data) = each($categories)) { + $total_words += $data['word_count']; + $ncat++; + } + + reset($categories); + + while (list($category, $data) = each($categories)) { + $scores[$category] = $data['probability']; + // small probability for a word not in the category + // maybe putting 1.0 as a 'no effect' word can also be good + + if ($data['word_count'] > 0) + $small_proba = 1.0 / ($data['word_count'] * 2); + else + $small_proba = 0; + + reset($tokens); + + while (list($token, $count) = each($tokens)) { + + if ($this->nbs->wordExists($token)) { + $word = $this->nbs->getWord($token, $category); + + if ($word['count']) { + $proba = $word['count'] / $data['word_count']; + } + else { + $proba = $small_proba; + } + + $scores[$category] *= pow($proba, $count) * pow($total_words / $ncat, $count); + // pow($total_words/$ncat, $count) is here to avoid underflow. + + } + } + } + + return $this->_rescale($scores); + } + + /** training against a document. + Set a document as being in a specific category. The document becomes a reference + and is saved in the table of references. After a set of training is done + the updateProbabilities() function must be run. + + @see updateProbabilities() + @see untrain() + @return bool success + @param string document id, must be unique + @param string category_id the category id in which the document should be + @param string content of the document + */ + function train($doc_id, $category_id, $content) { + $ret = false; + + + // if this doc_id already trained, no trained + if (!$this->nbs->getReference($doc_id, false)) { + + $tokens = $this->_getTokens($content); + + while (list($token, $count) = each($tokens)) { + $this->nbs->updateWord($token, $count, $category_id); + } + + $this->nbs->saveReference($doc_id, $category_id, $content); + + $ret = true; + } + else { + $ret = false; + } + + return $ret; + } + + /** untraining of a document. + To remove just one document from the references. + + @see updateProbabilities() + @see untrain() + @return bool success + @param string document id, must be unique + */ + function untrain($doc_id) { + $ref = $this->nbs->getReference($doc_id); + + if (isset($ref['content'])) { + + $tokens = $this->_getTokens($ref['content']); + + while (list($token, $count) = each($tokens)) { + $this->nbs->removeWord($token, $count, $ref['category_id']); + } + + $this->nbs->removeReference($doc_id); + + return true; + } else { + return false; + } + } + + /** rescale the results between 0 and 1. + + @author Ken Williams, ken@mathforum.org + @see categorize() + @return array normalized scores (keys => category, values => scores) + @param array scores (keys => category, values => scores) + */ + function _rescale($scores) { + // Scale everything back to a reasonable area in + // logspace (near zero), un-loggify, and normalize + $total = 0.0; + $max = 0.0; + reset($scores); + + while (list($cat, $score) = each($scores)) { + if ($score >= $max) + $max = $score; + } + + reset($scores); + while (list($cat, $score) = each($scores)) { + $scores[$cat] = (float) exp($score - $max); + $total += (float) pow($scores[$cat], 2); + } + + $total = (float) sqrt($total); + + reset($scores); + while (list($cat, $score) = each($scores)) { + $scores[$cat] = (float) $scores[$cat] / $total; + } + reset($scores); + + return $scores; + } + + /** update the probabilities of the categories and word count. + This function must be run after a set of training + + @see train() + @see untrain() + @return bool sucess + */ + function updateProbabilities() { + // this function is really only database manipulation + // that is why all is done in the NaiveBayesianStorage + return $this->nbs->updateProbabilities(); + } + + /** Get the list of token to ignore. + @return array ignore list + */ + function getIgnoreList() { + //return array('the', 'that', 'you', 'for', 'and'); + + // https://en.wikipedia.org/wiki/Most_common_words_in_English + return array('the', 'be', 'to', 'of', 'and', 'a', 'in', 'that', 'have', 'I', 'it', 'for', 'not', 'on', 'with', + 'he', 'as', 'you', 'do', 'at', 'this', 'but', 'his', 'by', 'from', 'they', 'we', 'say', 'her', + 'she', 'or', 'an', 'will', 'my', 'one', 'all', 'would', 'there', 'their', 'what', 'so', 'up', + 'out', 'if', 'about', 'who', 'get', 'which', 'go', 'me', 'when', 'make', 'can', 'like', 'time', + 'no', 'just', 'him', 'know', 'take', 'people', 'into', 'year', 'your', 'good', 'some', 'could', + 'them', 'see', 'other', 'than', 'then', 'now', 'look', 'only', 'come', 'its', 'over', 'think', + 'also', 'back', 'after', 'use', 'two', 'how', 'our', 'work', 'first', 'well', 'way', 'even', + 'new', 'want', 'because', 'any', 'these', 'give', 'day', 'most', 'us', 'read', 'more'); + + } + + /** get the tokens from a string + + @author James Seng. [http://james.seng.cc/] (based on his perl version) + + @return array tokens + @param string the string to get the tokens from + */ + function _getTokens($string) { + $rawtokens = array(); + $tokens = array(); + //$string = $this->_cleanString($string); + + if (count(0 >= $this->ignore_list)) { + $this->ignore_list = $this->getIgnoreList(); + } + + $rawtokens = preg_split("/[\(\),:\.;\t\r\n ]/", $string, -1, PREG_SPLIT_NO_EMPTY); + + // remove some tokens + while (list(, $token) = each($rawtokens)) { + $token = trim($token); + if (!(('' == $token) || (mb_strpos($token, "&") !== FALSE) || (mb_strlen($token) < $this->min_token_length) || (mb_strlen($token) > $this->max_token_length) || (preg_match('/^[0-9]+$/', $token)) || (in_array($token, $this->ignore_list)))) { + $tokens[$token]++; + } + } + + return $tokens; + } + + /** clean a string from the diacritics + + @author Antoine Bajolet [phpdig_at_toiletoine.net] + @author SPIP [http://uzine.net/spip/] + + @return string clean string + @param string string with accents + */ + function _cleanString($string) { + $diac = /* A */ chr(192) . chr(193) . chr(194) . chr(195) . chr(196) . chr(197) . + /* a */ chr(224) . chr(225) . chr(226) . chr(227) . chr(228) . chr(229) . + /* O */ chr(210) . chr(211) . chr(212) . chr(213) . chr(214) . chr(216) . + /* o */ chr(242) . chr(243) . chr(244) . chr(245) . chr(246) . chr(248) . + /* E */ chr(200) . chr(201) . chr(202) . chr(203) . + /* e */ chr(232) . chr(233) . chr(234) . chr(235) . + /* Cc */ chr(199) . chr(231) . + /* I */ chr(204) . chr(205) . chr(206) . chr(207) . + /* i */ chr(236) . chr(237) . chr(238) . chr(239) . + /* U */ chr(217) . chr(218) . chr(219) . chr(220) . + /* u */ chr(249) . chr(250) . chr(251) . chr(252) . + /* yNn */ chr(255) . chr(209) . chr(241); + + return strtolower(strtr($string, $diac, 'AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn')); + } + + } diff --git a/plugins/af_sort_bayes/lib/class.naivebayesian_ngram.php b/plugins/af_sort_bayes/lib/class.naivebayesian_ngram.php new file mode 100644 index 0000000000..cee2bb1d7b --- /dev/null +++ b/plugins/af_sort_bayes/lib/class.naivebayesian_ngram.php @@ -0,0 +1,52 @@ +N = $n; + + return true; + } + + /** + * override method for ngram + * + * @param string $string + * @return multiple + */ + function _getTokens($string) { + $tokens = array(); + + if (mb_strlen($string)) { + for ($i = 0; $i < mb_strlen($string) - $this->N; $i++) { + $wd = mb_substr($string, $i, $this->N); + + if (mb_strlen($wd) == $this->N) { + if (!array_key_exists($wd, $tokens)) { + $tokens[$wd] = 0; + } + + $tokens[$wd]++; + } + } + } + + if (count($tokens)) { + // remove empty value + $tokens = array_filter($tokens); + } + + return $tokens; + } + + } diff --git a/plugins/af_sort_bayes/lib/class.naivebayesianstorage.php b/plugins/af_sort_bayes/lib/class.naivebayesianstorage.php new file mode 100644 index 0000000000..99db1fc79f --- /dev/null +++ b/plugins/af_sort_bayes/lib/class.naivebayesianstorage.php @@ -0,0 +1,261 @@ +con = Db::get(); + $this->owner_uid = $owner_uid; + + return true; + } + + /** get the list of categories with basic data. + + @return array key = category ids, values = array(keys = 'probability', 'word_count') + */ + function getCategories() { + $categories = array(); + $rs = $this->con->query('SELECT * FROM ttrss_plugin_af_sort_bayes_categories WHERE owner_uid = ' . $this->owner_uid); + + while ($line = $this->con->fetch_assoc($rs)) { + $categories[$line['id']] = array('probability' => $line['probability'], + 'category' => $line['category'], + 'word_count' => $line['word_count'] + ); + } + + return $categories; + } + + function getCategoryByName($category) { + $rs = $this->con->query("SELECT id FROM ttrss_plugin_af_sort_bayes_categories WHERE category = '" . + $this->con->escape_string($category) . "' AND owner_uid = " . $this->owner_uid); + + if ($this->con->num_rows($rs) != 0) { + return $this->con->fetch_result($rs, 0, "id"); + } + + return false; + } + + function getCategoryById($category_id) { + $rs = $this->con->query("SELECT category FROM ttrss_plugin_af_sort_bayes_categories WHERE id = '" . + (int)$category_id . "' AND owner_uid = " . $this->owner_uid); + + if ($this->con->num_rows($rs) != 0) { + return $this->con->fetch_result($rs, 0, "category"); + } + + return false; + } + + /** see if the word is an already learnt word. + @return bool + @param string word + */ + function wordExists($word) { + $rs = $this->con->query("SELECT * FROM ttrss_plugin_af_sort_bayes_wordfreqs WHERE word='" . $this->con->escape_string($word) . "' AND + owner_uid = " . $this->owner_uid); + + return $this->con->num_rows($rs) != 0; + } + + /** get details of a word in a category. + @return array ('count' => count) + @param string word + @param string category id + */ + function getWord($word, $category_id) { + $details = array(); + + $rs = $this->con->query("SELECT * FROM ttrss_plugin_af_sort_bayes_wordfreqs WHERE word='" . + $this->con->escape_string($word) . "' AND category_id=" . (int)$category_id); + + if ($this->con->num_rows($rs) == 0 ) { + $details['count'] = 0; + } else { + $details['count'] = $this->con->fetch_result($rs, 0, "count"); + } + + return $details; + } + + /** update a word in a category. + If the word is new in this category it is added, else only the count is updated. + + @return bool success + @param string word + @param int count + @paran string category id + */ + function updateWord($word, $count, $category_id) { + $oldword = $this->getWord($word, $category_id); + + if (0 == $oldword['count']) { + return $this->con->query("INSERT INTO ttrss_plugin_af_sort_bayes_wordfreqs (word, category_id, count, owner_uid) + VALUES ('" . $this->con->escape_string($word) . "', '" . + (int)$category_id . "', '" . + (int)$count . "', '". + $this->owner_uid . "')"); + } + else { + return $this->con->query("UPDATE ttrss_plugin_af_sort_bayes_wordfreqs SET count = count + " . (int) $count . " WHERE category_id = '" . $this->con->escape_string($category_id) . "' AND word = '" . $this->con->escape_string($word) . "'"); + } + } + + /** remove a word from a category. + + @return bool success + @param string word + @param int count + @param string category id + */ + function removeWord($word, $count, $category_id) { + $oldword = $this->getWord($word, $category_id); + + if (0 != $oldword['count'] && 0 >= ($oldword['count'] - $count)) { + return $this->con->query("DELETE FROM ttrss_plugin_af_sort_bayes_wordfreqs WHERE word='" . + $this->con->escape_string($word) . "' AND category_id='" . + $this->con->escape_string($category_id) . "'"); + } + else { + return $this->con->query("UPDATE ttrss_plugin_af_sort_bayes_wordfreqs SET count = count - " . + (int) $count . " WHERE category_id = '" . $this->con->escape_string($category_id) . "' + AND word = '" . $this->con->escape_string($word) . "'"); + } + } + + /** update the probabilities of the categories and word count. + This function must be run after a set of training + + @return bool sucess + */ + function updateProbabilities() { + // first update the word count of each category + $rs = $this->con->query("SELECT SUM(count) AS total FROM ttrss_plugin_af_sort_bayes_wordfreqs WHERE owner_uid = ".$this->owner_uid); + + $total_words = $this->con->fetch_result($rs, 0, "total"); + + if ($total_words == 0) { + $this->con->query("UPDATE ttrss_plugin_af_sort_bayes_categories SET word_count=0, probability=0 WHERE owner_uid = " . $this->owner_uid); + return true; + } + + $rs = $this->con->query("SELECT tc.id AS category_id, SUM(count) AS total FROM ttrss_plugin_af_sort_bayes_categories AS tc + LEFT JOIN ttrss_plugin_af_sort_bayes_wordfreqs AS tw ON (tc.id = tw.category_id) WHERE tc.owner_uid = ".$this->owner_uid." GROUP BY tc.id"); + + while ($line = $this->con->fetch_assoc($rs)) { + + $proba = (int)$line['total'] / $total_words; + $this->con->query("UPDATE ttrss_plugin_af_sort_bayes_categories SET word_count=" . (int) $line['total'] . + ", probability=" . $proba . " WHERE id = '" . $line['category_id'] . "'"); + } + + return true; + } + + /** save a reference in the database. + + @return bool success + @param string reference if, must be unique + @param string category id + @param string content of the reference + */ + function saveReference($doc_id, $category_id, $content) { + return $this->con->query("INSERT INTO ttrss_plugin_af_sort_bayes_references (document_id, category_id, owner_uid) VALUES + ('" . $this->con->escape_string($doc_id) . "', '" . + (int)$category_id . "', " . + (int)$this->owner_uid . ")"); + } + + /** get a reference from the database. + + @return array reference( category_id => ...., content => ....) + @param string id + */ + function getReference($doc_id, $include_content = true) + { + + $ref = array(); + $rs = $this->con->query("SELECT * FROM ttrss_plugin_af_sort_bayes_references WHERE document_id='" . + $this->con->escape_string($doc_id) . "' AND owner_uid = " . $this->owner_uid); + + if ($this->con->num_rows($rs) == 0) { + return $ref; + } + + $ref['category_id'] = $this->con->fetch_result($rs, 0, 'category_id'); + $ref['id'] = $this->con->fetch_result($rs, 0, 'id'); + $ref['document_id'] = $this->con->fetch_result($rs, 0, 'document_id'); + + if ($include_content) { + $rs = $this->con->query("SELECT content, title FROM ttrss_entries WHERE guid = '" . + $this->con->escape_string($ref['document_id']) . "'"); + + if ($this->con->num_rows($rs) != 0) { + $ref['content'] = mb_substr(mb_strtolower($this->con->fetch_result($rs, 0, 'title') . ' ' . strip_tags($this->con->fetch_result($rs, 0, 'content'))), 0, + $this->max_document_length); + } + } + + return $ref; + } + + /** remove a reference from the database + + @return bool sucess + @param string reference id + */ + function removeReference($doc_id) { + + return $this->con->query("DELETE FROM ttrss_plugin_af_sort_bayes_references WHERE document_id='" . $this->con->escape_string($doc_id) . "' AND owner_uid = " . $this->owner_uid); + } + + } diff --git a/plugins/af_sort_bayes/thumb_down.png b/plugins/af_sort_bayes/thumb_down.png new file mode 100644 index 0000000000..3c832d4c83 Binary files /dev/null and b/plugins/af_sort_bayes/thumb_down.png differ diff --git a/plugins/af_sort_bayes/thumb_up.png b/plugins/af_sort_bayes/thumb_up.png new file mode 100644 index 0000000000..2bd16ccf29 Binary files /dev/null and b/plugins/af_sort_bayes/thumb_up.png differ diff --git a/plugins/af_tumblr_1280/init.php b/plugins/af_tumblr_1280/init.php new file mode 100644 index 0000000000..f9938048b8 --- /dev/null +++ b/plugins/af_tumblr_1280/init.php @@ -0,0 +1,79 @@ +host = $host; + + if (function_exists("curl_init")) { + $host->add_hook($host::HOOK_ARTICLE_FILTER, $this); + } + } + + function hook_article_filter($article) { + + $owner_uid = $article["owner_uid"]; + + $charset_hack = ' + + '; + + $doc = new DOMDocument(); + $doc->loadHTML($charset_hack . $article["content"]); + + $found = false; + + if ($doc) { + $xpath = new DOMXpath($doc); + + $images = $xpath->query('(//img[contains(@src, \'media.tumblr.com\')])'); + + foreach ($images as $img) { + $src = $img->getAttribute("src"); + + $test_src = preg_replace("/_\d{3}.(jpg|gif|png)/", "_1280.$1", $src); + + if ($src != $test_src) { + + $ch = curl_init($test_src); + curl_setopt($ch, CURLOPT_TIMEOUT, 5); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_HEADER, true); + curl_setopt($ch, CURLOPT_NOBODY, true); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, + !ini_get("safe_mode") && !ini_get("open_basedir")); + curl_setopt($ch, CURLOPT_USERAGENT, SELF_USER_AGENT); + + @$result = curl_exec($ch); + $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + + if ($result && $http_code == 200) { + $img->setAttribute("src", $test_src); + $found = true; + } + } + } + + if ($found) { + $doc->removeChild($doc->firstChild); //remove doctype + $article["content"] = $doc->saveHTML(); + } + } + + return $article; + + } + + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/af_unburn/init.php b/plugins/af_unburn/init.php new file mode 100644 index 0000000000..5c9bc13873 --- /dev/null +++ b/plugins/af_unburn/init.php @@ -0,0 +1,133 @@ +host = $host; + + $host->add_hook($host::HOOK_ARTICLE_FILTER, $this); + } + + function hook_article_filter($article) { + $owner_uid = $article["owner_uid"]; + + if (!function_exists("curl_init")) + return $article; + + if ((strpos($article["link"], "feedproxy.google.com") !== FALSE || + strpos($article["link"], "/~r/") !== FALSE || + strpos($article["link"], "feedsportal.com") !== FALSE)) { + + if (ini_get("safe_mode") || ini_get("open_basedir")) { + $ch = curl_init(geturl($article["link"])); + } else { + $ch = curl_init($article["link"]); + } + + curl_setopt($ch, CURLOPT_TIMEOUT, 5); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_HEADER, true); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, !ini_get("safe_mode") && !ini_get("open_basedir")); + curl_setopt($ch, CURLOPT_USERAGENT, SELF_USER_AGENT); + + if (defined('_CURL_HTTP_PROXY')) { + curl_setopt($ch, CURLOPT_PROXY, _CURL_HTTP_PROXY); + } + + @curl_exec($ch); + + $real_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); + + curl_close($ch); + + if ($real_url) { + /* remove the rest of it */ + + $query = parse_url($real_url, PHP_URL_QUERY); + + if ($query && strpos($query, "utm_source") !== FALSE) { + $args = array(); + parse_str($query, $args); + + foreach (array("utm_source", "utm_medium", "utm_campaign") as $param) { + if (isset($args[$param])) unset($args[$param]); + } + + $new_query = http_build_query($args); + + if ($new_query != $query) { + $real_url = str_replace("?$query", "?$new_query", $real_url); + } + } + + $real_url = preg_replace("/\?$/", "", $real_url); + + $article["plugin_data"] = "unburn,$owner_uid:" . $article["plugin_data"]; + $article["link"] = $real_url; + } + } + + return $article; + } + + function geturl($url){ + + (function_exists('curl_init')) ? '' : die('cURL Must be installed for geturl function to work. Ask your host to enable it or uncomment extension=php_curl.dll in php.ini'); + + $curl = curl_init(); + $header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,"; + $header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"; + $header[] = "Cache-Control: max-age=0"; + $header[] = "Connection: keep-alive"; + $header[] = "Keep-Alive: 300"; + $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"; + $header[] = "Accept-Language: en-us,en;q=0.5"; + $header[] = "Pragma: "; + + curl_setopt($curl, CURLOPT_URL, $url); + curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0 Firefox/5.0'); + curl_setopt($curl, CURLOPT_HTTPHEADER, $header); + curl_setopt($curl, CURLOPT_HEADER, true); + curl_setopt($curl, CURLOPT_REFERER, $url); + curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate'); + curl_setopt($curl, CURLOPT_AUTOREFERER, true); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + //curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); //CURLOPT_FOLLOWLOCATION Disabled... + curl_setopt($curl, CURLOPT_TIMEOUT, 60); + + $html = curl_exec($curl); + + $status = curl_getinfo($curl); + curl_close($curl); + + if($status['http_code']!=200){ + if($status['http_code'] == 301 || $status['http_code'] == 302) { + list($header) = explode("\r\n\r\n", $html, 2); + $matches = array(); + preg_match("/(Location:|URI:)[^(\n)]*/", $header, $matches); + $url = trim(str_replace($matches[1],"",$matches[0])); + $url_parsed = parse_url($url); + return (isset($url_parsed))? geturl($url):''; + } + $oline=''; + foreach($status as $key=>$eline){$oline.='['.$key.']'.$eline.' ';} + $line =$oline." \r\n ".$url."\r\n-----------------\r\n"; + $handle = @fopen('./curl.error.log', 'a'); + fwrite($handle, $line); + return FALSE; + } + return $url; + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/af_youtube_embed/init.php b/plugins/af_youtube_embed/init.php new file mode 100644 index 0000000000..7820113409 --- /dev/null +++ b/plugins/af_youtube_embed/init.php @@ -0,0 +1,40 @@ +host = $host; + + $host->add_hook($host::HOOK_RENDER_ENCLOSURE, $this); + } + + function hook_render_enclosure($entry, $hide_images) { + + $matches = array(); + + if (preg_match("/\/\/www\.youtube\.com\/v\/([\w-]+)/", $entry["url"], $matches) || + preg_match("/\/\/www\.youtube\.com\/watch?v=([\w-]+)/", $entry["url"], $matches) || + preg_match("/\/\/youtu.be\/([\w-]+)/", $entry["url"], $matches)) { + + $vid_id = $matches[1]; + + return ""; + + } + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/af_zz_imgsetsizes/init.php b/plugins/af_zz_imgsetsizes/init.php new file mode 100644 index 0000000000..d71ec096e2 --- /dev/null +++ b/plugins/af_zz_imgsetsizes/init.php @@ -0,0 +1,88 @@ +host = $host; + + if (function_exists("curl_init") && function_exists("getimagesize")) { + $host->add_hook($host::HOOK_ARTICLE_FILTER, $this); + } + } + + function hook_article_filter($article) { + + $owner_uid = $article["owner_uid"]; + + $charset_hack = ' + + '; + + $doc = new DOMDocument(); + $doc->loadHTML($charset_hack . $article["content"]); + + $found = false; + + if ($doc) { + $xpath = new DOMXpath($doc); + + $images = $xpath->query('(//img[@src])'); + + foreach ($images as $img) { + $src = $img->getAttribute("src"); + + $ch = curl_init($src); + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_BINARYTRANSFER,1); + curl_setopt($ch, CURLOPT_RANGE, "0-32768"); + + @$result = curl_exec($ch); + $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + + if ($result && ($http_code == 200 || $http_code == 206)) { + $filename = tempnam(sys_get_temp_dir(), "ttsizecheck"); + + if ($filename) { + $fh = fopen($filename, "w"); + if ($fh) { + fwrite($fh, $result); + fclose($fh); + + @$info = getimagesize($filename); + + if ($info && $info[0] > 0 && $info[1] > 0) { + $img->setAttribute("width", $info[0]); + $img->setAttribute("height", $info[1]); + $found = true; + } + + unlink($filename); + } + } + } + } + + if ($found) { + $doc->removeChild($doc->firstChild); //remove doctype + $article["content"] = $doc->saveHTML(); + } + } + + return $article; + + } + + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/auth_internal/init.php b/plugins/auth_internal/init.php new file mode 100644 index 0000000000..dc49229f62 --- /dev/null +++ b/plugins/auth_internal/init.php @@ -0,0 +1,199 @@ +host = $host; + + $host->add_hook($host::HOOK_AUTH_USER, $this); + } + + function authenticate($login, $password) { + + $pwd_hash1 = encrypt_password($password); + $pwd_hash2 = encrypt_password($password, $login); + $login = db_escape_string($login); + $otp = db_escape_string($_REQUEST["otp"]); + + if (get_schema_version() > 96) { + if (!defined('AUTH_DISABLE_OTP') || !AUTH_DISABLE_OTP) { + + $result = db_query("SELECT otp_enabled,salt FROM ttrss_users WHERE + login = '$login'"); + + if (db_num_rows($result) > 0) { + + require_once "lib/otphp/vendor/base32.php"; + require_once "lib/otphp/lib/otp.php"; + require_once "lib/otphp/lib/totp.php"; + + $base32 = new Base32(); + + $otp_enabled = sql_bool_to_bool(db_fetch_result($result, 0, "otp_enabled")); + $secret = $base32->encode(sha1(db_fetch_result($result, 0, "salt"))); + + $topt = new \OTPHP\TOTP($secret); + $otp_check = $topt->now(); + + if ($otp_enabled) { + if ($otp) { + if ($otp != $otp_check) { + return false; + } + } else { + $return = urlencode($_REQUEST["return"]); + ?> + Tiny Tiny RSS + +
      +
      + + + + "> + "> + "> + + + + +
      + + 87) { + + $result = db_query("SELECT salt FROM ttrss_users WHERE + login = '$login'"); + + if (db_num_rows($result) != 1) { + return false; + } + + $salt = db_fetch_result($result, 0, "salt"); + + if ($salt == "") { + + $query = "SELECT id + FROM ttrss_users WHERE + login = '$login' AND (pwd_hash = '$pwd_hash1' OR + pwd_hash = '$pwd_hash2')"; + + // verify and upgrade password to new salt base + + $result = db_query($query); + + if (db_num_rows($result) == 1) { + // upgrade password to MODE2 + + $salt = substr(bin2hex(get_random_bytes(125)), 0, 250); + $pwd_hash = encrypt_password($password, $salt, true); + + db_query("UPDATE ttrss_users SET + pwd_hash = '$pwd_hash', salt = '$salt' WHERE login = '$login'"); + + $query = "SELECT id + FROM ttrss_users WHERE + login = '$login' AND pwd_hash = '$pwd_hash'"; + + } else { + return false; + } + + } else { + + $pwd_hash = encrypt_password($password, $salt, true); + + $query = "SELECT id + FROM ttrss_users WHERE + login = '$login' AND pwd_hash = '$pwd_hash'"; + + } + + } else { + $query = "SELECT id + FROM ttrss_users WHERE + login = '$login' AND (pwd_hash = '$pwd_hash1' OR + pwd_hash = '$pwd_hash2')"; + } + + $result = db_query($query); + + if (db_num_rows($result) == 1) { + return db_fetch_result($result, 0, "id"); + } + + return false; + } + + function check_password($owner_uid, $password) { + $owner_uid = db_escape_string($owner_uid); + + $result = db_query("SELECT salt,login FROM ttrss_users WHERE + id = '$owner_uid'"); + + $salt = db_fetch_result($result, 0, "salt"); + $login = db_fetch_result($result, 0, "login"); + + if (!$salt) { + $password_hash1 = encrypt_password($password); + $password_hash2 = encrypt_password($password, $login); + + $query = "SELECT id FROM ttrss_users WHERE + id = '$owner_uid' AND (pwd_hash = '$password_hash1' OR + pwd_hash = '$password_hash2')"; + + } else { + $password_hash = encrypt_password($password, $salt, true); + + $query = "SELECT id FROM ttrss_users WHERE + id = '$owner_uid' AND pwd_hash = '$password_hash'"; + } + + $result = db_query($query); + + return db_num_rows($result) != 0; + } + + function change_password($owner_uid, $old_password, $new_password) { + $owner_uid = db_escape_string($owner_uid); + + if ($this->check_password($owner_uid, $old_password)) { + + $new_salt = substr(bin2hex(get_random_bytes(125)), 0, 250); + $new_password_hash = encrypt_password($new_password, $new_salt, true); + + db_query("UPDATE ttrss_users SET + pwd_hash = '$new_password_hash', salt = '$new_salt', otp_enabled = false + WHERE id = '$owner_uid'"); + + $_SESSION["pwd_hash"] = $new_password_hash; + + return __("Password has been changed."); + } else { + return "ERROR: ".__('Old password is incorrect.'); + } + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/auth_remote/init.php b/plugins/auth_remote/init.php new file mode 100644 index 0000000000..2ec2c87b23 --- /dev/null +++ b/plugins/auth_remote/init.php @@ -0,0 +1,87 @@ +host = $host; + $this->base = new Auth_Base(); + + $host->add_hook($host::HOOK_AUTH_USER, $this); + } + + function get_login_by_ssl_certificate() { + $cert_serial = db_escape_string(get_ssl_certificate_id()); + + if ($cert_serial) { + $result = db_query("SELECT login FROM ttrss_user_prefs, ttrss_users + WHERE pref_name = 'SSL_CERT_SERIAL' AND value = '$cert_serial' AND + owner_uid = ttrss_users.id"); + + if (db_num_rows($result) != 0) { + return db_escape_string(db_fetch_result($result, 0, "login")); + } + } + + return ""; + } + + + function authenticate($login, $password) { + $try_login = db_escape_string($_SERVER["REMOTE_USER"]); + + // php-cgi + if (!$try_login) $try_login = db_escape_string($_SERVER["REDIRECT_REMOTE_USER"]); + + if (!$try_login) $try_login = $this->get_login_by_ssl_certificate(); +# if (!$try_login) $try_login = "test_qqq"; + + if ($try_login) { + $user_id = $this->base->auto_create_user($try_login, $password); + + if ($user_id) { + $_SESSION["fake_login"] = $try_login; + $_SESSION["fake_password"] = "******"; + $_SESSION["hide_hello"] = true; + $_SESSION["hide_logout"] = true; + + // LemonLDAP can send user informations via HTTP HEADER + if (defined('AUTH_AUTO_CREATE') && AUTH_AUTO_CREATE){ + // update user name + $fullname = $_SERVER['HTTP_USER_NAME'] ? $_SERVER['HTTP_USER_NAME'] : $_SERVER['AUTHENTICATE_CN']; + if ($fullname){ + $fullname = db_escape_string($fullname); + db_query("UPDATE ttrss_users SET full_name = '$fullname' WHERE id = " . + $user_id); + } + // update user mail + $email = $_SERVER['HTTP_USER_MAIL'] ? $_SERVER['HTTP_USER_MAIL'] : $_SERVER['AUTHENTICATE_MAIL']; + if ($email){ + $email = db_escape_string($email); + db_query("UPDATE ttrss_users SET email = '$email' WHERE id = " . + $user_id); + } + } + + return $user_id; + } + } + + return false; + } + + function api_version() { + return 2; + } + +} + +?> diff --git a/plugins/auto_assign_labels/init.php b/plugins/auto_assign_labels/init.php new file mode 100644 index 0000000000..36f7c32676 --- /dev/null +++ b/plugins/auto_assign_labels/init.php @@ -0,0 +1,57 @@ +host = $host; + + $host->add_hook($host::HOOK_ARTICLE_FILTER, $this); + } + + function get_all_labels_filter_format($owner_uid) { + $rv = array(); + + $result = db_query("SELECT id, fg_color, bg_color, caption FROM ttrss_labels2 WHERE owner_uid = " . $owner_uid); + + while ($line = db_fetch_assoc($result)) { + array_push($rv, array(label_to_feed_id($line["id"]), + $line["caption"], $line["fg_color"], $line["bg_color"])); + } + + return $rv; + } + + + function hook_article_filter($article) { + + $owner_uid = $article["owner_uid"]; + $labels = $this->get_all_labels_filter_format($owner_uid); + $tags_str = join(",", $article["tags"]); + + foreach ($labels as $label) { + $caption = preg_quote($label[1]); + + if ($caption && preg_match("/\b$caption\b/i", "$tags_str " . strip_tags($article["content"]) . " " . $article["title"])) { + + # defined in rssfuncs.php + if (!labels_contains_caption($article["labels"], $caption)) { + array_push($article["labels"], $label); + } + } + } + + return $article; + } + + function api_version() { + return 2; + } +} +?> diff --git a/plugins/bookmarklets/init.php b/plugins/bookmarklets/init.php new file mode 100644 index 0000000000..4c4d95d498 --- /dev/null +++ b/plugins/bookmarklets/init.php @@ -0,0 +1,54 @@ +host = $host; + + $host->add_hook($host::HOOK_PREFS_TAB, $this); + } + + function hook_prefs_tab($args) { + if ($args == "prefFeeds") { + + print "
      "; + + print_notice(__("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.")); + + $bm_subscribe_url = str_replace('%s', '', add_feed_url()); + + $confirm_str = str_replace("'", "\'", __('Subscribe to %s in Tiny Tiny RSS?')); + + $bm_url = htmlspecialchars("javascript:{if(confirm('$confirm_str'.replace('%s',window.location.href)))window.location.href='$bm_subscribe_url'+window.location.href}"); + + print "

      "; + print "" . __('Subscribe in Tiny Tiny RSS'). ""; + print "

      "; + + print_notice(__("Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS")); + + print "

      "; + + $bm_url = htmlspecialchars("javascript:(function(){var d=document,w=window,e=w.getSelection,k=d.getSelection,x=d.selection,s=(e?e():(k)?k():(x?x.createRange().text:0)),f='".SELF_URL_PATH."/public.php?op=sharepopup',l=d.location,e=encodeURIComponent,g=f+'&title='+((e(s))?e(s):e(document.title))+'&url='+e(l.href);function a(){if(!w.open(g,'t','toolbar=0,resizable=0,scrollbars=1,status=1,width=500,height=250')){l.href=g;}}a();})()"); + + print "" . __('Share with Tiny Tiny RSS'). ""; + + print "

      "; + + print "
      "; #pane + + } + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/cache_starred_images/init.php b/plugins/cache_starred_images/init.php new file mode 100644 index 0000000000..f1341a3507 --- /dev/null +++ b/plugins/cache_starred_images/init.php @@ -0,0 +1,211 @@ +host = $host; + + $this->cache_dir = CACHE_DIR . "/starred-images/"; + + if (!is_dir($this->cache_dir)) { + mkdir($this->cache_dir); + } + + if (is_dir($this->cache_dir)) { + + if (!is_writable($this->cache_dir)) + chmod($this->cache_dir, 0777); + + if (is_writable($this->cache_dir)) { + $host->add_hook($host::HOOK_UPDATE_TASK, $this); + $host->add_hook($host::HOOK_HOUSE_KEEPING, $this); + $host->add_hook($host::HOOK_SANITIZE, $this); + $host->add_handler("public", "cache_starred_images_getimage", $this); + + } else { + user_error("Starred cache directory is not writable.", E_USER_WARNING); + } + + } else { + user_error("Unable to create starred cache directory.", E_USER_WARNING); + } + } + + function cache_starred_images_getimage() { + ob_end_clean(); + + $hash = basename($_REQUEST["hash"]); + + if ($hash) { + + $filename = $this->cache_dir . "/" . $hash; + $is_video = strpos($filename, ".mp4") !== FALSE; + + if (file_exists($filename)) { + /* See if we can use X-Sendfile */ + $xsendfile = false; + if (function_exists('apache_get_modules') && + array_search('mod_xsendfile', apache_get_modules())) + $xsendfile = true; + + if ($xsendfile) { + header("X-Sendfile: $filename"); + header("Content-type: application/octet-stream"); + header('Content-Disposition: attachment; filename="' . basename($filename) . '"'); + } else { + header("Content-type: " . ($is_video ? "video/mp4" : "image/png")); + $stamp = gmdate("D, d M Y H:i:s", filemtime($filename)). " GMT"; + header("Last-Modified: $stamp", true); + readfile($filename); + } + } else { + header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); + echo "File not found."; + } + } + } + + function hook_house_keeping() { + $files = glob($this->cache_dir . "/*.{png,mp4}", GLOB_BRACE); + + $last_article_id = 0; + $article_exists = 1; + + foreach ($files as $file) { + list ($article_id, $hash) = explode("-", basename($file)); + + if ($article_id != $last_article_id) { + $last_article_id = $article_id; + $article_id = db_escape_string($article_id); + + $result = db_query("SELECT id FROM ttrss_entries WHERE id = " . $article_id); + + $article_exists = db_num_rows($result) > 0; + } + + if (!$article_exists) { + unlink($file); + } + } + } + + function hook_sanitize($doc, $site_url, $allowed_elements, $disallowed_attributes, $article_id) { + $xpath = new DOMXpath($doc); + + if ($article_id) { + $entries = $xpath->query('(//img[@src])|(//video/source[@src])'); + + foreach ($entries as $entry) { + if ($entry->hasAttribute('src')) { + $src = rewrite_relative_url($site_url, $entry->getAttribute('src')); + + $extension = $entry->tagName == 'source' ? '.mp4' : '.png'; + $local_filename = $this->cache_dir . $article_id . "-" . sha1($src) . $extension; + + if (file_exists($local_filename)) { + $entry->setAttribute("src", get_self_url_prefix() . + "/public.php?op=cache_starred_images_getimage&method=image&hash=" . + $article_id . "-" . sha1($src) . $extension); + } + + } + } + } + + return $doc; + } + + function hook_update_task() { + $result = db_query("SELECT content, ttrss_user_entries.owner_uid, link, site_url, ttrss_entries.id, plugin_data + FROM ttrss_entries, ttrss_user_entries LEFT JOIN ttrss_feeds ON + (ttrss_user_entries.feed_id = ttrss_feeds.id) + WHERE ref_id = ttrss_entries.id AND + marked = true AND + (UPPER(content) LIKE '%cache_article_images($line["content"], $line["site_url"], $line["owner_uid"], $line["id"]); + + if ($success) { + $plugin_data = db_escape_string("starred_cache_images,${line['owner_uid']}:" . $line["plugin_data"]); + + db_query("UPDATE ttrss_entries SET plugin_data = '$plugin_data' WHERE id = " . $line["id"]); + } + } + } + } + + function cache_article_images($content, $site_url, $owner_uid, $article_id) { + libxml_use_internal_errors(true); + + $charset_hack = ' + + '; + + $doc = new DOMDocument(); + $doc->loadHTML($charset_hack . $content); + $xpath = new DOMXPath($doc); + + $entries = $xpath->query('(//img[@src])|(//video/source[@src])'); + + $success = false; + $has_images = false; + + foreach ($entries as $entry) { + + if ($entry->hasAttribute('src')) { + $has_images = true; + $src = rewrite_relative_url($site_url, $entry->getAttribute('src')); + + $extension = $entry->tagName == 'source' ? '.mp4' : '.png'; + + $local_filename = $this->cache_dir . $article_id . "-" . sha1($src) . $extension; + + //_debug("cache_images: downloading: $src to $local_filename"); + + if (!file_exists($local_filename)) { + $file_content = fetch_file_contents($src); + + if ($file_content && strlen($file_content) > 0) { + file_put_contents($local_filename, $file_content); + $success = true; + } + } else { + $success = true; + } + } + } + + return $success || !$has_images; + } + + function api_version() { + return 2; + } +} +?> diff --git a/plugins/close_button/button.png b/plugins/close_button/button.png new file mode 100644 index 0000000000..1514d51a3c Binary files /dev/null and b/plugins/close_button/button.png differ diff --git a/plugins/close_button/init.php b/plugins/close_button/init.php new file mode 100644 index 0000000000..7911642c31 --- /dev/null +++ b/plugins/close_button/init.php @@ -0,0 +1,33 @@ +host = $host; + + $host->add_hook($host::HOOK_ARTICLE_BUTTON, $this); + } + + function about() { + return array(1.0, + "Adds a button to close article panel", + "fox"); + } + + function hook_article_button($line) { + if (!get_pref("COMBINED_DISPLAY_MODE")) { + $rv = ""; + } + + return $rv; + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/embed_original/button.png b/plugins/embed_original/button.png new file mode 100644 index 0000000000..e861201d52 Binary files /dev/null and b/plugins/embed_original/button.png differ diff --git a/plugins/embed_original/init.css b/plugins/embed_original/init.css new file mode 100644 index 0000000000..5fb7e012ec --- /dev/null +++ b/plugins/embed_original/init.css @@ -0,0 +1,13 @@ +div.cdmContentInner iframe.embeddedContent { + overflow : auto; + width : 100%; + height : 600px; + border-width : 0px; +} + +div.postContent iframe.embeddedContent { + overflow : auto; + width : 100%; + height : 100%; + border-width : 0px; +} diff --git a/plugins/embed_original/init.js b/plugins/embed_original/init.js new file mode 100644 index 0000000000..17090653d4 --- /dev/null +++ b/plugins/embed_original/init.js @@ -0,0 +1,68 @@ +function embedOriginalArticle(id) { + try { + var hasSandbox = "sandbox" in document.createElement("iframe"); + + if (!hasSandbox) { + alert(__("Sorry, your browser does not support sandboxed iframes.")); + return; + } + + var query = "op=pluginhandler&plugin=embed_original&method=getUrl&id=" + + param_escape(id); + + var c = false; + + if (isCdmMode()) { + c = $$("div#RROW-" + id + " div[class=cdmContentInner]")[0]; + } else if (id == getActiveArticleId()) { + c = $$("div[class=postContent]")[0]; + } + + if (c) { + var iframe = c.parentNode.getElementsByClassName("embeddedContent")[0]; + + if (iframe) { + Element.show(c); + c.parentNode.removeChild(iframe); + + if (isCdmMode()) { + cdmScrollToArticleId(id, true); + } + + return; + } + } + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + var ti = JSON.parse(transport.responseText); + + if (ti) { + + var iframe = new Element("iframe", { + class: "embeddedContent", + src: ti.url, + width: (c.parentNode.offsetWidth-5)+'px', + height: (c.parentNode.parentNode.offsetHeight-c.parentNode.firstChild.offsetHeight-5)+'px', + style: "overflow: auto; border: none; min-height: "+(document.body.clientHeight/2)+"px;", + sandbox: 'allow-scripts', + }); + + if (c) { + Element.hide(c); + c.parentNode.insertBefore(iframe,c); + + if (isCdmMode()) { + cdmScrollToArticleId(id, true); + } + } + } + + } }); + + + } catch (e) { + exception_error("embedOriginalArticle", e); + } +} diff --git a/plugins/embed_original/init.php b/plugins/embed_original/init.php new file mode 100644 index 0000000000..df803d38b6 --- /dev/null +++ b/plugins/embed_original/init.php @@ -0,0 +1,58 @@ +host = $host; + + $host->add_hook($host::HOOK_ARTICLE_BUTTON, $this); + } + + function about() { + return array(1.0, + "Try to display original article content inside tt-rss", + "fox"); + } + + function get_js() { + return file_get_contents(dirname(__FILE__) . "/init.js"); + } + + function get_css() { + return file_get_contents(dirname(__FILE__) . "/init.css"); + } + + function hook_article_button($line) { + $id = $line["id"]; + + $rv = ""; + + return $rv; + } + + function getUrl() { + $id = db_escape_string($_REQUEST['id']); + + $result = db_query("SELECT link + FROM ttrss_entries, ttrss_user_entries + WHERE id = '$id' AND ref_id = id AND owner_uid = " .$_SESSION['uid']); + + $url = ""; + + if (db_num_rows($result) != 0) { + $url = db_fetch_result($result, 0, "link"); + + } + + print json_encode(array("url" => $url, "id" => $id)); + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/googlereaderimport/init.js b/plugins/googlereaderimport/init.js new file mode 100644 index 0000000000..043952c75c --- /dev/null +++ b/plugins/googlereaderimport/init.js @@ -0,0 +1,53 @@ +function starredImportComplete(iframe) { + try { + if (!iframe.contentDocument.body.innerHTML) return false; + + Element.show(iframe); + + notify(''); + + if (dijit.byId('starredImportDlg')) + dijit.byId('starredImportDlg').destroyRecursive(); + + var content = iframe.contentDocument.body.innerHTML; + + if (content) Element.hide(iframe); + + dialog = new dijit.Dialog({ + id: "starredImportDlg", + title: __("Google Reader Import"), + style: "width: 600px", + onCancel: function() { + Element.hide(iframe); + this.hide(); + }, + execute: function() { + Element.hide(iframe); + this.hide(); + }, + content: content}); + + dialog.show(); + + } catch (e) { + exception_error("starredImportComplete", e); + } +} + +function starredImport() { + + var starred_file = $("starred_file"); + + if (starred_file.value.length == 0) { + alert(__("Please choose a file first.")); + return false; + } else { + notify_progress("Importing, please wait...", true); + + Element.show("starred_upload_iframe"); + + return true; + } +} + + diff --git a/plugins/googlereaderimport/init.php b/plugins/googlereaderimport/init.php new file mode 100644 index 0000000000..dcb335a0da --- /dev/null +++ b/plugins/googlereaderimport/init.php @@ -0,0 +1,384 @@ +host = $host; + + $host->add_command("greader-import", + "import data in Google Reader JSON format", + $this, ":", "FILE"); + + $host->add_hook($host::HOOK_PREFS_TAB, $this); + } + + function greader_import($args) { + $file = $args['greader_import']; + + if (!file_exists($file)) { + _debug("file not found: $file"); + return; + } + + _debug("please enter your username:"); + + $username = db_escape_string(trim(read_stdin())); + + _debug("looking up user: $username..."); + + $result = db_query("SELECT id FROM ttrss_users + WHERE login = '$username'"); + + if (db_num_rows($result) == 0) { + _debug("user not found."); + return; + } + + $owner_uid = db_fetch_result($result, 0, "id"); + + _debug("processing: $file (owner_uid: $owner_uid)"); + + $this->import($file, $owner_uid); + } + + function get_prefs_js() { + return file_get_contents(dirname(__FILE__) . "/init.js"); + } + + function import($file = false, $owner_uid = 0) { + + purge_orphans(); + + if (!$file) { + header("Content-Type: text/html"); + + $owner_uid = $_SESSION["uid"]; + + if ($_FILES['starred_file']['error'] != 0) { + print_error(T_sprintf("Upload failed with error code %d", + $_FILES['starred_file']['error'])); + return; + } + + $tmp_file = false; + + if (is_uploaded_file($_FILES['starred_file']['tmp_name'])) { + $tmp_file = tempnam(CACHE_DIR . '/upload', 'starred'); + + $result = move_uploaded_file($_FILES['starred_file']['tmp_name'], + $tmp_file); + + if (!$result) { + print_error(__("Unable to move uploaded file.")); + return; + } + } else { + print_error(__('Error: please upload OPML file.')); + return; + } + + if (is_file($tmp_file)) { + $doc = json_decode(file_get_contents($tmp_file), true); + unlink($tmp_file); + } else { + print_error(__('No file uploaded.')); + return; + } + } else { + $doc = json_decode(file_get_contents($file), true); + } + + if ($file) { + $sql_set_marked = strtolower(basename($file)) == 'starred.json' ? 'true' : 'false'; + _debug("will set articles as starred: $sql_set_marked"); + + } else { + $sql_set_marked = strtolower($_FILES['starred_file']['name']) == 'starred.json' ? 'true' : 'false'; + } + + if ($doc) { + if (isset($doc['items'])) { + $processed = 0; + + foreach ($doc['items'] as $item) { +// print_r($item); + + $guid = db_escape_string(mb_substr($item['id'], 0, 250)); + $title = db_escape_string($item['title']); + $updated = date('Y-m-d h:i:s', $item['updated']); + $last_marked = date('Y-m-d h:i:s', mb_substr($item['crawlTimeMsec'], 0, 10)); + $link = ''; + $content = ''; + $author = db_escape_string($item['author']); + $tags = array(); + $orig_feed_data = array(); + + if (is_array($item['alternate'])) { + foreach ($item['alternate'] as $alt) { + if (isset($alt['type']) && $alt['type'] == 'text/html') { + $link = db_escape_string($alt['href']); + } + } + } + + if (is_array($item['summary'])) { + $content = db_escape_string( + $item['summary']['content'], false); + } + + if (is_array($item['content'])) { + $content = db_escape_string( + $item['content']['content'], false); + } + + if (is_array($item['categories'])) { + foreach ($item['categories'] as $cat) { + if (strstr($cat, "com.google/") === FALSE) { + array_push($tags, sanitize_tag($cat)); + } + } + } + + if (is_array($item['origin'])) { + if (strpos($item['origin']['streamId'], 'feed/') === 0) { + + $orig_feed_data['feed_url'] = db_escape_string( + mb_substr(preg_replace("/^feed\//", + "", $item['origin']['streamId']), 0, 200)); + + $orig_feed_data['title'] = db_escape_string( + mb_substr($item['origin']['title'], 0, 200)); + + $orig_feed_data['site_url'] = db_escape_string( + mb_substr($item['origin']['htmlUrl'], 0, 200)); + } + } + + $processed++; + + $imported += (int) $this->create_article($owner_uid, $guid, $title, + $link, $updated, $content, $author, $sql_set_marked, $tags, + $orig_feed_data, $last_marked); + + if ($file && $processed % 25 == 0) { + _debug("processed $processed articles..."); + } + } + + if ($file) { + _debug(sprintf("All done. %d of %d articles imported.", $imported, $processed)); + } else { + print "

      " . T_sprintf("All done. %d out of %d articles imported.", $imported, $processed) . "

      "; + } + + } else { + print_error(__('The document has incorrect format.')); + } + + } else { + print_error(__('Error while parsing document.')); + } + + if (!$file) { + print "
      "; + print ""; + print "
      "; + } + } + + // expects ESCAPED data + private function create_article($owner_uid, $guid, $title, $link, $updated, $content, $author, $marked, $tags, $orig_feed_data, $last_marked) { + + if (!$guid) $guid = sha1($link); + + $create_archived_feeds = true; + + $guid = "$owner_uid,$guid"; + + $content_hash = sha1($content); + + if (filter_var(FILTER_VALIDATE_URL) === FALSE) return false; + + db_query("BEGIN"); + + $feed_id = 'NULL'; + + // let's check for archived feed entry + + $feed_inserted = false; + + // before dealing with archived feeds we must check ttrss_feeds to maintain id consistency + + if ($orig_feed_data['feed_url'] && $create_archived_feeds) { + $result = db_query( + "SELECT id FROM ttrss_feeds WHERE feed_url = '".$orig_feed_data['feed_url']."' + AND owner_uid = $owner_uid"); + + if (db_num_rows($result) != 0) { + $feed_id = db_fetch_result($result, 0, "id"); + } else { + // let's insert it + + if (!$orig_feed_data['title']) $orig_feed_data['title'] = '[Unknown]'; + + $result = db_query( + "INSERT INTO ttrss_feeds + (owner_uid,feed_url,site_url,title,cat_id,auth_login,auth_pass,update_method) + VALUES ($owner_uid, + '".$orig_feed_data['feed_url']."', + '".$orig_feed_data['site_url']."', + '".$orig_feed_data['title']."', + NULL, '', '', 0)"); + + $result = db_query( + "SELECT id FROM ttrss_feeds WHERE feed_url = '".$orig_feed_data['feed_url']."' + AND owner_uid = $owner_uid"); + + if (db_num_rows($result) != 0) { + $feed_id = db_fetch_result($result, 0, "id"); + $feed_inserted = true; + } + } + } + + if ($feed_id && $feed_id != 'NULL') { + // locate archived entry to file entries in, we don't want to file them in actual feeds because of purging + // maybe file marked in real feeds because eh + + $result = db_query("SELECT id FROM ttrss_archived_feeds WHERE + feed_url = '".$orig_feed_data['feed_url']."' AND owner_uid = $owner_uid"); + + if (db_num_rows($result) != 0) { + $orig_feed_id = db_fetch_result($result, 0, "id"); + } else { + db_query("INSERT INTO ttrss_archived_feeds + (id, owner_uid, title, feed_url, site_url) + SELECT id, owner_uid, title, feed_url, site_url from ttrss_feeds + WHERE id = '$feed_id'"); + + $result = db_query("SELECT id FROM ttrss_archived_feeds WHERE + feed_url = '".$orig_feed_data['feed_url']."' AND owner_uid = $owner_uid"); + + if (db_num_rows($result) != 0) { + $orig_feed_id = db_fetch_result($result, 0, "id"); + } + } + } + + // delete temporarily inserted feed + if ($feed_id && $feed_inserted) { + db_query("DELETE FROM ttrss_feeds WHERE id = $feed_id"); + } + + if (!$orig_feed_id) $orig_feed_id = 'NULL'; + + $result = db_query("SELECT id FROM ttrss_entries, ttrss_user_entries WHERE + guid = '$guid' AND ref_id = id AND owner_uid = '$owner_uid' LIMIT 1"); + + if (db_num_rows($result) == 0) { + $result = db_query("INSERT INTO ttrss_entries + (title, guid, link, updated, content, content_hash, date_entered, date_updated, author) + VALUES + ('$title', '$guid', '$link', '$updated', '$content', '$content_hash', NOW(), NOW(), '$author')"); + + $result = db_query("SELECT id FROM ttrss_entries WHERE guid = '$guid'"); + + if (db_num_rows($result) != 0) { + $ref_id = db_fetch_result($result, 0, "id"); + + db_query("INSERT INTO ttrss_user_entries + (ref_id, uuid, feed_id, orig_feed_id, owner_uid, marked, tag_cache, label_cache, + last_read, note, unread, last_marked) + VALUES + ('$ref_id', '', NULL, $orig_feed_id, $owner_uid, $marked, '', '', '$last_marked', '', false, '$last_marked')"); + + $result = db_query("SELECT int_id FROM ttrss_user_entries, ttrss_entries + WHERE owner_uid = $owner_uid AND ref_id = id AND ref_id = $ref_id"); + + if (db_num_rows($result) != 0 && is_array($tags)) { + + $entry_int_id = db_fetch_result($result, 0, "int_id"); + $tags_to_cache = array(); + + foreach ($tags as $tag) { + + $tag = db_escape_string(sanitize_tag($tag)); + + if (!tag_is_valid($tag)) continue; + + $result = db_query("SELECT id FROM ttrss_tags + WHERE tag_name = '$tag' AND post_int_id = '$entry_int_id' AND + owner_uid = '$owner_uid' LIMIT 1"); + + if ($result && db_num_rows($result) == 0) { + db_query("INSERT INTO ttrss_tags + (owner_uid,tag_name,post_int_id) + VALUES ('$owner_uid','$tag', '$entry_int_id')"); + } + + array_push($tags_to_cache, $tag); + } + + /* update the cache */ + + $tags_to_cache = array_unique($tags_to_cache); + $tags_str = db_escape_string(join(",", $tags_to_cache)); + + db_query("UPDATE ttrss_user_entries + SET tag_cache = '$tags_str' WHERE ref_id = '$ref_id' + AND owner_uid = $owner_uid"); + } + + $rc = true; + } + } + + db_query("COMMIT"); + + return $rc; + } + + function hook_prefs_tab($args) { + if ($args != "prefFeeds") return; + + print "
      "; + + print_notice("Your imported articles will appear in Starred (in file is named starred.json) and Archived feeds."); + + print "

      ".__("Paste your starred.json or shared.json into the form below."). "

      "; + + print ""; + + print "
      +   + + + + "; + + print "
      "; + + print "
      "; #pane + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/googlereaderkeys/init.php b/plugins/googlereaderkeys/init.php new file mode 100644 index 0000000000..a8b7069db9 --- /dev/null +++ b/plugins/googlereaderkeys/init.php @@ -0,0 +1,41 @@ +host = $host; + + $host->add_hook($host::HOOK_HOTKEY_MAP, $this); + } + + function hook_hotkey_map($hotkeys) { + + $hotkeys["j"] = "next_article_noscroll"; + $hotkeys["k"] = "prev_article_noscroll"; + $hotkeys["*n"] = "next_feed"; + $hotkeys["*p"] = "prev_feed"; + $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"; + + return $hotkeys; + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/import_export/import_export.js b/plugins/import_export/import_export.js new file mode 100644 index 0000000000..780f6bfc7b --- /dev/null +++ b/plugins/import_export/import_export.js @@ -0,0 +1,123 @@ +function exportData() { + try { + + var query = "backend.php?op=pluginhandler&plugin=import_export&method=exportData"; + + if (dijit.byId("dataExportDlg")) + dijit.byId("dataExportDlg").destroyRecursive(); + + var exported = 0; + + dialog = new dijit.Dialog({ + id: "dataExportDlg", + title: __("Export Data"), + style: "width: 600px", + prepare: function() { + + notify_progress("Loading, please wait..."); + + new Ajax.Request("backend.php", { + parameters: "op=pluginhandler&plugin=import_export&method=exportrun&offset=" + exported, + onComplete: function(transport) { + try { + var rv = JSON.parse(transport.responseText); + + if (rv && rv.exported != undefined) { + if (rv.exported > 0) { + + exported += rv.exported; + + $("export_status_message").innerHTML = + " " + + "Exported %d articles, please wait...".replace("%d", + exported); + + setTimeout('dijit.byId("dataExportDlg").prepare()', 2000); + + } else { + + $("export_status_message").innerHTML = + ngettext("Finished, exported %d article. You can download the data here.", "Finished, exported %d articles. You can download the data here.", exported) + .replace("%d", exported) + .replace("%u", "backend.php?op=pluginhandler&plugin=import_export&subop=exportget"); + + exported = 0; + + } + + } else { + $("export_status_message").innerHTML = + "Error occured, could not export data."; + } + } catch (e) { + exception_error("exportData", e, transport.responseText); + } + + notify(''); + + } }); + + }, + execute: function() { + if (this.validate()) { + + + + } + }, + href: query}); + + dialog.show(); + + + } catch (e) { + exception_error("exportData", e); + } +} + +function dataImportComplete(iframe) { + try { + if (!iframe.contentDocument.body.innerHTML) return false; + + Element.hide(iframe); + + notify(''); + + if (dijit.byId('dataImportDlg')) + dijit.byId('dataImportDlg').destroyRecursive(); + + var content = iframe.contentDocument.body.innerHTML; + + dialog = new dijit.Dialog({ + id: "dataImportDlg", + title: __("Data Import"), + style: "width: 600px", + onCancel: function() { + + }, + content: content}); + + dialog.show(); + + } catch (e) { + exception_error("dataImportComplete", e); + } +} + +function importData() { + + var file = $("export_file"); + + if (file.value.length == 0) { + alert(__("Please choose the file first.")); + return false; + } else { + notify_progress("Importing, please wait...", true); + + Element.show("data_upload_iframe"); + + return true; + } +} + + diff --git a/plugins/import_export/init.php b/plugins/import_export/init.php new file mode 100644 index 0000000000..e61b62b675 --- /dev/null +++ b/plugins/import_export/init.php @@ -0,0 +1,467 @@ +host = $host; + + $host->add_hook($host::HOOK_PREFS_TAB, $this); + $host->add_command("xml-import", "import articles from XML", $this, ":", "FILE"); + } + + function about() { + return array(1.0, + "Imports and exports user data using neutral XML format", + "fox"); + } + + function xml_import($args) { + + $filename = $args['xml_import']; + + if (!is_file($filename)) { + print "error: input filename ($filename) doesn't exist.\n"; + return; + } + + _debug("please enter your username:"); + + $username = db_escape_string(trim(read_stdin())); + + _debug("importing $filename for user $username...\n"); + + $result = db_query("SELECT id FROM ttrss_users WHERE login = '$username'"); + + if (db_num_rows($result) == 0) { + print "error: could not find user $username.\n"; + return; + } + + $owner_uid = db_fetch_result($result, 0, "id"); + + $this->perform_data_import($filename, $owner_uid); + } + + function save() { + $example_value = db_escape_string($_POST["example_value"]); + + echo "Value set to $example_value (not really)"; + } + + function get_prefs_js() { + return file_get_contents(dirname(__FILE__) . "/import_export.js"); + } + + function hook_prefs_tab($args) { + if ($args != "prefFeeds") return; + + print "
      "; + + print_notice(__("You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version.")); + + print "

      "; + + print " "; + + print "


      "; + + print ""; + + print "
      +   + + + + "; + + print "
      "; + + print "

      "; + + print "
      "; # pane + } + + function csrf_ignore($method) { + return in_array($method, array("exportget")); + } + + function before($method) { + return $_SESSION["uid"] != false; + } + + function after() { + return true; + } + + function exportget() { + $exportname = CACHE_DIR . "/export/" . + sha1($_SESSION['uid'] . $_SESSION['login']) . ".xml"; + + if (file_exists($exportname)) { + header("Content-type: text/xml"); + + if (function_exists('gzencode')) { + header("Content-Disposition: attachment; filename=TinyTinyRSS_exported.xml.gz"); + echo gzencode(file_get_contents($exportname)); + } else { + header("Content-Disposition: attachment; filename=TinyTinyRSS_exported.xml"); + echo file_get_contents($exportname); + } + } else { + echo "File not found."; + } + } + + function exportrun() { + $offset = (int) db_escape_string($_REQUEST['offset']); + $exported = 0; + $limit = 250; + + if ($offset < 10000 && is_writable(CACHE_DIR . "/export")) { + $result = db_query("SELECT + ttrss_entries.guid, + ttrss_entries.title, + content, + marked, + published, + score, + note, + link, + tag_cache, + label_cache, + ttrss_feeds.title AS feed_title, + ttrss_feeds.feed_url AS feed_url, + ttrss_entries.updated + FROM + ttrss_user_entries LEFT JOIN ttrss_feeds ON (ttrss_feeds.id = feed_id), + ttrss_entries + WHERE + (marked = true OR feed_id IS NULL) AND + ref_id = ttrss_entries.id AND + ttrss_user_entries.owner_uid = " . $_SESSION['uid'] . " + ORDER BY ttrss_entries.id LIMIT $limit OFFSET $offset"); + + $exportname = sha1($_SESSION['uid'] . $_SESSION['login']); + + if ($offset == 0) { + $fp = fopen(CACHE_DIR . "/export/$exportname.xml", "w"); + fputs($fp, ""); + } else { + $fp = fopen(CACHE_DIR . "/export/$exportname.xml", "a"); + } + + if ($fp) { + + while ($line = db_fetch_assoc($result)) { + fputs($fp, "
      "); + + foreach ($line as $k => $v) { + $v = str_replace("]]>", "]]]]>", $v); + fputs($fp, "<$k>"); + } + + fputs($fp, "
      "); + } + + $exported = db_num_rows($result); + + if ($exported < $limit && $exported > 0) { + fputs($fp, "
      "); + } + + fclose($fp); + } + + } + + print json_encode(array("exported" => $exported)); + } + + function perform_data_import($filename, $owner_uid) { + + $num_imported = 0; + $num_processed = 0; + $num_feeds_created = 0; + + libxml_disable_entity_loader(false); + + $doc = @DOMDocument::load($filename); + + if (!$doc) { + $contents = file_get_contents($filename); + + if ($contents) { + $data = @gzuncompress($contents); + } + + if (!$data) { + $data = @gzdecode($contents); + } + + if ($data) + $doc = DOMDocument::loadXML($data); + } + + libxml_disable_entity_loader(true); + + if ($doc) { + + $xpath = new DOMXpath($doc); + + $container = $doc->firstChild; + + if ($container && $container->hasAttribute('schema-version')) { + $schema_version = $container->getAttribute('schema-version'); + + if ($schema_version != SCHEMA_VERSION) { + print "

      " .__("Could not import: incorrect schema version.") . "

      "; + return; + } + + } else { + print "

      " . __("Could not import: unrecognized document format.") . "

      "; + return; + } + + $articles = $xpath->query("//article"); + + foreach ($articles as $article_node) { + if ($article_node->childNodes) { + + $ref_id = 0; + + $article = array(); + + foreach ($article_node->childNodes as $child) { + if ($child->nodeName != 'label_cache') + $article[$child->nodeName] = db_escape_string($child->nodeValue); + else + $article[$child->nodeName] = $child->nodeValue; + } + + //print_r($article); + + if ($article['guid']) { + + ++$num_processed; + + //db_query("BEGIN"); + + //print 'GUID:' . $article['guid'] . "\n"; + + $result = db_query("SELECT id FROM ttrss_entries + WHERE guid = '".$article['guid']."'"); + + if (db_num_rows($result) == 0) { + + $result = db_query( + "INSERT INTO ttrss_entries + (title, + guid, + link, + updated, + content, + content_hash, + no_orig_date, + date_updated, + date_entered, + comments, + num_comments, + author) + VALUES + ('".$article['title']."', + '".$article['guid']."', + '".$article['link']."', + '".$article['updated']."', + '".$article['content']."', + '".sha1($article['content'])."', + false, + NOW(), + NOW(), + '', + '0', + '')"); + + $result = db_query("SELECT id FROM ttrss_entries + WHERE guid = '".$article['guid']."'"); + + if (db_num_rows($result) != 0) { + $ref_id = db_fetch_result($result, 0, "id"); + } + + } else { + $ref_id = db_fetch_result($result, 0, "id"); + } + + //print "Got ref ID: $ref_id\n"; + + if ($ref_id) { + + $feed_url = $article['feed_url']; + $feed_title = $article['feed_title']; + + $feed = 'NULL'; + + if ($feed_url && $feed_title) { + $result = db_query("SELECT id FROM ttrss_feeds + WHERE feed_url = '$feed_url' AND owner_uid = '$owner_uid'"); + + if (db_num_rows($result) != 0) { + $feed = db_fetch_result($result, 0, "id"); + } else { + // try autocreating feed in Uncategorized... + + $result = db_query("INSERT INTO ttrss_feeds (owner_uid, + feed_url, title) VALUES ($owner_uid, '$feed_url', '$feed_title')"); + + $result = db_query("SELECT id FROM ttrss_feeds + WHERE feed_url = '$feed_url' AND owner_uid = '$owner_uid'"); + + if (db_num_rows($result) != 0) { + ++$num_feeds_created; + + $feed = db_fetch_result($result, 0, "id"); + } + } + } + + if ($feed != 'NULL') + $feed_qpart = "feed_id = $feed"; + else + $feed_qpart = "feed_id IS NULL"; + + //print "$ref_id / $feed / " . $article['title'] . "\n"; + + $result = db_query("SELECT int_id FROM ttrss_user_entries + WHERE ref_id = '$ref_id' AND owner_uid = '$owner_uid' AND $feed_qpart"); + + if (db_num_rows($result) == 0) { + + $marked = bool_to_sql_bool(sql_bool_to_bool($article['marked'])); + $published = bool_to_sql_bool(sql_bool_to_bool($article['published'])); + $score = (int) $article['score']; + + $tag_cache = $article['tag_cache']; + $label_cache = db_escape_string($article['label_cache']); + $note = $article['note']; + + //print "Importing " . $article['title'] . "
      "; + + ++$num_imported; + + $result = db_query( + "INSERT INTO ttrss_user_entries + (ref_id, owner_uid, feed_id, unread, last_read, marked, + published, score, tag_cache, label_cache, uuid, note) + VALUES ($ref_id, $owner_uid, $feed, false, + NULL, $marked, $published, $score, '$tag_cache', + '$label_cache', '', '$note')"); + + $label_cache = json_decode($label_cache, true); + + if (is_array($label_cache) && $label_cache["no-labels"] != 1) { + foreach ($label_cache as $label) { + + label_create($label[1], + $label[2], $label[3], $owner_uid); + + label_add_article($ref_id, $label[1], $owner_uid); + + } + } + + //db_query("COMMIT"); + } + } + } + } + } + + print "

      " . + __("Finished: "). + vsprintf(_ngettext("%d article processed, ", "%d articles processed, ", $num_processed), $num_processed). + vsprintf(_ngettext("%d imported, ", "%d imported, ", $num_imported), $num_imported). + vsprintf(_ngettext("%d feed created.", "%d feeds created.", $num_feeds_created), $num_feeds_created). + "

      "; + + } else { + + print "

      " . __("Could not load XML document.") . "

      "; + + } + } + + function exportData() { + + print "

      You need to prepare exported data first by clicking the button below.

      "; + + print "
      "; + print ""; + + print ""; + + print "
      "; + + + } + + function dataImport() { + header("Content-Type: text/html"); # required for iframe + + print "
      "; + + if ($_FILES['export_file']['error'] != 0) { + print_error(T_sprintf("Upload failed with error code %d", + $_FILES['export_file']['error'])); + return; + } + + $tmp_file = false; + + if (is_uploaded_file($_FILES['export_file']['tmp_name'])) { + $tmp_file = tempnam(CACHE_DIR . '/upload', 'export'); + + $result = move_uploaded_file($_FILES['export_file']['tmp_name'], + $tmp_file); + + if (!$result) { + print_error(__("Unable to move uploaded file.")); + return; + } + } else { + print_error(__('Error: please upload OPML file.')); + return; + } + + if (is_file($tmp_file)) { + $this->perform_data_import($tmp_file, $_SESSION['uid']); + unlink($tmp_file); + } else { + print_error(__('No file uploaded.')); + return; + } + + print ""; + + print "
      "; + + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/index.html b/plugins/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/plugins/instances/init.php b/plugins/instances/init.php new file mode 100644 index 0000000000..b23f45a018 --- /dev/null +++ b/plugins/instances/init.php @@ -0,0 +1,452 @@ + "Connection failed", + 1 => "Success", + 2 => "Invalid object received", + 16 => "Access denied" ); + + function about() { + return array(1.0, + "Support for linking tt-rss instances together and sharing popular feeds.", + "fox", + true); + } + + function init($host) { + $this->host = $host; + + $host->add_hook($host::HOOK_PREFS_TABS, $this); + $host->add_handler("pref-instances", "*", $this); + $host->add_handler("public", "fbexport", $this); + $host->add_command("get-feeds", "receive popular feeds from linked instances", $this); + $host->add_hook($host::HOOK_UPDATE_TASK, $this); + } + + function hook_update_task($args) { + _debug("Get linked feeds..."); + $this->get_linked_feeds(); + } + + // Status codes: + // -1 - never connected + // 0 - no data received + // 1 - data received successfully + // 2 - did not receive valid data + // >10 - server error, code + 10 (e.g. 16 means server error 6) + + function get_linked_feeds($instance_id = false) { + if ($instance_id) + $instance_qpart = "id = '$instance_id' AND "; + else + $instance_qpart = ""; + + if (DB_TYPE == "pgsql") { + $date_qpart = "last_connected < NOW() - INTERVAL '6 hours'"; + } else { + $date_qpart = "last_connected < DATE_SUB(NOW(), INTERVAL 6 HOUR)"; + } + + $result = db_query("SELECT id, access_key, access_url FROM ttrss_linked_instances + WHERE $instance_qpart $date_qpart ORDER BY last_connected"); + + while ($line = db_fetch_assoc($result)) { + $id = $line['id']; + + _debug("Updating: " . $line['access_url'] . " ($id)"); + + $fetch_url = $line['access_url'] . '/public.php?op=fbexport'; + $post_query = 'key=' . $line['access_key']; + + $feeds = fetch_file_contents($fetch_url, false, false, false, $post_query); + + // try doing it the old way + if (!$feeds) { + $fetch_url = $line['access_url'] . '/backend.php?op=fbexport'; + $feeds = fetch_file_contents($fetch_url, false, false, false, $post_query); + } + + if ($feeds) { + $feeds = json_decode($feeds, true); + + if ($feeds) { + if ($feeds['error']) { + $status = $feeds['error']['code'] + 10; + + // access denied + if ($status == 16) { + db_query("DELETE FROM ttrss_linked_feeds + WHERE instance_id = '$id'"); + } + } else { + $status = 1; + + if (count($feeds['feeds']) > 0) { + + db_query("DELETE FROM ttrss_linked_feeds + WHERE instance_id = '$id'"); + + foreach ($feeds['feeds'] as $feed) { + $feed_url = db_escape_string($feed['feed_url']); + $title = db_escape_string($feed['title']); + $subscribers = db_escape_string($feed['subscribers']); + $site_url = db_escape_string($feed['site_url']); + + db_query("INSERT INTO ttrss_linked_feeds + (feed_url, site_url, title, subscribers, instance_id, created, updated) + VALUES + ('$feed_url', '$site_url', '$title', '$subscribers', '$id', NOW(), NOW())"); + } + } else { + // received 0 feeds, this might indicate that + // the instance on the other hand is rebuilding feedbrowser cache + // we will try again later + + // TODO: maybe perform expiration based on updated here? + } + + _debug("Processed " . count($feeds['feeds']) . " feeds."); + } + } else { + $status = 2; + } + + } else { + $status = 0; + } + + _debug("Status: $status"); + + db_query("UPDATE ttrss_linked_instances SET + last_status_out = '$status', last_connected = NOW() WHERE id = '$id'"); + + } + } + + + function get_feeds() { + $this->get_linked_feeds(false); + } + + function get_prefs_js() { + return file_get_contents(dirname(__FILE__) . "/instances.js"); + } + + function hook_prefs_tabs($args) { + if ($_SESSION["access_level"] >= 10 || SINGLE_USER_MODE) { + ?>
      "; + print ""; + print ""; + + print "
      ".__("Instance")."
      "; + + print "
      "; + + /* URL */ + + $access_url = htmlspecialchars(db_fetch_result($result, 0, "access_url")); + + print __("URL:") . " "; + + print ""; + + print "
      "; + + $access_key = htmlspecialchars(db_fetch_result($result, 0, "access_key")); + + /* Access key */ + + print __("Access key:") . " "; + + print ""; + + print "

      " . __("Use one access key for both linked instances."); + + print "

      "; + + print "
      +
      + +
      + +
      "; + + } + + function editSave() { + $id = db_escape_string($_REQUEST["id"]); + $access_url = db_escape_string($_REQUEST["access_url"]); + $access_key = db_escape_string($_REQUEST["access_key"]); + + db_query("UPDATE ttrss_linked_instances SET + access_key = '$access_key', access_url = '$access_url', + last_connected = '1970-01-01' + WHERE id = '$id'"); + + } + + function index() { + + if (!function_exists('curl_init')) { + print "
      "; + print_error("This functionality requires CURL functions. Please enable CURL in your PHP configuration (you might also want to disable open_basedir in php.ini) and reload this page."); + print "
      "; + } + + print "
      "; + print "
      "; + + print "
      "; + + $sort = db_escape_string($_REQUEST["sort"]); + + if (!$sort || $sort == "undefined") { + $sort = "access_url"; + } + + print "
      ". + "" . __('Select').""; + print "
      "; + print "
      ".__('All')."
      "; + print "
      ".__('None')."
      "; + print "
      "; + + print ""; + print ""; + print ""; + + print "
      "; #toolbar + + $result = db_query("SELECT *, + (SELECT COUNT(*) FROM ttrss_linked_feeds + WHERE instance_id = ttrss_linked_instances.id) AS num_feeds + FROM ttrss_linked_instances + ORDER BY $sort"); + + print "

      " . __("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:"); + + print " (display url)"; + + print "

      "; + + print " + + + + + + + "; + + $lnum = 0; + + while ($line = db_fetch_assoc($result)) { + $class = ($lnum % 2) ? "even" : "odd"; + + $id = $line['id']; + $this_row_id = "id=\"LIRR-$id\""; + + $line["last_connected"] = make_local_datetime($line["last_connected"], false); + + print ""; + + print ""; + + $onclick = "onclick='editInstance($id, event)' title='".__('Click to edit')."'"; + + $access_key = mb_substr($line['access_key'], 0, 4) . '...' . + mb_substr($line['access_key'], -4); + + print ""; + print ""; + print ""; + print ""; + print ""; + + print ""; + + ++$lnum; + } + + print "
       ".__('Instance URL')."".__('Access key')."".__('Last connected')."".__('Status')."".__('Stored feeds')."
      " . htmlspecialchars($line['access_url']) . "" . htmlspecialchars($access_key) . "" . htmlspecialchars($line['last_connected']) . "" . $this->status_codes[$line['last_status_out']] . "" . htmlspecialchars($line['num_feeds']) . "
      "; + + print "

      "; #pane + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB, + "hook_prefs_tab", "prefInstances"); + + print "
      "; #container + + } + + function fbexport() { + + $access_key = db_escape_string($_POST["key"]); + + // TODO: rate limit checking using last_connected + $result = db_query("SELECT id FROM ttrss_linked_instances + WHERE access_key = '$access_key'"); + + if (db_num_rows($result) == 1) { + + $instance_id = db_fetch_result($result, 0, "id"); + + $result = db_query("SELECT feed_url, site_url, title, subscribers + FROM ttrss_feedbrowser_cache ORDER BY subscribers DESC LIMIT 100"); + + $feeds = array(); + + while ($line = db_fetch_assoc($result)) { + array_push($feeds, $line); + } + + db_query("UPDATE ttrss_linked_instances SET + last_status_in = 1 WHERE id = '$instance_id'"); + + print json_encode(array("feeds" => $feeds)); + } else { + print error_json(6); + } + } + + function addInstance() { + print ""; + print ""; + + print "
      ".__("Instance")."
      "; + + print "
      "; + + /* URL */ + + print __("URL:") . " "; + + print ""; + + print "
      "; + + $access_key = uniqid(rand(), true); + + /* Access key */ + + print __("Access key:") . " "; + + print ""; + + print "

      " . __("Use one access key for both linked instances."); + + print "

      "; + + print "
      +
      + +
      + +
      "; + + return; + } + + function genHash() { + $hash = uniqid(base_convert(rand(), 10, 36)); + + print json_encode(array("hash" => $hash)); + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/instances/instances.js b/plugins/instances/instances.js new file mode 100644 index 0000000000..f699acf72a --- /dev/null +++ b/plugins/instances/instances.js @@ -0,0 +1,169 @@ +function addInstance() { + try { + var query = "backend.php?op=pluginhandler&plugin=instances&method=addInstance"; + + if (dijit.byId("instanceAddDlg")) + dijit.byId("instanceAddDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "instanceAddDlg", + title: __("Link Instance"), + style: "width: 600px", + regenKey: function() { + new Ajax.Request("backend.php", { + parameters: "op=pluginhandler&plugin=instances&method=genHash", + onComplete: function(transport) { + var reply = JSON.parse(transport.responseText); + if (reply) + dijit.byId('instance_add_key').attr('value', reply.hash); + + } }); + }, + execute: function() { + if (this.validate()) { + console.warn(dojo.objectToQuery(this.attr('value'))); + + notify_progress('Saving data...', true); + new Ajax.Request("backend.php", { + parameters: dojo.objectToQuery(this.attr('value')), + onComplete: function(transport) { + dialog.hide(); + notify(''); + updateInstanceList(); + } }); + } + }, + href: query, + }); + + dialog.show(); + + } catch (e) { + exception_error("addInstance", e); + } +} + +// *** INS *** + +function updateInstanceList(sort_key) { + new Ajax.Request("backend.php", { + parameters: "op=pluginhandler&plugin=instances&sort=" + param_escape(sort_key), + onComplete: function(transport) { + dijit.byId('instanceConfigTab').attr('content', transport.responseText); + selectTab("instanceConfig", true); + notify(""); + } }); +} + +function editInstance(id, event) { + try { + if (!event || !event.ctrlKey) { + + selectTableRows('prefInstanceList', 'none'); + selectTableRowById('LIRR-'+id, 'LICHK-'+id, true); + + var query = "backend.php?op=pluginhandler&plugin=instances&method=edit&id=" + + param_escape(id); + + if (dijit.byId("instanceEditDlg")) + dijit.byId("instanceEditDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "instanceEditDlg", + title: __("Edit Instance"), + style: "width: 600px", + regenKey: function() { + new Ajax.Request("backend.php", { + parameters: "op=pluginhandler&plugin=instances&method=genHash", + onComplete: function(transport) { + var reply = JSON.parse(transport.responseText); + if (reply) + dijit.byId('instance_edit_key').attr('value', reply.hash); + + } }); + }, + execute: function() { + if (this.validate()) { +// console.warn(dojo.objectToQuery(this.attr('value'))); + + notify_progress('Saving data...', true); + new Ajax.Request("backend.php", { + parameters: dojo.objectToQuery(this.attr('value')), + onComplete: function(transport) { + dialog.hide(); + notify(''); + updateInstanceList(); + } }); + } + }, + href: query, + }); + + dialog.show(); + + } else if (event.ctrlKey) { + var cb = $('LICHK-' + id); + cb.checked = !cb.checked; + toggleSelectRow(cb); + } + + + } catch (e) { + exception_error("editInstance", e); + } +} + +function removeSelectedInstances() { + try { + var sel_rows = getSelectedInstances(); + + if (sel_rows.length > 0) { + + var ok = confirm(__("Remove selected instances?")); + + if (ok) { + notify_progress("Removing selected instances..."); + + var query = "op=pluginhandler&plugin=instances&method=remove&ids="+ + param_escape(sel_rows.toString()); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify(''); + updateInstanceList(); + } }); + } + + } else { + alert(__("No instances are selected.")); + } + + } catch (e) { + exception_error("removeInstance", e); + } +} + +function editSelectedInstance() { + var rows = getSelectedInstances(); + + if (rows.length == 0) { + alert(__("No instances are selected.")); + return; + } + + if (rows.length > 1) { + alert(__("Please select only one instance.")); + return; + } + + notify(""); + + editInstance(rows[0]); +} + +function getSelectedInstances() { + return getSelectedTableRowIds("prefInstanceList"); +} + + diff --git a/plugins/mail/init.php b/plugins/mail/init.php new file mode 100644 index 0000000000..e1da315c3d --- /dev/null +++ b/plugins/mail/init.php @@ -0,0 +1,227 @@ +host = $host; + + $host->add_hook($host::HOOK_ARTICLE_BUTTON, $this); + $host->add_hook($host::HOOK_PREFS_TAB, $this); + } + + function get_js() { + return file_get_contents(dirname(__FILE__) . "/mail.js"); + } + + function save() { + $addresslist = db_escape_string($_POST["addresslist"]); + + $this->host->set($this, "addresslist", $addresslist); + + echo __("Mail addresses saved."); + } + + function hook_prefs_tab($args) { + if ($args != "prefPrefs") return; + + print "
      "; + + print "

      " . __("You can set predefined email addressed here (comma-separated list):") . "

      "; + + print "
      "; + + print ""; + + print ""; + print ""; + print ""; + + $addresslist = $this->host->get($this, "addresslist"); + + print ""; + + print "

      "; + + print "

      "; + + print "
      "; + } + + function hook_article_button($line) { + return "Zoom"; + } + + function emailArticle() { + + $param = db_escape_string($_REQUEST['param']); + + print ""; + print ""; + print ""; + + $result = db_query("SELECT email, full_name FROM ttrss_users WHERE + id = " . $_SESSION["uid"]); + + $user_email = htmlspecialchars(db_fetch_result($result, 0, "email")); + $user_name = htmlspecialchars(db_fetch_result($result, 0, "full_name")); + + if (!$user_name) $user_name = $_SESSION['name']; + + print ""; + print ""; + + require_once "lib/MiniTemplator.class.php"; + + $tpl = new MiniTemplator; + + $tpl->readTemplateFromFile("templates/email_article_template.txt"); + + $tpl->setVariable('USER_NAME', $_SESSION["name"], true); + $tpl->setVariable('USER_EMAIL', $user_email, true); + $tpl->setVariable('TTRSS_HOST', $_SERVER["HTTP_HOST"], true); + + $result = db_query("SELECT DISTINCT link, content, title, note + FROM ttrss_user_entries, ttrss_entries WHERE id = ref_id AND + id IN ($param) AND owner_uid = " . $_SESSION["uid"]); + + if (db_num_rows($result) > 1) { + $subject = __("[Forwarded]") . " " . __("Multiple articles"); + } + + while ($line = db_fetch_assoc($result)) { + + if (!$subject) + $subject = __("[Forwarded]") . " " . htmlspecialchars($line["title"]); + + $tpl->setVariable('ARTICLE_TITLE', strip_tags($line["title"])); + $tnote = strip_tags($line["note"]); + if( $tnote != ''){ + $tpl->setVariable('ARTICLE_NOTE', $tnote, true); + $tpl->addBlock('note'); + } + $tpl->setVariable('ARTICLE_URL', strip_tags($line["link"])); + + $tpl->addBlock('article'); + } + + $tpl->addBlock('email'); + + $content = ""; + $tpl->generateOutputToString($content); + + print ""; + + print "
      "; + + $addresslist = explode(",", $this->host->get($this, "addresslist")); + + print __('To:'); + + print ""; + +/* print ""; */ + + print_select("destination", "", $addresslist, 'style="width: 30em" dojoType="dijit.form.ComboBox"'); + +/* print "
      "; */ + + print "
      "; + + print __('Subject:'); + + print ""; + + print ""; + + print "
      "; + + print "
      "; + + print "
      "; + print " "; + print ""; + print "
      "; + + //return; + } + + function sendEmail() { + require_once 'classes/ttrssmailer.php'; + + $reply = array(); + + $mail = new ttrssMailer(); + + $mail->AddReplyTo(strip_tags($_REQUEST['from_email']), + strip_tags($_REQUEST['from_name'])); + //$mail->AddAddress($_REQUEST['destination']); + $addresses = explode(';', $_REQUEST['destination']); + foreach($addresses as $nextaddr) + $mail->AddAddress($nextaddr); + + $mail->IsHTML(false); + $mail->Subject = $_REQUEST['subject']; + $mail->Body = $_REQUEST['content']; + + $rc = $mail->Send(); + + if (!$rc) { + $reply['error'] = $mail->ErrorInfo; + } else { + //save_email_address(db_escape_string($destination)); + $reply['message'] = "UPDATE_COUNTERS"; + } + + print json_encode($reply); + } + + /* function completeEmails() { + $search = db_escape_string($_REQUEST["search"]); + + print "
        "; + + foreach ($_SESSION['stored_emails'] as $email) { + if (strpos($email, $search) !== false) { + print "
      • $email
      • "; + } + } + + print "
      "; + } */ + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/mail/mail.js b/plugins/mail/mail.js new file mode 100644 index 0000000000..db0503ff95 --- /dev/null +++ b/plugins/mail/mail.js @@ -0,0 +1,62 @@ +function emailArticle(id) { + try { + if (!id) { + var ids = getSelectedArticleIds2(); + + if (ids.length == 0) { + alert(__("No articles are selected.")); + return; + } + + id = ids.toString(); + } + + if (dijit.byId("emailArticleDlg")) + dijit.byId("emailArticleDlg").destroyRecursive(); + + var query = "backend.php?op=pluginhandler&plugin=mail&method=emailArticle¶m=" + param_escape(id); + + dialog = new dijit.Dialog({ + id: "emailArticleDlg", + title: __("Forward article by email"), + style: "width: 600px", + execute: function() { + if (this.validate()) { + + new Ajax.Request("backend.php", { + parameters: dojo.objectToQuery(this.attr('value')), + onComplete: function(transport) { + console.log(transport.responseText); + + var reply = JSON.parse(transport.responseText); + + var error = reply['error']; + + if (error) { + alert(__('Error sending email:') + ' ' + error); + } else { + notify_info('Your message has been sent.'); + dialog.hide(); + } + + } }); + } + }, + href: query}); + + /* var tmph = dojo.connect(dialog, 'onLoad', function() { + dojo.disconnect(tmph); + + new Ajax.Autocompleter('emailArticleDlg_destination', 'emailArticleDlg_dst_choices', + "backend.php?op=pluginhandler&plugin=mail&method=completeEmails", + { tokens: '', paramName: "search" }); + }); */ + + dialog.show(); + + } catch (e) { + exception_error("emailArticle", e); + } +} + + diff --git a/plugins/mail/mail.png b/plugins/mail/mail.png new file mode 100644 index 0000000000..7348aed77f Binary files /dev/null and b/plugins/mail/mail.png differ diff --git a/plugins/mailto/init.js b/plugins/mailto/init.js new file mode 100644 index 0000000000..8f7656a07c --- /dev/null +++ b/plugins/mailto/init.js @@ -0,0 +1,32 @@ +function mailtoArticle(id) { + try { + if (!id) { + var ids = getSelectedArticleIds2(); + + if (ids.length == 0) { + alert(__("No articles are selected.")); + return; + } + + id = ids.toString(); + } + + if (dijit.byId("emailArticleDlg")) + dijit.byId("emailArticleDlg").destroyRecursive(); + + var query = "backend.php?op=pluginhandler&plugin=mailto&method=emailArticle¶m=" + param_escape(id); + + dialog = new dijit.Dialog({ + id: "emailArticleDlg", + title: __("Forward article by email"), + style: "width: 600px", + href: query}); + + dialog.show(); + + } catch (e) { + exception_error("emailArticle", e); + } +} + + diff --git a/plugins/mailto/init.php b/plugins/mailto/init.php new file mode 100644 index 0000000000..12f80ec895 --- /dev/null +++ b/plugins/mailto/init.php @@ -0,0 +1,94 @@ +host = $host; + + $host->add_hook($host::HOOK_ARTICLE_BUTTON, $this); + } + + function get_js() { + return file_get_contents(dirname(__FILE__) . "/init.js"); + } + + function hook_article_button($line) { + return "Zoom"; + } + + function emailArticle() { + + $param = db_escape_string($_REQUEST['param']); + + require_once "lib/MiniTemplator.class.php"; + + $tpl = new MiniTemplator; + $tpl_t = new MiniTemplator; + + $tpl->readTemplateFromFile("templates/email_article_template.txt"); + + $tpl->setVariable('USER_NAME', $_SESSION["name"], true); + $tpl->setVariable('USER_EMAIL', $user_email, true); + $tpl->setVariable('TTRSS_HOST', $_SERVER["HTTP_HOST"], true); + + + $result = db_query("SELECT DISTINCT link, content, title + FROM ttrss_user_entries, ttrss_entries WHERE id = ref_id AND + id IN ($param) AND owner_uid = " . $_SESSION["uid"]); + + if (db_num_rows($result) > 1) { + $subject = __("[Forwarded]") . " " . __("Multiple articles"); + } + + while ($line = db_fetch_assoc($result)) { + + if (!$subject) + $subject = __("[Forwarded]") . " " . htmlspecialchars($line["title"]); + + $tpl->setVariable('ARTICLE_TITLE', strip_tags($line["title"])); + $tpl->setVariable('ARTICLE_URL', strip_tags($line["link"])); + + $tpl->addBlock('article'); + } + + $tpl->addBlock('email'); + + $content = ""; + $tpl->generateOutputToString($content); + + $mailto_link = htmlspecialchars("mailto:?subject=".rawurlencode($subject). + "&body=".rawurlencode($content)); + + print __("Clicking the following link to invoke your mail client:"); + + print ""; + + print __("You should be able to edit the message before sending in your mail client."); + + print "

      "; + + print "

      "; + print ""; + print "
      "; + + //return; + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/mailto/mail.png b/plugins/mailto/mail.png new file mode 100644 index 0000000000..2c49f78a65 Binary files /dev/null and b/plugins/mailto/mail.png differ diff --git a/plugins/mark_button/init.php b/plugins/mark_button/init.php new file mode 100644 index 0000000000..4cdff53d0c --- /dev/null +++ b/plugins/mark_button/init.php @@ -0,0 +1,43 @@ +host = $host; + + $host->add_hook($host::HOOK_ARTICLE_BUTTON, $this); + } + + function about() { + return array(1.0, + "Bottom un/star button for the combined mode", + "fox"); + } + + function hook_article_button($line) { + $marked_pic = ""; + $id = $line["id"]; + + if (get_pref("COMBINED_DISPLAY_MODE")) { + if (sql_bool_to_bool($line["marked"])) { + $marked_pic = "\"Unstar"; + } else { + $marked_pic = "\"Star"; + } + } + + return $marked_pic; + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/no_iframes/init.php b/plugins/no_iframes/init.php new file mode 100644 index 0000000000..35f7187f58 --- /dev/null +++ b/plugins/no_iframes/init.php @@ -0,0 +1,35 @@ +host = $host; + + $host->add_hook($host::HOOK_SANITIZE, $this); + } + + function hook_sanitize($doc, $site_url, $allowed_elements, $disallowed_attributes) { + + $xpath = new DOMXpath($doc); + $entries = $xpath->query('//iframe'); + + foreach ($entries as $entry) { + if (!iframe_whitelisted($entry)) + $entry->parentNode->removeChild($entry); + } + + return array($doc, $allowed_elements, $disallowed_attributes); + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/no_title_counters/init.js b/plugins/no_title_counters/init.js new file mode 100644 index 0000000000..9c16856a2e --- /dev/null +++ b/plugins/no_title_counters/init.js @@ -0,0 +1,5 @@ +dojo.addOnLoad(function() { + updateTitle = function() { + document.title = "Tiny Tiny RSS"; + }; +}); diff --git a/plugins/no_title_counters/init.php b/plugins/no_title_counters/init.php new file mode 100644 index 0000000000..a9f22831dd --- /dev/null +++ b/plugins/no_title_counters/init.php @@ -0,0 +1,25 @@ +host = $host; + + } + + function get_js() { + return file_get_contents(__DIR__ . "/init.js"); + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/no_url_hashes/init.js b/plugins/no_url_hashes/init.js new file mode 100644 index 0000000000..a437a1f3ec --- /dev/null +++ b/plugins/no_url_hashes/init.js @@ -0,0 +1,4 @@ +dojo.addOnLoad(function() { + hash_set = function() { }; + hash_get = function() { }; +}); diff --git a/plugins/no_url_hashes/init.php b/plugins/no_url_hashes/init.php new file mode 100644 index 0000000000..da31267c28 --- /dev/null +++ b/plugins/no_url_hashes/init.php @@ -0,0 +1,25 @@ +host = $host; + + } + + function get_js() { + return file_get_contents(__DIR__ . "/init.js"); + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/note/init.php b/plugins/note/init.php new file mode 100644 index 0000000000..2a32961fca --- /dev/null +++ b/plugins/note/init.php @@ -0,0 +1,76 @@ +host = $host; + + $host->add_hook($host::HOOK_ARTICLE_BUTTON, $this); + } + + function get_js() { + return file_get_contents(dirname(__FILE__) . "/note.js"); + } + + + function hook_article_button($line) { + return ""; + } + + function edit() { + $param = db_escape_string($_REQUEST['param']); + + $result = db_query("SELECT note FROM ttrss_user_entries WHERE + ref_id = '$param' AND owner_uid = " . $_SESSION['uid']); + + $note = db_fetch_result($result, 0, "note"); + + print ""; + print ""; + print ""; + print ""; + + print "
      "; + print ""; + print "
      "; + + print "
      "; + print " "; + print ""; + print "
      "; + + } + + function setNote() { + $id = db_escape_string($_REQUEST["id"]); + $note = trim(strip_tags(db_escape_string($_REQUEST["note"]))); + + db_query("UPDATE ttrss_user_entries SET note = '$note' + WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); + + $formatted_note = format_article_note($id, $note); + + print json_encode(array("note" => $formatted_note, + "raw_length" => mb_strlen($note))); + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/note/note.js b/plugins/note/note.js new file mode 100644 index 0000000000..022fc88e7e --- /dev/null +++ b/plugins/note/note.js @@ -0,0 +1,51 @@ +function editArticleNote(id) { + try { + + var query = "backend.php?op=pluginhandler&plugin=note&method=edit¶m=" + param_escape(id); + + if (dijit.byId("editNoteDlg")) + dijit.byId("editNoteDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "editNoteDlg", + title: __("Edit article note"), + style: "width: 600px", + execute: function() { + if (this.validate()) { + var query = dojo.objectToQuery(this.attr('value')); + + notify_progress("Saving article note...", true); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify(''); + dialog.hide(); + + var reply = JSON.parse(transport.responseText); + + cache_delete("article:" + id); + + var elem = $("POSTNOTE-" + id); + + if (elem) { + Element.hide(elem); + elem.innerHTML = reply.note; + + if (reply.raw_length != 0) + new Effect.Appear(elem); + } + + }}); + } + }, + href: query, + }); + + dialog.show(); + + } catch (e) { + exception_error("editArticleNote", e); + } +} + diff --git a/plugins/note/note.png b/plugins/note/note.png new file mode 100644 index 0000000000..244e6ca045 Binary files /dev/null and b/plugins/note/note.png differ diff --git a/plugins/nsfw/init.js b/plugins/nsfw/init.js new file mode 100644 index 0000000000..40ad2b0ba1 --- /dev/null +++ b/plugins/nsfw/init.js @@ -0,0 +1,12 @@ +function nsfwShow(elem) { + try { + content = elem.parentNode.getElementsBySelector("div.nswf.content")[0]; + + if (content) { + Element.toggle(content); + } + + } catch (e) { + exception_error("nswfSHow", e); + } +} diff --git a/plugins/nsfw/init.php b/plugins/nsfw/init.php new file mode 100644 index 0000000000..5156659238 --- /dev/null +++ b/plugins/nsfw/init.php @@ -0,0 +1,108 @@ +host = $host; + + $host->add_hook($host::HOOK_RENDER_ARTICLE, $this); + $host->add_hook($host::HOOK_RENDER_ARTICLE_CDM, $this); + $host->add_hook($host::HOOK_PREFS_TAB, $this); + + } + + function get_js() { + return file_get_contents(dirname(__FILE__) . "/init.js"); + } + + function hook_render_article($article) { + $tags = array_map("trim", explode(",", $this->host->get($this, "tags"))); + $a_tags = array_map("trim", explode(",", $article["tag_cache"])); + + if (count(array_intersect($tags, $a_tags)) > 0) { + $article["content"] = "
      +
      "; + } + + return $article; + } + + function hook_render_article_cdm($article) { + $tags = array_map("trim", explode(",", $this->host->get($this, "tags"))); + $a_tags = array_map("trim", explode(",", $article["tag_cache"])); + + if (count(array_intersect($tags, $a_tags)) > 0) { + $article["content"] = "
      +
      "; + } + + return $article; + } + + function hook_prefs_tab($args) { + if ($args != "prefPrefs") return; + + print "
      "; + + print "
      "; + + $tags = $this->host->get($this, "tags"); + + print "
      "; + + print ""; + + print ""; + print ""; + print ""; + + print ""; + + print ""; + print ""; + + print "
      ".__("Tags to consider NSFW (comma-separated)")."
      "; + + print "

      "; + + print "

      "; + + print "
      "; #pane + } + + function save() { + $tags = explode(",", db_escape_string($_POST["tags"])); + $tags = array_map("trim", $tags); + $tags = array_map("mb_strtolower", $tags); + $tags = join(", ", $tags); + + $this->host->set($this, "tags", $tags); + + echo __("Configuration saved."); + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/search_sphinx/init.php b/plugins/search_sphinx/init.php new file mode 100644 index 0000000000..065af64f2a --- /dev/null +++ b/plugins/search_sphinx/init.php @@ -0,0 +1,65 @@ +add_hook($host::HOOK_SEARCH, $this); + + // idk if that would work but checking for the class being loaded is somehow not enough + if (class_exists("SphinxClient") && !defined('SEARCHD_COMMAND_SEARCH')) { + user_error("Your PHP has a separate systemwide Sphinx client installed which conflicts with the client library used by tt-rss. Either remove the system library or disable Sphinx support."); + } + + require_once __DIR__ . "/sphinxapi.php"; + } + + function hook_search($search) { + $offset = 0; + $limit = 500; + + $sphinxClient = new SphinxClient(); + + $sphinxpair = explode(":", SPHINX_SERVER, 2); + + $sphinxClient->SetServer($sphinxpair[0], (int)$sphinxpair[1]); + $sphinxClient->SetConnectTimeout(1); + + $sphinxClient->SetFieldWeights(array('title' => 70, 'content' => 30, + 'feed_title' => 20)); + + $sphinxClient->SetMatchMode(SPH_MATCH_EXTENDED2); + $sphinxClient->SetRankingMode(SPH_RANK_PROXIMITY_BM25); + $sphinxClient->SetLimits($offset, $limit, 1000); + $sphinxClient->SetArrayResult(false); + $sphinxClient->SetFilter('owner_uid', array($_SESSION['uid'])); + + $result = $sphinxClient->Query($search, SPHINX_INDEX); + + $ids = array(); + + if (is_array($result['matches'])) { + foreach (array_keys($result['matches']) as $int_id) { + $ref_id = $result['matches'][$int_id]['attrs']['ref_id']; + array_push($ids, $ref_id); + } + } + + $ids = join(",", $ids); + + if ($ids) + return array("ref_id IN ($ids)", array()); + else + return array("ref_id = -1", array()); + } + + function api_version() { + return 2; + } +} +?> diff --git a/plugins/search_sphinx/sphinxapi.php b/plugins/search_sphinx/sphinxapi.php new file mode 100644 index 0000000000..90643d3c74 --- /dev/null +++ b/plugins/search_sphinx/sphinxapi.php @@ -0,0 +1,1691 @@ +=8 ) + { + $v = (int)$v; + return pack ( "NN", $v>>32, $v&0xFFFFFFFF ); + } + + // x32, int + if ( is_int($v) ) + return pack ( "NN", $v < 0 ? -1 : 0, $v ); + + // x32, bcmath + if ( function_exists("bcmul") ) + { + if ( bccomp ( $v, 0 ) == -1 ) + $v = bcadd ( "18446744073709551616", $v ); + $h = bcdiv ( $v, "4294967296", 0 ); + $l = bcmod ( $v, "4294967296" ); + return pack ( "NN", (float)$h, (float)$l ); // conversion to float is intentional; int would lose 31st bit + } + + // x32, no-bcmath + $p = max(0, strlen($v) - 13); + $lo = abs((float)substr($v, $p)); + $hi = abs((float)substr($v, 0, $p)); + + $m = $lo + $hi*1316134912.0; // (10 ^ 13) % (1 << 32) = 1316134912 + $q = floor($m/4294967296.0); + $l = $m - ($q*4294967296.0); + $h = $hi*2328.0 + $q; // (10 ^ 13) / (1 << 32) = 2328 + + if ( $v<0 ) + { + if ( $l==0 ) + $h = 4294967296.0 - $h; + else + { + $h = 4294967295.0 - $h; + $l = 4294967296.0 - $l; + } + } + return pack ( "NN", $h, $l ); +} + +/// pack 64-bit unsigned +function sphPackU64 ( $v ) +{ + assert ( is_numeric($v) ); + + // x64 + if ( PHP_INT_SIZE>=8 ) + { + assert ( $v>=0 ); + + // x64, int + if ( is_int($v) ) + return pack ( "NN", $v>>32, $v&0xFFFFFFFF ); + + // x64, bcmath + if ( function_exists("bcmul") ) + { + $h = bcdiv ( $v, 4294967296, 0 ); + $l = bcmod ( $v, 4294967296 ); + return pack ( "NN", $h, $l ); + } + + // x64, no-bcmath + $p = max ( 0, strlen($v) - 13 ); + $lo = (int)substr ( $v, $p ); + $hi = (int)substr ( $v, 0, $p ); + + $m = $lo + $hi*1316134912; + $l = $m % 4294967296; + $h = $hi*2328 + (int)($m/4294967296); + + return pack ( "NN", $h, $l ); + } + + // x32, int + if ( is_int($v) ) + return pack ( "NN", 0, $v ); + + // x32, bcmath + if ( function_exists("bcmul") ) + { + $h = bcdiv ( $v, "4294967296", 0 ); + $l = bcmod ( $v, "4294967296" ); + return pack ( "NN", (float)$h, (float)$l ); // conversion to float is intentional; int would lose 31st bit + } + + // x32, no-bcmath + $p = max(0, strlen($v) - 13); + $lo = (float)substr($v, $p); + $hi = (float)substr($v, 0, $p); + + $m = $lo + $hi*1316134912.0; + $q = floor($m / 4294967296.0); + $l = $m - ($q * 4294967296.0); + $h = $hi*2328.0 + $q; + + return pack ( "NN", $h, $l ); +} + +// unpack 64-bit unsigned +function sphUnpackU64 ( $v ) +{ + list ( $hi, $lo ) = array_values ( unpack ( "N*N*", $v ) ); + + if ( PHP_INT_SIZE>=8 ) + { + if ( $hi<0 ) $hi += (1<<32); // because php 5.2.2 to 5.2.5 is totally fucked up again + if ( $lo<0 ) $lo += (1<<32); + + // x64, int + if ( $hi<=2147483647 ) + return ($hi<<32) + $lo; + + // x64, bcmath + if ( function_exists("bcmul") ) + return bcadd ( $lo, bcmul ( $hi, "4294967296" ) ); + + // x64, no-bcmath + $C = 100000; + $h = ((int)($hi / $C) << 32) + (int)($lo / $C); + $l = (($hi % $C) << 32) + ($lo % $C); + if ( $l>$C ) + { + $h += (int)($l / $C); + $l = $l % $C; + } + + if ( $h==0 ) + return $l; + return sprintf ( "%d%05d", $h, $l ); + } + + // x32, int + if ( $hi==0 ) + { + if ( $lo>0 ) + return $lo; + return sprintf ( "%u", $lo ); + } + + $hi = sprintf ( "%u", $hi ); + $lo = sprintf ( "%u", $lo ); + + // x32, bcmath + if ( function_exists("bcmul") ) + return bcadd ( $lo, bcmul ( $hi, "4294967296" ) ); + + // x32, no-bcmath + $hi = (float)$hi; + $lo = (float)$lo; + + $q = floor($hi/10000000.0); + $r = $hi - $q*10000000.0; + $m = $lo + $r*4967296.0; + $mq = floor($m/10000000.0); + $l = $m - $mq*10000000.0; + $h = $q*4294967296.0 + $r*429.0 + $mq; + + $h = sprintf ( "%.0f", $h ); + $l = sprintf ( "%07.0f", $l ); + if ( $h=="0" ) + return sprintf( "%.0f", (float)$l ); + return $h . $l; +} + +// unpack 64-bit signed +function sphUnpackI64 ( $v ) +{ + list ( $hi, $lo ) = array_values ( unpack ( "N*N*", $v ) ); + + // x64 + if ( PHP_INT_SIZE>=8 ) + { + if ( $hi<0 ) $hi += (1<<32); // because php 5.2.2 to 5.2.5 is totally fucked up again + if ( $lo<0 ) $lo += (1<<32); + + return ($hi<<32) + $lo; + } + + // x32, int + if ( $hi==0 ) + { + if ( $lo>0 ) + return $lo; + return sprintf ( "%u", $lo ); + } + // x32, int + elseif ( $hi==-1 ) + { + if ( $lo<0 ) + return $lo; + return sprintf ( "%.0f", $lo - 4294967296.0 ); + } + + $neg = ""; + $c = 0; + if ( $hi<0 ) + { + $hi = ~$hi; + $lo = ~$lo; + $c = 1; + $neg = "-"; + } + + $hi = sprintf ( "%u", $hi ); + $lo = sprintf ( "%u", $lo ); + + // x32, bcmath + if ( function_exists("bcmul") ) + return $neg . bcadd ( bcadd ( $lo, bcmul ( $hi, "4294967296" ) ), $c ); + + // x32, no-bcmath + $hi = (float)$hi; + $lo = (float)$lo; + + $q = floor($hi/10000000.0); + $r = $hi - $q*10000000.0; + $m = $lo + $r*4967296.0; + $mq = floor($m/10000000.0); + $l = $m - $mq*10000000.0 + $c; + $h = $q*4294967296.0 + $r*429.0 + $mq; + if ( $l==10000000 ) + { + $l = 0; + $h += 1; + } + + $h = sprintf ( "%.0f", $h ); + $l = sprintf ( "%07.0f", $l ); + if ( $h=="0" ) + return $neg . sprintf( "%.0f", (float)$l ); + return $neg . $h . $l; +} + + +function sphFixUint ( $value ) +{ + if ( PHP_INT_SIZE>=8 ) + { + // x64 route, workaround broken unpack() in 5.2.2+ + if ( $value<0 ) $value += (1<<32); + return $value; + } + else + { + // x32 route, workaround php signed/unsigned braindamage + return sprintf ( "%u", $value ); + } +} + + +/// sphinx searchd client class +class SphinxClient +{ + var $_host; ///< searchd host (default is "localhost") + var $_port; ///< searchd port (default is 9312) + var $_offset; ///< how many records to seek from result-set start (default is 0) + var $_limit; ///< how many records to return from result-set starting at offset (default is 20) + var $_mode; ///< query matching mode (default is SPH_MATCH_ALL) + var $_weights; ///< per-field weights (default is 1 for all fields) + var $_sort; ///< match sorting mode (default is SPH_SORT_RELEVANCE) + var $_sortby; ///< attribute to sort by (defualt is "") + var $_min_id; ///< min ID to match (default is 0, which means no limit) + var $_max_id; ///< max ID to match (default is 0, which means no limit) + var $_filters; ///< search filters + var $_groupby; ///< group-by attribute name + var $_groupfunc; ///< group-by function (to pre-process group-by attribute value with) + var $_groupsort; ///< group-by sorting clause (to sort groups in result set with) + var $_groupdistinct;///< group-by count-distinct attribute + var $_maxmatches; ///< max matches to retrieve + var $_cutoff; ///< cutoff to stop searching at (default is 0) + var $_retrycount; ///< distributed retries count + var $_retrydelay; ///< distributed retries delay + var $_anchor; ///< geographical anchor point + var $_indexweights; ///< per-index weights + var $_ranker; ///< ranking mode (default is SPH_RANK_PROXIMITY_BM25) + var $_maxquerytime; ///< max query time, milliseconds (default is 0, do not limit) + var $_fieldweights; ///< per-field-name weights + var $_overrides; ///< per-query attribute values overrides + var $_select; ///< select-list (attributes or expressions, with optional aliases) + + var $_error; ///< last error message + var $_warning; ///< last warning message + var $_connerror; ///< connection error vs remote error flag + + var $_reqs; ///< requests array for multi-query + var $_mbenc; ///< stored mbstring encoding + var $_arrayresult; ///< whether $result["matches"] should be a hash or an array + var $_timeout; ///< connect timeout + + ///////////////////////////////////////////////////////////////////////////// + // common stuff + ///////////////////////////////////////////////////////////////////////////// + + /// create a new client object and fill defaults + function SphinxClient () + { + // per-client-object settings + $this->_host = "localhost"; + $this->_port = 9312; + $this->_path = false; + $this->_socket = false; + + // per-query settings + $this->_offset = 0; + $this->_limit = 20; + $this->_mode = SPH_MATCH_ALL; + $this->_weights = array (); + $this->_sort = SPH_SORT_RELEVANCE; + $this->_sortby = ""; + $this->_min_id = 0; + $this->_max_id = 0; + $this->_filters = array (); + $this->_groupby = ""; + $this->_groupfunc = SPH_GROUPBY_DAY; + $this->_groupsort = "@group desc"; + $this->_groupdistinct= ""; + $this->_maxmatches = 1000; + $this->_cutoff = 0; + $this->_retrycount = 0; + $this->_retrydelay = 0; + $this->_anchor = array (); + $this->_indexweights= array (); + $this->_ranker = SPH_RANK_PROXIMITY_BM25; + $this->_maxquerytime= 0; + $this->_fieldweights= array(); + $this->_overrides = array(); + $this->_select = "*"; + + $this->_error = ""; // per-reply fields (for single-query case) + $this->_warning = ""; + $this->_connerror = false; + + $this->_reqs = array (); // requests storage (for multi-query case) + $this->_mbenc = ""; + $this->_arrayresult = false; + $this->_timeout = 0; + } + + function __destruct() + { + if ( $this->_socket !== false ) + fclose ( $this->_socket ); + } + + /// get last error message (string) + function GetLastError () + { + return $this->_error; + } + + /// get last warning message (string) + function GetLastWarning () + { + return $this->_warning; + } + + /// get last error flag (to tell network connection errors from searchd errors or broken responses) + function IsConnectError() + { + return $this->_connerror; + } + + /// set searchd host name (string) and port (integer) + function SetServer ( $host, $port = 0 ) + { + assert ( is_string($host) ); + if ( $host[0] == '/') + { + $this->_path = 'unix://' . $host; + return; + } + if ( substr ( $host, 0, 7 )=="unix://" ) + { + $this->_path = $host; + return; + } + + assert ( is_int($port) ); + $this->_host = $host; + $this->_port = $port; + $this->_path = ''; + + } + + /// set server connection timeout (0 to remove) + function SetConnectTimeout ( $timeout ) + { + assert ( is_numeric($timeout) ); + $this->_timeout = $timeout; + } + + + function _Send ( $handle, $data, $length ) + { + if ( feof($handle) || fwrite ( $handle, $data, $length ) !== $length ) + { + $this->_error = 'connection unexpectedly closed (timed out?)'; + $this->_connerror = true; + return false; + } + return true; + } + + ///////////////////////////////////////////////////////////////////////////// + + /// enter mbstring workaround mode + function _MBPush () + { + $this->_mbenc = ""; + if ( ini_get ( "mbstring.func_overload" ) & 2 ) + { + $this->_mbenc = mb_internal_encoding(); + mb_internal_encoding ( "latin1" ); + } + } + + /// leave mbstring workaround mode + function _MBPop () + { + if ( $this->_mbenc ) + mb_internal_encoding ( $this->_mbenc ); + } + + /// connect to searchd server + function _Connect () + { + if ( $this->_socket!==false ) + { + // we are in persistent connection mode, so we have a socket + // however, need to check whether it's still alive + if ( !@feof ( $this->_socket ) ) + return $this->_socket; + + // force reopen + $this->_socket = false; + } + + $errno = 0; + $errstr = ""; + $this->_connerror = false; + + if ( $this->_path ) + { + $host = $this->_path; + $port = 0; + } + else + { + $host = $this->_host; + $port = $this->_port; + } + + if ( $this->_timeout<=0 ) + $fp = @fsockopen ( $host, $port, $errno, $errstr ); + else + $fp = @fsockopen ( $host, $port, $errno, $errstr, $this->_timeout ); + + if ( !$fp ) + { + if ( $this->_path ) + $location = $this->_path; + else + $location = "{$this->_host}:{$this->_port}"; + + $errstr = trim ( $errstr ); + $this->_error = "connection to $location failed (errno=$errno, msg=$errstr)"; + $this->_connerror = true; + return false; + } + + // send my version + // this is a subtle part. we must do it before (!) reading back from searchd. + // because otherwise under some conditions (reported on FreeBSD for instance) + // TCP stack could throttle write-write-read pattern because of Nagle. + if ( !$this->_Send ( $fp, pack ( "N", 1 ), 4 ) ) + { + fclose ( $fp ); + $this->_error = "failed to send client protocol version"; + return false; + } + + // check version + list(,$v) = unpack ( "N*", fread ( $fp, 4 ) ); + $v = (int)$v; + if ( $v<1 ) + { + fclose ( $fp ); + $this->_error = "expected searchd protocol version 1+, got version '$v'"; + return false; + } + + return $fp; + } + + /// get and check response packet from searchd server + function _GetResponse ( $fp, $client_ver ) + { + $response = ""; + $len = 0; + + $header = fread ( $fp, 8 ); + if ( strlen($header)==8 ) + { + list ( $status, $ver, $len ) = array_values ( unpack ( "n2a/Nb", $header ) ); + $left = $len; + while ( $left>0 && !feof($fp) ) + { + $chunk = fread ( $fp, min ( 8192, $left ) ); + if ( $chunk ) + { + $response .= $chunk; + $left -= strlen($chunk); + } + } + } + if ( $this->_socket === false ) + fclose ( $fp ); + + // check response + $read = strlen ( $response ); + if ( !$response || $read!=$len ) + { + $this->_error = $len + ? "failed to read searchd response (status=$status, ver=$ver, len=$len, read=$read)" + : "received zero-sized searchd response"; + return false; + } + + // check status + if ( $status==SEARCHD_WARNING ) + { + list(,$wlen) = unpack ( "N*", substr ( $response, 0, 4 ) ); + $this->_warning = substr ( $response, 4, $wlen ); + return substr ( $response, 4+$wlen ); + } + if ( $status==SEARCHD_ERROR ) + { + $this->_error = "searchd error: " . substr ( $response, 4 ); + return false; + } + if ( $status==SEARCHD_RETRY ) + { + $this->_error = "temporary searchd error: " . substr ( $response, 4 ); + return false; + } + if ( $status!=SEARCHD_OK ) + { + $this->_error = "unknown status code '$status'"; + return false; + } + + // check version + if ( $ver<$client_ver ) + { + $this->_warning = sprintf ( "searchd command v.%d.%d older than client's v.%d.%d, some options might not work", + $ver>>8, $ver&0xff, $client_ver>>8, $client_ver&0xff ); + } + + return $response; + } + + ///////////////////////////////////////////////////////////////////////////// + // searching + ///////////////////////////////////////////////////////////////////////////// + + /// set offset and count into result set, + /// and optionally set max-matches and cutoff limits + function SetLimits ( $offset, $limit, $max=0, $cutoff=0 ) + { + assert ( is_int($offset) ); + assert ( is_int($limit) ); + assert ( $offset>=0 ); + assert ( $limit>0 ); + assert ( $max>=0 ); + $this->_offset = $offset; + $this->_limit = $limit; + if ( $max>0 ) + $this->_maxmatches = $max; + if ( $cutoff>0 ) + $this->_cutoff = $cutoff; + } + + /// set maximum query time, in milliseconds, per-index + /// integer, 0 means "do not limit" + function SetMaxQueryTime ( $max ) + { + assert ( is_int($max) ); + assert ( $max>=0 ); + $this->_maxquerytime = $max; + } + + /// set matching mode + function SetMatchMode ( $mode ) + { + assert ( $mode==SPH_MATCH_ALL + || $mode==SPH_MATCH_ANY + || $mode==SPH_MATCH_PHRASE + || $mode==SPH_MATCH_BOOLEAN + || $mode==SPH_MATCH_EXTENDED + || $mode==SPH_MATCH_FULLSCAN + || $mode==SPH_MATCH_EXTENDED2 ); + $this->_mode = $mode; + } + + /// set ranking mode + function SetRankingMode ( $ranker ) + { + assert ( $ranker>=0 && $ranker_ranker = $ranker; + } + + /// set matches sorting mode + function SetSortMode ( $mode, $sortby="" ) + { + assert ( + $mode==SPH_SORT_RELEVANCE || + $mode==SPH_SORT_ATTR_DESC || + $mode==SPH_SORT_ATTR_ASC || + $mode==SPH_SORT_TIME_SEGMENTS || + $mode==SPH_SORT_EXTENDED || + $mode==SPH_SORT_EXPR ); + assert ( is_string($sortby) ); + assert ( $mode==SPH_SORT_RELEVANCE || strlen($sortby)>0 ); + + $this->_sort = $mode; + $this->_sortby = $sortby; + } + + /// bind per-field weights by order + /// DEPRECATED; use SetFieldWeights() instead + function SetWeights ( $weights ) + { + assert ( is_array($weights) ); + foreach ( $weights as $weight ) + assert ( is_int($weight) ); + + $this->_weights = $weights; + } + + /// bind per-field weights by name + function SetFieldWeights ( $weights ) + { + assert ( is_array($weights) ); + foreach ( $weights as $name=>$weight ) + { + assert ( is_string($name) ); + assert ( is_int($weight) ); + } + $this->_fieldweights = $weights; + } + + /// bind per-index weights by name + function SetIndexWeights ( $weights ) + { + assert ( is_array($weights) ); + foreach ( $weights as $index=>$weight ) + { + assert ( is_string($index) ); + assert ( is_int($weight) ); + } + $this->_indexweights = $weights; + } + + /// set IDs range to match + /// only match records if document ID is beetwen $min and $max (inclusive) + function SetIDRange ( $min, $max ) + { + assert ( is_numeric($min) ); + assert ( is_numeric($max) ); + assert ( $min<=$max ); + $this->_min_id = $min; + $this->_max_id = $max; + } + + /// set values set filter + /// only match records where $attribute value is in given set + function SetFilter ( $attribute, $values, $exclude=false ) + { + assert ( is_string($attribute) ); + assert ( is_array($values) ); + assert ( count($values) ); + + if ( is_array($values) && count($values) ) + { + foreach ( $values as $value ) + assert ( is_numeric($value) ); + + $this->_filters[] = array ( "type"=>SPH_FILTER_VALUES, "attr"=>$attribute, "exclude"=>$exclude, "values"=>$values ); + } + } + + /// set range filter + /// only match records if $attribute value is beetwen $min and $max (inclusive) + function SetFilterRange ( $attribute, $min, $max, $exclude=false ) + { + assert ( is_string($attribute) ); + assert ( is_numeric($min) ); + assert ( is_numeric($max) ); + assert ( $min<=$max ); + + $this->_filters[] = array ( "type"=>SPH_FILTER_RANGE, "attr"=>$attribute, "exclude"=>$exclude, "min"=>$min, "max"=>$max ); + } + + /// set float range filter + /// only match records if $attribute value is beetwen $min and $max (inclusive) + function SetFilterFloatRange ( $attribute, $min, $max, $exclude=false ) + { + assert ( is_string($attribute) ); + assert ( is_float($min) ); + assert ( is_float($max) ); + assert ( $min<=$max ); + + $this->_filters[] = array ( "type"=>SPH_FILTER_FLOATRANGE, "attr"=>$attribute, "exclude"=>$exclude, "min"=>$min, "max"=>$max ); + } + + /// setup anchor point for geosphere distance calculations + /// required to use @geodist in filters and sorting + /// latitude and longitude must be in radians + function SetGeoAnchor ( $attrlat, $attrlong, $lat, $long ) + { + assert ( is_string($attrlat) ); + assert ( is_string($attrlong) ); + assert ( is_float($lat) ); + assert ( is_float($long) ); + + $this->_anchor = array ( "attrlat"=>$attrlat, "attrlong"=>$attrlong, "lat"=>$lat, "long"=>$long ); + } + + /// set grouping attribute and function + function SetGroupBy ( $attribute, $func, $groupsort="@group desc" ) + { + assert ( is_string($attribute) ); + assert ( is_string($groupsort) ); + assert ( $func==SPH_GROUPBY_DAY + || $func==SPH_GROUPBY_WEEK + || $func==SPH_GROUPBY_MONTH + || $func==SPH_GROUPBY_YEAR + || $func==SPH_GROUPBY_ATTR + || $func==SPH_GROUPBY_ATTRPAIR ); + + $this->_groupby = $attribute; + $this->_groupfunc = $func; + $this->_groupsort = $groupsort; + } + + /// set count-distinct attribute for group-by queries + function SetGroupDistinct ( $attribute ) + { + assert ( is_string($attribute) ); + $this->_groupdistinct = $attribute; + } + + /// set distributed retries count and delay + function SetRetries ( $count, $delay=0 ) + { + assert ( is_int($count) && $count>=0 ); + assert ( is_int($delay) && $delay>=0 ); + $this->_retrycount = $count; + $this->_retrydelay = $delay; + } + + /// set result set format (hash or array; hash by default) + /// PHP specific; needed for group-by-MVA result sets that may contain duplicate IDs + function SetArrayResult ( $arrayresult ) + { + assert ( is_bool($arrayresult) ); + $this->_arrayresult = $arrayresult; + } + + /// set attribute values override + /// there can be only one override per attribute + /// $values must be a hash that maps document IDs to attribute values + function SetOverride ( $attrname, $attrtype, $values ) + { + assert ( is_string ( $attrname ) ); + assert ( in_array ( $attrtype, array ( SPH_ATTR_INTEGER, SPH_ATTR_TIMESTAMP, SPH_ATTR_BOOL, SPH_ATTR_FLOAT, SPH_ATTR_BIGINT ) ) ); + assert ( is_array ( $values ) ); + + $this->_overrides[$attrname] = array ( "attr"=>$attrname, "type"=>$attrtype, "values"=>$values ); + } + + /// set select-list (attributes or expressions), SQL-like syntax + function SetSelect ( $select ) + { + assert ( is_string ( $select ) ); + $this->_select = $select; + } + + ////////////////////////////////////////////////////////////////////////////// + + /// clear all filters (for multi-queries) + function ResetFilters () + { + $this->_filters = array(); + $this->_anchor = array(); + } + + /// clear groupby settings (for multi-queries) + function ResetGroupBy () + { + $this->_groupby = ""; + $this->_groupfunc = SPH_GROUPBY_DAY; + $this->_groupsort = "@group desc"; + $this->_groupdistinct= ""; + } + + /// clear all attribute value overrides (for multi-queries) + function ResetOverrides () + { + $this->_overrides = array (); + } + + ////////////////////////////////////////////////////////////////////////////// + + /// connect to searchd server, run given search query through given indexes, + /// and return the search results + function Query ( $query, $index="*", $comment="" ) + { + assert ( empty($this->_reqs) ); + + $this->AddQuery ( $query, $index, $comment ); + $results = $this->RunQueries (); + $this->_reqs = array (); // just in case it failed too early + + if ( !is_array($results) ) + return false; // probably network error; error message should be already filled + + $this->_error = $results[0]["error"]; + $this->_warning = $results[0]["warning"]; + if ( $results[0]["status"]==SEARCHD_ERROR ) + return false; + else + return $results[0]; + } + + /// helper to pack floats in network byte order + function _PackFloat ( $f ) + { + $t1 = pack ( "f", $f ); // machine order + list(,$t2) = unpack ( "L*", $t1 ); // int in machine order + return pack ( "N", $t2 ); + } + + /// add query to multi-query batch + /// returns index into results array from RunQueries() call + function AddQuery ( $query, $index="*", $comment="" ) + { + // mbstring workaround + $this->_MBPush (); + + // build request + $req = pack ( "NNNNN", $this->_offset, $this->_limit, $this->_mode, $this->_ranker, $this->_sort ); // mode and limits + $req .= pack ( "N", strlen($this->_sortby) ) . $this->_sortby; + $req .= pack ( "N", strlen($query) ) . $query; // query itself + $req .= pack ( "N", count($this->_weights) ); // weights + foreach ( $this->_weights as $weight ) + $req .= pack ( "N", (int)$weight ); + $req .= pack ( "N", strlen($index) ) . $index; // indexes + $req .= pack ( "N", 1 ); // id64 range marker + $req .= sphPackU64 ( $this->_min_id ) . sphPackU64 ( $this->_max_id ); // id64 range + + // filters + $req .= pack ( "N", count($this->_filters) ); + foreach ( $this->_filters as $filter ) + { + $req .= pack ( "N", strlen($filter["attr"]) ) . $filter["attr"]; + $req .= pack ( "N", $filter["type"] ); + switch ( $filter["type"] ) + { + case SPH_FILTER_VALUES: + $req .= pack ( "N", count($filter["values"]) ); + foreach ( $filter["values"] as $value ) + $req .= sphPackI64 ( $value ); + break; + + case SPH_FILTER_RANGE: + $req .= sphPackI64 ( $filter["min"] ) . sphPackI64 ( $filter["max"] ); + break; + + case SPH_FILTER_FLOATRANGE: + $req .= $this->_PackFloat ( $filter["min"] ) . $this->_PackFloat ( $filter["max"] ); + break; + + default: + assert ( 0 && "internal error: unhandled filter type" ); + } + $req .= pack ( "N", $filter["exclude"] ); + } + + // group-by clause, max-matches count, group-sort clause, cutoff count + $req .= pack ( "NN", $this->_groupfunc, strlen($this->_groupby) ) . $this->_groupby; + $req .= pack ( "N", $this->_maxmatches ); + $req .= pack ( "N", strlen($this->_groupsort) ) . $this->_groupsort; + $req .= pack ( "NNN", $this->_cutoff, $this->_retrycount, $this->_retrydelay ); + $req .= pack ( "N", strlen($this->_groupdistinct) ) . $this->_groupdistinct; + + // anchor point + if ( empty($this->_anchor) ) + { + $req .= pack ( "N", 0 ); + } else + { + $a =& $this->_anchor; + $req .= pack ( "N", 1 ); + $req .= pack ( "N", strlen($a["attrlat"]) ) . $a["attrlat"]; + $req .= pack ( "N", strlen($a["attrlong"]) ) . $a["attrlong"]; + $req .= $this->_PackFloat ( $a["lat"] ) . $this->_PackFloat ( $a["long"] ); + } + + // per-index weights + $req .= pack ( "N", count($this->_indexweights) ); + foreach ( $this->_indexweights as $idx=>$weight ) + $req .= pack ( "N", strlen($idx) ) . $idx . pack ( "N", $weight ); + + // max query time + $req .= pack ( "N", $this->_maxquerytime ); + + // per-field weights + $req .= pack ( "N", count($this->_fieldweights) ); + foreach ( $this->_fieldweights as $field=>$weight ) + $req .= pack ( "N", strlen($field) ) . $field . pack ( "N", $weight ); + + // comment + $req .= pack ( "N", strlen($comment) ) . $comment; + + // attribute overrides + $req .= pack ( "N", count($this->_overrides) ); + foreach ( $this->_overrides as $key => $entry ) + { + $req .= pack ( "N", strlen($entry["attr"]) ) . $entry["attr"]; + $req .= pack ( "NN", $entry["type"], count($entry["values"]) ); + foreach ( $entry["values"] as $id=>$val ) + { + assert ( is_numeric($id) ); + assert ( is_numeric($val) ); + + $req .= sphPackU64 ( $id ); + switch ( $entry["type"] ) + { + case SPH_ATTR_FLOAT: $req .= $this->_PackFloat ( $val ); break; + case SPH_ATTR_BIGINT: $req .= sphPackI64 ( $val ); break; + default: $req .= pack ( "N", $val ); break; + } + } + } + + // select-list + $req .= pack ( "N", strlen($this->_select) ) . $this->_select; + + // mbstring workaround + $this->_MBPop (); + + // store request to requests array + $this->_reqs[] = $req; + return count($this->_reqs)-1; + } + + /// connect to searchd, run queries batch, and return an array of result sets + function RunQueries () + { + if ( empty($this->_reqs) ) + { + $this->_error = "no queries defined, issue AddQuery() first"; + return false; + } + + // mbstring workaround + $this->_MBPush (); + + if (!( $fp = $this->_Connect() )) + { + $this->_MBPop (); + return false; + } + + // send query, get response + $nreqs = count($this->_reqs); + $req = join ( "", $this->_reqs ); + $len = 8+strlen($req); + $req = pack ( "nnNNN", SEARCHD_COMMAND_SEARCH, VER_COMMAND_SEARCH, $len, 0, $nreqs ) . $req; // add header + + if ( !( $this->_Send ( $fp, $req, $len+8 ) ) || + !( $response = $this->_GetResponse ( $fp, VER_COMMAND_SEARCH ) ) ) + { + $this->_MBPop (); + return false; + } + + // query sent ok; we can reset reqs now + $this->_reqs = array (); + + // parse and return response + return $this->_ParseSearchResponse ( $response, $nreqs ); + } + + /// parse and return search query (or queries) response + function _ParseSearchResponse ( $response, $nreqs ) + { + $p = 0; // current position + $max = strlen($response); // max position for checks, to protect against broken responses + + $results = array (); + for ( $ires=0; $ires<$nreqs && $p<$max; $ires++ ) + { + $results[] = array(); + $result =& $results[$ires]; + + $result["error"] = ""; + $result["warning"] = ""; + + // extract status + list(,$status) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + $result["status"] = $status; + if ( $status!=SEARCHD_OK ) + { + list(,$len) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + $message = substr ( $response, $p, $len ); $p += $len; + + if ( $status==SEARCHD_WARNING ) + { + $result["warning"] = $message; + } else + { + $result["error"] = $message; + continue; + } + } + + // read schema + $fields = array (); + $attrs = array (); + + list(,$nfields) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + while ( $nfields-->0 && $p<$max ) + { + list(,$len) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + $fields[] = substr ( $response, $p, $len ); $p += $len; + } + $result["fields"] = $fields; + + list(,$nattrs) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + while ( $nattrs-->0 && $p<$max ) + { + list(,$len) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + $attr = substr ( $response, $p, $len ); $p += $len; + list(,$type) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + $attrs[$attr] = $type; + } + $result["attrs"] = $attrs; + + // read match count + list(,$count) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + list(,$id64) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + + // read matches + $idx = -1; + while ( $count-->0 && $p<$max ) + { + // index into result array + $idx++; + + // parse document id and weight + if ( $id64 ) + { + $doc = sphUnpackU64 ( substr ( $response, $p, 8 ) ); $p += 8; + list(,$weight) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + } + else + { + list ( $doc, $weight ) = array_values ( unpack ( "N*N*", + substr ( $response, $p, 8 ) ) ); + $p += 8; + $doc = sphFixUint($doc); + } + $weight = sprintf ( "%u", $weight ); + + // create match entry + if ( $this->_arrayresult ) + $result["matches"][$idx] = array ( "id"=>$doc, "weight"=>$weight ); + else + $result["matches"][$doc]["weight"] = $weight; + + // parse and create attributes + $attrvals = array (); + foreach ( $attrs as $attr=>$type ) + { + // handle 64bit ints + if ( $type==SPH_ATTR_BIGINT ) + { + $attrvals[$attr] = sphUnpackI64 ( substr ( $response, $p, 8 ) ); $p += 8; + continue; + } + + // handle floats + if ( $type==SPH_ATTR_FLOAT ) + { + list(,$uval) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + list(,$fval) = unpack ( "f*", pack ( "L", $uval ) ); + $attrvals[$attr] = $fval; + continue; + } + + // handle everything else as unsigned ints + list(,$val) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + if ( $type & SPH_ATTR_MULTI ) + { + $attrvals[$attr] = array (); + $nvalues = $val; + while ( $nvalues-->0 && $p<$max ) + { + list(,$val) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + $attrvals[$attr][] = sphFixUint($val); + } + } else if ( $type==SPH_ATTR_STRING ) + { + $attrvals[$attr] = substr ( $response, $p, $val ); + $p += $val; + } else + { + $attrvals[$attr] = sphFixUint($val); + } + } + + if ( $this->_arrayresult ) + $result["matches"][$idx]["attrs"] = $attrvals; + else + $result["matches"][$doc]["attrs"] = $attrvals; + } + + list ( $total, $total_found, $msecs, $words ) = + array_values ( unpack ( "N*N*N*N*", substr ( $response, $p, 16 ) ) ); + $result["total"] = sprintf ( "%u", $total ); + $result["total_found"] = sprintf ( "%u", $total_found ); + $result["time"] = sprintf ( "%.3f", $msecs/1000 ); + $p += 16; + + while ( $words-->0 && $p<$max ) + { + list(,$len) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + $word = substr ( $response, $p, $len ); $p += $len; + list ( $docs, $hits ) = array_values ( unpack ( "N*N*", substr ( $response, $p, 8 ) ) ); $p += 8; + $result["words"][$word] = array ( + "docs"=>sprintf ( "%u", $docs ), + "hits"=>sprintf ( "%u", $hits ) ); + } + } + + $this->_MBPop (); + return $results; + } + + ///////////////////////////////////////////////////////////////////////////// + // excerpts generation + ///////////////////////////////////////////////////////////////////////////// + + /// connect to searchd server, and generate exceprts (snippets) + /// of given documents for given query. returns false on failure, + /// an array of snippets on success + function BuildExcerpts ( $docs, $index, $words, $opts=array() ) + { + assert ( is_array($docs) ); + assert ( is_string($index) ); + assert ( is_string($words) ); + assert ( is_array($opts) ); + + $this->_MBPush (); + + if (!( $fp = $this->_Connect() )) + { + $this->_MBPop(); + return false; + } + + ///////////////// + // fixup options + ///////////////// + + if ( !isset($opts["before_match"]) ) $opts["before_match"] = ""; + if ( !isset($opts["after_match"]) ) $opts["after_match"] = ""; + if ( !isset($opts["chunk_separator"]) ) $opts["chunk_separator"] = " ... "; + if ( !isset($opts["limit"]) ) $opts["limit"] = 256; + if ( !isset($opts["limit_passages"]) ) $opts["limit_passages"] = 0; + if ( !isset($opts["limit_words"]) ) $opts["limit_words"] = 0; + if ( !isset($opts["around"]) ) $opts["around"] = 5; + if ( !isset($opts["exact_phrase"]) ) $opts["exact_phrase"] = false; + if ( !isset($opts["single_passage"]) ) $opts["single_passage"] = false; + if ( !isset($opts["use_boundaries"]) ) $opts["use_boundaries"] = false; + if ( !isset($opts["weight_order"]) ) $opts["weight_order"] = false; + if ( !isset($opts["query_mode"]) ) $opts["query_mode"] = false; + if ( !isset($opts["force_all_words"]) ) $opts["force_all_words"] = false; + if ( !isset($opts["start_passage_id"]) ) $opts["start_passage_id"] = 1; + if ( !isset($opts["load_files"]) ) $opts["load_files"] = false; + if ( !isset($opts["html_strip_mode"]) ) $opts["html_strip_mode"] = "index"; + if ( !isset($opts["allow_empty"]) ) $opts["allow_empty"] = false; + if ( !isset($opts["passage_boundary"]) ) $opts["passage_boundary"] = "none"; + if ( !isset($opts["emit_zones"]) ) $opts["emit_zones"] = false; + + ///////////////// + // build request + ///////////////// + + // v.1.2 req + $flags = 1; // remove spaces + if ( $opts["exact_phrase"] ) $flags |= 2; + if ( $opts["single_passage"] ) $flags |= 4; + if ( $opts["use_boundaries"] ) $flags |= 8; + if ( $opts["weight_order"] ) $flags |= 16; + if ( $opts["query_mode"] ) $flags |= 32; + if ( $opts["force_all_words"] ) $flags |= 64; + if ( $opts["load_files"] ) $flags |= 128; + if ( $opts["allow_empty"] ) $flags |= 256; + if ( $opts["emit_zones"] ) $flags |= 512; + $req = pack ( "NN", 0, $flags ); // mode=0, flags=$flags + $req .= pack ( "N", strlen($index) ) . $index; // req index + $req .= pack ( "N", strlen($words) ) . $words; // req words + + // options + $req .= pack ( "N", strlen($opts["before_match"]) ) . $opts["before_match"]; + $req .= pack ( "N", strlen($opts["after_match"]) ) . $opts["after_match"]; + $req .= pack ( "N", strlen($opts["chunk_separator"]) ) . $opts["chunk_separator"]; + $req .= pack ( "NN", (int)$opts["limit"], (int)$opts["around"] ); + $req .= pack ( "NNN", (int)$opts["limit_passages"], (int)$opts["limit_words"], (int)$opts["start_passage_id"] ); // v.1.2 + $req .= pack ( "N", strlen($opts["html_strip_mode"]) ) . $opts["html_strip_mode"]; + $req .= pack ( "N", strlen($opts["passage_boundary"]) ) . $opts["passage_boundary"]; + + // documents + $req .= pack ( "N", count($docs) ); + foreach ( $docs as $doc ) + { + assert ( is_string($doc) ); + $req .= pack ( "N", strlen($doc) ) . $doc; + } + + //////////////////////////// + // send query, get response + //////////////////////////// + + $len = strlen($req); + $req = pack ( "nnN", SEARCHD_COMMAND_EXCERPT, VER_COMMAND_EXCERPT, $len ) . $req; // add header + if ( !( $this->_Send ( $fp, $req, $len+8 ) ) || + !( $response = $this->_GetResponse ( $fp, VER_COMMAND_EXCERPT ) ) ) + { + $this->_MBPop (); + return false; + } + + ////////////////// + // parse response + ////////////////// + + $pos = 0; + $res = array (); + $rlen = strlen($response); + for ( $i=0; $i $rlen ) + { + $this->_error = "incomplete reply"; + $this->_MBPop (); + return false; + } + $res[] = $len ? substr ( $response, $pos, $len ) : ""; + $pos += $len; + } + + $this->_MBPop (); + return $res; + } + + + ///////////////////////////////////////////////////////////////////////////// + // keyword generation + ///////////////////////////////////////////////////////////////////////////// + + /// connect to searchd server, and generate keyword list for a given query + /// returns false on failure, + /// an array of words on success + function BuildKeywords ( $query, $index, $hits ) + { + assert ( is_string($query) ); + assert ( is_string($index) ); + assert ( is_bool($hits) ); + + $this->_MBPush (); + + if (!( $fp = $this->_Connect() )) + { + $this->_MBPop(); + return false; + } + + ///////////////// + // build request + ///////////////// + + // v.1.0 req + $req = pack ( "N", strlen($query) ) . $query; // req query + $req .= pack ( "N", strlen($index) ) . $index; // req index + $req .= pack ( "N", (int)$hits ); + + //////////////////////////// + // send query, get response + //////////////////////////// + + $len = strlen($req); + $req = pack ( "nnN", SEARCHD_COMMAND_KEYWORDS, VER_COMMAND_KEYWORDS, $len ) . $req; // add header + if ( !( $this->_Send ( $fp, $req, $len+8 ) ) || + !( $response = $this->_GetResponse ( $fp, VER_COMMAND_KEYWORDS ) ) ) + { + $this->_MBPop (); + return false; + } + + ////////////////// + // parse response + ////////////////// + + $pos = 0; + $res = array (); + $rlen = strlen($response); + list(,$nwords) = unpack ( "N*", substr ( $response, $pos, 4 ) ); + $pos += 4; + for ( $i=0; $i<$nwords; $i++ ) + { + list(,$len) = unpack ( "N*", substr ( $response, $pos, 4 ) ); $pos += 4; + $tokenized = $len ? substr ( $response, $pos, $len ) : ""; + $pos += $len; + + list(,$len) = unpack ( "N*", substr ( $response, $pos, 4 ) ); $pos += 4; + $normalized = $len ? substr ( $response, $pos, $len ) : ""; + $pos += $len; + + $res[] = array ( "tokenized"=>$tokenized, "normalized"=>$normalized ); + + if ( $hits ) + { + list($ndocs,$nhits) = array_values ( unpack ( "N*N*", substr ( $response, $pos, 8 ) ) ); + $pos += 8; + $res [$i]["docs"] = $ndocs; + $res [$i]["hits"] = $nhits; + } + + if ( $pos > $rlen ) + { + $this->_error = "incomplete reply"; + $this->_MBPop (); + return false; + } + } + + $this->_MBPop (); + return $res; + } + + function EscapeString ( $string ) + { + $from = array ( '\\', '(',')','|','-','!','@','~','"','&', '/', '^', '$', '=' ); + $to = array ( '\\\\', '\(','\)','\|','\-','\!','\@','\~','\"', '\&', '\/', '\^', '\$', '\=' ); + + return str_replace ( $from, $to, $string ); + } + + ///////////////////////////////////////////////////////////////////////////// + // attribute updates + ///////////////////////////////////////////////////////////////////////////// + + /// batch update given attributes in given rows in given indexes + /// returns amount of updated documents (0 or more) on success, or -1 on failure + function UpdateAttributes ( $index, $attrs, $values, $mva=false ) + { + // verify everything + assert ( is_string($index) ); + assert ( is_bool($mva) ); + + assert ( is_array($attrs) ); + foreach ( $attrs as $attr ) + assert ( is_string($attr) ); + + assert ( is_array($values) ); + foreach ( $values as $id=>$entry ) + { + assert ( is_numeric($id) ); + assert ( is_array($entry) ); + assert ( count($entry)==count($attrs) ); + foreach ( $entry as $v ) + { + if ( $mva ) + { + assert ( is_array($v) ); + foreach ( $v as $vv ) + assert ( is_int($vv) ); + } else + assert ( is_int($v) ); + } + } + + // build request + $this->_MBPush (); + $req = pack ( "N", strlen($index) ) . $index; + + $req .= pack ( "N", count($attrs) ); + foreach ( $attrs as $attr ) + { + $req .= pack ( "N", strlen($attr) ) . $attr; + $req .= pack ( "N", $mva ? 1 : 0 ); + } + + $req .= pack ( "N", count($values) ); + foreach ( $values as $id=>$entry ) + { + $req .= sphPackU64 ( $id ); + foreach ( $entry as $v ) + { + $req .= pack ( "N", $mva ? count($v) : $v ); + if ( $mva ) + foreach ( $v as $vv ) + $req .= pack ( "N", $vv ); + } + } + + // connect, send query, get response + if (!( $fp = $this->_Connect() )) + { + $this->_MBPop (); + return -1; + } + + $len = strlen($req); + $req = pack ( "nnN", SEARCHD_COMMAND_UPDATE, VER_COMMAND_UPDATE, $len ) . $req; // add header + if ( !$this->_Send ( $fp, $req, $len+8 ) ) + { + $this->_MBPop (); + return -1; + } + + if (!( $response = $this->_GetResponse ( $fp, VER_COMMAND_UPDATE ) )) + { + $this->_MBPop (); + return -1; + } + + // parse response + list(,$updated) = unpack ( "N*", substr ( $response, 0, 4 ) ); + $this->_MBPop (); + return $updated; + } + + ///////////////////////////////////////////////////////////////////////////// + // persistent connections + ///////////////////////////////////////////////////////////////////////////// + + function Open() + { + if ( $this->_socket !== false ) + { + $this->_error = 'already connected'; + return false; + } + if ( !$fp = $this->_Connect() ) + return false; + + // command, command version = 0, body length = 4, body = 1 + $req = pack ( "nnNN", SEARCHD_COMMAND_PERSIST, 0, 4, 1 ); + if ( !$this->_Send ( $fp, $req, 12 ) ) + return false; + + $this->_socket = $fp; + return true; + } + + function Close() + { + if ( $this->_socket === false ) + { + $this->_error = 'not connected'; + return false; + } + + fclose ( $this->_socket ); + $this->_socket = false; + + return true; + } + + ////////////////////////////////////////////////////////////////////////// + // status + ////////////////////////////////////////////////////////////////////////// + + function Status () + { + $this->_MBPush (); + if (!( $fp = $this->_Connect() )) + { + $this->_MBPop(); + return false; + } + + $req = pack ( "nnNN", SEARCHD_COMMAND_STATUS, VER_COMMAND_STATUS, 4, 1 ); // len=4, body=1 + if ( !( $this->_Send ( $fp, $req, 12 ) ) || + !( $response = $this->_GetResponse ( $fp, VER_COMMAND_STATUS ) ) ) + { + $this->_MBPop (); + return false; + } + + $res = substr ( $response, 4 ); // just ignore length, error handling, etc + $p = 0; + list ( $rows, $cols ) = array_values ( unpack ( "N*N*", substr ( $response, $p, 8 ) ) ); $p += 8; + + $res = array(); + for ( $i=0; $i<$rows; $i++ ) + for ( $j=0; $j<$cols; $j++ ) + { + list(,$len) = unpack ( "N*", substr ( $response, $p, 4 ) ); $p += 4; + $res[$i][] = substr ( $response, $p, $len ); $p += $len; + } + + $this->_MBPop (); + return $res; + } + + ////////////////////////////////////////////////////////////////////////// + // flush + ////////////////////////////////////////////////////////////////////////// + + function FlushAttributes () + { + $this->_MBPush (); + if (!( $fp = $this->_Connect() )) + { + $this->_MBPop(); + return -1; + } + + $req = pack ( "nnN", SEARCHD_COMMAND_FLUSHATTRS, VER_COMMAND_FLUSHATTRS, 0 ); // len=0 + if ( !( $this->_Send ( $fp, $req, 8 ) ) || + !( $response = $this->_GetResponse ( $fp, VER_COMMAND_FLUSHATTRS ) ) ) + { + $this->_MBPop (); + return -1; + } + + $tag = -1; + if ( strlen($response)==4 ) + list(,$tag) = unpack ( "N*", $response ); + else + $this->_error = "unexpected response length"; + + $this->_MBPop (); + return $tag; + } +} + +// +// $Id: sphinxapi.php 2758 2011-04-04 11:10:44Z kevg $ +// diff --git a/plugins/share/init.php b/plugins/share/init.php new file mode 100644 index 0000000000..899677c32e --- /dev/null +++ b/plugins/share/init.php @@ -0,0 +1,133 @@ +host = $host; + + $host->add_hook($host::HOOK_ARTICLE_BUTTON, $this); + $host->add_hook($host::HOOK_PREFS_TAB_SECTION, $this); + } + + function get_js() { + return file_get_contents(dirname(__FILE__) . "/share.js"); + } + + function get_prefs_js() { + return file_get_contents(dirname(__FILE__) . "/share_prefs.js"); + } + + + function unshare() { + $id = db_escape_string($_REQUEST['id']); + + db_query("UPDATE ttrss_user_entries SET uuid = '' WHERE int_id = '$id' + AND owner_uid = " . $_SESSION['uid']); + + print "OK"; + } + + function hook_prefs_tab_section($id) { + if ($id == "prefFeedsPublishedGenerated") { + + print_warning(__("You can disable all articles shared by unique URLs here.")); + + print "

      "; + + print " "; + + print "

      "; + + } + } + + // Silent + function clearArticleKeys() { + db_query("UPDATE ttrss_user_entries SET uuid = '' WHERE + owner_uid = " . $_SESSION["uid"]); + + return; + } + + + function newkey() { + $id = db_escape_string($_REQUEST['id']); + + $uuid = db_escape_string(uniqid(base_convert(rand(), 10, 36))); + + db_query("UPDATE ttrss_user_entries SET uuid = '$uuid' WHERE int_id = '$id' + AND owner_uid = " . $_SESSION['uid']); + + print json_encode(array("link" => $uuid)); + } + + function hook_article_button($line) { + $img = $line['uuid'] ? "share.png" : "notshared.png"; + + return ""; + } + + function shareArticle() { + $param = db_escape_string($_REQUEST['param']); + + $result = db_query("SELECT uuid, ref_id FROM ttrss_user_entries WHERE int_id = '$param' + AND owner_uid = " . $_SESSION['uid']); + + if (db_num_rows($result) == 0) { + print "Article not found."; + } else { + + $uuid = db_fetch_result($result, 0, "uuid"); + $ref_id = db_fetch_result($result, 0, "ref_id"); + + if (!$uuid) { + $uuid = db_escape_string(uniqid(base_convert(rand(), 10, 36))); + db_query("UPDATE ttrss_user_entries SET uuid = '$uuid' WHERE int_id = '$param' + AND owner_uid = " . $_SESSION['uid']); + } + + print "

      ". __("You can share this article by the following unique URL:") . "

      "; + + $url_path = get_self_url_prefix(); + $url_path .= "/public.php?op=share&key=$uuid"; + + print "
      "; + print "$url_path"; + print "
      "; + + /* if (!label_find_id(__('Shared'), $_SESSION["uid"])) + label_create(__('Shared'), $_SESSION["uid"]); + + label_add_article($ref_id, __('Shared'), $_SESSION['uid']); */ + } + + print "
      "; + + print ""; + + print ""; + + print ""; + + print "
      "; + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/share/notshared.png b/plugins/share/notshared.png new file mode 100644 index 0000000000..523575306d Binary files /dev/null and b/plugins/share/notshared.png differ diff --git a/plugins/share/share.js b/plugins/share/share.js new file mode 100644 index 0000000000..09c973ed84 --- /dev/null +++ b/plugins/share/share.js @@ -0,0 +1,88 @@ +function shareArticle(id) { + try { + if (dijit.byId("shareArticleDlg")) + dijit.byId("shareArticleDlg").destroyRecursive(); + + var query = "backend.php?op=pluginhandler&plugin=share&method=shareArticle¶m=" + param_escape(id); + + dialog = new dijit.Dialog({ + id: "shareArticleDlg", + title: __("Share article by URL"), + style: "width: 600px", + newurl: function() { + + var ok = confirm(__("Generate new share URL for this article?")); + + if (ok) { + + notify_progress("Trying to change URL...", true); + + var query = "op=pluginhandler&plugin=share&method=newkey&id=" + param_escape(id); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + var reply = JSON.parse(transport.responseText); + var new_link = reply.link; + + var e = $('gen_article_url'); + + if (new_link) { + + e.innerHTML = e.innerHTML.replace(/\&key=.*$/, + "&key=" + new_link); + + e.href = e.href.replace(/\&key=.*$/, + "&key=" + new_link); + + new Effect.Highlight(e); + + var img = $("SHARE-IMG-" + id); + if (img) img.src = img.src.replace("notshared.png", "share.png"); + + notify(''); + + } else { + notify_error("Could not change URL."); + } + } }); + + } + + }, + unshare: function() { + + var ok = confirm(__("Remove sharing for this article?")); + + if (ok) { + + notify_progress("Trying to unshare...", true); + + var query = "op=pluginhandler&plugin=share&method=unshare&id=" + param_escape(id); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify("Article unshared."); + + var img = $("SHARE-IMG-" + id); + if (img) img.src = img.src.replace("share.png", "notshared.png"); + + dialog.hide(); + } }); + } + + }, + href: query}); + + dialog.show(); + + var img = $("SHARE-IMG-" + id); + if (img) img.src = img.src.replace("notshared.png", "share.png"); + + } catch (e) { + exception_error("shareArticle", e); + } +} + + diff --git a/plugins/share/share.png b/plugins/share/share.png new file mode 100644 index 0000000000..25eacb7c25 Binary files /dev/null and b/plugins/share/share.png differ diff --git a/plugins/share/share_prefs.js b/plugins/share/share_prefs.js new file mode 100644 index 0000000000..9efe291f9a --- /dev/null +++ b/plugins/share/share_prefs.js @@ -0,0 +1,21 @@ +function clearArticleAccessKeys() { + + var ok = confirm(__("This will invalidate all previously shared article URLs. Continue?")); + + if (ok) { + notify_progress("Clearing URLs..."); + + var query = "?op=pluginhandler&plugin=share&method=clearArticleKeys"; + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify_info("Shared URLs cleared."); + } }); + } + + return false; +} + + + diff --git a/plugins/shorten_expanded/init.css b/plugins/shorten_expanded/init.css new file mode 100644 index 0000000000..920e384158 --- /dev/null +++ b/plugins/shorten_expanded/init.css @@ -0,0 +1,9 @@ +div.contentSizeWrapper { + overflow : hidden; + text-overflow: ellipsis; + height : 800px; +} + +button.expandPrompt { + margin-top : 20px; +} diff --git a/plugins/shorten_expanded/init.js b/plugins/shorten_expanded/init.js new file mode 100644 index 0000000000..4d80f84072 --- /dev/null +++ b/plugins/shorten_expanded/init.js @@ -0,0 +1,45 @@ +var _shorten_expanded_threshold = 1.5; //window heights + +function expandSizeWrapper(id) { + try { + var row = $(id); + + console.log(row); + + if (row) { + var content = row.select(".contentSizeWrapper")[0]; + var link = row.select(".expandPrompt")[0]; + + if (content) content.removeClassName("contentSizeWrapper"); + if (link) Element.hide(link); + + } + } catch (e) { + exception_error("expandSizeWrapper", e); + } + + return false; + +} + +dojo.addOnLoad(function() { + PluginHost.register(PluginHost.HOOK_ARTICLE_RENDERED_CDM, function(row) { + if (getInitParam('cdm_expanded')) { + + window.setTimeout(function() { + if (row) { + if (row.offsetHeight >= _shorten_expanded_threshold * window.innerHeight) { + var content = row.select(".cdmContentInner")[0]; + + if (content) { + content.innerHTML = "
      " + + content.innerHTML + "
      "; + + } + } + } + }, 150); + } + }); +}); diff --git a/plugins/shorten_expanded/init.php b/plugins/shorten_expanded/init.php new file mode 100644 index 0000000000..1d0c99eca6 --- /dev/null +++ b/plugins/shorten_expanded/init.php @@ -0,0 +1,29 @@ +host = $host; + + } + + function get_css() { + return file_get_contents(__DIR__ . "/init.css"); + } + + function get_js() { + return file_get_contents(__DIR__ . "/init.js"); + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/swap_jk/init.php b/plugins/swap_jk/init.php new file mode 100644 index 0000000000..e60e7201f7 --- /dev/null +++ b/plugins/swap_jk/init.php @@ -0,0 +1,31 @@ +host = $host; + + $host->add_hook($host::HOOK_HOTKEY_MAP, $this); + } + + function hook_hotkey_map($hotkeys) { + + $hotkeys["j"] = "next_feed"; + $hotkeys["k"] = "prev_feed"; + + return $hotkeys; + } + + function api_version() { + return 2; + } + +} +?> diff --git a/plugins/vf_shared/init.php b/plugins/vf_shared/init.php new file mode 100644 index 0000000000..3138c8a7dc --- /dev/null +++ b/plugins/vf_shared/init.php @@ -0,0 +1,75 @@ +host = $host; + + $host->add_feed(-1, __("Shared articles"), 'plugins/vf_shared/share.png', $this); + } + + function api_version() { + return 2; + } + + function get_unread($feed_id) { + $result = db_query("select count(int_id) AS count from ttrss_user_entries where owner_uid = ".$_SESSION["uid"]." and unread = true and uuid != ''"); + + return db_fetch_result($result, 0, "count"); + } + + function get_total($feed_id) { + $result = db_query("select count(int_id) AS count from ttrss_user_entries where owner_uid = ".$_SESSION["uid"]." and uuid != ''"); + + return db_fetch_result($result, 0, "count"); + } + + //function queryFeedHeadlines($feed, $limit, $view_mode, $cat_view, $search, $search_mode, $override_order = false, $offset = 0, $owner_uid = 0, $filter = false, $since_id = 0, $include_children = false, $ignore_vfeed_group = false, $override_strategy = false, $override_vfeed = false) { + + function get_headlines($feed_id, $options) { + /*$qfh_ret = queryFeedHeadlines(-4, + $options['limit'], + $this->get_unread(-1) > 0 ? "adaptive" : "all_articles", + false, + $options['search'], + $options['search_mode'], + $options['override_order'], + $options['offset'], + $options['owner_uid'], + $options['filter'], + $options['since_id'], + $options['include_children'], + false, + "uuid != ''", + "ttrss_feeds.title AS feed_title,"); */ + + $params = array( + "feed" => -4, + "limit" => $options["limit"], + "view_mode" => $this->get_unread(-1) > 0 ? "adaptive" : "all_articles", + "search" => $options['search'], + "override_order" => $options['override_order'], + "offset" => $options["offset"], + "filter" => $options["filter"], + "since_id" => $options["since_id"], + "include_children" => $options["include_children"], + "override_strategy" => "uuid != ''", + "override_vfeed" => "ttrss_feeds.title AS feed_title," + ); + + $qfh_ret = queryFeedHeadlines($params); + $qfh_ret[1] = __("Shared articles"); + + return $qfh_ret; + } + +} +?> diff --git a/plugins/vf_shared/share.png b/plugins/vf_shared/share.png new file mode 100644 index 0000000000..25eacb7c25 Binary files /dev/null and b/plugins/vf_shared/share.png differ diff --git a/prefs.js b/prefs.js deleted file mode 100644 index 6d5e5a90cd..0000000000 --- a/prefs.js +++ /dev/null @@ -1,2193 +0,0 @@ -var active_feed_cat = false; -var active_tab = false; - -var init_params = new Array(); - -var caller_subop = false; -var sanity_check_done = false; -var hotkey_prefix = false; -var hotkey_prefix_pressed = false; - -var color_picker_active = false; -var selection_disabled = false; -var mouse_is_down = false; - -function feedlist_callback2(transport) { - - try { - - var container = $('prefContent'); - container.innerHTML=transport.responseText; - selectTab("feedConfig", true); - - if (caller_subop) { - var tuple = caller_subop.split(":"); - if (tuple[0] == 'editFeed') { - window.setTimeout('editFeed('+tuple[1]+')', 100); - } - - caller_subop = false; - } - if (typeof correctPNG != 'undefined') { - correctPNG(); - } - notify(""); - remove_splash(); - - } catch (e) { - exception_error("feedlist_callback2", e); - } -} - -function filterlist_callback2(transport) { - var container = $('prefContent'); - container.innerHTML=transport.responseText; - if (typeof correctPNG != 'undefined') { - correctPNG(); - } - notify(""); - remove_splash(); -} - -function init_label_inline_editor() { - try { - if ($("prefLabelList")) { - var elems = $("prefLabelList").getElementsByTagName("SPAN"); - - for (var i = 0; i < elems.length; i++) { - if (elems[i].id && elems[i].id.match("LILT-")) { - - var id = elems[i].id.replace("LILT-", ""); - - new Ajax.InPlaceEditor(elems[i], - 'backend.php?op=pref-labels&subop=save&id=' + id, - {cols: 20, rows: 1}); - - } - } - } - - } catch (e) { - exception_error("init_label_inline_editor", e); - } -} - -function labellist_callback2(transport) { - - try { - - var container = $('prefContent'); - closeInfoBox(); - container.innerHTML=transport.responseText; - - init_label_inline_editor(); - - if (typeof correctPNG != 'undefined') { - correctPNG(); - } - notify(""); - remove_splash(); - - } catch (e) { - exception_error("labellist_callback2", e); - } -} - -function userlist_callback2(transport) { - try { - var container = $('prefContent'); - if (transport.readyState == 4) { - container.innerHTML=transport.responseText; - notify(""); - remove_splash(); - } - } catch (e) { - exception_error("userlist_callback2", e); - } -} - -function prefslist_callback2(transport) { - try { - var container = $('prefContent'); - container.innerHTML=transport.responseText; - notify(""); - remove_splash(); - } catch (e) { - exception_error("prefslist_callback2", e); - } -} - -function notify_callback2(transport) { - notify_info(transport.responseText); -} - -function init_profile_inline_editor() { - try { - - if ($("prefFeedCatList")) { - var elems = $("prefFeedCatList").getElementsByTagName("SPAN"); - - for (var i = 0; i < elems.length; i++) { - if (elems[i].id && elems[i].id.match("FCATT-")) { - var id = elems[i].id.replace("FCATT-", ""); - new Ajax.InPlaceEditor(elems[i], - 'backend.php?op=rpc&subop=saveprofile&id=' + id); - } - } - } - - } catch (e) { - exception_error("init_profile_inline_editor", e); - } -} - -function init_cat_inline_editor() { - try { - - if ($("prefFeedCatList")) { - var elems = $("prefFeedCatList").getElementsByTagName("SPAN"); - - for (var i = 0; i < elems.length; i++) { - if (elems[i].id && elems[i].id.match("FCATT-")) { - var cat_id = elems[i].id.replace("FCATT-", ""); - new Ajax.InPlaceEditor(elems[i], - 'backend.php?op=pref-feeds&subop=editCats&action=save&cid=' + cat_id); - } - } - } - - } catch (e) { - exception_error("init_cat_inline_editor", e); - } -} - -function infobox_feed_cat_callback2(transport) { - try { - infobox_callback2(transport); - init_cat_inline_editor(); - } catch (e) { - exception_error("infobox_feed_cat_callback2", e); - } -} - -function updateFeedList(sort_key) { - - try { - - var feed_search = $("feed_search"); - var search = ""; - if (feed_search) { search = feed_search.value; } - - var slat = $("show_last_article_times"); - - var slat_checked = false; - if (slat) { - slat_checked = slat.checked; - } - - var query = "?op=pref-feeds" + - "&sort=" + param_escape(sort_key) + - "&slat=" + param_escape(slat_checked) + - "&search=" + param_escape(search); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - feedlist_callback2(transport); - } }); - } catch (e) { - exception_error("updateFeedList", e); - } -} - -function updateUsersList(sort_key) { - - try { - - var user_search = $("user_search"); - var search = ""; - if (user_search) { search = user_search.value; } - - var query = "?op=pref-users&sort=" - + param_escape(sort_key) + - "&search=" + param_escape(search); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - userlist_callback2(transport); - } }); - - } catch (e) { - exception_error("updateUsersList", e); - } -} - -function addFeed() { - - try { - - var link = $("fadd_link"); - - if (link.value.length == 0) { - alert(__("Error: No feed URL given.")); - } else if (!isValidURL(link.value)) { - alert(__("Error: Invalid feed URL.")); - } else { - notify_progress("Adding feed..."); - - var query = "?op=pref-feeds&subop=add&from=tt-rss&feed_url=" + - param_escape(link.value); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - feedlist_callback2(transport); - } }); - - link.value = ""; - - } - - } catch (e) { - exception_error("addFeed", e); - } - -} - -function addPrefProfile() { - - var profile = $("fadd_profile"); - - if (profile.value.length == 0) { - alert(__("Can't add profile: no name specified.")); - } else { - notify_progress("Adding profile..."); - - var query = "?op=rpc&subop=addprofile&title=" + - param_escape(profile.value); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - editProfiles(); - } }); - - } -} - - -function addFeedCat() { - - var cat = $("fadd_cat"); - - if (cat.value.length == 0) { - alert(__("Can't add category: no name specified.")); - } else { - notify_progress("Adding feed category..."); - - var query = "?op=pref-feeds&subop=editCats&action=add&cat=" + - param_escape(cat.value); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - infobox_feed_cat_callback2(transport); - } }); - - link.value = ""; - - } -} - -function addUser() { - - try { - - var login = prompt(__("Please enter login:"), ""); - - if (login == null) { - return false; - } - - if (login == "") { - alert(__("Can't create user: no login specified.")); - return false; - } - - notify_progress("Adding user..."); - - var query = "?op=pref-users&subop=add&login=" + - param_escape(login); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - userlist_callback2(transport); - } }); - - } catch (e) { - exception_error("addUser", e); - } -} - -function editUser(id) { - - try { - - disableHotkeys(); - - notify_progress("Loading, please wait..."); - - selectTableRowsByIdPrefix('prefUserList', 'UMRR-', 'UMCHK-', false); - selectTableRowById('UMRR-'+id, 'UMCHK-'+id, true); - - var query = "?op=pref-users&subop=edit&id=" + - param_escape(id); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - infobox_callback2(transport); - } }); - - } catch (e) { - exception_error("editUser", e); - } - -} - -function editFilter(id) { - - try { - - disableHotkeys(); - - notify_progress("Loading, please wait..."); - - selectTableRowsByIdPrefix('prefFilterList', 'FILRR-', 'FICHK-', false); - selectTableRowById('FILRR-'+id, 'FICHK-'+id, true); - - var query = "?op=pref-filters&subop=edit&id=" + - param_escape(id); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - infobox_callback2(transport); - } }); - } catch (e) { - exception_error("editFilter", e); - } -} - -function editFeed(feed) { - - try { - - disableHotkeys(); - - notify_progress("Loading, please wait..."); - - // clean selection from all rows & select row being edited - selectTableRowsByIdPrefix('prefFeedList', 'FEEDR-', 'FRCHK-', false); - selectTableRowById('FEEDR-'+feed, 'FRCHK-'+feed, true); - - var query = "?op=pref-feeds&subop=editfeed&id=" + - param_escape(feed); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - infobox_callback2(transport); - document.forms["edit_feed_form"].title.focus(); - } }); - - } catch (e) { - exception_error("editFeed", e); - } -} - -function getSelectedLabels() { - return getSelectedTableRowIds("prefLabelList", "LILRR"); -} - -function getSelectedUsers() { - return getSelectedTableRowIds("prefUserList", "UMRR"); -} - -function getSelectedFeeds() { - return getSelectedTableRowIds("prefFeedList", "FEEDR"); -} - -function getSelectedFilters() { - return getSelectedTableRowIds("prefFilterList", "FILRR"); -} - -function getSelectedFeedCats() { - return getSelectedTableRowIds("prefFeedCatList", "FCATR"); -} - - -function removeSelectedLabels() { - - var sel_rows = getSelectedLabels(); - - if (sel_rows.length > 0) { - - var ok = confirm(__("Remove selected labels?")); - - if (ok) { - notify_progress("Removing selected labels..."); - - var query = "?op=pref-labels&subop=remove&ids="+ - param_escape(sel_rows.toString()); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - labellist_callback2(transport); - } }); - - } - } else { - alert(__("No labels are selected.")); - } - - return false; -} - -function removeSelectedUsers() { - - try { - - var sel_rows = getSelectedUsers(); - - if (sel_rows.length > 0) { - - var ok = confirm(__("Remove selected users?")); - - if (ok) { - notify_progress("Removing selected users..."); - - var query = "?op=pref-users&subop=remove&ids="+ - param_escape(sel_rows.toString()); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - userlist_callback2(transport); - } }); - - } - - } else { - alert(__("No users are selected.")); - } - - } catch (e) { - exception_error("removeSelectedUsers", e); - } - - return false; -} - -function removeSelectedFilters() { - - try { - - var sel_rows = getSelectedFilters(); - - if (sel_rows.length > 0) { - - var ok = confirm(__("Remove selected filters?")); - - if (ok) { - notify_progress("Removing selected filters..."); - - var query = "?op=pref-filters&subop=remove&ids="+ - param_escape(sel_rows.toString()); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - filterlist_callback2(transport); - } }); - - } - } else { - alert(__("No filters are selected.")); - } - - } catch (e) { - exception_error("removeSelectedFilters", e); - } - - return false; -} - - -function removeSelectedFeeds() { - - try { - - var sel_rows = getSelectedFeeds(); - - if (sel_rows.length > 0) { - - var ok = confirm(__("Unsubscribe from selected feeds?")); - - if (ok) { - - notify_progress("Unsubscribing from selected feeds...", true); - - var query = "?op=pref-feeds&subop=remove&ids="+ - param_escape(sel_rows.toString()); - - debug(query); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - updateFeedList(); - } }); - } - - } else { - alert(__("No feeds are selected.")); - } - - } catch (e) { - exception_error("removeSelectedFeeds", e); - } - - return false; -} - -function clearSelectedFeeds() { - - var sel_rows = getSelectedFeeds(); - - if (sel_rows.length > 1) { - alert(__("Please select only one feed.")); - return; - } - - if (sel_rows.length > 0) { - - var ok = confirm(__("Erase all non-starred articles in selected feed?")); - - if (ok) { - notify_progress("Clearing selected feed..."); - clearFeedArticles(sel_rows[0]); - } - - } else { - - alert(__("No feeds are selected.")); - - } - - return false; -} - -function purgeSelectedFeeds() { - - var sel_rows = getSelectedFeeds(); - - if (sel_rows.length > 0) { - - var pr = prompt(__("How many days of articles to keep (0 - use default)?"), "0"); - - if (pr != undefined) { - notify_progress("Purging selected feed..."); - - var query = "?op=rpc&subop=purge&ids="+ - param_escape(sel_rows.toString()) + "&days=" + pr; - - debug(query); - - new Ajax.Request("prefs.php", { - parameters: query, - onComplete: function(transport) { - notify(''); - } }); - } - - } else { - - alert(__("No feeds are selected.")); - - } - - return false; -} - -function removeSelectedPrefProfiles() { - - var sel_rows = getSelectedFeedCats(); - - if (sel_rows.length > 0) { - - var ok = confirm(__("Remove selected profiles? Active and default profiles will not be removed.")); - - if (ok) { - notify_progress("Removing selected profiles..."); - - var query = "?op=rpc&subop=remprofiles&ids="+ - param_escape(sel_rows.toString()); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - editProfiles(); - } }); - } - - } else { - alert(__("No profiles selected.")); - } - - return false; -} - -function removeSelectedFeedCats() { - - var sel_rows = getSelectedFeedCats(); - - if (sel_rows.length > 0) { - - var ok = confirm(__("Remove selected categories?")); - - if (ok) { - notify_progress("Removing selected categories..."); - - var query = "?op=pref-feeds&subop=editCats&action=remove&ids="+ - param_escape(sel_rows.toString()); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - infobox_feed_cat_callback2(transport); - } }); - - } - - } else { - - alert(__("No categories are selected.")); - - } - - return false; -} - -function feedEditCancel() { - - closeInfoBox(); - - selectPrefRows('feed', false); // cleanup feed selection - - return false; -} - -function feedEditSave() { - - try { - - // FIXME: add parameter validation - - var query = Form.serialize("edit_feed_form"); - - notify_progress("Saving feed..."); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - feedlist_callback2(transport); - } }); - - closeInfoBox(); - - return false; - - } catch (e) { - exception_error("feedEditSave", e); - } -} - -function userEditCancel() { - - selectPrefRows('user', false); // cleanup feed selection - closeInfoBox(); - - return false; -} - -function filterEditCancel() { - - try { - selectPrefRows('filter', false); // cleanup feed selection - } catch (e) { } - - closeInfoBox(); - - return false; -} - -function userEditSave() { - - try { - - var login = document.forms["user_edit_form"].login.value; - - if (login.length == 0) { - alert(__("Login field cannot be blank.")); - return; - } - - notify_progress("Saving user..."); - - closeInfoBox(); - - var query = Form.serialize("user_edit_form"); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - userlist_callback2(transport); - } }); - - } catch (e) { - exception_error("userEditSave", e); - } - - return false; - -} - - -function filterEditSave() { - - try { - - notify_progress("Saving filter..."); - - var query = "?" + Form.serialize("filter_edit_form"); - - closeInfoBox(); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - filterlist_callback2(transport); - } }); - - } catch (e) { - exception_error("filterEditSave", e); - } - - return false; -} - - -function editSelectedUser() { - var rows = getSelectedUsers(); - - if (rows.length == 0) { - alert(__("No users are selected.")); - return; - } - - if (rows.length > 1) { - alert(__("Please select only one user.")); - return; - } - - notify(""); - - editUser(rows[0]); -} - -function resetSelectedUserPass() { - - try { - - var rows = getSelectedUsers(); - - if (rows.length == 0) { - alert(__("No users are selected.")); - return; - } - - if (rows.length > 1) { - alert(__("Please select only one user.")); - return; - } - - var ok = confirm(__("Reset password of selected user?")); - - if (ok) { - notify_progress("Resetting password for selected user..."); - - var id = rows[0]; - - var query = "?op=pref-users&subop=resetPass&id=" + - param_escape(id); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - userlist_callback2(transport); - } }); - - } - - } catch (e) { - exception_error("resetSelectedUserPass", e); - } -} - -function selectedUserDetails() { - - try { - - var rows = getSelectedUsers(); - - if (rows.length == 0) { - alert(__("No users are selected.")); - return; - } - - if (rows.length > 1) { - alert(__("Please select only one user.")); - return; - } - - notify_progress("Loading, please wait..."); - - var id = rows[0]; - - var query = "?op=pref-users&subop=user-details&id=" + id; - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - infobox_callback2(transport); - } }); - } catch (e) { - exception_error("selectedUserDetails", e); - } -} - - -function editSelectedFilter() { - var rows = getSelectedFilters(); - - if (rows.length == 0) { - alert(__("No filters are selected.")); - return; - } - - if (rows.length > 1) { - alert(__("Please select only one filter.")); - return; - } - - notify(""); - - editFilter(rows[0]); - -} - - -function editSelectedFeed() { - var rows = getSelectedFeeds(); - - if (rows.length == 0) { - alert(__("No feeds are selected.")); - return; - } - - if (rows.length > 1) { - return editSelectedFeeds(); - } - - notify(""); - - editFeed(rows[0]); - -} - -function editSelectedFeeds() { - - try { - var rows = getSelectedFeeds(); - - if (rows.length == 0) { - alert(__("No feeds are selected.")); - return; - } - - notify(""); - - disableHotkeys(); - - notify_progress("Loading, please wait..."); - - var query = "?op=pref-feeds&subop=editfeeds&ids=" + - param_escape(rows.toString()); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - infobox_callback2(transport); - } }); - - } catch (e) { - exception_error("editSelectedFeeds", e); - } -} - -function piggie(enable) { - if (enable) { - debug("I LOVEDED IT!"); - var piggie = $("piggie"); - - Element.show(piggie); - Position.Center(piggie); - Effect.Puff(piggie); - - } -} - -function opmlImport() { - - var opml_file = $("opml_file"); - - if (opml_file.value.length == 0) { - alert(__("No OPML file to upload.")); - return false; - } else { - return true; - } - - notify_progress("Importing, please wait...", true); -} - -function updateFilterList(sort_key) { - try { - - var filter_search = $("filter_search"); - var search = ""; - if (filter_search) { search = filter_search.value; } - - var query = "?op=pref-filters&sort=" + - param_escape(sort_key) + - "&search=" + param_escape(search); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - filterlist_callback2(transport); - } }); - - } catch (e) { - exception_error("updateFilterList", e); - } - -} - -function updateLabelList(sort_key) { - - try { - - var label_search = $("label_search"); - var search = ""; - if (label_search) { search = label_search.value; } - - var query = "?op=pref-labels&sort=" + - param_escape(sort_key) + - "&search=" + param_escape(search); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - labellist_callback2(transport); - } }); - - } catch (e) { - exception_error("updateLabelList", e); - } -} - -function updatePrefsList() { - - var query = "?op=pref-prefs"; - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - prefslist_callback2(transport); - } }); - -} - -function selectTab(id, noupdate, subop) { - -// alert(id); - - if (!id) id = active_tab; - - try { - - try { - if (id != active_tab) { - var c = $('prefContent'); - c.scrollTop = 0; - } - } catch (e) { }; - - if (!noupdate) { - - debug("selectTab: " + id + "(NU: " + noupdate + ")"); - - notify_progress("Loading, please wait..."); - - // close active infobox if needed - closeInfoBox(); - - // clean up all current selections, just in case - active_feed_cat = false; - -// Effect.Fade("prefContent", {duration: 1, to: 0.01, -// queue: { position:'end', scope: 'FEED_TAB', limit: 1 } } ); - - if (id == "feedConfig") { - updateFeedList(); - } else if (id == "filterConfig") { - updateFilterList(); - } else if (id == "labelConfig") { - updateLabelList(); - } else if (id == "genConfig") { - updatePrefsList(); - } else if (id == "userConfig") { - updateUsersList(); - } - } - - /* clean selection from all tabs */ - - var tabs_holder = $("prefTabs"); - var tab = tabs_holder.firstChild; - - while (tab) { - if (tab.className && tab.className.match("prefsTabSelected")) { - tab.className = "prefsTab"; - } - tab = tab.nextSibling; - } - - /* mark new tab as selected */ - - tab = $(id + "Tab"); - - if (tab) { - if (!tab.className.match("Selected")) { - tab.className = tab.className + "Selected"; - } - } - - active_tab = id; - - } catch (e) { - exception_error("selectTab", e); - } -} - -function backend_sanity_check_callback2(transport) { - - try { - - if (sanity_check_done) { - fatalError(11, "Sanity check request received twice. This can indicate "+ - "presence of Firebug or some other disrupting extension. "+ - "Please disable it and try again."); - return; - } - - if (!transport.responseXML) { - fatalError(3, "Sanity Check: Received reply is not XML", - transport.responseText); - return; - } - - var reply = transport.responseXML.firstChild.firstChild; - - if (!reply) { - fatalError(3, "Sanity Check: Invalid RPC reply", transport.responseText); - return; - } - - var error_code = reply.getAttribute("error-code"); - - if (error_code && error_code != 0) { - return fatalError(error_code, reply.getAttribute("error-msg")); - } - - debug("sanity check ok"); - - var params = reply.nextSibling; - - if (params) { - debug('reading init-params...'); - var param = params.firstChild; - - while (param) { - var k = param.getAttribute("key"); - var v = param.getAttribute("value"); - debug(k + " => " + v); - init_params[k] = v; - param = param.nextSibling; - } - } - - sanity_check_done = true; - - init_second_stage(); - - } catch (e) { - exception_error("backend_sanity_check_callback", e); - } -} - -function init_second_stage() { - - try { - active_tab = getInitParam("prefs_active_tab"); - if (!$(active_tab+"Tab")) active_tab = "genConfig"; - if (!active_tab || active_tab == '0') active_tab = "genConfig"; - - document.onkeydown = pref_hotkey_handler; - document.onmousedown = mouse_down_handler; - document.onmouseup = mouse_up_handler; - - var tab = getURLParam('tab'); - - caller_subop = getURLParam('subop'); - - if (getURLParam("subopparam")) { - caller_subop = caller_subop + ":" + getURLParam("subopparam"); - } - - if (tab) { - active_tab = tab; - } - - if (navigator.userAgent.match("Opera")) { - setTimeout("selectTab()", 500); - } else { - selectTab(active_tab); - } - notify(""); - - loading_set_progress(60); - - setTimeout("hotkey_prefix_timeout()", 5*1000); - - } catch (e) { - exception_error("init_second_stage", e); - } -} - -function init() { - - try { - - if (getURLParam('debug')) { - Element.show("debug_output"); - debug('debug mode activated'); - } - - loading_set_progress(30); - - var query = "?op=rpc&subop=sanityCheck"; - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - backend_sanity_check_callback2(transport); - } }); - - } catch (e) { - exception_error("init", e); - } -} - -function validatePrefsReset() { - try { - var ok = confirm(__("Reset to defaults?")); - - if (ok) { - - var query = Form.serialize("pref_prefs_form"); - query = query + "&subop=reset-config"; - debug(query); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - var msg = transport.responseText; - if (msg.match("PREFS_THEME_CHANGED")) { - window.location.reload(); - } else { - notify_info(msg); - selectTab(); - } - } }); - - } - - } catch (e) { - exception_error("validatePrefsReset", e); - } - - return false; - -} - -function selectPrefRows(kind, select) { - - if (kind) { - var opbarid = false; - var nchk = false; - var nrow = false; - var lname = false; - - if (kind == "feed") { - opbarid = "feedOpToolbar"; - nrow = "FEEDR-"; - nchk = "FRCHK-"; - lname = "prefFeedList"; - } else if (kind == "fcat") { - opbarid = "catOpToolbar"; - nrow = "FCATR-"; - nchk = "FCCHK-"; - lname = "prefFeedCatList"; - } else if (kind == "filter") { - opbarid = "filterOpToolbar"; - nrow = "FILRR-"; - nchk = "FICHK-"; - lname = "prefFilterList"; - } else if (kind == "label") { - opbarid = "labelOpToolbar"; - nrow = "LILRR-"; - nchk = "LICHK-"; - lname = "prefLabelList"; - } else if (kind == "user") { - opbarid = "userOpToolbar"; - nrow = "UMRR-"; - nchk = "UMCHK-"; - lname = "prefUserList"; - } else if (kind == "fbrowse") { - opbarid = "browseOpToolbar"; - nrow = "FBROW-"; - nchk = "FBCHK-"; - lname = "browseFeedList"; - } - - if (opbarid) { - selectTableRowsByIdPrefix(lname, nrow, nchk, select); - } - - } -} - - -function toggleSelectPrefRow(sender, kind) { - - toggleSelectRow(sender); - - if (kind) { - var opbarid = false; - var nsel = -1; - - if (kind == "feed") { - opbarid = "feedOpToolbar"; - nsel = getSelectedFeeds(); - } else if (kind == "fcat") { - opbarid = "catOpToolbar"; - nsel = getSelectedFeedCats(); - } else if (kind == "filter") { - opbarid = "filterOpToolbar"; - nsel = getSelectedFilters(); - } else if (kind == "label") { - opbarid = "labelOpToolbar"; - nsel = getSelectedLabels(); - } else if (kind == "user") { - opbarid = "userOpToolbar"; - nsel = getSelectedUsers(); - } - - } -} - -function toggleSelectFBListRow(sender) { - toggleSelectListRow(sender); -} - -var seq = ""; - -function pref_hotkey_handler(e) { - try { - - var keycode; - var shift_key = false; - - var cmdline = $('cmdline'); - - try { - shift_key = e.shiftKey; - } catch (e) { - - } - - if (window.event) { - keycode = window.event.keyCode; - } else if (e) { - keycode = e.which; - } - - var keychar = String.fromCharCode(keycode); - - if (keycode == 27) { // escape - if (Element.visible("hotkey_help_overlay")) { - Element.hide("hotkey_help_overlay"); - } - colorPickerHideAll(); - hotkey_prefix = false; - closeInfoBox(); - } - - if (!hotkeys_enabled) { - debug("hotkeys disabled"); - return; - } - - if (keycode == 16) return; // ignore lone shift - - if ((keycode == 67 || keycode == 71) && !hotkey_prefix) { - hotkey_prefix = keycode; - - var date = new Date(); - var ts = Math.round(date.getTime() / 1000); - - hotkey_prefix_pressed = ts; - - cmdline.innerHTML = keychar; - Element.show(cmdline); - - debug("KP: PREFIX=" + keycode + " CHAR=" + keychar); - return; - } - - if (Element.visible("hotkey_help_overlay")) { - Element.hide("hotkey_help_overlay"); - } - - if (keycode == 13 || keycode == 27) { - seq = ""; - } else { - seq = seq + "" + keycode; - } - - /* Global hotkeys */ - - Element.hide(cmdline); - - if (!hotkey_prefix) { - - if (keycode == 68 && shift_key) { // d - if (!Element.visible("debug_output")) { - Element.show("debug_output"); - debug('debug mode activated'); - } else { - Element.hide("debug_output"); - } - return; - } - - if ((keycode == 191 || keychar == '?') && shift_key) { // ? - if (!Element.visible("hotkey_help_overlay")) { - //Element.show("hotkey_help_overlay"); - Effect.Appear("hotkey_help_overlay", {duration : 0.3}); - } else { - Element.hide("hotkey_help_overlay"); - } - return false; - } - - if (keycode == 191 || keychar == '/') { // / - var search_boxes = new Array("label_search", - "feed_search", "filter_search", "user_search", "feed_browser_search"); - - for (var i = 0; i < search_boxes.length; i++) { - var elem = $(search_boxes[i]); - if (elem) { - focus_element(search_boxes[i]); - return false; - } - } - } - } - - /* Prefix c */ - - if (hotkey_prefix == 67) { // c - hotkey_prefix = false; - - if (keycode == 70) { // f - quickAddFilter(); - return false; - } - - if (keycode == 83) { // s - quickAddFeed(); - return false; - } - - if (keycode == 85) { // u - // no-op - } - - if (keycode == 67) { // c - editFeedCats(); - return false; - } - - if (keycode == 84 && shift_key) { // T - displayDlg('feedBrowser'); - return false; - } - - } - - /* Prefix g */ - - if (hotkey_prefix == 71) { // g - - hotkey_prefix = false; - - if (keycode == 49 && $("genConfigTab")) { // 1 - selectTab("genConfig"); - return false; - } - - if (keycode == 50 && $("feedConfigTab")) { // 2 - selectTab("feedConfig"); - return false; - } - - if (keycode == 51 && $("filterConfigTab")) { // 4 - selectTab("filterConfig"); - return false; - } - - if (keycode == 52 && $("labelConfigTab")) { // 5 - selectTab("labelConfig"); - return false; - } - - if (keycode == 53 && $("userConfigTab")) { // 6 - selectTab("userConfig"); - return false; - } - - if (keycode == 88) { // x - return gotoMain(); - } - - } - - if ($("piggie")) { - - if (seq.match("807371717369")) { - seq = ""; - piggie(true); - } else { - piggie(false); - } - } - - if (hotkey_prefix) { - debug("KP: PREFIX=" + hotkey_prefix + " CODE=" + keycode + " CHAR=" + keychar); - } else { - debug("KP: CODE=" + keycode + " CHAR=" + keychar); - } - - } catch (e) { - exception_error("pref_hotkey_handler", e); - } -} - -function editFeedCats() { - try { - var query = "?op=pref-feeds&subop=editCats"; - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - infobox_feed_cat_callback2(transport); - } }); - } catch (e) { - exception_error("editFeedCats", e); - } -} - -function showFeedsWithErrors() { - displayDlg('feedUpdateErrors'); -} - -function changeUserPassword() { - - try { - - var f = document.forms["change_pass_form"]; - - if (f) { - if (f.OLD_PASSWORD.value == "") { - new Effect.Highlight(f.OLD_PASSWORD); - notify_error("Old password cannot be blank."); - return false; - } - - if (f.NEW_PASSWORD.value == "") { - new Effect.Highlight(f.NEW_PASSWORD); - notify_error("New password cannot be blank."); - return false; - } - - if (f.CONFIRM_PASSWORD.value == "") { - new Effect.Highlight(f.CONFIRM_PASSWORD); - notify_error("Entered passwords do not match."); - return false; - } - - if (f.CONFIRM_PASSWORD.value != f.NEW_PASSWORD.value) { - new Effect.Highlight(f.CONFIRM_PASSWORD); - new Effect.Highlight(f.NEW_PASSWORD); - notify_error("Entered passwords do not match."); - return false; - } - - } - - var query = Form.serialize("change_pass_form"); - - notify_progress("Changing password..."); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - if (transport.responseText.indexOf("ERROR: ") == 0) { - notify_error(transport.responseText.replace("ERROR: ", "")); - } else { - notify_info(transport.responseText); - var warn = $("default_pass_warning"); - if (warn) warn.style.display = "none"; - } - - document.forms['change_pass_form'].reset(); - } }); - - - } catch (e) { - exception_error("changeUserPassword", e); - } - - return false; -} - -function changeUserEmail() { - - try { - - var query = Form.serialize("change_email_form"); - - notify_progress("Trying to change e-mail..."); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - notify_callback2(transport); - } }); - - } catch (e) { - exception_error("changeUserPassword", e); - } - - return false; - -} - -function feedlistToggleSLAT() { - notify_progress("Loading, please wait..."); - updateFeedList() -} - -function pubRegenKey() { - - try { - var ok = confirm(__("Replace current publishing address with a new one?")); - - if (ok) { - - notify_progress("Trying to change address...", true); - - var query = "?op=rpc&subop=regenPubKey"; - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - var new_link = transport.responseXML.getElementsByTagName("link")[0]; - - var e = $('pub_feed_url'); - - if (new_link) { - e.href = new_link.firstChild.nodeValue; - e.innerHTML = new_link.firstChild.nodeValue; - - new Effect.Highlight(e); - - notify(''); - - } else { - notify_error("Could not change feed URL."); - } - } }); - } - } catch (e) { - exception_error("pubRegenKey", e); - } - return false; -} - -function opmlRegenKey() { - - try { - var ok = confirm(__("Replace current OPML publishing address with a new one?")); - - if (ok) { - - notify_progress("Trying to change address...", true); - - var query = "?op=rpc&subop=regenOPMLKey"; - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - var new_link = transport.responseXML.getElementsByTagName("link")[0]; - - var e = $('pub_opml_url'); - - if (new_link) { - e.href = new_link.firstChild.nodeValue; - e.innerHTML = new_link.firstChild.nodeValue; - - new Effect.Highlight(e); - - notify(''); - - } else { - notify_error("Could not change feed URL."); - } - } }); - } - } catch (e) { - exception_error("opmlRegenKey", e); - } - return false; -} -function validatePrefsSave() { - try { - - var ok = confirm(__("Save current configuration?")); - - if (ok) { - - var query = Form.serialize("pref_prefs_form"); - query = query + "&subop=save-config"; - debug(query); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - var msg = transport.responseText; - if (msg.match("PREFS_THEME_CHANGED")) { - window.location.reload(); - } else { - notify_info(msg); - } - } }); - - } - - } catch (e) { - exception_error("validatePrefsSave", e); - } - - return false; -} - -function feedActionChange() { - try { - var chooser = $("feedActionChooser"); - var opid = chooser[chooser.selectedIndex].value; - - chooser.selectedIndex = 0; - feedActionGo(opid); - } catch (e) { - exception_error("feedActionChange", e); - } -} - -function feedActionGo(op) { - try { - if (op == "facEdit") { - - var rows = getSelectedFeeds(); - - if (rows.length > 1) { - editSelectedFeeds(); - } else { - editSelectedFeed(); - } - } - - if (op == "facClear") { - clearSelectedFeeds(); - } - - if (op == "facPurge") { - purgeSelectedFeeds(); - } - - if (op == "facEditCats") { - editFeedCats(); - } - - if (op == "facRescore") { - rescoreSelectedFeeds(); - } - - if (op == "facUnsubscribe") { - removeSelectedFeeds(); - } - - } catch (e) { - exception_error("feedActionGo", e); - - } -} - -function clearFeedArticles(feed_id) { - - notify_progress("Clearing feed..."); - - var query = "?op=pref-feeds&quiet=1&subop=clear&id=" + feed_id; - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - notify(''); - } }); - - return false; -} - -function rescoreSelectedFeeds() { - - var sel_rows = getSelectedFeeds(); - - if (sel_rows.length > 0) { - - //var ok = confirm(__("Rescore last 100 articles in selected feeds?")); - var ok = confirm(__("Rescore articles in selected feeds?")); - - if (ok) { - notify_progress("Rescoring selected feeds...", true); - - var query = "?op=pref-feeds&subop=rescore&quiet=1&ids="+ - param_escape(sel_rows.toString()); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - notify_callback2(transport); - } }); - - } - } else { - alert(__("No feeds are selected.")); - } - - return false; -} - -function rescore_all_feeds() { - var ok = confirm(__("Rescore all articles? This operation may take a lot of time.")); - - if (ok) { - notify_progress("Rescoring feeds...", true); - - var query = "?op=pref-feeds&subop=rescoreAll&quiet=1"; - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - notify_callback2(transport); - } }); - } -} - -function removeFilter(id, title) { - - try { - - var msg = __("Remove filter %s?").replace("%s", title); - - var ok = confirm(msg); - - if (ok) { - closeInfoBox(); - - notify_progress("Removing filter..."); - - var query = "?op=pref-filters&subop=remove&ids="+ - param_escape(id); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - filterlist_callback2(transport); - } }); - - } - - } catch (e) { - exception_error("removeFilter", e); - } - - return false; -} - -/*function unsubscribeFeed(id, title) { - - try { - - var msg = __("Unsubscribe from %s?").replace("%s", title); - - var ok = confirm(msg); - - if (ok) { - closeInfoBox(); - - notify_progress("Removing feed..."); - - var query = "?op=pref-feeds&subop=remove&ids="+ - param_escape(id); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - feedlist_callback2(transport); - } }); - } - - } catch (e) { - exception_error("unsubscribeFeed", e); - } - - return false; - -} */ - -function feedsEditSave() { - try { - - var ok = confirm(__("Save changes to selected feeds?")); - - if (ok) { - - var f = document.forms["batch_edit_feed_form"]; - - var query = Form.serialize("batch_edit_feed_form"); - - /* Form.serialize ignores unchecked checkboxes */ - - if (!query.match("&rtl_content=") && - f.rtl_content.disabled == false) { - query = query + "&rtl_content=false"; - } - - if (!query.match("&private=") && - f.private.disabled == false) { - query = query + "&private=false"; - } - - if (!query.match("&cache_images=") && - f.cache_images.disabled == false) { - query = query + "&cache_images=false"; - } - - if (!query.match("&include_in_digest=") && - f.include_in_digest.disabled == false) { - query = query + "&include_in_digest=false"; - } - - closeInfoBox(); - - notify_progress("Saving feeds..."); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - feedlist_callback2(transport); - } }); - - } - - return false; - } catch (e) { - exception_error("feedsEditSave", e); - } -} - -function batchFeedsToggleField(cb, elem, label) { - try { - var f = document.forms["batch_edit_feed_form"]; - var l = $(label); - - if (cb.checked) { - f[elem].disabled = false; - - if (l) { - l.className = ""; - }; - -// new Effect.Highlight(f[elem], {duration: 1, startcolor: "#fff7d5", -// queue: { position:'end', scope: 'BPEFQ', limit: 1 } } ); - - } else { - f[elem].disabled = true; - - if (l) { - l.className = "insensitive"; - }; - - } - } catch (e) { - exception_error("batchFeedsToggleField", e); - } -} - -function labelColorReset() { - try { - var labels = getSelectedLabels(); - - var ok = confirm(__("Reset label colors to default?")); - - if (ok) { - - var query = "?op=pref-labels&subop=color-reset&ids="+ - param_escape(labels.toString()); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - labellist_callback2(transport); - } }); - } - - } catch (e) { - exception_error("labelColorReset", e); - } -} - -function labelColorAsk(id, kind) { - try { - - var p = null - - if (kind == "fg") { - p = prompt(__("Please enter new label foreground color:")); - } else { - p = prompt(__("Please enter new label background color:")); - } - - if (p != null) { - - var query = "?op=pref-labels&subop=color-set&kind=" + kind + - "&ids="+ param_escape(id) + "&color=" + param_escape(p); - - selectPrefRows('label', false); - - var e = $("LICID-" + id); - - if (e) { - if (kind == "fg") { - e.style.color = p - } else { - e.style.backgroundColor = p; - } - } - - new Ajax.Request("backend.php", { parameters: query }); - } - - } catch (e) { - exception_error("labelColorReset", e); - } -} - - -function colorPicker(id, fg, bg) { - try { - var picker = $("colorPicker-" + id); - - if (picker) Element.show(picker); - - } catch (e) { - exception_error("colorPicker", e); - } -} - -function colorPickerHideAll() { - try { - if ($("prefLabelList")) { - - var elems = $("prefLabelList").getElementsByTagName("DIV"); - - for (var i = 0; i < elems.length; i++) { - if (elems[i].id && elems[i].id.match("colorPicker-")) { - Element.hide(elems[i]); - } - } - } - - } catch (e) { - exception_error("colorPickerHideAll", e); - } -} - -function colorPickerDo(id, fg, bg) { - try { - - var query = "?op=pref-labels&subop=color-set&kind=both"+ - "&ids=" + param_escape(id) + "&fg=" + param_escape(fg) + - "&bg=" + param_escape(bg); - - var e = $("LICID-" + id); - - if (e) { - e.style.color = fg; - e.style.backgroundColor = bg; - } - - new Ajax.Request("backend.php", { parameters: query }); - - } catch (e) { - exception_error("colorPickerDo", e); - } -} - -function colorPickerActive(b) { - color_picker_active = b; -} - -function mouse_down_handler(e) { - try { - - /* do not prevent right click */ - if (e && e.button && e.button == 2) return; - - if (selection_disabled) { - document.onselectstart = function() { return false; }; - return false; - } - - } catch (e) { - exception_error("mouse_down_handler", e); - } -} - -function mouse_up_handler(e) { - try { - mouse_is_down = false; - - if (!selection_disabled) { - document.onselectstart = null; - } - - if (!color_picker_active) { - colorPickerHideAll(); - } - - } catch (e) { - exception_error("mouse_up_handler", e); - } -} - -function inPreferences() { - return true; -} - -function editProfiles() { - displayDlg('editPrefProfiles', false, function() { - init_profile_inline_editor(); - }); -} - -function activatePrefProfile() { - - var sel_rows = getSelectedFeedCats(); - - if (sel_rows.length == 1) { - - var ok = confirm(__("Activate selected profile?")); - - if (ok) { - notify_progress("Loading, please wait..."); - - var query = "?op=rpc&subop=setprofile&id="+ - param_escape(sel_rows.toString()); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - window.location.reload(); - } }); - } - - } else { - alert(__("Please choose a profile to activate.")); - } - - return false; -} - -function opmlImportDone() { - closeInfoBox(); - updateFeedList(); -} - -function opmlImportHandler(iframe) { - try { - var tmp = new Object(); - tmp.responseText = iframe.document.body.innerHTML; - notify(''); - infobox_callback2(tmp); - } catch (e) { - exception_error("opml_import_handler", e); - } -} diff --git a/prefs.php b/prefs.php index 86c2110464..b20678abeb 100644 --- a/prefs.php +++ b/prefs.php @@ -1,53 +1,89 @@ Fatal Error: You forgot to copy + config.php-dist to config.php and edit it.\n"; + exit; + } + + require_once "autoload.php"; require_once "sessions.php"; + require_once "functions.php"; require_once "sanity_check.php"; - require_once "version.php"; + require_once "version.php"; require_once "config.php"; require_once "db-prefs.php"; - $link = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); - - login_sequence($link); + if (!init_plugins()) return; - $dt_add = get_script_dt_add(); + login_sequence(); - no_cache_incantation(); - header('Content-Type: text/html; charset=utf-8'); - ?> - - Tiny Tiny RSS : Preferences - + Tiny Tiny RSS : <?php echo __("Preferences") ?> - - - - - - - - + + + + + + + + + - - + "> + echo javascript_tag($jsfile); - - + } ?> + + - + - - + + + + + - - - - - - -
      - - feed icon - -

      - -

      This is an RSS feed exported from - Tiny Tiny RSS. - You must install a news aggregator to subscribe to it. - This feed contains the following items:

      - - - - -

      - - - -
      - -
      - - -

      Extra...

      -
      - -
      - -
      - -
      - - - - - - - diff --git a/sanity_check.php b/sanity_check.php deleted file mode 100644 index d112896e0a..0000000000 --- a/sanity_check.php +++ /dev/null @@ -1,87 +0,0 @@ -Fatal Error: You forgot to copy - config.php-dist to config.php and edit it.\n"; - exit; - } - - require_once "config.php"; - - if (CONFIG_VERSION != EXPECTED_CONFIG_VERSION) { - $err_msg = "config: your config file version is incorrect. See config.php-dist.\n"; - } - - if (defined('RSS_BACKEND_TYPE')) { - print "Fatal error: RSS_BACKEND_TYPE is deprecated. Please remove this - option from config.php\n"; - exit; - } - - if (file_exists("xml-export.php") || file_exists("xml-import.php")) { - print "Fatal Error: XML Import/Export tools (xml-export.php - and xml-import.php) could be used maliciously. Please remove them - from your TT-RSS instance.\n"; - exit; - } - - if (SINGLE_USER_MODE && DAEMON_UPDATE_LOGIN_LIMIT > 0) { - print "Fatal Error: Please set DAEMON_UPDATE_LOGIN_LIMIT - to 0 in single user mode.\n"; - exit; - } - - if (USE_CURL_FOR_ICONS && ! function_exists("curl_init")) { - print "Fatal Error: You have enabled USE_CURL_FOR_ICONS, but your PHP - doesn't seem to support CURL functions."; - exit; - } - - if (!defined('SESSION_EXPIRE_TIME')) { - $err_msg = "config: SESSION_EXPIRE_TIME is undefined"; - } - - if (SESSION_EXPIRE_TIME < 60) { - $err_msg = "config: SESSION_EXPIRE_TIME is too low (less than 60)"; - } - - if (SESSION_EXPIRE_TIME < SESSION_COOKIE_LIFETIME) { - $err_msg = "config: SESSION_EXPIRE_TIME should be greater or equal to" . - "SESSION_COOKIE_LIFETIME"; - } - -/* if (defined('DISABLE_SESSIONS')) { - $err_msg = "config: you have enabled DISABLE_SESSIONS. Please disable this option."; -} */ - - if (DATABASE_BACKED_SESSIONS && SINGLE_USER_MODE) { - $err_msg = "config: DATABASE_BACKED_SESSIONS is incompatible with SINGLE_USER_MODE"; - } - - if (DATABASE_BACKED_SESSIONS && DB_TYPE == "mysql") { - $err_msg = "config: DATABASE_BACKED_SESSIONS are currently broken with MySQL"; - } - - if (defined('MAIL_FROM')) { - $err_msg = "config: MAIL_FROM has been split into DIGEST_FROM_NAME and DIGEST_FROM_ADDRESS"; - } - - if (!defined('COUNTERS_MAX_AGE')) { - $err_msg = "config: option COUNTERS_MAX_AGE expected, but not defined"; - } - - if (defined('DAEMON_REFRESH_ONLY')) { - $err_msg = "config: option DAEMON_REFRESH_ONLY is obsolete. Please remove this option and read about other ways to update feeds on the wiki."; - - } - - if ($err_msg) { - print "Fatal Error: $err_msg\n"; - exit; - } - -?> diff --git a/schema/.htaccess b/schema/.htaccess new file mode 100644 index 0000000000..93169e4eb4 --- /dev/null +++ b/schema/.htaccess @@ -0,0 +1,2 @@ +Order deny,allow +Deny from all diff --git a/schema/ttrss_schema_mysql.sql b/schema/ttrss_schema_mysql.sql index 0f4acf900d..09234369e3 100644 --- a/schema/ttrss_schema_mysql.sql +++ b/schema/ttrss_schema_mysql.sql @@ -1,18 +1,26 @@ SET NAMES utf8; SET CHARACTER SET utf8; +drop table if exists ttrss_error_log; +drop table if exists ttrss_plugin_storage; +drop table if exists ttrss_linked_feeds; +drop table if exists ttrss_linked_instances; +drop table if exists ttrss_access_keys; drop table if exists ttrss_user_labels2; drop table if exists ttrss_labels2; drop table if exists ttrss_feedbrowser_cache; drop table if exists ttrss_version; 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; drop table if exists ttrss_prefs; drop table if exists ttrss_prefs_types; -drop table if exists ttrss_prefs_sections; +drop table if exists ttrss_prefs_sections; drop table if exists ttrss_tags; drop table if exists ttrss_enclosures; drop table if exists ttrss_settings_profiles; @@ -31,29 +39,22 @@ drop table if exists ttrss_sessions; begin; -create table ttrss_themes(id integer not null primary key auto_increment, - theme_name varchar(200) not null, - theme_path varchar(200) not null) TYPE=InnoDB; - -insert into ttrss_themes (theme_name, theme_path) values ('Old-skool', 'compat'); -insert into ttrss_themes (theme_name, theme_path) values ('Graycube', 'graycube'); -insert into ttrss_themes (theme_name, theme_path) values ('Default (Compact)', 'compact'); -insert into ttrss_themes (theme_name, theme_path) values ('Three-pane', '3pane'); - create table ttrss_users (id integer primary key not null auto_increment, login varchar(120) not null unique, pwd_hash varchar(250) not null, last_login datetime default null, access_level integer not null default 0, - theme_id integer default null, email varchar(250) not null default '', + full_name varchar(250) not null default '', email_digest bool not null default false, last_digest_sent datetime default null, + salt varchar(250) not null default '', created datetime default null, - index (theme_id), - foreign key (theme_id) references ttrss_themes(id)) TYPE=InnoDB; + twitter_oauth longtext default null, + otp_enabled boolean not null default false, + resetpass_token varchar(250) default null) ENGINE=InnoDB DEFAULT CHARSET=UTF8; -insert into ttrss_users (login,pwd_hash,access_level) values ('admin', +insert into ttrss_users (login,pwd_hash,access_level) values ('admin', 'SHA1:5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8', 10); create table ttrss_feed_categories(id integer not null primary key auto_increment, @@ -61,16 +62,17 @@ create table ttrss_feed_categories(id integer not null primary key auto_incremen title varchar(200) not null, collapsed bool not null default false, order_id integer not null default 0, - index(owner_uid), - foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) TYPE=InnoDB; + parent_cat integer, + view_settings varchar(250) not null default '', + foreign key (parent_cat) references ttrss_feed_categories(id) ON DELETE SET NULL, + foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; create table ttrss_archived_feeds (id integer not null primary key, owner_uid integer not null, - title varchar(200) not null, - feed_url text not null, + title varchar(200) not null, + feed_url text not null, site_url varchar(250) not null default '', - index(owner_uid), - foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) TYPE=InnoDB; + foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; create table ttrss_counters_cache ( feed_id integer not null, @@ -78,7 +80,10 @@ create table ttrss_counters_cache ( value integer not null default 0, updated datetime not null, foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE -); +) ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +create index ttrss_counters_cache_feed_id_idx on ttrss_counters_cache(feed_id); +create index ttrss_counters_cache_value_idx on ttrss_counters_cache(value); create table ttrss_cat_counters_cache ( feed_id integer not null, @@ -86,18 +91,19 @@ create table ttrss_cat_counters_cache ( value integer not null default 0, updated datetime not null, foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE -); +) ENGINE=InnoDB DEFAULT CHARSET=UTF8; create table ttrss_feeds (id integer not null auto_increment primary key, owner_uid integer not null, - title varchar(200) not null, + title varchar(200) not null, cat_id integer default null, - feed_url text not null, + feed_url text not null, icon_url varchar(250) not null default '', update_interval integer not null default 0, purge_interval integer not null default 0, last_updated datetime default 0, last_error varchar(250) not null default '', + favicon_avg_color varchar(11) default null, site_url varchar(250) not null default '', auth_login varchar(250) not null default '', auth_pass varchar(250) not null default '', @@ -107,59 +113,70 @@ create table ttrss_feeds (id integer not null auto_increment primary key, hidden bool not null default false, include_in_digest boolean not null default true, cache_images boolean not null default false, + hide_images boolean not null default false, + cache_content boolean not null default false, auth_pass_encrypted boolean not null default false, last_viewed datetime default null, last_update_started datetime default null, always_display_enclosures boolean not null default false, update_method integer not null default 0, - index(owner_uid), + order_id integer not null default 0, + mark_unread_on_update boolean not null default false, + update_on_checksum_change boolean not null default false, + strip_images boolean not null default false, + view_settings varchar(250) not null default '', + pubsub_state integer not null default 0, + favicon_last_checked datetime default null, foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE, - index(cat_id), foreign key (cat_id) references ttrss_feed_categories(id) ON DELETE SET NULL, - index(parent_feed), - foreign key (parent_feed) references ttrss_feeds(id) ON DELETE SET NULL) TYPE=InnoDB; + foreign key (parent_feed) references ttrss_feeds(id) ON DELETE SET NULL) ENGINE=InnoDB DEFAULT CHARSET=UTF8; insert into ttrss_feeds (owner_uid, title, feed_url) values - (1, 'Tiny Tiny RSS: New Releases', 'http://tt-rss.spb.ru/releases.rss'); - -insert into ttrss_feeds (owner_uid, title, feed_url) values - (1, 'Tiny Tiny RSS: Forum', 'http://tt-rss.spb.ru/forum/rss.php'); + (1, 'Tiny Tiny RSS: Forum', 'http://tt-rss.org/forum/rss.php'); -create table ttrss_entries (id integer not null primary key auto_increment, - title text not null, - guid varchar(255) not null unique, - link text not null, - updated datetime not null, - content text not null, +create table ttrss_entries (id integer not null primary key auto_increment, + title text not null, + guid varchar(255) not null unique, + link text not null, + updated datetime not null, + content longtext not null, content_hash varchar(250) not null, + cached_content longtext, no_orig_date bool not null default 0, date_entered datetime not null, + date_updated datetime not null, num_comments integer not null default 0, + plugin_data longtext, + lang varchar(2), comments varchar(250) not null default '', - author varchar(250) not null default '') TYPE=InnoDB; + author varchar(250) not null default '') ENGINE=InnoDB DEFAULT CHARSET=UTF8; create index ttrss_entries_date_entered_index on ttrss_entries(date_entered); +create index ttrss_entries_updated_idx on ttrss_entries(updated); create table ttrss_user_entries ( int_id integer not null primary key auto_increment, ref_id integer not null, - feed_id int, - orig_feed_id int, + uuid varchar(200) not null, + feed_id int, + orig_feed_id int, owner_uid integer not null, marked bool not null default 0, published bool not null default 0, + tag_cache text not null, + label_cache text not null, last_read datetime, score int not null default 0, - note text, + note longtext, + last_marked datetime, + last_published datetime, unread bool not null default 1, - index (ref_id), foreign key (ref_id) references ttrss_entries(id) ON DELETE CASCADE, - index (feed_id), foreign key (feed_id) references ttrss_feeds(id) ON DELETE CASCADE, - index (orig_feed_id), foreign key (orig_feed_id) references ttrss_archived_feeds(id) ON DELETE SET NULL, - index (owner_uid), - foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) TYPE=InnoDB; + foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +create index ttrss_user_entries_unread_idx on ttrss_user_entries(unread); create table ttrss_entry_comments (id integer not null primary key, ref_id integer not null, @@ -169,78 +186,98 @@ create table ttrss_entry_comments (id integer not null primary key, index (ref_id), foreign key (ref_id) references ttrss_entries(id) ON DELETE CASCADE, index (owner_uid), - foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) TYPE=InnoDB; + foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; -create table ttrss_filter_types (id integer primary key, - name varchar(120) unique not null, - description varchar(250) not null unique) TYPE=InnoDB; +create table ttrss_filter_types (id integer primary key, + name varchar(120) unique not null, + description varchar(250) not null unique) ENGINE=InnoDB DEFAULT CHARSET=UTF8; insert into ttrss_filter_types (id,name,description) values (1, 'title', 'Title'); insert into ttrss_filter_types (id,name,description) values (2, 'content', 'Content'); -insert into ttrss_filter_types (id,name,description) values (3, 'both', +insert into ttrss_filter_types (id,name,description) values (3, 'both', 'Title or Content'); -insert into ttrss_filter_types (id,name,description) values (4, 'link', +insert into ttrss_filter_types (id,name,description) values (4, 'link', 'Link'); -insert into ttrss_filter_types (id,name,description) values (5, 'date', +insert into ttrss_filter_types (id,name,description) values (5, 'date', 'Article Date'); insert into ttrss_filter_types (id,name,description) values (6, 'author', 'Author'); +insert into ttrss_filter_types (id,name,description) values (7, 'tag', 'Article Tags'); -create table ttrss_filter_actions (id integer not null primary key, - name varchar(120) unique not null, - description varchar(250) not null unique) TYPE=InnoDB; +create table ttrss_filter_actions (id integer not null primary key, + name varchar(120) unique not null, + description varchar(250) not null unique) ENGINE=InnoDB DEFAULT CHARSET=UTF8; -insert into ttrss_filter_actions (id,name,description) values (1, 'filter', - 'Filter article'); +insert into ttrss_filter_actions (id,name,description) values (1, 'filter', + 'Delete article'); -insert into ttrss_filter_actions (id,name,description) values (2, 'catchup', +insert into ttrss_filter_actions (id,name,description) values (2, 'catchup', 'Mark as read'); -insert into ttrss_filter_actions (id,name,description) values (3, 'mark', +insert into ttrss_filter_actions (id,name,description) values (3, 'mark', 'Set starred'); -insert into ttrss_filter_actions (id,name,description) values (4, 'tag', +insert into ttrss_filter_actions (id,name,description) values (4, 'tag', 'Assign tags'); -insert into ttrss_filter_actions (id,name,description) values (5, 'publish', +insert into ttrss_filter_actions (id,name,description) values (5, 'publish', 'Publish article'); -insert into ttrss_filter_actions (id,name,description) values (6, 'score', +insert into ttrss_filter_actions (id,name,description) values (6, 'score', 'Modify score'); -insert into ttrss_filter_actions (id,name,description) values (7, 'label', +insert into ttrss_filter_actions (id,name,description) values (7, 'label', 'Assign label'); -create table ttrss_filters (id integer not null primary key auto_increment, - owner_uid integer not null, - feed_id integer default null, - filter_type integer not null, +insert into ttrss_filter_actions (id,name,description) values (8, 'stop', + 'Stop / Do nothing'); + +create table ttrss_filters2(id integer primary key auto_increment, + owner_uid integer not null, + match_any_rule boolean not null default false, + enabled boolean not null default true, + inverse bool not null default false, + title varchar(250) not null default '', + order_id integer not null default 0, + foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +create table ttrss_filters2_rules(id integer primary key auto_increment, + filter_id integer not null references ttrss_filters2(id) on delete cascade, reg_exp varchar(250) not null, - filter_param varchar(250) not null default '', inverse bool not null default false, - enabled bool not null default true, - action_id integer not null default 1, - action_param varchar(250) not null default '', + filter_type integer not null, + feed_id integer default null, + cat_id integer default null, + cat_filter boolean not null default false, + index (filter_id), + foreign key (filter_id) references ttrss_filters2(id) on delete cascade, index (filter_type), foreign key (filter_type) references ttrss_filter_types(id) ON DELETE CASCADE, - index (owner_uid), - foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE, index (feed_id), foreign key (feed_id) references ttrss_feeds(id) ON DELETE CASCADE, + index (cat_id), + foreign key (cat_id) references ttrss_feed_categories(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +create table ttrss_filters2_actions(id integer primary key auto_increment, + filter_id integer not null, + action_id integer not null default 1 references ttrss_filter_actions(id) on delete cascade, + action_param varchar(250) not null default '', + index (filter_id), + foreign key (filter_id) references ttrss_filters2(id) on delete cascade, index (action_id), - foreign key (action_id) references ttrss_filter_actions(id) ON DELETE CASCADE) TYPE=InnoDB; + foreign key (action_id) references ttrss_filter_actions(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; -create table ttrss_tags (id integer primary key auto_increment, - owner_uid integer not null, +create table ttrss_tags (id integer primary key auto_increment, + owner_uid integer not null, tag_name varchar(250) not null, post_int_id integer not null, index (post_int_id), foreign key (post_int_id) references ttrss_user_entries(int_id) ON DELETE CASCADE, index (owner_uid), - foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) TYPE=InnoDB; + foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; -create table ttrss_version (schema_version int not null) TYPE=InnoDB; +create table ttrss_version (schema_version int not null) ENGINE=InnoDB DEFAULT CHARSET=UTF8; -insert into ttrss_version values (66); +insert into ttrss_version values (127); create table ttrss_enclosures (id integer primary key auto_increment, content_url text not null, @@ -248,199 +285,176 @@ create table ttrss_enclosures (id integer primary key auto_increment, post_id integer not null, title text not null, duration text not null, - index (post_id), - foreign key (post_id) references ttrss_entries(id) ON DELETE cascade) TYPE=InnoDB; + width integer not null default 0, + height integer not null default 0, + foreign key (post_id) references ttrss_entries(id) ON DELETE cascade) ENGINE=InnoDB DEFAULT CHARSET=UTF8; create table ttrss_settings_profiles(id integer primary key auto_increment, title varchar(250) not null, owner_uid integer not null, index (owner_uid), - foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) TYPE=InnoDB; + foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; -create table ttrss_prefs_types (id integer not null primary key, - type_name varchar(100) not null) TYPE=InnoDB; +create table ttrss_prefs_types (id integer not null primary key, + type_name varchar(100) not null) ENGINE=InnoDB DEFAULT CHARSET=UTF8; insert into ttrss_prefs_types (id, type_name) values (1, 'bool'); insert into ttrss_prefs_types (id, type_name) values (2, 'string'); insert into ttrss_prefs_types (id, type_name) values (3, 'integer'); -create table ttrss_prefs_sections (id integer not null primary key, - section_name varchar(100) not null) TYPE=InnoDB; +create table ttrss_prefs_sections (id integer not null primary key, + order_id integer not null) ENGINE=InnoDB DEFAULT CHARSET=UTF8; -insert into ttrss_prefs_sections (id, section_name) values (1, 'General'); -insert into ttrss_prefs_sections (id, section_name) values (2, 'Interface'); -insert into ttrss_prefs_sections (id, section_name) values (3, 'Advanced'); +insert into ttrss_prefs_sections (id, order_id) values (1, 0); +insert into ttrss_prefs_sections (id, order_id) values (2, 1); +insert into ttrss_prefs_sections (id, order_id) values (3, 3); +insert into ttrss_prefs_sections (id, order_id) values (4, 2); create table ttrss_prefs (pref_name varchar(250) not null primary key, type_id integer not null, section_id integer not null default 1, - short_desc text not null, - help_text varchar(250) not null default '', access_level integer not null default 0, def_value text not null, - index(type_id), foreign key (type_id) references ttrss_prefs_types(id), - index(section_id), - foreign key (section_id) references ttrss_prefs_sections(id)) TYPE=InnoDB; - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('ENABLE_FEED_ICONS', 1, 'true', 'Enable feed icons',3); -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('PURGE_OLD_DAYS', 3, '60', 'Purge old posts after this number of days (0 - disables)',1); -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('UPDATE_POST_ON_CHECKSUM_CHANGE', 1, 'true', 'Update post on checksum change',1); -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('ENABLE_LABELS', 1, 'false', 'Enable labels',3, - 'Experimental support for virtual feeds based on user crafted SQL queries. This feature is highly experimental and at this point not user friendly. Use with caution.'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('DEFAULT_UPDATE_INTERVAL', 3, '30', 'Default interval between feed updates',1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('DEFAULT_ARTICLE_LIMIT', 3, '30', 'Amount of articles to display at once',2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('ALLOW_DUPLICATE_POSTS', 1, 'true', 'Allow duplicate posts',1, - '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.'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('USER_STYLESHEET_URL', 2, '', 'User stylesheet URL',2, - 'Link to user stylesheet to override default style, disabled if empty.'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('ENABLE_FEED_CATS', 1, 'false', 'Enable feed categories',2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('SHOW_CONTENT_PREVIEW', 1, 'true', 'Show content preview in headlines list',2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('SHORT_DATE_FORMAT', 2, 'M d, G:i', 'Short date format',3); -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('LONG_DATE_FORMAT', 2, 'D, M d Y - G:i', 'Long date format',3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('HEADLINES_SMART_DATE', 1, 'true', 'Use more accessible date/time format for headlines',3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('COMBINED_DISPLAY_MODE', 1, 'false', 'Combined feed display',2, - 'Display expanded list of feed articles, instead of separate displays for headlines and article content'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('HIDE_READ_FEEDS', 1, 'false', 'Hide feeds with no unread messages',2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('OPEN_LINKS_IN_NEW_WINDOW', 1, 'true', 'Open article links in new browser window',2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('ON_CATCHUP_SHOW_NEXT_FEED', 1, 'false', 'On catchup show next feed',2, - 'When "Mark as read" button is clicked in toolbar, automatically open next feed with unread articles.'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('FEEDS_SORT_BY_UNREAD', 1, 'false', 'Sort feeds by unread articles count',2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('EXTENDED_FEEDLIST', 1, 'false', 'Show additional information in feedlist',3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('MARK_UNREAD_ON_UPDATE', 1, 'false', 'Set articles as unread on update',3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('REVERSE_HEADLINES', 1, 'false', 'Reverse headline order (oldest first)',2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('DIGEST_ENABLE', 1, 'false', 'Enable e-mail digest',1, -'This option enables sending daily digest of new (and unread) headlines on your configured e-mail address'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('CONFIRM_FEED_CATCHUP', 1, 'true', 'Confirm marking feed as read',3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('CDM_AUTO_CATCHUP', 1, 'false', 'Mark articles as read automatically',2, -'This option enables marking articles as read automatically in combined mode (except for Fresh articles feed) while you scroll article list.'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_DEFAULT_VIEW_MODE', 2, 'adaptive', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_DEFAULT_VIEW_LIMIT', 3, '30', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_PREFS_ACTIVE_TAB', 2, '', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_INFOBOX_DISABLE_OVERLAY', 1, 'false', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('STRIP_UNSAFE_TAGS', 1, 'true', 'Strip unsafe tags from articles', 3, -'Strip all but most common HTML tags when reading articles.'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('BLACKLISTED_TAGS', 2, 'main, generic, misc, uncategorized, blog, blogroll, general, news', 'Blacklisted tags', 3, -'When auto-detecting tags in articles these tags will not be applied (comma-separated list).'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('ENABLE_SEARCH_TOOLBAR', 1, 'false', 'Enable search toolbar',2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_PREFS_ENABLE_PAGINATION', 2, '', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_PREFS_PUBLISH_KEY', 2, '', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('FRESH_ARTICLE_MAX_AGE', 3, '24', 'Maximum age of fresh articles (in hours)',2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('DIGEST_CATCHUP', 1, 'false', 'Mark articles in e-mail digest as read',1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('CDM_EXPANDED', 1, 'true', 'Automatically expand articles in combined mode',3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('PURGE_UNREAD_ARTICLES', 1, 'true', 'Purge unread articles',3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('HIDE_READ_SHOWS_SPECIAL', 1, 'true', 'Show special feeds when hiding read feeds',3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('HIDE_FEEDLIST', 1, 'false', 'Hide feedlist',2, 'This option hides feedlist and allows it to be toggled on the fly, useful for small screens.'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('VFEED_GROUP_BY_FEED', 1, 'false', 'Group headlines in virtual feeds',2, - 'When this option is enabled, headlines in Special feeds and Labels are grouped by feeds'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('SYNC_COUNTERS', 1, 'false', 'Prefer more accurate feedlist counters to UI speed',3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('STRIP_IMAGES', 1, 'false', 'Do not show images in articles', 2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('ENABLE_FLASH_PLAYER', 1, 'true', 'Enable inline MP3 player', 3, 'Enable the Flash-based XSPF Player to play MP3-format podcast enclosures.'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_DEFAULT_VIEW_ORDER_BY', 2, 'default', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('ENABLE_OFFLINE_READING', 1, 'false', 'Enable offline reading',1, 'Synchronize new articles for offline reading using Google Gears.'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('ENABLE_API_ACCESS', 1, 'false', 'Enable external API', 3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_SPECIAL', 1, 'false', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_LABELS', 1, 'false', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_UNCAT', 1, 'false', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_FEEDLIST', 1, 'false', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_MOBILE_ENABLE_CATS', 1, 'false', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_MOBILE_SHOW_IMAGES', 1, 'false', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_MOBILE_HIDE_READ', 1, 'false', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_MOBILE_SORT_FEEDS_UNREAD', 1, 'false', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_THEME_ID', 2, '0', '', 1); + foreign key (section_id) references ttrss_prefs_sections(id)) ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('PURGE_OLD_DAYS', 3, '60', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('DEFAULT_UPDATE_INTERVAL', 3, '30', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('DEFAULT_ARTICLE_LIMIT', 3, '30', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('ALLOW_DUPLICATE_POSTS', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('ENABLE_FEED_CATS', 1, 'true', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('SHOW_CONTENT_PREVIEW', 1, 'true', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('SHORT_DATE_FORMAT', 2, 'M d, G:i', 3); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('LONG_DATE_FORMAT', 2, 'D, M d Y - G:i', 3); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('COMBINED_DISPLAY_MODE', 1, 'true', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('HIDE_READ_FEEDS', 1, 'false', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('ON_CATCHUP_SHOW_NEXT_FEED', 1, 'false', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('FEEDS_SORT_BY_UNREAD', 1, 'false', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('REVERSE_HEADLINES', 1, 'false', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('DIGEST_ENABLE', 1, 'false', 4); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('CONFIRM_FEED_CATCHUP', 1, 'true', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('CDM_AUTO_CATCHUP', 1, 'false', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_DEFAULT_VIEW_MODE', 2, 'adaptive', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_DEFAULT_VIEW_LIMIT', 3, '30', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_PREFS_ACTIVE_TAB', 2, '', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('STRIP_UNSAFE_TAGS', 1, 'true', 3); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('BLACKLISTED_TAGS', 2, 'main, generic, misc, uncategorized, blog, blogroll, general, news', 3); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('FRESH_ARTICLE_MAX_AGE', 3, '24', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('DIGEST_CATCHUP', 1, 'false', 4); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('CDM_EXPANDED', 1, 'true', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('PURGE_UNREAD_ARTICLES', 1, 'true', 3); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('HIDE_READ_SHOWS_SPECIAL', 1, 'true', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('VFEED_GROUP_BY_FEED', 1, 'false', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('STRIP_IMAGES', 1, 'false', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_DEFAULT_VIEW_ORDER_BY', 2, 'default', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('ENABLE_API_ACCESS', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_COLLAPSED_SPECIAL', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_COLLAPSED_LABELS', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_COLLAPSED_UNCAT', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_COLLAPSED_FEEDLIST', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_MOBILE_ENABLE_CATS', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_MOBILE_SHOW_IMAGES', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_MOBILE_HIDE_READ', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_MOBILE_SORT_FEEDS_UNREAD', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_THEME_ID', 2, '0', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('USER_TIMEZONE', 2, 'Automatic', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('USER_STYLESHEET', 2, '', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('SORT_HEADLINES_BY_FEED_DATE', 1, 'false', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_MOBILE_BROWSE_CATS', 1, 'true', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('SSL_CERT_SERIAL', 2, '', 3); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('DIGEST_PREFERRED_TIME', 2, '00:00', 4); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_PREFS_SHOW_EMPTY_CATS', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_DEFAULT_INCLUDE_CHILDREN', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('AUTO_ASSIGN_LABELS', 1, 'false', 3); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_ENABLED_PLUGINS', 2, '', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_MOBILE_REVERSE_HEADLINES', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('USER_CSS_THEME', 2, '', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('USER_LANGUAGE', 2, '', 2); + +update ttrss_prefs set access_level = 1 where pref_name in ('ON_CATCHUP_SHOW_NEXT_FEED', + 'SORT_HEADLINES_BY_FEED_DATE', + 'VFEED_GROUP_BY_FEED', + 'FRESH_ARTICLE_MAX_AGE', + 'CDM_EXPANDED', + 'SHOW_CONTENT_PREVIEW', + 'AUTO_ASSIGN_LABELS', + 'HIDE_READ_SHOWS_SPECIAL'); create table ttrss_user_prefs ( owner_uid integer not null, pref_name varchar(250), - value text not null, + value longtext not null, profile integer, index (profile), foreign key (profile) references ttrss_settings_profiles(id) ON DELETE CASCADE, - index (owner_uid), foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE, - index (pref_name), - foreign key (pref_name) references ttrss_prefs(pref_name) ON DELETE CASCADE) TYPE=InnoDB; - -create table ttrss_scheduled_updates (id integer not null primary key auto_increment, - owner_uid integer not null, - feed_id integer default null, - entered datetime not null, - foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE, - foreign key (feed_id) references ttrss_feeds(id) ON DELETE CASCADE) TYPE=InnoDB; + foreign key (pref_name) references ttrss_prefs(pref_name) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; -create table ttrss_sessions (id varchar(250) unique not null primary key, +create table ttrss_sessions (id varchar(250) not null primary key, data text, expire integer not null, - index (id), - index (expire)) TYPE=InnoDB; + index (expire)) ENGINE=InnoDB DEFAULT CHARSET=UTF8; create table ttrss_feedbrowser_cache ( feed_url text not null, + site_url text not null, title text not null, - subscribers integer not null); + subscribers integer not null) ENGINE=InnoDB DEFAULT CHARSET=UTF8; -create table ttrss_labels2 (id integer not null primary key auto_increment, +create table ttrss_labels2 (id integer not null primary key auto_increment, owner_uid integer not null, caption varchar(250) not null, fg_color varchar(15) not null default '', bg_color varchar(15) not null default '', foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE -) TYPE=InnoDB; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8; create table ttrss_user_labels2 (label_id integer not null, article_id integer not null, foreign key (label_id) references ttrss_labels2(id) ON DELETE CASCADE, foreign key (article_id) references ttrss_entries(id) ON DELETE CASCADE -) TYPE=InnoDB; +) ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +create table ttrss_access_keys (id integer not null primary key auto_increment, + access_key varchar(250) not null, + feed_id varchar(250) not null, + is_cat bool not null default false, + owner_uid integer not null, + foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +create table ttrss_linked_instances (id integer not null primary key auto_increment, + last_connected datetime not null, + last_status_in integer not null, + last_status_out integer not null, + access_key varchar(250) not null unique, + access_url text not null) ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +create table ttrss_linked_feeds ( + feed_url text not null, + site_url text not null, + title text not null, + created datetime not null, + updated datetime not null, + instance_id integer not null, + subscribers integer not null, + foreign key (instance_id) references ttrss_linked_instances(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +create table ttrss_plugin_storage ( + id integer not null auto_increment primary key, + name varchar(100) not null, + owner_uid integer not null, + content longtext not null, + foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +create table ttrss_error_log( + id integer not null auto_increment primary key, + owner_uid integer, + errno integer not null, + errstr text not null, + filename text not null, + lineno integer not null, + context text not null, + created_at datetime not null, + foreign key (owner_uid) references ttrss_users(id) ON DELETE SET NULL) ENGINE=InnoDB DEFAULT CHARSET=UTF8; commit; diff --git a/schema/ttrss_schema_pgsql.sql b/schema/ttrss_schema_pgsql.sql index 7225f10f8d..2b37c95fb6 100644 --- a/schema/ttrss_schema_pgsql.sql +++ b/schema/ttrss_schema_pgsql.sql @@ -1,73 +1,79 @@ -drop table ttrss_user_labels2; -drop table ttrss_labels2; -drop table ttrss_feedbrowser_cache; -drop table ttrss_version; -drop table ttrss_labels; -drop table ttrss_filters; -drop table ttrss_filter_types; -drop table ttrss_filter_actions; -drop table ttrss_user_prefs; -drop table ttrss_prefs; -drop table ttrss_prefs_types; -drop table ttrss_prefs_sections; -drop table ttrss_tags; -drop table ttrss_enclosures; -drop table ttrss_settings_profiles; -drop table ttrss_entry_comments; -drop table ttrss_user_entries; -drop table ttrss_entries; -drop table ttrss_scheduled_updates; -drop table ttrss_counters_cache; -drop table ttrss_cat_counters_cache; -drop table ttrss_archived_feeds; -drop table ttrss_feeds; -drop table ttrss_feed_categories; -drop table ttrss_users; -drop table ttrss_themes; -drop table ttrss_sessions; -drop function SUBSTRING_FOR_DATE(timestamp, int, int); +drop table if exists ttrss_error_log; +drop table if exists ttrss_plugin_storage; +drop table if exists ttrss_linked_feeds; +drop table if exists ttrss_linked_instances; +drop table if exists ttrss_access_keys; +drop table if exists ttrss_user_labels2; +drop table if exists ttrss_labels2; +drop table if exists ttrss_feedbrowser_cache; +drop table if exists ttrss_version; +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; +drop table if exists ttrss_prefs; +drop table if exists ttrss_prefs_types; +drop table if exists ttrss_prefs_sections; +drop table if exists ttrss_tags; +drop table if exists ttrss_enclosures; +drop table if exists ttrss_settings_profiles; +drop table if exists ttrss_entry_comments; +drop table if exists ttrss_user_entries; +drop table if exists ttrss_entries; +drop table if exists ttrss_scheduled_updates; +drop table if exists ttrss_counters_cache; +drop table if exists ttrss_cat_counters_cache; +drop table if exists ttrss_archived_feeds; +drop table if exists ttrss_feeds; +drop table if exists ttrss_feed_categories; +drop table if exists ttrss_users; +drop table if exists ttrss_themes; +drop table if exists ttrss_sessions; +drop function if exists SUBSTRING_FOR_DATE(timestamp, int, int); begin; -create table ttrss_themes(id serial not null primary key, - theme_name varchar(200) not null, - theme_path varchar(200) not null); - -insert into ttrss_themes (theme_name, theme_path) values ('Old-skool', 'compat'); -insert into ttrss_themes (theme_name, theme_path) values ('Graycube', 'graycube'); -insert into ttrss_themes (theme_name, theme_path) values ('Default (Compact)', 'compact'); -insert into ttrss_themes (theme_name, theme_path) values ('Three-pane', '3pane'); - create table ttrss_users (id serial not null primary key, login varchar(120) not null unique, pwd_hash varchar(250) not null, last_login timestamp default null, access_level integer not null default 0, email varchar(250) not null default '', + full_name varchar(250) not null default '', email_digest boolean not null default false, last_digest_sent timestamp default null, - created timestamp default null, - theme_id integer references ttrss_themes(id) default null); + salt varchar(250) not null default '', + twitter_oauth text default null, + otp_enabled boolean not null default false, + resetpass_token varchar(250) default null, + created timestamp default null); -insert into ttrss_users (login,pwd_hash,access_level) values ('admin', +insert into ttrss_users (login,pwd_hash,access_level) values ('admin', 'SHA1:5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8', 10); create table ttrss_feed_categories(id serial not null primary key, owner_uid integer not null references ttrss_users(id) on delete cascade, collapsed boolean not null default false, order_id integer not null default 0, + view_settings varchar(250) not null default '', + parent_cat integer references ttrss_feed_categories(id) on delete set null, title varchar(200) not null); create table ttrss_feeds (id serial not null primary key, owner_uid integer not null references ttrss_users(id) on delete cascade, - title varchar(200) not null, + title varchar(200) not null, cat_id integer default null references ttrss_feed_categories(id) on delete set null, - feed_url text not null, + feed_url text not null, icon_url varchar(250) not null default '', update_interval integer not null default 0, purge_interval integer not null default 0, last_updated timestamp default null, last_error text not null default '', + favicon_avg_color varchar(11) default null, site_url varchar(250) not null default '', auth_login varchar(250) not null default '', parent_feed integer default null references ttrss_feeds(id) on delete set null, @@ -77,25 +83,32 @@ create table ttrss_feeds (id serial not null primary key, include_in_digest boolean not null default true, rtl_content boolean not null default false, cache_images boolean not null default false, + hide_images boolean not null default false, + cache_content boolean not null default false, last_viewed timestamp default null, last_update_started timestamp default null, update_method integer not null default 0, always_display_enclosures boolean not null default false, - auth_pass_encrypted boolean not null default false); + order_id integer not null default 0, + mark_unread_on_update boolean not null default false, + update_on_checksum_change boolean not null default false, + strip_images boolean not null default false, + view_settings varchar(250) not null default '', + pubsub_state integer not null default 0, + favicon_last_checked timestamp default null, + auth_pass_encrypted boolean not null default false); create index ttrss_feeds_owner_uid_index on ttrss_feeds(owner_uid); +create index ttrss_feeds_cat_id_idx on ttrss_feeds(cat_id); insert into ttrss_feeds (owner_uid, title, feed_url) values - (1, 'Tiny Tiny RSS: New Releases', 'http://tt-rss.spb.ru/releases.rss'); - -insert into ttrss_feeds (owner_uid, title, feed_url) values - (1, 'Tiny Tiny RSS: Forum', 'http://tt-rss.spb.ru/forum/rss.php'); + (1, 'Tiny Tiny RSS: Forum', 'http://tt-rss.org/forum/rss.php'); create table ttrss_archived_feeds (id integer not null primary key, owner_uid integer not null references ttrss_users(id) on delete cascade, - title varchar(200) not null, - feed_url text not null, - site_url varchar(250) not null default ''); + title varchar(200) not null, + feed_url text not null, + site_url varchar(250) not null default ''); create table ttrss_counters_cache ( feed_id integer not null, @@ -103,265 +116,247 @@ create table ttrss_counters_cache ( updated timestamp not null, value integer not null default 0); +create index ttrss_counters_cache_feed_id_idx on ttrss_counters_cache(feed_id); +create index ttrss_counters_cache_owner_uid_idx on ttrss_counters_cache(owner_uid); +create index ttrss_counters_cache_value_idx on ttrss_counters_cache(value); + create table ttrss_cat_counters_cache ( feed_id integer not null, owner_uid integer not null references ttrss_users(id) ON DELETE CASCADE, updated timestamp not null, value integer not null default 0); -create table ttrss_entries (id serial not null primary key, - title text not null, - guid text not null unique, - link text not null, - updated timestamp not null, +create index ttrss_cat_counters_cache_owner_uid_idx on ttrss_cat_counters_cache(owner_uid); + +create table ttrss_entries (id serial not null primary key, + title text not null, + guid text not null unique, + link text not null, + updated timestamp not null, content text not null, content_hash varchar(250) not null, + cached_content text, no_orig_date boolean not null default false, - date_entered timestamp not null default NOW(), + date_entered timestamp not null, + date_updated timestamp not null, num_comments integer not null default 0, comments varchar(250) not null default '', + plugin_data text, + lang varchar(2), author varchar(250) not null default ''); -create index ttrss_entries_guid_index on ttrss_entries(guid); -- create index ttrss_entries_title_index on ttrss_entries(title); create index ttrss_entries_date_entered_index on ttrss_entries(date_entered); +create index ttrss_entries_updated_idx on ttrss_entries(updated); create table ttrss_user_entries ( int_id serial not null primary key, ref_id integer not null references ttrss_entries(id) ON DELETE CASCADE, - feed_id int references ttrss_feeds(id) ON DELETE CASCADE, - orig_feed_id integer references ttrss_archived_feeds(id) ON DELETE SET NULL, + uuid varchar(200) not null, + feed_id int references ttrss_feeds(id) ON DELETE CASCADE, + orig_feed_id integer references ttrss_archived_feeds(id) ON DELETE SET NULL, owner_uid integer not null references ttrss_users(id) ON DELETE CASCADE, marked boolean not null default false, published boolean not null default false, + tag_cache text not null, + label_cache text not null, last_read timestamp, score int not null default 0, + last_marked timestamp, + last_published timestamp, note text, unread boolean not null default true); -- create index ttrss_user_entries_feed_id_index on ttrss_user_entries(feed_id); --- create index ttrss_user_entries_owner_uid_index on ttrss_user_entries(owner_uid); +create index ttrss_user_entries_owner_uid_index on ttrss_user_entries(owner_uid); create index ttrss_user_entries_ref_id_index on ttrss_user_entries(ref_id); create index ttrss_user_entries_feed_id on ttrss_user_entries(feed_id); +create index ttrss_user_entries_unread_idx on ttrss_user_entries(unread); create table ttrss_entry_comments (id serial not null primary key, ref_id integer not null references ttrss_entries(id) ON DELETE CASCADE, owner_uid integer not null references ttrss_users(id) ON DELETE CASCADE, private boolean not null default false, date_entered timestamp not null); - + create index ttrss_entry_comments_ref_id_index on ttrss_entry_comments(ref_id); -- create index ttrss_entry_comments_owner_uid_index on ttrss_entry_comments(owner_uid); -create table ttrss_filter_types (id integer not null primary key, - name varchar(120) unique not null, +create table ttrss_filter_types (id integer not null primary key, + name varchar(120) unique not null, description varchar(250) not null unique); insert into ttrss_filter_types (id,name,description) values (1, 'title', 'Title'); insert into ttrss_filter_types (id,name,description) values (2, 'content', 'Content'); -insert into ttrss_filter_types (id,name,description) values (3, 'both', +insert into ttrss_filter_types (id,name,description) values (3, 'both', 'Title or Content'); -insert into ttrss_filter_types (id,name,description) values (4, 'link', +insert into ttrss_filter_types (id,name,description) values (4, 'link', 'Link'); -insert into ttrss_filter_types (id,name,description) values (5, 'date', +insert into ttrss_filter_types (id,name,description) values (5, 'date', 'Article Date'); insert into ttrss_filter_types (id,name,description) values (6, 'author', 'Author'); +insert into ttrss_filter_types (id,name,description) values (7, 'tag', 'Article Tags'); -create table ttrss_filter_actions (id integer not null primary key, - name varchar(120) unique not null, +create table ttrss_filter_actions (id integer not null primary key, + name varchar(120) unique not null, description varchar(250) not null unique); -insert into ttrss_filter_actions (id,name,description) values (1, 'filter', - 'Filter article'); +insert into ttrss_filter_actions (id,name,description) values (1, 'filter', + 'Delete article'); -insert into ttrss_filter_actions (id,name,description) values (2, 'catchup', +insert into ttrss_filter_actions (id,name,description) values (2, 'catchup', 'Mark as read'); -insert into ttrss_filter_actions (id,name,description) values (3, 'mark', +insert into ttrss_filter_actions (id,name,description) values (3, 'mark', 'Set starred'); -insert into ttrss_filter_actions (id,name,description) values (4, 'tag', +insert into ttrss_filter_actions (id,name,description) values (4, 'tag', 'Assign tags'); -insert into ttrss_filter_actions (id,name,description) values (5, 'publish', +insert into ttrss_filter_actions (id,name,description) values (5, 'publish', 'Publish article'); -insert into ttrss_filter_actions (id,name,description) values (6, 'score', +insert into ttrss_filter_actions (id,name,description) values (6, 'score', 'Modify score'); -insert into ttrss_filter_actions (id,name,description) values (7, 'label', +insert into ttrss_filter_actions (id,name,description) values (7, 'label', 'Assign label'); -create table ttrss_filters (id serial not null primary key, +insert into ttrss_filter_actions (id,name,description) values (8, 'stop', + 'Stop / Do nothing'); + +create table ttrss_filters2(id serial not null primary key, owner_uid integer not null references ttrss_users(id) on delete cascade, - feed_id integer references ttrss_feeds(id) on delete cascade default null, - filter_type integer not null references ttrss_filter_types(id), + match_any_rule boolean not null default false, + inverse boolean not null default false, + title varchar(250) not null default '', + order_id integer not null default 0, + enabled boolean not null default true); + +create table ttrss_filters2_rules(id serial not null primary key, + filter_id integer not null references ttrss_filters2(id) on delete cascade, reg_exp varchar(250) not null, - filter_param varchar(250) not null default '', - enabled boolean not null default true, inverse boolean not null default false, + filter_type integer not null references ttrss_filter_types(id), + feed_id integer references ttrss_feeds(id) on delete cascade default null, + cat_id integer references ttrss_feed_categories(id) on delete cascade default null, + cat_filter boolean not null default false); + +create table ttrss_filters2_actions(id serial not null primary key, + filter_id integer not null references ttrss_filters2(id) on delete cascade, action_id integer not null default 1 references ttrss_filter_actions(id) on delete cascade, action_param varchar(250) not null default ''); -create table ttrss_tags (id serial not null primary key, +create table ttrss_tags (id serial not null primary key, tag_name varchar(250) not null, owner_uid integer not null references ttrss_users(id) on delete cascade, post_int_id integer references ttrss_user_entries(int_id) ON DELETE CASCADE not null); create index ttrss_tags_owner_uid_index on ttrss_tags(owner_uid); +create index ttrss_tags_post_int_id_idx on ttrss_tags(post_int_id); create table ttrss_version (schema_version int not null); -insert into ttrss_version values (66); +insert into ttrss_version values (127); create table ttrss_enclosures (id serial not null primary key, content_url text not null, content_type varchar(250) not null, title text not null, duration text not null, + width integer not null default 0, + height integer not null default 0, post_id integer references ttrss_entries(id) ON DELETE cascade NOT NULL); +create index ttrss_enclosures_post_id_idx on ttrss_enclosures(post_id); + create table ttrss_settings_profiles(id serial not null primary key, title varchar(250) not null, owner_uid integer not null references ttrss_users(id) on delete cascade); -create table ttrss_prefs_types (id integer not null primary key, +create table ttrss_prefs_types (id integer not null primary key, type_name varchar(100) not null); insert into ttrss_prefs_types (id, type_name) values (1, 'bool'); insert into ttrss_prefs_types (id, type_name) values (2, 'string'); insert into ttrss_prefs_types (id, type_name) values (3, 'integer'); -create table ttrss_prefs_sections (id integer not null primary key, +create table ttrss_prefs_sections (id integer not null primary key, + order_id integer not null, section_name varchar(100) not null); -insert into ttrss_prefs_sections (id, section_name) values (1, 'General'); -insert into ttrss_prefs_sections (id, section_name) values (2, 'Interface'); -insert into ttrss_prefs_sections (id, section_name) values (3, 'Advanced'); +insert into ttrss_prefs_sections (id, section_name, order_id) values (1, 'General', 0); +insert into ttrss_prefs_sections (id, section_name, order_id) values (2, 'Interface', 1); +insert into ttrss_prefs_sections (id, section_name, order_id) values (3, 'Advanced', 3); +insert into ttrss_prefs_sections (id, section_name, order_id) values (4, 'Digest', 2); create table ttrss_prefs (pref_name varchar(250) not null primary key, type_id integer not null references ttrss_prefs_types(id), - section_id integer not null references ttrss_prefs_sections(id) default 1, - short_desc text not null, - help_text text not null default '', + section_id integer not null default 1 references ttrss_prefs_sections(id), access_level integer not null default 0, def_value text not null); -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('ENABLE_FEED_ICONS', 1, 'true', 'Enable feed icons',3); -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('PURGE_OLD_DAYS', 3, '60', 'Purge old posts after this number of days (0 - disables)',1); -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('UPDATE_POST_ON_CHECKSUM_CHANGE', 1, 'true', 'Update post on checksum change',1); -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('ENABLE_LABELS', 1, 'false', 'Enable labels',3, - 'Experimental support for virtual feeds based on user crafted SQL queries. This feature is highly experimental and at this point not user friendly. Use with caution.'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('DEFAULT_UPDATE_INTERVAL', 3, '30', 'Default interval between feed updates',1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('DEFAULT_ARTICLE_LIMIT', 3, '30', 'Amount of articles to display at once',2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('ALLOW_DUPLICATE_POSTS', 1, 'true', 'Allow duplicate posts',1, - '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.'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('USER_STYLESHEET_URL', 2, '', 'User stylesheet URL',2, - 'Link to user stylesheet to override default style, disabled if empty.'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('ENABLE_FEED_CATS', 1, 'false', 'Enable feed categories',2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('SHOW_CONTENT_PREVIEW', 1, 'true', 'Show content preview in headlines list',2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('SHORT_DATE_FORMAT', 2, 'M d, G:i', 'Short date format',3); -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('LONG_DATE_FORMAT', 2, 'D, M d Y - G:i', 'Long date format',3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('HEADLINES_SMART_DATE', 1, 'true', 'Use more accessible date/time format for headlines',3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('COMBINED_DISPLAY_MODE', 1, 'false', 'Combined feed display',2, - 'Display expanded list of feed articles, instead of separate displays for headlines and article content'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('HIDE_READ_FEEDS', 1, 'false', 'Hide feeds with no unread messages',2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('OPEN_LINKS_IN_NEW_WINDOW', 1, 'true', 'Open article links in new browser window',2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('ON_CATCHUP_SHOW_NEXT_FEED', 1, 'false', 'On catchup show next feed',2, - 'When "Mark as read" button is clicked in toolbar, automatically open next feed with unread articles.'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('FEEDS_SORT_BY_UNREAD', 1, 'false', 'Sort feeds by unread articles count',2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('EXTENDED_FEEDLIST', 1, 'false', 'Show additional information in feedlist',3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('MARK_UNREAD_ON_UPDATE', 1, 'false', 'Set articles as unread on update',3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('REVERSE_HEADLINES', 1, 'false', 'Reverse headline order (oldest first)',2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('DIGEST_ENABLE', 1, 'false', 'Enable e-mail digest',1, -'This option enables sending daily digest of new (and unread) headlines on your configured e-mail address'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('CONFIRM_FEED_CATCHUP', 1, 'true', 'Confirm marking feed as read',3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('CDM_AUTO_CATCHUP', 1, 'false', 'Mark articles as read automatically',2, -'This option enables marking articles as read automatically in combined mode (except for Fresh articles feed) while you scroll article list.'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_DEFAULT_VIEW_MODE', 2, 'adaptive', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_DEFAULT_VIEW_LIMIT', 3, '30', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_PREFS_ACTIVE_TAB', 2, '', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_INFOBOX_DISABLE_OVERLAY', 1, 'false', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('STRIP_UNSAFE_TAGS', 1, 'true', 'Strip unsafe tags from articles', 3, -'Strip all but most common HTML tags when reading articles.'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('BLACKLISTED_TAGS', 2, 'main, generic, misc, uncategorized, blog, blogroll, general, news', 'Blacklisted tags', 3, -'When auto-detecting tags in articles these tags will not be applied (comma-separated list).'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('ENABLE_SEARCH_TOOLBAR', 1, 'false', 'Enable search toolbar',2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_PREFS_ENABLE_PAGINATION', 2, '', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_PREFS_PUBLISH_KEY', 2, '', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('FRESH_ARTICLE_MAX_AGE', 3, '24', 'Maximum age of fresh articles (in hours)',2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('DIGEST_CATCHUP', 1, 'false', 'Mark articles in e-mail digest as read',1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('CDM_EXPANDED', 1, 'true', 'Automatically expand articles in combined mode',3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('PURGE_UNREAD_ARTICLES', 1, 'true', 'Purge unread articles',3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('HIDE_READ_SHOWS_SPECIAL', 1, 'true', 'Show special feeds when hiding read feeds',3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('HIDE_FEEDLIST', 1, 'false', 'Hide feedlist',2, 'This option hides feedlist and allows it to be toggled on the fly, useful for small screens.'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('VFEED_GROUP_BY_FEED', 1, 'false', 'Group headlines in virtual feeds',2, - 'When this option is enabled, headlines in Special feeds and Labels are grouped by feeds'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('SYNC_COUNTERS', 1, 'false', 'Prefer more accurate feedlist counters to UI speed',3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('STRIP_IMAGES', 1, 'false', 'Do not show images in articles', 2); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('ENABLE_FLASH_PLAYER', 1, 'true', 'Enable inline MP3 player', 3, 'Enable the Flash-based XSPF Player to play MP3-format podcast enclosures.'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_DEFAULT_VIEW_ORDER_BY', 2, 'default', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('ENABLE_OFFLINE_READING', 1, 'false', 'Enable offline reading',1, 'Synchronize new articles for offline reading using Google Gears.'); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('ENABLE_API_ACCESS', 1, 'false', 'Enable external API', 3); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_SPECIAL', 1, 'false', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_LABELS', 1, 'false', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_UNCAT', 1, 'false', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_FEEDLIST', 1, 'false', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_MOBILE_ENABLE_CATS', 1, 'false', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_MOBILE_SHOW_IMAGES', 1, 'false', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_MOBILE_HIDE_READ', 1, 'false', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_MOBILE_SORT_FEEDS_UNREAD', 1, 'false', '', 1); - -insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_THEME_ID', 2, '0', '', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('PURGE_OLD_DAYS', 3, '60', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('DEFAULT_UPDATE_INTERVAL', 3, '30', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('DEFAULT_ARTICLE_LIMIT', 3, '30', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('ALLOW_DUPLICATE_POSTS', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('ENABLE_FEED_CATS', 1, 'true', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('SHOW_CONTENT_PREVIEW', 1, 'true', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('SHORT_DATE_FORMAT', 2, 'M d, G:i', 3); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('LONG_DATE_FORMAT', 2, 'D, M d Y - G:i', 3); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('COMBINED_DISPLAY_MODE', 1, 'true', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('HIDE_READ_FEEDS', 1, 'false', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('ON_CATCHUP_SHOW_NEXT_FEED', 1, 'false', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('FEEDS_SORT_BY_UNREAD', 1, 'false', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('REVERSE_HEADLINES', 1, 'false', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('DIGEST_ENABLE', 1, 'false', 4); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('CONFIRM_FEED_CATCHUP', 1, 'true', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('CDM_AUTO_CATCHUP', 1, 'false', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_DEFAULT_VIEW_MODE', 2, 'adaptive', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_DEFAULT_VIEW_LIMIT', 3, '30', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_PREFS_ACTIVE_TAB', 2, '', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('STRIP_UNSAFE_TAGS', 1, 'true', 3); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('BLACKLISTED_TAGS', 2, 'main, generic, misc, uncategorized, blog, blogroll, general, news', 3); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('FRESH_ARTICLE_MAX_AGE', 3, '24', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('DIGEST_CATCHUP', 1, 'false', 4); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('CDM_EXPANDED', 1, 'true', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('PURGE_UNREAD_ARTICLES', 1, 'true', 3); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('HIDE_READ_SHOWS_SPECIAL', 1, 'true', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('VFEED_GROUP_BY_FEED', 1, 'false', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('STRIP_IMAGES', 1, 'false', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_DEFAULT_VIEW_ORDER_BY', 2, 'default', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('ENABLE_API_ACCESS', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_COLLAPSED_SPECIAL', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_COLLAPSED_LABELS', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_COLLAPSED_UNCAT', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_COLLAPSED_FEEDLIST', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_MOBILE_ENABLE_CATS', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_MOBILE_SHOW_IMAGES', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_MOBILE_HIDE_READ', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_MOBILE_SORT_FEEDS_UNREAD', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_THEME_ID', 2, '0', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('USER_TIMEZONE', 2, 'Automatic', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('USER_STYLESHEET', 2, '', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('SORT_HEADLINES_BY_FEED_DATE', 1, 'false', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_MOBILE_BROWSE_CATS', 1, 'true', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('SSL_CERT_SERIAL', 2, '', 3); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('DIGEST_PREFERRED_TIME', 2, '00:00', 4); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_PREFS_SHOW_EMPTY_CATS', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_DEFAULT_INCLUDE_CHILDREN', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('AUTO_ASSIGN_LABELS', 1, 'false', 3); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_ENABLED_PLUGINS', 2, '', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('_MOBILE_REVERSE_HEADLINES', 1, 'false', 1); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('USER_CSS_THEME', 2, '', 2); +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('USER_LANGUAGE', 2, '', 2); + +update ttrss_prefs set access_level = 1 where pref_name in ('ON_CATCHUP_SHOW_NEXT_FEED', + 'SORT_HEADLINES_BY_FEED_DATE', + 'VFEED_GROUP_BY_FEED', + 'FRESH_ARTICLE_MAX_AGE', + 'CDM_EXPANDED', + 'SHOW_CONTENT_PREVIEW', + 'AUTO_ASSIGN_LABELS', + 'HIDE_READ_SHOWS_SPECIAL'); create table ttrss_user_prefs ( owner_uid integer not null references ttrss_users(id) ON DELETE CASCADE, @@ -370,15 +365,11 @@ create table ttrss_user_prefs ( value text not null); create index ttrss_user_prefs_owner_uid_index on ttrss_user_prefs(owner_uid); +create index ttrss_user_prefs_pref_name_idx on ttrss_user_prefs(pref_name); -- create index ttrss_user_prefs_value_index on ttrss_user_prefs(value); -create table ttrss_scheduled_updates (id serial not null primary key, - owner_uid integer not null references ttrss_users(id) ON DELETE CASCADE, - feed_id integer default null references ttrss_feeds(id) ON DELETE CASCADE, - entered timestamp not null default NOW()); - -create table ttrss_sessions (id varchar(250) unique not null primary key, - data text, +create table ttrss_sessions (id varchar(250) not null primary key, + data text, expire integer not null); create index ttrss_sessions_expire_index on ttrss_sessions(expire); @@ -388,9 +379,10 @@ create function SUBSTRING_FOR_DATE(timestamp, int, int) RETURNS text AS 'SELECT create table ttrss_feedbrowser_cache ( feed_url text not null primary key, title text not null, - subscribers integer not null); + site_url text not null, + subscribers integer not null); -create table ttrss_labels2 (id serial not null primary key, +create table ttrss_labels2 (id serial not null primary key, owner_uid integer not null references ttrss_users(id) ON DELETE CASCADE, fg_color varchar(15) not null default '', bg_color varchar(15) not null default '', @@ -402,4 +394,42 @@ create table ttrss_user_labels2 ( article_id integer not null references ttrss_entries(id) ON DELETE CASCADE ); +create table ttrss_access_keys (id serial not null primary key, + access_key varchar(250) not null, + feed_id varchar(250) not null, + is_cat boolean not null default false, + owner_uid integer not null references ttrss_users(id) on delete cascade); + +create table ttrss_linked_instances (id serial not null primary key, + last_connected timestamp not null, + last_status_in integer not null, + last_status_out integer not null, + access_key varchar(250) not null unique, + access_url text not null); + +create table ttrss_linked_feeds ( + feed_url text not null, + site_url text not null, + title text not null, + created timestamp not null, + updated timestamp not null, + instance_id integer not null references ttrss_linked_instances(id) ON DELETE CASCADE, + subscribers integer not null); + +create table ttrss_plugin_storage ( + id serial not null primary key, + name varchar(100) not null, + owner_uid integer not null references ttrss_users(id) ON DELETE CASCADE, + content text not null); + +create table ttrss_error_log( + id serial not null primary key, + owner_uid integer references ttrss_users(id) ON DELETE SET NULL, + errno integer not null, + errstr text not null, + filename text not null, + lineno integer not null, + context text not null, + created_at timestamp not null); + commit; diff --git a/schema/versions/mysql/100.sql b/schema/versions/mysql/100.sql new file mode 100644 index 0000000000..a360dab6cf --- /dev/null +++ b/schema/versions/mysql/100.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_ENABLED_PLUGINS', 2, '', '', 1); + +update ttrss_version set schema_version = 100; + +commit; diff --git a/schema/versions/mysql/101.sql b/schema/versions/mysql/101.sql new file mode 100644 index 0000000000..47ff265228 --- /dev/null +++ b/schema/versions/mysql/101.sql @@ -0,0 +1,12 @@ +begin; + +create table ttrss_plugin_storage ( + id integer not null auto_increment primary key, + name varchar(100) not null, + owner_uid integer not null, + content longtext not null, + foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +update ttrss_version set schema_version = 101; + +commit; diff --git a/schema/versions/mysql/102.sql b/schema/versions/mysql/102.sql new file mode 100644 index 0000000000..ccf5ef3b35 --- /dev/null +++ b/schema/versions/mysql/102.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_MOBILE_REVERSE_HEADLINES', 1, 'false', '', 1); + +update ttrss_version set schema_version = 102; + +commit; diff --git a/schema/versions/mysql/103.sql b/schema/versions/mysql/103.sql new file mode 100644 index 0000000000..6a93b80b83 --- /dev/null +++ b/schema/versions/mysql/103.sql @@ -0,0 +1,7 @@ +begin; + +alter table ttrss_entries add column plugin_data longtext; + +update ttrss_version set schema_version = 103; + +commit; diff --git a/schema/versions/mysql/104.sql b/schema/versions/mysql/104.sql new file mode 100644 index 0000000000..104e4b9170 --- /dev/null +++ b/schema/versions/mysql/104.sql @@ -0,0 +1,7 @@ +begin; + +update ttrss_prefs set short_desc = 'Hide images in articles' where pref_name = 'STRIP_IMAGES'; + +update ttrss_version set schema_version = 104; + +commit; diff --git a/schema/versions/mysql/105.sql b/schema/versions/mysql/105.sql new file mode 100644 index 0000000000..a96101784f --- /dev/null +++ b/schema/versions/mysql/105.sql @@ -0,0 +1,11 @@ +begin; + +alter table ttrss_user_entries add column last_marked datetime; +alter table ttrss_user_entries add column last_published datetime; + +update ttrss_user_entries set last_published = last_read where published = true; +update ttrss_user_entries set last_marked = last_read where marked = true; + +update ttrss_version set schema_version = 105; + +commit; diff --git a/schema/versions/mysql/106.sql b/schema/versions/mysql/106.sql new file mode 100644 index 0000000000..b819416b90 --- /dev/null +++ b/schema/versions/mysql/106.sql @@ -0,0 +1,12 @@ +begin; + +update ttrss_prefs set short_desc = 'Do not embed images in articles' where pref_name = 'STRIP_IMAGES'; + +alter table ttrss_feeds add column hide_images bool; +update ttrss_feeds set hide_images = false; +alter table ttrss_feeds change hide_images hide_images bool not null; +alter table ttrss_feeds alter column hide_images set default false; + +update ttrss_version set schema_version = 106; + +commit; diff --git a/schema/versions/mysql/107.sql b/schema/versions/mysql/107.sql new file mode 100644 index 0000000000..9283d40d93 --- /dev/null +++ b/schema/versions/mysql/107.sql @@ -0,0 +1,15 @@ +begin; + +alter table ttrss_filters2 add column inverse bool; +update ttrss_filters2 set inverse = false; +alter table ttrss_filters2 change inverse inverse bool not null; +alter table ttrss_filters2 alter column inverse set default false; + +alter table ttrss_filters2_rules add column inverse bool; +update ttrss_filters2_rules set inverse = false; +alter table ttrss_filters2_rules change inverse inverse bool not null; +alter table ttrss_filters2_rules alter column inverse set default false; + +update ttrss_version set schema_version = 107; + +commit; diff --git a/schema/versions/mysql/108.sql b/schema/versions/mysql/108.sql new file mode 100644 index 0000000000..899be8bb46 --- /dev/null +++ b/schema/versions/mysql/108.sql @@ -0,0 +1,7 @@ +begin; + +update ttrss_prefs set def_value = 'false' where pref_name = 'SORT_HEADLINES_BY_FEED_DATE'; + +update ttrss_version set schema_version = 108; + +commit; diff --git a/schema/versions/mysql/109.sql b/schema/versions/mysql/109.sql new file mode 100644 index 0000000000..77e883c3b0 --- /dev/null +++ b/schema/versions/mysql/109.sql @@ -0,0 +1,7 @@ +begin; + +update ttrss_prefs set short_desc = 'Hide feeds with no unread articles' where pref_name = 'HIDE_READ_FEEDS'; + +update ttrss_version set schema_version = 109; + +commit; diff --git a/schema/versions/mysql/110.sql b/schema/versions/mysql/110.sql new file mode 100644 index 0000000000..859f7d6dc6 --- /dev/null +++ b/schema/versions/mysql/110.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('USER_CSS_THEME', 2, '', 'Select theme', 2, 'Select one of the available CSS themes'); + +update ttrss_version set schema_version = 110; + +commit; diff --git a/schema/versions/mysql/111.sql b/schema/versions/mysql/111.sql new file mode 100644 index 0000000000..27f287d1ac --- /dev/null +++ b/schema/versions/mysql/111.sql @@ -0,0 +1,7 @@ +begin; + +update ttrss_prefs set def_value = 'true' where pref_name = 'COMBINED_DISPLAY_MODE'; + +update ttrss_version set schema_version = 111; + +commit; diff --git a/schema/versions/mysql/112.sql b/schema/versions/mysql/112.sql new file mode 100644 index 0000000000..a6f0b200b9 --- /dev/null +++ b/schema/versions/mysql/112.sql @@ -0,0 +1,15 @@ +begin; + +alter table ttrss_filters2 add column order_id integer; +update ttrss_filters2 set order_id = 0; +alter table ttrss_filters2 change order_id order_id integer not null; +alter table ttrss_filters2 alter column order_id set default 0; + +alter table ttrss_filters2 add column title varchar(250); +update ttrss_filters2 set title = ''; +alter table ttrss_filters2 change title title varchar(250) not null; +alter table ttrss_filters2 alter column title set default ''; + +update ttrss_version set schema_version = 112; + +commit; diff --git a/schema/versions/mysql/113.sql b/schema/versions/mysql/113.sql new file mode 100644 index 0000000000..3c0d005634 --- /dev/null +++ b/schema/versions/mysql/113.sql @@ -0,0 +1,8 @@ +begin; + +insert into ttrss_filter_actions (id,name,description) values (8, 'stop', + 'Stop / Do nothing'); + +update ttrss_version set schema_version = 113; + +commit; diff --git a/schema/versions/mysql/114.sql b/schema/versions/mysql/114.sql new file mode 100644 index 0000000000..fd7ce5d2b9 --- /dev/null +++ b/schema/versions/mysql/114.sql @@ -0,0 +1,15 @@ +begin; + +alter table ttrss_feeds add column view_settings varchar(250); +update ttrss_feeds set view_settings = ''; +alter table ttrss_feeds change view_settings view_settings varchar(250) not null; +alter table ttrss_feeds alter column view_settings set default ''; + +alter table ttrss_feed_categories add column view_settings varchar(250); +update ttrss_feed_categories set view_settings = ''; +alter table ttrss_feed_categories change view_settings view_settings varchar(250) not null; +alter table ttrss_feed_categories alter column view_settings set default ''; + +update ttrss_version set schema_version = 114; + +commit; diff --git a/schema/versions/mysql/115.sql b/schema/versions/mysql/115.sql new file mode 100644 index 0000000000..e23f0533a3 --- /dev/null +++ b/schema/versions/mysql/115.sql @@ -0,0 +1,9 @@ +begin; + +alter table ttrss_prefs_sections drop column section_name; +alter table ttrss_prefs drop column short_desc; +alter table ttrss_prefs drop column help_text; + +update ttrss_version set schema_version = 115; + +commit; diff --git a/schema/versions/mysql/116.sql b/schema/versions/mysql/116.sql new file mode 100644 index 0000000000..252ba0e3af --- /dev/null +++ b/schema/versions/mysql/116.sql @@ -0,0 +1,7 @@ +begin; + +update ttrss_prefs set def_value = 'false' where pref_name = 'ALLOW_DUPLICATE_POSTS'; + +update ttrss_version set schema_version = 116; + +commit; diff --git a/schema/versions/mysql/117.sql b/schema/versions/mysql/117.sql new file mode 100644 index 0000000000..da3d056cc7 --- /dev/null +++ b/schema/versions/mysql/117.sql @@ -0,0 +1,8 @@ +begin; + +ALTER TABLE ttrss_feeds ADD COLUMN favicon_avg_color VARCHAR(11); +alter table ttrss_feeds alter column favicon_avg_color set default null; + +update ttrss_version set schema_version = 117; + +commit; diff --git a/schema/versions/mysql/118.sql b/schema/versions/mysql/118.sql new file mode 100644 index 0000000000..add2b0c1fd --- /dev/null +++ b/schema/versions/mysql/118.sql @@ -0,0 +1,16 @@ +begin; + +create table ttrss_error_log( + id integer not null auto_increment primary key, + owner_uid integer, + errno integer not null, + errstr text not null, + filename text not null, + lineno integer not null, + context text not null, + created_at datetime not null, + foreign key (owner_uid) references ttrss_users(id) ON DELETE SET NULL) ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +update ttrss_version set schema_version = 118; + +commit; diff --git a/schema/versions/mysql/119.sql b/schema/versions/mysql/119.sql new file mode 100644 index 0000000000..ddb7d64de9 --- /dev/null +++ b/schema/versions/mysql/119.sql @@ -0,0 +1,7 @@ +begin; + +update ttrss_prefs set def_value = 'Automatic' where pref_name = 'USER_TIMEZONE'; + +update ttrss_version set schema_version = 119; + +commit; diff --git a/schema/versions/mysql/120.sql b/schema/versions/mysql/120.sql new file mode 100644 index 0000000000..34971146ef --- /dev/null +++ b/schema/versions/mysql/120.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('USER_LANGUAGE', 2, '', 2); + +update ttrss_version set schema_version = 120; + +commit; diff --git a/schema/versions/mysql/121.sql b/schema/versions/mysql/121.sql new file mode 100644 index 0000000000..d9cf51184e --- /dev/null +++ b/schema/versions/mysql/121.sql @@ -0,0 +1,7 @@ +begin; + +update ttrss_prefs set def_value = 'false' where pref_name = 'AUTO_ASSIGN_LABELS'; + +update ttrss_version set schema_version = 121; + +commit; diff --git a/schema/versions/mysql/122.sql b/schema/versions/mysql/122.sql new file mode 100644 index 0000000000..397b97bfcb --- /dev/null +++ b/schema/versions/mysql/122.sql @@ -0,0 +1,7 @@ +begin; + +alter table ttrss_entries add column lang varchar(2); + +update ttrss_version set schema_version = 122; + +commit; diff --git a/schema/versions/mysql/123.sql b/schema/versions/mysql/123.sql new file mode 100644 index 0000000000..f311d060ba --- /dev/null +++ b/schema/versions/mysql/123.sql @@ -0,0 +1,9 @@ +begin; + +ALTER TABLE ttrss_counters_cache ENGINE=InnoDB DEFAULT CHARSET=UTF8; +ALTER TABLE ttrss_cat_counters_cache ENGINE=InnoDB DEFAULT CHARSET=UTF8; +ALTER TABLE ttrss_feedbrowser_cache ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +update ttrss_version set schema_version = 123; + +commit; diff --git a/schema/versions/mysql/124.sql b/schema/versions/mysql/124.sql new file mode 100644 index 0000000000..96ae463413 --- /dev/null +++ b/schema/versions/mysql/124.sql @@ -0,0 +1,8 @@ +begin; + +alter table ttrss_users add column resetpass_token varchar(250); +alter table ttrss_users alter column resetpass_token set default null; + +update ttrss_version set schema_version = 124; + +commit; diff --git a/schema/versions/mysql/125.sql b/schema/versions/mysql/125.sql new file mode 100644 index 0000000000..9f004d963b --- /dev/null +++ b/schema/versions/mysql/125.sql @@ -0,0 +1,10 @@ +begin; + +alter table ttrss_users drop column resetpass_token; + +alter table ttrss_users add column resetpass_token varchar(250); +alter table ttrss_users alter column resetpass_token set default null; + +update ttrss_version set schema_version = 125; + +commit; diff --git a/schema/versions/mysql/126.sql b/schema/versions/mysql/126.sql new file mode 100644 index 0000000000..6ff661e715 --- /dev/null +++ b/schema/versions/mysql/126.sql @@ -0,0 +1,8 @@ +begin; + +alter table ttrss_enclosures add column width integer not null default 0; +alter table ttrss_enclosures add column height integer not null default 0; + +update ttrss_version set schema_version = 126; + +commit; diff --git a/schema/versions/mysql/127.sql b/schema/versions/mysql/127.sql new file mode 100644 index 0000000000..2c521d86c5 --- /dev/null +++ b/schema/versions/mysql/127.sql @@ -0,0 +1,5 @@ +BEGIN; + +UPDATE ttrss_version SET schema_version = 127; + +COMMIT; diff --git a/schema/versions/mysql/5.sql b/schema/versions/mysql/5.sql index e3ddb0357c..1d8b8537b8 100644 --- a/schema/versions/mysql/5.sql +++ b/schema/versions/mysql/5.sql @@ -5,7 +5,7 @@ create table ttrss_scheduled_updates (id integer not null primary key auto_incre feed_id integer default null, entered datetime not null, foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE, - foreign key (feed_id) references ttrss_feeds(id) ON DELETE CASCADE) TYPE=InnoDB; + foreign key (feed_id) references ttrss_feeds(id) ON DELETE CASCADE) ENGINE=InnoDB; update ttrss_version set schema_version = 5; diff --git a/schema/versions/mysql/51.sql b/schema/versions/mysql/51.sql index 46d0543ff6..e8fe4c7b84 100644 --- a/schema/versions/mysql/51.sql +++ b/schema/versions/mysql/51.sql @@ -2,13 +2,13 @@ create table ttrss_labels2 (id integer not null primary key auto_increment, owner_uid integer not null, caption varchar(250) not null, foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE -) TYPE=InnoDB; +) ENGINE=InnoDB; create table ttrss_user_labels2 (label_id integer not null, article_id integer not null, foreign key (label_id) references ttrss_labels2(id) ON DELETE CASCADE, foreign key (article_id) references ttrss_entries(id) ON DELETE CASCADE -) TYPE=InnoDB; +) ENGINE=InnoDB; insert into ttrss_filter_actions (id,name,description) values (7, 'label', 'Assign label'); diff --git a/schema/versions/mysql/56.sql b/schema/versions/mysql/56.sql index af2fb82099..11cd3069c8 100644 --- a/schema/versions/mysql/56.sql +++ b/schema/versions/mysql/56.sql @@ -9,7 +9,7 @@ create table ttrss_enclosures (id serial not null primary key, title text not null, duration text not null, index (post_id), - foreign key (post_id) references ttrss_entries(id) ON DELETE cascade) TYPE=InnoDB; + foreign key (post_id) references ttrss_entries(id) ON DELETE cascade) ENGINE=InnoDB; update ttrss_version set schema_version = 56; diff --git a/schema/versions/mysql/6.sql b/schema/versions/mysql/6.sql index 1018bcf4df..b7ee97ccc1 100644 --- a/schema/versions/mysql/6.sql +++ b/schema/versions/mysql/6.sql @@ -10,7 +10,7 @@ create table ttrss_sessions (id varchar(250) not null primary key, expire integer not null, ip_address varchar(15) not null default '', index (id), - index (expire)) TYPE=InnoDB; + index (expire)) ENGINE=InnoDB; delete from ttrss_prefs where pref_name = 'ENABLE_SPLASH'; diff --git a/schema/versions/mysql/60.sql b/schema/versions/mysql/60.sql index d1af11a31a..6b33e6c87c 100644 --- a/schema/versions/mysql/60.sql +++ b/schema/versions/mysql/60.sql @@ -8,7 +8,7 @@ create table ttrss_archived_feeds (id integer not null primary key, feed_url text not null, site_url varchar(250) not null default '', index(owner_uid), - foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) TYPE=InnoDB; + foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) ENGINE=InnoDB; alter table ttrss_user_entries add column orig_feed_id integer; update ttrss_user_entries set orig_feed_id = NULL; diff --git a/schema/versions/mysql/63.sql b/schema/versions/mysql/63.sql index e5b5399063..26b7126e7e 100644 --- a/schema/versions/mysql/63.sql +++ b/schema/versions/mysql/63.sql @@ -4,7 +4,7 @@ create table ttrss_settings_profiles(id integer primary key auto_increment, title varchar(250) not null, owner_uid integer not null, index (owner_uid), - foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) TYPE=InnoDB; + foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) ENGINE=InnoDB; alter table ttrss_user_prefs add column profile integer; update ttrss_user_prefs set profile = NULL; diff --git a/schema/versions/mysql/67.sql b/schema/versions/mysql/67.sql new file mode 100644 index 0000000000..b501bf4c3b --- /dev/null +++ b/schema/versions/mysql/67.sql @@ -0,0 +1,5 @@ +alter table ttrss_entries add column date_updated datetime; +update ttrss_entries set date_updated = date_entered; +alter table ttrss_entries change date_updated date_updated datetime not null; + +update ttrss_version set schema_version = 67; diff --git a/schema/versions/mysql/68.sql b/schema/versions/mysql/68.sql new file mode 100644 index 0000000000..6d56df0f9d --- /dev/null +++ b/schema/versions/mysql/68.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('USER_TIMEZONE', 2, 'UTC', 'User timezone', 1); + +update ttrss_version set schema_version = 68; + +commit; diff --git a/schema/versions/mysql/69.sql b/schema/versions/mysql/69.sql new file mode 100644 index 0000000000..3e42fd3fb4 --- /dev/null +++ b/schema/versions/mysql/69.sql @@ -0,0 +1,12 @@ +begin; + +create table ttrss_access_keys (id serial not null primary key, + access_key varchar(250) not null, + feed_id varchar(250) not null, + is_cat bool not null default false, + owner_uid integer not null, + foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +update ttrss_version set schema_version = 69; + +commit; diff --git a/schema/versions/mysql/70.sql b/schema/versions/mysql/70.sql new file mode 100644 index 0000000000..0c64336d49 --- /dev/null +++ b/schema/versions/mysql/70.sql @@ -0,0 +1,6 @@ +alter table ttrss_users add column full_name varchar(250); +update ttrss_users set full_name = ''; +alter table ttrss_users change full_name full_name varchar(250) not null; +alter table ttrss_users alter column full_name set default ''; + +update ttrss_version set schema_version = 70; diff --git a/schema/versions/mysql/71.sql b/schema/versions/mysql/71.sql new file mode 100644 index 0000000000..2061ada2b8 --- /dev/null +++ b/schema/versions/mysql/71.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_filter_types (id,name,description) values (7, 'tag', 'Article Tags'); + +update ttrss_version set schema_version = 71; + +commit; diff --git a/schema/versions/mysql/72.sql b/schema/versions/mysql/72.sql new file mode 100644 index 0000000000..2995afda37 --- /dev/null +++ b/schema/versions/mysql/72.sql @@ -0,0 +1,9 @@ +begin; + +alter table ttrss_user_entries add column tag_cache text; +update ttrss_user_entries set tag_cache = ''; +alter table ttrss_user_entries change tag_cache tag_cache text not null; + +update ttrss_version set schema_version = 72; + +commit; diff --git a/schema/versions/mysql/73.sql b/schema/versions/mysql/73.sql new file mode 100644 index 0000000000..051578d222 --- /dev/null +++ b/schema/versions/mysql/73.sql @@ -0,0 +1,8 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('SORT_HEADLINES_BY_FEED_DATE', 1, 'true', 'Sort headlines by feed date',3, + 'Use feed-specified date to sort headlines instead of local import date.'); + +update ttrss_version set schema_version = 73; + +commit; diff --git a/schema/versions/mysql/74.sql b/schema/versions/mysql/74.sql new file mode 100644 index 0000000000..d13856ea94 --- /dev/null +++ b/schema/versions/mysql/74.sql @@ -0,0 +1,9 @@ +begin; + +alter table ttrss_user_entries add column label_cache text; +update ttrss_user_entries set label_cache = ''; +alter table ttrss_user_entries change label_cache label_cache text not null; + +update ttrss_version set schema_version = 74; + +commit; diff --git a/schema/versions/mysql/75.sql b/schema/versions/mysql/75.sql new file mode 100644 index 0000000000..c9017b9e94 --- /dev/null +++ b/schema/versions/mysql/75.sql @@ -0,0 +1,10 @@ +begin; + +alter table ttrss_feeds add column order_id integer; +update ttrss_feeds set order_id = 0; +alter table ttrss_feeds change order_id order_id integer not null; +alter table ttrss_feeds alter column order_id set default 0; + +update ttrss_version set schema_version = 75; + +commit; diff --git a/schema/versions/mysql/76.sql b/schema/versions/mysql/76.sql new file mode 100644 index 0000000000..95c352b458 --- /dev/null +++ b/schema/versions/mysql/76.sql @@ -0,0 +1,8 @@ +begin; + +alter table ttrss_users add column twitter_oauth longtext; +alter table ttrss_users alter column twitter_oauth set default null; + +update ttrss_version set schema_version = 76; + +commit; diff --git a/schema/versions/mysql/77.sql b/schema/versions/mysql/77.sql new file mode 100644 index 0000000000..944f31d84c --- /dev/null +++ b/schema/versions/mysql/77.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('USER_STYLESHEET', 2, '', 'Customize stylesheet', 2, 'Customize CSS stylesheet to your liking'); + +update ttrss_version set schema_version = 77; + +commit; diff --git a/schema/versions/mysql/78.sql b/schema/versions/mysql/78.sql new file mode 100644 index 0000000000..80e9e782ac --- /dev/null +++ b/schema/versions/mysql/78.sql @@ -0,0 +1,15 @@ +begin; + +delete from ttrss_user_prefs where pref_name in ('HIDE_FEEDLIST', 'SYNC_COUNTERS', 'ENABLE_LABELS', + 'ENABLE_SEARCH_TOOLBAR', 'ENABLE_FEED_ICONS', + 'ENABLE_OFFLINE_READING', 'EXTENDED_FEEDLIST', 'OPEN_LINKS_IN_NEW_WINDOW', + 'USER_STYLESHEET_URL', 'ENABLE_FLASH_PLAYER'); + +delete from ttrss_prefs where pref_name in ('HIDE_FEEDLIST', 'SYNC_COUNTERS', 'ENABLE_LABELS', + 'ENABLE_SEARCH_TOOLBAR', 'ENABLE_FEED_ICONS', + 'ENABLE_OFFLINE_READING', 'EXTENDED_FEEDLIST', 'OPEN_LINKS_IN_NEW_WINDOW', + 'USER_STYLESHEET_URL', 'ENABLE_FLASH_PLAYER'); + +update ttrss_version set schema_version = 78; + +commit; diff --git a/schema/versions/mysql/79.sql b/schema/versions/mysql/79.sql new file mode 100644 index 0000000000..7e8c31d49f --- /dev/null +++ b/schema/versions/mysql/79.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_MOBILE_BROWSE_CATS', 1, 'true', '', 1); + +update ttrss_version set schema_version = 79; + +commit; diff --git a/schema/versions/mysql/80.sql b/schema/versions/mysql/80.sql new file mode 100644 index 0000000000..df2295c42d --- /dev/null +++ b/schema/versions/mysql/80.sql @@ -0,0 +1,9 @@ +begin; + +update ttrss_prefs set section_id = 3, + short_desc = 'Automatically mark articles as read', + help_text = 'Mark articles as read automatically while you scroll article list.' where pref_name = 'CDM_AUTO_CATCHUP'; + +update ttrss_version set schema_version = 80; + +commit; diff --git a/schema/versions/mysql/81.sql b/schema/versions/mysql/81.sql new file mode 100644 index 0000000000..800ceede02 --- /dev/null +++ b/schema/versions/mysql/81.sql @@ -0,0 +1,7 @@ +begin; + +update ttrss_filter_actions set description = 'Delete article' where name = 'filter'; + +update ttrss_version set schema_version = 81; + +commit; diff --git a/schema/versions/mysql/82.sql b/schema/versions/mysql/82.sql new file mode 100644 index 0000000000..80ca24e721 --- /dev/null +++ b/schema/versions/mysql/82.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('SSL_CERT_SERIAL', 2, '', 'Login with an SSL certificate',3, 'Click to register your SSL client certificate with tt-rss'); + +update ttrss_version set schema_version = 82; + +commit; diff --git a/schema/versions/mysql/83.sql b/schema/versions/mysql/83.sql new file mode 100644 index 0000000000..e6f9a2a7f4 --- /dev/null +++ b/schema/versions/mysql/83.sql @@ -0,0 +1,34 @@ +begin; + +alter table ttrss_feeds add column mark_unread_on_update boolean; +update ttrss_feeds set mark_unread_on_update = false; +alter table ttrss_feeds change mark_unread_on_update mark_unread_on_update boolean not null; +alter table ttrss_feeds alter column mark_unread_on_update set default false; + +alter table ttrss_feeds add column strip_images boolean; +update ttrss_feeds set strip_images = false; +alter table ttrss_feeds change strip_images strip_images boolean not null; +alter table ttrss_feeds alter column strip_images set default false; + +alter table ttrss_feeds add column update_on_checksum_change boolean; +update ttrss_feeds set update_on_checksum_change = false; +alter table ttrss_feeds change update_on_checksum_change update_on_checksum_change boolean not null; +alter table ttrss_feeds alter column update_on_checksum_change set default false; + +DELETE FROM ttrss_user_prefs WHERE pref_name IN ('HIDE_FEEDLIST', 'SYNC_COUNTERS', 'ENABLE_LABELS', 'ENABLE_SEARCH_TOOLBAR', 'ENABLE_FEED_ICONS', 'ENABLE_OFFLINE_READING', 'EXTENDED_FEEDLIST', 'OPEN_LINKS_IN_NEW_WINDOW', 'ENABLE_FLASH_PLAYER', 'HEADLINES_SMART_DATE', 'MARK_UNREAD_ON_UPDATE', 'UPDATE_POST_ON_CHECKSUM_CHANGE'); + +DELETE FROM ttrss_prefs WHERE pref_name IN ('HIDE_FEEDLIST', 'SYNC_COUNTERS', 'ENABLE_LABELS', 'ENABLE_SEARCH_TOOLBAR', 'ENABLE_FEED_ICONS', 'ENABLE_OFFLINE_READING', 'EXTENDED_FEEDLIST', 'OPEN_LINKS_IN_NEW_WINDOW', 'ENABLE_FLASH_PLAYER', 'HEADLINES_SMART_DATE', 'MARK_UNREAD_ON_UPDATE', 'UPDATE_POST_ON_CHECKSUM_CHANGE'); + +alter table ttrss_feeds add column pubsub_state integer; +update ttrss_feeds set pubsub_state = 0; +alter table ttrss_feeds change pubsub_state pubsub_state integer not null; +alter table ttrss_feeds alter column pubsub_state set default 0; + +alter table ttrss_users drop foreign key ttrss_users_ibfk_1; +alter table ttrss_users drop column theme_id; + +drop table ttrss_themes; + +update ttrss_version set schema_version = 83; + +commit; diff --git a/schema/versions/mysql/84.sql b/schema/versions/mysql/84.sql new file mode 100644 index 0000000000..cc28b75744 --- /dev/null +++ b/schema/versions/mysql/84.sql @@ -0,0 +1,23 @@ +begin; + +create table ttrss_linked_instances (id integer not null primary key auto_increment, + last_connected timestamp not null, + last_status_in integer not null, + last_status_out integer not null, + access_key varchar(250) not null unique, + access_url text not null) ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +create table ttrss_linked_feeds ( + feed_url text not null, + title text not null, + created datetime not null, + updated datetime not null, + instance_id integer not null, + subscribers integer not null, + foreign key (instance_id) references ttrss_linked_instances(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +drop table ttrss_scheduled_updates; + +update ttrss_version set schema_version = 84; + +commit; diff --git a/schema/versions/mysql/85.sql b/schema/versions/mysql/85.sql new file mode 100644 index 0000000000..70cab02972 --- /dev/null +++ b/schema/versions/mysql/85.sql @@ -0,0 +1,13 @@ +begin; + +alter table ttrss_feedbrowser_cache add column site_url text; +update ttrss_feedbrowser_cache set site_url = ''; +alter table ttrss_feedbrowser_cache change site_url site_url text not null; + +alter table ttrss_linked_feeds add column site_url text; +update ttrss_linked_feeds set site_url = ''; +alter table ttrss_linked_feeds change site_url site_url text not null; + +update ttrss_version set schema_version = 85; + +commit; diff --git a/schema/versions/mysql/86.sql b/schema/versions/mysql/86.sql new file mode 100644 index 0000000000..c8979b2af7 --- /dev/null +++ b/schema/versions/mysql/86.sql @@ -0,0 +1,9 @@ +begin; + +alter table ttrss_user_entries add column uuid varchar(200); +update ttrss_user_entries set uuid = ''; +alter table ttrss_user_entries change uuid uuid varchar(200) not null; + +update ttrss_version set schema_version = 86; + +commit; diff --git a/schema/versions/mysql/87.sql b/schema/versions/mysql/87.sql new file mode 100644 index 0000000000..7ef4630d57 --- /dev/null +++ b/schema/versions/mysql/87.sql @@ -0,0 +1,14 @@ +begin; + +alter table ttrss_filters add column cat_filter bool; +update ttrss_filters set cat_filter = false; +alter table ttrss_filters change cat_filter cat_filter bool not null; +alter table ttrss_filters alter column cat_filter set default false; + +alter table ttrss_filters add column cat_id integer; + +alter table ttrss_filters add FOREIGN KEY (cat_id) REFERENCES ttrss_feed_categories(id) ON DELETE CASCADE; + +update ttrss_version set schema_version = 87; + +commit; diff --git a/schema/versions/mysql/88.sql b/schema/versions/mysql/88.sql new file mode 100644 index 0000000000..0abb2ab339 --- /dev/null +++ b/schema/versions/mysql/88.sql @@ -0,0 +1,10 @@ +begin; + +alter table ttrss_users add column salt varchar(250); +update ttrss_users set salt = ''; +alter table ttrss_users change salt salt varchar(250) not null; +alter table ttrss_users alter column salt set default ''; + +update ttrss_version set schema_version = 88; + +commit; diff --git a/schema/versions/mysql/89.sql b/schema/versions/mysql/89.sql new file mode 100644 index 0000000000..9727a9c428 --- /dev/null +++ b/schema/versions/mysql/89.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('DIGEST_PREFERRED_TIME', 2, '00:00', 'Try to send digests around specified time', 1, 'Uses UTC timezone'); + +update ttrss_version set schema_version = 89; + +commit; diff --git a/schema/versions/mysql/90.sql b/schema/versions/mysql/90.sql new file mode 100644 index 0000000000..b7935535ed --- /dev/null +++ b/schema/versions/mysql/90.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_PREFS_SHOW_EMPTY_CATS', 1, 'false', '', 1); + +update ttrss_version set schema_version = 90; + +commit; diff --git a/schema/versions/mysql/91.sql b/schema/versions/mysql/91.sql new file mode 100644 index 0000000000..791d430630 --- /dev/null +++ b/schema/versions/mysql/91.sql @@ -0,0 +1,7 @@ +begin; + +update ttrss_prefs set help_text = 'Automatically open next feed with unread articles after marking one as read' where pref_name = 'ON_CATCHUP_SHOW_NEXT_FEED'; + +update ttrss_version set schema_version = 91; + +commit; diff --git a/schema/versions/mysql/92.sql b/schema/versions/mysql/92.sql new file mode 100644 index 0000000000..8ebe81fe03 --- /dev/null +++ b/schema/versions/mysql/92.sql @@ -0,0 +1,8 @@ +begin; + +alter table ttrss_feeds add column favicon_last_checked datetime; +alter table ttrss_feeds alter column favicon_last_checked set default null; + +update ttrss_version set schema_version = 92; + +commit; diff --git a/schema/versions/mysql/93.sql b/schema/versions/mysql/93.sql new file mode 100644 index 0000000000..56b96e3b55 --- /dev/null +++ b/schema/versions/mysql/93.sql @@ -0,0 +1,10 @@ +begin; + +alter table ttrss_feed_categories add column parent_cat integer; +update ttrss_feed_categories set parent_cat = NULL; + +alter table ttrss_feed_categories add FOREIGN KEY (parent_cat) REFERENCES ttrss_feed_categories(id) ON DELETE SET NULL; + +update ttrss_version set schema_version = 93; + +commit; diff --git a/schema/versions/mysql/94.sql b/schema/versions/mysql/94.sql new file mode 100644 index 0000000000..0f76c4c5fc --- /dev/null +++ b/schema/versions/mysql/94.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_DEFAULT_INCLUDE_CHILDREN', 1, 'false', '', 1); + +update ttrss_version set schema_version = 94; + +commit; diff --git a/schema/versions/mysql/95.sql b/schema/versions/mysql/95.sql new file mode 100644 index 0000000000..234acd495e --- /dev/null +++ b/schema/versions/mysql/95.sql @@ -0,0 +1,39 @@ +begin; + +update ttrss_prefs set short_desc = 'Purge articles after this number of days (0 - disables)' +where pref_name = 'PURGE_OLD_DAYS'; + +update ttrss_prefs set section_id = 1 where pref_name = 'ENABLE_API_ACCESS'; + +update ttrss_prefs set section_id = 2 where pref_name = 'CONFIRM_FEED_CATCHUP'; +update ttrss_prefs set section_id = 2 where pref_name = 'CDM_EXPANDED'; +update ttrss_prefs set section_id = 2 where pref_name = 'CDM_AUTO_CATCHUP'; +update ttrss_prefs set section_id = 2 where pref_name = 'SORT_HEADLINES_BY_FEED_DATE'; +update ttrss_prefs set section_id = 2 where pref_name = 'HIDE_READ_SHOWS_SPECIAL'; + +insert into ttrss_prefs_sections (id, section_name) values (4, 'Digest'); + +update ttrss_prefs set section_id = 4 where pref_name = 'DIGEST_ENABLE'; +update ttrss_prefs set section_id = 4 where pref_name = 'DIGEST_PREFERRED_TIME'; +update ttrss_prefs set section_id = 4 where pref_name = 'DIGEST_CATCHUP'; + +alter table ttrss_prefs_sections add column order_id integer; +update ttrss_prefs_sections set order_id = 0; +alter table ttrss_prefs_sections change order_id order_id int not null; + +update ttrss_prefs_sections set order_id = 0 where id = 1; +update ttrss_prefs_sections set order_id = 1 where id = 2; +update ttrss_prefs_sections set order_id = 2 where id = 4; +update ttrss_prefs_sections set order_id = 3 where id = 3; + +update ttrss_prefs set access_level = 1 where pref_name in ('ON_CATCHUP_SHOW_NEXT_FEED', + 'SORT_HEADLINES_BY_FEED_DATE', + 'VFEED_GROUP_BY_FEED', + 'FRESH_ARTICLE_MAX_AGE', + 'CDM_EXPANDED', + 'SHOW_CONTENT_PREVIEW', + 'HIDE_READ_SHOWS_SPECIAL'); + +update ttrss_version set schema_version = 95; + +commit; diff --git a/schema/versions/mysql/96.sql b/schema/versions/mysql/96.sql new file mode 100644 index 0000000000..4d4e2445cb --- /dev/null +++ b/schema/versions/mysql/96.sql @@ -0,0 +1,38 @@ +begin; + +create table ttrss_filters2(id integer primary key auto_increment, + owner_uid integer not null, + match_any_rule boolean not null default false, + enabled boolean not null default true, + index(owner_uid), + foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +create table ttrss_filters2_rules(id integer primary key auto_increment, + filter_id integer not null references ttrss_filters2(id) on delete cascade, + reg_exp varchar(250) not null, + filter_type integer not null, + feed_id integer default null, + cat_id integer default null, + cat_filter boolean not null default false, + index (filter_id), + foreign key (filter_id) references ttrss_filters2(id) on delete cascade, + index (filter_type), + foreign key (filter_type) references ttrss_filter_types(id) ON DELETE CASCADE, + index (feed_id), + foreign key (feed_id) references ttrss_feeds(id) ON DELETE CASCADE, + index (cat_id), + foreign key (cat_id) references ttrss_feed_categories(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +create table ttrss_filters2_actions(id integer primary key auto_increment, + filter_id integer not null, + action_id integer not null default 1 references ttrss_filter_actions(id) on delete cascade, + action_param varchar(250) not null default '', + index (filter_id), + foreign key (filter_id) references ttrss_filters2(id) on delete cascade, + index (action_id), + foreign key (action_id) references ttrss_filter_actions(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8; + +update ttrss_version set schema_version = 96; + +commit; + diff --git a/schema/versions/mysql/97.sql b/schema/versions/mysql/97.sql new file mode 100644 index 0000000000..c555b86dc3 --- /dev/null +++ b/schema/versions/mysql/97.sql @@ -0,0 +1,10 @@ +begin; + +alter table ttrss_users add column otp_enabled boolean; +update ttrss_users set otp_enabled = false; +alter table ttrss_users change otp_enabled otp_enabled boolean not null; +alter table ttrss_users alter column otp_enabled set default false; + +update ttrss_version set schema_version = 97; + +commit; diff --git a/schema/versions/mysql/98.sql b/schema/versions/mysql/98.sql new file mode 100644 index 0000000000..1984a4325d --- /dev/null +++ b/schema/versions/mysql/98.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,access_level) values('AUTO_ASSIGN_LABELS', 1, 'true', 'Assign articles to labels automatically', 3, 1); + +update ttrss_version set schema_version = 98; + +commit; diff --git a/schema/versions/mysql/99.sql b/schema/versions/mysql/99.sql new file mode 100644 index 0000000000..d7f9e02307 --- /dev/null +++ b/schema/versions/mysql/99.sql @@ -0,0 +1,12 @@ +begin; + +alter table ttrss_feeds add column cache_content bool; +update ttrss_feeds set cache_content = false; +alter table ttrss_feeds change cache_content cache_content bool not null; +alter table ttrss_feeds alter column cache_content set default false; + +alter table ttrss_entries add column cached_content longtext; + +update ttrss_version set schema_version = 99; + +commit; diff --git a/schema/versions/pgsql/100.sql b/schema/versions/pgsql/100.sql new file mode 100644 index 0000000000..a360dab6cf --- /dev/null +++ b/schema/versions/pgsql/100.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_ENABLED_PLUGINS', 2, '', '', 1); + +update ttrss_version set schema_version = 100; + +commit; diff --git a/schema/versions/pgsql/101.sql b/schema/versions/pgsql/101.sql new file mode 100644 index 0000000000..5be859002b --- /dev/null +++ b/schema/versions/pgsql/101.sql @@ -0,0 +1,11 @@ +begin; + +create table ttrss_plugin_storage ( + id serial not null primary key, + name varchar(100) not null, + owner_uid integer not null references ttrss_users(id) ON DELETE CASCADE, + content text not null); + +update ttrss_version set schema_version = 101; + +commit; diff --git a/schema/versions/pgsql/102.sql b/schema/versions/pgsql/102.sql new file mode 100644 index 0000000000..ccf5ef3b35 --- /dev/null +++ b/schema/versions/pgsql/102.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_MOBILE_REVERSE_HEADLINES', 1, 'false', '', 1); + +update ttrss_version set schema_version = 102; + +commit; diff --git a/schema/versions/pgsql/103.sql b/schema/versions/pgsql/103.sql new file mode 100644 index 0000000000..cb91fd8712 --- /dev/null +++ b/schema/versions/pgsql/103.sql @@ -0,0 +1,7 @@ +begin; + +alter table ttrss_entries add column plugin_data text; + +update ttrss_version set schema_version = 103; + +commit; diff --git a/schema/versions/pgsql/104.sql b/schema/versions/pgsql/104.sql new file mode 100644 index 0000000000..104e4b9170 --- /dev/null +++ b/schema/versions/pgsql/104.sql @@ -0,0 +1,7 @@ +begin; + +update ttrss_prefs set short_desc = 'Hide images in articles' where pref_name = 'STRIP_IMAGES'; + +update ttrss_version set schema_version = 104; + +commit; diff --git a/schema/versions/pgsql/105.sql b/schema/versions/pgsql/105.sql new file mode 100644 index 0000000000..11ef679f18 --- /dev/null +++ b/schema/versions/pgsql/105.sql @@ -0,0 +1,11 @@ +begin; + +alter table ttrss_user_entries add column last_marked timestamp; +alter table ttrss_user_entries add column last_published timestamp; + +update ttrss_user_entries set last_published = last_read where published = true; +update ttrss_user_entries set last_marked = last_read where marked = true; + +update ttrss_version set schema_version = 105; + +commit; diff --git a/schema/versions/pgsql/106.sql b/schema/versions/pgsql/106.sql new file mode 100644 index 0000000000..6e3dee2c92 --- /dev/null +++ b/schema/versions/pgsql/106.sql @@ -0,0 +1,12 @@ +begin; + +update ttrss_prefs set short_desc = 'Do not embed images in articles' where pref_name = 'STRIP_IMAGES'; + +alter table ttrss_feeds add column hide_images boolean; +update ttrss_feeds set hide_images = false; +alter table ttrss_feeds alter column hide_images set not null; +alter table ttrss_feeds alter column hide_images set default false; + +update ttrss_version set schema_version = 106; + +commit; diff --git a/schema/versions/pgsql/107.sql b/schema/versions/pgsql/107.sql new file mode 100644 index 0000000000..a4a537c2f7 --- /dev/null +++ b/schema/versions/pgsql/107.sql @@ -0,0 +1,15 @@ +begin; + +alter table ttrss_filters2 add column inverse boolean; +update ttrss_filters2 set inverse = false; +alter table ttrss_filters2 alter column inverse set not null; +alter table ttrss_filters2 alter column inverse set default false; + +alter table ttrss_filters2_rules add column inverse boolean; +update ttrss_filters2_rules set inverse = false; +alter table ttrss_filters2_rules alter column inverse set not null; +alter table ttrss_filters2_rules alter column inverse set default false; + +update ttrss_version set schema_version = 107; + +commit; diff --git a/schema/versions/pgsql/108.sql b/schema/versions/pgsql/108.sql new file mode 100644 index 0000000000..899be8bb46 --- /dev/null +++ b/schema/versions/pgsql/108.sql @@ -0,0 +1,7 @@ +begin; + +update ttrss_prefs set def_value = 'false' where pref_name = 'SORT_HEADLINES_BY_FEED_DATE'; + +update ttrss_version set schema_version = 108; + +commit; diff --git a/schema/versions/pgsql/109.sql b/schema/versions/pgsql/109.sql new file mode 100644 index 0000000000..77e883c3b0 --- /dev/null +++ b/schema/versions/pgsql/109.sql @@ -0,0 +1,7 @@ +begin; + +update ttrss_prefs set short_desc = 'Hide feeds with no unread articles' where pref_name = 'HIDE_READ_FEEDS'; + +update ttrss_version set schema_version = 109; + +commit; diff --git a/schema/versions/pgsql/110.sql b/schema/versions/pgsql/110.sql new file mode 100644 index 0000000000..859f7d6dc6 --- /dev/null +++ b/schema/versions/pgsql/110.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('USER_CSS_THEME', 2, '', 'Select theme', 2, 'Select one of the available CSS themes'); + +update ttrss_version set schema_version = 110; + +commit; diff --git a/schema/versions/pgsql/111.sql b/schema/versions/pgsql/111.sql new file mode 100644 index 0000000000..27f287d1ac --- /dev/null +++ b/schema/versions/pgsql/111.sql @@ -0,0 +1,7 @@ +begin; + +update ttrss_prefs set def_value = 'true' where pref_name = 'COMBINED_DISPLAY_MODE'; + +update ttrss_version set schema_version = 111; + +commit; diff --git a/schema/versions/pgsql/112.sql b/schema/versions/pgsql/112.sql new file mode 100644 index 0000000000..a9d90d6d40 --- /dev/null +++ b/schema/versions/pgsql/112.sql @@ -0,0 +1,15 @@ +begin; + +alter table ttrss_filters2 add column order_id integer; +update ttrss_filters2 set order_id = 0; +alter table ttrss_filters2 alter column order_id set not null; +alter table ttrss_filters2 alter column order_id set default 0; + +alter table ttrss_filters2 add column title varchar(250); +update ttrss_filters2 set title = ''; +alter table ttrss_filters2 alter column title set not null; +alter table ttrss_filters2 alter column title set default ''; + +update ttrss_version set schema_version = 112; + +commit; diff --git a/schema/versions/pgsql/113.sql b/schema/versions/pgsql/113.sql new file mode 100644 index 0000000000..3c0d005634 --- /dev/null +++ b/schema/versions/pgsql/113.sql @@ -0,0 +1,8 @@ +begin; + +insert into ttrss_filter_actions (id,name,description) values (8, 'stop', + 'Stop / Do nothing'); + +update ttrss_version set schema_version = 113; + +commit; diff --git a/schema/versions/pgsql/114.sql b/schema/versions/pgsql/114.sql new file mode 100644 index 0000000000..d317ea7940 --- /dev/null +++ b/schema/versions/pgsql/114.sql @@ -0,0 +1,15 @@ +begin; + +alter table ttrss_feeds add column view_settings varchar(250); +update ttrss_feeds set view_settings = ''; +alter table ttrss_feeds alter column view_settings set not null; +alter table ttrss_feeds alter column view_settings set default ''; + +alter table ttrss_feed_categories add column view_settings varchar(250); +update ttrss_feed_categories set view_settings = ''; +alter table ttrss_feed_categories alter column view_settings set not null; +alter table ttrss_feed_categories alter column view_settings set default ''; + +update ttrss_version set schema_version = 114; + +commit; diff --git a/schema/versions/pgsql/115.sql b/schema/versions/pgsql/115.sql new file mode 100644 index 0000000000..e23f0533a3 --- /dev/null +++ b/schema/versions/pgsql/115.sql @@ -0,0 +1,9 @@ +begin; + +alter table ttrss_prefs_sections drop column section_name; +alter table ttrss_prefs drop column short_desc; +alter table ttrss_prefs drop column help_text; + +update ttrss_version set schema_version = 115; + +commit; diff --git a/schema/versions/pgsql/116.sql b/schema/versions/pgsql/116.sql new file mode 100644 index 0000000000..252ba0e3af --- /dev/null +++ b/schema/versions/pgsql/116.sql @@ -0,0 +1,7 @@ +begin; + +update ttrss_prefs set def_value = 'false' where pref_name = 'ALLOW_DUPLICATE_POSTS'; + +update ttrss_version set schema_version = 116; + +commit; diff --git a/schema/versions/pgsql/117.sql b/schema/versions/pgsql/117.sql new file mode 100644 index 0000000000..da3d056cc7 --- /dev/null +++ b/schema/versions/pgsql/117.sql @@ -0,0 +1,8 @@ +begin; + +ALTER TABLE ttrss_feeds ADD COLUMN favicon_avg_color VARCHAR(11); +alter table ttrss_feeds alter column favicon_avg_color set default null; + +update ttrss_version set schema_version = 117; + +commit; diff --git a/schema/versions/pgsql/118.sql b/schema/versions/pgsql/118.sql new file mode 100644 index 0000000000..161cf4e3c3 --- /dev/null +++ b/schema/versions/pgsql/118.sql @@ -0,0 +1,15 @@ +begin; + +create table ttrss_error_log( + id serial not null primary key, + owner_uid integer references ttrss_users(id) ON DELETE SET NULL, + errno integer not null, + errstr text not null, + filename text not null, + lineno integer not null, + context text not null, + created_at timestamp not null); + +update ttrss_version set schema_version = 118; + +commit; diff --git a/schema/versions/pgsql/119.sql b/schema/versions/pgsql/119.sql new file mode 100644 index 0000000000..ddb7d64de9 --- /dev/null +++ b/schema/versions/pgsql/119.sql @@ -0,0 +1,7 @@ +begin; + +update ttrss_prefs set def_value = 'Automatic' where pref_name = 'USER_TIMEZONE'; + +update ttrss_version set schema_version = 119; + +commit; diff --git a/schema/versions/pgsql/120.sql b/schema/versions/pgsql/120.sql new file mode 100644 index 0000000000..34971146ef --- /dev/null +++ b/schema/versions/pgsql/120.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,section_id) values('USER_LANGUAGE', 2, '', 2); + +update ttrss_version set schema_version = 120; + +commit; diff --git a/schema/versions/pgsql/121.sql b/schema/versions/pgsql/121.sql new file mode 100644 index 0000000000..d9cf51184e --- /dev/null +++ b/schema/versions/pgsql/121.sql @@ -0,0 +1,7 @@ +begin; + +update ttrss_prefs set def_value = 'false' where pref_name = 'AUTO_ASSIGN_LABELS'; + +update ttrss_version set schema_version = 121; + +commit; diff --git a/schema/versions/pgsql/122.sql b/schema/versions/pgsql/122.sql new file mode 100644 index 0000000000..397b97bfcb --- /dev/null +++ b/schema/versions/pgsql/122.sql @@ -0,0 +1,7 @@ +begin; + +alter table ttrss_entries add column lang varchar(2); + +update ttrss_version set schema_version = 122; + +commit; diff --git a/schema/versions/pgsql/123.sql b/schema/versions/pgsql/123.sql new file mode 100644 index 0000000000..999d48bf7a --- /dev/null +++ b/schema/versions/pgsql/123.sql @@ -0,0 +1,5 @@ +begin; + +update ttrss_version set schema_version = 123; + +commit; diff --git a/schema/versions/pgsql/124.sql b/schema/versions/pgsql/124.sql new file mode 100644 index 0000000000..96ae463413 --- /dev/null +++ b/schema/versions/pgsql/124.sql @@ -0,0 +1,8 @@ +begin; + +alter table ttrss_users add column resetpass_token varchar(250); +alter table ttrss_users alter column resetpass_token set default null; + +update ttrss_version set schema_version = 124; + +commit; diff --git a/schema/versions/pgsql/125.sql b/schema/versions/pgsql/125.sql new file mode 100644 index 0000000000..e56e0299a2 --- /dev/null +++ b/schema/versions/pgsql/125.sql @@ -0,0 +1,5 @@ +begin; + +update ttrss_version set schema_version = 125; + +commit; diff --git a/schema/versions/pgsql/126.sql b/schema/versions/pgsql/126.sql new file mode 100644 index 0000000000..46f391aa50 --- /dev/null +++ b/schema/versions/pgsql/126.sql @@ -0,0 +1,8 @@ +begin; + +alter table ttrss_enclosures add column height integer not null default 0; +alter table ttrss_enclosures add column width integer not null default 0; + +update ttrss_version set schema_version = 126; + +commit; diff --git a/schema/versions/pgsql/127.sql b/schema/versions/pgsql/127.sql new file mode 100644 index 0000000000..7895aacc05 --- /dev/null +++ b/schema/versions/pgsql/127.sql @@ -0,0 +1,8 @@ +BEGIN; + +DROP INDEX ttrss_entries_guid_index; +DROP INDEX ttrss_prefs_pref_name_idx; + +UPDATE ttrss_version SET schema_version = 127; + +COMMIT; diff --git a/schema/versions/pgsql/67.sql b/schema/versions/pgsql/67.sql new file mode 100644 index 0000000000..1e2aa44299 --- /dev/null +++ b/schema/versions/pgsql/67.sql @@ -0,0 +1,9 @@ +begin; + +alter table ttrss_entries add column date_updated timestamp; +update ttrss_entries set date_updated = date_entered; +alter table ttrss_entries alter column date_updated set not null; + +update ttrss_version set schema_version = 67; + +commit; diff --git a/schema/versions/pgsql/68.sql b/schema/versions/pgsql/68.sql new file mode 100644 index 0000000000..6d56df0f9d --- /dev/null +++ b/schema/versions/pgsql/68.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('USER_TIMEZONE', 2, 'UTC', 'User timezone', 1); + +update ttrss_version set schema_version = 68; + +commit; diff --git a/schema/versions/pgsql/69.sql b/schema/versions/pgsql/69.sql new file mode 100644 index 0000000000..cae0ff50f7 --- /dev/null +++ b/schema/versions/pgsql/69.sql @@ -0,0 +1,11 @@ +begin; + +create table ttrss_access_keys (id serial not null primary key, + access_key varchar(250) not null, + feed_id varchar(250) not null, + is_cat bool not null default false, + owner_uid integer not null references ttrss_users(id) on delete cascade); + +update ttrss_version set schema_version = 69; + +commit; diff --git a/schema/versions/pgsql/70.sql b/schema/versions/pgsql/70.sql new file mode 100644 index 0000000000..b970a861c9 --- /dev/null +++ b/schema/versions/pgsql/70.sql @@ -0,0 +1,6 @@ +alter table ttrss_users add column full_name varchar(250); +update ttrss_users set full_name = ''; +alter table ttrss_users alter column full_name set not null; +alter table ttrss_users alter column full_name set default ''; + +update ttrss_version set schema_version = 70; diff --git a/schema/versions/pgsql/71.sql b/schema/versions/pgsql/71.sql new file mode 100644 index 0000000000..2061ada2b8 --- /dev/null +++ b/schema/versions/pgsql/71.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_filter_types (id,name,description) values (7, 'tag', 'Article Tags'); + +update ttrss_version set schema_version = 71; + +commit; diff --git a/schema/versions/pgsql/72.sql b/schema/versions/pgsql/72.sql new file mode 100644 index 0000000000..65e4d2e0a8 --- /dev/null +++ b/schema/versions/pgsql/72.sql @@ -0,0 +1,9 @@ +begin; + +alter table ttrss_user_entries add column tag_cache text; +update ttrss_user_entries set tag_cache = ''; +alter table ttrss_user_entries alter column tag_cache set not null; + +update ttrss_version set schema_version = 72; + +commit; diff --git a/schema/versions/pgsql/73.sql b/schema/versions/pgsql/73.sql new file mode 100644 index 0000000000..051578d222 --- /dev/null +++ b/schema/versions/pgsql/73.sql @@ -0,0 +1,8 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('SORT_HEADLINES_BY_FEED_DATE', 1, 'true', 'Sort headlines by feed date',3, + 'Use feed-specified date to sort headlines instead of local import date.'); + +update ttrss_version set schema_version = 73; + +commit; diff --git a/schema/versions/pgsql/74.sql b/schema/versions/pgsql/74.sql new file mode 100644 index 0000000000..22c95c5d32 --- /dev/null +++ b/schema/versions/pgsql/74.sql @@ -0,0 +1,9 @@ +begin; + +alter table ttrss_user_entries add column label_cache text; +update ttrss_user_entries set label_cache = ''; +alter table ttrss_user_entries alter column label_cache set not null; + +update ttrss_version set schema_version = 74; + +commit; diff --git a/schema/versions/pgsql/75.sql b/schema/versions/pgsql/75.sql new file mode 100644 index 0000000000..3291d652c7 --- /dev/null +++ b/schema/versions/pgsql/75.sql @@ -0,0 +1,10 @@ +begin; + +alter table ttrss_feeds add column order_id integer; +update ttrss_feeds set order_id = 0; +alter table ttrss_feeds alter column order_id set not null; +alter table ttrss_feeds alter column order_id set default 0; + +update ttrss_version set schema_version = 75; + +commit; diff --git a/schema/versions/pgsql/76.sql b/schema/versions/pgsql/76.sql new file mode 100644 index 0000000000..b7cc12c7a3 --- /dev/null +++ b/schema/versions/pgsql/76.sql @@ -0,0 +1,8 @@ +begin; + +alter table ttrss_users add column twitter_oauth text; +alter table ttrss_users alter column twitter_oauth set default null; + +update ttrss_version set schema_version = 76; + +commit; diff --git a/schema/versions/pgsql/77.sql b/schema/versions/pgsql/77.sql new file mode 100644 index 0000000000..944f31d84c --- /dev/null +++ b/schema/versions/pgsql/77.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('USER_STYLESHEET', 2, '', 'Customize stylesheet', 2, 'Customize CSS stylesheet to your liking'); + +update ttrss_version set schema_version = 77; + +commit; diff --git a/schema/versions/pgsql/78.sql b/schema/versions/pgsql/78.sql new file mode 100644 index 0000000000..80e9e782ac --- /dev/null +++ b/schema/versions/pgsql/78.sql @@ -0,0 +1,15 @@ +begin; + +delete from ttrss_user_prefs where pref_name in ('HIDE_FEEDLIST', 'SYNC_COUNTERS', 'ENABLE_LABELS', + 'ENABLE_SEARCH_TOOLBAR', 'ENABLE_FEED_ICONS', + 'ENABLE_OFFLINE_READING', 'EXTENDED_FEEDLIST', 'OPEN_LINKS_IN_NEW_WINDOW', + 'USER_STYLESHEET_URL', 'ENABLE_FLASH_PLAYER'); + +delete from ttrss_prefs where pref_name in ('HIDE_FEEDLIST', 'SYNC_COUNTERS', 'ENABLE_LABELS', + 'ENABLE_SEARCH_TOOLBAR', 'ENABLE_FEED_ICONS', + 'ENABLE_OFFLINE_READING', 'EXTENDED_FEEDLIST', 'OPEN_LINKS_IN_NEW_WINDOW', + 'USER_STYLESHEET_URL', 'ENABLE_FLASH_PLAYER'); + +update ttrss_version set schema_version = 78; + +commit; diff --git a/schema/versions/pgsql/79.sql b/schema/versions/pgsql/79.sql new file mode 100644 index 0000000000..7e8c31d49f --- /dev/null +++ b/schema/versions/pgsql/79.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_MOBILE_BROWSE_CATS', 1, 'true', '', 1); + +update ttrss_version set schema_version = 79; + +commit; diff --git a/schema/versions/pgsql/80.sql b/schema/versions/pgsql/80.sql new file mode 100644 index 0000000000..df2295c42d --- /dev/null +++ b/schema/versions/pgsql/80.sql @@ -0,0 +1,9 @@ +begin; + +update ttrss_prefs set section_id = 3, + short_desc = 'Automatically mark articles as read', + help_text = 'Mark articles as read automatically while you scroll article list.' where pref_name = 'CDM_AUTO_CATCHUP'; + +update ttrss_version set schema_version = 80; + +commit; diff --git a/schema/versions/pgsql/81.sql b/schema/versions/pgsql/81.sql new file mode 100644 index 0000000000..800ceede02 --- /dev/null +++ b/schema/versions/pgsql/81.sql @@ -0,0 +1,7 @@ +begin; + +update ttrss_filter_actions set description = 'Delete article' where name = 'filter'; + +update ttrss_version set schema_version = 81; + +commit; diff --git a/schema/versions/pgsql/82.sql b/schema/versions/pgsql/82.sql new file mode 100644 index 0000000000..80ca24e721 --- /dev/null +++ b/schema/versions/pgsql/82.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('SSL_CERT_SERIAL', 2, '', 'Login with an SSL certificate',3, 'Click to register your SSL client certificate with tt-rss'); + +update ttrss_version set schema_version = 82; + +commit; diff --git a/schema/versions/pgsql/83.sql b/schema/versions/pgsql/83.sql new file mode 100644 index 0000000000..a890865510 --- /dev/null +++ b/schema/versions/pgsql/83.sql @@ -0,0 +1,32 @@ +begin; + +alter table ttrss_feeds add column mark_unread_on_update boolean; +update ttrss_feeds set mark_unread_on_update = false; +alter table ttrss_feeds alter column mark_unread_on_update set not null; +alter table ttrss_feeds alter column mark_unread_on_update set default false; + +alter table ttrss_feeds add column strip_images boolean; +update ttrss_feeds set strip_images = false; +alter table ttrss_feeds alter column strip_images set not null; +alter table ttrss_feeds alter column strip_images set default false; + +alter table ttrss_feeds add column update_on_checksum_change boolean; +update ttrss_feeds set update_on_checksum_change = false; +alter table ttrss_feeds alter column update_on_checksum_change set not null; +alter table ttrss_feeds alter column update_on_checksum_change set default false; + +DELETE FROM ttrss_user_prefs WHERE pref_name IN ('HIDE_FEEDLIST', 'SYNC_COUNTERS', 'ENABLE_LABELS', 'ENABLE_SEARCH_TOOLBAR', 'ENABLE_FEED_ICONS', 'ENABLE_OFFLINE_READING', 'EXTENDED_FEEDLIST', 'OPEN_LINKS_IN_NEW_WINDOW', 'ENABLE_FLASH_PLAYER', 'HEADLINES_SMART_DATE', 'MARK_UNREAD_ON_UPDATE', 'UPDATE_POST_ON_CHECKSUM_CHANGE'); + +DELETE FROM ttrss_prefs WHERE pref_name IN ('HIDE_FEEDLIST', 'SYNC_COUNTERS', 'ENABLE_LABELS', 'ENABLE_SEARCH_TOOLBAR', 'ENABLE_FEED_ICONS', 'ENABLE_OFFLINE_READING', 'EXTENDED_FEEDLIST', 'OPEN_LINKS_IN_NEW_WINDOW', 'ENABLE_FLASH_PLAYER', 'HEADLINES_SMART_DATE', 'MARK_UNREAD_ON_UPDATE', 'UPDATE_POST_ON_CHECKSUM_CHANGE'); + +alter table ttrss_feeds add column pubsub_state integer; +update ttrss_feeds set pubsub_state = 0; +alter table ttrss_feeds alter column pubsub_state set not null; +alter table ttrss_feeds alter column pubsub_state set default 0; + +alter table ttrss_users drop column theme_id; +drop table ttrss_themes; + +update ttrss_version set schema_version = 83; + +commit; diff --git a/schema/versions/pgsql/84.sql b/schema/versions/pgsql/84.sql new file mode 100644 index 0000000000..55a7caf71a --- /dev/null +++ b/schema/versions/pgsql/84.sql @@ -0,0 +1,22 @@ +begin; + +create table ttrss_linked_instances (id serial not null primary key, + last_connected timestamp not null, + last_status_in integer not null, + last_status_out integer not null, + access_key varchar(250) not null unique, + access_url text not null); + +create table ttrss_linked_feeds ( + feed_url text not null, + title text not null, + created timestamp not null, + updated timestamp not null, + instance_id integer not null references ttrss_linked_instances(id) ON DELETE CASCADE, + subscribers integer not null); + +drop table ttrss_scheduled_updates; + +update ttrss_version set schema_version = 84; + +commit; diff --git a/schema/versions/pgsql/85.sql b/schema/versions/pgsql/85.sql new file mode 100644 index 0000000000..a0a782280a --- /dev/null +++ b/schema/versions/pgsql/85.sql @@ -0,0 +1,13 @@ +begin; + +alter table ttrss_feedbrowser_cache add column site_url text; +update ttrss_feedbrowser_cache set site_url = ''; +alter table ttrss_feedbrowser_cache alter column site_url set not null; + +alter table ttrss_linked_feeds add column site_url text; +update ttrss_linked_feeds set site_url = ''; +alter table ttrss_linked_feeds alter column site_url set not null; + +update ttrss_version set schema_version = 85; + +commit; diff --git a/schema/versions/pgsql/86.sql b/schema/versions/pgsql/86.sql new file mode 100644 index 0000000000..1f311b6d7a --- /dev/null +++ b/schema/versions/pgsql/86.sql @@ -0,0 +1,9 @@ +begin; + +alter table ttrss_user_entries add column uuid varchar(200); +update ttrss_user_entries set uuid = ''; +alter table ttrss_user_entries alter column uuid set not null; + +update ttrss_version set schema_version = 86; + +commit; diff --git a/schema/versions/pgsql/87.sql b/schema/versions/pgsql/87.sql new file mode 100644 index 0000000000..86d0c4f613 --- /dev/null +++ b/schema/versions/pgsql/87.sql @@ -0,0 +1,14 @@ +begin; + +alter table ttrss_filters add column cat_filter boolean; +update ttrss_filters set cat_filter = false; +alter table ttrss_filters alter column cat_filter set not null; +alter table ttrss_filters alter column cat_filter set default false; + +alter table ttrss_filters add column cat_id integer; + +alter table ttrss_filters add constraint "$5" FOREIGN KEY (cat_id) REFERENCES ttrss_feed_categories(id) ON DELETE CASCADE; + +update ttrss_version set schema_version = 87; + +commit; diff --git a/schema/versions/pgsql/88.sql b/schema/versions/pgsql/88.sql new file mode 100644 index 0000000000..df6ec8fb7c --- /dev/null +++ b/schema/versions/pgsql/88.sql @@ -0,0 +1,10 @@ +begin; + +alter table ttrss_users add column salt varchar(250); +update ttrss_users set salt = ''; +alter table ttrss_users alter column salt set not null; +alter table ttrss_users alter column salt set default ''; + +update ttrss_version set schema_version = 88; + +commit; diff --git a/schema/versions/pgsql/89.sql b/schema/versions/pgsql/89.sql new file mode 100644 index 0000000000..9727a9c428 --- /dev/null +++ b/schema/versions/pgsql/89.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('DIGEST_PREFERRED_TIME', 2, '00:00', 'Try to send digests around specified time', 1, 'Uses UTC timezone'); + +update ttrss_version set schema_version = 89; + +commit; diff --git a/schema/versions/pgsql/90.sql b/schema/versions/pgsql/90.sql new file mode 100644 index 0000000000..b7935535ed --- /dev/null +++ b/schema/versions/pgsql/90.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_PREFS_SHOW_EMPTY_CATS', 1, 'false', '', 1); + +update ttrss_version set schema_version = 90; + +commit; diff --git a/schema/versions/pgsql/91.sql b/schema/versions/pgsql/91.sql new file mode 100644 index 0000000000..791d430630 --- /dev/null +++ b/schema/versions/pgsql/91.sql @@ -0,0 +1,7 @@ +begin; + +update ttrss_prefs set help_text = 'Automatically open next feed with unread articles after marking one as read' where pref_name = 'ON_CATCHUP_SHOW_NEXT_FEED'; + +update ttrss_version set schema_version = 91; + +commit; diff --git a/schema/versions/pgsql/92.sql b/schema/versions/pgsql/92.sql new file mode 100644 index 0000000000..b683d514d7 --- /dev/null +++ b/schema/versions/pgsql/92.sql @@ -0,0 +1,8 @@ +begin; + +alter table ttrss_feeds add column favicon_last_checked timestamp; +alter table ttrss_feeds alter column favicon_last_checked set default null; + +update ttrss_version set schema_version = 92; + +commit; diff --git a/schema/versions/pgsql/93.sql b/schema/versions/pgsql/93.sql new file mode 100644 index 0000000000..0374c0b0a5 --- /dev/null +++ b/schema/versions/pgsql/93.sql @@ -0,0 +1,10 @@ +begin; + +alter table ttrss_feed_categories add column parent_cat integer; +update ttrss_feed_categories set parent_cat = NULL; + +alter table ttrss_feed_categories add constraint "$2" FOREIGN KEY (parent_cat) REFERENCES ttrss_feed_categories(id) ON DELETE SET NULL; + +update ttrss_version set schema_version = 93; + +commit; diff --git a/schema/versions/pgsql/94.sql b/schema/versions/pgsql/94.sql new file mode 100644 index 0000000000..0f76c4c5fc --- /dev/null +++ b/schema/versions/pgsql/94.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_DEFAULT_INCLUDE_CHILDREN', 1, 'false', '', 1); + +update ttrss_version set schema_version = 94; + +commit; diff --git a/schema/versions/pgsql/95.sql b/schema/versions/pgsql/95.sql new file mode 100644 index 0000000000..014463a85b --- /dev/null +++ b/schema/versions/pgsql/95.sql @@ -0,0 +1,39 @@ +begin; + +update ttrss_prefs set short_desc = 'Purge articles after this number of days (0 - disables)' +where pref_name = 'PURGE_OLD_DAYS'; + +update ttrss_prefs set section_id = 1 where pref_name = 'ENABLE_API_ACCESS'; + +update ttrss_prefs set section_id = 2 where pref_name = 'CONFIRM_FEED_CATCHUP'; +update ttrss_prefs set section_id = 2 where pref_name = 'CDM_EXPANDED'; +update ttrss_prefs set section_id = 2 where pref_name = 'CDM_AUTO_CATCHUP'; +update ttrss_prefs set section_id = 2 where pref_name = 'SORT_HEADLINES_BY_FEED_DATE'; +update ttrss_prefs set section_id = 2 where pref_name = 'HIDE_READ_SHOWS_SPECIAL'; + +insert into ttrss_prefs_sections (id, section_name) values (4, 'Digest'); + +update ttrss_prefs set section_id = 4 where pref_name = 'DIGEST_ENABLE'; +update ttrss_prefs set section_id = 4 where pref_name = 'DIGEST_PREFERRED_TIME'; +update ttrss_prefs set section_id = 4 where pref_name = 'DIGEST_CATCHUP'; + +alter table ttrss_prefs_sections add column order_id integer; +update ttrss_prefs_sections set order_id = 0; +alter table ttrss_prefs_sections alter column order_id set not null; + +update ttrss_prefs_sections set order_id = 0 where id = 1; +update ttrss_prefs_sections set order_id = 1 where id = 2; +update ttrss_prefs_sections set order_id = 2 where id = 4; +update ttrss_prefs_sections set order_id = 3 where id = 3; + +update ttrss_prefs set access_level = 1 where pref_name in ('ON_CATCHUP_SHOW_NEXT_FEED', + 'SORT_HEADLINES_BY_FEED_DATE', + 'VFEED_GROUP_BY_FEED', + 'FRESH_ARTICLE_MAX_AGE', + 'CDM_EXPANDED', + 'SHOW_CONTENT_PREVIEW', + 'HIDE_READ_SHOWS_SPECIAL'); + +update ttrss_version set schema_version = 95; + +commit; diff --git a/schema/versions/pgsql/96.sql b/schema/versions/pgsql/96.sql new file mode 100644 index 0000000000..e3cdc06be8 --- /dev/null +++ b/schema/versions/pgsql/96.sql @@ -0,0 +1,23 @@ +begin; + +create table ttrss_filters2(id serial not null primary key, + owner_uid integer not null references ttrss_users(id) on delete cascade, + match_any_rule boolean not null default false, + enabled boolean not null default true); + +create table ttrss_filters2_rules(id serial not null primary key, + filter_id integer not null references ttrss_filters2(id) on delete cascade, + reg_exp varchar(250) not null, + filter_type integer not null references ttrss_filter_types(id), + feed_id integer references ttrss_feeds(id) on delete cascade default null, + cat_id integer references ttrss_feed_categories(id) on delete cascade default null, + cat_filter boolean not null default false); + +create table ttrss_filters2_actions(id serial not null primary key, + filter_id integer not null references ttrss_filters2(id) on delete cascade, + action_id integer not null default 1 references ttrss_filter_actions(id) on delete cascade, + action_param varchar(250) not null default ''); + +update ttrss_version set schema_version = 96; + +commit; diff --git a/schema/versions/pgsql/97.sql b/schema/versions/pgsql/97.sql new file mode 100644 index 0000000000..f458ee9104 --- /dev/null +++ b/schema/versions/pgsql/97.sql @@ -0,0 +1,10 @@ +begin; + +alter table ttrss_users add column otp_enabled boolean; +update ttrss_users set otp_enabled = false; +alter table ttrss_users alter column otp_enabled set not null; +alter table ttrss_users alter column otp_enabled set default false; + +update ttrss_version set schema_version = 97; + +commit; diff --git a/schema/versions/pgsql/98.sql b/schema/versions/pgsql/98.sql new file mode 100644 index 0000000000..1984a4325d --- /dev/null +++ b/schema/versions/pgsql/98.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,access_level) values('AUTO_ASSIGN_LABELS', 1, 'true', 'Assign articles to labels automatically', 3, 1); + +update ttrss_version set schema_version = 98; + +commit; diff --git a/schema/versions/pgsql/99.sql b/schema/versions/pgsql/99.sql new file mode 100644 index 0000000000..846056cd61 --- /dev/null +++ b/schema/versions/pgsql/99.sql @@ -0,0 +1,12 @@ +begin; + +alter table ttrss_feeds add column cache_content boolean; +update ttrss_feeds set cache_content = false; +alter table ttrss_feeds alter column cache_content set not null; +alter table ttrss_feeds alter column cache_content set default false; + +alter table ttrss_entries add column cached_content text; + +update ttrss_version set schema_version = 99; + +commit; diff --git a/sessions.php b/sessions.php deleted file mode 100644 index 2ad5a57fca..0000000000 --- a/sessions.php +++ /dev/null @@ -1,103 +0,0 @@ - diff --git a/templates/.htaccess b/templates/.htaccess new file mode 100644 index 0000000000..93169e4eb4 --- /dev/null +++ b/templates/.htaccess @@ -0,0 +1,2 @@ +Order deny,allow +Deny from all diff --git a/templates/digest_template_html.txt b/templates/digest_template_html.txt index 5940a72fff..0759e8a056 100644 --- a/templates/digest_template_html.txt +++ b/templates/digest_template_html.txt @@ -1,5 +1,6 @@

      New headlines for last 24 hours, as of ${CUR_DATE} ${CUR_TIME}

      +

      ${FEED_TITLE}

      diff --git a/templates/email_article_template.txt b/templates/email_article_template.txt new file mode 100644 index 0000000000..b6bc63921f --- /dev/null +++ b/templates/email_article_template.txt @@ -0,0 +1,16 @@ + +Hi, + +Thought I'd share the following with you: + + +* ${ARTICLE_TITLE} + + ${ARTICLE_NOTE} + + ${ARTICLE_URL} + + +-- +This message has been sent by Tiny Tiny RSS installation at ${TTRSS_HOST}. + diff --git a/templates/generated_feed.txt b/templates/generated_feed.txt new file mode 100644 index 0000000000..5e35f9be1b --- /dev/null +++ b/templates/generated_feed.txt @@ -0,0 +1,42 @@ + + + + +${FEED_TITLE} +Tiny Tiny RSS/${VERSION} +${ARTICLE_UPDATED_ATOM} +${FEED_URL} + + + + + + + + ${ARTICLE_ID} + + ${ARTICLE_TITLE} + + + ${ARTICLE_UPDATED_ATOM} + ${ARTICLE_AUTHOR} + + ${ARTICLE_SOURCE_LINK} + + ${ARTICLE_UPDATED_ATOM} + ${ARTICLE_SOURCE_TITLE} + + + + + + + + + + + diff --git a/templates/resetpass_link_template.txt b/templates/resetpass_link_template.txt new file mode 100644 index 0000000000..d238c86165 --- /dev/null +++ b/templates/resetpass_link_template.txt @@ -0,0 +1,14 @@ + +Hello, ${LOGIN}. + +You (or someone else) requested a password reset on this Tiny Tiny RSS +instance. Click on the following link to reset your password: + +${RESETPASS_LINK} + +Please note that the above link will only be valid for the next 15 minutes. + +If you don't want to reset your password, ignore this message. + +Sincerely, Tiny Tiny RSS Mail Daemon. + diff --git a/templates/resetpass_template.txt b/templates/resetpass_template.txt index dd96f2c92b..c262f9a77c 100644 --- a/templates/resetpass_template.txt +++ b/templates/resetpass_template.txt @@ -1,7 +1,7 @@ Hello, ${LOGIN}. -Your password for this Tiny Tiny RSS installation has been reset by an administrator. +Your password for this Tiny Tiny RSS installation has been reset. Your new password is ${NEWPASS}, please remember it for later reference. diff --git a/themes.local/.empty b/themes.local/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/themes/.empty b/themes/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/themes/compact/theme.css b/themes/compact/theme.css deleted file mode 100644 index a221497ced..0000000000 --- a/themes/compact/theme.css +++ /dev/null @@ -1,47 +0,0 @@ -#feeds-holder { - border-width : 0px 1px 0px 0px; - top : 0px; - bottom : 0px; - background : white; -} - -#header { - left : 270px; -} - -#toolbar { - font-size : small; -} - -#toolbar input { - font-size : small; -} - -div.headlines_cdm { - border-width : 1px 0px 0px 0px; - bottom : 0px; -} - -#content-frame { - border-width : 1px 0px 0px 0px; - bottom : 0px; -} - -div.postReply { - font-size : small; - padding : 0px; - margin : 0px; -} - -div.postReply div.postHeader { - border-width : 0px 0px 1px 1px; -} - -#prefContentOuter { - bottom : 0px; -} - -#footer, #prefFooter { - display : none; -} - diff --git a/themes/compact/theme.ini b/themes/compact/theme.ini deleted file mode 100644 index 4ed051e852..0000000000 --- a/themes/compact/theme.ini +++ /dev/null @@ -1,3 +0,0 @@ -[theme] -name=Compact -version=1.0 diff --git a/themes/default.css b/themes/default.css new file mode 100644 index 0000000000..acdb23c5d6 --- /dev/null +++ b/themes/default.css @@ -0,0 +1,4 @@ +@import "../css/tt-rss.css"; +@import "../css/dijit.css"; +@import "../css/cdm.css"; +@import "../css/prefs.css"; diff --git a/themes/graycube/images/grad_1.png b/themes/graycube/images/grad_1.png deleted file mode 100644 index 1a25a785aa..0000000000 Binary files a/themes/graycube/images/grad_1.png and /dev/null differ diff --git a/themes/graycube/images/resize_handle_horiz.png b/themes/graycube/images/resize_handle_horiz.png deleted file mode 100644 index a2e347e3d0..0000000000 Binary files a/themes/graycube/images/resize_handle_horiz.png and /dev/null differ diff --git a/themes/graycube/images/resize_horiz.png b/themes/graycube/images/resize_horiz.png deleted file mode 100644 index cbf1909711..0000000000 Binary files a/themes/graycube/images/resize_horiz.png and /dev/null differ diff --git a/themes/graycube/images/ttrss_logo.png b/themes/graycube/images/ttrss_logo.png deleted file mode 100644 index 34735a20b5..0000000000 Binary files a/themes/graycube/images/ttrss_logo.png and /dev/null differ diff --git a/themes/graycube/images/ttrss_logo.svg b/themes/graycube/images/ttrss_logo.svg deleted file mode 100644 index f2dabbc610..0000000000 --- a/themes/graycube/images/ttrss_logo.svg +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - tiny tiny - rss - - diff --git a/themes/graycube/theme.css b/themes/graycube/theme.css deleted file mode 100644 index e8f84611af..0000000000 --- a/themes/graycube/theme.css +++ /dev/null @@ -1,530 +0,0 @@ -body { - background : #f6f6f6; -} - -h3 { - border-color : #999999; -} - -a:hover { - color : gray; -} - -div.cdmArticle { - border-color : #999999; - background : #f9f9f9; -} - -div.cdmArticleUnread { - border-color : #999999; - background : white; -} - -div.cdmArticleUnread div.cdmHeader { - background : transparent; - background-repeat : repeat-x; -} - - -div.cdmArticleSelected, div.cdmArticleUnreadSelected { - border-color : #999999; - background : #ffcccc; -} - -div.cdmArticleUnread div.cdmHeader a.title, -div.cdmArticleUnreadSelected div.cdmHeader a.title { - color : black; -} - -div.cdmHeader a:hover { - color : black; -} - -.notify { - border-color : #999; - background-color : #f9f9f9; - color : black; - -moz-border-radius : 0px; -} - -div.notice { - background : #f9f9f9; - border : 1px solid #999999; -} - -div.warning { - background : #ffcccc; - border : 1px solid #ff0000; -} - - -ul.userFeedList, ul.browseFeedList, ul.labelTestResults { - border : 1px solid #999999; -} - -div.postReply { - padding : 0px; - margin : 0px; - font-size : medium; -} - -div.postReply a { - color : black; -} - -div.postReply a:hover { - color : gray; -} - -div.postReply div.postHeader { - background : #f9f9f9; - border-style : solid; - border-color : #999999; - border-width : 0px 0px 1px 0px; - margin : 0px; -} - -div.postReply > div.postHeader { - padding : 5px; -} - -.evenUnreadSelected, .evenSelectedUnread, .evenUnreadSelected td, - .evenSelectedUnread td { - background-color : #ffcccc; - font-weight : bold; - border-color : #ebebeb; -} - -.oddUnreadSelected, .oddSelectedUnread, .oddUnreadSelected td, - .oddSelectedUnread td { - background-color : #ffcccc; - font-weight : bold; - border-color : #ebebeb; - -} - -.evenSelected, .evenSelected td { - background-color : #ffcccc; - border-color : #ebebeb; -} - -.oddSelected, .oddSelected td { - background-color : #ffcccc; - border-color : #ebebeb; -} - -.evenGrayed, .evenGrayed td { - background-color : #f9f9f9; - color : gray; - border-color : #ebebeb; -} - -.oddGrayed, .oddGrayed td { - border-color : #ebebeb; -} - -.oddGrayed { - color : gray; - background-color : #f9f9f9; -} - -.even, .even td { - border-color : #ebebeb; - background-color : #f9f9f9; -} - -.odd, .odd td { - background-color : #f9f9f9; - border-color : #ebebeb; -} - -.evenUnread, .evenUnread td { - background-color : white; - font-weight : bold; - border-color : #ebebeb; -} - -.oddUnread, .oddUnread td { - font-weight : bold; - border-color : #ebebeb; -} - -ul.feedList { - list-style-type : none; - padding : 0px 0px 0px 5px; - font-size : 9pt; -} - -ul.feedList hr { - border-width : 0px; -} - -ul.feedList li.feedCat { - margin : 0px; - padding : 1px 0px 1px 0px; - color : #707070; - font-size : 9pt; -} - -ul.feedList li.feedCat span.catTitle:hover { - color : black; -} - -ul.feedCatList { - list-style-type : none; - margin : 0px 0px 0px 15px; - padding : 0px; -} - -ul.feedCatList li { - margin : 0px; - padding : 1px 0px 1px 0px; - color : black; -} - -ul.feedList img { - vertical-align : bottom; -} - -ul.feedList li { - margin : 0px; - padding : 2px 0px 2px 0px; -} - -ul.feedList span.feedlink:hover { - color : gray; -} - -li.feedSelected span.feedlink, -li.labelSelected span.feedlink, -li.virtSelected span.feedlink, -li.tagSelected span.feedlink { - color : gray; -} - -li.feedUnreadSelected span.feedlink, -li.labelUnreadSelected span.feedlink, -li.virtUnreadSelected span.feedlink, -li.tagUnreadSelected span.feedlink { - color : gray; -} - -div.prefFeedCatHolder { - border : 1px solid #999999; -} - -table.prefFeedList td.feedEditCat { - border-color : #999999; -} - -table.prefFilterList td.filterEditCat { - border-color : #999999; -} - -tr.title td { - color : gray; - font-weight : bold; -} - -tr.title td a { - color : gray; -} - -tr.title td a:hover { - color : black; -} - -span.contentPreview:hover { - color : gray; -} - -#dispSwitch a:hover { - color : black; -} - -#infoBoxTitle { - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #999999; - background : #ffcccc; - color : black; - text-shadow : #ffffff 0px 1px 0px; -} - - -#infoBox { - border-width : 1px 1px 1px 1px; - border-style : solid; - border-color : #999999; - position : relative; - bottom : 2px; - right : 2px; - padding-bottom : 5px; - background : #efefef; -} - -div.infoBoxContents a { - color : gray; -} - -div.infoBoxContents a:hover { - color : black; -} - -#header { - position : absolute; - white-space: nowrap; - top : 10px; - left : 25px; - right : 20px; - height : 40px; - color : gray; -} - -#feeds-holder { - border-width : 1px 1px 1px 1px; - border-style : solid; - border-color : #c0c0c0; - top : 50px; - left : 20px; - position : absolute; - width : 240px; - overflow : auto; - bottom : 30px; - border-collapse : collapse; - background : #f9f9f9; -} - -#toolbar div.actionChooser { - margin-right : 0px; -} - -#toolbar { - position : absolute; - left : 280px; - padding : 0px 20px 10px 0px; - top : 50px; - right : 0px; - white-space: nowrap; - height : 30px; - background-image : url("images/toolbar.png"); - background-position : bottom left; - background-repeat : repeat-x; -} - -div.headlines_normal { - position : absolute; - border-width : 1px 1px 1px 1px; - border-style : solid; - border-color : #999999; - left : 280px; - height : 305px; - top : 85px; - right : 20px; - overflow : hidden; - background : white; - border-collapse : collapse; -} - -div.headlines_cdm { - position : absolute; - border-width : 1px 1px 1px 1px; - border-style : solid; - border-color : #999; - left : 280px; - bottom : 30px; - top : 85px; - right : 20px; - overflow : hidden; - background : white; - border-collapse : collapse; -} - -#content-frame { - position : absolute; - border-width : 1px 1px 1px 1px; - border-style : solid; - border-color : #999999; - background : white; - overflow : auto; - top : 410px; - left : 280px; - bottom : 30px; - right : 20px; - border-collapse : collapse; -} - -#footer, #prefFooter { - vertical-align : middle; - display : block; - position : absolute; - bottom : 5px; - text-align : center; - color : gray; - right : 0px; - left : 0px; - padding : 0px; - border-width : 0px; - background : #f6f6f6; -} - -#footer a { - color : gray; -} - -#headlinesContainer { - margin-left : 0px; - background-color : white; -} - -#headlineActionsTop { -/* border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #c0c0c0; - background-color : #fafafa; */ -} - -#headlinesInnerContainer { - overflow : auto; - position : absolute; - left : 1px; - right : 0px; - bottom : 0px; - top : 25px; -} - -div.firstTab { - width : 20px; - float : left; -} - -div.prefsTab { - border-color : #999999; -} - -div.prefsTabSelected { - border-color : #999999; - background : white; -} - -/* preferences layout */ - -#prefHeader { - margin : 10px 10px 10px 25px; - color : gray; -} - -div.return { - float : right; - margin-right : 10px; -} - -div.return a { - color : black; -} - -div.return a:hover { - color : gray; -} - -#prefContentOuter { - clear : left; - position : absolute; - bottom : 30px; - top : 75px; - overflow : auto; - left : 10px; - right : 10px; - padding : 1em; - margin : 0px; - background : white; - border-width : 1px 1px 1px 1px; - border-color : #999999; - border-style : solid; -} - -#prefContent { - background : white; - -} - -.insensitive a { - color : gray; - text-decoration : underline; -} - -.insensitive a:hover { - color : black; -} - -div.topLinks a { - color : black; -} - -div.topLinks a:hover { - color : gray; -} - -a.visibleLink { - color : gray; -} - -table.prefFilterList tr.even:hover td, -table.prefFilterList tr.odd:hover td, -table.prefFilterList tr.evenSelected:hover td, -table.prefFilterList tr.oddSelected:hover td -table.prefLabelList tr.even:hover td, -table.prefLabelList tr.odd:hover td, -table.prefLabelList tr.evenSelected:hover td, -table.prefLabelList tr.oddSelected:hover td, -table.prefUserList tr.even:hover td, -table.prefUserList tr.odd:hover td, -table.prefUserList tr.evenSelected:hover td, -table.prefUserList tr.oddSelected:hover td, -table.prefFeedList tr.even:hover td, -table.prefFeedList tr.odd:hover td, -table.prefFeedList tr.evenSelected:hover td, -table.prefFeedList tr.oddSelected:hover td -{ - color : gray; -} - -table.headlinesList tr.feedTitle td a, div.cdmFeedTitle a { - color : gray; -} - -table.headlinesList tr.feedTitle td { - background : #efefef; -} - -div.cdmFeedTitle { - background : #efefef; -} - -div.tagCloudContainer { - border : 1px solid #999999; -} - -#resize-grabber { - border-color : gray; - background : url("images/resize_horiz.png") top left; -} - -table.prefPrefsList tr:hover td.prefValue { - color : gray; -} - -table.prefPrefsList tr:hover td.prefValue input { - color : gray; -} - -ul#headlineActionsBody li:hover { - color : black; - background : #ffcccc; -} - -span#headlineActionsDrop { - background : #f0f0f0; - color : black; -} - diff --git a/themes/graycube/theme.ini b/themes/graycube/theme.ini deleted file mode 100644 index 3a07229ce7..0000000000 --- a/themes/graycube/theme.ini +++ /dev/null @@ -1,4 +0,0 @@ -[theme] -name=Graycube -version=1.0 -options=hide_footer,collapse_feedlist diff --git a/themes/greentiny/images/blank_icon.gif b/themes/greentiny/images/blank_icon.gif deleted file mode 100644 index f6482afb6f..0000000000 Binary files a/themes/greentiny/images/blank_icon.gif and /dev/null differ diff --git a/themes/greentiny/images/down_arrow.png b/themes/greentiny/images/down_arrow.png deleted file mode 100644 index 3eff46dd16..0000000000 Binary files a/themes/greentiny/images/down_arrow.png and /dev/null differ diff --git a/themes/greentiny/images/favicon.png b/themes/greentiny/images/favicon.png deleted file mode 100644 index a6f114cdda..0000000000 Binary files a/themes/greentiny/images/favicon.png and /dev/null differ diff --git a/themes/greentiny/images/feed-icon-12x12.png b/themes/greentiny/images/feed-icon-12x12.png deleted file mode 100644 index 291000eab2..0000000000 Binary files a/themes/greentiny/images/feed-icon-12x12.png and /dev/null differ diff --git a/themes/greentiny/images/footer.png b/themes/greentiny/images/footer.png deleted file mode 100644 index 79add28b24..0000000000 Binary files a/themes/greentiny/images/footer.png and /dev/null differ diff --git a/themes/greentiny/images/fresh.png b/themes/greentiny/images/fresh.png deleted file mode 100644 index 88cad81225..0000000000 Binary files a/themes/greentiny/images/fresh.png and /dev/null differ diff --git a/themes/greentiny/images/fresh_new.png b/themes/greentiny/images/fresh_new.png deleted file mode 100644 index 245ea444bc..0000000000 Binary files a/themes/greentiny/images/fresh_new.png and /dev/null differ diff --git a/themes/greentiny/images/indicator_white.gif b/themes/greentiny/images/indicator_white.gif deleted file mode 100644 index 856d47150f..0000000000 Binary files a/themes/greentiny/images/indicator_white.gif and /dev/null differ diff --git a/themes/greentiny/images/label.png b/themes/greentiny/images/label.png deleted file mode 100644 index a4b4182d61..0000000000 Binary files a/themes/greentiny/images/label.png and /dev/null differ diff --git a/themes/greentiny/images/mark_set.gif b/themes/greentiny/images/mark_set.gif deleted file mode 100644 index 4dd6bdcd65..0000000000 Binary files a/themes/greentiny/images/mark_set.gif and /dev/null differ diff --git a/themes/greentiny/images/mark_set.png b/themes/greentiny/images/mark_set.png deleted file mode 100644 index 132f8d9cff..0000000000 Binary files a/themes/greentiny/images/mark_set.png and /dev/null differ diff --git a/themes/greentiny/images/mark_unset.gif b/themes/greentiny/images/mark_unset.gif deleted file mode 100644 index 47db0b569c..0000000000 Binary files a/themes/greentiny/images/mark_unset.gif and /dev/null differ diff --git a/themes/greentiny/images/mark_unset.png b/themes/greentiny/images/mark_unset.png deleted file mode 100644 index 4104defb66..0000000000 Binary files a/themes/greentiny/images/mark_unset.png and /dev/null differ diff --git a/themes/greentiny/images/new_version.png b/themes/greentiny/images/new_version.png deleted file mode 100644 index b311d62495..0000000000 Binary files a/themes/greentiny/images/new_version.png and /dev/null differ diff --git a/themes/greentiny/images/overlay.png b/themes/greentiny/images/overlay.png deleted file mode 100644 index e3a0a77028..0000000000 Binary files a/themes/greentiny/images/overlay.png and /dev/null differ diff --git a/themes/greentiny/images/prefs-content.png b/themes/greentiny/images/prefs-content.png deleted file mode 100644 index 8eccab1377..0000000000 Binary files a/themes/greentiny/images/prefs-content.png and /dev/null differ diff --git a/themes/greentiny/images/pub_set.gif b/themes/greentiny/images/pub_set.gif deleted file mode 100644 index a6f114cdda..0000000000 Binary files a/themes/greentiny/images/pub_set.gif and /dev/null differ diff --git a/themes/greentiny/images/pub_set.png b/themes/greentiny/images/pub_set.png deleted file mode 100644 index e8b96d1f68..0000000000 Binary files a/themes/greentiny/images/pub_set.png and /dev/null differ diff --git a/themes/greentiny/images/pub_unset.gif b/themes/greentiny/images/pub_unset.gif deleted file mode 100644 index 552576f212..0000000000 Binary files a/themes/greentiny/images/pub_unset.gif and /dev/null differ diff --git a/themes/greentiny/images/pub_unset.png b/themes/greentiny/images/pub_unset.png deleted file mode 100644 index c28e9dafae..0000000000 Binary files a/themes/greentiny/images/pub_unset.png and /dev/null differ diff --git a/themes/greentiny/images/resize_handle_horiz.png b/themes/greentiny/images/resize_handle_horiz.png deleted file mode 100644 index b0ef93f1bd..0000000000 Binary files a/themes/greentiny/images/resize_handle_horiz.png and /dev/null differ diff --git a/themes/greentiny/images/resize_horiz.png b/themes/greentiny/images/resize_horiz.png deleted file mode 100644 index ce947c9b2d..0000000000 Binary files a/themes/greentiny/images/resize_horiz.png and /dev/null differ diff --git a/themes/greentiny/images/resizer.png b/themes/greentiny/images/resizer.png deleted file mode 100644 index ca3b02f816..0000000000 Binary files a/themes/greentiny/images/resizer.png and /dev/null differ diff --git a/themes/greentiny/images/score_half_high.png b/themes/greentiny/images/score_half_high.png deleted file mode 100644 index 73e06b538f..0000000000 Binary files a/themes/greentiny/images/score_half_high.png and /dev/null differ diff --git a/themes/greentiny/images/score_half_low.png b/themes/greentiny/images/score_half_low.png deleted file mode 100644 index d44ee6c6ae..0000000000 Binary files a/themes/greentiny/images/score_half_low.png and /dev/null differ diff --git a/themes/greentiny/images/score_high.png b/themes/greentiny/images/score_high.png deleted file mode 100644 index 0d1d9469a6..0000000000 Binary files a/themes/greentiny/images/score_high.png and /dev/null differ diff --git a/themes/greentiny/images/score_low.png b/themes/greentiny/images/score_low.png deleted file mode 100644 index 0aefff100d..0000000000 Binary files a/themes/greentiny/images/score_low.png and /dev/null differ diff --git a/themes/greentiny/images/score_neutral.png b/themes/greentiny/images/score_neutral.png deleted file mode 100644 index deaa10ae35..0000000000 Binary files a/themes/greentiny/images/score_neutral.png and /dev/null differ diff --git a/themes/greentiny/images/sign_excl.png b/themes/greentiny/images/sign_excl.png deleted file mode 100644 index ab6e7dc801..0000000000 Binary files a/themes/greentiny/images/sign_excl.png and /dev/null differ diff --git a/themes/greentiny/images/sign_info.png b/themes/greentiny/images/sign_info.png deleted file mode 100644 index 59f8ab6f0f..0000000000 Binary files a/themes/greentiny/images/sign_info.png and /dev/null differ diff --git a/themes/greentiny/images/sign_quest.png b/themes/greentiny/images/sign_quest.png deleted file mode 100644 index f4cd417e76..0000000000 Binary files a/themes/greentiny/images/sign_quest.png and /dev/null differ diff --git a/themes/greentiny/images/small_question.png b/themes/greentiny/images/small_question.png deleted file mode 100644 index a441ef81b0..0000000000 Binary files a/themes/greentiny/images/small_question.png and /dev/null differ diff --git a/themes/greentiny/images/tag.png b/themes/greentiny/images/tag.png deleted file mode 100644 index a4b4182d61..0000000000 Binary files a/themes/greentiny/images/tag.png and /dev/null differ diff --git a/themes/greentiny/images/toolbar.png b/themes/greentiny/images/toolbar.png deleted file mode 100644 index 79add28b24..0000000000 Binary files a/themes/greentiny/images/toolbar.png and /dev/null differ diff --git a/themes/greentiny/images/ttrss_logo.png b/themes/greentiny/images/ttrss_logo.png deleted file mode 100644 index 0ded307626..0000000000 Binary files a/themes/greentiny/images/ttrss_logo.png and /dev/null differ diff --git a/themes/greentiny/images/ttrss_logo_big.png b/themes/greentiny/images/ttrss_logo_big.png deleted file mode 100644 index 0ded307626..0000000000 Binary files a/themes/greentiny/images/ttrss_logo_big.png and /dev/null differ diff --git a/themes/greentiny/images/updated.png b/themes/greentiny/images/updated.png deleted file mode 100644 index 652e84a616..0000000000 Binary files a/themes/greentiny/images/updated.png and /dev/null differ diff --git a/themes/greentiny/theme.css b/themes/greentiny/theme.css deleted file mode 100644 index 0cfa200094..0000000000 --- a/themes/greentiny/theme.css +++ /dev/null @@ -1,1744 +0,0 @@ -body { - background : #192025; - color : #8BB6C6; - margin : 0px; - padding : 0px; - font-family : "Lucida Grande", Arial, sans-serif; -} - -option { - color : #8BB6C6; -} - -button[disabled], input[disabled], select[disabled], textarea[disabled] { - background : #404040; - color : gray; -} - -input, select, button { - background : #1e2a32; - border : 1px solid black; - color : #8BB6C6; - padding : 2px 4px 2px 4px; -} - -button:active { - background : #FF5500; -} - -button { -} - -textarea { - background : #171D22 - border : 1px solid black; - color : #8BB6C6; -} - -select { - padding : 2px 0px 2px 4px; -} - -blockquote { - border-width : 0px 0px 0px 4px; - border-color : #8BB6C6; - border-style : solid; - background-color : #1e2a32; -} - -/*div.postReply a { - color : #8BB6C6; -}*/ - -div.postReply a:hover { - color : #ff6c00; -} - -div.postReply div.postHeader { - background : #1e2a32; - border-width : 0px 0px 1px 0px; - border-style : dotted; - border-color : #29353D; - margin : 0px 1px 0px 0px; - padding : 5px; - cursor : move; -} - -div.postReply div.postContent { - padding : 10px; - font-size : 14px; -} - -div.postReply div.postEnclosures { - margin-top : 1em; - color : gray; -} - -div.postReply span.author { - font-size : 12px; -} - -ul.feedList li.feedCat { - margin : 0px; - padding : 3px 0px 3px 0px; - color : #707070; - font-size : 12px; -} - -ul.feedList li.feedCat a { - color : #707070; -} - -ul.feedList li.feedCat a:hover { - color : #4684ff; -} - -ul.feedList li.feedCatSelected { - margin : 0px; - padding : 3px 0px 3px 0px; - color : #4684ff; - font-size : 12px; -} - -ul.feedList li.feedCatSelected a { - color : #4684ff; -} - -ul.feedCatList { - list-style-type : none; - margin : 0px 0px 0px 15px; - padding : 0px; -} - -ul.feedCatList li { - margin : 0px; - padding : 0px 0px 2px 0px; - color : #8BB6C6; -} - -ul.feedList > li { - padding : 0px 0px 2px 0px; -} - -li.feedUnread, -li.errorUnread, -li.labelUnread, -li.virtUnread, -li.tagUnread { - font-weight : bold; -} - -li.errorSelected a, -li.error a, -li.errorUnread a, -li.errorUnreadSelected a { - color : #f04040; -} - -li.feed { - display : block; -} - -h1 { - font-size : 18px; -} - -h2 { - font-size : 16px; - font-weight : bold; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #29353D; -} - -h3 { - font-size : 14px; - font-weight : bold; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #29353D; -} - -hr { - border-width : 0px 0px 1px 0px; - border-style : dashed; - border-color : #e0e0e0; -} - -a { - color : #8BB6C6; - text-decoration : none; -} - -a:hover { - color : #00FF00; -} - -#notify { - border-width : 1px; - border-style : solid; - top : 10px; - right : 35%; - min-width : 30%; - position : absolute; - display : none; - float : right; - font-size : 12px; - z-index : 998; - -moz-border-radius : 2px; - padding : 5px 5px 5px 5px; -} - -#notify img { - vertical-align : middle; -} - -.notifyProgress { - border-color : #FFAA00; - background-color : #FF5500; - font-size : 14px; - font-weight : bold; - color : #FFAA00; -} - -.notifyInfo { - border-color : #7AD78E; - background-color : #D5FFDB; - color : #8BB6C6; -} - -.notify { - border-color : #d7c47a; - background-color : #FF5500; - color : #8BB6C6; -} - -.notifyError { - background-color : #ffcccc; - border-color : #ff0000; - color : #8BB6C6; -} - -.notifyError span:hover { - color : red; - cursor : pointer; -} - -#dispSwitch { - font-size : 12px; - margin : 5px 5px 0px 0px; -} - -#dispSwitch a { - color : gray; -} - -#dispSwitch a:hover { - color : #4684ff; -} - -div.expPane { - margin : 15px; -} - -.evenUnreadSelected, .evenSelectedUnread, .evenUnreadSelected td, - .evenSelectedUnread td { - background-color : #192025; - font-weight : bold; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #FFFFAA; -} - -.oddUnreadSelected, .oddSelectedUnread, .oddUnreadSelected td, - .oddSelectedUnread td { - background-color : #192025; - font-weight : bold; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #FFFFAA; -} - -.evenSelected, .evenSelected td { - background-color : #192025; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #FFFFAA; - border-collapse : collapse; -} - -.oddSelected, .oddSelected td { - background-color : #192025; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #FFFFAA; - border-collapse : collapse; -} - -.evenGrayed, .evenGrayed td { - background-color : #202A30; - color : #909090; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #29353D; - border-collapse : collapse; -} - -.oddGrayed { - color : #909090; -} - -.even, .even td { - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #29353D; - background-color : #202A30; - border-collapse : collapse; -} - -.odd, .odd td { - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #29353D; - border-collapse : collapse; -} - -.evenUnread, .evenUnread td { - background-color : #202A30; - font-weight : bold; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #29353D; - border-collapse : collapse; -} - -.oddUnread, .oddUnread td { - font-weight : bold; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #29353D; -} - -.invisible { - display : none; -} - -/* preferences */ - -table.prefPrefsList tr:hover td.prefValue { - color : #88b0f0; -} - -table.prefPrefsList tr:hover td.prefValue input { - color : #88b0f0; -} - -tr.title td { - border-width : 0px 0px 1px 0px; - border-color : #29353D; - border-style : solid; - color : #4684ff; -} - -tr.title td a { - color : #4684ff; -} - -tr.title td a:hover { - color : #00FF00; -} - -div.feedEditSearch { - float : right; -} - -table.prefFeedList td.feedEditCat { - font-weight : bold; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #29353D; - padding-top : 0.5em; -} - -table.prefFilterList td.filterEditCat { - font-weight : bold; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #29353D; - padding-top : 0.5em; -} - -/* oh for the love of... */ - -table.prefFilterList tr.even, -table.prefFilterList tr.odd, -table.prefFilterList tr.evenSelected, -table.prefFilterList tr.oddSelected, -table.prefLabelList tr.even, -table.prefLabelList tr.odd, -table.prefLabelList tr.evenSelected, -table.prefLabelList tr.oddSelected, -table.prefUserList tr.even, -table.prefUserList tr.odd, -table.prefUserList tr.evenSelected, -table.prefUserList tr.oddSelected, -table.prefFeedList tr.even, -table.prefFeedList tr.odd, -table.prefFeedList tr.evenSelected, -table.prefFeedList tr.oddSelected -{ - cursor : pointer; -} - -table.prefFilterList tr.even:hover td, -table.prefFilterList tr.odd:hover td, -table.prefFilterList tr.evenSelected:hover td, -table.prefFilterList tr.oddSelected:hover td -table.prefLabelList tr.even:hover td, -table.prefLabelList tr.odd:hover td, -table.prefLabelList tr.evenSelected:hover td, -table.prefLabelList tr.oddSelected:hover td, -table.prefUserList tr.even:hover td, -table.prefUserList tr.odd:hover td, -table.prefUserList tr.evenSelected:hover td, -table.prefUserList tr.oddSelected:hover td, -table.prefFeedList tr.even:hover td, -table.prefFeedList tr.odd:hover td, -table.prefFeedList tr.evenSelected:hover td, -table.prefFeedList tr.oddSelected:hover td -{ - color : #00FF00; -} - -table.prefFeedList td.feedIcon { - text-align : center; -} - -table.prefFeedList td.feedSelect { - text-align : center; -} - -div.prefFeedCatHolder { - height : 250px; - overflow : auto; - border : 1px solid #29353D; - margin : 5px 0px 5px 0px; - background-color : #171D22; -} - -a.helpLink { - color : #808080; -} - -a.helpLink:hover { - color : #4684ff; -} - -div.helpResponse { - margin : 10px; - background-image : url("images/vgrad_light_rev2.png"); - background-position : top left; - background-repeat : repeat-x; - padding : 10px 20px 10px 20px; - border : 1px solid #29353D; -} - -#infoBoxTitle { - border-color : #29353D; - background-color : #29353D; -} - -/* shadow stuff from http://www.sixapart.com/pronet/articles/ydsf_-_robust_c.html */ - -#infoBox { - border-color : #29353D; - background-color : #192025; -} - -div.infoBoxContents a { - color : #527040; -} - -div.infoBoxContents a:hover { - color : #ff6c00; -} - -div.helpResponse h1, div.infoBoxContents h1 { -/* border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #c0c0c0; */ - font-size : 18px; -} - -div.helpResponse h2, div.infoBoxContents h2 { -/* border-width : 0px 0px 0px 0px; */ - font-size : 16px; -} - -pre { - margin : 5px; -} - -input.extSearch { - width : 100%; -} - -div.firstTab { - width : 10px; - float : left; -} - -div.prefsTab:hover { - cursor : pointer; -} - -div.prefsTabSelected:hover { - cursor : pointer; -} - -div.prefsTab { - border-width : 1px 1px 0px 1px; - border-color : #29353D; - border-style : solid; - border-collapse : collapse; -} - -div.prefsTabSelected { - border-width : 1px 1px 0px 1px; - border-color : #29353D; - border-style : solid; - background-color : #192025; - color : #ff6c00; - font-weight : bold; -} - -div.notice { - background : #171D22; - border : 1px solid #29353D; - width : 60%; - padding : 5px; - margin : 0px 0px 5px 0px; - font-size : 12px; -} - -div.warning { - background : #FF5500; - border : 1px solid #d7c47a; - font-size : 12px; - width : 60%; - padding : 5px; - margin : 0px 0px 5px 0px; -} - - -div.warning img, div.notice img, div.error img { - vertical-align : middle; - padding : 5px; -} - -div.error { - border : 1px solid #ff0000; - background : #ffcccc; - color : #FF0000; - padding : 5px; - margin : 0px 0px 5px 0px; - font-size : 12px; -} - -ul.nomarks { - list-style-type : none; - margin : 0px; - padding : 10px; -} - -div.prefHelp, td.prefHelp { - color : gray; - padding : 5px; -} - -table.loginForm { - background-color : #171D22; -} - -table.innerLoginForm { - border : 1px solid #29353D; - padding : 50px; - background-color : #171D22; -} - -table.innerLoginForm td { - padding : 3px 3px 5px 3px; -} - -span.feed_error { - color : red; -} - -.insensitive { - color : gray; -} - -.insensitive a { - color : #4684ff; -} - -.insensitive a:hover { - color : #ff6c00; -} - -/* .prefGenericAddBox { - font-size : 12px; -} */ - -body.logoutBody { - background-color : #171D22; - color : #8BB6C6; -} - -span.logoutWarning { - color : red; - font-weight : bold; -} - -div.logoutContent { - width : 600px; - border : 1px solid #29353D; - background-color : #171D22; - margin-left : auto; - margin-right : auto; - margin-top : 20px; - padding : 10px; -} - -.small { - font-size : 12px; -} - -table.innerFeedTable td { - margin : 0px; - padding : 0px; -} - -td.selectPrompt { - font-size : 12px; - color : gray; -} - -div.headlinesSubToolbar { - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #171D22; - position : absolute; - left : 0px; - top : 0px; - height : 25px; - right : 0px; - background : #171D22; - font-size : 11px; - color : gray; -} - -input#subtoolbar_search_box { - height : 10px; - font-size : 9px; - vertical-align : middle; -} - -table.headlinesSubToolbar td.headlineActions { - padding : 0px 5px 0px 5px; -} - -table.headlinesSubToolbar td.headlineActionsRTL { - padding : 0px 5px 0px 5px; -} - -table.headlinesSubToolbar td.headlineTitle { - padding : 0px 5px 0px 5px; - text-align : right; -} - -table.headlinesSubToolbar td.headlineTitleRTL { - padding : 0px 5px 0px 5px; - text-align : left; -} - -span.contentPreview { - font-size : 12px; - color : gray; - font-weight : normal; -} - -span.contentPreview:hover { - color : #4684ff; -} - -table.headlinesList { - width : 100%; -} - -table.headlinesList td.hlFeedIcon { - width : 25px; - text-align : center; - cursor : pointer; -} - - -table.headlinesList td.hlMarkedPic { - width : 25px; - text-align : center; -} - -table.headlinesList td.hlfeed { - text-align : right; -} - -td.hlSelectRow, td.hlUpdPic { - width : 25px; - text-align : center; -} - -table.headlinesList td.hlUpdated { - color : gray; - text-align : right; - width : 100px; - cursor : pointer; -} - -table.headlinesList tr td { - padding : 2px 0px 2px 0px; -} - -div.postHeader div.postDate { - text-align : right; - color : gray; - float : right; -} - -div.postHeader div.postDateRTL { - text-align : left; - color : gray; - float : right; -} - -div.postReply span.tagList { - color : gray; -} - -div.postHeader div { - padding-bottom : 3px; - font-size : 12px; -} - -#feedUpdateErrors { - display : none; -} - -#allEntryTags { - font-size : 12px; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #29353D; - padding-bottom : 5px; - display : none; -} - -/*td.hlContent { - overflow : hidden; - height : 1em; - display : block; -} */ - -td.hlMarkedPic, td.hlSelectRow, td.hlUpdated, td.hlFeed { - height : 1em; -} - -td.hlFeed { - text-align : right; -} - -span.hlFeed, span.hlFeed a { - font-size : 12px; - color : gray; -} - -span.hlFeed a:hover { - color : #4684ff; -} - -/* div.cdmArticle:hover { - background-color : #171D22; -} */ - -div.cdmAllTags { - float : left; - background-color : #171D22; - border : 1px solid #29353D; - display : none; - z-index : 3; - top : auto; - left : auto; - right : auto; - position : absolute; - padding : 10px; -} - -span.cdmAllTagsCtr:hover div { - display : block; -} - -div.cdmArticle { - border-color : #a0a0a0; - border-width : 0px 0px 1px 0px; - border-style : solid; - background-color : #202A30; - margin : 0px; - color : #505050; - /* padding : 10px; */ - color : #8BB6C6; - -} - -/* div.cdmArticleUnread:hover { - background-color : #171D22; -} */ - -div.cdmArticleUnread { - border-color : #29353D; - border-width : 0px 0px 1px 0px; - border-style : solid; - background-color : #171D22; - margin : 0px; - /* padding : 10px; */ - color : #8BB6C6; -} - -div.cdmArticleSelected, div.cdmArticleUnreadSelected { - margin : 0px; - background-color : #192025; - border-color : #FFFFAA; - border-width : 0px 0px 1px 0px; - border-style : solid; -} - -div.cdmArticleUnread div.cdmHeader a.title, -div.cdmArticleUnreadSelected div.cdmHeader a.title { - font-weight : bold; -} - -div.cdmHeader { - padding : 5px 5px 10px 5px; - color : gray; - -} - -div.cdmArticleUnread div.cdmHeader span.titleWrap a { - color : #ff6c00; -} - -div.cdmFooter { - font-size : 12px; - color : #8BB6C6; - padding : 5px; - color : gray; -/* background-color : white; */ - border-width : 1px 0px 0px 0px; - border-color : #29353D; - border-style : dotted; -} - -/*div.cdmArticleSelected div.cdmFooter { - background-color : transparent; -} - -div.cdmArticleUnreadSelected div.cdmFooter { - background-color : transparent; -}*/ - -div.cdmFooter span.s0 { - border-width : 0px 1px 0px 0px; - border-color : #29353D; - border-style : dotted; - padding : 0px 5px 0px 0px; -} - -div.cdmFooter span.s1 { - border-width : 0px 1px 0px 0px; - border-color : #29353D; - border-style : dotted; - padding : 0px 5px 0px 5px; -} - -div.cdmFooter span.s2 { - padding : 0px 5px 0px 5px; -} - -div.cdmFooter img.markedPic, div.cdmFooter img.tagsPic { - width : 16px; - height : 16px; - vertical-align : middle; -} - -img.markedPic { - cursor : pointer; -} - -div.cdmHeader div.articleUpdated { - float : right; - font-weight : bold; - color : gray; -} - -div.cdmHeader div.articleUpdated img { - vertical-align : middle; -} - -div.cdmFooter input, div.cdmHeader input, div.cdmFooter img { - margin : 0px; -} - -div.cdmHeader, div.cdmHeader a { - color : #505050; - font-size : 12px; -} - -div.cdmHeader a:hover { - color : #4684ff; -} - -div.cdmContent { - margin : 0px 15px 5px 15px; -} - -div.cdmContent:hover { - cursor : pointer; -} - -div.cdmExcerpt { - margin : 0px 15px 5px 15px; -} - -div.cdmExcerpt:hover { - cursor : pointer; - color : #88b0f0; -} - -div.cdmEnclosures { - margin-top : 1em; - color : gray; -} - -a.warning { - color : #f04040; -} - -img.closeButton { - border-width : 0px; - float : right; -} - -span.groupPrompt { - font-size : 12px; - color : #4684ff; -} - -div.tagCloudContainer { -/* height : 300px; - overflow : auto; */ - border : 1px solid #29353D; - background-color : #171D22; - margin : 5px 0px 5px 0px; - padding : 5px; - text-align : center; -} - -ul.feedErrorsList { - height : 300px; - overflow : auto; - list-style-type : none; - border : 1px solid #29353D; - background-color : #171D22; - margin : 0px 0px 5px 0px; - padding : 0px; -} - -ul.userFeedList { - height : 300px; - overflow : auto; - list-style-type : none; - border : 1px solid #29353D; - background-color : #171D22; - margin : 0px 0px 5px 0px; - padding : 0px; -} - -/* #browseBigFeedList li.oddSelected { - border : 1px solid #d0d0f6; - background-color : #eaeaff; - -moz-border-radius : 5px; -} */ - -/*#browseBigFeedList li { - padding :0px; -}*/ - -div.labelTestError { - margin : 5px 0px 5px 0px; - color : #f04040; -} - -ul.labelTestResults { - height : 100px; - overflow : auto; - list-style-type : none; - margin : 0px 0px 5px 0px; - padding : 0px; - border : 1px solid #29353D; - background-color : #171D22; -} - -ul.filterTestResults { - height : 300px; - overflow : auto; - list-style-type : none; - margin : 0px 0px 5px 0px; - padding : 0px; - border : 1px solid #29353D; - background-color : #171D22; -} - -ul.browseFeedList { - height : 300px; - overflow : auto; - list-style-type : none; - margin : 0px 0px 5px 0px; - padding : 0px; - border : 1px solid #29353D; - background-color : #171D22; -} - -ul.browseFeedList li { - margin : 0px; - padding : 0px; -} - -span.subscribers { - color : #808080; -} - -div.subscribers { - color : #808080; - font-size : 12px; - float : right; -} - -input.feedBrowseCB { - margin-right : 1em; -} - -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; -} - -div.browserFeedInfo { - font-size : 12px; -/* border : 1px solid #88b0f0; - background-color : #ecf4ff; - -moz-border-radius : 5px; */ - padding : 5px; -} - -div.browserFeedInfo div.detailsPart { - margin : 5px 0px 5px 5px; -} - -div.cdmContent a { - color : #4684ff; -} - -div.cdmContent a:hover { - color : #00FF00; -} - -a.cdmToggleLink { - color : #808080; - font-size : 12px; -} - -a.cdmToggleLink:hover { - color : #00FF00; -} - -.noborder { - border-width : 0px; -} - -#debug_output { - position : absolute; - width : 400px; - height : 200px; - right : 20px; - bottom : 20px; - z-index : 999; - background-color : #171D22; - border : 1px solid #29353D; - overflow : auto; - margin : 0px; - padding : 0px; - list-style-type : none; -} - -#debug_output li { - margin : 0px; - padding : 0px; - font-size : 11px; -} - -#dialog_overlay { - left : 0; - top : 0; - height : 100%; - width : 100%; - z-index : 4; - position : absolute; - background-image : url("images/shadow_dark.png"); -} - -#overlay { - background : #171D22; - left : 0; - top : 0; - height : 100%; - width : 100%; - z-index : 100; - position : absolute; -} - -#overlay_inner { - font-weight : bold; - margin : 10px; -} - -#fatal_error { - background : #171D22; - left : 0; - top : 0; - height : 100%; - width : 100%; - z-index : 200; - display : none; - position : absolute; -} - -#fatal_error_inner { - font-weight : bold; - margin : 10px; - color : red; -} - -#fatal_error_msg { - color : #8BB6C6; - padding : 10px; - font-weight : normal; - background-color : #ffcccc; - border : 1px solid #ff0000; -} - -#fatal_error_msg a { - color : red; -} - -#fatal_error_msg a:hover { - color : red; - text-decoration : underline; -} - -#fatal_error_msg img { - vertical-align : middle; -} - -#noDaemonWarning { - position : absolute; - background-color : #171D22; - border : 1px solid #29353D; - padding : 10px; - margin : 5px; - z-index : 2; - display : none; -} - -#qafInput { - width : 100%; -} - -form { - margin : 0px; - padding : 0px; -} - -#main_toolbar_form { - margin : 0px; - padding : 0px; - display : inline; -} - -div.feedExtInfo { - margin-left : 2em; - font-size : 7pt; - color : gray; - font-weight : normal; -} - -span.debugTS { - color : #4684ff; -} - -#backReqBox { - display : none; -} - -/*.scriptWarn:before { - content : "Disabled script:"; -}*/ - -.scriptWarn { - color : white; - background-color : #903030; - border : 1px solid #601010; - padding : 3px; - font-weight : bold; - display : none; -} - -.objectWarn { - color : gray; - font-style: italic; - text-align : center; -} - -table.loginForm2 { - padding : 1em; -} - -table.loginForm2 .loginTop { - border-width : 0px 0px 1px 0px; - border-color : #29353D; - border-style : solid; - padding : 0.5em; -} - -table.loginForm2 .loginMiddle { - padding : 3em; -} - -table.loginForm2 .loginBottom { - border-width : 1px 0px 0px 0px; - border-color : #29353D; - border-style : solid; - font-size : 12px; - text-align : center; - color : #909090; - padding : 0.5em; -} - -table.loginForm2 .loginBottom a { - color : gray; -} - -table.loginForm2 .loginBottom a:hover { - color : #FF5500; -} - -table.loginForm2 .loginError { - color : red; - margin : 0.5em; -} - -table.loginForm2 .innerLoginCell { - padding-top : 0.5em; -} - -#milestoneDetails { - display : none; -} - -div.loadingPrompt { - padding : 1em; - text-align : center; - font-weight : bold; -} - -div.whiteBox { - background-color : #171D22; - margin-left : 1px; - text-align : center; - padding : 1em; -} - -/* layout */ - -#header { - position : absolute; - white-space: nowrap; - top : 10px; - left : 15px; - right : 5px; - height : 40px; - color : #4684ff; - font-size : 12px; -} - -#feeds-holder { - border-width : 1px 1px 0px 0px; - border-style : solid; - border-color : #29353D; - top : 50px; - left : 0px; - position : absolute; - width : 260px; - overflow : auto; - bottom : 0px; - border-collapse : collapse; -} - -#toolbar { - position : absolute; - left : 261px; - padding : 5px 10px 5px 10px; - top : 50px; - right : 0px; - white-space: nowrap; - height : 30px; - background-image : url("images/toolbar.png"); - background-position : bottom left; - background-repeat : repeat-x; - font-size : 12px; -} - -div.headlines_normal { - position : absolute; - border-width : 1px 0px 0px 0px; - border-style : solid; - border-color : #29353D; - left : 261px; - height : 305px; - top : 85px; - right : 0px; - overflow : hidden; - font-size : 12px; - border-collapse : collapse; -} - -div.headlines_cdm { - position : absolute; - border-width : 1px 0px 1px 0px; - border-style : solid; - border-color : #29353D; - left : 261px; - bottom : 40px; - top : 85px; - right : 0px; - overflow : hidden; - font-size : 12px; - border-collapse : collapse; -} - -#content-frame { - position : absolute; - border-width : 1px 0px 0px 0px; - border-style : solid; - border-color : #29353D; - overflow : auto; - top : 390px; - left : 261px; - bottom : 40px; - right : 0px; - border-collapse : collapse; -} - -#resize-grabber { - height : 5px; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #29353D; - background : #1e2a32; - cursor : move; - text-align : center; -} - -#footer, #prefFooter { - position : absolute; - bottom : 0px; - height : 20px; - text-align : center; - color : #8BB6C6; - font-size : 12px; - background-image : url("images/footer.png"); - background-position : top left; - background-repeat : repeat-x; - background-color : #171D22; - right : 0px; - left : 261px; - padding : 10px; - border-collapse : collapse; - border-width : 1px 0px 0px 0px; - border-style : solid; - border-color : #29353D; - -} - -#prefFooter { - left : 0px; -} - -#footer a, #prefFooter a { - color : #8BB6C6; -} - -#footer a:hover, #prefFooter a:hover { - color : #ff6c00; -} - -#headlinesContainer { - margin-left : 0px; - background-color : #171D22; -} - -#headlineActionsTop { -/* border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #c0c0c0; - background-color : #fafafa; */ - font-size : 12px; -} - -#headlinesInnerContainer { - overflow : auto; - position : absolute; - left : 0px; - right : 0px; - bottom : 0px; - top : 25px; -} - -/* preferences layout */ - -#prefHeader { - color : #4684ff; - font-size : 12px; - margin : 10px; - height : 33px; -} - -div.return { - float : right; - font-size : 12px; - margin-right : 10px; -} - -div.return a { - color : #4684ff; -} - -div.return a:hover { - color : #ff6c00; -} - -#prefContentOuter { - border-color : #29353D; - border-style : solid; - font-size : 12px; -} - -#prefContent { - background-image : url("images/prefs-content.png"); - background-position : top left; - background-repeat : repeat-x; -} - -.catCtrHasUnread, .feedCtrHasUnread { - font-weight : bold; - color : #8BB6C6; -} - -.catCtrNoUnread, .feedCtrNoUnread { - display : none; -} - -ul.headlineDropdownMenu { - list-style-type : none; - margin : 0px; - padding : 0px; -} - -ul.headlineDropdownMenu li.top { - float : left; - width : 12em; - background-image : url("images/down_arrow.png"); - background-position : center right; - background-repeat : no-repeat; - margin : 0px; - cursor : pointer; - border-width : 1px 1px 1px 1px; - border-color : transparent; - border-style : solid; -} - -ul.headlineDropdownMenu li.top2 { - float : left; -} - -ul.headlineDropdownMenu li.top3 { - float : left; - margin : 0px; - cursor : pointer; - border-width : 1px 1px 1px 1px; - border-color : transparent; - border-style : solid; -} - -ul.headlineDropdownMenu li.vsep { - float : left; - margin : 0px 5px 0px 0px; - border-width : 0px 1px 0px 0px; - border-color : #29353D; - border-style : dotted; - color : white; -} - -ul.headlineDropdownMenu li.top:hover { - cursor : pointer; - border-width : 1px 1px 1px 1px; - border-color : #29353D; - border-style : solid; -} - -ul.headlineDropdownMenu li.top:hover ul { - display : block; -} - -ul.headlineDropdownMenu ul { - list-style-type : none; - position : absolute; - float : none; - margin : 0px; - padding : 0px; - display : none; - background-color : #171D22; - width : 12em; - z-index : 3; - top : auto; - left : auto; - border-width : 0px 1px 1px 1px; - border-color : #29353D; - border-style : solid; - margin-left : -1px; -} - -ul.headlineDropdownMenu ul li { - float: none; - padding : 2px 0px 2px 10px; - color : #8BB6C6; -} - -ul.headlineDropdownMenu ul li:hover { - color : #FF6C00; - background-color : #29353D; -} - -table.prefFeedCatList { - background-color : #171D22; -} - -div.autocomplete { - background-color : #171D22; - border :1px solid #778899; -} - -div.autocomplete ul li.selected { - background-color : #192025; -} - -div.topLinks { - color : gray; -} - -div.topLinks a { - color : #4684ff; -} - -div.topLinks a:hover { - color : #ff6c00; -} - -div.topLinks a.feedback { - color : #009900; -} - -a.visibleLink { - color : #4684ff; - -} - -table.headlinesList tr.feedTitle td a, div.cdmFeedTitle a { - color : #4684ff; -} - -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; -} - -table.headlinesList tr, table.headlinesList td { - border-collapse : collapse; - margin : 0px; -} - -table.headlinesList tr.feedTitle td { - background : url("images/toolbar.png") bottom left; - background-repeat : repeat-x; - border-color : #29353D; - border-width : 0px 0px 1px 0px; - border-style : solid; - padding : 5px 3px 5px 5px; - -} - -td.hlContent, td.hlContentL, td.hlContentH { - cursor : pointer; -} - -td.hlContentH a, td.hlContentH span { - color : #00cc00; -} - -td.hlContentL a, td.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#hotkey_help_overlay { - color : #8BB6C6; - font-size : 15px; -} - -div#hotkey_help_overlay h1 { - text-align : center; -} - -div#hotkey_help_overlay ul { - list-style-type : none; - margin : 0px; -} - -div#hotkey_help_overlay li { - margin : 0px; -} - -div#hotkey_help_overlay p { - text-align : center; -} - -div#hotkey_help_overlay td.n { - text-align : right; - font-weight : bold; - width : 6em; - color : #00FF00; - padding-right : 5px; -} - -div#hotkey_help_overlay td { - vertical-align : top; -} - -div#hotkey_help_overlay h1 { - margin : 0px; -} - -div#hotkey_help_overlay h2 { - font-size : 16px; - border-width : 0px; - margin : 0.3em 0px 0.3em 0px; - text-align : center; - color : #FF5500; -} - -div#l_progress_o { - border : 1px solid #29353D; - background-color : #171D22; -} - -div#l_progress_i { - background-color : #29353D; -} - -#content-insert { - background-color : #171D22; - overflow : auto; - position : absolute; - left : 0px; - right : 0px; - bottom : 0px; - top : 6px; -} - -div.dlgSec { - font-size : 14px; - color : gray; - font-weight : bold; - clear : both; - height : 20px; -} - -div.dlgSecCont { - position : relative; - left : 150px; - top : -20px; - float : left; - font-size : 12px; - font-weight : medium; - line-height : 200%; -} - -div.dlgButtons { - text-align : right; - clear : both; -} - -textarea.labelSQL { - font-family : monospace; -} - -div#label_test_result { - clear : both; -} diff --git a/themes/greentiny/theme.ini b/themes/greentiny/theme.ini deleted file mode 100644 index 239bdf24af..0000000000 --- a/themes/greentiny/theme.ini +++ /dev/null @@ -1,5 +0,0 @@ -[theme] -name=Greentiny -author=Lejla -version=1.0 -options=no_highlights,hide_footer,collapse_feedlist diff --git a/themes/neon/images/archive.png b/themes/neon/images/archive.png deleted file mode 100755 index fab68beace..0000000000 Binary files a/themes/neon/images/archive.png and /dev/null differ diff --git a/themes/neon/images/art-pub-note.png b/themes/neon/images/art-pub-note.png deleted file mode 100755 index 6721d51c7e..0000000000 Binary files a/themes/neon/images/art-pub-note.png and /dev/null differ diff --git a/themes/neon/images/art-zoom.png b/themes/neon/images/art-zoom.png deleted file mode 100755 index 1c96110aab..0000000000 Binary files a/themes/neon/images/art-zoom.png and /dev/null differ diff --git a/themes/neon/images/button.png b/themes/neon/images/button.png deleted file mode 100755 index 0684c89d63..0000000000 Binary files a/themes/neon/images/button.png and /dev/null differ diff --git a/themes/neon/images/button_pressed.png b/themes/neon/images/button_pressed.png deleted file mode 100644 index 2e7d72f810..0000000000 Binary files a/themes/neon/images/button_pressed.png and /dev/null differ diff --git a/themes/neon/images/fresh.png b/themes/neon/images/fresh.png deleted file mode 100755 index b3f1355bea..0000000000 Binary files a/themes/neon/images/fresh.png and /dev/null differ diff --git a/themes/neon/images/fresh_sign.png b/themes/neon/images/fresh_sign.png deleted file mode 100755 index 00c2d3d2c4..0000000000 Binary files a/themes/neon/images/fresh_sign.png and /dev/null differ diff --git a/themes/neon/images/indicator_white.gif b/themes/neon/images/indicator_white.gif deleted file mode 100755 index 93daf4c125..0000000000 Binary files a/themes/neon/images/indicator_white.gif and /dev/null differ diff --git a/themes/neon/images/label.png b/themes/neon/images/label.png deleted file mode 100755 index 3b3a21cd85..0000000000 Binary files a/themes/neon/images/label.png and /dev/null differ diff --git a/themes/neon/images/mark_set.png b/themes/neon/images/mark_set.png deleted file mode 100644 index 6b223a7d5a..0000000000 Binary files a/themes/neon/images/mark_set.png and /dev/null differ diff --git a/themes/neon/images/mark_unset.png b/themes/neon/images/mark_unset.png deleted file mode 100644 index d92dbcba25..0000000000 Binary files a/themes/neon/images/mark_unset.png and /dev/null differ diff --git a/themes/neon/images/pub_set.png b/themes/neon/images/pub_set.png deleted file mode 100644 index 5f062fd5db..0000000000 Binary files a/themes/neon/images/pub_set.png and /dev/null differ diff --git a/themes/neon/images/pub_unset.png b/themes/neon/images/pub_unset.png deleted file mode 100644 index 8bb7750826..0000000000 Binary files a/themes/neon/images/pub_unset.png and /dev/null differ diff --git a/themes/neon/images/resize_handle_horiz.png b/themes/neon/images/resize_handle_horiz.png deleted file mode 100644 index 6dc1465622..0000000000 Binary files a/themes/neon/images/resize_handle_horiz.png and /dev/null differ diff --git a/themes/neon/images/shadow_dark.png b/themes/neon/images/shadow_dark.png deleted file mode 100644 index 3a26b2a5c4..0000000000 Binary files a/themes/neon/images/shadow_dark.png and /dev/null differ diff --git a/themes/neon/images/sign_excl.png b/themes/neon/images/sign_excl.png deleted file mode 100755 index 01fd21e4a9..0000000000 Binary files a/themes/neon/images/sign_excl.png and /dev/null differ diff --git a/themes/neon/images/sign_info.png b/themes/neon/images/sign_info.png deleted file mode 100755 index 06bfc7d7e4..0000000000 Binary files a/themes/neon/images/sign_info.png and /dev/null differ diff --git a/themes/neon/images/sign_quest.png b/themes/neon/images/sign_quest.png deleted file mode 100755 index 25868ab679..0000000000 Binary files a/themes/neon/images/sign_quest.png and /dev/null differ diff --git a/themes/neon/images/sign_quest.svg b/themes/neon/images/sign_quest.svg deleted file mode 100755 index 038f46e47e..0000000000 --- a/themes/neon/images/sign_quest.svg +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - ? - - - diff --git a/themes/neon/images/small_question.png b/themes/neon/images/small_question.png deleted file mode 100755 index f02f740d8a..0000000000 Binary files a/themes/neon/images/small_question.png and /dev/null differ diff --git a/themes/neon/images/tag.png b/themes/neon/images/tag.png deleted file mode 100755 index d7e477afa3..0000000000 Binary files a/themes/neon/images/tag.png and /dev/null differ diff --git a/themes/neon/images/ttrss_logo.png b/themes/neon/images/ttrss_logo.png deleted file mode 100644 index 5277670e78..0000000000 Binary files a/themes/neon/images/ttrss_logo.png and /dev/null differ diff --git a/themes/neon/images/ttrss_logo.svg b/themes/neon/images/ttrss_logo.svg deleted file mode 100644 index da72b97ce6..0000000000 --- a/themes/neon/images/ttrss_logo.svg +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - tiny tiny - rss - - diff --git a/themes/neon/theme.css b/themes/neon/theme.css deleted file mode 100644 index 92daf8559e..0000000000 --- a/themes/neon/theme.css +++ /dev/null @@ -1,584 +0,0 @@ -body { - background : #202020; -} - -a { - color : gray; -} - -a:hover { - color : #b077ec; -} - -h3 { - border-color : #202020; - color : #f0f0f0; -} - -#overlay { - background : #202020; - color : gray; -} - -div#l_progress_o { - background-color : #3c2c4c; -} - -div#l_progress_i { - background-color : #b077ec; -} - -#header { - -} - -#footer, #prefFooter { - background : #202020; - color : gray; - border-color : #404040; -} - -#footer a:hover { - color : #b077ec; -} - -#feeds-holder { - background : #404040; - border-style : solid; - border-color : #202020; -} - -#toolbar { - background : #202020; -} - -option { - color : #b077ec; -} - -button[disabled], input[disabled], select[disabled], textarea[disabled] { - background : #404040; - color : gray; -} - -input, select, button { - background : #3c2c4c; - border : 1px solid black; - color : #b077ec; - padding : 2px 4px 2px 4px; - font-family : "Lucida Grande", "Segoe UI", Tahoma, Arial, sans-serif; - font-size : 12px; -} - -button:active { - background : url("images/button_pressed.png") top left; - background-repeat : repeat-x; -} - -button { - background : url("images/button.png") top left; - background-repeat : repeat-x; -} - -textarea { - background : #3c2c4c; - border : 1px solid black; - color : #b077ec; -} - -select { - padding : 2px 0px 2px 4px; -} - -div.headlines_normal { - border-color : #404040; - background : #202020; -} - -div.headlines_cdm { - border-color : #404040; - background : #202020; -} - -div#headlinesInnerContainer { - background : #202020; -} - -div.headlinesSubToolbar { - background : #404040; - color : #f0f0f0; -} - -#resize-grabber { - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #3c2c4c; - background : #3c2c4c; -} - -#content-frame { - border-color : #404040; -} - -#content-insert { - background : #303030; -} - -.evenUnreadSelected, .evenSelectedUnread, .evenUnreadSelected td, - .evenSelectedUnread td { - background-color : #3c2c4c; - font-weight : bold; - border-color : #404040; -} - -.oddUnreadSelected, .oddSelectedUnread, .oddUnreadSelected td, - .oddSelectedUnread td { - background-color : #3c2c4c; - font-weight : bold; - border-color : #404040; - -} - -.evenSelected, .evenSelected td { - background-color : #3c2c4c; - border-color : #404040; -} - -.oddSelected, .oddSelected td { - background-color : #3c2c4c; - border-color : #404040; -} - -.evenGrayed, .evenGrayed td { - background-color : #303030; - color : gray; - border-color : #404040; -} - -.oddGrayed, .oddGrayed td { - border-color : #404040; -} - -.oddGrayed { - color : gray; - background-color : #404040; -} - -.even, .even td { - border-color : #404040; - background-color : #404040; -} - -.odd, .odd td { - background-color : #303030; - border-color : #202020; -} - -.evenUnread, .evenUnread td { - background-color : #404040; - font-weight : bold; - border-color : #404040; -} - -.oddUnread, .oddUnread td { - font-weight : bold; - border-color : #404040; - background-color : #303030; -} - -ul.feedList li.feedCatSelected { - color : #b077ec; -} - -ul.feedList li.feedCatSelected span.catTitle { - color : #b077ec; -} - -ul.feedList li.feedCat { - color : #b077ec; -} - -ul.feedList li.feedCat span.catTitle:hover { - color : #b077ec; -} - -ul.feedList li.feedCat span.catTitle { - color : #b077ec; -} - -ul.feedCatList li { - color : gray; -} - -#prefContentOuter { - background : #404040; - border-color : #404040; -} - -#prefContent { - background : #404040; - color : gray; - -} - -div.prefsTab { - border-color : #404040; - color : gray; -} - -div.prefsTabSelected { - border-color : #404040; - background : #404040; - color : gray; -} - -div.topLinks a { - color : #b077ec; -} - -div.topLinks a:hover { - color : gray; -} - -ul.feedList span.feedlink:hover { - color : #b077ec; -} - -li.feedSelected span.feedlink, -li.labelSelected span.feedlink, -li.virtSelected span.feedlink, -li.tagSelected span.feedlink { - color : #b077ec; -} - -li.feedUnreadSelected span.feedlink, -li.labelUnreadSelected span.feedlink, -li.virtUnreadSelected span.feedlink, -li.tagUnreadSelected span.feedlink { - color : #b077ec; -} - -span.contentPreview:hover, td.hlContent a:hover { - color : #b077ec; -} - -.catCtrHasUnread, .feedCtrHasUnread { - color : #8752c2; -} - -span#headlineActionsDrop { - border : 1px solid black; - color : #b077ec; - background : #3c2c4c; -} - -ul#headlineActionsBody { - background-color : #3c2c4c; - border-color : black; -} - -ul#headlineActionsBody li { - color : #b077ec; -} - -ul#headlineActionsBody li:hover { - color : white; - background : #b077ec; -} - -ul#headlineActionsBody li.insensitive { - color : white; -} - -ul#headlineActionsBody li.insensitive:hover { - background : #3c2c4c; - color : white; -} - -optgroup { - color : white; -} - -#infoBoxTitle { - border-color : #404004; - background : #404040; - color : gray; - text-shadow : #202020 0px 1px 0px; -} - - -#infoBox { - border-color : #202020; - background : #202020; - color : gray; -} - -div.infoBoxContents a { - color : gray; -} - -div.infoBoxContents a:hover { - color : #b077ec; -} - -div.notice { - background : #202020; - border : 1px solid #404040; - color : gray; -} - -div.error, div.warning { - background : #3c2c4c; - border : 1px solid #404040; - color : #b077ec:; -} - -.notify, .notifyInfo, .notifyProgress, .notifyError { - border-color : #b077ec; - background-color : #3c2c4c; - color : #b077ec; -} - -div.tagCloudContainer { - border : 1px solid #404040; - background : #303030; -} - -div.tagCloudContainer a:hover { - color : #b077ec; -} - -#dispSwitch a:hover { - color : #b077ec; -} - -div.postReply { - color : gray; -} - -div.postReply a { - color : gray; -} - -div.postReply a:hover { - color : #b077ec; -} - -div.postReply div.postHeader { - background : #3c2c4c; - border-color : #202020; - margin : 0px; -} - -div.postReply > div.postHeader { - padding : 5px; -} - -#dialog_overlay { - background-image : url("images/shadow_dark.png"); -} - -div#cmdline { - background-color : #3c2c4c; - border : 1px solid #b077ec; - padding : 3px 5px 3px 5px; - z-index : 5; - color : #b077ec; -} - -table.prefFilterList tr.even:hover td, -table.prefFilterList tr.odd:hover td, -table.prefFilterList tr.evenSelected:hover td, -table.prefFilterList tr.oddSelected:hover td -table.prefLabelList tr.even:hover td, -table.prefLabelList tr.odd:hover td, -table.prefLabelList tr.evenSelected:hover td, -table.prefLabelList tr.oddSelected:hover td, -table.prefUserList tr.even:hover td, -table.prefUserList tr.odd:hover td, -table.prefUserList tr.evenSelected:hover td, -table.prefUserList tr.oddSelected:hover td, -table.prefFeedList tr.even:hover td, -table.prefFeedList tr.odd:hover td, -table.prefFeedList tr.evenSelected:hover td, -table.prefFeedList tr.oddSelected:hover td -{ - color : #b077ec; -} - -table.headlinesList tr.feedTitle td a, div.cdmFeedTitle a { - color : gray; -} - -table.headlinesList tr.feedTitle td { - background : #efefef; -} - -tr.title td { - color : gray; - font-weight : bold; - border-color : #202020; -} - -tr.title td a { - color : gray; -} - -tr.title td a:hover { - color : #b077ec; -} - -table.prefFeedList td.feedEditCat { - border-color : #202020; - color : #f0f0f0; -} - -table.prefFilterList td.filterEditCat { - border-color : #202020; - color : #f0f0f0; -} - -ul.browseFeedList, ul.userFeedList { - border : 1px solid #404040; - background : #303030; -} - -div.prefFeedCatHolder { - border : 1px solid #404040; - background-color : #303030; -} - -#debug_output { - background-color : #202020; - border : 1px solid #b077ec; - color : gray; -} - -span.debugTS { - color : #b077ec; -} - -div.cdmArticle { - border-color : #202020; - background : #404040; - color : gray; -} - -div.cdmArticleUnread { - border-color : #202020; - background : #404040; - color : gray; -} - -div.cdmArticleUnread div.cdmHeader { - background : transparent; - background-repeat : repeat-x; - color : gray; -} - -div.cdmArticleUnread div.cdmHeader span.titleWrap a { - color : white; -} - -div.cdmArticleUnreadSelected div.cdmHeader span.titleWrap a { - color : white; -} - -div.cdmArticleSelected, div.cdmArticleUnreadSelected { - border-color : #404040; - background : #3c2c4c; - color : gray; -} - -div.cdmArticleSelected div.cdmFooter, div.cdmArticleUnreadSelected div.cdmFooter { - background : gray; -} - -div.cdmArticleUnread div.cdmHeader a.title, -div.cdmArticleUnreadSelected div.cdmHeader a.title { - color : gray; -} - -div.cdmHeader a.title { - color : gray; -} - -div.cdmHeader a:hover { - color : #3c2c4c; -} - -div.cdmFooter { - background : #303030; - color : gray; -} - -div.cdmContent a { - color : #b077ec; -} - -div.cdmContent a:hover { - color : #3c2c4c; -} - -::-moz-selection { - background : #3c2c4c; - color : white; -} - -::selection { - background : #3c2c4c; - color : white; -} - -code::-moz-selection { - background: #3c2c4c; -} - -code::selection { - background: #3c2c4c; -} - -div.whiteBox { - color : gray; - background : #202020; -} - -table.prefPrefsList tr:hover td.prefValue { - color : #b077ec; -} - -table.prefPrefsList tr:hover td.prefValue input { - color : #b077ec; -} - -span.groupPrompt { - color : #b077ec; -} - -div.labelColorIndicator { - border-color : #202020; -} - -div.colorPicker div.colorPickerEntry:hover { - border : 1px solid #b077ec; -} - -div.colorPicker div.ccPrompt:hover { - color : #b077ec; -} - -div.colorPicker div.colorPickerEntry { - border : 1px solid #202020; -} - -div.colorPicker { - border : 1px solid #202020; - background : #404040; - color : gray; -} - -ul.feedErrorsList { - border : 1px solid #404040; - background-color : #303030; -} - diff --git a/themes/neon/theme.ini b/themes/neon/theme.ini deleted file mode 100644 index 36cb86a47a..0000000000 --- a/themes/neon/theme.ini +++ /dev/null @@ -1,4 +0,0 @@ -[theme] -name=Neon -version=1.0 -options=hide_footer,collapse_feedlist diff --git a/themes/neutral/images/button.png b/themes/neutral/images/button.png deleted file mode 100644 index 525ab1ef75..0000000000 Binary files a/themes/neutral/images/button.png and /dev/null differ diff --git a/themes/neutral/images/button_pressed.png b/themes/neutral/images/button_pressed.png deleted file mode 100644 index 212c77879d..0000000000 Binary files a/themes/neutral/images/button_pressed.png and /dev/null differ diff --git a/themes/neutral/images/fresh_sign.png b/themes/neutral/images/fresh_sign.png deleted file mode 100755 index 936ced198f..0000000000 Binary files a/themes/neutral/images/fresh_sign.png and /dev/null differ diff --git a/themes/neutral/images/prefs_tab.png b/themes/neutral/images/prefs_tab.png deleted file mode 100644 index f6c538729c..0000000000 Binary files a/themes/neutral/images/prefs_tab.png and /dev/null differ diff --git a/themes/neutral/images/resize_handle_horiz.png b/themes/neutral/images/resize_handle_horiz.png deleted file mode 100644 index a2e347e3d0..0000000000 Binary files a/themes/neutral/images/resize_handle_horiz.png and /dev/null differ diff --git a/themes/neutral/images/score_half_high.png b/themes/neutral/images/score_half_high.png deleted file mode 100644 index c0626a36b2..0000000000 Binary files a/themes/neutral/images/score_half_high.png and /dev/null differ diff --git a/themes/neutral/images/score_high.png b/themes/neutral/images/score_high.png deleted file mode 100644 index 3b3d472faf..0000000000 Binary files a/themes/neutral/images/score_high.png and /dev/null differ diff --git a/themes/neutral/images/subtoolbar.png b/themes/neutral/images/subtoolbar.png deleted file mode 100644 index a3c02e07af..0000000000 Binary files a/themes/neutral/images/subtoolbar.png and /dev/null differ diff --git a/themes/neutral/images/ttrss_logo.png b/themes/neutral/images/ttrss_logo.png deleted file mode 100644 index 0a5ced3d95..0000000000 Binary files a/themes/neutral/images/ttrss_logo.png and /dev/null differ diff --git a/themes/neutral/images/ttrss_logo.svg b/themes/neutral/images/ttrss_logo.svg deleted file mode 100644 index 84f8a6e845..0000000000 --- a/themes/neutral/images/ttrss_logo.svg +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - tiny tiny - rss - - diff --git a/themes/neutral/theme.css b/themes/neutral/theme.css deleted file mode 100644 index 7ea1abb164..0000000000 --- a/themes/neutral/theme.css +++ /dev/null @@ -1,167 +0,0 @@ -body { - background : #f0f0f0; -} - -#toolbar { - background : #f0f0f0; -} - -#feeds-holder { - background : #fafafa; - border-color : #909090; - border-style : solid; -} - -div.headlinesSubToolbar { - background : url("images/subtoolbar.png") top left; -} - -div.headlines_normal { - border-color : #909090; - background : #f0f0f0; -} - -div.headlines_cdm { - border-color : #909090; - background : #f0f0f0; -} - -div#headlinesInnerContainer { - background : #fafafa; -} - -#footer, #prefFooter { - background : #f0f0f0; - color : gray; - border-color : #909090; -} - -div.postReply div.postHeader { - background : #fafafa; - border-color : #909090; -} - -/*div.postReply a { - color : gray; -}*/ - -#resize-grabber { - border-color : #909090; - background : #f0f0f0; -} - -#prefContentOuter { - background : #f0f0f0; - border-color : #909090; -} - -#prefContent { - background : #fafafa; -} - -div.prefsTab:hover { - border-color : #c0c0c0; -} - -div.prefsTab { - border-color : #f0f0f0; -} - -div.prefsTabSelected { - border-color : #909090; - background : url("images/prefs_tab.png"); -} - -tr.title td { - color : gray; - font-weight : bold; - border-color : #c0c0c0; -} - -tr.title td a { - color : gray; -} - -table.prefFeedList td.feedEditCat { - border-color : #c0c0c0; -} - -h3 { - border-color : #c0c0c0; -} - -table.prefFilterList td.filterEditCat { - border-color : #c0c0c0; -} - -#content-frame { - border-color : #909090; -} - -#content-insert { - background : #f0f0f0; -} - -button[disabled], input[disabled], select[disabled], textarea[disabled] { - background : #f0f0f0; - color : gray; -} - -input, select, button { - background : #f0f0f0; - border : 1px solid #c0c0c0; - color : #404040; - padding : 2px 4px 2px 4px; - font-size : 12px; - font-family : "Lucida Grande", "Segoe UI", Tahoma, Arial, sans-serif; -} - -button:active { - background : url("images/button_pressed.png") top left; - background-repeat : repeat-x; -} - -button { - background : url("images/button.png") top left; - background-repeat : repeat-x; -} - -textarea { - background : #f0f0f0; - border : 1px solid #c0c0c0; - color : #gray; -} - -select { - padding : 2px 0px 2px 4px; -} - -div.tagCloudContainer { - border : 1px solid #88b0f0; -} - -div.infoBoxContents a { - color : #5d82c0; -} - - -#infoBoxTitle { - border-color : #88b0f0; - background : #88b0f0; - text-shadow : #5d82c0 0px 1px 0px; -} - - -#infoBox { - border-color : #88b0f0; - background : #ecf4ff; -} - -ul.browseFeedList, ul.userFeedList { - border : 1px solid #88b0f0; -} - -div.prefFeedCatHolder { - border : 1px solid #88b0f0; -} - diff --git a/themes/neutral/theme.ini b/themes/neutral/theme.ini deleted file mode 100644 index 0ed8400506..0000000000 --- a/themes/neutral/theme.ini +++ /dev/null @@ -1,4 +0,0 @@ -[theme] -name=Neutral -version=1.0 -options=hide_footer,collapse_feedlist diff --git a/themes/night.css b/themes/night.css new file mode 100644 index 0000000000..78b73f09ae --- /dev/null +++ b/themes/night.css @@ -0,0 +1,193 @@ +@import "default.css"; + +body#ttrssMain #feeds-holder { + background : #222; + border-color : #666; + border-left-width : 1px; +} + +body#ttrssMain #headlines-frame { + border-color : #ddd; +} + +body#ttrssMain div.whiteBox { + border-color : #666; +} + +body#ttrssMain #content-insert { + background : #333; +} + +body#ttrssMain #feedTree .dijitTreeRow { + color : #ccc; +} + +body#ttrssMain.claro .dijitTree .dijitTreeRowHover { + background : #444; + border-color : #666; +} + +body#ttrssMain.claro .dijitTree .dijitTreeRowSelected { + background : #555; + border-color : #666; +} + +body#ttrssMain.claro .dijitTreeRowSelected .dijitTreeLabel { + text-shadow : none; +} + +body#ttrssMain #feedTree .counterNode.aux { + background : #555; + color : #999; + border-color : #333; +} + +body#ttrssMain #feedTree .counterNode { + border : 1px solid #6280AD; + color : white; + background : #6280AD; +} + +body#ttrssMain #headlines-frame { + background : #333; + color : #ccc; +} + +body#ttrssMain #main-toolbar { + background : #333; + border-color : #666; +} + +body#ttrssMain #main-toolbar .dijitButtonText { + color : #ddd; +} + +body#ttrssMain #main-toolbar .dijitSelect { + border-color : #666; +} + + +body#ttrssMain #main, +body#ttrssMain #overlay { + background : #333; + color : #ccc; +} + +body#ttrssMain .hlFeed a { + color : white; +} + +body#ttrssMain div.cdm.expanded div.cdmFooter, +body#ttrssMain div.cdm.expandable div.cdmFooter { + border-color : #666; + color : #ccc; +} + +body#ttrssMain div.cdm.expandable.Selected { + background : #6280AD; +} + +body#ttrssMain div.cdm.expanded.Unread div.cdmHeader a.title, +body#ttrssMain div.cdm.expandable.Unread a.title { + color : #ccc; +} + +body#ttrssMain div.cdm.expanded div.cdmHeader a.title, +body#ttrssMain div.cdm.expandable a.title { + color : #aaa; +} + +body#ttrssMain .cdm.expandable.active, +body#ttrssMain .cdm.expandable { + border-color : #666; + background : transparent; +} + +body#ttrssMain .cdm.active { + background : transparent ! important; +} + +body#ttrssMain .cdm .cdmContentInner, +body#ttrssMain .cdm .titleWrap { + color : #bbb; +} + +#content-insert blockquote, #headlines-frame blockquote, .dijitContentPane blockquote { + color : #999; + border-color : #666; +} + +#content-insert code, #headlines-frame code, .dijitContentPane code { + color : #009900; +} + +#content-insert pre, #headlines-frame pre, .dijitContentPane pre { + color : #999; + background : black; +} + +body#ttrssMain .dijitInputField.dijitButtonText { + background : #333; +} + +body#ttrssMain .cdm .cdmContentInner img, +body#ttrssMain .cdm img.tinyFeedIcon, +body#ttrssMain .cdm .cdmFooter img, +body#ttrssMain #feedTree img, +body#ttrssMain .postContent img { + filter: grayscale(1); + -webkit-filter: grayscale(1); + filter: url("data:image/svg+xml;utf8,#grayscale"); // firefox lol +} + +body#ttrssMain .hl img.hlScorePic { + opacity : 0.5; +} + +body#ttrssMain .cdm .cdmFooter img { + opacity : 0.6; +} + +body#ttrssMain #floatingTitle { + background : #333; + border-color : #666; +} + +body#ttrssMain #floatingTitle a.title { + color : #ccc; +} + +body#ttrssMain .dijitMenu, +body#ttrssMain .dijitMenuTable, +body#ttrssMain .dijitSelectMenu .dijitMenuItem td { + border-color : #666; + background : #666; +} + +body#ttrssMain .dijitMenu .dijitMenuItem.dijitHover, +body#ttrssMain .dijitMenu .dijitMenuItem.dijitFocused, +body#ttrssMain .dijitMenuTable .dijitMenuItem.dijitHover .dijitMenuItemLabel, +body#ttrssMain .dijitMenuTable .dijitMenuItem.dijitFocused .dijitMenuItemLabel { + background : black; + color : white; +} + +body#ttrssMain .hl { + border-color : #666; +} + +body#ttrssMain .hl .hlTitle a { + color : #ccc; +} + +body#ttrssMain .hl.Selected, +body#ttrssMain .hl.active { + background : #6280AD ! important; +} + +body#ttrssMain .postHeader { + background : #333; + border-color : #666; +} + + diff --git a/themes/triple-pane/images/resize_handle_horiz.png b/themes/triple-pane/images/resize_handle_horiz.png deleted file mode 100644 index 18d045159b..0000000000 Binary files a/themes/triple-pane/images/resize_handle_horiz.png and /dev/null differ diff --git a/themes/triple-pane/images/resize_handle_vert.png b/themes/triple-pane/images/resize_handle_vert.png deleted file mode 100644 index 18d045159b..0000000000 Binary files a/themes/triple-pane/images/resize_handle_vert.png and /dev/null differ diff --git a/themes/triple-pane/images/resize_vert.png b/themes/triple-pane/images/resize_vert.png deleted file mode 100644 index 763d42b56b..0000000000 Binary files a/themes/triple-pane/images/resize_vert.png and /dev/null differ diff --git a/themes/triple-pane/theme.css b/themes/triple-pane/theme.css deleted file mode 100644 index 4a188a57f4..0000000000 --- a/themes/triple-pane/theme.css +++ /dev/null @@ -1,83 +0,0 @@ -div.headlines_normal { - position : absolute; - border-width : 1px 1px 0px 0px; - right : 400px; - overflow : hidden; - bottom : 0px; - height : auto; -} - -#content-frame { - width : 400px; - right : 0px; - top : 0px; - left : auto; - border-width : 0px 0px 0px 1px; - bottom : 0px; -} - -#feeds-frame, #dispSwitch { - padding-top : 30px; -} - -#feeds-holder { - top : 0px; - border-width : 0px 1px 0px 0px; -} - -#toolbar { - top : 3px; -} - -#headlines-frame { - top : 30px; -} - -div.postHeader div.postDate { - text-align : left; - color : gray; - float : none; -} - -div.postHeader div.postDateRTL { - text-align : left; - color : gray; - float : none; -} - -span.headlineInnerTitle { - display : none; -} - -#resize-grabber { - height : 100%; - width : 5px; - border-width : 0px 1px 0px 0px; - cursor : move; - text-align : center; - float : left; - background : url("images/resize_vert.png") top left; -} - -#content-insert { - position : absolute; - left : 6px; - right : 0px; - bottom : 0px; - top : 0px; - -} - - -/*#footer, #prefFooter { - display : none; -} - -#header, #prefHeader { - display : none; -} - - -#prefContent { - bottom : 0px; -} */ diff --git a/themes/triple-pane/theme.ini b/themes/triple-pane/theme.ini deleted file mode 100644 index 5e9feb9c3c..0000000000 --- a/themes/triple-pane/theme.ini +++ /dev/null @@ -1,5 +0,0 @@ -[theme] -name=Triple-Pane -author=seeker -version=1.0 -options=horiz_resize,hide_footer diff --git a/tt-rss.css b/tt-rss.css deleted file mode 100644 index 809c540846..0000000000 --- a/tt-rss.css +++ /dev/null @@ -1,2125 +0,0 @@ -body { - background : white; - color : black; - margin : 0px; - padding : 0px; - font-family : "Lucida Grande", Arial, sans-serif; -} - -blockquote { - margin : 0px; - border-width : 0px 0px 0px 8px; - border-color : #e0e0e0; - border-style : solid; - padding : 10px; - background-color : #f0f0f0; -} - -div.postReply { - padding : 0px; -} - -div.postReply a { - color : #4684ff; -} - -div.postReply a:hover { - color : black; -} - -div.postReply div.postHeader { - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #a0a0a0; - background-color : #f9faff; - margin : 0px 1px 0px 0px; - padding : 5px; - cursor : move; - color : #909090; -} - -div.postReply div.postContent { - padding : 10px; - font-size : 12px; -} - -div.postReply div.postContent img { - border-width : 0px; - max-width : 98%; -} - -div.postReply div.postIcon { - float : right; - border : 0px; - margin : 10px 0px 10px 10px; -} - -div.postReply div.postEnclosures { - margin-top : 1em; - color : gray; -} - -div.postReply img.tagsPic { - width : 16px; - height : 16px; - margin-left : 4px; - vertical-align : middle; -} - -div.articleNote div.articleNoteOps { - text-align : center; - color : #9a8c59; - font-style : italic; - margin-top : 5px; -} - -div.articleNote div.articleNoteOps a { - color : #9a8c59; -} - -div.articleNote div.articleNoteOps a:hover { - color : black; -} - -div.articleNote { - background-color : #fff7d5; - border-width : 1px; - padding : 5px; - border-style : dashed; - border-color : #e7d796; - font-size : 8px; - margin-bottom : 5px; - margin-top : 5px; - margin-left : 5px; - float : right; - color : #9a8c59; - max-width : 150px; - text-align : justify; -} - -div.postReply span.author { - font-size : 12px; -} - -ul.feedList span.feedlink:hover { - cursor : pointer; - color : #4684ff; -} - - -ul.feedList img.hlLoading { - margin-left : 5px; - vertical-align : middle; - height : 10px; -} - -ul.feedList { - list-style-type : none; - margin : 5px 5px 5px 0px; - padding : 0px 0px 0px 5px; - font-size : 12px; -} - -ul.feedList li.feedCat, ul.feedList li.virtCat { - margin : 0px; - padding : 3px 0px 3px 0px; - color : #707070; - font-size : 12px; -} - -ul.feedList img.catCollapse { - cursor : pointer; -} - -ul.feedList span.catTitle { - color : #707070; - cursor : pointer; -} - -ul.feedList span.catTitle:hover { - color : #4684ff; -} - -ul.feedList li.feedCatSelected { - margin : 0px; - padding : 3px 0px 3px 0px; - color : #4684ff; - font-size : 12px; -} - -ul.feedList li.feedCatSelected span.catTitle { - color : #4684ff; - cursor : pointer; -} - -ul.feedCatList { - list-style-type : none; - margin : 0px 0px 0px 20px; - padding : 0px; -} - -ul.feedCatList li { - margin : 0px; - padding : 0px 0px 2px 0px; - color : black; -} - -ul.feedList > li { - padding : 0px 0px 2px 0px; -} - -ul.feedCatList img, ul.feedList img { - vertical-align : bottom; -} - -li.feedUnread, -li.errorUnread, -li.labelUnread, -li.virtUnread, -li.tagUnread { - font-weight : bold; -} - -li.errorSelected span.feedlink, -li.error span.feedlink, -li.errorUnread span.feedlink, -li.errorUnreadSelected span.feedlink { - color : #f04040; -} - -li.feedSelected span.feedlink, -li.labelSelected span.feedlink, -li.virtSelected span.feedlink, -li.tagSelected span.feedlink { - color : #4684ff; -} - -li.feedUnreadSelected span.feedlink, -li.labelUnreadSelected span.feedlink, -li.virtUnreadSelected span.feedlink, -li.tagUnreadSelected span.feedlink { - color : #4684ff; -} - -li.feedUnreadSelected, -li.errorUnreadSelected, -li.labelUnreadSelected, -li.virtUnreadSelected, -li.tagUnreadSelected { - font-weight : bold; -} - -li.feed { - display : block; -} - -ul.feedList img, img.tinyFeedIcon { - margin : 0px 3px 0px 0px; - width : 16px; - height : 16px; - vertical-align : middle; - border-width : 0px; -} - -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 : dashed; - border-color : #e0e0e0; -} - -a { - color : black; - text-decoration : none; -} - -a:hover { - color : #4684ff; -} - -#piggie { - z-index : 999; - position : absolute; -} - -textarea.iedit { - width : 100%; -} - -input.iedit { - width : 100%; - padding-left : 2px; -} - -select.iedit { - width : 100%; -} - -input.editbox { - width : 200px; - padding-left : 2px; -} - -#notify { - border-width : 0px 1px 1px 1px; - border-style : solid; - top : 0px; - right : 35%; - min-width : 30%; - position : absolute; - display : none; - float : right; - font-size : 12px; - z-index : 998; - padding : 5px 5px 5px 5px; -} - -#notify img { - vertical-align : middle; -} - -.notifyProgress { - border-color : #d7c47a; - background-color : #fff7d5; - color : black; -} - -.notifyInfo { - border-color : #7AD78E; - background-color : #D5FFDB; - color : black; -} - -.notify { - border-color : #d7c47a; - background-color : #fff7d5; - color : black; -} - -.notifyError { - background-color : #ffcccc; - border-color : #ff0000; - color : black; -} - -.notifyError span:hover { - color : red; - cursor : pointer; -} - -#dispSwitch { - font-size : 12px; - font-family : "Lucida Grande", Arial, sans-serif; - text-align : right; - float : right; - margin : 5px 5px 0px 0px; -} - -#dispSwitch a { - color : gray; -} - -#dispSwitch a:hover { - color : #4684ff; -} - -.evenUnreadSelected, .evenSelectedUnread, .evenUnreadSelected td, - .evenSelectedUnread td { - background-color : #fff7d5; - font-weight : bold; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #e7d796; -} - -.oddUnreadSelected, .oddSelectedUnread, .oddUnreadSelected td, - .oddSelectedUnread td { - background-color : #fff7d5; - font-weight : bold; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #e7d796; -} - -.evenSelected, .evenSelected td { - background-color : #fff7d5; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #e7d796; - border-collapse : collapse; -} - -.oddSelected, .oddSelected td { - background-color : #fff7d5; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #e7d796; - border-collapse : collapse; -} - -.evenGrayed, .evenGrayed td { - background-color : #f0f0f0; - color : #909090; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #c0c0c0; - border-collapse : collapse; -} - -.oddGrayed { - color : #909090; -} - -.even, .even td { - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #c0c0c0; - background-color : #f0f0f0; - border-collapse : collapse; -} - -.odd, .odd td { - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #c0c0c0; - border-collapse : collapse; -} - -.evenUnread, .evenUnread td { - background-color : #f0f0f0; - font-weight : bold; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #c0c0c0; - border-collapse : collapse; -} - -.oddUnread, .oddUnread td { - font-weight : bold; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #c0c0c0; -} - -.invisible { - display : none; -} - -/* preferences */ - -table.prefPrefsList tr:hover td.prefValue { - color : #88b0f0; -} - -table.prefPrefsList tr:hover td.prefValue input { - color : #88b0f0; -} - -tr.title td { - border-width : 0px 0px 1px 0px; - border-color : #ecf4ff; - border-style : solid; - color : #4684ff; -} - -tr.title td a { - color : #4684ff; -} - -tr.title td a:hover { - color : black; -} - -table.prefFeedList td.feedEditCat { - font-weight : bold; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #88b0f0; - padding-top : 0.5em; -} - -table.prefFilterList td.filterEditCat { - font-weight : bold; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #88b0f0; - padding-top : 0.5em; -} - -/* oh for the love of... */ - -table.prefFilterList tr.even, -table.prefFilterList tr.odd, -table.prefFilterList tr.evenSelected, -table.prefFilterList tr.oddSelected, -table.prefLabelList tr.even, -table.prefLabelList tr.odd, -table.prefLabelList tr.evenSelected, -table.prefLabelList tr.oddSelected, -table.prefUserList tr.even, -table.prefUserList tr.odd, -table.prefUserList tr.evenSelected, -table.prefUserList tr.oddSelected, -table.prefFeedList tr.even, -table.prefFeedList tr.odd, -table.prefFeedList tr.evenSelected, -table.prefFeedList tr.oddSelected -{ - cursor : pointer; -} - -table.prefFilterList tr.even:hover td, -table.prefFilterList tr.odd:hover td, -table.prefFilterList tr.evenSelected:hover td, -table.prefFilterList tr.oddSelected:hover td -table.prefLabelList tr.even:hover td, -table.prefLabelList tr.odd:hover td, -table.prefLabelList tr.evenSelected:hover td, -table.prefLabelList tr.oddSelected:hover td, -table.prefUserList tr.even:hover td, -table.prefUserList tr.odd:hover td, -table.prefUserList tr.evenSelected:hover td, -table.prefUserList tr.oddSelected:hover td, -table.prefFeedList tr.even:hover td, -table.prefFeedList tr.odd:hover td, -table.prefFeedList tr.evenSelected:hover td, -table.prefFeedList tr.oddSelected:hover td -{ - color : #88b0f0; -} - -table.prefFeedList td.feedIcon { - text-align : center; -} - -table.prefFeedList td.feedSelect { - text-align : center; -} - -div.prefFeedCatHolder { - height : 250px; - overflow : auto; - border : 1px solid #99d67a; - margin : 5px 0px 5px 0px; - background-color : white; -} - -a.helpLink { - color : #808080; -} - -a.helpLink:hover { - color : #4684ff; -} - -#infoBoxTitle { - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #659a4c; - background-color : #99d67a; - padding : 4px 2px 4px 10px; - color : white; - font-weight : bold; - font-size : 16px; - text-shadow : #659a4c 0px 1px 0px; -} - -/* shadow stuff from http://www.sixapart.com/pronet/articles/ydsf_-_robust_c.html */ - -#infoBox { - border-width : 1px 1px 1px 1px; - border-style : solid; - border-color : #659a4c; - background-color : #f8fcf5; - position: relative; - overflow : hidden; - left : -4px; - top : -4px; -} - -div#errorBox { - background-color : #ffcccc; - border : 1px solid #ff0000; - font-size : 12px; - position: relative; - overflow : hidden; - left : -4px; - top : -4px; -} - -html>body #infoBox, html>body #errorBox { - left : -10px; - top : -10px; - margin : 0; -} - -#infoBoxShadow:before, #infoBoxShadow:after, -#errorBoxShadow:before, #errorBoxShadow:after { - content : " "; - display : block; - background : inherit; - width : 10px; - height : 10px; -} - -#infoBoxShadow:before, #errorBoxShadow:before { - position : absolute; - top : 0; - right : 0; - margin : -10px 0 0 auto; - background-position : right top; -} - -#infoBoxShadow:after, #errorBoxShadow:after { - margin : -10px 0 0 -10px; - background-position : left bottom; -} - -#infoBoxShadow, #errorBoxShadow { - background-image : url("images/shadow.png"); - background-position : bottom right; - left : 25%; - top : 50px; - width : 50%; - position : absolute; - min-width : 600px; -} - -#infoBoxShadow { - z-index : 5; -} - -#errorBoxShadow { - z-index : 400; -} - -div.infoBoxContents { - padding : 10px; - margin-bottom : 5px; - font-size : 12px; -} - -div.infoBoxContents td { - font-size : 12px; -} - -div.infoBoxContents a { - color : #527040; -} - -div.infoBoxContents a:hover { - color : black; -} - -pre { - margin : 5px; -} - -input.extSearch { - width : 100%; -} - -div.firstTab { - width : 10px; - float : left; -} - -div.prefsTab:hover { - cursor : pointer; -} - -div.prefsTabSelected:hover { - cursor : pointer; -} - -div.prefsTab { - float : left; - border-width : 1px 1px 0px 1px; - border-color : #C4D1E4; - border-style : solid; - margin : 0px 0px 0px 5px; - padding : 3px 5px 3px 5px; - font-size : 12px; - font-family : "Lucida Grande", "Segoe UI", Tahoma, Arial, sans-serif; - border-collapse : collapse; - min-width : 100px; - text-align : center; - cursor : pointer; - position : relative; - bottom : -1px; - height : 30px; -} - -div.prefsTabSelected { - float : left; - border-width : 1px 1px 0px 1px; - border-color : #88b0f0; - border-style : solid; - margin : 0px 0px 0px 5px; - padding : 3px 5px 3px 5px; - background-color : #ecf4ff; - font-size : 12px; - font-family : "Lucida Grande", "Segoe UI", Tahoma, Arial, sans-serif; - border-collapse : collapse; - font-weight : bold; - min-width : 100px; - text-align : center; - cursor : pointer; - position : relative; - bottom : -1px; - z-index : 3; - height : 30px; -} - -div.notice { - background : #ffffff; - border : 1px solid #88b0f0; - width : 60%; - padding : 5px; - margin : 0px 0px 5px 0px; - font-size : 12px; -} - -div.warning { - background : #fff7d5; - border : 1px solid #d7c47a; - font-size : 12px; - width : 60%; - padding : 5px; - margin : 0px 0px 5px 0px; -} - -div.warning img, div.notice img, div.error img { - vertical-align : middle; - padding : 5px; -} - -span.filterDateError { - color : #ff0000; -} - -div.error { - border : 1px solid #ff0000; - background : #ffcccc; - padding : 5px; - margin : 0px 0px 5px 0px; - font-size : 12px; -} - -ul.nomarks { - list-style-type : none; - margin : 0px; - padding : 10px; -} - -div.prefHelp, td.prefHelp { - color : gray; - padding : 5px; -} - -table.loginForm { - background-color : #ecf4ff; -} - -span.feed_error { - color : red; -} - -.insensitive { - color : gray; -} - -.insensitive a { - color : #4684ff; -} - -.insensitive a:hover { - color : black; -} - -.small { - font-size : 11px; -} - -table.innerFeedTable td { - margin : 0px; - padding : 0px; -} - -td.selectPrompt { - font-size : 12px; - color : gray; -} - -div.headlinesSubToolbar { - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #f0f0f0; - position : absolute; - left : 0px; - top : 0px; - height : 25px; - line-height : 25px; - padding-left : 5px; - padding-right : 5px; - right : 0px; - background-color : white; - font-size : 11px; - font-family : "Lucida Grande", "Segoe UI", Tahoma, Arial, sans-serif; - color : gray; -} - -div.headlinesSubToolbar * { - line-height : normal; -} - - -div.headlinesSubToolbar div#subtoolbar_ftitle { - float : right; - line-height : 25px; - -} - -span.contentPreview { - font-size : 12px; - color : gray; - font-weight : normal; -} - -span.contentPreview:hover { - color : #4684ff; -} - -table.headlinesList { - width : 100%; -} - -table.headlinesList span.hlLabelRef, div.cdmHeader span.hlLabelRef { - background-color : #fff7d5; - font-height : 8px; - color : #063064; - font-weight : normal; - margin : 0px 3px 0px 3px; - padding : 0px 4px 0px 4px; - white-space: nowrap; -} - -table.headlinesList img.hlLoading { - margin-left : 5px; - vertical-align : middle; -} - -table.headlinesList td.hlFeedIcon { - width : 25px; - text-align : center; - cursor : pointer; -} - - -table.headlinesList td.hlMarkedPic { - width : 25px; - text-align : center; -} - -table.headlinesList td.hlfeed { - text-align : right; -} - -td.hlSelectRow, td.hlUpdPic { - width : 25px; - text-align : center; -} - -table.headlinesList td.hlUpdated { - color : gray; - text-align : right; - width : 100px; - cursor : pointer; -} - -table.headlinesList tr td { - padding : 2px 0px 2px 0px; -} - -div.postHeader div.postDate { - text-align : right; - color : gray; - float : right; -} - -div.postHeader div.postDateRTL { - text-align : left; - color : gray; - float : right; -} - -div.postHeader div { - padding-bottom : 3px; - font-size : 12px; - /* font-family : "Lucida Grande", Tahoma, sans-serif; */ -} - -#feedUpdateErrors { - display : none; -} - -#allEntryTags { - font-size : 12px; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #c0c0c0; - padding-bottom : 5px; - display : none; -} - -td.hlMarkedPic, td.hlSelectRow, td.hlUpdated, td.hlFeed { - height : 1em; -} - -td.hlFeed { - text-align : right; -} - -span.hlFeed, span.hlFeed a { - font-size : 12px; - color : gray; -} - -span.hlFeed a:hover { - color : #4684ff; -} - -div.cdmAllTags { - float : left; - background-color : white; - border : 1px solid #c0c0c0; - display : none; - z-index : 3; - top : auto; - left : auto; - right : auto; - position : absolute; - padding : 10px; -} - -span.cdmAllTagsCtr:hover div { - display : block; -} - -div.cdmArticle { - border-color : #c0c0c0; - border-width : 1px; - border-style : solid; - background : white; - margin : 5px 5px 0px 5px; - color : black; -} - -div.cdmArticleUnread { - border-color : #88b0f0; - border-width : 1px; - border-style : solid; - background-color : white; - margin : 5px 5px 0px 5px; - color : black; -} - -div.cdmArticleSelected, div.cdmArticleUnreadSelected { - background-color : #fff7d5; - border-color : #e7d796; - border-width : 1px; - border-style : solid; - margin : 5px 5px 0px 5px; -} - -div.cdmArticleUnread div.cdmHeader a.title, -div.cdmArticleUnreadSelected div.cdmHeader a.title { - font-weight : bold; -} - -div.cdmHeader { - padding : 5px 5px 10px 5px; - color : gray; -} - -div.cdmArticleUnread div.cdmHeader { - background : url("images/footer.png") top left; - background-repeat : repeat-x; -} - -div.cdmArticleUnread div.cdmHeader span.titleWrap a { - color : black; -} - -div.cdmArticleSelected div.cdmFooter, div.cdmArticleUnreadSelected div.cdmFooter { - background : #e7d796; -} - -div.cdmFooter input { - vertical-align : middle; -} - -div.cdmFooter { - font-size : 12px; - color : black; - padding : 5px; - color : gray; - background : #f9f9f9; -/* border-width : 1px 0px 0px 0px; - border-style : solid; - border-color : #88b0f0; */ -} - -div.cdmFooter span.s0 { - border-width : 0px 1px 0px 0px; - border-color : #c0c0c0; - border-style : dotted; - padding : 0px 5px 0px 0px; -} - -div.cdmFooter span.s1 { - border-width : 0px 1px 0px 0px; - border-color : #c0c0c0; - border-style : dotted; - padding : 0px 5px 0px 5px; -} - -div.cdmFooter span.s2 { - padding : 0px 5px 0px 5px; -} - -div.cdmFooter img.markedPic, div.cdmFooter img.tagsPic { - width : 16px; - height : 16px; - vertical-align : middle; -} - -div.cdmHeader div.articleUpdated { - float : right; - font-weight : bold; - color : gray; -} - -div.cdmHeader div.articleUpdated img { - vertical-align : middle; -} - -div.cdmFooter input, div.cdmHeader input, div.cdmFooter img { - margin : 0px; -} - -div.cdmHeader, div.cdmHeader a { - color : #505050; - font-size : 12px; -} - -div.cdmHeader a:hover { - color : #4684ff; -} - -div.cdmContent { - margin : 0px 15px 5px 15px; -} - -div.cdmContent img { - border-width : 0px; - max-width : 98%; -} - -div.cdmContent:hover { - cursor : pointer; -} - -div.cdmExcerpt { - margin : 0px 15px 5px 15px; -} - -div.cdmExcerpt:hover { - cursor : pointer; - color : #88b0f0; -} - -div.cdmEnclosures { - margin-top : 1em; - color : gray; -} - -img.markedPic { - cursor : pointer; -} - -a.warning { - color : #f04040; -} - -img.closeButton { - border-width : 0px; - float : right; -} - -span.groupPrompt { - font-size : 12px; - color : #4684ff; -} - -div.tagCloudContainer { - border : 1px solid #99d67a; - background-color : white; - margin : 5px 0px 5px 0px; - padding : 5px; - text-align : center; -} - -div.errorExplained { - border : 1px solid #99d67a; - background-color : white; - margin : 5px 0px 5px 0px; - padding : 5px; -} - -ul.feedErrorsList { - height : 300px; - overflow : auto; - list-style-type : none; - border : 1px solid #99d67a; - background-color : white; - margin : 0px 0px 5px 0px; - padding : 0px; -} - -ul.userFeedList { - height : 300px; - overflow : auto; - list-style-type : none; - border : 1px solid #99d67a; - background-color : white; - margin : 0px 0px 5px 0px; - padding : 0px; -} - -ul.browseFeedList { - height : 300px; - overflow : auto; - list-style-type : none; - margin : 0px 0px 5px 0px; - padding : 0px; - border : 1px solid #99d67a; - background-color : white; -} - -ul.browseFeedList li { - margin : 0px; - padding : 0px; -} - -span.subscribers { - color : #808080; -} - -div.subscribers { - color : #808080; - font-size : 12px; - float : right; -} - -input.feedBrowseCB { - margin-right : 1em; -} - -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; -} - -div.browserFeedInfo { - font-size : 12px; -/* border : 1px solid #88b0f0; - background-color : #ecf4ff; - -moz-border-radius : 5px; */ - padding : 5px; -} - -div.browserFeedInfo div.detailsPart { - margin : 5px 0px 5px 5px; -} - -div.cdmContent a { - color : #4684ff; -} - -div.cdmContent a:hover { - color : black; -} - -a.cdmToggleLink { - color : #808080; - font-size : 12px; -} - -a.cdmToggleLink:hover { - color : #4684ff; -} - -.noborder { - border-width : 0px; -} - -#debug_output { - position : absolute; - width : 400px; - height : 200px; - right : 20px; - bottom : 20px; - z-index : 999; - background-color : white; - border : 1px solid #c0c0c0; - overflow : auto; - margin : 0px; - padding : 0px; - list-style-type : none; -} - -#debug_output li { - margin : 0px; - padding : 0px; - font-size : 11px; -} - -#dialog_overlay { - left : 0; - top : 0; - height : 100%; - width : 100%; - z-index : 4; - position : absolute; - background-image : url("images/shadow_white.png"); -} - -#overlay { - background : white; - left : 0; - top : 0; - height : 100%; - width : 100%; - z-index : 100; - position : absolute; -} - -#overlay_inner { - font-weight : bold; - margin : 10px; -} - -#noDaemonWarning { - position : absolute; - background-color : #ecf4ff; - border : 1px solid #88b0f0; - padding : 10px; - margin : 5px; - z-index : 2; - display : none; -} - -#qafInput { - width : 100%; -} - -form { - margin : 0px; - padding : 0px; -} - -#main_toolbar_form { - margin : 0px; - padding : 0px; - display : inline; -} - -div.feedExtInfo { - margin-left : 2em; - font-size : 7pt; - color : gray; - font-weight : normal; -} - -span.debugTS { - color : #4684ff; -} - -#backReqBox { - display : none; -} - -/*.scriptWarn:before { - content : "Disabled script:"; -}*/ - -.scriptWarn { - color : white; - background-color : #903030; - border : 1px solid #601010; - padding : 3px; - font-weight : bold; - display : none; -} - -.objectWarn { - color : gray; - font-style: italic; - text-align : center; -} - -table.loginForm2 { - padding : 1em; -} - -table.loginForm2 .loginTop { - border-width : 0px 0px 1px 0px; - border-color : #88b0f0; - border-style : solid; - padding : 0.5em; -} - -table.loginForm2 .loginMiddle { - padding : 3em; -} - -table.loginForm2 .loginBottom { - border-width : 1px 0px 0px 0px; - border-color : #88b0f0; - border-style : solid; - font-size : 12px; - text-align : center; - color : #909090; - padding : 0.5em; -} - -table.loginForm2 .loginBottom a { - color : gray; -} - -table.loginForm2 .loginBottom a:hover { - color : #4684ff; -} - -table.loginForm2 .loginError { - color : red; - margin : 0.5em; -} - -table.loginForm2 .innerLoginCell { - padding-top : 0.5em; -} - -#milestoneDetails { - display : none; -} - -div.loadingPrompt { - padding : 1em; - text-align : center; - font-weight : bold; -} - -div.whiteBox { - background-color : white; - margin-left : 1px; - text-align : center; - padding : 1em; -} - -/* layout */ - -#header { - position : absolute; - white-space: nowrap; - top : 5px; - left : 15px; - right : 5px; - height : 35px; - color : #4684ff; - font-size : 12px; -} - -#feeds-holder { - border-width : 1px 1px 0px 0px; - border-style : solid solid; - border-color : #C4D1E4 #88b0f0; - top : 40px; - left : 0px; - position : absolute; - width : 260px; - overflow : auto; - bottom : 0px; - border-collapse : collapse; -} - -#toolbar div.actionChooser { - margin-right : 5px; - float : right; -} - -#toolbar { - position : absolute; - left : 261px; - padding : 0px 0px 0px 10px; - top : 40px; - right : 0px; - white-space: nowrap; - height : 30px; - background-image : url("images/toolbar.png"); - background-position : bottom left; - background-repeat : repeat-x; - font-size : 12px; -} - -#toolbar input { - vertical-align : middle; -} - -div.headlines_normal { - position : absolute; - border-width : 1px 0px 0px 0px; - border-style : solid; - border-color : #88b0f0; - left : 261px; - height : 305px; - top : 70px; - right : 0px; - overflow : hidden; - font-size : 12px; - border-collapse : collapse; -} - -div.headlines_cdm { - position : absolute; - border-width : 1px 0px 1px 0px; - border-style : solid; - border-color : #88b0f0; - left : 261px; - bottom : 40px; - top : 70px; - right : 0px; - overflow : hidden; - font-size : 12px; - border-collapse : collapse; -} - -#content-frame { - position : absolute; - border-width : 1px 0px 0px 0px; - border-style : solid; - border-color : #88b0f0; - overflow : auto; - top : 390px; - left : 261px; - bottom : 40px; - right : 0px; - border-collapse : collapse; -} - -/*#resize-grabber { - position : absolute; - border-width : 1px; - border-style : dotted; - border-color : #88b0f0; - background-color : white; - width : 8px; - height : 8px; - z-index : 20; - right : 20px; - top : 20px; - display : none; - cursor : move; -}*/ - -#resize-grabber { - height : 5px; - border-width : 0px 0px 1px 0px; - border-style : solid; - border-color : #88b0f0; - background : url("images/resize_horiz.png") top left; - cursor : move; - text-align : center; -} - -#footer, #prefFooter { - position : absolute; - bottom : 0px; - height : 20px; - text-align : center; - color : gray; - font-size : 12px; - background-image : url("images/footer.png"); - background-position : top left; - background-repeat : repeat-x; - background-color : white; - right : 0px; - left : 261px; - padding : 10px; - border-collapse : collapse; - border-width : 1px 0px 0px 0px; - border-style : solid; - border-color : #88b0f0; - -} - -#prefFooter { - left : 0px; -} - -#footer a, #prefFooter a { - color : gray; -} - -#footer a:hover, #prefFooter a:hover { - color : black; -} - -#headlinesContainer { - margin-left : 0px; - background-color : white; -} - -#headlineActionsTop { - font-size : 12px; -} - -#headlinesInnerContainer { - overflow : auto; - position : absolute; - left : 0px; - right : 0px; - bottom : 0px; - top : 25px; -} - -/* preferences layout */ - -#prefHeader { - color : #4684ff; - font-size : 12px; - margin : 10px; - height : 33px; -} - -div.return { - float : right; - font-size : 12px; - margin-right : 10px; -} - -div.return a { - color : #4684ff; -} - -div.return a:hover { - color : black; -} - -#prefContentOuter { - clear : left; - position : absolute; - bottom : 41px; - top : 75px; - left : 0px; - right : 0px; - min-height : 300px; - border-width : 1px 0px 0px 0px; - border-color : #88b0f0; - border-style : solid; - font-size : 12px; -} - -#prefContent { - z-index : 4; - background-image : url("images/prefs-content.png"); - background-position : top left; - background-repeat : repeat-x; - position : absolute; - bottom : 0px; - top : 0px; - left : 0px; - right : 0px; - padding : 1em; - overflow : auto; - -} - -#userSwitch { - position : absolute; - bottom : 2px; - right : 2px; -} - -.catCtrHasUnread, .feedCtrHasUnread { - font-weight : bold; - color : #707070; -} - -.catCtrNoUnread, .feedCtrNoUnread { - display : none; -} - -div.topLinks img { - vertical-align : middle; - cursor : pointer; -} - -#offlineModePic { - margin-left : 5px; -} - -a.helpLinkPic img { - border-width : 0px; - vertical-align : middle; -} - -li.feedCatHolder { - display : inline; -} - -table.prefFeedCatList { - background-color : white; -} - -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; -} - -#feedOpToolbar { - float : right; -} - -div.topLinks { - float : right; - color : gray; - font-size : 12px; -} - -div.topLinks a { - color : #4684ff; -} - -div.topLinks a:hover { - color : black; -} - -div.topLinks a.feedback { - color : #009900; -} - -a.visibleLink { - color : #4684ff; -} - -a.visibleLinkB { - color : #4684ff; - border : 1px solid #4684ff; - padding : 2px; -} - -a.visibleLinkB:hover { - background-color : #ecf4ff; -} - -table.headlinesList tr.feedTitle td a, div.cdmFeedTitle a { - color : #4684ff; -} - -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; -} - -table.headlinesList tr, table.headlinesList td { - border-collapse : collapse; - margin : 0px; -} - -table.headlinesList tr.feedTitle td { -/* text-align : right; - margin-top : 10px; */ - /*padding-left : 5px;*/ - - background : url("images/toolbar.png") bottom left; - background-repeat : repeat-x; - - border-color : #c0c0c0; - border-width : 0px 0px 1px 0px; - border-style : solid; - padding : 5px 3px 5px 5px; - -} - -td.hlContent, td.hlContentL, td.hlContentH { - cursor : pointer; -} - -td.hlContentH a, td.hlContentH span { - color : #00cc00; -} - -td.hlContentL a, td.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#hotkey_help_overlay { - position : absolute; - left : 30px; - right : 30px; - top : 30px; - z-index : 999; - color : white; - font-size : 15px; -} - -div#hotkey_help_overlay h1 { - text-align : center; -} - -div#hotkey_help_overlay ul { - list-style-type : none; - margin : 0px; -} - -div#hotkey_help_overlay li { - margin : 0px; -} - -div#hotkey_help_overlay p { - text-align : center; -} - -div#hotkey_help_overlay td.n { - text-align : right; - font-weight : bold; - width : 6em; - color : #a0ffa0; - padding-right : 5px; -} - -div#hotkey_help_overlay td { - vertical-align : top; -} - -div#hotkey_help_overlay h1 { - margin : 0px; -} - -div#hotkey_help_overlay h2 { - font-size : 16px; - border-width : 0px; - margin : 0.3em 0px 0.3em 0px; - text-align : center; - color : #88b0f0; -} - -div#hotkey_help_overlay table.hho td.c1 { - height : 30px; - width : 30px; - background : url("images/c1.png"); - background-repeat : no-repeat; - -} - -div#hotkey_help_overlay table.hho td.c2 { - height : 30px; - width : 30px; - background : url("images/c2.png"); - background-repeat : no-repeat; -} - -div#hotkey_help_overlay table.hho td.c3 { - height : 30px; - width : 30px; - background : url("images/c3.png"); - background-repeat : no-repeat; -} - -div#hotkey_help_overlay table.hho td.c4 { - height : 30px; - width : 30px; - background : url("images/c4.png"); - background-repeat : no-repeat; -} - -div#hotkey_help_overlay table.hho td.top, -div#hotkey_help_overlay table.hho td.left, -div#hotkey_help_overlay table.hho td.right, -div#hotkey_help_overlay table.hho td.bottom, -div#hotkey_help_overlay table.hho td.content { - background : url("images/shadow_dark.png"); -} - -div#hotkey_help_overlay table.hho td.top, -div#hotkey_help_overlay table.hho td.bottom { - text-align : center; - font-size : 11px; -} - -div.prefKbdHelp { - float : right; - font-size : 12px; - margin-right : 15px; -} - -div.prefKbdHelp img { - vertical-align : middle; -} - -div#l_progress_o { - width : 200px; - border : 1px solid black; - background-color : white; - margin-top : 10px; -} - -div#l_progress_i { - width : 10px; - background-color : #88b0f0; - height : 10px; -} - -#content-insert { - background-color : white; - overflow : auto; - position : absolute; - left : 0px; - right : 0px; - bottom : 0px; - top : 6px; -} - -div.dlgSec { - font-size : 12px; - color : gray; - font-weight : bold; - clear : both; - height : 20px; -} - -div.dlgSecCont { - position : relative; - left : 150px; - top : -20px; - float : left; - font-size : 12px; - font-weight : normal; - line-height : 200%; -} - -div.dlgButtons { - text-align : right; - clear : both; -} - -pre, code { - font-size : 12px; - font-family : monospace; -} - -span#headlineActionsDrop { - border : 1px solid #c0c0c0; - padding : 1px 5px 1px 10px; - color : #063064; - cursor : pointer; -} - -ul#headlineActionsBody { - list-style-type : none; - position : absolute; - margin : 0px; - padding : 0px; - background-color : white; - width : 150px; - z-index : 4; - top : auto; - left : auto; - border-width : 1px 1px 1px 1px; - border-color : #c0c0c0; - border-style : solid; - margin-left : -1px; - max-height : 250px; - overflow : auto; -} - -ul#headlineActionsBody li { - padding : 2px 5px 2px 10px; - color : black; -} - -ul#headlineActionsBody li:hover { - color : #4684ff; - cursor : pointer; - background : #ecf4ff; -} - -ul#headlineActionsBody li.insensitive { - color : gray; -} - -ul#headlineActionsBody li.insensitive:hover { - background : white; - cursor : normal; - color : gray; -} - -div#errorBox div#xebTitle { - background-color : #ff0000; - color : white; - padding : 4px 2px 4px 10px; - color : white; - font-weight : bold; - font-size : 12px; -} - -div#errorBox div#xebContent { - font-size : 12px; - padding : 10px; -} - -div#errorBox textarea { - width : 100%; - height : 200px; -} - -div#errorBox input { - margin-bottom : 10px; -} - -span.prefsLabelEntry { - padding : 2px; -} - -div.labelColorIndicator { - height : 14px; - width : 14px; - line-height : 14px; - font-height : 9px; - text-align : center; - border : 1px solid black; - float : left; - background-color : #fff7d5; - color : #063064; - margin-right : 10px; -} - -div.colorPicker div.colorPickerEntry:hover { - border : 1px solid #88b0f0; -} - -div.colorPicker div.ccPrompt:hover { - color : black; -} - -div.colorPicker div.colorPickerEntry { - height : 15px; - width : 15px; - line-height : 13px; - font-height : 9px; - text-align : center; - border : 1px solid black; - margin : 5px 5px 0px 0px; - float : left; -} - -div.colorPicker { - border : 1px solid #cccccc; - background : #f0f0f0; - width : 110px; - padding : 0px 0px 5px 5px; - position : absolute; - left : auto; - top : auto; - z-index : 3; - color : #909090; -} - -div#offlineModeDrop div { - padding : 2px 2px 2px 2px; - text-align : left; -} - -div#offlineModeDrop { - position : absolute; - margin : 0px; - padding : 2px; - background-color : white; - z-index : 2; - margin : 2px 0px 0px 0px; - top : auto; - right : 0px; - border : 1px solid #cccccc; - background : white; - min-width : 170px; - margin-left : -1px; - max-height : 250px; - overflow : auto; - color : #909090; -} - -optgroup { - color : #4684ff; - font-style : normal; -} - -option { - color : black; -} - -div#cmdline { - position : absolute; - left : 5px; - bottom : 5px; - font-size : 11px; - color : gray; - 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#auxDlg { - position : absolute; - z-index : 3; - bottom : 5px; - right : 25px; - padding : 5px; - border-width : 1px; - border-style : solid; - border-color : #d7c47a; - background-color : #fff7d5; - color : black; - text-align : center; - font-size : 13px; -} - -div#auxDlg a { - color : #4684ff; -} - -/* -button:active { - background-image : url("images/button_pressed.png"); -} - -button, select { - background-color : transparent; - background-repeat : repeat-x; - background-position : top left; - background-image : url("images/button.png"); - border : 1px solid #bebebe; - font-family : "Lucida Grande", Tahoma, Arial, Verdana, sans-serif; - font-size : 100%; - text-decoration : none; - color : #303030; - cursor : pointer; - padding : 1px 5px 1px 5px; - margin : 0px; -} - -select { - background : #ffffff; - padding : 1px 0px 1px 3px; -} - -input { - background : white; - border : 1px solid #bebebe; - font-size : 100%; - padding : 1px 3px 1px 3px; -} - -button:hover { - background-color : #f9faff; - border : 1px solid #88b0f0; - color : #336699; -} - -button[disabled] { - background : #f0f0f0; - color : #dedede; - border : 1px solid #dedede; -} */ diff --git a/tt-rss.js b/tt-rss.js deleted file mode 100644 index 4b463cf3b2..0000000000 --- a/tt-rss.js +++ /dev/null @@ -1,1386 +0,0 @@ - -var total_unread = 0; -var first_run = true; -var display_tags = false; -var global_unread = -1; -var active_title_text = ""; -var current_subtitle = ""; -var daemon_enabled = false; -var daemon_refresh_only = false; -//var _qfd_deleted_feed = 0; -var firsttime_update = true; -var _active_feed_id = 0; -var _active_feed_is_cat = false; -var number_of_feeds = 0; -var sanity_check_done = false; -var _hfd_scrolltop = 0; -var hotkey_prefix = false; -var hotkey_prefix_pressed = false; -var init_params = new Object(); -var ver_offset = 0; -var hor_offset = 0; -var feeds_sort_by_unread = false; -var feedlist_sortable_enabled = false; - -function activeFeedIsCat() { - return _active_feed_is_cat; -} - -function getActiveFeedId() { - try { - debug("gAFID: " + _active_feed_id); - return _active_feed_id; - } catch (e) { - exception_error("getActiveFeedId", e); - } -} - -function setActiveFeedId(id, is_cat) { - try { - debug("sAFID(" + id + ", " + is_cat + ")"); - _active_feed_id = id; - - if (is_cat != undefined) { - _active_feed_is_cat = is_cat; - } - - } catch (e) { - exception_error("setActiveFeedId", e); - } -} - - -function isFeedlistSortable() { - return feedlist_sortable_enabled; -} - -function tagsAreDisplayed() { - return display_tags; -} - -function toggleTags(show_all) { - - try { - - debug("toggleTags: " + show_all + "; " + display_tags); - - var p = $("dispSwitchPrompt"); - - if (!show_all && !display_tags) { - displayDlg("printTagCloud"); - } else if (show_all) { - closeInfoBox(); - display_tags = true; - p.innerHTML = __("display feeds"); - notify_progress("Loading, please wait...", true); - updateFeedList(); - } else if (display_tags) { - display_tags = false; - p.innerHTML = __("tag cloud"); - notify_progress("Loading, please wait...", true); - updateFeedList(); - } - - } catch (e) { - exception_error("toggleTags", e); - } -} - -function dlg_frefresh_callback(transport, deleted_feed) { - if (getActiveFeedId() == deleted_feed) { - var h = $("headlines-frame"); - if (h) { - h.innerHTML = "
      " + __('No feed selected.') + "
      "; - } - } - - setTimeout('updateFeedList(false, false)', 50); - closeInfoBox(); -} - -function backend_sanity_check_callback(transport) { - - try { - - if (sanity_check_done) { - fatalError(11, "Sanity check request received twice. This can indicate "+ - "presence of Firebug or some other disrupting extension. "+ - "Please disable it and try again."); - return; - } - - if (!transport.responseXML) { - if (!store) { - fatalError(3, "Sanity check: Received reply is not XML", - transport.responseText); - return; - } else { - init_offline(); - return; - } - } - - if (getURLParam("offline")) { - return init_offline(); - } - - var reply = transport.responseXML.firstChild.firstChild; - - if (!reply) { - fatalError(3, "Sanity check: invalid RPC reply", transport.responseText); - return; - } - - var error_code = reply.getAttribute("error-code"); - - if (error_code && error_code != 0) { - return fatalError(error_code, reply.getAttribute("error-msg")); - } - - debug("sanity check ok"); - - var params = reply.nextSibling; - - if (params) { - debug('reading init-params...'); - var param = params.firstChild; - - while (param) { - var k = param.getAttribute("key"); - var v = param.getAttribute("value"); - debug(k + " => " + v); - init_params[k] = v; - - if (db) { - db.execute("DELETE FROM init_params WHERE key = ?", [k]); - db.execute("INSERT INTO init_params (key,value) VALUES (?, ?)", - [k, v]); - } - - param = param.nextSibling; - } - } - - sanity_check_done = true; - - init_second_stage(); - - } catch (e) { - exception_error("backend_sanity_check_callback", e, transport); - } -} - -function scheduleFeedUpdate(force) { - - debug("in scheduleFeedUpdate"); - -/* if (!daemon_enabled && !daemon_refresh_only) { - notify_progress("Updating feeds...", true); - } */ - - var query_str = "backend.php?op=rpc&subop="; - - if (force) { - query_str = query_str + "forceUpdateAllFeeds"; - } else { - query_str = query_str + "updateAllFeeds"; - } - - var omode; - - if (firsttime_update && !navigator.userAgent.match("Opera")) { - firsttime_update = false; - omode = "T"; - } else { - if (display_tags) { - omode = "tl"; - } else { - omode = "flc"; - } - } - - query_str = query_str + "&omode=" + omode; - query_str = query_str + "&uctr=" + global_unread; - - debug("REFETCH query: " + query_str); - - new Ajax.Request("backend.php", { - parameters: query_str, - onComplete: function(transport) { - parse_counters_reply(transport, true); - } }); -} - -function updateFeedList(silent, fetch) { - -// if (silent != true) { -// notify("Loading feed list..."); -// } - - debug("updateFeedList"); - - if (offline_mode) return render_offline_feedlist(); - - var query_str = "backend.php?op=feeds"; - - if (display_tags) { - query_str = query_str + "&tags=1"; - } - - if (getActiveFeedId() && !activeFeedIsCat()) { - query_str = query_str + "&actid=" + getActiveFeedId(); - } - - if (fetch) query_str = query_str + "&fetch=yes"; - -// var feeds_frame = $("feeds-frame"); -// feeds_frame.src = query_str; - - debug("updateFeedList Q=" + query_str); - - new Ajax.Request("backend.php", { - parameters: query_str, - onComplete: function(transport) { - feedlist_callback2(transport); - } }); - -} - -function catchupAllFeeds() { - - var str = __("Mark all articles as read?"); - - if (getInitParam("confirm_feed_catchup") != 1 || confirm(str)) { - - var query_str = "backend.php?op=feeds&subop=catchupAll"; - - notify_progress("Marking all feeds as read..."); - - debug("catchupAllFeeds Q=" + query_str); - - new Ajax.Request("backend.php", { - parameters: query_str, - onComplete: function(transport) { - feedlist_callback2(transport); - } }); - - global_unread = 0; - updateTitle(""); - } -} - -function viewCurrentFeed(subop) { - -// if (getActiveFeedId()) { - if (getActiveFeedId() != undefined) { - viewfeed(getActiveFeedId(), subop, activeFeedIsCat()); - } else { -// viewfeed(-1, subop); // FIXME - } - return false; // block unneeded form submits -} - -function viewfeed(feed, subop) { - var f = window.frames["feeds-frame"]; - f.viewfeed(feed, subop); -} - -function timeout() { - if (getInitParam("bw_limit") == "1") return; - - scheduleFeedUpdate(false); - - var refresh_time = getInitParam("feeds_frame_refresh"); - - if (!refresh_time) refresh_time = 600; - - setTimeout("timeout()", refresh_time*1000); -} - -function resetSearch() { - var searchbox = $("searchbox") - - if (searchbox.value != "" && getActiveFeedId()) { - searchbox.value = ""; - viewfeed(getActiveFeedId(), ""); - } -} - -function search() { - closeInfoBox(); - viewCurrentFeed(0, ""); -} - -// if argument is undefined, current subtitle is not updated -// use blank string to clear subtitle -function updateTitle(s) { - var tmp = "Tiny Tiny RSS"; - - if (s != undefined) { - current_subtitle = s; - } - - if (global_unread > 0) { - tmp = tmp + " (" + global_unread + ")"; - } - - if (current_subtitle) { - tmp = tmp + " - " + current_subtitle; - } - - if (active_title_text.length > 0) { - tmp = tmp + " > " + active_title_text; - } - - if (window.fluid) { - if (global_unread > 0) { - window.fluid.dockBadge = global_unread; - } else { - window.fluid.dockBadge = ""; - } - } - - document.title = tmp; -} - -function genericSanityCheck() { - -// if (!Ajax.getTransport()) fatalError(1); - - setCookie("ttrss_test", "TEST"); - - if (getCookie("ttrss_test") != "TEST") { - fatalError(2); - } - - return true; -} - -function init() { - - try { - - init_gears(); - - Form.disable("main_toolbar_form"); - - if (!genericSanityCheck()) - return; - - if (getURLParam('debug')) { - Element.show("debug_output"); - debug('debug mode activated'); - } - - var params = "&ua=" + param_escape(navigator.userAgent); - - loading_set_progress(30); - - new Ajax.Request("backend.php", { - parameters: "backend.php?op=rpc&subop=sanityCheck" + params, - onComplete: function(transport) { - backend_sanity_check_callback(transport); - } }); - - } catch (e) { - exception_error("init", e); - } -} - -function resize_headlines(delta_x, delta_y) { - - try { - - debug("resize_headlines: " + delta_x + ":" + delta_y); - - var h_frame = $("headlines-frame"); - var c_frame = $("content-frame"); - var f_frame = $("footer"); - var feeds_frame = $("feeds-holder"); - var resize_grab = $("resize-grabber"); - var resize_handle = $("resize-handle"); - - if (!c_frame || !h_frame) return; - - if (feeds_frame && getInitParam("theme") == "old-skool") { - feeds_frame.style.bottom = f_frame.offsetHeight + "px"; - } - - if (getInitParam("theme_options").match("horiz_resize")) { - - if (delta_x != undefined) { - if (c_frame.offsetLeft - delta_x > feeds_frame.offsetWidth + feeds_frame.offsetLeft + 100 && c_frame.offsetWidth + delta_x > 100) { - hor_offset = hor_offset + delta_x; - } - } - - debug("resize_headlines: HOR-mode: " + hor_offset); - - c_frame.style.width = (400 + hor_offset) + "px"; - h_frame.style.right = c_frame.offsetWidth - 1 + "px"; - - resize_grab.style.top = (h_frame.offsetTop + h_frame.offsetHeight - 60) + "px"; - resize_grab.style.left = (h_frame.offsetLeft + h_frame.offsetWidth - - 4) + "px"; - resize_grab.style.display = "block"; - - //resize_handle.src = "themes/"+getInitParam('theme')+"/images/resize_handle_vert.png"; - resize_handle.style.paddingTop = (resize_grab.offsetHeight / 2 - 7) + "px"; - - } else { - - if (delta_y != undefined) { - if (c_frame.offsetHeight + delta_y > 100 && h_frame.offsetHeight - delta_y > 100) { - ver_offset = ver_offset + delta_y; - } - } - - debug("resize_headlines: VER-mode: " + ver_offset); - - h_frame.style.height = (300 - ver_offset) + "px"; - - c_frame.style.top = (h_frame.offsetTop + h_frame.offsetHeight + 0) + "px"; - h_frame.style.height = h_frame.offsetHeight + "px"; - - } - - if (getInitParam("cookie_lifetime") != 0) { - setCookie("ttrss_offset_ver", ver_offset, - getInitParam("cookie_lifetime")); - setCookie("ttrss_offset_hor", hor_offset, - getInitParam("cookie_lifetime")); - } else { - setCookie("ttrss_offset_ver", ver_offset); - setCookie("ttrss_offset_hor", hor_offset); - } - - } catch (e) { - exception_error("resize_headlines", e); - } - -} - -function init_second_stage() { - - try { - - delCookie("ttrss_test"); - -// document.onresize = resize_headlines; - window.onresize=resize_headlines; - - var toolbar = document.forms["main_toolbar_form"]; - - dropboxSelect(toolbar.view_mode, getInitParam("default_view_mode")); - dropboxSelect(toolbar.order_by, getInitParam("default_view_order_by")); - - daemon_enabled = getInitParam("daemon_enabled") == 1; - daemon_refresh_only = getInitParam("daemon_refresh_only") == 1; - feeds_sort_by_unread = getInitParam("feeds_sort_by_unread") == 1; - -/* var fl = cache_find_param("FEEDLIST", getInitParam("num_feeds")); - - if (fl) { - render_feedlist(fl); - if ($("feedList")) { - request_counters(); - } else { - setTimeout('updateFeedList(false, false)', 50); - } - } else { - setTimeout('updateFeedList(false, false)', 50); - } */ - - setTimeout('updateFeedList(false, false)', 50); - - debug("second stage ok"); - - loading_set_progress(60); - - ver_offset = parseInt(getCookie("ttrss_offset_ver")); - hor_offset = parseInt(getCookie("ttrss_offset_hor")); - - debug("got offsets from cookies: ver " + ver_offset + " hor " + hor_offset); - - /* fuck IE */ - - if (isNaN(hor_offset)) hor_offset = 0; - if (isNaN(ver_offset)) ver_offset = 0; - - debug("offsets from cookies [x:y]: " + hor_offset + ":" + ver_offset); - - resize_headlines(); - - enable_offline_reading(); - - } catch (e) { - exception_error("init_second_stage", e); - } -} - -function quickMenuChange() { - var chooser = $("quickMenuChooser"); - var opid = chooser[chooser.selectedIndex].value; - - chooser.selectedIndex = 0; - quickMenuGo(opid); -} - -function quickMenuGo(opid) { - try { - - if (opid == "qmcPrefs") { - gotoPreferences(); - } - - if (opid == "qmcSearch") { - displayDlg("search", getActiveFeedId() + ":" + activeFeedIsCat(), - function() { - document.forms['search_form'].query.focus(); - }); - return; - } - - if (opid == "qmcAddFeed") { - quickAddFeed(); - return; - } - - if (opid == "qmcEditFeed") { - editFeedDlg(getActiveFeedId()); - } - - if (opid == "qmcRemoveFeed") { - var actid = getActiveFeedId(); - - if (activeFeedIsCat()) { - alert(__("You can't unsubscribe from the category.")); - return; - } - - if (!actid) { - alert(__("Please select some feed first.")); - return; - } - - var fn = getFeedName(actid); - - var pr = __("Unsubscribe from %s?").replace("%s", fn); - - if (confirm(pr)) { - unsubscribeFeed(actid); - } - - return; - } - - if (opid == "qmcUpdateFeeds") { - scheduleFeedUpdate(true); - return; - } - - if (opid == "qmcCatchupAll") { - catchupAllFeeds(); - return; - } - - if (opid == "qmcShowOnlyUnread") { - toggleDispRead(); - return; - } - - if (opid == "qmcAddFilter") { - displayDlg('quickAddFilter', '', - function () {document.forms['filter_add_form'].reg_exp.focus();}); - } - - if (opid == "qmcAddLabel") { - addLabel(); - } - - if (opid == "qmcRescoreFeed") { - rescoreCurrentFeed(); - } - - if (opid == "qmcHKhelp") { - //Element.show("hotkey_help_overlay"); - Effect.Appear("hotkey_help_overlay", {duration : 0.3}); - } - - if (opid == "qmcResetUI") { - hor_offset = 0; - ver_offset = 0; - resize_headlines(); - } - - if (opid == "qmcResetCats") { - - if (confirm(__("Reset category order?"))) { - - var query = "?op=feeds&subop=catsortreset"; - - notify_progress("Loading, please wait...", true); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - window.setTimeout('updateFeedList(false, false)', 50); - } }); - } - } - - } catch (e) { - exception_error("quickMenuGo", e); - } -} - -function updateFeedTitle(t) { - active_title_text = t; - updateTitle(); -} - -function toggleDispRead() { - try { - - var hide = !(getInitParam("hide_read_feeds") == "1"); - - hideOrShowFeeds(hide); - - var query = "?op=rpc&subop=setpref&key=HIDE_READ_FEEDS&value=" + - param_escape(hide); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - setInitParam("hide_read_feeds", hide); - } }); - - } catch (e) { - exception_error("toggleDispRead", e); - } -} - -function parse_runtime_info(elem) { - if (!elem) { - debug("parse_runtime_info: elem is null, aborting"); - return; - } - - var param = elem.firstChild; - - debug("parse_runtime_info: " + param); - - while (param) { - var k = param.getAttribute("key"); - var v = param.getAttribute("value"); - - debug("RI: " + k + " => " + v); - - if (k == "num_feeds") { - init_params[k] = v; - } - - if (k == "new_version_available") { - var icon = $("newVersionIcon"); - if (icon) { - if (v == "1") { - icon.style.display = "inline"; - } else { - icon.style.display = "none"; - } - } - } - - var error_flag; - - if (k == "daemon_is_running" && v != 1) { - notify_error("Update daemon is not running.", true); - error_flag = true; - } - - if (k == "daemon_stamp_ok" && v != 1) { - notify_error("Update daemon is not updating feeds.", true); - error_flag = true; - } - - if (!error_flag) { - notify(''); - } - -/* var w = $("noDaemonWarning"); - - if (w) { - if (k == "daemon_is_running" && v != 1) { - w.style.display = "block"; - } else { - w.style.display = "none"; - } - } */ - param = param.nextSibling; - } -} - -function catchupCurrentFeed() { - - var fn = getFeedName(getActiveFeedId(), activeFeedIsCat()); - - var str = __("Mark all articles in %s as read?").replace("%s", fn); - - if (getInitParam("confirm_feed_catchup") != 1 || confirm(str)) { - return viewCurrentFeed('MarkAllRead') - } -} - -function catchupFeedInGroup(id) { - - try { - - var title = getFeedName(id); - - var str = __("Mark all articles in %s as read?").replace("%s", title); - - if (getInitParam("confirm_feed_catchup") != 1 || confirm(str)) { - return viewCurrentFeed('MarkAllReadGR:' + id) - } - - } catch (e) { - exception_error("catchupFeedInGroup", e); - } -} - -function editFeedDlg(feed) { - try { - - if (!feed) { - alert(__("Please select some feed first.")); - return; - } - - if ((feed <= 0) || activeFeedIsCat() || tagsAreDisplayed()) { - alert(__("You can't edit this kind of feed.")); - return; - } - - var query = ""; - - if (feed > 0) { - query = "?op=pref-feeds&subop=editfeed&id=" + param_escape(feed); - } else { - query = "?op=pref-labels&subop=edit&id=" + param_escape(-feed-11); - } - - disableHotkeys(); - - notify_progress("Loading, please wait...", true); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - infobox_callback2(transport); - document.forms["edit_feed_form"].title.focus(); - } }); - - } catch (e) { - exception_error("editFeedDlg", e); - } -} - -/* this functions duplicate those of prefs.js feed editor, with - some differences because there is no feedlist */ - -function feedEditCancel() { - closeInfoBox(); - return false; -} - -function feedEditSave() { - - try { - - // FIXME: add parameter validation - - var query = Form.serialize("edit_feed_form"); - - notify_progress("Saving feed..."); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - dlg_frefresh_callback(transport); - } }); - - cache_flush(); - closeInfoBox(); - - return false; - - } catch (e) { - exception_error("feedEditSave (main)", e); - } -} - -function collapse_feedlist() { - try { - debug("collapse_feedlist"); - - var theme = getInitParam("theme"); - if (theme != "" && - !getInitParam("theme_options").match("collapse_feedlist")) return; - - var fl = $("feeds-holder"); - var fh = $("headlines-frame"); - var fc = $("content-frame"); - var ft = $("toolbar"); - var ff = $("footer"); - var fhdr = $("header"); - var fbtn = $("collapse_feeds_btn"); - - if (!Element.visible(fl)) { - Element.show(fl); - fbtn.innerHTML = "<<"; - - if (theme != "graycube") { - - fh.style.left = fl.offsetWidth + "px"; - ft.style.left = fl.offsetWidth + "px"; - if (fc) fc.style.left = fl.offsetWidth + "px"; - if (ff && theme != "compat") ff.style.left = (fl.offsetWidth-1) + "px"; - - if (theme == "compact") fhdr.style.left = (fl.offsetWidth + 10) + "px"; - } else { - fh.style.left = fl.offsetWidth + 40 + "px"; - ft.style.left = fl.offsetWidth + 40 +"px"; - if (fc) fc.style.left = fl.offsetWidth + 40 + "px"; - } - - query = "?op=rpc&subop=setpref&key=_COLLAPSED_FEEDLIST&value=false"; - - new Ajax.Request("backend.php", { parameters: query }); - - } else { - Element.hide(fl); - fbtn.innerHTML = ">>"; - - if (theme != "graycube") { - - fh.style.left = "0px"; - ft.style.left = "0px"; - if (fc) fc.style.left = "0px"; - if (ff) ff.style.left = "0px"; - - if (theme == "compact") fhdr.style.left = "10px"; - - } else { - fh.style.left = "20px"; - ft.style.left = "20px"; - if (fc) fc.style.left = "20px"; - - } - - query = "?op=rpc&subop=setpref&key=_COLLAPSED_FEEDLIST&value=true"; - - new Ajax.Request("backend.php", { parameters: query }); - - } - } catch (e) { - exception_error("collapse_feedlist", e); - } -} - -function viewModeChanged() { - cache_flush(); - return viewCurrentFeed(0, '') -} - -function viewLimitChanged() { - cache_flush(); - return viewCurrentFeed(0, '') -} - -/* function adjustArticleScore(id, score) { - try { - - var pr = prompt(__("Assign score to article:"), score); - - if (pr != undefined) { - var query = "?op=rpc&subop=setScore&id=" + id + "&score=" + pr; - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - viewCurrentFeed(); - } }); - - } - } catch (e) { - exception_error("adjustArticleScore", e); - } -} */ - -function rescoreCurrentFeed() { - - var actid = getActiveFeedId(); - - if (activeFeedIsCat() || actid < 0 || tagsAreDisplayed()) { - alert(__("You can't rescore this kind of feed.")); - return; - } - - if (!actid) { - alert(__("Please select some feed first.")); - return; - } - - var fn = getFeedName(actid); - var pr = __("Rescore articles in %s?").replace("%s", fn); - - if (confirm(pr)) { - notify_progress("Rescoring articles..."); - - var query = "?op=pref-feeds&subop=rescore&quiet=1&ids=" + actid; - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - viewCurrentFeed(); - } }); - } -} - -function hotkey_handler(e) { - - try { - - var keycode; - var shift_key = false; - - var cmdline = $('cmdline'); - var feedlist = $('feedList'); - - try { - shift_key = e.shiftKey; - } catch (e) { - - } - - if (window.event) { - keycode = window.event.keyCode; - } else if (e) { - keycode = e.which; - } - - var keychar = String.fromCharCode(keycode); - - if (keycode == 27) { // escape - if (Element.visible("hotkey_help_overlay")) { - Element.hide("hotkey_help_overlay"); - } - hotkey_prefix = false; - closeInfoBox(); - } - - if (!hotkeys_enabled) { - debug("hotkeys disabled"); - return; - } - - if (keycode == 16) return; // ignore lone shift - - if ((keycode == 70 || keycode == 67 || keycode == 71) - && !hotkey_prefix) { - - var date = new Date(); - var ts = Math.round(date.getTime() / 1000); - - hotkey_prefix = keycode; - hotkey_prefix_pressed = ts; - - cmdline.innerHTML = keychar; - Element.show(cmdline); - - debug("KP: PREFIX=" + keycode + " CHAR=" + keychar + " TS=" + ts); - return true; - } - - if (Element.visible("hotkey_help_overlay")) { - Element.hide("hotkey_help_overlay"); - } - - /* Global hotkeys */ - - Element.hide(cmdline); - - if (!hotkey_prefix) { - - if (keycode == 68 && shift_key) { // d - if (!Element.visible("debug_output")) { - Element.show("debug_output"); - debug('debug mode activated'); - } else { - Element.hide("debug_output"); - } - - return; - } - - if ((keycode == 191 || keychar == '?') && shift_key) { // ? - if (!Element.visible("hotkey_help_overlay")) { - //Element.show("hotkey_help_overlay"); - Effect.Appear("hotkey_help_overlay", {duration : 0.3}); - } else { - Element.hide("hotkey_help_overlay"); - } - return false; - } - - if (keycode == 191 || keychar == '/') { // / - displayDlg("search", getActiveFeedId() + ":" + activeFeedIsCat(), - function() { - document.forms['search_form'].query.focus(); - }); - return false; - } - - if (keycode == 82 && shift_key) { // R - scheduleFeedUpdate(true); - return; - } - - if (keycode == 74) { // j - var feed = getActiveFeedId(); - var new_feed = getRelativeFeedId2(feed, activeFeedIsCat(), 'prev'); -// alert(feed + " IC: " + activeFeedIsCat() + " => " + new_feed); - if (new_feed) { - var is_cat = new_feed.match("CAT:"); - if (is_cat) { - new_feed = new_feed.replace("CAT:", ""); - viewCategory(new_feed); - } else { - viewfeed(new_feed, '', false); - } - } - return; - } - - if (keycode == 75) { // k - var feed = getActiveFeedId(); - var new_feed = getRelativeFeedId2(feed, activeFeedIsCat(), 'next'); -// alert(feed + " IC: " + activeFeedIsCat() + " => " + new_feed); - if (new_feed) { - var is_cat = new_feed.match("CAT:"); - if (is_cat == "CAT:") { - new_feed = new_feed.replace("CAT:", ""); - viewCategory(new_feed); - } else { - viewfeed(new_feed, '', false); - } - } - return; - } - - if (shift_key && keycode == 40) { // shift-down - catchupRelativeToArticle(1); - return; - } - - if (shift_key && keycode == 38) { // shift-up - catchupRelativeToArticle(0); - return; - } - - if (shift_key && keycode == 78) { // N - scrollArticle(50); - return; - } - - if (shift_key && keycode == 80) { // P - scrollArticle(-50); - return; - } - - - if (keycode == 78 || keycode == 40) { // n, down - if (typeof moveToPost != 'undefined') { - moveToPost('next'); - return; - } - } - - if (keycode == 80 || keycode == 38) { // p, up - if (typeof moveToPost != 'undefined') { - moveToPost('prev'); - return; - } - } - - if (keycode == 83 && shift_key) { // S - var id = getActiveArticleId(); - if (id) { - togglePub(id); - } - return; - } - - if (keycode == 83) { // s - var id = getActiveArticleId(); - if (id) { - toggleMark(id); - } - return; - } - - - if (keycode == 85) { // u - var id = getActiveArticleId(); - if (id) { - toggleUnread(id); - } - return; - } - - if (keycode == 84 && shift_key) { // T - var id = getActiveArticleId(); - if (id) { - editArticleTags(id, getActiveFeedId(), isCdmMode()); - return; - } - } - - if (keycode == 9) { // tab - var id = getArticleUnderPointer(); - if (id) { - var cb = $("RCHK-" + id); - - if (cb) { - cb.checked = !cb.checked; - toggleSelectRowById(cb, "RROW-" + id); - return false; - } - } - } - - if (keycode == 79) { // o - if (getActiveArticleId()) { - openArticleInNewWindow(getActiveArticleId()); - return; - } - } - - if (keycode == 81 && shift_key) { // Q - if (typeof catchupAllFeeds != 'undefined') { - catchupAllFeeds(); - return; - } - } - - if (keycode == 88) { // x - if (activeFeedIsCat()) { - toggleCollapseCat(getActiveFeedId()); - } - } - } - - /* Prefix f */ - - if (hotkey_prefix == 70) { // f - - hotkey_prefix = false; - - if (keycode == 81) { // q - if (getActiveFeedId()) { - catchupCurrentFeed(); - return; - } - } - - if (keycode == 82) { // r - if (getActiveFeedId()) { - viewfeed(getActiveFeedId(), "ForceUpdate", activeFeedIsCat()); - return; - } - } - - if (keycode == 65) { // a - toggleDispRead(); - return false; - } - - if (keycode == 85 && shift_key) { // U - scheduleFeedUpdate(true); - return false; - } - - if (keycode == 85) { // u - if (getActiveFeedId()) { - viewfeed(getActiveFeedId(), "ForceUpdate"); - return false; - } - } - - if (keycode == 69) { // e - editFeedDlg(getActiveFeedId()); - return false; - } - - if (keycode == 83) { // s - quickAddFeed(); - return false; - } - - if (keycode == 67 && shift_key) { // C - if (typeof catchupAllFeeds != 'undefined') { - catchupAllFeeds(); - return false; - } - } - - if (keycode == 67) { // c - if (getActiveFeedId()) { - catchupCurrentFeed(); - return false; - } - } - - if (keycode == 87) { // w - feeds_sort_by_unread = !feeds_sort_by_unread; - return resort_feedlist(); - } - - if (keycode == 72) { // h - hideReadHeadlines(); - return; - } - - if (keycode == 88) { // x - reverseHeadlineOrder(); - return; - } - } - - /* Prefix c */ - - if (hotkey_prefix == 67) { // c - hotkey_prefix = false; - - if (keycode == 70) { // f - displayDlg('quickAddFilter', '', - function () {document.forms['filter_add_form'].reg_exp.focus();}); - return false; - } - - if (keycode == 76) { // l - addLabel(); - return false; - } - - if (keycode == 83) { // s - if (typeof collapse_feedlist != 'undefined') { - collapse_feedlist(); - return false; - } - } - - if (keycode == 77) { // m - feedlist_sortable_enabled = !feedlist_sortable_enabled; - if (feedlist_sortable_enabled) { - notify_info("Category reordering enabled"); - toggle_sortable_feedlist(true); - } else { - notify_info("Category reordering disabled"); - toggle_sortable_feedlist(false); - } - } - - if (keycode == 78) { // n - catchupRelativeToArticle(1); - return; - } - - if (keycode == 80) { // p - catchupRelativeToArticle(0); - return; - } - - - } - - /* Prefix g */ - - if (hotkey_prefix == 71) { // g - - hotkey_prefix = false; - - - if (keycode == 65) { // a - viewfeed(-4); - return false; - } - - if (keycode == 83) { // s - viewfeed(-1); - return false; - } - - if (keycode == 80 && shift_key) { // P - gotoPreferences(); - return false; - } - - if (keycode == 80) { // p - viewfeed(-2); - return false; - } - - if (keycode == 70) { // f - viewfeed(-3); - return false; - } - - if (keycode == 84 && shift_key) { // T - toggleTags(); - return false; - } - } - - /* Cmd */ - - if (hotkey_prefix == 224 || hotkey_prefix == 91) { // f - hotkey_prefix = false; - return; - } - - if (hotkey_prefix) { - debug("KP: PREFIX=" + hotkey_prefix + " CODE=" + keycode + " CHAR=" + keychar); - } else { - debug("KP: CODE=" + keycode + " CHAR=" + keychar); - } - - - } catch (e) { - exception_error("hotkey_handler", e); - } -} - -function feedsSortByUnread() { - return feeds_sort_by_unread; -} - -function inPreferences() { - return false; -} - -function reverseHeadlineOrder() { - try { - - var query_str = "?op=rpc&subop=togglepref&key=REVERSE_HEADLINES"; - - new Ajax.Request("backend.php", { - parameters: query_str, - onComplete: function(transport) { - viewCurrentFeed(); - } }); - - } catch (e) { - exception_error("reverseHeadlineOrder", e); - } -} diff --git a/tt-rss.php b/tt-rss.php deleted file mode 100644 index d96e612abc..0000000000 --- a/tt-rss.php +++ /dev/null @@ -1,266 +0,0 @@ - - - - - Tiny Tiny RSS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      -
      - - -
      -
      -
      - - -
      -
      - - - -
       
      - - - - - - - - - - - - - - -
      -
      - -
      -
       
      -
      - -
      - -
      - -
      - -
      - - - - - - - - - - - -
      - -
      - - -
      -
      -
      -
      - -
      -
       
      -
      - -
      -
      - - - - - - - - diff --git a/update-translations.sh b/update-translations.sh deleted file mode 100755 index 6968b20b65..0000000000 --- a/update-translations.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -TEMPLATE=messages.pot - -xgettext -kT_js_decl -kT_sprintf -kT_ngettext:1,2 -k__ -L PHP -o $TEMPLATE *.php modules/*.php help/*.php mobile/*.php - -xgettext --from-code utf-8 -k__ -L Java -j -o $TEMPLATE *.js - -update_lang() { - if [ -f $1.po ]; then - TMPFILE=/tmp/update-translations.$$ - - msgmerge -o $TMPFILE $1.po $TEMPLATE - mv $TMPFILE $1.po - msgfmt --statistics $1.po - msgfmt -o $1.mo $1.po - else - echo "Usage: $0 [-p|]" - fi -} - -LANGS=`find locale -name 'messages.po'` - -for lang in $LANGS; do - echo Updating $lang... - PO_BASENAME=`echo $lang | sed s/.po//` - update_lang $PO_BASENAME -done - -#./utils/update-js-translations.sh diff --git a/update.php b/update.php old mode 100644 new mode 100755 index 76e3088567..521b956ad3 --- a/update.php +++ b/update.php @@ -1,171 +1,359 @@ +#!/usr/bin/env php get_commands() as $command => $data) { + array_push($longopts, $command . $data["suffix"]); + } + + $options = getopt("", $longopts); + + if (!is_array($options)) { + die("error: getopt() failed. ". + "Most probably you are using PHP CGI to run this script ". + "instead of required PHP CLI. Check tt-rss wiki page on updating feeds for ". + "additional information.\n"); + } + + if (count($options) == 0 && !defined('STDIN')) { + ?> + + Tiny Tiny RSS data update script. + + + + + + +

      + + + + + + foreach (PluginHost::getInstance()->get_commands() as $command => $data) { + $args = $data['arghelp']; + printf(" --%-19s - %s\n", "$command $args", $data["description"]); + } - - -Database Updater - - - + return; + } - + if (!isset($options['daemon'])) { + require_once "errorhandler.php"; + } - + if (!isset($options['update-schema'])) { + $schema_version = get_schema_version(); - + if ($schema_version != SCHEMA_VERSION) { + die("Schema version is wrong, please upgrade the database.\n"); + } + } -

      + define('QUIET', isset($options['quiet'])); -run_hooks(PluginHost::HOOK_UPDATE_TASK, "hook_update_task", $op); + } + + if (isset($options["feedbrowser"])) { + $count = update_feedbrowser_cache(); + print "Finished, $count feeds processed.\n"; + } + + if (isset($options["daemon"])) { + while (true) { + $quiet = (isset($options["quiet"])) ? "--quiet" : ""; + $log = isset($options['log']) ? '--log '.$options['log'] : ''; + + passthru(PHP_EXECUTABLE . " " . $argv[0] ." --daemon-loop $quiet $log"); + _debug("Sleeping for " . DAEMON_SLEEP_INTERVAL . " seconds..."); + sleep(DAEMON_SLEEP_INTERVAL); } - return $result; - } - - $op = $_POST["op"]; - - $result = db_query($link, "SELECT schema_version FROM ttrss_version"); - $version = db_fetch_result($result, 0, "schema_version"); - - $update_files = glob("schema/versions/".DB_TYPE."/*sql"); - $update_versions = array(); - - foreach ($update_files as $f) { - $m = array(); - preg_match_all("/schema\/versions\/".DB_TYPE."\/(\d*)\.sql/", $f, $m, - PREG_PATTERN_ORDER); - - if ($m[1][0]) { - $update_versions[$m[1][0]] = $f; + } + + if (isset($options["daemon-loop"])) { + if (!make_stampfile('update_daemon.stamp')) { + _debug("warning: unable to create stampfile\n"); } + + update_daemon_common(isset($options["pidlock"]) ? 50 : DAEMON_FEED_LIMIT); + + if (!isset($options["pidlock"]) || $options["task"] == 0) + housekeeping_common(true); + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_UPDATE_TASK, "hook_update_task", $op); } - - ksort($update_versions, SORT_NUMERIC); - - $latest_version = max(array_keys($update_versions)); - if ($version == $latest_version) { + if (isset($options["cleanup-tags"])) { + $rc = cleanup_tags( 14, 50000); + _debug("$rc tags deleted.\n"); + } + + if (isset($options["indexes"])) { + _debug("PLEASE BACKUP YOUR DATABASE BEFORE PROCEEDING!"); + _debug("Type 'yes' to continue."); - if ($version != SCHEMA_VERSION) { - print_error(__("Could not update database")); + if (read_stdin() != 'yes') + exit; - print "

      " . - __("Could not find necessary schema file, need version:") . - " " . SCHEMA_VERSION . __(", found: ") . $latest_version . "

      "; + _debug("clearing existing indexes..."); + if (DB_TYPE == "pgsql") { + $result = db_query( "SELECT relname FROM + pg_catalog.pg_class WHERE relname LIKE 'ttrss_%' + AND relname NOT LIKE '%_pkey' + AND relkind = 'i'"); } else { - print "

      ".__("Tiny Tiny RSS database is up to date.")."

      "; - print "
      - -
      "; + $result = db_query( "SELECT index_name,table_name FROM + information_schema.statistics WHERE index_name LIKE 'ttrss_%'"); } - return; - } - - if (!$op) { - print_warning(__("Please backup your database before proceeding.")); - - print "

      " . T_sprintf("Your Tiny Tiny RSS database needs update to the latest version (%d to %d).", $version, $latest_version) . "

      "; - - /* print "

      Available incremental updates:"; - - foreach (array_keys($update_versions) as $v) { - if ($v > $version) { - print " $v"; + while ($line = db_fetch_assoc($result)) { + if (DB_TYPE == "pgsql") { + $statement = "DROP INDEX " . $line["relname"]; + _debug($statement); + } else { + $statement = "ALTER TABLE ". + $line['table_name']." DROP INDEX ".$line['index_name']; + _debug($statement); } - } */ - - print "

      "; - - print "
      - - -
      "; - - } else if ($op == "do") { - - print "

      ".__("Performing updates...")."

      "; - - $num_updates = 0; - - foreach (array_keys($update_versions) as $v) { - if ($v == $version + 1) { - print "

      ".T_sprintf("Updating to version %d...", $v)."

      "; - $fp = fopen($update_versions[$v], "r"); - if ($fp) { - while (!feof($fp)) { - $query = trim(getline($fp, ";")); - if ($query != "") { - print "

      $query

      "; - db_query($link, $query); - } - } + db_query( $statement, false); + } + + _debug("reading indexes from schema for: " . DB_TYPE); + + $fp = fopen("schema/ttrss_schema_" . DB_TYPE . ".sql", "r"); + if ($fp) { + while ($line = fgets($fp)) { + $matches = array(); + + if (preg_match("/^create index ([^ ]+) on ([^ ]+)$/i", $line, $matches)) { + $index = $matches[1]; + $table = $matches[2]; + + $statement = "CREATE INDEX $index ON $table"; + + _debug($statement); + db_query( $statement); } - fclose($fp); - - print "

      ".__("Checking version... "); - - $result = db_query($link, "SELECT schema_version FROM ttrss_version"); - $version = db_fetch_result($result, 0, "schema_version"); - - if ($version == $v) { - print __("OK!"); + } + fclose($fp); + } else { + _debug("unable to open schema file."); + } + _debug("all done."); + } + + if (isset($options["convert-filters"])) { + _debug("WARNING: this will remove all existing type2 filters."); + _debug("Type 'yes' to continue."); + + if (read_stdin() != 'yes') + exit; + + _debug("converting filters..."); + + db_query( "DELETE FROM ttrss_filters2"); + + $result = db_query( "SELECT * FROM ttrss_filters ORDER BY id"); + + while ($line = db_fetch_assoc($result)) { + $owner_uid = $line["owner_uid"]; + + // date filters are removed + if ($line["filter_type"] != 5) { + $filter = array(); + + if (sql_bool_to_bool($line["cat_filter"])) { + $feed_id = "CAT:" . (int)$line["cat_id"]; } else { - print "".__("ERROR!").""; - return; + $feed_id = (int)$line["feed_id"]; } - - $num_updates++; + + $filter["enabled"] = $line["enabled"] ? "on" : "off"; + $filter["rule"] = array( + json_encode(array( + "reg_exp" => $line["reg_exp"], + "feed_id" => $feed_id, + "filter_type" => $line["filter_type"]))); + + $filter["action"] = array( + json_encode(array( + "action_id" => $line["action_id"], + "action_param_label" => $line["action_param"], + "action_param" => $line["action_param"]))); + + // Oh god it's full of hacks + + $_REQUEST = $filter; + $_SESSION["uid"] = $owner_uid; + + $filters = new Pref_Filters($_REQUEST); + $filters->add(); } } - - print "

      ".T_sprintf("Finished. Performed %d update(s) up to schema - version %d.", $num_updates, $version)."

      "; - - print "
      - -
      "; } - -?> - - + if (isset($options["update-schema"])) { + _debug("checking for updates (" . DB_TYPE . ")..."); + + $updater = new DbUpdater(Db::get(), DB_TYPE, SCHEMA_VERSION); + + if ($updater->isUpdateRequired()) { + _debug("schema update required, version " . $updater->getSchemaVersion() . " to " . SCHEMA_VERSION); + _debug("WARNING: please backup your database before continuing."); + _debug("Type 'yes' to continue."); + + if (read_stdin() != 'yes') + exit; + + for ($i = $updater->getSchemaVersion() + 1; $i <= SCHEMA_VERSION; $i++) { + _debug("performing update up to version $i..."); + + $result = $updater->performUpdateTo($i); + + _debug($result ? "OK!" : "FAILED!"); + + if (!$result) return; + + } + } else { + _debug("update not required."); + } + + } + + if (isset($options["list-plugins"])) { + $tmppluginhost = new PluginHost(); + $tmppluginhost->load_all($tmppluginhost::KIND_ALL); + $enabled = array_map("trim", explode(",", PLUGINS)); + + echo "List of all available plugins:\n"; + + foreach ($tmppluginhost->get_plugins() as $name => $plugin) { + $about = $plugin->about(); + $status = $about[3] ? "system" : "user"; + + if (in_array($name, $enabled)) $name .= "*"; + + printf("%-50s %-10s v%.2f (by %s)\n%s\n\n", + $name, $status, $about[0], $about[2], $about[1]); + } + + echo "Plugins marked by * are currently enabled for all users.\n"; + + } + + PluginHost::getInstance()->run_commands($options); + + if (file_exists(LOCK_DIRECTORY . "/$lock_filename")) + unlink(LOCK_DIRECTORY . "/$lock_filename"); +?> diff --git a/update_daemon.php b/update_daemon.php deleted file mode 100755 index 03d366b5e2..0000000000 --- a/update_daemon.php +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/php - diff --git a/update_daemon2.php b/update_daemon2.php index 779373a632..1dddf6efda 100755 --- a/update_daemon2.php +++ b/update_daemon2.php @@ -1,61 +1,69 @@ -#!/usr/bin/php +#!/usr/bin/env php MAX_CHILD_RUNTIME) { + _debug("[MASTER] child process $pid seems to be stuck, aborting..."); + posix_kill($pid, SIGKILL); + } + } } function sigchld_handler($signal) { @@ -76,125 +93,151 @@ function sigchld_handler($signal) { pcntl_waitpid(-1, $status, WNOHANG); } + function shutdown($caller_pid) { + if ($caller_pid == posix_getpid()) { + if (file_exists(LOCK_DIRECTORY . "/update_daemon.lock")) { + _debug("removing lockfile (master)..."); + unlink(LOCK_DIRECTORY . "/update_daemon.lock"); + } + } + } + + function task_shutdown() { + $pid = posix_getpid(); + + if (file_exists(LOCK_DIRECTORY . "/update_daemon-$pid.lock")) { + _debug("removing lockfile ($pid)..."); + unlink(LOCK_DIRECTORY . "/update_daemon-$pid.lock"); + } + } + function sigint_handler() { - unlink(LOCK_DIRECTORY . "/update_daemon.lock"); - die("[SIGINT] removing lockfile and exiting.\n"); + _debug("[MASTER] SIG_INT received.\n"); + shutdown(posix_getpid()); + die; + } + + function task_sigint_handler() { + _debug("[TASK] SIG_INT received.\n"); + task_shutdown(); + die; } - pcntl_signal(SIGALRM, 'sigalrm_handler'); pcntl_signal(SIGCHLD, 'sigchld_handler'); + $longopts = array("log:", + "tasks:", + "interval:", + "quiet", + "help"); + + $options = getopt("", $longopts); + + if (isset($options["help"]) ) { + print "Tiny Tiny RSS update daemon.\n\n"; + print "Options:\n"; + print " --log FILE - log messages to FILE\n"; + print " --tasks N - amount of update tasks to spawn\n"; + print " default: " . MAX_JOBS . "\n"; + print " --interval N - task spawn interval\n"; + print " default: " . SPAWN_INTERVAL . " seconds.\n"; + print " --quiet - don't output messages to stdout\n"; + return; + } + + define('QUIET', isset($options['quiet'])); + + if (isset($options["tasks"])) { + _debug("Set to spawn " . $options["tasks"] . " children."); + $max_jobs = $options["tasks"]; + } else { + $max_jobs = MAX_JOBS; + } + + if (isset($options["interval"])) { + _debug("Spawn interval: " . $options["interval"] . " seconds."); + $spawn_interval = $options["interval"]; + } else { + $spawn_interval = SPAWN_INTERVAL; + } + + if (isset($options["log"])) { + _debug("Logging to " . $options["log"]); + define('LOGFILE', $options["log"]); + } + if (file_is_locked("update_daemon.lock")) { die("error: Can't create lockfile. ". "Maybe another daemon is already running.\n"); } - if (!pcntl_fork()) { - pcntl_signal(SIGINT, 'sigint_handler'); - - // Try to lock a file in order to avoid concurrent update. - $lock_handle = make_lockfile("update_daemon.lock"); + // Try to lock a file in order to avoid concurrent update. + $lock_handle = make_lockfile("update_daemon.lock"); - if (!$lock_handle) { - die("error: Can't create lockfile. ". - "Maybe another daemon is already running.\n"); - } - - while (true) { sleep(100); } + if (!$lock_handle) { + die("error: Can't create lockfile. ". + "Maybe another daemon is already running.\n"); } - // Testing database connection. - // It is unnecessary to start the fork loop if database is not ok. - $link = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); + $schema_version = get_schema_version(); - if (!$link) { - if (DB_TYPE == "mysql") { - print mysql_error(); - } - // PG seems to display its own errors just fine by default. - return; + if ($schema_version != SCHEMA_VERSION) { + die("Schema version is wrong, please upgrade the database.\n"); } - db_close($link); + // Protip: children close shared database handle when terminating, it's a bad idea to + // do database stuff on main process from now on. while (true) { // Since sleep is interupted by SIGCHLD, we need another way to - // respect the SPAWN_INTERVAL - $next_spawn = $last_checkpoint + SPAWN_INTERVAL - time(); + // respect the spawn interval + $next_spawn = $last_checkpoint + $spawn_interval - time(); - if ($next_spawn % 10 == 0) { + if ($next_spawn % 60 == 0) { $running_jobs = count($children); _debug("[MASTER] active jobs: $running_jobs, next spawn at $next_spawn sec."); } - if ($last_checkpoint + SPAWN_INTERVAL < time()) { - + if ($last_checkpoint + $spawn_interval < time()) { + check_ctimes(); reap_children(); - for ($j = count($children); $j < MAX_JOBS; $j++) { + for ($j = count($children); $j < $max_jobs; $j++) { $pid = pcntl_fork(); if ($pid == -1) { die("fork failed!\n"); } else if ($pid) { + + 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; + } + _debug("[MASTER] spawned client $j [PID:$pid]..."); array_push($children, $pid); + $ctimes[$pid] = time(); } else { pcntl_signal(SIGCHLD, SIG_IGN); - pcntl_signal(SIGINT, SIG_DFL); - - // ****** Updating RSS code ******* - // Only run in fork process. - - $start_timestamp = time(); + pcntl_signal(SIGINT, 'task_sigint_handler'); - $link = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); + register_shutdown_function('task_shutdown'); - if (!$link) { - if (DB_TYPE == "mysql") { - print mysql_error(); - } - // PG seems to display its own errors just fine by default. - return; - } - - init_connection($link); - - // We disable stamp file, since it is of no use in a multiprocess update. - // not really, tho for the time being -fox - if (!make_stampfile('update_daemon.stamp')) { - print "warning: unable to create stampfile"; - } - - // FIXME : $last_purge is of no use in a multiprocess update. - // FIXME : We ALWAYS purge old posts. - //_debug("Purging old posts (random 30 feeds)..."); - //global_purge_old_posts($link, true, 30); + $quiet = (isset($options["quiet"])) ? "--quiet" : ""; + $log = function_exists("flock") && isset($options['log']) ? '--log '.$options['log'] : ''; - // Call to the feed batch update function - // or regenerate feedbrowser cache + $my_pid = posix_getpid(); - if (rand(0,100) > 50) { - update_daemon_common($link); - } else { - $count = update_feedbrowser_cache($link); - _debug("Finished, $count feeds processed."); - } - - _debug("Elapsed time: " . (time() - $start_timestamp) . " second(s)"); - - db_close($link); + passthru(PHP_EXECUTABLE . " update.php --daemon-loop $quiet $log --task $j --pidlock $my_pid"); - // We are in a fork. - // We wait a little before exiting to avoid to be faster than our parent process. sleep(1); + // We exit in order to avoid fork bombing. exit(0); } - - // We wait a little time before the next fork, in order to let the first fork - // mark the feeds it update : - sleep(1); } $last_checkpoint = time(); } diff --git a/update_daemon_loop.php b/update_daemon_loop.php deleted file mode 100755 index 064a904d3d..0000000000 --- a/update_daemon_loop.php +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/php - PURGE_INTERVAL) { - _debug("Purging old posts (random 30 feeds)..."); - global_purge_old_posts($link, true, 30); - $last_purge = time(); - } */ - - // Call to the feed batch update function - // or regenerate feedbrowser cache - - if (rand(0,100) > 50) { - update_daemon_common($link); - } else { - $count = update_feedbrowser_cache($link); - _debug("Finished, $count feeds processed."); - } - - db_close($link); - -?> diff --git a/update_feedbrowser.php b/update_feedbrowser.php deleted file mode 100755 index 0031ff3153..0000000000 --- a/update_feedbrowser.php +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/php - diff --git a/update_feeds.php b/update_feeds.php deleted file mode 100755 index 588a0a9b57..0000000000 --- a/update_feeds.php +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/php - diff --git a/utility.css b/utility.css deleted file mode 100644 index bdda169ea9..0000000000 --- a/utility.css +++ /dev/null @@ -1,120 +0,0 @@ -body { - margin : 2em; - padding : 0em; -} - -p.warning { - color : red; -} - -p.query, code { - color : green; -} - -p.insensitive { - color : gray; -} - -.floatingLogo { - float : right; -} - -a { - color : #4684ff; - text-decoration : none; -} - -a:hover { - color : black; -} - -div.notice { - background : #ffffff; - border : 1px solid #88b0f0; - width : 50%; - padding : 5px; - margin : 0px 0px 5px 0px; - font-size : 9pt; -} - -div.warning { - background : #fff7d5; - border : 1px solid #d7c47a; - font-size : 9pt; - width : 50%; - padding : 5px; - margin : 0px 0px 5px 0px; -} - - -div.warning img, div.notice img, div.error img { - vertical-align : middle; - padding : 5px; -} - -div.error { - border : 1px solid #ff0000; - background : #ffcccc; - padding : 5px; - margin : 0px 0px 5px 0px; - font-size : 9pt; - width : 50%; -} - -h1 { - color : #88b0f0; - font-size : 16pt; -/* border-width : 0px 0px 1px 0px; - border-color : black; - border-style : solid; */ -} - -h2 { - color : #88b0f0; - font-size : 14pt; -/* border-width : 0px 0px 1px 0px; - border-color : black; - border-style : solid; */ -} - -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; - margin : 0px; -} - -div.rss a.extlink { - color : gray; - border-width : 0px 0px 1px 0px; - border-color : #778899; - border-style : dotted; - font-size : 9pt; -} - -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; -} - - diff --git a/utils/.htaccess b/utils/.htaccess new file mode 100644 index 0000000000..93169e4eb4 --- /dev/null +++ b/utils/.htaccess @@ -0,0 +1,2 @@ +Order deny,allow +Deny from all diff --git a/utils/create-release-tarball.sh b/utils/create-release-tarball.sh deleted file mode 100755 index 935f0862c9..0000000000 --- a/utils/create-release-tarball.sh +++ /dev/null @@ -1,6 +0,0 @@ -if [ -z $1 ]; then - echo usage: $0 VERSION - exit 1 -fi - -git archive --format=tar --prefix=tt-rss-$1/ $1 | gzip >tt-rss-$1.tar.gz diff --git a/utils/localized_schema.txt b/utils/localized_schema.txt new file mode 100644 index 0000000000..417b690c43 --- /dev/null +++ b/utils/localized_schema.txt @@ -0,0 +1,17 @@ +__("Title"); +__("Title or Content"); +__("Link"); +__("Content"); +__("Article Date"); + +__("Delete article"); +__("Mark as read"); +__("Set starred"); +__("Publish article"); +__("Assign tags"); +__("Assign label"); +__("Modify score"); + +__("General"); +__("Interface"); +__("Advanced"); diff --git a/utils/mysql_convert_unicode.php b/utils/mysql_convert_unicode.php deleted file mode 100644 index acc1e77af0..0000000000 --- a/utils/mysql_convert_unicode.php +++ /dev/null @@ -1,106 +0,0 @@ - - - - -MySQL Charset Converter - - - - - - - - - - - -

      - - - - "; - - } else if (!$op) { - - print_warning(__("Please backup your database before proceeding.")); - - print "

      " . __("This script will convert your Tiny Tiny RSS database to UTF-8. - Depending on current database charset you may experience data corruption (lost accent characters, etc.). - After update, you'll have to set MYSQL_CHARSET option in config.php to 'utf8'.") . "

      "; - - print "
      - - -
      "; - - } else if ($op == "do") { - - print "

      ".__("Converting database...")."

      "; - - db_query($link, "BEGIN"); - db_query($link, "SET FOREIGN_KEY_CHECKS=0"); - - $result = db_query($link, "SHOW TABLES LIKE 'ttrss%'"); - - while ($line = db_fetch_assoc($result)) { - $vals = array_values($line); - $table = $vals[0]; - - $query = "ALTER TABLE $table CONVERT TO - CHARACTER SET 'utf8'"; - - print "

      $query

      "; - - db_query($link, $query); - } - - db_query($link, "SET FOREIGN_KEY_CHECKS=1"); - db_query($link, "COMMIT"); - - print "
      - -
      "; - - } - -?> - - - - diff --git a/utils/notifier/background.html b/utils/notifier/background.html deleted file mode 100644 index bee00560b4..0000000000 --- a/utils/notifier/background.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - diff --git a/utils/notifier/images/alert.png b/utils/notifier/images/alert.png deleted file mode 100755 index f021b76fc2..0000000000 Binary files a/utils/notifier/images/alert.png and /dev/null differ diff --git a/utils/notifier/images/error.png b/utils/notifier/images/error.png deleted file mode 100755 index b9d7be0fb9..0000000000 Binary files a/utils/notifier/images/error.png and /dev/null differ diff --git a/utils/notifier/images/icon.png b/utils/notifier/images/icon.png deleted file mode 100644 index b8f071008b..0000000000 Binary files a/utils/notifier/images/icon.png and /dev/null differ diff --git a/utils/notifier/images/normal.png b/utils/notifier/images/normal.png deleted file mode 100644 index 2a24fcba64..0000000000 Binary files a/utils/notifier/images/normal.png and /dev/null differ diff --git a/utils/notifier/images/ttrss_logo.png b/utils/notifier/images/ttrss_logo.png deleted file mode 100644 index 243e8948b9..0000000000 Binary files a/utils/notifier/images/ttrss_logo.png and /dev/null differ diff --git a/utils/notifier/lib/prototype.js b/utils/notifier/lib/prototype.js deleted file mode 100644 index 8613914b1a..0000000000 --- a/utils/notifier/lib/prototype.js +++ /dev/null @@ -1,4170 +0,0 @@ -/* Prototype JavaScript framework, version 1.6.0.1 - * (c) 2005-2007 Sam Stephenson - * - * Prototype is freely distributable under the terms of an MIT-style license. - * For details, see the Prototype web site: http://www.prototypejs.org/ - * - *--------------------------------------------------------------------------*/ - -var Prototype = { - Version: '1.6.0.1', - - Browser: { - IE: !!(window.attachEvent && !window.opera), - Opera: !!window.opera, - WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, - Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1, - MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) - }, - - BrowserFeatures: { - XPath: !!document.evaluate, - ElementExtensions: !!window.HTMLElement, - SpecificElementExtensions: - document.createElement('div').__proto__ && - document.createElement('div').__proto__ !== - document.createElement('form').__proto__ - }, - - ScriptFragment: ']*>([\\S\\s]*?)<\/script>', - JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, - - emptyFunction: function() { }, - K: function(x) { return x } -}; - -if (Prototype.Browser.MobileSafari) - Prototype.BrowserFeatures.SpecificElementExtensions = false; - - -/* Based on Alex Arnell's inheritance implementation. */ -var Class = { - create: function() { - var parent = null, properties = $A(arguments); - if (Object.isFunction(properties[0])) - parent = properties.shift(); - - function klass() { - this.initialize.apply(this, arguments); - } - - Object.extend(klass, Class.Methods); - klass.superclass = parent; - klass.subclasses = []; - - if (parent) { - var subclass = function() { }; - subclass.prototype = parent.prototype; - klass.prototype = new subclass; - parent.subclasses.push(klass); - } - - for (var i = 0; i < properties.length; i++) - klass.addMethods(properties[i]); - - if (!klass.prototype.initialize) - klass.prototype.initialize = Prototype.emptyFunction; - - klass.prototype.constructor = klass; - - return klass; - } -}; - -Class.Methods = { - addMethods: function(source) { - var ancestor = this.superclass && this.superclass.prototype; - var properties = Object.keys(source); - - if (!Object.keys({ toString: true }).length) - properties.push("toString", "valueOf"); - - for (var i = 0, length = properties.length; i < length; i++) { - var property = properties[i], value = source[property]; - if (ancestor && Object.isFunction(value) && - value.argumentNames().first() == "$super") { - var method = value, value = Object.extend((function(m) { - return function() { return ancestor[m].apply(this, arguments) }; - })(property).wrap(method), { - valueOf: function() { return method }, - toString: function() { return method.toString() } - }); - } - this.prototype[property] = value; - } - - return this; - } -}; - -var Abstract = { }; - -Object.extend = function(destination, source) { - for (var property in source) - destination[property] = source[property]; - return destination; -}; - -Object.extend(Object, { - inspect: function(object) { - try { - if (Object.isUndefined(object)) return 'undefined'; - if (object === null) return 'null'; - return object.inspect ? object.inspect() : object.toString(); - } catch (e) { - if (e instanceof RangeError) return '...'; - throw e; - } - }, - - toJSON: function(object) { - var type = typeof object; - switch (type) { - case 'undefined': - case 'function': - case 'unknown': return; - case 'boolean': return object.toString(); - } - - if (object === null) return 'null'; - if (object.toJSON) return object.toJSON(); - if (Object.isElement(object)) return; - - var results = []; - for (var property in object) { - var value = Object.toJSON(object[property]); - if (!Object.isUndefined(value)) - results.push(property.toJSON() + ': ' + value); - } - - return '{' + results.join(', ') + '}'; - }, - - toQueryString: function(object) { - return $H(object).toQueryString(); - }, - - toHTML: function(object) { - return object && object.toHTML ? object.toHTML() : String.interpret(object); - }, - - keys: function(object) { - var keys = []; - for (var property in object) - keys.push(property); - return keys; - }, - - values: function(object) { - var values = []; - for (var property in object) - values.push(object[property]); - return values; - }, - - clone: function(object) { - return Object.extend({ }, object); - }, - - isElement: function(object) { - return object && object.nodeType == 1; - }, - - isArray: function(object) { - return object && object.constructor === Array; - }, - - isHash: function(object) { - return object instanceof Hash; - }, - - isFunction: function(object) { - return typeof object == "function"; - }, - - isString: function(object) { - return typeof object == "string"; - }, - - isNumber: function(object) { - return typeof object == "number"; - }, - - isUndefined: function(object) { - return typeof object == "undefined"; - } -}); - -Object.extend(Function.prototype, { - argumentNames: function() { - var names = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").invoke("strip"); - return names.length == 1 && !names[0] ? [] : names; - }, - - bind: function() { - if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; - var __method = this, args = $A(arguments), object = args.shift(); - return function() { - return __method.apply(object, args.concat($A(arguments))); - } - }, - - bindAsEventListener: function() { - var __method = this, args = $A(arguments), object = args.shift(); - return function(event) { - return __method.apply(object, [event || window.event].concat(args)); - } - }, - - curry: function() { - if (!arguments.length) return this; - var __method = this, args = $A(arguments); - return function() { - return __method.apply(this, args.concat($A(arguments))); - } - }, - - delay: function() { - var __method = this, args = $A(arguments), timeout = args.shift() * 1000; - return window.setTimeout(function() { - return __method.apply(__method, args); - }, timeout); - }, - - wrap: function(wrapper) { - var __method = this; - return function() { - return wrapper.apply(this, [__method.bind(this)].concat($A(arguments))); - } - }, - - methodize: function() { - if (this._methodized) return this._methodized; - var __method = this; - return this._methodized = function() { - return __method.apply(null, [this].concat($A(arguments))); - }; - } -}); - -Function.prototype.defer = Function.prototype.delay.curry(0.01); - -Date.prototype.toJSON = function() { - return '"' + this.getUTCFullYear() + '-' + - (this.getUTCMonth() + 1).toPaddedString(2) + '-' + - this.getUTCDate().toPaddedString(2) + 'T' + - this.getUTCHours().toPaddedString(2) + ':' + - this.getUTCMinutes().toPaddedString(2) + ':' + - this.getUTCSeconds().toPaddedString(2) + 'Z"'; -}; - -var Try = { - these: function() { - var returnValue; - - for (var i = 0, length = arguments.length; i < length; i++) { - var lambda = arguments[i]; - try { - returnValue = lambda(); - break; - } catch (e) { } - } - - return returnValue; - } -}; - -RegExp.prototype.match = RegExp.prototype.test; - -RegExp.escape = function(str) { - return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); -}; - -/*--------------------------------------------------------------------------*/ - -var PeriodicalExecuter = Class.create({ - initialize: function(callback, frequency) { - this.callback = callback; - this.frequency = frequency; - this.currentlyExecuting = false; - - this.registerCallback(); - }, - - registerCallback: function() { - this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); - }, - - execute: function() { - this.callback(this); - }, - - stop: function() { - if (!this.timer) return; - clearInterval(this.timer); - this.timer = null; - }, - - onTimerEvent: function() { - if (!this.currentlyExecuting) { - try { - this.currentlyExecuting = true; - this.execute(); - } finally { - this.currentlyExecuting = false; - } - } - } -}); -Object.extend(String, { - interpret: function(value) { - return value == null ? '' : String(value); - }, - specialChar: { - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '\\': '\\\\' - } -}); - -Object.extend(String.prototype, { - gsub: function(pattern, replacement) { - var result = '', source = this, match; - replacement = arguments.callee.prepareReplacement(replacement); - - while (source.length > 0) { - if (match = source.match(pattern)) { - result += source.slice(0, match.index); - result += String.interpret(replacement(match)); - source = source.slice(match.index + match[0].length); - } else { - result += source, source = ''; - } - } - return result; - }, - - sub: function(pattern, replacement, count) { - replacement = this.gsub.prepareReplacement(replacement); - count = Object.isUndefined(count) ? 1 : count; - - return this.gsub(pattern, function(match) { - if (--count < 0) return match[0]; - return replacement(match); - }); - }, - - scan: function(pattern, iterator) { - this.gsub(pattern, iterator); - return String(this); - }, - - truncate: function(length, truncation) { - length = length || 30; - truncation = Object.isUndefined(truncation) ? '...' : truncation; - return this.length > length ? - this.slice(0, length - truncation.length) + truncation : String(this); - }, - - strip: function() { - return this.replace(/^\s+/, '').replace(/\s+$/, ''); - }, - - stripTags: function() { - return this.replace(/<\/?[^>]+>/gi, ''); - }, - - stripScripts: function() { - return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); - }, - - extractScripts: function() { - var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); - var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); - return (this.match(matchAll) || []).map(function(scriptTag) { - return (scriptTag.match(matchOne) || ['', ''])[1]; - }); - }, - - evalScripts: function() { - return this.extractScripts().map(function(script) { return eval(script) }); - }, - - escapeHTML: function() { - var self = arguments.callee; - self.text.data = this; - return self.div.innerHTML; - }, - - unescapeHTML: function() { - var div = new Element('div'); - div.innerHTML = this.stripTags(); - return div.childNodes[0] ? (div.childNodes.length > 1 ? - $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) : - div.childNodes[0].nodeValue) : ''; - }, - - toQueryParams: function(separator) { - var match = this.strip().match(/([^?#]*)(#.*)?$/); - if (!match) return { }; - - return match[1].split(separator || '&').inject({ }, function(hash, pair) { - if ((pair = pair.split('='))[0]) { - var key = decodeURIComponent(pair.shift()); - var value = pair.length > 1 ? pair.join('=') : pair[0]; - if (value != undefined) value = decodeURIComponent(value); - - if (key in hash) { - if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; - hash[key].push(value); - } - else hash[key] = value; - } - return hash; - }); - }, - - toArray: function() { - return this.split(''); - }, - - succ: function() { - return this.slice(0, this.length - 1) + - String.fromCharCode(this.charCodeAt(this.length - 1) + 1); - }, - - times: function(count) { - return count < 1 ? '' : new Array(count + 1).join(this); - }, - - camelize: function() { - var parts = this.split('-'), len = parts.length; - if (len == 1) return parts[0]; - - var camelized = this.charAt(0) == '-' - ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) - : parts[0]; - - for (var i = 1; i < len; i++) - camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1); - - return camelized; - }, - - capitalize: function() { - return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); - }, - - underscore: function() { - return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase(); - }, - - dasherize: function() { - return this.gsub(/_/,'-'); - }, - - inspect: function(useDoubleQuotes) { - var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) { - var character = String.specialChar[match[0]]; - return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16); - }); - if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; - return "'" + escapedString.replace(/'/g, '\\\'') + "'"; - }, - - toJSON: function() { - return this.inspect(true); - }, - - unfilterJSON: function(filter) { - return this.sub(filter || Prototype.JSONFilter, '#{1}'); - }, - - isJSON: function() { - var str = this; - if (str.blank()) return false; - str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''); - return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); - }, - - evalJSON: function(sanitize) { - var json = this.unfilterJSON(); - try { - if (!sanitize || json.isJSON()) return eval('(' + json + ')'); - } catch (e) { } - throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); - }, - - include: function(pattern) { - return this.indexOf(pattern) > -1; - }, - - startsWith: function(pattern) { - return this.indexOf(pattern) === 0; - }, - - endsWith: function(pattern) { - var d = this.length - pattern.length; - return d >= 0 && this.lastIndexOf(pattern) === d; - }, - - empty: function() { - return this == ''; - }, - - blank: function() { - return /^\s*$/.test(this); - }, - - interpolate: function(object, pattern) { - return new Template(this, pattern).evaluate(object); - } -}); - -if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, { - escapeHTML: function() { - return this.replace(/&/g,'&').replace(//g,'>'); - }, - unescapeHTML: function() { - return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>'); - } -}); - -String.prototype.gsub.prepareReplacement = function(replacement) { - if (Object.isFunction(replacement)) return replacement; - var template = new Template(replacement); - return function(match) { return template.evaluate(match) }; -}; - -String.prototype.parseQuery = String.prototype.toQueryParams; - -Object.extend(String.prototype.escapeHTML, { - div: document.createElement('div'), - text: document.createTextNode('') -}); - -with (String.prototype.escapeHTML) div.appendChild(text); - -var Template = Class.create({ - initialize: function(template, pattern) { - this.template = template.toString(); - this.pattern = pattern || Template.Pattern; - }, - - evaluate: function(object) { - if (Object.isFunction(object.toTemplateReplacements)) - object = object.toTemplateReplacements(); - - return this.template.gsub(this.pattern, function(match) { - if (object == null) return ''; - - var before = match[1] || ''; - if (before == '\\') return match[2]; - - var ctx = object, expr = match[3]; - var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; - match = pattern.exec(expr); - if (match == null) return before; - - while (match != null) { - var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1]; - ctx = ctx[comp]; - if (null == ctx || '' == match[3]) break; - expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); - match = pattern.exec(expr); - } - - return before + String.interpret(ctx); - }.bind(this)); - } -}); -Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; - -var $break = { }; - -var Enumerable = { - each: function(iterator, context) { - var index = 0; - iterator = iterator.bind(context); - try { - this._each(function(value) { - iterator(value, index++); - }); - } catch (e) { - if (e != $break) throw e; - } - return this; - }, - - eachSlice: function(number, iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var index = -number, slices = [], array = this.toArray(); - while ((index += number) < array.length) - slices.push(array.slice(index, index+number)); - return slices.collect(iterator, context); - }, - - all: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result = true; - this.each(function(value, index) { - result = result && !!iterator(value, index); - if (!result) throw $break; - }); - return result; - }, - - any: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result = false; - this.each(function(value, index) { - if (result = !!iterator(value, index)) - throw $break; - }); - return result; - }, - - collect: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var results = []; - this.each(function(value, index) { - results.push(iterator(value, index)); - }); - return results; - }, - - detect: function(iterator, context) { - iterator = iterator.bind(context); - var result; - this.each(function(value, index) { - if (iterator(value, index)) { - result = value; - throw $break; - } - }); - return result; - }, - - findAll: function(iterator, context) { - iterator = iterator.bind(context); - var results = []; - this.each(function(value, index) { - if (iterator(value, index)) - results.push(value); - }); - return results; - }, - - grep: function(filter, iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var results = []; - - if (Object.isString(filter)) - filter = new RegExp(filter); - - this.each(function(value, index) { - if (filter.match(value)) - results.push(iterator(value, index)); - }); - return results; - }, - - include: function(object) { - if (Object.isFunction(this.indexOf)) - if (this.indexOf(object) != -1) return true; - - var found = false; - this.each(function(value) { - if (value == object) { - found = true; - throw $break; - } - }); - return found; - }, - - inGroupsOf: function(number, fillWith) { - fillWith = Object.isUndefined(fillWith) ? null : fillWith; - return this.eachSlice(number, function(slice) { - while(slice.length < number) slice.push(fillWith); - return slice; - }); - }, - - inject: function(memo, iterator, context) { - iterator = iterator.bind(context); - this.each(function(value, index) { - memo = iterator(memo, value, index); - }); - return memo; - }, - - invoke: function(method) { - var args = $A(arguments).slice(1); - return this.map(function(value) { - return value[method].apply(value, args); - }); - }, - - max: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result; - this.each(function(value, index) { - value = iterator(value, index); - if (result == null || value >= result) - result = value; - }); - return result; - }, - - min: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result; - this.each(function(value, index) { - value = iterator(value, index); - if (result == null || value < result) - result = value; - }); - return result; - }, - - partition: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var trues = [], falses = []; - this.each(function(value, index) { - (iterator(value, index) ? - trues : falses).push(value); - }); - return [trues, falses]; - }, - - pluck: function(property) { - var results = []; - this.each(function(value) { - results.push(value[property]); - }); - return results; - }, - - reject: function(iterator, context) { - iterator = iterator.bind(context); - var results = []; - this.each(function(value, index) { - if (!iterator(value, index)) - results.push(value); - }); - return results; - }, - - sortBy: function(iterator, context) { - iterator = iterator.bind(context); - return this.map(function(value, index) { - return {value: value, criteria: iterator(value, index)}; - }).sort(function(left, right) { - var a = left.criteria, b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - }).pluck('value'); - }, - - toArray: function() { - return this.map(); - }, - - zip: function() { - var iterator = Prototype.K, args = $A(arguments); - if (Object.isFunction(args.last())) - iterator = args.pop(); - - var collections = [this].concat(args).map($A); - return this.map(function(value, index) { - return iterator(collections.pluck(index)); - }); - }, - - size: function() { - return this.toArray().length; - }, - - inspect: function() { - return '#'; - } -}; - -Object.extend(Enumerable, { - map: Enumerable.collect, - find: Enumerable.detect, - select: Enumerable.findAll, - filter: Enumerable.findAll, - member: Enumerable.include, - entries: Enumerable.toArray, - every: Enumerable.all, - some: Enumerable.any -}); -function $A(iterable) { - if (!iterable) return []; - if (iterable.toArray) return iterable.toArray(); - var length = iterable.length || 0, results = new Array(length); - while (length--) results[length] = iterable[length]; - return results; -} - -if (Prototype.Browser.WebKit) { - function $A(iterable) { - if (!iterable) return []; - if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') && - iterable.toArray) return iterable.toArray(); - var length = iterable.length || 0, results = new Array(length); - while (length--) results[length] = iterable[length]; - return results; - } -} - -Array.from = $A; - -Object.extend(Array.prototype, Enumerable); - -if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse; - -Object.extend(Array.prototype, { - _each: function(iterator) { - for (var i = 0, length = this.length; i < length; i++) - iterator(this[i]); - }, - - clear: function() { - this.length = 0; - return this; - }, - - first: function() { - return this[0]; - }, - - last: function() { - return this[this.length - 1]; - }, - - compact: function() { - return this.select(function(value) { - return value != null; - }); - }, - - flatten: function() { - return this.inject([], function(array, value) { - return array.concat(Object.isArray(value) ? - value.flatten() : [value]); - }); - }, - - without: function() { - var values = $A(arguments); - return this.select(function(value) { - return !values.include(value); - }); - }, - - reverse: function(inline) { - return (inline !== false ? this : this.toArray())._reverse(); - }, - - reduce: function() { - return this.length > 1 ? this : this[0]; - }, - - uniq: function(sorted) { - return this.inject([], function(array, value, index) { - if (0 == index || (sorted ? array.last() != value : !array.include(value))) - array.push(value); - return array; - }); - }, - - intersect: function(array) { - return this.uniq().findAll(function(item) { - return array.detect(function(value) { return item === value }); - }); - }, - - clone: function() { - return [].concat(this); - }, - - size: function() { - return this.length; - }, - - inspect: function() { - return '[' + this.map(Object.inspect).join(', ') + ']'; - }, - - toJSON: function() { - var results = []; - this.each(function(object) { - var value = Object.toJSON(object); - if (!Object.isUndefined(value)) results.push(value); - }); - return '[' + results.join(', ') + ']'; - } -}); - -// use native browser JS 1.6 implementation if available -if (Object.isFunction(Array.prototype.forEach)) - Array.prototype._each = Array.prototype.forEach; - -if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) { - i || (i = 0); - var length = this.length; - if (i < 0) i = length + i; - for (; i < length; i++) - if (this[i] === item) return i; - return -1; -}; - -if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) { - i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; - var n = this.slice(0, i).reverse().indexOf(item); - return (n < 0) ? n : i - n - 1; -}; - -Array.prototype.toArray = Array.prototype.clone; - -function $w(string) { - if (!Object.isString(string)) return []; - string = string.strip(); - return string ? string.split(/\s+/) : []; -} - -if (Prototype.Browser.Opera){ - Array.prototype.concat = function() { - var array = []; - for (var i = 0, length = this.length; i < length; i++) array.push(this[i]); - for (var i = 0, length = arguments.length; i < length; i++) { - if (Object.isArray(arguments[i])) { - for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++) - array.push(arguments[i][j]); - } else { - array.push(arguments[i]); - } - } - return array; - }; -} -Object.extend(Number.prototype, { - toColorPart: function() { - return this.toPaddedString(2, 16); - }, - - succ: function() { - return this + 1; - }, - - times: function(iterator) { - $R(0, this, true).each(iterator); - return this; - }, - - toPaddedString: function(length, radix) { - var string = this.toString(radix || 10); - return '0'.times(length - string.length) + string; - }, - - toJSON: function() { - return isFinite(this) ? this.toString() : 'null'; - } -}); - -$w('abs round ceil floor').each(function(method){ - Number.prototype[method] = Math[method].methodize(); -}); -function $H(object) { - return new Hash(object); -}; - -var Hash = Class.create(Enumerable, (function() { - - function toQueryPair(key, value) { - if (Object.isUndefined(value)) return key; - return key + '=' + encodeURIComponent(String.interpret(value)); - } - - return { - initialize: function(object) { - this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); - }, - - _each: function(iterator) { - for (var key in this._object) { - var value = this._object[key], pair = [key, value]; - pair.key = key; - pair.value = value; - iterator(pair); - } - }, - - set: function(key, value) { - return this._object[key] = value; - }, - - get: function(key) { - return this._object[key]; - }, - - unset: function(key) { - var value = this._object[key]; - delete this._object[key]; - return value; - }, - - toObject: function() { - return Object.clone(this._object); - }, - - keys: function() { - return this.pluck('key'); - }, - - values: function() { - return this.pluck('value'); - }, - - index: function(value) { - var match = this.detect(function(pair) { - return pair.value === value; - }); - return match && match.key; - }, - - merge: function(object) { - return this.clone().update(object); - }, - - update: function(object) { - return new Hash(object).inject(this, function(result, pair) { - result.set(pair.key, pair.value); - return result; - }); - }, - - toQueryString: function() { - return this.map(function(pair) { - var key = encodeURIComponent(pair.key), values = pair.value; - - if (values && typeof values == 'object') { - if (Object.isArray(values)) - return values.map(toQueryPair.curry(key)).join('&'); - } - return toQueryPair(key, values); - }).join('&'); - }, - - inspect: function() { - return '#'; - }, - - toJSON: function() { - return Object.toJSON(this.toObject()); - }, - - clone: function() { - return new Hash(this); - } - } -})()); - -Hash.prototype.toTemplateReplacements = Hash.prototype.toObject; -Hash.from = $H; -var ObjectRange = Class.create(Enumerable, { - initialize: function(start, end, exclusive) { - this.start = start; - this.end = end; - this.exclusive = exclusive; - }, - - _each: function(iterator) { - var value = this.start; - while (this.include(value)) { - iterator(value); - value = value.succ(); - } - }, - - include: function(value) { - if (value < this.start) - return false; - if (this.exclusive) - return value < this.end; - return value <= this.end; - } -}); - -var $R = function(start, end, exclusive) { - return new ObjectRange(start, end, exclusive); -}; - -var Ajax = { - getTransport: function() { - return Try.these( - function() {return new XMLHttpRequest()}, - function() {return new ActiveXObject('Msxml2.XMLHTTP')}, - function() {return new ActiveXObject('Microsoft.XMLHTTP')} - ) || false; - }, - - activeRequestCount: 0 -}; - -Ajax.Responders = { - responders: [], - - _each: function(iterator) { - this.responders._each(iterator); - }, - - register: function(responder) { - if (!this.include(responder)) - this.responders.push(responder); - }, - - unregister: function(responder) { - this.responders = this.responders.without(responder); - }, - - dispatch: function(callback, request, transport, json) { - this.each(function(responder) { - if (Object.isFunction(responder[callback])) { - try { - responder[callback].apply(responder, [request, transport, json]); - } catch (e) { } - } - }); - } -}; - -Object.extend(Ajax.Responders, Enumerable); - -Ajax.Responders.register({ - onCreate: function() { Ajax.activeRequestCount++ }, - onComplete: function() { Ajax.activeRequestCount-- } -}); - -Ajax.Base = Class.create({ - initialize: function(options) { - this.options = { - method: 'post', - asynchronous: true, - contentType: 'application/x-www-form-urlencoded', - encoding: 'UTF-8', - parameters: '', - evalJSON: true, - evalJS: true - }; - Object.extend(this.options, options || { }); - - this.options.method = this.options.method.toLowerCase(); - - if (Object.isString(this.options.parameters)) - this.options.parameters = this.options.parameters.toQueryParams(); - else if (Object.isHash(this.options.parameters)) - this.options.parameters = this.options.parameters.toObject(); - } -}); - -Ajax.Request = Class.create(Ajax.Base, { - _complete: false, - - initialize: function($super, url, options) { - $super(options); - this.transport = Ajax.getTransport(); - this.request(url); - }, - - request: function(url) { - this.url = url; - this.method = this.options.method; - var params = Object.clone(this.options.parameters); - - if (!['get', 'post'].include(this.method)) { - // simulate other verbs over post - params['_method'] = this.method; - this.method = 'post'; - } - - this.parameters = params; - - if (params = Object.toQueryString(params)) { - // when GET, append parameters to URL - if (this.method == 'get') - this.url += (this.url.include('?') ? '&' : '?') + params; - else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) - params += '&_='; - } - - try { - var response = new Ajax.Response(this); - if (this.options.onCreate) this.options.onCreate(response); - Ajax.Responders.dispatch('onCreate', this, response); - - this.transport.open(this.method.toUpperCase(), this.url, - this.options.asynchronous); - - if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); - - this.transport.onreadystatechange = this.onStateChange.bind(this); - this.setRequestHeaders(); - - this.body = this.method == 'post' ? (this.options.postBody || params) : null; - this.transport.send(this.body); - - /* Force Firefox to handle ready state 4 for synchronous requests */ - if (!this.options.asynchronous && this.transport.overrideMimeType) - this.onStateChange(); - - } - catch (e) { - this.dispatchException(e); - } - }, - - onStateChange: function() { - var readyState = this.transport.readyState; - if (readyState > 1 && !((readyState == 4) && this._complete)) - this.respondToReadyState(this.transport.readyState); - }, - - setRequestHeaders: function() { - var headers = { - 'X-Requested-With': 'XMLHttpRequest', - 'X-Prototype-Version': Prototype.Version, - 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' - }; - - if (this.method == 'post') { - headers['Content-type'] = this.options.contentType + - (this.options.encoding ? '; charset=' + this.options.encoding : ''); - - /* Force "Connection: close" for older Mozilla browsers to work - * around a bug where XMLHttpRequest sends an incorrect - * Content-length header. See Mozilla Bugzilla #246651. - */ - if (this.transport.overrideMimeType && - (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) - headers['Connection'] = 'close'; - } - - // user-defined headers - if (typeof this.options.requestHeaders == 'object') { - var extras = this.options.requestHeaders; - - if (Object.isFunction(extras.push)) - for (var i = 0, length = extras.length; i < length; i += 2) - headers[extras[i]] = extras[i+1]; - else - $H(extras).each(function(pair) { headers[pair.key] = pair.value }); - } - - for (var name in headers) - this.transport.setRequestHeader(name, headers[name]); - }, - - success: function() { - var status = this.getStatus(); - return !status || (status >= 200 && status < 300); - }, - - getStatus: function() { - try { - return this.transport.status || 0; - } catch (e) { return 0 } - }, - - respondToReadyState: function(readyState) { - var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this); - - if (state == 'Complete') { - try { - this._complete = true; - (this.options['on' + response.status] - || this.options['on' + (this.success() ? 'Success' : 'Failure')] - || Prototype.emptyFunction)(response, response.headerJSON); - } catch (e) { - this.dispatchException(e); - } - - var contentType = response.getHeader('Content-type'); - if (this.options.evalJS == 'force' - || (this.options.evalJS && contentType - && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) - this.evalResponse(); - } - - try { - (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); - Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); - } catch (e) { - this.dispatchException(e); - } - - if (state == 'Complete') { - // avoid memory leak in MSIE: clean up - this.transport.onreadystatechange = Prototype.emptyFunction; - } - }, - - getHeader: function(name) { - try { - return this.transport.getResponseHeader(name) || null; - } catch (e) { return null } - }, - - evalResponse: function() { - try { - return eval((this.transport.responseText || '').unfilterJSON()); - } catch (e) { - this.dispatchException(e); - } - }, - - dispatchException: function(exception) { - (this.options.onException || Prototype.emptyFunction)(this, exception); - Ajax.Responders.dispatch('onException', this, exception); - } -}); - -Ajax.Request.Events = - ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; - -Ajax.Response = Class.create({ - initialize: function(request){ - this.request = request; - var transport = this.transport = request.transport, - readyState = this.readyState = transport.readyState; - - if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { - this.status = this.getStatus(); - this.statusText = this.getStatusText(); - this.responseText = String.interpret(transport.responseText); - this.headerJSON = this._getHeaderJSON(); - } - - if(readyState == 4) { - var xml = transport.responseXML; - this.responseXML = Object.isUndefined(xml) ? null : xml; - this.responseJSON = this._getResponseJSON(); - } - }, - - status: 0, - statusText: '', - - getStatus: Ajax.Request.prototype.getStatus, - - getStatusText: function() { - try { - return this.transport.statusText || ''; - } catch (e) { return '' } - }, - - getHeader: Ajax.Request.prototype.getHeader, - - getAllHeaders: function() { - try { - return this.getAllResponseHeaders(); - } catch (e) { return null } - }, - - getResponseHeader: function(name) { - return this.transport.getResponseHeader(name); - }, - - getAllResponseHeaders: function() { - return this.transport.getAllResponseHeaders(); - }, - - _getHeaderJSON: function() { - var json = this.getHeader('X-JSON'); - if (!json) return null; - json = decodeURIComponent(escape(json)); - try { - return json.evalJSON(this.request.options.sanitizeJSON); - } catch (e) { - this.request.dispatchException(e); - } - }, - - _getResponseJSON: function() { - var options = this.request.options; - if (!options.evalJSON || (options.evalJSON != 'force' && - !(this.getHeader('Content-type') || '').include('application/json')) || - this.responseText.blank()) - return null; - try { - return this.responseText.evalJSON(options.sanitizeJSON); - } catch (e) { - this.request.dispatchException(e); - } - } -}); - -Ajax.Updater = Class.create(Ajax.Request, { - initialize: function($super, container, url, options) { - this.container = { - success: (container.success || container), - failure: (container.failure || (container.success ? null : container)) - }; - - options = Object.clone(options); - var onComplete = options.onComplete; - options.onComplete = (function(response, json) { - this.updateContent(response.responseText); - if (Object.isFunction(onComplete)) onComplete(response, json); - }).bind(this); - - $super(url, options); - }, - - updateContent: function(responseText) { - var receiver = this.container[this.success() ? 'success' : 'failure'], - options = this.options; - - if (!options.evalScripts) responseText = responseText.stripScripts(); - - if (receiver = $(receiver)) { - if (options.insertion) { - if (Object.isString(options.insertion)) { - var insertion = { }; insertion[options.insertion] = responseText; - receiver.insert(insertion); - } - else options.insertion(receiver, responseText); - } - else receiver.update(responseText); - } - } -}); - -Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { - initialize: function($super, container, url, options) { - $super(options); - this.onComplete = this.options.onComplete; - - this.frequency = (this.options.frequency || 2); - this.decay = (this.options.decay || 1); - - this.updater = { }; - this.container = container; - this.url = url; - - this.start(); - }, - - start: function() { - this.options.onComplete = this.updateComplete.bind(this); - this.onTimerEvent(); - }, - - stop: function() { - this.updater.options.onComplete = undefined; - clearTimeout(this.timer); - (this.onComplete || Prototype.emptyFunction).apply(this, arguments); - }, - - updateComplete: function(response) { - if (this.options.decay) { - this.decay = (response.responseText == this.lastText ? - this.decay * this.options.decay : 1); - - this.lastText = response.responseText; - } - this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); - }, - - onTimerEvent: function() { - this.updater = new Ajax.Updater(this.container, this.url, this.options); - } -}); -function $(element) { - if (arguments.length > 1) { - for (var i = 0, elements = [], length = arguments.length; i < length; i++) - elements.push($(arguments[i])); - return elements; - } - if (Object.isString(element)) - element = document.getElementById(element); - return Element.extend(element); -} - -if (Prototype.BrowserFeatures.XPath) { - document._getElementsByXPath = function(expression, parentElement) { - var results = []; - var query = document.evaluate(expression, $(parentElement) || document, - null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); - for (var i = 0, length = query.snapshotLength; i < length; i++) - results.push(Element.extend(query.snapshotItem(i))); - return results; - }; -} - -/*--------------------------------------------------------------------------*/ - -if (!window.Node) var Node = { }; - -if (!Node.ELEMENT_NODE) { - // DOM level 2 ECMAScript Language Binding - Object.extend(Node, { - ELEMENT_NODE: 1, - ATTRIBUTE_NODE: 2, - TEXT_NODE: 3, - CDATA_SECTION_NODE: 4, - ENTITY_REFERENCE_NODE: 5, - ENTITY_NODE: 6, - PROCESSING_INSTRUCTION_NODE: 7, - COMMENT_NODE: 8, - DOCUMENT_NODE: 9, - DOCUMENT_TYPE_NODE: 10, - DOCUMENT_FRAGMENT_NODE: 11, - NOTATION_NODE: 12 - }); -} - -(function() { - var element = this.Element; - this.Element = function(tagName, attributes) { - attributes = attributes || { }; - tagName = tagName.toLowerCase(); - var cache = Element.cache; - if (Prototype.Browser.IE && attributes.name) { - tagName = '<' + tagName + ' name="' + attributes.name + '">'; - delete attributes.name; - return Element.writeAttribute(document.createElement(tagName), attributes); - } - if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); - return Element.writeAttribute(cache[tagName].cloneNode(false), attributes); - }; - Object.extend(this.Element, element || { }); -}).call(window); - -Element.cache = { }; - -Element.Methods = { - visible: function(element) { - return $(element).style.display != 'none'; - }, - - toggle: function(element) { - element = $(element); - Element[Element.visible(element) ? 'hide' : 'show'](element); - return element; - }, - - hide: function(element) { - $(element).style.display = 'none'; - return element; - }, - - show: function(element) { - $(element).style.display = ''; - return element; - }, - - remove: function(element) { - element = $(element); - element.parentNode.removeChild(element); - return element; - }, - - update: function(element, content) { - element = $(element); - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) return element.update().insert(content); - content = Object.toHTML(content); - element.innerHTML = content.stripScripts(); - content.evalScripts.bind(content).defer(); - return element; - }, - - replace: function(element, content) { - element = $(element); - if (content && content.toElement) content = content.toElement(); - else if (!Object.isElement(content)) { - content = Object.toHTML(content); - var range = element.ownerDocument.createRange(); - range.selectNode(element); - content.evalScripts.bind(content).defer(); - content = range.createContextualFragment(content.stripScripts()); - } - element.parentNode.replaceChild(content, element); - return element; - }, - - insert: function(element, insertions) { - element = $(element); - - if (Object.isString(insertions) || Object.isNumber(insertions) || - Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) - insertions = {bottom:insertions}; - - var content, insert, tagName, childNodes; - - for (position in insertions) { - content = insertions[position]; - position = position.toLowerCase(); - insert = Element._insertionTranslations[position]; - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - insert(element, content); - continue; - } - - content = Object.toHTML(content); - - tagName = ((position == 'before' || position == 'after') - ? element.parentNode : element).tagName.toUpperCase(); - - childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); - - if (position == 'top' || position == 'after') childNodes.reverse(); - childNodes.each(insert.curry(element)); - - content.evalScripts.bind(content).defer(); - } - - return element; - }, - - wrap: function(element, wrapper, attributes) { - element = $(element); - if (Object.isElement(wrapper)) - $(wrapper).writeAttribute(attributes || { }); - else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); - else wrapper = new Element('div', wrapper); - if (element.parentNode) - element.parentNode.replaceChild(wrapper, element); - wrapper.appendChild(element); - return wrapper; - }, - - inspect: function(element) { - element = $(element); - var result = '<' + element.tagName.toLowerCase(); - $H({'id': 'id', 'className': 'class'}).each(function(pair) { - var property = pair.first(), attribute = pair.last(); - var value = (element[property] || '').toString(); - if (value) result += ' ' + attribute + '=' + value.inspect(true); - }); - return result + '>'; - }, - - recursivelyCollect: function(element, property) { - element = $(element); - var elements = []; - while (element = element[property]) - if (element.nodeType == 1) - elements.push(Element.extend(element)); - return elements; - }, - - ancestors: function(element) { - return $(element).recursivelyCollect('parentNode'); - }, - - descendants: function(element) { - return $(element).getElementsBySelector("*"); - }, - - firstDescendant: function(element) { - element = $(element).firstChild; - while (element && element.nodeType != 1) element = element.nextSibling; - return $(element); - }, - - immediateDescendants: function(element) { - if (!(element = $(element).firstChild)) return []; - while (element && element.nodeType != 1) element = element.nextSibling; - if (element) return [element].concat($(element).nextSiblings()); - return []; - }, - - previousSiblings: function(element) { - return $(element).recursivelyCollect('previousSibling'); - }, - - nextSiblings: function(element) { - return $(element).recursivelyCollect('nextSibling'); - }, - - siblings: function(element) { - element = $(element); - return element.previousSiblings().reverse().concat(element.nextSiblings()); - }, - - match: function(element, selector) { - if (Object.isString(selector)) - selector = new Selector(selector); - return selector.match($(element)); - }, - - up: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(element.parentNode); - var ancestors = element.ancestors(); - return Object.isNumber(expression) ? ancestors[expression] : - Selector.findElement(ancestors, expression, index); - }, - - down: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return element.firstDescendant(); - return Object.isNumber(expression) ? element.descendants()[expression] : - element.select(expression)[index || 0]; - }, - - previous: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element)); - var previousSiblings = element.previousSiblings(); - return Object.isNumber(expression) ? previousSiblings[expression] : - Selector.findElement(previousSiblings, expression, index); - }, - - next: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element)); - var nextSiblings = element.nextSiblings(); - return Object.isNumber(expression) ? nextSiblings[expression] : - Selector.findElement(nextSiblings, expression, index); - }, - - select: function() { - var args = $A(arguments), element = $(args.shift()); - return Selector.findChildElements(element, args); - }, - - adjacent: function() { - var args = $A(arguments), element = $(args.shift()); - return Selector.findChildElements(element.parentNode, args).without(element); - }, - - identify: function(element) { - element = $(element); - var id = element.readAttribute('id'), self = arguments.callee; - if (id) return id; - do { id = 'anonymous_element_' + self.counter++ } while ($(id)); - element.writeAttribute('id', id); - return id; - }, - - readAttribute: function(element, name) { - element = $(element); - if (Prototype.Browser.IE) { - var t = Element._attributeTranslations.read; - if (t.values[name]) return t.values[name](element, name); - if (t.names[name]) name = t.names[name]; - if (name.include(':')) { - return (!element.attributes || !element.attributes[name]) ? null : - element.attributes[name].value; - } - } - return element.getAttribute(name); - }, - - writeAttribute: function(element, name, value) { - element = $(element); - var attributes = { }, t = Element._attributeTranslations.write; - - if (typeof name == 'object') attributes = name; - else attributes[name] = Object.isUndefined(value) ? true : value; - - for (var attr in attributes) { - name = t.names[attr] || attr; - value = attributes[attr]; - if (t.values[attr]) name = t.values[attr](element, value); - if (value === false || value === null) - element.removeAttribute(name); - else if (value === true) - element.setAttribute(name, name); - else element.setAttribute(name, value); - } - return element; - }, - - getHeight: function(element) { - return $(element).getDimensions().height; - }, - - getWidth: function(element) { - return $(element).getDimensions().width; - }, - - classNames: function(element) { - return new Element.ClassNames(element); - }, - - hasClassName: function(element, className) { - if (!(element = $(element))) return; - var elementClassName = element.className; - return (elementClassName.length > 0 && (elementClassName == className || - new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); - }, - - addClassName: function(element, className) { - if (!(element = $(element))) return; - if (!element.hasClassName(className)) - element.className += (element.className ? ' ' : '') + className; - return element; - }, - - removeClassName: function(element, className) { - if (!(element = $(element))) return; - element.className = element.className.replace( - new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); - return element; - }, - - toggleClassName: function(element, className) { - if (!(element = $(element))) return; - return element[element.hasClassName(className) ? - 'removeClassName' : 'addClassName'](className); - }, - - // removes whitespace-only text node children - cleanWhitespace: function(element) { - element = $(element); - var node = element.firstChild; - while (node) { - var nextNode = node.nextSibling; - if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) - element.removeChild(node); - node = nextNode; - } - return element; - }, - - empty: function(element) { - return $(element).innerHTML.blank(); - }, - - descendantOf: function(element, ancestor) { - element = $(element), ancestor = $(ancestor); - var originalAncestor = ancestor; - - if (element.compareDocumentPosition) - return (element.compareDocumentPosition(ancestor) & 8) === 8; - - if (element.sourceIndex && !Prototype.Browser.Opera) { - var e = element.sourceIndex, a = ancestor.sourceIndex, - nextAncestor = ancestor.nextSibling; - if (!nextAncestor) { - do { ancestor = ancestor.parentNode; } - while (!(nextAncestor = ancestor.nextSibling) && ancestor.parentNode); - } - if (nextAncestor) return (e > a && e < nextAncestor.sourceIndex); - } - - while (element = element.parentNode) - if (element == originalAncestor) return true; - return false; - }, - - scrollTo: function(element) { - element = $(element); - var pos = element.cumulativeOffset(); - window.scrollTo(pos[0], pos[1]); - return element; - }, - - getStyle: function(element, style) { - element = $(element); - style = style == 'float' ? 'cssFloat' : style.camelize(); - var value = element.style[style]; - if (!value) { - var css = document.defaultView.getComputedStyle(element, null); - value = css ? css[style] : null; - } - if (style == 'opacity') return value ? parseFloat(value) : 1.0; - return value == 'auto' ? null : value; - }, - - getOpacity: function(element) { - return $(element).getStyle('opacity'); - }, - - setStyle: function(element, styles) { - element = $(element); - var elementStyle = element.style, match; - if (Object.isString(styles)) { - element.style.cssText += ';' + styles; - return styles.include('opacity') ? - element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; - } - for (var property in styles) - if (property == 'opacity') element.setOpacity(styles[property]); - else - elementStyle[(property == 'float' || property == 'cssFloat') ? - (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : - property] = styles[property]; - - return element; - }, - - setOpacity: function(element, value) { - element = $(element); - element.style.opacity = (value == 1 || value === '') ? '' : - (value < 0.00001) ? 0 : value; - return element; - }, - - getDimensions: function(element) { - element = $(element); - var display = $(element).getStyle('display'); - if (display != 'none' && display != null) // Safari bug - return {width: element.offsetWidth, height: element.offsetHeight}; - - // All *Width and *Height properties give 0 on elements with display none, - // so enable the element temporarily - var els = element.style; - var originalVisibility = els.visibility; - var originalPosition = els.position; - var originalDisplay = els.display; - els.visibility = 'hidden'; - els.position = 'absolute'; - els.display = 'block'; - var originalWidth = element.clientWidth; - var originalHeight = element.clientHeight; - els.display = originalDisplay; - els.position = originalPosition; - els.visibility = originalVisibility; - return {width: originalWidth, height: originalHeight}; - }, - - makePositioned: function(element) { - element = $(element); - var pos = Element.getStyle(element, 'position'); - if (pos == 'static' || !pos) { - element._madePositioned = true; - element.style.position = 'relative'; - // Opera returns the offset relative to the positioning context, when an - // element is position relative but top and left have not been defined - if (window.opera) { - element.style.top = 0; - element.style.left = 0; - } - } - return element; - }, - - undoPositioned: function(element) { - element = $(element); - if (element._madePositioned) { - element._madePositioned = undefined; - element.style.position = - element.style.top = - element.style.left = - element.style.bottom = - element.style.right = ''; - } - return element; - }, - - makeClipping: function(element) { - element = $(element); - if (element._overflow) return element; - element._overflow = Element.getStyle(element, 'overflow') || 'auto'; - if (element._overflow !== 'hidden') - element.style.overflow = 'hidden'; - return element; - }, - - undoClipping: function(element) { - element = $(element); - if (!element._overflow) return element; - element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; - element._overflow = null; - return element; - }, - - cumulativeOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - } while (element); - return Element._returnOffset(valueL, valueT); - }, - - positionedOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - if (element) { - if (element.tagName == 'BODY') break; - var p = Element.getStyle(element, 'position'); - if (p == 'relative' || p == 'absolute') break; - } - } while (element); - return Element._returnOffset(valueL, valueT); - }, - - absolutize: function(element) { - element = $(element); - if (element.getStyle('position') == 'absolute') return; - // Position.prepare(); // To be done manually by Scripty when it needs it. - - var offsets = element.positionedOffset(); - var top = offsets[1]; - var left = offsets[0]; - var width = element.clientWidth; - var height = element.clientHeight; - - element._originalLeft = left - parseFloat(element.style.left || 0); - element._originalTop = top - parseFloat(element.style.top || 0); - element._originalWidth = element.style.width; - element._originalHeight = element.style.height; - - element.style.position = 'absolute'; - element.style.top = top + 'px'; - element.style.left = left + 'px'; - element.style.width = width + 'px'; - element.style.height = height + 'px'; - return element; - }, - - relativize: function(element) { - element = $(element); - if (element.getStyle('position') == 'relative') return; - // Position.prepare(); // To be done manually by Scripty when it needs it. - - element.style.position = 'relative'; - var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); - var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); - - element.style.top = top + 'px'; - element.style.left = left + 'px'; - element.style.height = element._originalHeight; - element.style.width = element._originalWidth; - return element; - }, - - cumulativeScrollOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.scrollTop || 0; - valueL += element.scrollLeft || 0; - element = element.parentNode; - } while (element); - return Element._returnOffset(valueL, valueT); - }, - - getOffsetParent: function(element) { - if (element.offsetParent) return $(element.offsetParent); - if (element == document.body) return $(element); - - while ((element = element.parentNode) && element != document.body) - if (Element.getStyle(element, 'position') != 'static') - return $(element); - - return $(document.body); - }, - - viewportOffset: function(forElement) { - var valueT = 0, valueL = 0; - - var element = forElement; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - - // Safari fix - if (element.offsetParent == document.body && - Element.getStyle(element, 'position') == 'absolute') break; - - } while (element = element.offsetParent); - - element = forElement; - do { - if (!Prototype.Browser.Opera || element.tagName == 'BODY') { - valueT -= element.scrollTop || 0; - valueL -= element.scrollLeft || 0; - } - } while (element = element.parentNode); - - return Element._returnOffset(valueL, valueT); - }, - - clonePosition: function(element, source) { - var options = Object.extend({ - setLeft: true, - setTop: true, - setWidth: true, - setHeight: true, - offsetTop: 0, - offsetLeft: 0 - }, arguments[2] || { }); - - // find page position of source - source = $(source); - var p = source.viewportOffset(); - - // find coordinate system to use - element = $(element); - var delta = [0, 0]; - var parent = null; - // delta [0,0] will do fine with position: fixed elements, - // position:absolute needs offsetParent deltas - if (Element.getStyle(element, 'position') == 'absolute') { - parent = element.getOffsetParent(); - delta = parent.viewportOffset(); - } - - // correct by body offsets (fixes Safari) - if (parent == document.body) { - delta[0] -= document.body.offsetLeft; - delta[1] -= document.body.offsetTop; - } - - // set position - if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; - if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; - if (options.setWidth) element.style.width = source.offsetWidth + 'px'; - if (options.setHeight) element.style.height = source.offsetHeight + 'px'; - return element; - } -}; - -Element.Methods.identify.counter = 1; - -Object.extend(Element.Methods, { - getElementsBySelector: Element.Methods.select, - childElements: Element.Methods.immediateDescendants -}); - -Element._attributeTranslations = { - write: { - names: { - className: 'class', - htmlFor: 'for' - }, - values: { } - } -}; - -if (Prototype.Browser.Opera) { - Element.Methods.getStyle = Element.Methods.getStyle.wrap( - function(proceed, element, style) { - switch (style) { - case 'left': case 'top': case 'right': case 'bottom': - if (proceed(element, 'position') === 'static') return null; - case 'height': case 'width': - // returns '0px' for hidden elements; we want it to return null - if (!Element.visible(element)) return null; - - // returns the border-box dimensions rather than the content-box - // dimensions, so we subtract padding and borders from the value - var dim = parseInt(proceed(element, style), 10); - - if (dim !== element['offset' + style.capitalize()]) - return dim + 'px'; - - var properties; - if (style === 'height') { - properties = ['border-top-width', 'padding-top', - 'padding-bottom', 'border-bottom-width']; - } - else { - properties = ['border-left-width', 'padding-left', - 'padding-right', 'border-right-width']; - } - return properties.inject(dim, function(memo, property) { - var val = proceed(element, property); - return val === null ? memo : memo - parseInt(val, 10); - }) + 'px'; - default: return proceed(element, style); - } - } - ); - - Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( - function(proceed, element, attribute) { - if (attribute === 'title') return element.title; - return proceed(element, attribute); - } - ); -} - -else if (Prototype.Browser.IE) { - $w('positionedOffset getOffsetParent viewportOffset').each(function(method) { - Element.Methods[method] = Element.Methods[method].wrap( - function(proceed, element) { - element = $(element); - var position = element.getStyle('position'); - if (position != 'static') return proceed(element); - element.setStyle({ position: 'relative' }); - var value = proceed(element); - element.setStyle({ position: position }); - return value; - } - ); - }); - - Element.Methods.getStyle = function(element, style) { - element = $(element); - style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); - var value = element.style[style]; - if (!value && element.currentStyle) value = element.currentStyle[style]; - - if (style == 'opacity') { - if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) - if (value[1]) return parseFloat(value[1]) / 100; - return 1.0; - } - - if (value == 'auto') { - if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) - return element['offset' + style.capitalize()] + 'px'; - return null; - } - return value; - }; - - Element.Methods.setOpacity = function(element, value) { - function stripAlpha(filter){ - return filter.replace(/alpha\([^\)]*\)/gi,''); - } - element = $(element); - var currentStyle = element.currentStyle; - if ((currentStyle && !currentStyle.hasLayout) || - (!currentStyle && element.style.zoom == 'normal')) - element.style.zoom = 1; - - var filter = element.getStyle('filter'), style = element.style; - if (value == 1 || value === '') { - (filter = stripAlpha(filter)) ? - style.filter = filter : style.removeAttribute('filter'); - return element; - } else if (value < 0.00001) value = 0; - style.filter = stripAlpha(filter) + - 'alpha(opacity=' + (value * 100) + ')'; - return element; - }; - - Element._attributeTranslations = { - read: { - names: { - 'class': 'className', - 'for': 'htmlFor' - }, - values: { - _getAttr: function(element, attribute) { - return element.getAttribute(attribute, 2); - }, - _getAttrNode: function(element, attribute) { - var node = element.getAttributeNode(attribute); - return node ? node.value : ""; - }, - _getEv: function(element, attribute) { - attribute = element.getAttribute(attribute); - return attribute ? attribute.toString().slice(23, -2) : null; - }, - _flag: function(element, attribute) { - return $(element).hasAttribute(attribute) ? attribute : null; - }, - style: function(element) { - return element.style.cssText.toLowerCase(); - }, - title: function(element) { - return element.title; - } - } - } - }; - - Element._attributeTranslations.write = { - names: Object.clone(Element._attributeTranslations.read.names), - values: { - checked: function(element, value) { - element.checked = !!value; - }, - - style: function(element, value) { - element.style.cssText = value ? value : ''; - } - } - }; - - Element._attributeTranslations.has = {}; - - $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + - 'encType maxLength readOnly longDesc').each(function(attr) { - Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; - Element._attributeTranslations.has[attr.toLowerCase()] = attr; - }); - - (function(v) { - Object.extend(v, { - href: v._getAttr, - src: v._getAttr, - type: v._getAttr, - action: v._getAttrNode, - disabled: v._flag, - checked: v._flag, - readonly: v._flag, - multiple: v._flag, - onload: v._getEv, - onunload: v._getEv, - onclick: v._getEv, - ondblclick: v._getEv, - onmousedown: v._getEv, - onmouseup: v._getEv, - onmouseover: v._getEv, - onmousemove: v._getEv, - onmouseout: v._getEv, - onfocus: v._getEv, - onblur: v._getEv, - onkeypress: v._getEv, - onkeydown: v._getEv, - onkeyup: v._getEv, - onsubmit: v._getEv, - onreset: v._getEv, - onselect: v._getEv, - onchange: v._getEv - }); - })(Element._attributeTranslations.read.values); -} - -else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { - Element.Methods.setOpacity = function(element, value) { - element = $(element); - element.style.opacity = (value == 1) ? 0.999999 : - (value === '') ? '' : (value < 0.00001) ? 0 : value; - return element; - }; -} - -else if (Prototype.Browser.WebKit) { - Element.Methods.setOpacity = function(element, value) { - element = $(element); - element.style.opacity = (value == 1 || value === '') ? '' : - (value < 0.00001) ? 0 : value; - - if (value == 1) - if(element.tagName == 'IMG' && element.width) { - element.width++; element.width--; - } else try { - var n = document.createTextNode(' '); - element.appendChild(n); - element.removeChild(n); - } catch (e) { } - - return element; - }; - - // Safari returns margins on body which is incorrect if the child is absolutely - // positioned. For performance reasons, redefine Element#cumulativeOffset for - // KHTML/WebKit only. - Element.Methods.cumulativeOffset = function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - if (element.offsetParent == document.body) - if (Element.getStyle(element, 'position') == 'absolute') break; - - element = element.offsetParent; - } while (element); - - return Element._returnOffset(valueL, valueT); - }; -} - -if (Prototype.Browser.IE || Prototype.Browser.Opera) { - // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements - Element.Methods.update = function(element, content) { - element = $(element); - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) return element.update().insert(content); - - content = Object.toHTML(content); - var tagName = element.tagName.toUpperCase(); - - if (tagName in Element._insertionTranslations.tags) { - $A(element.childNodes).each(function(node) { element.removeChild(node) }); - Element._getContentFromAnonymousElement(tagName, content.stripScripts()) - .each(function(node) { element.appendChild(node) }); - } - else element.innerHTML = content.stripScripts(); - - content.evalScripts.bind(content).defer(); - return element; - }; -} - -if (document.createElement('div').outerHTML) { - Element.Methods.replace = function(element, content) { - element = $(element); - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - element.parentNode.replaceChild(content, element); - return element; - } - - content = Object.toHTML(content); - var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); - - if (Element._insertionTranslations.tags[tagName]) { - var nextSibling = element.next(); - var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); - parent.removeChild(element); - if (nextSibling) - fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); - else - fragments.each(function(node) { parent.appendChild(node) }); - } - else element.outerHTML = content.stripScripts(); - - content.evalScripts.bind(content).defer(); - return element; - }; -} - -Element._returnOffset = function(l, t) { - var result = [l, t]; - result.left = l; - result.top = t; - return result; -}; - -Element._getContentFromAnonymousElement = function(tagName, html) { - var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; - if (t) { - div.innerHTML = t[0] + html + t[1]; - t[2].times(function() { div = div.firstChild }); - } else div.innerHTML = html; - return $A(div.childNodes); -}; - -Element._insertionTranslations = { - before: function(element, node) { - element.parentNode.insertBefore(node, element); - }, - top: function(element, node) { - element.insertBefore(node, element.firstChild); - }, - bottom: function(element, node) { - element.appendChild(node); - }, - after: function(element, node) { - element.parentNode.insertBefore(node, element.nextSibling); - }, - tags: { - TABLE: ['', '
      ', 1], - TBODY: ['', '
      ', 2], - TR: ['', '
      ', 3], - TD: ['
      ', '
      ', 4], - SELECT: ['', 1] - } -}; - -(function() { - Object.extend(this.tags, { - THEAD: this.tags.TBODY, - TFOOT: this.tags.TBODY, - TH: this.tags.TD - }); -}).call(Element._insertionTranslations); - -Element.Methods.Simulated = { - hasAttribute: function(element, attribute) { - attribute = Element._attributeTranslations.has[attribute] || attribute; - var node = $(element).getAttributeNode(attribute); - return node && node.specified; - } -}; - -Element.Methods.ByTag = { }; - -Object.extend(Element, Element.Methods); - -if (!Prototype.BrowserFeatures.ElementExtensions && - document.createElement('div').__proto__) { - window.HTMLElement = { }; - window.HTMLElement.prototype = document.createElement('div').__proto__; - Prototype.BrowserFeatures.ElementExtensions = true; -} - -Element.extend = (function() { - if (Prototype.BrowserFeatures.SpecificElementExtensions) - return Prototype.K; - - var Methods = { }, ByTag = Element.Methods.ByTag; - - var extend = Object.extend(function(element) { - if (!element || element._extendedByPrototype || - element.nodeType != 1 || element == window) return element; - - var methods = Object.clone(Methods), - tagName = element.tagName, property, value; - - // extend methods for specific tags - if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); - - for (property in methods) { - value = methods[property]; - if (Object.isFunction(value) && !(property in element)) - element[property] = value.methodize(); - } - - element._extendedByPrototype = Prototype.emptyFunction; - return element; - - }, { - refresh: function() { - // extend methods for all tags (Safari doesn't need this) - if (!Prototype.BrowserFeatures.ElementExtensions) { - Object.extend(Methods, Element.Methods); - Object.extend(Methods, Element.Methods.Simulated); - } - } - }); - - extend.refresh(); - return extend; -})(); - -Element.hasAttribute = function(element, attribute) { - if (element.hasAttribute) return element.hasAttribute(attribute); - return Element.Methods.Simulated.hasAttribute(element, attribute); -}; - -Element.addMethods = function(methods) { - var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; - - if (!methods) { - Object.extend(Form, Form.Methods); - Object.extend(Form.Element, Form.Element.Methods); - Object.extend(Element.Methods.ByTag, { - "FORM": Object.clone(Form.Methods), - "INPUT": Object.clone(Form.Element.Methods), - "SELECT": Object.clone(Form.Element.Methods), - "TEXTAREA": Object.clone(Form.Element.Methods) - }); - } - - if (arguments.length == 2) { - var tagName = methods; - methods = arguments[1]; - } - - if (!tagName) Object.extend(Element.Methods, methods || { }); - else { - if (Object.isArray(tagName)) tagName.each(extend); - else extend(tagName); - } - - function extend(tagName) { - tagName = tagName.toUpperCase(); - if (!Element.Methods.ByTag[tagName]) - Element.Methods.ByTag[tagName] = { }; - Object.extend(Element.Methods.ByTag[tagName], methods); - } - - function copy(methods, destination, onlyIfAbsent) { - onlyIfAbsent = onlyIfAbsent || false; - for (var property in methods) { - var value = methods[property]; - if (!Object.isFunction(value)) continue; - if (!onlyIfAbsent || !(property in destination)) - destination[property] = value.methodize(); - } - } - - function findDOMClass(tagName) { - var klass; - var trans = { - "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", - "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", - "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", - "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", - "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": - "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": - "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": - "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": - "FrameSet", "IFRAME": "IFrame" - }; - if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; - if (window[klass]) return window[klass]; - klass = 'HTML' + tagName + 'Element'; - if (window[klass]) return window[klass]; - klass = 'HTML' + tagName.capitalize() + 'Element'; - if (window[klass]) return window[klass]; - - window[klass] = { }; - window[klass].prototype = document.createElement(tagName).__proto__; - return window[klass]; - } - - if (F.ElementExtensions) { - copy(Element.Methods, HTMLElement.prototype); - copy(Element.Methods.Simulated, HTMLElement.prototype, true); - } - - if (F.SpecificElementExtensions) { - for (var tag in Element.Methods.ByTag) { - var klass = findDOMClass(tag); - if (Object.isUndefined(klass)) continue; - copy(T[tag], klass.prototype); - } - } - - Object.extend(Element, Element.Methods); - delete Element.ByTag; - - if (Element.extend.refresh) Element.extend.refresh(); - Element.cache = { }; -}; - -document.viewport = { - getDimensions: function() { - var dimensions = { }; - var B = Prototype.Browser; - $w('width height').each(function(d) { - var D = d.capitalize(); - dimensions[d] = (B.WebKit && !document.evaluate) ? self['inner' + D] : - (B.Opera) ? document.body['client' + D] : document.documentElement['client' + D]; - }); - return dimensions; - }, - - getWidth: function() { - return this.getDimensions().width; - }, - - getHeight: function() { - return this.getDimensions().height; - }, - - getScrollOffsets: function() { - return Element._returnOffset( - window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, - window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); - } -}; -/* Portions of the Selector class are derived from Jack Slocum’s DomQuery, - * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style - * license. Please see http://www.yui-ext.com/ for more information. */ - -var Selector = Class.create({ - initialize: function(expression) { - this.expression = expression.strip(); - this.compileMatcher(); - }, - - shouldUseXPath: function() { - if (!Prototype.BrowserFeatures.XPath) return false; - - var e = this.expression; - - // Safari 3 chokes on :*-of-type and :empty - if (Prototype.Browser.WebKit && - (e.include("-of-type") || e.include(":empty"))) - return false; - - // XPath can't do namespaced attributes, nor can it read - // the "checked" property from DOM nodes - if ((/(\[[\w-]*?:|:checked)/).test(this.expression)) - return false; - - return true; - }, - - compileMatcher: function() { - if (this.shouldUseXPath()) - return this.compileXPathMatcher(); - - var e = this.expression, ps = Selector.patterns, h = Selector.handlers, - c = Selector.criteria, le, p, m; - - if (Selector._cache[e]) { - this.matcher = Selector._cache[e]; - return; - } - - this.matcher = ["this.matcher = function(root) {", - "var r = root, h = Selector.handlers, c = false, n;"]; - - while (e && le != e && (/\S/).test(e)) { - le = e; - for (var i in ps) { - p = ps[i]; - if (m = e.match(p)) { - this.matcher.push(Object.isFunction(c[i]) ? c[i](m) : - new Template(c[i]).evaluate(m)); - e = e.replace(m[0], ''); - break; - } - } - } - - this.matcher.push("return h.unique(n);\n}"); - eval(this.matcher.join('\n')); - Selector._cache[this.expression] = this.matcher; - }, - - compileXPathMatcher: function() { - var e = this.expression, ps = Selector.patterns, - x = Selector.xpath, le, m; - - if (Selector._cache[e]) { - this.xpath = Selector._cache[e]; return; - } - - this.matcher = ['.//*']; - while (e && le != e && (/\S/).test(e)) { - le = e; - for (var i in ps) { - if (m = e.match(ps[i])) { - this.matcher.push(Object.isFunction(x[i]) ? x[i](m) : - new Template(x[i]).evaluate(m)); - e = e.replace(m[0], ''); - break; - } - } - } - - this.xpath = this.matcher.join(''); - Selector._cache[this.expression] = this.xpath; - }, - - findElements: function(root) { - root = root || document; - if (this.xpath) return document._getElementsByXPath(this.xpath, root); - return this.matcher(root); - }, - - match: function(element) { - this.tokens = []; - - var e = this.expression, ps = Selector.patterns, as = Selector.assertions; - var le, p, m; - - while (e && le !== e && (/\S/).test(e)) { - le = e; - for (var i in ps) { - p = ps[i]; - if (m = e.match(p)) { - // use the Selector.assertions methods unless the selector - // is too complex. - if (as[i]) { - this.tokens.push([i, Object.clone(m)]); - e = e.replace(m[0], ''); - } else { - // reluctantly do a document-wide search - // and look for a match in the array - return this.findElements(document).include(element); - } - } - } - } - - var match = true, name, matches; - for (var i = 0, token; token = this.tokens[i]; i++) { - name = token[0], matches = token[1]; - if (!Selector.assertions[name](element, matches)) { - match = false; break; - } - } - - return match; - }, - - toString: function() { - return this.expression; - }, - - inspect: function() { - return "#"; - } -}); - -Object.extend(Selector, { - _cache: { }, - - xpath: { - descendant: "//*", - child: "/*", - adjacent: "/following-sibling::*[1]", - laterSibling: '/following-sibling::*', - tagName: function(m) { - if (m[1] == '*') return ''; - return "[local-name()='" + m[1].toLowerCase() + - "' or local-name()='" + m[1].toUpperCase() + "']"; - }, - className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", - id: "[@id='#{1}']", - attrPresence: function(m) { - m[1] = m[1].toLowerCase(); - return new Template("[@#{1}]").evaluate(m); - }, - attr: function(m) { - m[1] = m[1].toLowerCase(); - m[3] = m[5] || m[6]; - return new Template(Selector.xpath.operators[m[2]]).evaluate(m); - }, - pseudo: function(m) { - var h = Selector.xpath.pseudos[m[1]]; - if (!h) return ''; - if (Object.isFunction(h)) return h(m); - return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); - }, - operators: { - '=': "[@#{1}='#{3}']", - '!=': "[@#{1}!='#{3}']", - '^=': "[starts-with(@#{1}, '#{3}')]", - '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']", - '*=': "[contains(@#{1}, '#{3}')]", - '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", - '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" - }, - pseudos: { - 'first-child': '[not(preceding-sibling::*)]', - 'last-child': '[not(following-sibling::*)]', - 'only-child': '[not(preceding-sibling::* or following-sibling::*)]', - 'empty': "[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]", - 'checked': "[@checked]", - 'disabled': "[@disabled]", - 'enabled': "[not(@disabled)]", - 'not': function(m) { - var e = m[6], p = Selector.patterns, - x = Selector.xpath, le, v; - - var exclusion = []; - while (e && le != e && (/\S/).test(e)) { - le = e; - for (var i in p) { - if (m = e.match(p[i])) { - v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m); - exclusion.push("(" + v.substring(1, v.length - 1) + ")"); - e = e.replace(m[0], ''); - break; - } - } - } - return "[not(" + exclusion.join(" and ") + ")]"; - }, - 'nth-child': function(m) { - return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m); - }, - 'nth-last-child': function(m) { - return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m); - }, - 'nth-of-type': function(m) { - return Selector.xpath.pseudos.nth("position() ", m); - }, - 'nth-last-of-type': function(m) { - return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m); - }, - 'first-of-type': function(m) { - m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m); - }, - 'last-of-type': function(m) { - m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m); - }, - 'only-of-type': function(m) { - var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m); - }, - nth: function(fragment, m) { - var mm, formula = m[6], predicate; - if (formula == 'even') formula = '2n+0'; - if (formula == 'odd') formula = '2n+1'; - if (mm = formula.match(/^(\d+)$/)) // digit only - return '[' + fragment + "= " + mm[1] + ']'; - if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b - if (mm[1] == "-") mm[1] = -1; - var a = mm[1] ? Number(mm[1]) : 1; - var b = mm[2] ? Number(mm[2]) : 0; - predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " + - "((#{fragment} - #{b}) div #{a} >= 0)]"; - return new Template(predicate).evaluate({ - fragment: fragment, a: a, b: b }); - } - } - } - }, - - criteria: { - tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;', - className: 'n = h.className(n, r, "#{1}", c); c = false;', - id: 'n = h.id(n, r, "#{1}", c); c = false;', - attrPresence: 'n = h.attrPresence(n, r, "#{1}"); c = false;', - attr: function(m) { - m[3] = (m[5] || m[6]); - return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = false;').evaluate(m); - }, - pseudo: function(m) { - if (m[6]) m[6] = m[6].replace(/"/g, '\\"'); - return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m); - }, - descendant: 'c = "descendant";', - child: 'c = "child";', - adjacent: 'c = "adjacent";', - laterSibling: 'c = "laterSibling";' - }, - - patterns: { - // combinators must be listed first - // (and descendant needs to be last combinator) - laterSibling: /^\s*~\s*/, - child: /^\s*>\s*/, - adjacent: /^\s*\+\s*/, - descendant: /^\s/, - - // selectors follow - tagName: /^\s*(\*|[\w\-]+)(\b|$)?/, - id: /^#([\w\-\*]+)(\b|$)/, - className: /^\.([\w\-\*]+)(\b|$)/, - pseudo: -/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/, - attrPresence: /^\[([\w]+)\]/, - attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/ - }, - - // for Selector.match and Element#match - assertions: { - tagName: function(element, matches) { - return matches[1].toUpperCase() == element.tagName.toUpperCase(); - }, - - className: function(element, matches) { - return Element.hasClassName(element, matches[1]); - }, - - id: function(element, matches) { - return element.id === matches[1]; - }, - - attrPresence: function(element, matches) { - return Element.hasAttribute(element, matches[1]); - }, - - attr: function(element, matches) { - var nodeValue = Element.readAttribute(element, matches[1]); - return Selector.operators[matches[2]](nodeValue, matches[3]); - } - }, - - handlers: { - // UTILITY FUNCTIONS - // joins two collections - concat: function(a, b) { - for (var i = 0, node; node = b[i]; i++) - a.push(node); - return a; - }, - - // marks an array of nodes for counting - mark: function(nodes) { - for (var i = 0, node; node = nodes[i]; i++) - node._counted = true; - return nodes; - }, - - unmark: function(nodes) { - for (var i = 0, node; node = nodes[i]; i++) - node._counted = undefined; - return nodes; - }, - - // mark each child node with its position (for nth calls) - // "ofType" flag indicates whether we're indexing for nth-of-type - // rather than nth-child - index: function(parentNode, reverse, ofType) { - parentNode._counted = true; - if (reverse) { - for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) { - var node = nodes[i]; - if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++; - } - } else { - for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++) - if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++; - } - }, - - // filters out duplicates and extends all nodes - unique: function(nodes) { - if (nodes.length == 0) return nodes; - var results = [], n; - for (var i = 0, l = nodes.length; i < l; i++) - if (!(n = nodes[i])._counted) { - n._counted = true; - results.push(Element.extend(n)); - } - return Selector.handlers.unmark(results); - }, - - // COMBINATOR FUNCTIONS - descendant: function(nodes) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) - h.concat(results, node.getElementsByTagName('*')); - return results; - }, - - child: function(nodes) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) { - for (var j = 0, child; child = node.childNodes[j]; j++) - if (child.nodeType == 1 && child.tagName != '!') results.push(child); - } - return results; - }, - - adjacent: function(nodes) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - var next = this.nextElementSibling(node); - if (next) results.push(next); - } - return results; - }, - - laterSibling: function(nodes) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) - h.concat(results, Element.nextSiblings(node)); - return results; - }, - - nextElementSibling: function(node) { - while (node = node.nextSibling) - if (node.nodeType == 1) return node; - return null; - }, - - previousElementSibling: function(node) { - while (node = node.previousSibling) - if (node.nodeType == 1) return node; - return null; - }, - - // TOKEN FUNCTIONS - tagName: function(nodes, root, tagName, combinator) { - var uTagName = tagName.toUpperCase(); - var results = [], h = Selector.handlers; - if (nodes) { - if (combinator) { - // fastlane for ordinary descendant combinators - if (combinator == "descendant") { - for (var i = 0, node; node = nodes[i]; i++) - h.concat(results, node.getElementsByTagName(tagName)); - return results; - } else nodes = this[combinator](nodes); - if (tagName == "*") return nodes; - } - for (var i = 0, node; node = nodes[i]; i++) - if (node.tagName.toUpperCase() === uTagName) results.push(node); - return results; - } else return root.getElementsByTagName(tagName); - }, - - id: function(nodes, root, id, combinator) { - var targetNode = $(id), h = Selector.handlers; - if (!targetNode) return []; - if (!nodes && root == document) return [targetNode]; - if (nodes) { - if (combinator) { - if (combinator == 'child') { - for (var i = 0, node; node = nodes[i]; i++) - if (targetNode.parentNode == node) return [targetNode]; - } else if (combinator == 'descendant') { - for (var i = 0, node; node = nodes[i]; i++) - if (Element.descendantOf(targetNode, node)) return [targetNode]; - } else if (combinator == 'adjacent') { - for (var i = 0, node; node = nodes[i]; i++) - if (Selector.handlers.previousElementSibling(targetNode) == node) - return [targetNode]; - } else nodes = h[combinator](nodes); - } - for (var i = 0, node; node = nodes[i]; i++) - if (node == targetNode) return [targetNode]; - return []; - } - return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : []; - }, - - className: function(nodes, root, className, combinator) { - if (nodes && combinator) nodes = this[combinator](nodes); - return Selector.handlers.byClassName(nodes, root, className); - }, - - byClassName: function(nodes, root, className) { - if (!nodes) nodes = Selector.handlers.descendant([root]); - var needle = ' ' + className + ' '; - for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) { - nodeClassName = node.className; - if (nodeClassName.length == 0) continue; - if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle)) - results.push(node); - } - return results; - }, - - attrPresence: function(nodes, root, attr) { - if (!nodes) nodes = root.getElementsByTagName("*"); - var results = []; - for (var i = 0, node; node = nodes[i]; i++) - if (Element.hasAttribute(node, attr)) results.push(node); - return results; - }, - - attr: function(nodes, root, attr, value, operator) { - if (!nodes) nodes = root.getElementsByTagName("*"); - var handler = Selector.operators[operator], results = []; - for (var i = 0, node; node = nodes[i]; i++) { - var nodeValue = Element.readAttribute(node, attr); - if (nodeValue === null) continue; - if (handler(nodeValue, value)) results.push(node); - } - return results; - }, - - pseudo: function(nodes, name, value, root, combinator) { - if (nodes && combinator) nodes = this[combinator](nodes); - if (!nodes) nodes = root.getElementsByTagName("*"); - return Selector.pseudos[name](nodes, value, root); - } - }, - - pseudos: { - 'first-child': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - if (Selector.handlers.previousElementSibling(node)) continue; - results.push(node); - } - return results; - }, - 'last-child': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - if (Selector.handlers.nextElementSibling(node)) continue; - results.push(node); - } - return results; - }, - 'only-child': function(nodes, value, root) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!h.previousElementSibling(node) && !h.nextElementSibling(node)) - results.push(node); - return results; - }, - 'nth-child': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root); - }, - 'nth-last-child': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root, true); - }, - 'nth-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root, false, true); - }, - 'nth-last-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root, true, true); - }, - 'first-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, "1", root, false, true); - }, - 'last-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, "1", root, true, true); - }, - 'only-of-type': function(nodes, formula, root) { - var p = Selector.pseudos; - return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root); - }, - - // handles the an+b logic - getIndices: function(a, b, total) { - if (a == 0) return b > 0 ? [b] : []; - return $R(1, total).inject([], function(memo, i) { - if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i); - return memo; - }); - }, - - // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type - nth: function(nodes, formula, root, reverse, ofType) { - if (nodes.length == 0) return []; - if (formula == 'even') formula = '2n+0'; - if (formula == 'odd') formula = '2n+1'; - var h = Selector.handlers, results = [], indexed = [], m; - h.mark(nodes); - for (var i = 0, node; node = nodes[i]; i++) { - if (!node.parentNode._counted) { - h.index(node.parentNode, reverse, ofType); - indexed.push(node.parentNode); - } - } - if (formula.match(/^\d+$/)) { // just a number - formula = Number(formula); - for (var i = 0, node; node = nodes[i]; i++) - if (node.nodeIndex == formula) results.push(node); - } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b - if (m[1] == "-") m[1] = -1; - var a = m[1] ? Number(m[1]) : 1; - var b = m[2] ? Number(m[2]) : 0; - var indices = Selector.pseudos.getIndices(a, b, nodes.length); - for (var i = 0, node, l = indices.length; node = nodes[i]; i++) { - for (var j = 0; j < l; j++) - if (node.nodeIndex == indices[j]) results.push(node); - } - } - h.unmark(nodes); - h.unmark(indexed); - return results; - }, - - 'empty': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - // IE treats comments as element nodes - if (node.tagName == '!' || (node.firstChild && !node.innerHTML.match(/^\s*$/))) continue; - results.push(node); - } - return results; - }, - - 'not': function(nodes, selector, root) { - var h = Selector.handlers, selectorType, m; - var exclusions = new Selector(selector).findElements(root); - h.mark(exclusions); - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!node._counted) results.push(node); - h.unmark(exclusions); - return results; - }, - - 'enabled': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!node.disabled) results.push(node); - return results; - }, - - 'disabled': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (node.disabled) results.push(node); - return results; - }, - - 'checked': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (node.checked) results.push(node); - return results; - } - }, - - operators: { - '=': function(nv, v) { return nv == v; }, - '!=': function(nv, v) { return nv != v; }, - '^=': function(nv, v) { return nv.startsWith(v); }, - '$=': function(nv, v) { return nv.endsWith(v); }, - '*=': function(nv, v) { return nv.include(v); }, - '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); }, - '|=': function(nv, v) { return ('-' + nv.toUpperCase() + '-').include('-' + v.toUpperCase() + '-'); } - }, - - matchElements: function(elements, expression) { - var matches = new Selector(expression).findElements(), h = Selector.handlers; - h.mark(matches); - for (var i = 0, results = [], element; element = elements[i]; i++) - if (element._counted) results.push(element); - h.unmark(matches); - return results; - }, - - findElement: function(elements, expression, index) { - if (Object.isNumber(expression)) { - index = expression; expression = false; - } - return Selector.matchElements(elements, expression || '*')[index || 0]; - }, - - findChildElements: function(element, expressions) { - var exprs = expressions.join(','); - expressions = []; - exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { - expressions.push(m[1].strip()); - }); - var results = [], h = Selector.handlers; - for (var i = 0, l = expressions.length, selector; i < l; i++) { - selector = new Selector(expressions[i].strip()); - h.concat(results, selector.findElements(element)); - } - return (l > 1) ? h.unique(results) : results; - } -}); - -if (Prototype.Browser.IE) { - // IE returns comment nodes on getElementsByTagName("*"). - // Filter them out. - Selector.handlers.concat = function(a, b) { - for (var i = 0, node; node = b[i]; i++) - if (node.tagName !== "!") a.push(node); - return a; - }; -} - -function $$() { - return Selector.findChildElements(document, $A(arguments)); -} -var Form = { - reset: function(form) { - $(form).reset(); - return form; - }, - - serializeElements: function(elements, options) { - if (typeof options != 'object') options = { hash: !!options }; - else if (Object.isUndefined(options.hash)) options.hash = true; - var key, value, submitted = false, submit = options.submit; - - var data = elements.inject({ }, function(result, element) { - if (!element.disabled && element.name) { - key = element.name; value = $(element).getValue(); - if (value != null && (element.type != 'submit' || (!submitted && - submit !== false && (!submit || key == submit) && (submitted = true)))) { - if (key in result) { - // a key is already present; construct an array of values - if (!Object.isArray(result[key])) result[key] = [result[key]]; - result[key].push(value); - } - else result[key] = value; - } - } - return result; - }); - - return options.hash ? data : Object.toQueryString(data); - } -}; - -Form.Methods = { - serialize: function(form, options) { - return Form.serializeElements(Form.getElements(form), options); - }, - - getElements: function(form) { - return $A($(form).getElementsByTagName('*')).inject([], - function(elements, child) { - if (Form.Element.Serializers[child.tagName.toLowerCase()]) - elements.push(Element.extend(child)); - return elements; - } - ); - }, - - getInputs: function(form, typeName, name) { - form = $(form); - var inputs = form.getElementsByTagName('input'); - - if (!typeName && !name) return $A(inputs).map(Element.extend); - - for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { - var input = inputs[i]; - if ((typeName && input.type != typeName) || (name && input.name != name)) - continue; - matchingInputs.push(Element.extend(input)); - } - - return matchingInputs; - }, - - disable: function(form) { - form = $(form); - Form.getElements(form).invoke('disable'); - return form; - }, - - enable: function(form) { - form = $(form); - Form.getElements(form).invoke('enable'); - return form; - }, - - findFirstElement: function(form) { - var elements = $(form).getElements().findAll(function(element) { - return 'hidden' != element.type && !element.disabled; - }); - var firstByIndex = elements.findAll(function(element) { - return element.hasAttribute('tabIndex') && element.tabIndex >= 0; - }).sortBy(function(element) { return element.tabIndex }).first(); - - return firstByIndex ? firstByIndex : elements.find(function(element) { - return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); - }); - }, - - focusFirstElement: function(form) { - form = $(form); - form.findFirstElement().activate(); - return form; - }, - - request: function(form, options) { - form = $(form), options = Object.clone(options || { }); - - var params = options.parameters, action = form.readAttribute('action') || ''; - if (action.blank()) action = window.location.href; - options.parameters = form.serialize(true); - - if (params) { - if (Object.isString(params)) params = params.toQueryParams(); - Object.extend(options.parameters, params); - } - - if (form.hasAttribute('method') && !options.method) - options.method = form.method; - - return new Ajax.Request(action, options); - } -}; - -/*--------------------------------------------------------------------------*/ - -Form.Element = { - focus: function(element) { - $(element).focus(); - return element; - }, - - select: function(element) { - $(element).select(); - return element; - } -}; - -Form.Element.Methods = { - serialize: function(element) { - element = $(element); - if (!element.disabled && element.name) { - var value = element.getValue(); - if (value != undefined) { - var pair = { }; - pair[element.name] = value; - return Object.toQueryString(pair); - } - } - return ''; - }, - - getValue: function(element) { - element = $(element); - var method = element.tagName.toLowerCase(); - return Form.Element.Serializers[method](element); - }, - - setValue: function(element, value) { - element = $(element); - var method = element.tagName.toLowerCase(); - Form.Element.Serializers[method](element, value); - return element; - }, - - clear: function(element) { - $(element).value = ''; - return element; - }, - - present: function(element) { - return $(element).value != ''; - }, - - activate: function(element) { - element = $(element); - try { - element.focus(); - if (element.select && (element.tagName.toLowerCase() != 'input' || - !['button', 'reset', 'submit'].include(element.type))) - element.select(); - } catch (e) { } - return element; - }, - - disable: function(element) { - element = $(element); - element.blur(); - element.disabled = true; - return element; - }, - - enable: function(element) { - element = $(element); - element.disabled = false; - return element; - } -}; - -/*--------------------------------------------------------------------------*/ - -var Field = Form.Element; -var $F = Form.Element.Methods.getValue; - -/*--------------------------------------------------------------------------*/ - -Form.Element.Serializers = { - input: function(element, value) { - switch (element.type.toLowerCase()) { - case 'checkbox': - case 'radio': - return Form.Element.Serializers.inputSelector(element, value); - default: - return Form.Element.Serializers.textarea(element, value); - } - }, - - inputSelector: function(element, value) { - if (Object.isUndefined(value)) return element.checked ? element.value : null; - else element.checked = !!value; - }, - - textarea: function(element, value) { - if (Object.isUndefined(value)) return element.value; - else element.value = value; - }, - - select: function(element, index) { - if (Object.isUndefined(index)) - return this[element.type == 'select-one' ? - 'selectOne' : 'selectMany'](element); - else { - var opt, value, single = !Object.isArray(index); - for (var i = 0, length = element.length; i < length; i++) { - opt = element.options[i]; - value = this.optionValue(opt); - if (single) { - if (value == index) { - opt.selected = true; - return; - } - } - else opt.selected = index.include(value); - } - } - }, - - selectOne: function(element) { - var index = element.selectedIndex; - return index >= 0 ? this.optionValue(element.options[index]) : null; - }, - - selectMany: function(element) { - var values, length = element.length; - if (!length) return null; - - for (var i = 0, values = []; i < length; i++) { - var opt = element.options[i]; - if (opt.selected) values.push(this.optionValue(opt)); - } - return values; - }, - - optionValue: function(opt) { - // extend element because hasAttribute may not be native - return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text; - } -}; - -/*--------------------------------------------------------------------------*/ - -Abstract.TimedObserver = Class.create(PeriodicalExecuter, { - initialize: function($super, element, frequency, callback) { - $super(callback, frequency); - this.element = $(element); - this.lastValue = this.getValue(); - }, - - execute: function() { - var value = this.getValue(); - if (Object.isString(this.lastValue) && Object.isString(value) ? - this.lastValue != value : String(this.lastValue) != String(value)) { - this.callback(this.element, value); - this.lastValue = value; - } - } -}); - -Form.Element.Observer = Class.create(Abstract.TimedObserver, { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.Observer = Class.create(Abstract.TimedObserver, { - getValue: function() { - return Form.serialize(this.element); - } -}); - -/*--------------------------------------------------------------------------*/ - -Abstract.EventObserver = Class.create({ - initialize: function(element, callback) { - this.element = $(element); - this.callback = callback; - - this.lastValue = this.getValue(); - if (this.element.tagName.toLowerCase() == 'form') - this.registerFormCallbacks(); - else - this.registerCallback(this.element); - }, - - onElementEvent: function() { - var value = this.getValue(); - if (this.lastValue != value) { - this.callback(this.element, value); - this.lastValue = value; - } - }, - - registerFormCallbacks: function() { - Form.getElements(this.element).each(this.registerCallback, this); - }, - - registerCallback: function(element) { - if (element.type) { - switch (element.type.toLowerCase()) { - case 'checkbox': - case 'radio': - Event.observe(element, 'click', this.onElementEvent.bind(this)); - break; - default: - Event.observe(element, 'change', this.onElementEvent.bind(this)); - break; - } - } - } -}); - -Form.Element.EventObserver = Class.create(Abstract.EventObserver, { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.EventObserver = Class.create(Abstract.EventObserver, { - getValue: function() { - return Form.serialize(this.element); - } -}); -if (!window.Event) var Event = { }; - -Object.extend(Event, { - KEY_BACKSPACE: 8, - KEY_TAB: 9, - KEY_RETURN: 13, - KEY_ESC: 27, - KEY_LEFT: 37, - KEY_UP: 38, - KEY_RIGHT: 39, - KEY_DOWN: 40, - KEY_DELETE: 46, - KEY_HOME: 36, - KEY_END: 35, - KEY_PAGEUP: 33, - KEY_PAGEDOWN: 34, - KEY_INSERT: 45, - - cache: { }, - - relatedTarget: function(event) { - var element; - switch(event.type) { - case 'mouseover': element = event.fromElement; break; - case 'mouseout': element = event.toElement; break; - default: return null; - } - return Element.extend(element); - } -}); - -Event.Methods = (function() { - var isButton; - - if (Prototype.Browser.IE) { - var buttonMap = { 0: 1, 1: 4, 2: 2 }; - isButton = function(event, code) { - return event.button == buttonMap[code]; - }; - - } else if (Prototype.Browser.WebKit) { - isButton = function(event, code) { - switch (code) { - case 0: return event.which == 1 && !event.metaKey; - case 1: return event.which == 1 && event.metaKey; - default: return false; - } - }; - - } else { - isButton = function(event, code) { - return event.which ? (event.which === code + 1) : (event.button === code); - }; - } - - return { - isLeftClick: function(event) { return isButton(event, 0) }, - isMiddleClick: function(event) { return isButton(event, 1) }, - isRightClick: function(event) { return isButton(event, 2) }, - - element: function(event) { - var node = Event.extend(event).target; - return Element.extend(node.nodeType == Node.TEXT_NODE ? node.parentNode : node); - }, - - findElement: function(event, expression) { - var element = Event.element(event); - if (!expression) return element; - var elements = [element].concat(element.ancestors()); - return Selector.findElement(elements, expression, 0); - }, - - pointer: function(event) { - return { - x: event.pageX || (event.clientX + - (document.documentElement.scrollLeft || document.body.scrollLeft)), - y: event.pageY || (event.clientY + - (document.documentElement.scrollTop || document.body.scrollTop)) - }; - }, - - pointerX: function(event) { return Event.pointer(event).x }, - pointerY: function(event) { return Event.pointer(event).y }, - - stop: function(event) { - Event.extend(event); - event.preventDefault(); - event.stopPropagation(); - event.stopped = true; - } - }; -})(); - -Event.extend = (function() { - var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { - m[name] = Event.Methods[name].methodize(); - return m; - }); - - if (Prototype.Browser.IE) { - Object.extend(methods, { - stopPropagation: function() { this.cancelBubble = true }, - preventDefault: function() { this.returnValue = false }, - inspect: function() { return "[object Event]" } - }); - - return function(event) { - if (!event) return false; - if (event._extendedByPrototype) return event; - - event._extendedByPrototype = Prototype.emptyFunction; - var pointer = Event.pointer(event); - Object.extend(event, { - target: event.srcElement, - relatedTarget: Event.relatedTarget(event), - pageX: pointer.x, - pageY: pointer.y - }); - return Object.extend(event, methods); - }; - - } else { - Event.prototype = Event.prototype || document.createEvent("HTMLEvents").__proto__; - Object.extend(Event.prototype, methods); - return Prototype.K; - } -})(); - -Object.extend(Event, (function() { - var cache = Event.cache; - - function getEventID(element) { - if (element._eventID) return element._eventID; - arguments.callee.id = arguments.callee.id || 1; - return element._eventID = ++arguments.callee.id; - } - - function getDOMEventName(eventName) { - if (eventName && eventName.include(':')) return "dataavailable"; - return eventName; - } - - function getCacheForID(id) { - return cache[id] = cache[id] || { }; - } - - function getWrappersForEventName(id, eventName) { - var c = getCacheForID(id); - return c[eventName] = c[eventName] || []; - } - - function createWrapper(element, eventName, handler) { - var id = getEventID(element); - var c = getWrappersForEventName(id, eventName); - if (c.pluck("handler").include(handler)) return false; - - var wrapper = function(event) { - if (!Event || !Event.extend || - (event.eventName && event.eventName != eventName)) - return false; - - Event.extend(event); - handler.call(element, event); - }; - - wrapper.handler = handler; - c.push(wrapper); - return wrapper; - } - - function findWrapper(id, eventName, handler) { - var c = getWrappersForEventName(id, eventName); - return c.find(function(wrapper) { return wrapper.handler == handler }); - } - - function destroyWrapper(id, eventName, handler) { - var c = getCacheForID(id); - if (!c[eventName]) return false; - c[eventName] = c[eventName].without(findWrapper(id, eventName, handler)); - } - - function destroyCache() { - for (var id in cache) - for (var eventName in cache[id]) - cache[id][eventName] = null; - } - - if (window.attachEvent) { - window.attachEvent("onunload", destroyCache); - } - - return { - observe: function(element, eventName, handler) { - element = $(element); - var name = getDOMEventName(eventName); - - var wrapper = createWrapper(element, eventName, handler); - if (!wrapper) return element; - - if (element.addEventListener) { - element.addEventListener(name, wrapper, false); - } else { - element.attachEvent("on" + name, wrapper); - } - - return element; - }, - - stopObserving: function(element, eventName, handler) { - element = $(element); - var id = getEventID(element), name = getDOMEventName(eventName); - - if (!handler && eventName) { - getWrappersForEventName(id, eventName).each(function(wrapper) { - element.stopObserving(eventName, wrapper.handler); - }); - return element; - - } else if (!eventName) { - Object.keys(getCacheForID(id)).each(function(eventName) { - element.stopObserving(eventName); - }); - return element; - } - - var wrapper = findWrapper(id, eventName, handler); - if (!wrapper) return element; - - if (element.removeEventListener) { - element.removeEventListener(name, wrapper, false); - } else { - element.detachEvent("on" + name, wrapper); - } - - destroyWrapper(id, eventName, handler); - - return element; - }, - - fire: function(element, eventName, memo) { - element = $(element); - if (element == document && document.createEvent && !element.dispatchEvent) - element = document.documentElement; - - var event; - if (document.createEvent) { - event = document.createEvent("HTMLEvents"); - event.initEvent("dataavailable", true, true); - } else { - event = document.createEventObject(); - event.eventType = "ondataavailable"; - } - - event.eventName = eventName; - event.memo = memo || { }; - - if (document.createEvent) { - element.dispatchEvent(event); - } else { - element.fireEvent(event.eventType, event); - } - - return Event.extend(event); - } - }; -})()); - -Object.extend(Event, Event.Methods); - -Element.addMethods({ - fire: Event.fire, - observe: Event.observe, - stopObserving: Event.stopObserving -}); - -Object.extend(document, { - fire: Element.Methods.fire.methodize(), - observe: Element.Methods.observe.methodize(), - stopObserving: Element.Methods.stopObserving.methodize(), - loaded: false -}); - -(function() { - /* Support for the DOMContentLoaded event is based on work by Dan Webb, - Matthias Miller, Dean Edwards and John Resig. */ - - var timer; - - function fireContentLoadedEvent() { - if (document.loaded) return; - if (timer) window.clearInterval(timer); - document.fire("dom:loaded"); - document.loaded = true; - } - - if (document.addEventListener) { - if (Prototype.Browser.WebKit) { - timer = window.setInterval(function() { - if (/loaded|complete/.test(document.readyState)) - fireContentLoadedEvent(); - }, 0); - - Event.observe(window, "load", fireContentLoadedEvent); - - } else { - document.addEventListener("DOMContentLoaded", - fireContentLoadedEvent, false); - } - - } else { - document.write(" - - - - - - - - - -

      Tiny Tiny RSS Notifier

      - -

      Last update: N/A

      - - - -

      Options

      - -
      -
      - - -
      - -
      - - -
      - -
      - - -
      - -
      - - -
      - -
      - - -
      - -
      - - - (requires Tiny Tiny RSS 1.4.1 or trunk) -
      - - -
      - -

      Copyright © 2010 - Andrew Dolgov. - Licensed under GNU GPL version 2.

      - - diff --git a/utils/notifier/popup.html b/utils/notifier/popup.html deleted file mode 100644 index de75dfbeef..0000000000 --- a/utils/notifier/popup.html +++ /dev/null @@ -1,14 +0,0 @@ - - - -
        -
      • Update
      • - -
      - - diff --git a/utils/notifier/style.css b/utils/notifier/style.css deleted file mode 100644 index 73bb5c0ac3..0000000000 --- a/utils/notifier/style.css +++ /dev/null @@ -1,31 +0,0 @@ -body { - margin : 2em; - padding : 0em; - font-family : sans-serif; - font-size : 12px; -} - -.floatingLogo { - float : right; -} - -a { - color : #4684ff; - text-decoration : none; -} - -a:hover { - color : black; -} - -h1 { - color : #88b0f0; - font-size : 18px; -} - -h2 { - color : gray; - font-size : 16px; -} - - diff --git a/utils/regen_config_checks.sh b/utils/regen_config_checks.sh new file mode 100755 index 0000000000..e81d3673e8 --- /dev/null +++ b/utils/regen_config_checks.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +DESTINATION="include/sanity_config.php" + +echo " $DESTINATION + +echo -n "define('GENERATED_CONFIG_CHECK', " >> $DESTINATION +grep CONFIG_VERSION config.php-dist | awk -F ' |)' '{ print $2 }' | xargs echo -n >> $DESTINATION +echo ");" >> $DESTINATION + +echo -n "\$requred_defines = array( " >> $DESTINATION + +grep define\( config.php-dist | awk -F\' '{ print "*" $2 "*," }' | grep -v DB_PORT | xargs echo -n | sed -e s/,$// -e s/*/\'/g >> $DESTINATION + +echo "); ?>" >> $DESTINATION + + diff --git a/utils/stats.php b/utils/stats.php deleted file mode 100644 index b8e6e06dfc..0000000000 --- a/utils/stats.php +++ /dev/null @@ -1,136 +0,0 @@ -Error: your access level is insufficient to run this script.

      "; - exit; - } -?> - - - - Tiny Tiny Statistics - - - - - -

      Tiny Tiny Statistics

      - -

      Counters

      - -Total articles stored: $total_articles (${articles_size}K)

      "; - -/* $result = db_query($link, "SELECT COUNT(int_id) as cid,owner_uid,login - FROM ttrss_user_entries - LEFT JOIN ttrss_users ON (owner_uid = ttrss_users.id) - GROUP BY owner_uid,login ORDER BY cid DESC"); */ - - $result = db_query($link, "SELECT count(ttrss_entries.id) AS cid, - login FROM ttrss_entries - LEFT JOIN ttrss_user_entries ON (ref_id = ttrss_entries.id) - LEFT JOIN ttrss_users ON (ttrss_users.id = ttrss_user_entries.owner_uid) - GROUP BY login"); - - print "

      Per-user storage

      "; - - print ""; - - print " - - - "; - - while ($line = db_fetch_assoc($result)) { - print ""; - print ""; - print ""; - print ""; - } - - print "
      ArticlesOwner
      " . $line["cid"] . "" . $line["login"] . "
      "; - - $result = db_query($link, "SELECT COUNT(ttrss_feeds.id) AS fc, - login FROM ttrss_users, ttrss_feeds - WHERE ttrss_users.id = ttrss_feeds.owner_uid - GROUP BY login ORDER BY fc DESC"); - - print "

      Per-user subscriptions

      "; - - print ""; - - print " - - - "; - - while ($line = db_fetch_assoc($result)) { - print ""; - print ""; - print ""; - print ""; - } - - print "
      OwnerFeeds
      " . $line["login"] . "" . $line["fc"] . "
      "; - - print "

      User subscriptions

      "; - - $result = db_query($link, "SELECT title,feed_url,site_url,login, - (SELECT count(int_id) FROM ttrss_user_entries - WHERE feed_id = ttrss_feeds.id) AS num_articles, - (SELECT count(int_id) FROM ttrss_user_entries - WHERE feed_id = ttrss_feeds.id AND unread = true) AS num_articles_unread - FROM ttrss_feeds,ttrss_users - WHERE owner_uid = ttrss_users.id ORDER BY login"); - - print ""; - print " - - - - - - "; - - $cur_login = ""; - - while ($line = db_fetch_assoc($result)) { - print ""; - print ""; - print ""; - print ""; - print ""; - print ""; - print ""; - - if ($cur_login != $line["login"] && $cur_login != "") { - print ""; - $cur_login = $line["login"]; - } - } - - print "
      SiteFeedOwnerStored ArticlesUnread Articles
      ".$line["title"]."".$line["feed_url"]."" . $line["login"] . "" . $line["num_articles"] . "" . $line["num_articles_unread"] . "
       
      "; - -?> -
  • "; - } - - $category = $tmp_category; - - $collapsed = sql_bool_to_bool($line["collapsed"]); - - // workaround for NULL category - if ($category == __("Uncategorized")) { - $collapsed = get_pref($link, "_COLLAPSED_UNCAT"); - } - - $cat_id = (int) $cat_id; - - printCategoryHeader($link, $cat_id, $collapsed, true); - - } - - printFeedEntry($feed_id, $class, $feed, $unread, - false, $link, $rtl_content, - $last_updated, $line["last_error"]); - - ++$lnum; - } - - if (db_num_rows($result) == 0) { - print "
  • ".__('No feeds to display.')."
  • "; - } - - } else { - - // tags - -/* $result = db_query($link, "SELECT tag_name,count(ttrss_entries.id) AS count - FROM ttrss_tags,ttrss_entries,ttrss_user_entries WHERE - post_int_id = ttrss_user_entries.int_id AND - unread = true AND ref_id = ttrss_entries.id - AND ttrss_tags.owner_uid = '$owner_uid' GROUP BY tag_name - UNION - select tag_name,0 as count FROM ttrss_tags WHERE owner_uid = '$owner_uid' - ORDER BY tag_name"); */ - - if (get_pref($link, 'ENABLE_FEED_CATS')) { - print "
  • ".__('Tags')."
  • "; - print "
      "; - } - - $age_qpart = getMaxAgeSubquery(); - - $result = db_query($link, "SELECT tag_name,SUM((SELECT COUNT(int_id) - FROM ttrss_user_entries,ttrss_entries WHERE int_id = post_int_id - AND ref_id = id AND $age_qpart - AND unread = true)) AS count FROM ttrss_tags - WHERE owner_uid = ".$_SESSION['uid']." GROUP BY tag_name - ORDER BY count DESC LIMIT 50"); - - $tags = array(); - - while ($line = db_fetch_assoc($result)) { - $tags[$line["tag_name"]] += $line["count"]; - } - - foreach (array_keys($tags) as $tag) { - - $unread = $tags[$tag]; - $class = "tag"; - - printFeedEntry($tag, $class, $tag, $unread, "images/tag.png", $link); - - } - - if (db_num_rows($result) == 0) { - print "
    • No tags to display.
    • "; - } - - if (get_pref($link, 'ENABLE_FEED_CATS')) { - print "
    "; - } - - } - - print ""; - - } - - function get_article_tags($link, $id, $owner_uid = 0) { - - global $memcache; - - $a_id = db_escape_string($id); - - if (!$owner_uid) $owner_uid = $_SESSION["uid"]; - - $query = "SELECT DISTINCT tag_name, - owner_uid as owner FROM - ttrss_tags WHERE post_int_id = (SELECT int_id FROM ttrss_user_entries WHERE - ref_id = '$a_id' AND owner_uid = '$owner_uid' LIMIT 1) ORDER BY tag_name"; - - $obj_id = md5("TAGS:$owner_uid:$id"); - $tags = array(); - - if ($memcache && $obj = $memcache->get($obj_id)) { - $tags = $obj; - } else { - $tmp_result = db_query($link, $query); - - while ($tmp_line = db_fetch_assoc($tmp_result)) { - array_push($tags, $tmp_line["tag_name"]); - } - - if ($memcache) $memcache->add($obj_id, $tags, 0, 3600); - } - - return $tags; - } - - function trim_value(&$value) { - $value = trim($value); - } - - function trim_array($array) { - $tmp = $array; - array_walk($tmp, 'trim_value'); - return $tmp; - } - - function tag_is_valid($tag) { - if ($tag == '') return false; - if (preg_match("/^[0-9]*$/", $tag)) return false; - if (mb_strlen($tag) > 250) return false; - - if (function_exists('iconv')) { - $tag = iconv("utf-8", "utf-8", $tag); - } - - if (!$tag) return false; - - return true; - } - - function render_login_form($link, $mobile = 0) { - switch ($mobile) { - case 0: - require_once "login_form.php"; - break; - case 1: - require_once "mobile/login_form.php"; - break; - case 2: - require_once "mobile/classic/login_form.php"; - } - } - - // from http://developer.apple.com/internet/safari/faq.html - function no_cache_incantation() { - header("Expires: Mon, 22 Dec 1980 00:00:00 GMT"); // Happy birthday to me :) - header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified - header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); // HTTP/1.1 - header("Cache-Control: post-check=0, pre-check=0", false); - header("Pragma: no-cache"); // HTTP/1.0 - } - - function format_warning($msg, $id = "") { - global $link; - return "
    - $msg
    "; - } - - function format_notice($msg) { - global $link; - return "
    - $msg
    "; - } - - function format_error($msg) { - global $link; - return "
    - $msg
    "; - } - - function print_notice($msg) { - return print format_notice($msg); - } - - function print_warning($msg) { - return print format_warning($msg); - } - - function print_error($msg) { - return print format_error($msg); - } - - - function T_sprintf() { - $args = func_get_args(); - return vsprintf(__(array_shift($args)), $args); - } - - function format_inline_player($link, $url, $ctype) { - - $entry = ""; - - if (($ctype == __("audio/mpeg")) && (get_pref($link, "ENABLE_FLASH_PLAYER")) ) { - - $entry .= " - "; - } - - /* - - if (substr($ctype,0,6)=="audio/" || $ctype=="application/ogg" || $ctype=="application/x-ogg") { - $entry .= " "; - if (($ctype == __("audio/mpeg")) && - (get_pref($link, "ENABLE_FLASH_PLAYER")) ) { - $entry .= "".__('Switch to Flash Player').""; - $entry .= ""; - } - } elseif (substr($ctype,0,6)=="video/") { - $entry .= ""; - } */ - - - - return $entry; - } - - function outputArticleXML($link, $id, $feed_id, $mark_as_read = true, - $zoom_mode = false) { - - /* we can figure out feed_id from article id anyway, why do we - * pass feed_id here? let's ignore the argument :( */ - - $result = db_query($link, "SELECT feed_id FROM ttrss_user_entries - WHERE ref_id = '$id'"); - - $feed_id = (int) db_fetch_result($result, 0, "feed_id"); - - if (!$zoom_mode) { print "
    "; - } else { - $feed_icon = " "; - } - - $num_comments = $line["num_comments"]; - $entry_comments = ""; - - if ($num_comments > 0) { - if ($line["comments"]) { - $comments_url = $line["comments"]; - } else { - $comments_url = $line["link"]; - } - $entry_comments = "$num_comments comments"; - } else { - if ($line["comments"] && $line["link"] != $line["comments"]) { - $entry_comments = "comments"; - } - } - - if ($zoom_mode) { - header("Content-Type: text/html"); - print " - - Tiny Tiny RSS - ".$line["title"]." - - "; - } - - - print "
    "; - - print "
    "; - - $entry_author = $line["author"]; - - if ($entry_author) { - $entry_author = __(" - ") . $entry_author; - } - - $parsed_updated = date(get_pref($link, 'LONG_DATE_FORMAT'), - strtotime($line["updated"])); - - print "
    $parsed_updated
    "; - - if ($line["link"]) { - print ""; - } else { - print "
    " . $line["title"] . "$entry_author
    "; - } - - $tags_str = format_tags_string(get_article_tags($link, $id), $id); - - if (!$entry_comments) $entry_comments = " "; # placeholder - - print "
    - Tags "; - - if (!$zoom_mode) { - print "$tags_str - (+)"; - - print "Zoom"; - - $note_escaped = htmlspecialchars($line['note'], ENT_QUOTES); - - print "PubNote"; - - } else { - $tags_str = strip_tags($tags_str); - print "$tags_str"; - } - print "
    "; - print "
    $entry_comments
    "; - - if ($line["orig_feed_id"]) { - - $tmp_result = db_query($link, "SELECT * FROM ttrss_archived_feeds - WHERE id = ".$line["orig_feed_id"]); - - if (db_num_rows($tmp_result) != 0) { - - print "
    "; - print __("Originally from:"); - - print " "; - - $tmp_line = db_fetch_assoc($tmp_result); - - print "" . - $tmp_line['title'] . ""; - - print " "; - - print ""; - print ""; - - print "
    "; - } - } - - print "
    "; - - print "
    " . $feed_icon . "
    "; - - print "
    "; - - $article_content = sanitize_rss($link, $line["content"]); - - print "
    "; - if ($line['note']) { - print format_article_note($id, $line['note']); - } - print "
    "; - - print $article_content; - -// $result = db_query($link, "SELECT * FROM ttrss_enclosures WHERE -// post_id = '$id' AND content_url != ''"); - - $result = get_article_enclosures($link, $id); - -// if (db_num_rows($result) > 0) { - - if (count($result) > 0) { - - $entries_html = array(); - $entries = array(); - - //while ($line = db_fetch_assoc($result)) { - foreach ($result as $line) { - - $url = $line["content_url"]; - $ctype = $line["content_type"]; - - if (!$ctype) $ctype = __("unknown type"); - - $filename = substr($url, strrpos($url, "/")+1); - - $entry = format_inline_player($link, $url, $ctype); - - $entry .= " " . - $filename . " (" . $ctype . ")" . ""; - - array_push($entries_html, $entry); - - $entry = array(); - - $entry["type"] = $ctype; - $entry["filename"] = $filename; - $entry["url"] = $url; - - array_push($entries, $entry); - } - - print "
    "; - - if (!get_pref($link, "STRIP_IMAGES")) { - if ($always_display_enclosures || - !preg_match("/\"".htmlspecialchars($entry["filename"])."\"

    "; - } - } - } - } - - if (db_num_rows($result) == 1) { - print __("Attachment:") . " "; - } else { - print __("Attachments:") . " "; - } - - print join(", ", $entries_html); - - print "
    "; - } - - print "
    "; - - print "
    "; - - } - - if (!$zoom_mode) { - print "]]>
    "; - } else { - print " -
    -
    "; - print ""; - - } - - } - - function outputHeadlinesList($link, $feed, $subop, $view_mode, $limit, $cat_view, - $next_unread_feed, $offset, $vgr_last_feed = false, - $override_order = false) { - - $disable_cache = false; - - $timing_info = getmicrotime(); - - $topmost_article_ids = array(); - - if (!$offset) { - $offset = 0; - } - - if ($subop == "undefined") $subop = ""; - - $subop_split = split(":", $subop); - - if ($subop == "CatchupSelected") { - $ids = split(",", db_escape_string($_REQUEST["ids"])); - $cmode = sprintf("%d", $_REQUEST["cmode"]); - - catchupArticlesById($link, $ids, $cmode); - } - - if ($subop == "ForceUpdate" && sprintf("%d", $feed) > 0) { - update_generic_feed($link, $feed, $cat_view, true); - } - - if ($subop == "MarkAllRead") { - catchup_feed($link, $feed, $cat_view); - - if (get_pref($link, 'ON_CATCHUP_SHOW_NEXT_FEED')) { - if ($next_unread_feed) { - $feed = $next_unread_feed; - } - } - } - - if ($subop_split[0] == "MarkAllReadGR") { - catchup_feed($link, $subop_split[1], false); - } - - - if ($feed_id > 0) { - $result = db_query($link, - "SELECT id FROM ttrss_feeds WHERE id = '$feed' LIMIT 1"); - - if (db_num_rows($result) == 0) { - print "
    ".__('Feed not found.')."
    "; - return; - } - } - - if (preg_match("/^-?[0-9][0-9]*$/", $feed) != false) { - - $result = db_query($link, "SELECT rtl_content FROM ttrss_feeds - WHERE id = '$feed' AND owner_uid = " . $_SESSION["uid"]); - - if (db_num_rows($result) == 1) { - $rtl_content = sql_bool_to_bool(db_fetch_result($result, 0, "rtl_content")); - } else { - $rtl_content = false; - } - - if ($rtl_content) { - $rtl_tag = "dir=\"RTL\""; - } else { - $rtl_tag = ""; - } - } else { - $rtl_tag = ""; - $rtl_content = false; - } - - $script_dt_add = get_script_dt_add(); - - /// START ///////////////////////////////////////////////////////////////////////////////// - - $search = db_escape_string($_REQUEST["query"]); - - if ($search) { - $disable_cache = true; - } - - $search_mode = db_escape_string($_REQUEST["search_mode"]); - $match_on = db_escape_string($_REQUEST["match_on"]); - - if (!$match_on) { - $match_on = "both"; - } - - $real_offset = $offset * $limit; - - if ($_REQUEST["debug"]) $timing_info = print_checkpoint("H0", $timing_info); - - $qfh_ret = queryFeedHeadlines($link, $feed, $limit, $view_mode, $cat_view, - $search, $search_mode, $match_on, $override_order, $real_offset); - - if ($_REQUEST["debug"]) $timing_info = print_checkpoint("H1", $timing_info); - - $result = $qfh_ret[0]; - $feed_title = $qfh_ret[1]; - $feed_site_url = $qfh_ret[2]; - $last_error = $qfh_ret[3]; - - $vgroup_last_feed = $vgr_last_feed; - - if ($feed == -2) { - $feed_site_url = article_publish_url($link); - } - - /// STOP ////////////////////////////////////////////////////////////////////////////////// - - if (!$offset) { - print "
    "; - - if (!$result) { - print "
    ".__("Could not display feed (query failed). Please check label match syntax or local configuration.")."
    "; - return; - } - - print_headline_subtoolbar($link, $feed_site_url, $feed_title, - $feed, $cat_view, $search, $match_on, $search_mode); - - print "
    "; - } - - $headlines_count = db_num_rows($result); - - if (db_num_rows($result) > 0) { - -# print "\{$offset}"; - - if (!get_pref($link, 'COMBINED_DISPLAY_MODE') && !$offset) { - print ""; - } - - $lnum = $limit*$offset; - - error_reporting (DEFAULT_ERROR_LEVEL); - - $num_unread = 0; - $cur_feed_title = ''; - - $fresh_intl = get_pref($link, "FRESH_ARTICLE_MAX_AGE") * 60 * 60; - - while ($line = db_fetch_assoc($result)) { - - $class = ($lnum % 2) ? "even" : "odd"; - - $id = $line["id"]; - $feed_id = $line["feed_id"]; - - $labels = get_article_labels($link, $id); - - $labels_str = ""; - $labels_str .= format_article_labels($labels, $id); - $labels_str .= ""; - - if (count($topmost_article_ids) < 5) { - array_push($topmost_article_ids, $id); - } - - if ($line["last_read"] == "" && !sql_bool_to_bool($line["unread"])) { - - $update_pic = "\"Updated\""; - } else { - $update_pic = "\"Updated\""; - } - - if (sql_bool_to_bool($line["unread"]) && - time() - strtotime($line["updated_noms"]) < $fresh_intl) { - - $update_pic = "\"Fresh\""; - } - - if ($line["unread"] == "t" || $line["unread"] == "1") { - $class .= "Unread"; - ++$num_unread; - $is_unread = true; - } else { - $is_unread = false; - } - - if ($line["marked"] == "t" || $line["marked"] == "1") { - $marked_pic = "\"Unstar"; - } else { - $marked_pic = "\"Star"; - } - - if ($line["published"] == "t" || $line["published"] == "1") { - $published_pic = "\"Unpublish"; - } else { - $published_pic = "\"Publish"; - } - -# $content_link = "" . -# $line["title"] . ""; - -# $content_link = "" . -# $line["title"] . ""; - -# $content_link = "" . -# $line["title"] . ""; - - if (get_pref($link, 'HEADLINES_SMART_DATE')) { - $updated_fmt = smart_date_time(strtotime($line["updated_noms"])); - } else { - $short_date = get_pref($link, 'SHORT_DATE_FORMAT'); - $updated_fmt = date($short_date, strtotime($line["updated_noms"])); - } - - if (get_pref($link, 'SHOW_CONTENT_PREVIEW')) { - $content_preview = truncate_string(strip_tags($line["content_preview"]), - 100); - } - - $score = $line["score"]; - - $score_pic = theme_image($link, - "images/" . get_score_pic($score)); - -/* $score_title = __("(Click to change)"); - $score_pic = ""; */ - - $score_pic = ""; - - if ($score > 500) { - $hlc_suffix = "H"; - } else if ($score < -100) { - $hlc_suffix = "L"; - } else { - $hlc_suffix = ""; - } - - $entry_author = $line["author"]; - - if ($entry_author) { - $entry_author = " - $entry_author"; - } - - $has_feed_icon = feed_has_icon($feed_id); - - if ($has_feed_icon) { - $feed_icon_img = "\"\""; - } else { - //$feed_icon_img = "\"\""; - $feed_icon_img = ""; - } - - if (!get_pref($link, 'COMBINED_DISPLAY_MODE')) { - - if (get_pref($link, 'VFEED_GROUP_BY_FEED')) { - if ($feed_id != $vgroup_last_feed && $line["feed_title"]) { - - $cur_feed_title = $line["feed_title"]; - $vgroup_last_feed = $feed_id; - - $cur_feed_title = htmlspecialchars($cur_feed_title); - - $vf_catchup_link = "(".__('mark as read').")"; - - print ""; - } - } - - $mouseover_attrs = "onmouseover='postMouseIn($id)' - onmouseout='postMouseOut($id)'"; - - print ""; - - print ""; - - print ""; - - print ""; - print ""; - -# if ($line["feed_title"]) { -# print ""; -# print ""; -# } else { - - print ""; - -# } - - print ""; - - print ""; - - if ($line["feed_title"] && !get_pref($link, 'VFEED_GROUP_BY_FEED')) { - print ""; - } - - print ""; - - } else { - - if (get_pref($link, 'VFEED_GROUP_BY_FEED') && $line["feed_title"]) { - if ($feed_id != $vgroup_last_feed) { - - $cur_feed_title = $line["feed_title"]; - $vgroup_last_feed = $feed_id; - - $cur_feed_title = htmlspecialchars($cur_feed_title); - - $vf_catchup_link = "(".__('mark as read').")"; - - $has_feed_icon = feed_has_icon($feed_id); - - if ($has_feed_icon) { - $feed_icon_img = "\"\""; - } else { - //$feed_icon_img = "\"\""; - } - - print "
    ". - "
    $feed_icon_img
    ". - "". - $line["feed_title"]." $vf_catchup_link
    "; - } - } - - if ($is_unread) { - $add_class = "Unread"; - } else { - $add_class = ""; - } - - $expand_cdm = get_pref($link, 'CDM_EXPANDED'); - $show_excerpt = false; - - if ($expand_cdm && $score >= -100) { - $cdm_cstyle = ""; - $show_excerpt = false; - } else { - $cdm_cstyle = "style=\"display : none\""; - $show_excerpt = true; - } - - $mouseover_attrs = "onmouseover='postMouseIn($id)' - onmouseout='postMouseOut($id)'"; - - print "
    "; - - print "
    "; - - if (!get_pref($link, "VFEED_GROUP_BY_FEED") || !$line["feed_title"]) { - $cdm_feed_icon = "$feed_icon_img"; - } - - print "
    $updated_fmt $score_pic $cdm_feed_icon -
    "; - - print "".$line["title"]." - "; - - print $entry_author; - -/* if (!$expand_cdm || $score < -100) { - print "  - (".__('Show article').")"; - } */ - - print $labels_str; - - if (!get_pref($link, 'VFEED_GROUP_BY_FEED')) { - if ($line["feed_title"]) { - print " (".$line["feed_title"].")"; - } - } - - print "
    "; - - if ($show_excerpt) { - print "
    "; - - $content_preview = trim(truncate_string(strip_tags($line["content_preview"]), 100)); - - if (strlen($content_preview) != 0) { - print $content_preview; - } else { - print __('Click to expand article'); - } - print "
    "; - } - - print "
    "; - - if ($line["orig_feed_id"]) { - - $tmp_result = db_query($link, "SELECT * FROM ttrss_archived_feeds - WHERE id = ".$line["orig_feed_id"]); - - if (db_num_rows($tmp_result) != 0) { - - print "
    "; - print __("Originally from:"); - - print " "; - - $tmp_line = db_fetch_assoc($tmp_result); - - print "" . - $tmp_line['title'] . ""; - - print " "; - - print ""; - print ""; - - print "
    "; - } - } - -// print "
    "; - - print "
    "; - if ($line['note']) { - print format_article_note($id, $line['note']); - } - print "
    "; - - print sanitize_rss($link, $line["content_preview"]); - - $article_content = $line["content_preview"]; - - $e_result = db_query($link, "SELECT * FROM ttrss_enclosures WHERE - post_id = '$id' AND content_url != ''"); - - if (db_num_rows($e_result) > 0) { - - $entries_html = array(); - $entries = array(); - - while ($e_line = db_fetch_assoc($e_result)) { - - $url = $e_line["content_url"]; - $ctype = $e_line["content_type"]; - if (!$ctype) $ctype = __("unknown type"); - - $filename = substr($url, strrpos($url, "/")+1); - - $entry = format_inline_player($link, $url, $ctype); - - $entry .= " " . - $filename . " (" . $ctype . ")" . ""; - - array_push($entries_html, $entry); - - $entry = array(); - - $entry["type"] = $ctype; - $entry["filename"] = $filename; - $entry["url"] = $url; - - array_push($entries, $entry); - } - - $tmp_result = db_query($link, "SELECT always_display_enclosures FROM - ttrss_feeds WHERE id = ".$line['feed_id']." AND owner_uid = ".$_SESSION["uid"]); - - $always_display_enclosures = db_fetch_result($tmp_result, 0, "always_display_enclosures"); - - if (!get_pref($link, "STRIP_IMAGES")) { - if ($always_display_enclosures || - !preg_match("/img/i", $article_content)) { - - foreach ($entries as $entry) { - if (preg_match("/image/", $entry["type"]) || - preg_match("/\.(jpg|png|gif|bmp)/i", $entry["filename"])) { - print "

    \"".htmlspecialchars($entry["filename"])."\"

    "; - } - } - } - } - - print "
    "; - - if (db_num_rows($e_result) == 1) { - print __("Attachment:") . " "; - } else { - print __("Attachments:") . " "; - } - - print join(", ", $entries_html); - - print "
    "; - } - - - print "
    "; -// print "
    "; - -/* if (!$expand_cdm) { - print " - Show article"; - } */ - - print "
    "; - - print "
    "; - - /* print "
    Star it: $marked_pic
    "; */ - - print __("Select:"). - " "; - - print "
    $marked_pic "; - print "$published_pic "; - print "Zoom "; - - $note_escaped = htmlspecialchars($line['note'], ENT_QUOTES); - - print "PubNote"; - - print ""; - - $tags_str = format_tags_string(get_article_tags($link, $id), $id); - - print " - Tags - $tags_str - (+)"; - - print ""; - - print " - ".__('toggle unread').""; - - print "
    "; - print "
    "; - - } - - ++$lnum; - } - - if (!get_pref($link, 'COMBINED_DISPLAY_MODE') && !$offset) { - print "
    ". - "
    $feed_icon_img
    ". - "". - $line["feed_title"]." $vf_catchup_link
    $update_pic - - $marked_pic$published_pic$content_link -# ". -# truncate_string($line["feed_title"],30)." "; - - print "" . - $line["title"]; - - if (get_pref($link, 'SHOW_CONTENT_PREVIEW')) { - if ($content_preview) { - print " - $content_preview"; - } - } - - print ""; - - print $labels_str; - -# ". -# $line["feed_title"]." - - if (!get_pref($link, 'VFEED_GROUP_BY_FEED')) { - if ($line["feed_title"]) { - print " - (". - $line["feed_title"].") - "; - } - } - -// print ""; - - print "$updated_fmt $score_pic$feed_icon_img
    "; - } - - } else { - $message = ""; - - switch ($view_mode) { - case "unread": - $message = __("No unread articles found to display."); - break; - case "updated": - $message = __("No updated articles found to display."); - break; - case "marked": - $message = __("No starred articles found to display."); - break; - default: - if ($feed < -10) { - $message = __("No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter."); - } else { - $message = __("No articles found to display."); - } - } - - if (!$offset) print "
    $message
    "; - } - - if (!$offset) { - print "
    "; - print "
    "; - } - - return array($topmost_article_ids, $headlines_count, $feed, $disable_cache, $vgroup_last_feed); - } - -// from here: http://www.roscripts.com/Create_tag_cloud-71.html - - function printTagCloud($link) { - - $query = "SELECT tag_name, COUNT(post_int_id) AS count - FROM ttrss_tags WHERE owner_uid = ".$_SESSION["uid"]." - GROUP BY tag_name ORDER BY count DESC LIMIT 50"; - - $result = db_query($link, $query); - - $tags = array(); - - while ($line = db_fetch_assoc($result)) { - $tags[$line["tag_name"]] = $line["count"]; - } - - ksort($tags); - - $max_size = 32; // max font size in pixels - $min_size = 11; // min font size in pixels - - // largest and smallest array values - $max_qty = max(array_values($tags)); - $min_qty = min(array_values($tags)); - - // find the range of values - $spread = $max_qty - $min_qty; - if ($spread == 0) { // we don't want to divide by zero - $spread = 1; - } - - // set the font-size increment - $step = ($max_size - $min_size) / ($spread); - - // loop through the tag array - foreach ($tags as $key => $value) { - // calculate font-size - // find the $value in excess of $min_qty - // multiply by the font-size increment ($size) - // and add the $min_size set above - $size = round($min_size + (($value - $min_qty) * $step)); - - $key_escaped = str_replace("'", "\\'", $key); - - echo "' . $key . ' '; - } - } - - function print_checkpoint($n, $s) { - $ts = getmicrotime(); - echo sprintf("", $ts - $s); - return $ts; - } - - function sanitize_tag($tag) { - $tag = trim($tag); - - $tag = mb_strtolower($tag, 'utf-8'); - - $tag = preg_replace('/[\"\+\>\<]/', "", $tag); - -// $tag = str_replace('"', "", $tag); -// $tag = str_replace("+", " ", $tag); - $tag = str_replace("technorati tag: ", "", $tag); - - return $tag; - } - - function generate_publish_key() { - return sha1(uniqid(rand(), true)); - } - - function article_publish_url($link) { - - $url_path = ""; - - - if ($_SERVER['HTTPS'] != "on") { - $url_path = "http://"; - } else { - $url_path = "https://"; - } - - $url_path .= $_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']); - $url_path .= "/backend.php?op=publish&key=" . - get_pref($link, "_PREFS_PUBLISH_KEY", $_SESSION["uid"]); - - return $url_path; - } - function opml_publish_url($link){ - $url_path = ""; - - - if ($_SERVER['HTTPS'] != "on") { - $url_path = "http://"; - } else { - $url_path = "https://"; - } - - $url_path .= $_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']); - $url_path .= "/opml.php?op=publish&key=" . - get_pref($link, "_PREFS_PUBLISH_KEY", $_SESSION["uid"]); - - return $url_path; - } - - /** - * Purge a feed contents, marked articles excepted. - * - * @param mixed $link The database connection. - * @param integer $id The id of the feed to purge. - * @return void - */ - function clear_feed_articles($link, $id) { - - if ($id != 0) { - $result = db_query($link, "DELETE FROM ttrss_user_entries - WHERE feed_id = '$id' AND marked = false AND owner_uid = " . $_SESSION["uid"]); - } else { - $result = db_query($link, "DELETE FROM ttrss_user_entries - WHERE feed_id IS NULL AND marked = false AND owner_uid = " . $_SESSION["uid"]); - } - - $result = db_query($link, "DELETE FROM ttrss_entries WHERE - (SELECT COUNT(int_id) FROM ttrss_user_entries WHERE ref_id = id) = 0"); - - ccache_update($link, $id, $_SESSION['uid']); - } // function clear_feed_articles - - /** - * Compute the Mozilla Firefox feed adding URL from server HOST and REQUEST_URI. - * - * @return string The Mozilla Firefox feed adding URL. - */ - function add_feed_url() { - $url_path = ($_SERVER['HTTPS'] != "on" ? 'http://' : 'https://') . $_SERVER["HTTP_HOST"] . parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH); - $url_path .= "?op=pref-feeds&quiet=1&subop=add&feed_url=%s"; - return $url_path; - } // function add_feed_url - - /** - * Encrypt a password in SHA1. - * - * @param string $pass The password to encrypt. - * @param string $login A optionnal login. - * @return string The encrypted password. - */ - function encrypt_password($pass, $login = '') { - if ($login) { - return "SHA1X:" . sha1("$login:$pass"); - } else { - return "SHA1:" . sha1($pass); - } - } // function encrypt_password - - /** - * Update a feed batch. - * Used by daemons to update n feeds by run. - * Only update feed needing a update, and not being processed - * by another process. - * - * @param mixed $link Database link - * @param integer $limit Maximum number of feeds in update batch. Default to DAEMON_FEED_LIMIT. - * @param boolean $from_http Set to true if you call this function from http to disable cli specific code. - * @param boolean $debug Set to false to disable debug output. Default to true. - * @return void - */ - function update_daemon_common($link, $limit = DAEMON_FEED_LIMIT, $from_http = false, $debug = true) { - // Process all other feeds using last_updated and interval parameters - - // Test if the user has loggued in recently. If not, it does not update its feeds. - if (DAEMON_UPDATE_LOGIN_LIMIT > 0) { - if (DB_TYPE == "pgsql") { - $login_thresh_qpart = "AND ttrss_users.last_login >= NOW() - INTERVAL '".DAEMON_UPDATE_LOGIN_LIMIT." days'"; - } else { - $login_thresh_qpart = "AND ttrss_users.last_login >= DATE_SUB(NOW(), INTERVAL ".DAEMON_UPDATE_LOGIN_LIMIT." DAY)"; - } - } else { - $login_thresh_qpart = ""; - } - - // Test if the feed need a update (update interval exceded). - if (DB_TYPE == "pgsql") { - $update_limit_qpart = "AND (( - ttrss_feeds.update_interval = 0 - AND ttrss_feeds.last_updated < NOW() - CAST((ttrss_user_prefs.value || ' minutes') AS INTERVAL) - ) OR ( - ttrss_feeds.update_interval > 0 - AND ttrss_feeds.last_updated < NOW() - CAST((ttrss_feeds.update_interval || ' minutes') AS INTERVAL) - ) OR ttrss_feeds.last_updated IS NULL)"; - } else { - $update_limit_qpart = "AND (( - ttrss_feeds.update_interval = 0 - AND ttrss_feeds.last_updated < DATE_SUB(NOW(), INTERVAL CONVERT(ttrss_user_prefs.value, SIGNED INTEGER) MINUTE) - ) OR ( - ttrss_feeds.update_interval > 0 - AND ttrss_feeds.last_updated < DATE_SUB(NOW(), INTERVAL ttrss_feeds.update_interval MINUTE) - ) OR ttrss_feeds.last_updated IS NULL)"; - } - - // Test if feed is currently being updated by another process. - if (DB_TYPE == "pgsql") { - $updstart_thresh_qpart = "AND (ttrss_feeds.last_update_started IS NULL OR ttrss_feeds.last_update_started < NOW() - INTERVAL '120 seconds')"; - } else { - $updstart_thresh_qpart = "AND (ttrss_feeds.last_update_started IS NULL OR ttrss_feeds.last_update_started < DATE_SUB(NOW(), INTERVAL 120 SECOND))"; - } - - // Test if there is a limit to number of updated feeds - $query_limit = ""; - if($limit) $query_limit = sprintf("LIMIT %d", $limit); - - $random_qpart = sql_random_function(); - - // We search for feed needing update. - $result = db_query($link, "SELECT ttrss_feeds.feed_url,ttrss_feeds.id, ttrss_feeds.owner_uid, - ".SUBSTRING_FOR_DATE."(ttrss_feeds.last_updated,1,19) AS last_updated, - ttrss_feeds.update_interval - FROM - ttrss_feeds, ttrss_users, ttrss_user_prefs - WHERE - ttrss_feeds.owner_uid = ttrss_users.id - AND ttrss_users.id = ttrss_user_prefs.owner_uid - AND ttrss_user_prefs.pref_name = 'DEFAULT_UPDATE_INTERVAL' - $login_thresh_qpart $update_limit_qpart - $updstart_thresh_qpart - ORDER BY $random_qpart $query_limit"); - - $user_prefs_cache = array(); - - if($debug) _debug(sprintf("Scheduled %d feeds to update...\n", db_num_rows($result))); - - // Here is a little cache magic in order to minimize risk of double feed updates. - $feeds_to_update = array(); - while ($line = db_fetch_assoc($result)) { - $feeds_to_update[$line['id']] = $line; - } - - // We update the feed last update started date before anything else. - // There is no lag due to feed contents downloads - // It prevent an other process to update the same feed. - $feed_ids = array_keys($feeds_to_update); - if($feed_ids) { - db_query($link, sprintf("UPDATE ttrss_feeds SET last_update_started = NOW() - WHERE id IN (%s)", implode(',', $feed_ids))); - } - - // For each feed, we call the feed update function. - while ($line = array_pop($feeds_to_update)) { - - if($debug) _debug("Feed: " . $line["feed_url"] . ", " . $line["last_updated"]); - - // We setup a alarm to alert if the feed take more than 300s to update. - // => HANG alarm. - if(!$from_http && function_exists('pcntl_alarm')) pcntl_alarm(300); - update_rss_feed($link, $line["id"], true); - // Cancel the alarm (the update went well) - if(!$from_http && function_exists('pcntl_alarm')) pcntl_alarm(0); - - sleep(1); // prevent flood (FIXME make this an option?) - } - - // Send feed digests by email if needed. - if (DAEMON_SENDS_DIGESTS) send_headlines_digests($link); - - purge_orphans($link); - - } // function update_daemon_common - - function sanitize_article_content($text) { - # we don't support CDATA sections in articles, they break our own escaping - $text = preg_replace("/\[\[CDATA/", "", $text); - $text = preg_replace("/\]\]\>/", "", $text); - return $text; - } - - function load_filters($link, $feed, $owner_uid, $action_id = false) { - $filters = array(); - - global $memcache; - - $obj_id = md5("FILTER:$feed:$owner_uid:$action_id"); - - if ($memcache && $obj = $memcache->get($obj_id)) { - - return $obj; - - } else { - - if ($action_id) $ftype_query_part = "action_id = '$action_id' AND"; - - $result = db_query($link, "SELECT reg_exp, - ttrss_filter_types.name AS name, - ttrss_filter_actions.name AS action, - inverse, - action_param, - filter_param - FROM ttrss_filters,ttrss_filter_types,ttrss_filter_actions WHERE - enabled = true AND - $ftype_query_part - owner_uid = $owner_uid AND - ttrss_filter_types.id = filter_type AND - ttrss_filter_actions.id = action_id AND - (feed_id IS NULL OR feed_id = '$feed') ORDER BY reg_exp"); - - while ($line = db_fetch_assoc($result)) { - if (!$filters[$line["name"]]) $filters[$line["name"]] = array(); - $filter["reg_exp"] = $line["reg_exp"]; - $filter["action"] = $line["action"]; - $filter["action_param"] = $line["action_param"]; - $filter["filter_param"] = $line["filter_param"]; - $filter["inverse"] = sql_bool_to_bool($line["inverse"]); - - array_push($filters[$line["name"]], $filter); - } - - if ($memcache) $memcache->add($obj_id, $filters, 0, 3600*8); - - return $filters; - } - } - - function get_score_pic($score) { - if ($score > 100) { - return "score_high.png"; - } else if ($score > 0) { - return "score_half_high.png"; - } else if ($score < -100) { - return "score_low.png"; - } else if ($score < 0) { - return "score_half_low.png"; - } else { - return "score_neutral.png"; - } - } - - function rounded_table_start($classname, $header = " ") { - print ""; - print ""; - print ""; - print ""; - print "
     $header 
     "; - } - - function rounded_table_end($footer = " ") { - print " 
     $footer 
    "; - } - - function feed_has_icon($id) { - return is_file(ICONS_DIR . "/$id.ico") && filesize(ICONS_DIR . "/$id.ico") > 0; - } - - function init_connection($link) { - if (DB_TYPE == "pgsql") { - pg_query($link, "set client_encoding = 'UTF-8'"); - pg_set_client_encoding("UNICODE"); - pg_query($link, "set datestyle = 'ISO, european'"); - } else { - if (defined('MYSQL_CHARSET') && MYSQL_CHARSET) { - db_query($link, "SET NAMES " . MYSQL_CHARSET); - // db_query($link, "SET CHARACTER SET " . MYSQL_CHARSET); - } - } - } - - function update_feedbrowser_cache($link) { - - $result = db_query($link, "SELECT feed_url,title, COUNT(id) AS subscribers - FROM ttrss_feeds WHERE (SELECT COUNT(id) = 0 FROM ttrss_feeds AS tf - WHERE tf.feed_url = ttrss_feeds.feed_url - AND (private IS true OR feed_url LIKE '%:%@%/%')) - GROUP BY feed_url, title ORDER BY subscribers DESC LIMIT 1000"); - - db_query($link, "BEGIN"); - - db_query($link, "DELETE FROM ttrss_feedbrowser_cache"); - - $count = 0; - - while ($line = db_fetch_assoc($result)) { - $subscribers = db_escape_string($line["subscribers"]); - $feed_url = db_escape_string($line["feed_url"]); - $title = db_escape_string($line["title"]); - - $tmp_result = db_query($link, "SELECT subscribers FROM - ttrss_feedbrowser_cache WHERE feed_url = '$feed_url'"); - - if (db_num_rows($tmp_result) == 0) { - - db_query($link, "INSERT INTO ttrss_feedbrowser_cache - (feed_url, title, subscribers) VALUES ('$feed_url', - '$title', '$subscribers')"); - - ++$count; - - } - - } - - db_query($link, "COMMIT"); - - return $count; - - } - - function ccache_zero($link, $feed_id, $owner_uid) { - db_query($link, "UPDATE ttrss_counters_cache SET - value = 0, updated = NOW() WHERE - feed_id = '$feed_id' AND owner_uid = '$owner_uid'"); - } - - function ccache_zero_all($link, $owner_uid) { - db_query($link, "UPDATE ttrss_counters_cache SET - value = 0 WHERE owner_uid = '$owner_uid'"); - - db_query($link, "UPDATE ttrss_cat_counters_cache SET - value = 0 WHERE owner_uid = '$owner_uid'"); - } - - function ccache_remove($link, $feed_id, $owner_uid, $is_cat = false) { - - if (!$is_cat) { - $table = "ttrss_counters_cache"; - } else { - $table = "ttrss_cat_counters_cache"; - } - - db_query($link, "DELETE FROM $table WHERE - feed_id = '$feed_id' AND owner_uid = '$owner_uid'"); - - } - - function ccache_update_all($link, $owner_uid) { - - if (get_pref($link, 'ENABLE_FEED_CATS', $owner_uid)) { - - $result = db_query($link, "SELECT feed_id FROM ttrss_cat_counters_cache - WHERE feed_id > 0 AND owner_uid = '$owner_uid'"); - - while ($line = db_fetch_assoc($result)) { - ccache_update($link, $line["feed_id"], $owner_uid, true); - } - - /* We have to manually include category 0 */ - - ccache_update($link, 0, $owner_uid, true); - - } else { - $result = db_query($link, "SELECT feed_id FROM ttrss_counters_cache - WHERE feed_id > 0 AND owner_uid = '$owner_uid'"); - - while ($line = db_fetch_assoc($result)) { - print ccache_update($link, $line["feed_id"], $owner_uid); - - } - - } - } - - function ccache_find($link, $feed_id, $owner_uid, $is_cat = false, - $no_update = false) { - - if (!is_numeric($feed_id)) return; - - if (!$is_cat) { - $table = "ttrss_counters_cache"; - if ($feed_id > 0) { - $tmp_result = db_query($link, "SELECT owner_uid FROM ttrss_feeds - WHERE id = '$feed_id'"); - $owner_uid = db_fetch_result($tmp_result, 0, "owner_uid"); - } - } else { - $table = "ttrss_cat_counters_cache"; - } - - if (DB_TYPE == "pgsql") { - $date_qpart = "updated > NOW() - INTERVAL '15 minutes'"; - } else if (DB_TYPE == "mysql") { - $date_qpart = "updated > DATE_SUB(NOW(), INTERVAL 15 MINUTE)"; - } - - $result = db_query($link, "SELECT value FROM $table - WHERE owner_uid = '$owner_uid' AND feed_id = '$feed_id' - LIMIT 1"); - - if (db_num_rows($result) == 1) { - return db_fetch_result($result, 0, "value"); - } else { - if ($no_update) { - return -1; - } else { - return ccache_update($link, $feed_id, $owner_uid, $is_cat); - } - } - - } - - function ccache_update($link, $feed_id, $owner_uid, $is_cat = false, - $update_pcat = true) { - - if (!is_numeric($feed_id)) return; - - if (!$is_cat && $feed_id > 0) { - $tmp_result = db_query($link, "SELECT owner_uid FROM ttrss_feeds - WHERE id = '$feed_id'"); - $owner_uid = db_fetch_result($tmp_result, 0, "owner_uid"); - } - - $prev_unread = ccache_find($link, $feed_id, $owner_uid, $is_cat, true); - - /* When updating a label, all we need to do is recalculate feed counters - * because labels are not cached */ - - if ($feed_id < 0) { - ccache_update_all($link, $owner_uid); - return; - } - - if (!$is_cat) { - $table = "ttrss_counters_cache"; - } else { - $table = "ttrss_cat_counters_cache"; - } - - if ($is_cat && $feed_id >= 0) { - if ($feed_id != 0) { - $cat_qpart = "cat_id = '$feed_id'"; - } else { - $cat_qpart = "cat_id IS NULL"; - } - - /* Recalculate counters for child feeds */ - - $result = db_query($link, "SELECT id FROM ttrss_feeds - WHERE owner_uid = '$owner_uid' AND $cat_qpart"); - - while ($line = db_fetch_assoc($result)) { - ccache_update($link, $line["id"], $owner_uid, false, false); - } - - $result = db_query($link, "SELECT SUM(value) AS sv - FROM ttrss_counters_cache, ttrss_feeds - WHERE id = feed_id AND $cat_qpart AND - ttrss_feeds.owner_uid = '$owner_uid'"); - - $unread = (int) db_fetch_result($result, 0, "sv"); - - } else { - $unread = (int) getFeedArticles($link, $feed_id, $is_cat, true, $owner_uid); - } - - db_query($link, "BEGIN"); - - $result = db_query($link, "SELECT feed_id FROM $table - WHERE owner_uid = '$owner_uid' AND feed_id = '$feed_id' LIMIT 1"); - - if (db_num_rows($result) == 1) { - db_query($link, "UPDATE $table SET - value = '$unread', updated = NOW() WHERE - feed_id = '$feed_id' AND owner_uid = '$owner_uid'"); - - } else { - db_query($link, "INSERT INTO $table - (feed_id, value, owner_uid, updated) - VALUES - ($feed_id, $unread, $owner_uid, NOW())"); - } - - db_query($link, "COMMIT"); - - if ($feed_id > 0 && $prev_unread != $unread) { - - if (!$is_cat) { - - /* Update parent category */ - - if ($update_pcat) { - - $result = db_query($link, "SELECT cat_id FROM ttrss_feeds - WHERE owner_uid = '$owner_uid' AND id = '$feed_id'"); - - $cat_id = (int) db_fetch_result($result, 0, "cat_id"); - - ccache_update($link, $cat_id, $owner_uid, true); - - } - } - } else if ($feed_id < 0) { - ccache_update_all($link, $owner_uid); - } - - return $unread; - } - - function label_find_id($link, $label, $owner_uid) { - $result = db_query($link, - "SELECT id FROM ttrss_labels2 WHERE caption = '$label' - AND owner_uid = '$owner_uid' LIMIT 1"); - - if (db_num_rows($result) == 1) { - return db_fetch_result($result, 0, "id"); - } else { - return 0; - } - } - - function get_article_labels($link, $id) { - global $memcache; - - $result = db_query($link, - "SELECT DISTINCT label_id,caption,fg_color,bg_color - FROM ttrss_labels2, ttrss_user_labels2 - WHERE id = label_id - AND article_id = '$id' - AND owner_uid = ".$_SESSION["uid"] . " - ORDER BY caption"); - - $obj_id = md5("LABELS:$id:" . $_SESSION["uid"]); - - $rv = array(); - - if ($memcache && $obj = $memcache->get($obj_id)) { - return $obj; - } else { - while ($line = db_fetch_assoc($result)) { - $rk = array($line["label_id"], $line["caption"], $line["fg_color"], - $line["bg_color"]); - array_push($rv, $rk); - } - if ($memcache) $memcache->add($obj_id, $rv, 0, 3600); - } - - return $rv; - } - - - function label_find_caption($link, $label, $owner_uid) { - $result = db_query($link, - "SELECT caption FROM ttrss_labels2 WHERE id = '$label' - AND owner_uid = '$owner_uid' LIMIT 1"); - - if (db_num_rows($result) == 1) { - return db_fetch_result($result, 0, "caption"); - } else { - return ""; - } - } - - function label_remove_article($link, $id, $label, $owner_uid) { - - $label_id = label_find_id($link, $label, $owner_uid); - - if (!$label_id) return; - - $result = db_query($link, - "DELETE FROM ttrss_user_labels2 - WHERE - label_id = '$label_id' AND - article_id = '$id'"); - } - - function label_add_article($link, $id, $label, $owner_uid) { - - global $memcache; - - if ($memcache) { - $obj_id = md5("LABELS:$id:$owner_uid"); - $memcache->delete($obj_id); - } - - $label_id = label_find_id($link, $label, $owner_uid); - - if (!$label_id) return; - - $result = db_query($link, - "SELECT - article_id FROM ttrss_labels2, ttrss_user_labels2 - WHERE - label_id = id AND - label_id = '$label_id' AND - article_id = '$id' AND owner_uid = '$owner_uid' - LIMIT 1"); - - if (db_num_rows($result) == 0) { - db_query($link, "INSERT INTO ttrss_user_labels2 - (label_id, article_id) VALUES ('$label_id', '$id')"); - } - } - - function label_remove($link, $id, $owner_uid) { - global $memcache; - - if ($memcache) { - $obj_id = md5("LABELS:$id:$owner_uid"); - $memcache->delete($obj_id); - } - - db_query($link, "BEGIN"); - - $result = db_query($link, "SELECT caption FROM ttrss_labels2 - WHERE id = '$id'"); - - $caption = db_fetch_result($result, 0, "caption"); - - $result = db_query($link, "DELETE FROM ttrss_labels2 WHERE id = '$id' - AND owner_uid = " . $_SESSION["uid"]); - - if (db_affected_rows($link, $result) != 0 && $caption) { - - /* Disable filters that reference label being removed */ - - db_query($link, "UPDATE ttrss_filters SET - enabled = false WHERE action_param = '$caption' - AND action_id = 7 - AND owner_uid = " . $_SESSION["uid"]); - } - - db_query($link, "COMMIT"); - } - - function label_create($link, $caption) { - - db_query($link, "BEGIN"); - - $result = false; - - $result = db_query($link, "SELECT id FROM ttrss_labels2 - WHERE caption = '$caption' AND owner_uid = ". $_SESSION["uid"]); - - if (db_num_rows($result) == 0) { - $result = db_query($link, - "INSERT INTO ttrss_labels2 (caption,owner_uid) - VALUES ('$caption', '".$_SESSION["uid"]."')"); - - $result = db_affected_rows($link, $result) != 0; - } - - db_query($link, "COMMIT"); - - return $result; - } - - function print_labels_headlines_dropdown($link, $feed_id) { - print "
  • -   ".__("Create label...")."
  • "; - - $result = db_query($link, "SELECT id, caption FROM ttrss_labels2 WHERE - owner_uid = '".$_SESSION["uid"]."' ORDER BY caption"); - - while ($line = db_fetch_assoc($result)) { - - $label_id = $line["id"]; - $label_caption = $line["caption"]; - - if ($feed_id < -10 && $feed_id == -11-$label_id) { - print "
  • -   $label_caption ".__('(remove)')."
  • "; - } else { - print "
  • -   $label_caption
  • "; - } - } - } - - function format_tags_string($tags, $id) { - - $tags_str = ""; - $tags_nolinks_str = ""; - - $num_tags = 0; - -/* if (get_user_theme($link) == "3pane") { - $tag_limit = 3; - } else { - $tag_limit = 6; - } */ - - $tag_limit = 6; - - $formatted_tags = array(); - - foreach ($tags as $tag) { - $num_tags++; - $tag_escaped = str_replace("'", "\\'", $tag); - - if (mb_strlen($tag) > 30) { - $tag = truncate_string($tag, 30); - } - - $tag_str = "$tag"; - - array_push($formatted_tags, $tag_str); - - $tmp_tags_str = implode(", ", $formatted_tags); - - if ($num_tags == $tag_limit || mb_strlen($tmp_tags_str) > 150) { - break; - } - } - - $tags_str = implode(", ", $formatted_tags); - - if ($num_tags < count($tags)) { - $tags_str .= ", …"; - } - - if ($num_tags == 0) { - $tags_str = __("no tags"); - } - - return $tags_str; - - } - - function format_article_labels($labels, $id) { - - $labels_str = ""; - - foreach ($labels as $l) { - $labels_str .= sprintf("%s", - $l[2], $l[3], $l[1]); - } - - return $labels_str; - - } - - function format_article_note($id, $note) { - - $note_escaped = htmlspecialchars($note, ENT_QUOTES); - - $str = "
    "; - $str .= $note; - $str .= "
    "; - $str .= "". - __('edit note').""; - $str .= "
    "; - $str .= "
    "; - - return $str; - } - - function toggle_collapse_cat($link, $cat_id) { - if ($cat_id > 0) { - db_query($link, "UPDATE ttrss_feed_categories SET - collapsed = NOT collapsed WHERE id = '$cat_id' AND owner_uid = " . - $_SESSION["uid"]); - } else { - $pref_name = ''; - - switch ($cat_id) { - case -1: - $pref_name = '_COLLAPSED_SPECIAL'; - break; - case -2: - $pref_name = '_COLLAPSED_LABELS'; - break; - case 0: - $pref_name = '_COLLAPSED_UNCAT'; - break; - } - - if ($pref_name) { - if (get_pref($link, $pref_name)) { - set_pref($link, $pref_name, 'false'); - } else { - set_pref($link, $pref_name, 'true'); - } - } - } - } - - function remove_feed($link, $id, $owner_uid) { - - if ($id > 0) { - - /* save starred articles in Archived feed */ - - db_query($link, "BEGIN"); - - /* prepare feed if necessary */ - - $result = db_query($link, "SELECT id FROM ttrss_archived_feeds - WHERE id = '$id'"); - - if (db_num_rows($result) == 0) { - db_query($link, "INSERT INTO ttrss_archived_feeds - (id, owner_uid, title, feed_url, site_url) - SELECT id, owner_uid, title, feed_url, site_url from ttrss_feeds - WHERE id = '$id'"); - } - - db_query($link, "UPDATE ttrss_user_entries SET feed_id = NULL, - orig_feed_id = '$id' WHERE feed_id = '$id' AND - marked = true AND owner_uid = $owner_uid"); - - /* remove the feed */ - - db_query($link, "DELETE FROM ttrss_feeds - WHERE id = '$id' AND owner_uid = $owner_uid"); - - db_query($link, "COMMIT"); - -/* if (file_exists(ICONS_DIR . "/$id.ico")) { - unlink(ICONS_DIR . "/$id.ico"); - } */ - - ccache_remove($link, $id, $owner_uid); - - } else { - label_remove($link, -11-$id, $owner_uid); - ccache_remove($link, -11-$id, $owner_uid); - } - } - - function remove_feed_category($link, $id, $owner_uid) { - - db_query($link, "DELETE FROM ttrss_feed_categories - WHERE id = '$id' AND owner_uid = $owner_uid"); - - ccache_remove($link, $id, $owner_uid, true); - } - - function archive_article($link, $id, $owner_uid) { - db_query($link, "BEGIN"); - - $result = db_query($link, "SELECT feed_id FROM ttrss_user_entries - WHERE ref_id = '$id' AND owner_uid = $owner_uid"); - - if (db_num_rows($result) != 0) { - - /* prepare the archived table */ - - $feed_id = (int) db_fetch_result($result, 0, "feed_id"); - - if ($feed_id) { - $result = db_query($link, "SELECT id FROM ttrss_archived_feeds - WHERE id = '$feed_id'"); - - if (db_num_rows($result) == 0) { - db_query($link, "INSERT INTO ttrss_archived_feeds - (id, owner_uid, title, feed_url, site_url) - SELECT id, owner_uid, title, feed_url, site_url from ttrss_feeds - WHERE id = '$feed_id'"); - } - - db_query($link, "UPDATE ttrss_user_entries - SET orig_feed_id = feed_id, feed_id = NULL - WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); - } - } - - db_query($link, "COMMIT"); - } - - function getArticleFeed($link, $id) { - $result = db_query($link, "SELECT feed_id FROM ttrss_user_entries - WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); - - if (db_num_rows($result) != 0) { - return db_fetch_result($result, 0, "feed_id"); - } else { - return 0; - } - } - - function make_url_from_parts($parts) { - $url = $parts['scheme'] . '://' . $parts['host']; - - if ($parts['path']) $url .= $parts['path']; - if ($parts['query']) $url .= '?' . $parts['query']; - - return $url; - } - - function validate_feed_url($url) { - $parts = parse_url($url); - - return ($parts['scheme'] == 'http' || $parts['scheme'] == 'feed' || $parts['scheme'] == 'https'); - - } - - function get_article_enclosures($link, $id) { - - global $memcache; - - $query = "SELECT * FROM ttrss_enclosures - WHERE post_id = '$id' AND content_url != ''"; - - $obj_id = md5("ENCLOSURES:$id"); - - $rv = array(); - - if ($memcache && $obj = $memcache->get($obj_id)) { - $rv = $obj; - } else { - $result = db_query($link, $query); - - if (db_num_rows($result) > 0) { - while ($line = db_fetch_assoc($result)) { - array_push($rv, $line); - } - if ($memcache) $memcache->add($obj_id, $rv, 0, 3600); - } - } - - return $rv; - } - -?> diff --git a/gears_init.js b/gears_init.js deleted file mode 100644 index 3462d73e8e..0000000000 --- a/gears_init.js +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2007, Google Inc. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// 3. Neither the name of Google Inc. nor the names of its contributors may be -// used to endorse or promote products derived from this software without -// specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Sets up google.gears.*, which is *the only* supported way to access Gears. -// -// Circumvent this file at your own risk! -// -// In the future, Gears may automatically define google.gears.* without this -// file. Gears may use these objects to transparently fix bugs and compatibility -// issues. Applications that use the code below will continue to work seamlessly -// when that happens. - -(function() { - // We are already defined. Hooray! - if (window.google && google.gears) { - return; - } - - var factory = null; - - // Firefox - if (typeof GearsFactory != 'undefined') { - factory = new GearsFactory(); - } else { - // IE - try { - factory = new ActiveXObject('Gears.Factory'); - // privateSetGlobalObject is only required and supported on IE Mobile on - // WinCE. - if (factory.getBuildInfo().indexOf('ie_mobile') != -1) { - factory.privateSetGlobalObject(this); - } - } catch (e) { - // Safari - if ((typeof navigator.mimeTypes != 'undefined') - && navigator.mimeTypes["application/x-googlegears"]) { - factory = document.createElement("object"); - factory.style.display = "none"; - factory.width = 0; - factory.height = 0; - factory.type = "application/x-googlegears"; - document.documentElement.appendChild(factory); - } - } - } - - // *Do not* define any objects if Gears is not installed. This mimics the - // behavior of Gears defining the objects in the future. - if (!factory) { - return; - } - - // Now set up the objects, being careful not to overwrite anything. - // - // Note: In Internet Explorer for Windows Mobile, you can't add properties to - // the window object. However, global objects are automatically added as - // properties of the window object in all browsers. - if (!window.google) { - google = {}; - } - - if (!google.gears) { - google.gears = {factory: factory}; - } -})(); diff --git a/help/2.php b/help/2.php deleted file mode 100644 index 5cf9f12253..0000000000 --- a/help/2.php +++ /dev/null @@ -1,10 +0,0 @@ -

    - -

    - -

    - -

    - -

    ContentFilters (wiki) - diff --git a/help/3.php b/help/3.php deleted file mode 100644 index 52aabc88fe..0000000000 --- a/help/3.php +++ /dev/null @@ -1,69 +0,0 @@ -

    - -
    - -

    - - - - - -
    j/k
    n/p
    /
    - -

    - - - - - - - - - - -
    s
    S
    u
    T
    o
    c n/c p
    N/P
    - -

    - - - - - - - - -
    [tab]
    c l
    c f
    c s
    c m
    ?
    - -
    - -

    - - - - - - - - - - - - - -
    f r
    f a
    f s
    f e
    f w
    f h
    f q
    f x
    Q
    x
    - -

    - - - - - - - - -
    g a
    g f
    g s
    g p
    g t
    g P
    - - -
    - -

    diff --git a/help/4.php b/help/4.php deleted file mode 100644 index b3333f23fa..0000000000 --- a/help/4.php +++ /dev/null @@ -1,41 +0,0 @@ -

    - -
    - -

    - - - - - - - - - -
    g 1
    g 2
    g 3
    g 4
    g 5
    g x
    - -
    - -

    - - - - - - - - -
    c s
    c T
    c c
    c f
    - -

    - - - - -
    /
    ?
    - -
    - -
    - - - diff --git a/utils/update-js-translations.sh b/utils/update-js-translations.sh deleted file mode 100644 index bdac394cb0..0000000000 --- a/utils/update-js-translations.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh - -if [ ! -f localized_js.php ]; then - echo "please run this script from tt-rss directory" - exit 1 -fi - -echo "This script is not used anymore." - -exit 0 # disabled - -cat >localized_js.php <
    - -var T_messages = new Object(); - -function __(msg) { - if (T_messages[msg]) { - return T_messages[msg]; - } else { - debug('[gettext] not found: ' + msg); - return msg; - } -} - -> localized_js.php - -cat >>localized_js.php <