summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.docker/app/Dockerfile2
-rw-r--r--.docker/phpdoc/Dockerfile4
-rw-r--r--.docker/web-nginx/nginx.conf20
-rw-r--r--.gitlab-ci.yml23
-rw-r--r--classes/API.php2
-rw-r--r--classes/Config.php15
-rw-r--r--classes/DiskCache.php2
-rw-r--r--classes/Feeds.php90
-rw-r--r--classes/PluginHost.php23
-rw-r--r--classes/Pref_Prefs.php14
-rw-r--r--classes/Prefs.php6
-rw-r--r--classes/UrlHelper.php26
-rw-r--r--classes/UserHelper.php3
-rw-r--r--docker-compose.yml3
-rw-r--r--include/colors.php5
-rw-r--r--include/functions.php2
-rw-r--r--index.php11
-rw-r--r--js/Feeds.js1
-rwxr-xr-xjs/Headlines.js10
-rw-r--r--locale/de_DE/LC_MESSAGES/messages.mobin52859 -> 52864 bytes
-rw-r--r--locale/de_DE/LC_MESSAGES/messages.po8
-rw-r--r--locale/el_GR/LC_MESSAGES/messages.mobin26369 -> 72137 bytes
-rw-r--r--locale/el_GR/LC_MESSAGES/messages.po1026
-rw-r--r--locale/es/LC_MESSAGES/messages.mobin45837 -> 54122 bytes
-rw-r--r--locale/es/LC_MESSAGES/messages.po529
-rw-r--r--locale/gl/LC_MESSAGES/messages.mobin51536 -> 51549 bytes
-rw-r--r--locale/gl/LC_MESSAGES/messages.po18
-rw-r--r--plugins/auth_internal/init.php2
-rw-r--r--plugins/auth_remote/init.php4
-rw-r--r--prefs.php10
-rw-r--r--tests/ConfigTest.php24
-rwxr-xr-xutils/phpunit.sh2
32 files changed, 773 insertions, 1112 deletions
diff --git a/.docker/app/Dockerfile b/.docker/app/Dockerfile
index 4269f0b17..eb1af1ba9 100644
--- a/.docker/app/Dockerfile
+++ b/.docker/app/Dockerfile
@@ -9,7 +9,7 @@ ENV SCRIPT_ROOT=/opt/tt-rss
ENV SRC_DIR=/src/tt-rss/
RUN [ ! -z ${ALPINE_MIRROR} ] && \
- sed -i.bak "s#dl-cdn.alpinelinux.org#${ALPINE_MIRROR}#" /etc/apk/repositories && \
+ sed -i.bak "s#dl-cdn.alpinelinux.org#${ALPINE_MIRROR}#" /etc/apk/repositories ; \
apk add --no-cache dcron php83 php83-fpm php83-phar php83-sockets php83-pecl-apcu \
php83-pdo php83-gd php83-pgsql php83-pdo_pgsql php83-xmlwriter php83-opcache \
php83-mbstring php83-intl php83-xml php83-curl php83-simplexml \
diff --git a/.docker/phpdoc/Dockerfile b/.docker/phpdoc/Dockerfile
new file mode 100644
index 000000000..c16c1415f
--- /dev/null
+++ b/.docker/phpdoc/Dockerfile
@@ -0,0 +1,4 @@
+ARG PROXY_REGISTRY
+FROM ${PROXY_REGISTRY}nginx:alpine
+
+COPY ./phpdoc /usr/share/nginx/html/ttrss-docs
diff --git a/.docker/web-nginx/nginx.conf b/.docker/web-nginx/nginx.conf
index 411cbf453..94511eeb9 100644
--- a/.docker/web-nginx/nginx.conf
+++ b/.docker/web-nginx/nginx.conf
@@ -34,6 +34,7 @@ http {
rewrite ${APP_BASE}/healthz ${APP_BASE}/public.php?op=healthcheck;
+ # Regular PHP handling (without PATH_INFO)
location ~ \.php$ {
# regex to split $uri to $fastcgi_script_name and $fastcgi_path
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
@@ -41,6 +42,22 @@ http {
# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;
+ fastcgi_index index.php;
+ include fastcgi.conf;
+
+ set $backend "${APP_UPSTREAM}:9000";
+
+ fastcgi_pass $backend;
+ }
+
+ # Allow PATH_INFO for PHP files in plugins.local directories with an /api/ sub directory to allow plugins to leverage when desired
+ location ~ /plugins\.local/.*/api/.*\.php(/|$) {
+ # regex to split $uri to $fastcgi_script_name and $fastcgi_path
+ fastcgi_split_path_info ^(.+?\.php)(/.*)$;
+
+ # Check that the PHP script exists before passing it
+ try_files $fastcgi_script_name =404;
+
# Bypass the fact that try_files resets $fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
@@ -53,10 +70,9 @@ http {
fastcgi_pass $backend;
}
-
+
location / {
try_files $uri $uri/ =404;
}
-
}
}
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4a149f6d2..cc235f6cc 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -79,17 +79,28 @@ ttrss-web-nginx:push-branch:
needs:
- job: ttrss-web-nginx:build
-phpdoc:
+phpdoc:build:
image: ${PHP_IMAGE}
stage: publish
rules:
- - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $PHPDOC_DEPLOY_SSH_KEY != null
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
script:
- php83 /phpDocumentor.phar -d classes -d include -t phpdoc --visibility=public
- - mkdir -p ~/.ssh &&
- cp ${PHPDOC_DEPLOY_SSH_KEY} ~/.ssh/id_ed25519 &&
- chmod 0600 ~/.ssh/id_ed25519
- - rsync -av -e 'ssh -o StrictHostKeyChecking=no' phpdoc/ ${PHPDOC_DEPLOY_HOST}:phpdoc/
+ artifacts:
+ paths:
+ - phpdoc
+
+phpdoc:publish:
+ extends: .build-docker-kaniko
+ stage: publish
+ needs:
+ - job: phpdoc:build
+ rules:
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $REGISTRY_USER != null && $REGISTRY_PASSWORD != null
+ variables:
+ DOCKERFILE: ${CI_PROJECT_DIR}/.docker/phpdoc/Dockerfile
+ NAME: ttrss-phpdoc
+ VERSION: latest
phpunit-integration:
image: ${PHP_IMAGE}
diff --git a/classes/API.php b/classes/API.php
index 45820f300..6dbb1f246 100644
--- a/classes/API.php
+++ b/classes/API.php
@@ -817,7 +817,7 @@ class API extends Handler {
$headline_row["labels"] = $labels;
- $headline_row["feed_title"] = isset($line["feed_title"]) ? $line["feed_title"] : $feed_title;
+ $headline_row["feed_title"] = $line["feed_title"] ?? $feed_title;
$headline_row["comments_count"] = (int)$line["num_comments"];
$headline_row["comments_link"] = $line["comments"];
diff --git a/classes/Config.php b/classes/Config.php
index d28a259c9..e9d44063c 100644
--- a/classes/Config.php
+++ b/classes/Config.php
@@ -491,12 +491,9 @@ class Config {
$self_url_path = $proto . '://' . $_SERVER["HTTP_HOST"] . parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH);
$self_url_path = preg_replace("/(\/api\/{1,})?(\w+\.php)?(\?.*$)?$/", "", $self_url_path);
+ $self_url_path = preg_replace("/(\/plugins(.local))\/.{1,}$/", "", $self_url_path);
- if (substr($self_url_path, -1) === "/") {
- return substr($self_url_path, 0, -1);
- } else {
- return $self_url_path;
- }
+ return rtrim($self_url_path, "/");
}
}
/* sanity check stuff */
@@ -665,8 +662,8 @@ class Config {
<?php foreach ($errors as $error) { echo self::format_error($error); } ?>
- <p>You might want to check tt-rss <a target="_blank" href="https://tt-rss.org/wiki.php">wiki</a> or the
- <a target="_blank" href="https://community.tt-rss.org/">forums</a> for more information. Please search the forums before creating new topic
+ <p>You might want to check the tt-rss <a target="_blank" href="https://tt-rss.org/wiki/InstallationNotes/">wiki</a> or
+ <a target="_blank" href="https://community.tt-rss.org/">forums</a> for more information. Please search the forums before creating a new topic
for your question.</p>
</div>
</body>
@@ -681,8 +678,8 @@ class Config {
echo " * " . strip_tags($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";
+ echo "\nYou might want to check the tt-rss wiki or forums for more information.\n";
+ echo "Please search the forums before creating a new topic for your question.\n";
exit(1);
}
diff --git a/classes/DiskCache.php b/classes/DiskCache.php
index 196eed02d..d6335a9e7 100644
--- a/classes/DiskCache.php
+++ b/classes/DiskCache.php
@@ -410,7 +410,7 @@ class DiskCache implements Cache_Adapter {
$mimetype = $this->adapter->get_mime_type(basename($filename));
if ($mimetype)
- return isset($this->mimeMap[$mimetype]) ? $this->mimeMap[$mimetype] : "";
+ return $this->mimeMap[$mimetype] ?? "";
else
return "";
}
diff --git a/classes/Feeds.php b/classes/Feeds.php
index 64674b2d2..71379762f 100644
--- a/classes/Feeds.php
+++ b/classes/Feeds.php
@@ -18,12 +18,9 @@ class Feeds extends Handler_Protected {
const FEED_ALL = -4;
/**
- * a special case feed used to display auxiliary information when there's nothing to load (e.g. no stuff in fresh feed)
- *
- * TODO: Remove this and 'Feeds::_generate_dashboard_feed()'? It only seems to be used if 'Feeds::view()' (also potentially removable)
- * gets passed the ID.
+ * -5 was FEED_DASHBOARD, intended to be used when there
+ * was nothing to show, but the related code was unused
*/
- const FEED_DASHBOARD = -5;
/** special feed for recently read articles */
const FEED_RECENTLY_READ = -6;
@@ -492,11 +489,6 @@ class Feeds extends Handler_Protected {
if (is_numeric($feed)) $feed = (int) $feed;
- if ($feed == Feeds::FEED_DASHBOARD) {
- print json_encode($this->_generate_dashboard_feed());
- return;
- }
-
$sth = false;
if ($feed < LABEL_BASE_INDEX) {
@@ -572,50 +564,6 @@ class Feeds extends Handler_Protected {
}
/**
- * @return array<string, array<string, mixed>>
- */
- private function _generate_dashboard_feed(): array {
- $reply = array();
-
- $reply['headlines']['id'] = Feeds::FEED_DASHBOARD;
- $reply['headlines']['is_cat'] = false;
-
- $reply['headlines']['toolbar'] = '';
-
- $reply['headlines']['content'] = "<div class='whiteBox'>".__('No feed selected.');
-
- $reply['headlines']['content'] .= "<p><span class=\"text-muted\">";
-
- $sth = $this->pdo->prepare("SELECT ".SUBSTRING_FOR_DATE."(MAX(last_updated), 1, 19) AS last_updated FROM ttrss_feeds
- WHERE owner_uid = ?");
- $sth->execute([$_SESSION['uid']]);
- $row = $sth->fetch();
-
- $last_updated = TimeHelper::make_local_datetime($row["last_updated"], false);
-
- $reply['headlines']['content'] .= sprintf(__("Feeds last updated at %s"), $last_updated);
-
- $num_errors = ORM::for_table('ttrss_feeds')
- ->where_not_equal('last_error', '')
- ->where('owner_uid', $_SESSION['uid'])
- ->where_gte('update_interval', 0)
- ->count('id');
-
- if ($num_errors > 0) {
- $reply['headlines']['content'] .= "<br/>";
- $reply['headlines']['content'] .= "<a class=\"text-muted\" href=\"#\" onclick=\"CommonDialogs.showFeedsWithErrors(); return false\">".
- __('Some feeds have update errors (click for details)')."</a>";
- }
- $reply['headlines']['content'] .= "</span></p>";
-
- $reply['headlines-info'] = array("count" => 0,
- "unread" => 0,
- "disable_cache" => true);
-
- return $reply;
- }
-
- /**
* @return array<string, mixed>
*/
private function _generate_error_feed(string $error): array {
@@ -1495,23 +1443,23 @@ class Feeds extends Handler_Protected {
// right before adding them to SQL part
$feed = $params["feed"];
- $limit = isset($params["limit"]) ? $params["limit"] : 30;
+ $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;
- $search_language = isset($params["search_language"]) ? $params["search_language"] : "";
- $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;
- $skip_first_id_check = isset($params["skip_first_id_check"]) ? $params["skip_first_id_check"] : false;
- //$order_by = isset($params["order_by"]) ? $params["order_by"] : false;
+ $cat_view = $params["cat_view"] ?? false;
+ $search = $params["search"] ?? false;
+ $search_language = $params["search_language"] ?? "";
+ $override_order = $params["override_order"] ?? false;
+ $offset = $params["offset"] ?? 0;
+ $owner_uid = $params["owner_uid"] ?? $_SESSION["uid"];
+ $since_id = $params["since_id"] ?? 0;
+ $include_children = $params["include_children"] ?? false;
+ $ignore_vfeed_group = $params["ignore_vfeed_group"] ?? false;
+ $override_strategy = $params["override_strategy"] ?? false;
+ $override_vfeed = $params["override_vfeed"] ?? false;
+ $start_ts = $params["start_ts"] ?? false;
+ $check_first_id = $params["check_first_id"] ?? false;
+ $skip_first_id_check = $params["skip_first_id_check"] ?? false;
+ //$order_by = $params["order_by"] ?? false;
$ext_tables_part = "";
$limit_query_part = "";
@@ -2287,7 +2235,7 @@ class Feeds extends Handler_Protected {
* @return array{0: string, 1: array<int, string>} [$search_query_part, $search_words]
*/
private static function _search_to_sql(string $search, string $search_language, int $owner_uid): array {
- $keywords = str_getcsv(preg_replace('/(-?\w+)\:"(\w+)/', '"{$1}:{$2}', trim($search)), ' ');
+ $keywords = str_getcsv(preg_replace('/(-?\w+)\:"(\w+)/', '"{$1}:{$2}', trim($search)), ' ', '"', '');
$query_keywords = array();
$search_words = array();
$search_query_leftover = array();
diff --git a/classes/PluginHost.php b/classes/PluginHost.php
index 2098be4e6..f3febc431 100644
--- a/classes/PluginHost.php
+++ b/classes/PluginHost.php
@@ -586,11 +586,7 @@ class PluginHost {
$method = strtolower($method);
if (isset($this->handlers[$handler])) {
- if (isset($this->handlers[$handler]["*"])) {
- return $this->handlers[$handler]["*"];
- } else {
- return $this->handlers[$handler][$method];
- }
+ return $this->handlers[$handler]["*"] ?? $this->handlers[$handler][$method];
}
return false;
@@ -752,15 +748,8 @@ class PluginHost {
if ($profile_id) {
$idx = get_class($sender);
-
$this->load_data();
-
- if (isset($this->storage[$idx][$profile_id][$name])) {
- return $this->storage[$idx][$profile_id][$name];
- } else {
- return $default_value;
- }
-
+ return $this->storage[$idx][$profile_id][$name] ?? $default_value;
} else {
return $this->get($sender, $name, $default_value);
}
@@ -772,14 +761,8 @@ class PluginHost {
*/
function get(Plugin $sender, string $name, $default_value = false) {
$idx = get_class($sender);
-
$this->load_data();
-
- if (isset($this->storage[$idx][$name])) {
- return $this->storage[$idx][$name];
- } else {
- return $default_value;
- }
+ return $this->storage[$idx][$name] ?? $default_value;
}
/**
diff --git a/classes/Pref_Prefs.php b/classes/Pref_Prefs.php
index 5cbf3c6d1..dd28bd3f2 100644
--- a/classes/Pref_Prefs.php
+++ b/classes/Pref_Prefs.php
@@ -655,7 +655,7 @@ class Pref_Prefs extends Handler_Protected {
<?= \Controls\button_tag(\Controls\icon("palette") . " " . __("Customize"), "",
["onclick" => "Helpers.Prefs.customizeCSS()"]) ?>
<?= \Controls\button_tag(\Controls\icon("open_in_new") . " " . __("More themes..."), "",
- ["class" => "alt-info", "onclick" => "window.open(\"https://tt-rss.org/wiki/Themes\")"]) ?>
+ ["class" => "alt-info", "onclick" => "window.open(\"https://tt-rss.org/Themes/\")"]) ?>
<?php
@@ -898,7 +898,7 @@ class Pref_Prefs extends Handler_Protected {
</div>
<div dojoType="dijit.layout.ContentPane" region="bottom">
- <button dojoType='dijit.form.Button' class="alt-info pull-right" onclick='window.open("https://tt-rss.org/wiki/Plugins")'>
+ <button dojoType='dijit.form.Button' class="alt-info pull-right" onclick='window.open("https://tt-rss.org/Plugins/")'>
<i class='material-icons'>help</i>
<?= __("More info") ?>
</button>
@@ -1481,17 +1481,11 @@ class Pref_Prefs extends Handler_Protected {
}
private function _get_short_desc(string $pref_name): string {
- if (isset($this->pref_help[$pref_name][0])) {
- return $this->pref_help[$pref_name][0];
- }
- return "";
+ return $this->pref_help[$pref_name][0] ?? "";
}
private function _get_help_text(string $pref_name): string {
- if (isset($this->pref_help[$pref_name][1])) {
- return $this->pref_help[$pref_name][1];
- }
- return "";
+ return $this->pref_help[$pref_name][1] ?? "";
}
private function appPasswordList(): void {
diff --git a/classes/Prefs.php b/classes/Prefs.php
index f778f0f84..8d84d5ec2 100644
--- a/classes/Prefs.php
+++ b/classes/Prefs.php
@@ -303,11 +303,7 @@ class Prefs {
*/
private function _get_cache(string $pref_name, int $owner_uid, ?int $profile_id) {
$cache_key = sprintf("%d/%d/%s", $owner_uid, $profile_id, $pref_name);
-
- if (isset($this->cache[$cache_key]))
- return $this->cache[$cache_key];
-
- return null;
+ return $this->cache[$cache_key] ?? null;
}
/**
diff --git a/classes/UrlHelper.php b/classes/UrlHelper.php
index 7c426bedf..ba1f474bc 100644
--- a/classes/UrlHelper.php
+++ b/classes/UrlHelper.php
@@ -276,19 +276,19 @@ class UrlHelper {
}
$url = $options["url"];
- $type = isset($options["type"]) ? $options["type"] : false;
- $login = isset($options["login"]) ? $options["login"] : false;
- $pass = isset($options["pass"]) ? $options["pass"] : false;
- $auth_type = isset($options["auth_type"]) ? $options["auth_type"] : "basic";
- $post_query = isset($options["post_query"]) ? $options["post_query"] : false;
- $timeout = isset($options["timeout"]) ? $options["timeout"] : false;
- $last_modified = isset($options["last_modified"]) ? $options["last_modified"] : "";
- $useragent = isset($options["useragent"]) ? $options["useragent"] : false;
- $followlocation = isset($options["followlocation"]) ? $options["followlocation"] : true;
- $max_size = isset($options["max_size"]) ? $options["max_size"] : Config::get(Config::MAX_DOWNLOAD_FILE_SIZE); // in bytes
- $http_accept = isset($options["http_accept"]) ? $options["http_accept"] : false;
- $http_referrer = isset($options["http_referrer"]) ? $options["http_referrer"] : false;
- $encoding = isset($options["encoding"]) ? $options["encoding"] : false;
+ $type = $options["type"] ?? false;
+ $login = $options["login"] ?? false;
+ $pass = $options["pass"] ?? false;
+ $auth_type = $options["auth_type"] ?? "basic";
+ $post_query = $options["post_query"] ?? false;
+ $timeout = $options["timeout"] ?? false;
+ $last_modified = $options["last_modified"] ?? "";
+ $useragent = $options["useragent"] ?? false;
+ $followlocation = $options["followlocation"] ?? true;
+ $max_size = $options["max_size"] ?? Config::get(Config::MAX_DOWNLOAD_FILE_SIZE); // in bytes
+ $http_accept = $options["http_accept"] ?? false;
+ $http_referrer = $options["http_referrer"] ?? false;
+ $encoding = $options["encoding"] ?? false;
$url = ltrim($url, ' ');
$url = str_replace(' ', '%20', $url);
diff --git a/classes/UserHelper.php b/classes/UserHelper.php
index 92c397764..0c2ed349b 100644
--- a/classes/UserHelper.php
+++ b/classes/UserHelper.php
@@ -62,6 +62,7 @@ class UserHelper {
if (!Config::get(Config::SINGLE_USER_MODE)) {
$user_id = false;
$auth_module = false;
+ $login = mb_strtolower($login);
PluginHost::getInstance()->chain_hooks_callback(PluginHost::HOOK_AUTH_USER,
function ($result, $plugin) use (&$user_id, &$auth_module) {
@@ -222,7 +223,7 @@ class UserHelper {
static function find_user_by_login(string $login): ?int {
$user = ORM::for_table('ttrss_users')
- ->where('login', $login)
+ ->where_raw('LOWER(login) = LOWER(?)', [$login])
->find_one();
if ($user)
diff --git a/docker-compose.yml b/docker-compose.yml
index f3ba2280a..ea11ca1bb 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -34,6 +34,9 @@ services:
updater:
image: cthulhoo/ttrss-fpm-pgsql-static:latest
+ build:
+ dockerfile: .docker/app/Dockerfile
+ context: .
restart: unless-stopped
env_file:
- .env
diff --git a/include/colors.php b/include/colors.php
index 64e24f8f1..35b84b9de 100644
--- a/include/colors.php
+++ b/include/colors.php
@@ -156,10 +156,7 @@ function _resolve_htmlcolor(string $color): string {
$color = strtolower($color);
- if (isset($htmlcolors[$color]))
- return $htmlcolors[$color];
- else
- return $color;
+ return $htmlcolors[$color] ?? $color;
}
/**
diff --git a/include/functions.php b/include/functions.php
index 2d3dd6d1e..c32924743 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -352,7 +352,7 @@
}
/** Convert values accepted by tt-rss as true/false to PHP booleans
- * @see https://tt-rss.org/wiki/ApiReference#boolean-values
+ * @see https://tt-rss.org/ApiReference/#boolean-values
* @param null|string $s null values are considered false
* @return bool
*/
diff --git a/index.php b/index.php
index 811422d20..a2a6d2373 100644
--- a/index.php
+++ b/index.php
@@ -1,14 +1,5 @@
<?php
-
- // we need a separate check here because functions.php might get parsed
- // incorrectly before 5.3 because of :: syntax.
- if (version_compare(PHP_VERSION, '7.4.0', '<')) {
- print "<b>Fatal Error</b>: PHP version 7.4.0 or newer required. You're using " . PHP_VERSION . ".\n";
- exit;
- }
-
- set_include_path(__DIR__ ."/include" . PATH_SEPARATOR .
- get_include_path());
+ set_include_path(__DIR__ . "/include" . PATH_SEPARATOR . get_include_path());
require_once "autoload.php";
require_once "sessions.php";
diff --git a/js/Feeds.js b/js/Feeds.js
index 2cc5586b3..cecce04e2 100644
--- a/js/Feeds.js
+++ b/js/Feeds.js
@@ -8,7 +8,6 @@ const Feeds = {
FEED_PUBLISHED: -2,
FEED_FRESH: -3,
FEED_ALL: -4,
- FEED_DASHBOARD: -5,
FEED_RECENTLY_READ: -6,
FEED_ERROR: -7,
CATEGORY_UNCATEGORIZED: 0,
diff --git a/js/Headlines.js b/js/Headlines.js
index 603a502c6..74b8ca00d 100755
--- a/js/Headlines.js
+++ b/js/Headlines.js
@@ -644,12 +644,10 @@ const Headlines = {
<i class='icon-syndicate material-icons'>rss_feed</i>
</a>
${tb.site_url ?
- `<a class="feed_title" target="_blank" href="${App.escapeHtml(tb.site_url)}" title="${tb.last_updated}">${tb.title}</a>` :
- `<span class="feed_title">${tb.title}</span>`}
- ${search_query ?
- `
- <span class='cancel_search'>(<a href='#' onclick='Feeds.cancelSearch()'>${__("Cancel search")}</a>)</span>
- ` : ''}
+ `<a class="feed_title" target="_blank" href="${App.escapeHtml(tb.site_url)}" title="${tb.last_updated}">${tb.title}</a>` :
+ `${search_query ? `<a href="#" onclick="Feeds.search(); return false" class="feed_title" title="${App.escapeHtml(search_query)}">${tb.title}</a>
+ <span class="cancel_search">(<a href="#" onclick="Feeds.cancelSearch(); return false">${__("Cancel search")}</a>)</span>` :
+ `<span class="feed_title">${tb.title}</span>`}`}
${tb.error ? `<i title="${App.escapeHtml(tb.error)}" class='material-icons icon-error'>error</i>` : ''}
<span id='feed_current_unread' style='display: none'></span>
</span>
diff --git a/locale/de_DE/LC_MESSAGES/messages.mo b/locale/de_DE/LC_MESSAGES/messages.mo
index 91c22ef88..41fdf6b9e 100644
--- a/locale/de_DE/LC_MESSAGES/messages.mo
+++ b/locale/de_DE/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/locale/de_DE/LC_MESSAGES/messages.po b/locale/de_DE/LC_MESSAGES/messages.po
index ca4be51c2..129ed8ee3 100644
--- a/locale/de_DE/LC_MESSAGES/messages.po
+++ b/locale/de_DE/LC_MESSAGES/messages.po
@@ -12,8 +12,8 @@ msgstr ""
"Project-Id-Version: tt-rss git\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-06-15 14:03+0300\n"
-"PO-Revision-Date: 2024-06-21 18:09+0000\n"
-"Last-Translator: Patrick Ahles <[email protected]>\n"
+"PO-Revision-Date: 2024-08-08 22:09+0000\n"
+"Last-Translator: tarte <[email protected]>\n"
"Language-Team: German <https://hosted.weblate.org/projects/tt-rss/webui/de/>"
"\n"
"Language: de_DE\n"
@@ -21,7 +21,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 5.6-rc\n"
+"X-Generator: Weblate 5.7-dev\n"
"X-Poedit-Bookmarks: -1,557,558,-1,-1,-1,-1,-1,-1,-1\n"
#: backend.php:65
@@ -1244,7 +1244,7 @@ msgstr[1] "%s (%d Regeln)"
#: classes/Pref_Filters.php:762
msgid "matches any rule"
-msgstr "erfüllt jeder Regel"
+msgstr "erfüllt beliebige Regel"
#: classes/Pref_Filters.php:763
msgid "inverse"
diff --git a/locale/el_GR/LC_MESSAGES/messages.mo b/locale/el_GR/LC_MESSAGES/messages.mo
index a903eb145..d26bdd8bd 100644
--- a/locale/el_GR/LC_MESSAGES/messages.mo
+++ b/locale/el_GR/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/locale/el_GR/LC_MESSAGES/messages.po b/locale/el_GR/LC_MESSAGES/messages.po
index f9c0e61fb..1011157a9 100644
--- a/locale/el_GR/LC_MESSAGES/messages.po
+++ b/locale/el_GR/LC_MESSAGES/messages.po
@@ -3,14 +3,15 @@ msgstr ""
"Project-Id-Version: tt-rss git\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-06-15 14:03+0300\n"
-"Last-Translator: Brendan <[email protected]>\n"
-"Language-Team: OpenSRS [email protected]>\n"
+"PO-Revision-Date: 2024-09-13 20:08+0000\n"
+"Last-Translator: Nikolas <[email protected]>\n"
+"Language-Team: Greek <https://hosted.weblate.org/projects/tt-rss/webui/el/>\n"
"Language: el_GR\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: unknown\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 5.8-dev\n"
#: backend.php:65
msgid "Use default"
@@ -49,12 +50,10 @@ msgid "Disable updates"
msgstr "Απενεργοποίηση ενημερώσεων"
#: backend.php:76 backend.php:86
-#, fuzzy
msgid "15 minutes"
msgstr "Κάθε 15 λεπτά"
#: backend.php:77 backend.php:87
-#, fuzzy
msgid "30 minutes"
msgstr "Κάθε 30 λεπτά"
@@ -63,12 +62,10 @@ msgid "Hourly"
msgstr "Ωριαία"
#: backend.php:79 backend.php:89
-#, fuzzy
msgid "4 hours"
msgstr "Κάθε 4 ώρες"
#: backend.php:80 backend.php:90
-#, fuzzy
msgid "12 hours"
msgstr "Κάθε 12 ώρες"
@@ -81,14 +78,12 @@ msgid "Weekly"
msgstr "Εβδομαδιαία"
#: backend.php:95 classes/Pref_Feeds.php:551 classes/Pref_Feeds.php:604
-#, fuzzy
msgid "Disabled"
-msgstr "Απενεργοποίηση του OTP"
+msgstr "Απενεργοποιημένο"
#: backend.php:96
-#, fuzzy
msgid "Read Only"
-msgstr "Έλεγχος διαθεσιμότητας"
+msgstr "Μόνο Ανάγνωση"
#: backend.php:97 classes/Pref_System.php:123
msgid "User"
@@ -123,11 +118,11 @@ msgstr "Πρόβλημα επικοινωνίας με τον εξυπηρετη
#: index.php:175 prefs.php:136
msgid "Recent entries found in event log."
-msgstr ""
+msgstr "Πρόσφατες εγγραφές στον καταγραφέα γεγονότων."
#: index.php:178
msgid "Updates are available from Git."
-msgstr ""
+msgstr "Οι ενημερώσεις είναι διαθέσιμες από το Git."
#: index.php:188 js/Headlines.js:664
msgid "Show articles"
@@ -207,9 +202,8 @@ msgid "Search..."
msgstr "Αναζήτηση..."
#: index.php:265
-#, fuzzy
msgid "Search feeds..."
-msgstr "Αναζήτηση..."
+msgstr "Αναζήτηση στις ροές..."
#: index.php:266
msgid "Feed actions:"
@@ -239,7 +233,7 @@ msgstr "Επανεμφάνιση/Απόκρυψη ροών ανάγνωσης"
#: index.php:273
msgid "UI layout:"
-msgstr ""
+msgstr "Διάταξη εμφάνισης:"
#: index.php:274 classes/RPC.php:664
msgid "Toggle combined mode"
@@ -250,9 +244,8 @@ msgid "Toggle widescreen mode"
msgstr "Εναλλαγή λειτουργίας ευρείας οθόνης"
#: index.php:278
-#, fuzzy
msgid "Toggle expand all articles"
-msgstr "Κάντε κλικ για επέκταση άρθρου"
+msgstr "Κάντε κλικ για επέκταση όλων των άρθρων"
#: index.php:279
msgid "Other actions:"
@@ -272,7 +265,7 @@ msgstr "Προτιμήσεις"
#: prefs.php:138
msgid "Exit preferences"
-msgstr "Προτιμήσεις εξόδου"
+msgstr "Έξοδος από προτιμήσεις"
#: prefs.php:148 classes/Pref_Prefs.php:46 classes/Pref_Feeds.php:123
#: classes/Pref_Feeds.php:926
@@ -296,9 +289,9 @@ msgid "System"
msgstr "Σύστημα"
#: classes/Pref_Labels.php:167
-#, fuzzy, php-format
+#, php-format
msgid "Created label <b>%s</b>"
-msgstr "Δημιουργία ετικέτας"
+msgstr "Η ετικέτα <b>%s</b> δημιουργήθηκε"
#: classes/Pref_Labels.php:179 classes/Pref_Prefs.php:853
#: classes/Pref_Prefs.php:1501 classes/Pref_Feeds.php:916
@@ -313,9 +306,8 @@ msgid "General"
msgstr "Γενικά"
#: classes/Pref_Prefs.php:59
-#, fuzzy
msgid "Articles"
-msgstr "Άρθρο"
+msgstr "Άρθρα"
#: classes/Pref_Prefs.php:73
msgid "Digest"
@@ -327,119 +319,105 @@ msgstr "Για προχωρημένους"
#: classes/Pref_Prefs.php:90
msgid "Debugging"
-msgstr ""
+msgstr "Εκσφαλμάτωση"
#: classes/Pref_Prefs.php:96
msgid "Never apply these tags automatically (comma-separated list)."
msgstr ""
+"Να μην εφαρμόζονται ποτέ αυτές οι ετικέτες (λίστα διαχωρισμένη με κόμματα)."
#: classes/Pref_Prefs.php:100
msgid "Blacklisted tags"
msgstr "Ετικέτες στη μαύρη λίστα"
#: classes/Pref_Prefs.php:101
-#, fuzzy
msgid "Default language"
-msgstr "Προκαθορισμένο προφίλ"
+msgstr "Προκαθορισμένη γλώσσα"
#: classes/Pref_Prefs.php:101
msgid "Used for full-text search"
-msgstr ""
+msgstr "Χρησιμοποιείται για αναζήτηση πλήρους κειμένου"
#: classes/Pref_Prefs.php:102
-#, fuzzy
msgid "Mark read on scroll"
-msgstr "Σήμανση παραπάνω ως αναγνωσμένα"
+msgstr "Σήμανση ως αναγνωσμένα με το σκρολάρισμα"
#: classes/Pref_Prefs.php:102
-#, fuzzy
msgid "Mark articles as read as you scroll past them"
-msgstr "Σήμανση παραπάνω ως αναγνωσμένα"
+msgstr "Σήμανση ως αναγνωσμένα αφού σκρολάρεις"
#: classes/Pref_Prefs.php:103
-#, fuzzy
msgid "Always expand articles"
-msgstr "Κάντε κλικ για επέκταση άρθρου"
+msgstr "Ανάπτυξη άρθρων πάντα"
#: classes/Pref_Prefs.php:104
-#, fuzzy
msgid "Combined mode"
-msgstr "Εναλλαγή συνδυασμένης λειτουργίας"
+msgstr "Συνδυασμένη λειτουργία"
#: classes/Pref_Prefs.php:104
msgid "Show flat list of articles instead of separate panels"
-msgstr ""
+msgstr "Εμφάνιση λίστας άρθρων αντί ξεχωριστών πινάκων"
#: classes/Pref_Prefs.php:105
-#, fuzzy
msgid "Confirm marking feeds as read"
-msgstr "σήμανση ροής ως αναγνωσμένη"
+msgstr "Επιβεβαίωση σήμανσης ροής ως αναγνωσμένη"
#: classes/Pref_Prefs.php:106
-#, fuzzy
msgid "Default update interval"
-msgstr "Προκαθορισμένο διάστημα ενημέρωσης ροής"
+msgstr "Προκαθορισμένο διάστημα ενημέρωσης"
#: classes/Pref_Prefs.php:107
-#, fuzzy
msgid "Mark sent articles as read"
-msgstr "Σήμανση παραπάνω ως αναγνωσμένα"
+msgstr "Σήμανση αποσταλθέντων άρθρων ως αναγνωσμένα"
#: classes/Pref_Prefs.php:108
-#, fuzzy
msgid "Enable digest"
-msgstr "Ενεργοποίηση σύνοψης e-mail"
+msgstr "Ενεργοποίηση σύνοψης"
#: classes/Pref_Prefs.php:108
msgid "Send daily digest of new (and unread) headlines to your e-mail address"
msgstr ""
+"Αποστολή ημερήσιας αναφοράς νέων (και μη αναγνωσμένων) τίτλων στο ημέιλ σου"
#: classes/Pref_Prefs.php:109
msgid "Try to send around this time"
-msgstr ""
+msgstr "Δοκιμή αποστολής γύρω στις"
#: classes/Pref_Prefs.php:109
-#, fuzzy
msgid "Time in UTC"
-msgstr "Ζώνη ώρας"
+msgstr "Ώρα σε UTC"
#: classes/Pref_Prefs.php:110
-#, fuzzy
msgid "Enable API"
-msgstr "Ενεργοποίηση του OTP"
+msgstr "Ενεργοποίηση του API"
#: classes/Pref_Prefs.php:110
msgid "Allows accessing this account through the API"
-msgstr ""
+msgstr "Να επιτρέπεται η πρόσβαση σε αυτόν τον λογαριασμό μέσω του API"
#: classes/Pref_Prefs.php:111
-#, fuzzy
msgid "Enable categories"
-msgstr "Ενεργοποίηση κατηγοριών ροών"
+msgstr "Ενεργοποίηση κατηγοριών"
#: classes/Pref_Prefs.php:112
-#, fuzzy
msgid "Maximum age of fresh articles"
-msgstr "Καινούργια άρθρα"
+msgstr "Μέγιστη ηλικία φρέσκων άρθρων"
#: classes/Pref_Prefs.php:112
-#, fuzzy
msgid "hours"
-msgstr "Κάθε 4 ώρες"
+msgstr "ώρες"
#: classes/Pref_Prefs.php:113
-#, fuzzy
msgid "Hide read feeds"
-msgstr "Επανεμφάνιση/Απόκρυψη ροών ανάγνωσης"
+msgstr "Απόκρυψη αναγνωσμένων ροών"
#: classes/Pref_Prefs.php:114
msgid "Always show special feeds"
-msgstr ""
+msgstr "Εμφάνιση πάντα ειδικών ροών"
#: classes/Pref_Prefs.php:114
-#, fuzzy
msgid "While hiding read feeds"
-msgstr "Επανεμφάνιση/Απόκρυψη ροών ανάγνωσης"
+msgstr "Ενώ αποκρύπτονται οι αναγνωσμένες ροές"
#: classes/Pref_Prefs.php:115
msgid "Long date format"
@@ -450,25 +428,24 @@ msgid ""
"Syntax is identical to PHP <a href='http://php.net/manual/function.date."
"php'>date()</a> function."
msgstr ""
+"Το συντακτικό είναι πανομοιότυπο με τη συνάρτηση <a href='http://php.net/"
+"manual/function.date.php'>date()</a> της PHP."
#: classes/Pref_Prefs.php:116
-#, fuzzy
msgid "Automatically show next feed"
-msgstr "Άνοιγμα επόμενης ροής"
+msgstr "Αυτόματο άνοιγμα επόμενης ροής"
#: classes/Pref_Prefs.php:116
-#, fuzzy
msgid "After marking one as read"
-msgstr "σήμανση ροής ως αναγνωσμένη"
+msgstr "Αφότου σημανθεί μία ως αναγνωσμένη"
#: classes/Pref_Prefs.php:117
-#, fuzzy
msgid "Purge articles older than"
-msgstr "Εκκαθάριση μη αναγνωσμένων άρθρων"
+msgstr "Εκκαθάριση άρθρων παλαιότερων από"
#: classes/Pref_Prefs.php:117
msgid "<strong>days</strong> (0 disables)"
-msgstr ""
+msgstr "<strong>ημέρες</strong> (το 0 απενεργοποιεί)"
#: classes/Pref_Prefs.php:118
msgid "Purge unread articles"
@@ -480,17 +457,16 @@ msgstr "Σύντομη μορφή ημερομηνίας"
#: classes/Pref_Prefs.php:120
msgid "Show content preview in headlines"
-msgstr ""
+msgstr "Εμφάνιση προεπισκόπησης περιεχομένου στους τίτλους"
#: classes/Pref_Prefs.php:121
msgid "SSL client certificate"
-msgstr ""
+msgstr "Πιστοποιητικό προγράμματος-πελάτη SSL"
#: classes/Pref_Prefs.php:122 classes/Pref_Feeds.php:609
#: js/CommonDialogs.js:508
-#, fuzzy
msgid "Do not embed media"
-msgstr "Μην ενσωματώνετε εικόνες"
+msgstr "Μη ενσωμάτωση πολυμέσων"
#: classes/Pref_Prefs.php:123
msgid "Time zone"
@@ -498,11 +474,11 @@ msgstr "Ζώνη ώρας"
#: classes/Pref_Prefs.php:124
msgid "Group by feed"
-msgstr ""
+msgstr "Ομαδοποίηση ανά ροή"
#: classes/Pref_Prefs.php:124
msgid "Group multiple-feed output by originating feed"
-msgstr ""
+msgstr "Ομαδοποίηση πολλαπλών ροών βάσει της πρωταρχικής ροής"
#: classes/Pref_Prefs.php:125
msgid "Language"
@@ -514,50 +490,43 @@ msgstr "Θέμα"
#: classes/Pref_Prefs.php:127
msgid "Don't enforce DISTINCT headlines"
-msgstr ""
+msgstr "Μην επιβάλλετε πρωτοσέλιδα DISTINCT"
#: classes/Pref_Prefs.php:127
-#, fuzzy
msgid "May produce duplicate entries"
-msgstr "Να επιτρέπονται τα διπλότυπα άρθρα"
+msgstr "Ενδέχεται να παραχθούν διπλότυπα άρθρα"
#: classes/Pref_Prefs.php:128
-#, fuzzy
msgid "Show article and feed IDs"
-msgstr "Εμφάνιση άρθρων"
+msgstr "Εμφάνιση αναγνωριστικών κωδικών άρθρων και ροών"
#: classes/Pref_Prefs.php:128
msgid "In the headlines buffer"
-msgstr ""
+msgstr "Στην ενδιάμεση μνήμη των πρωτοσέλιδων"
#: classes/Pref_Prefs.php:129
-#, fuzzy
-#| msgid "Disable updates"
msgid "Disable conditional counter updates"
-msgstr "Απενεργοποίηση ενημερώσεων"
+msgstr "Απενεργοποίηση ενημερώσεων υπό όρους"
#: classes/Pref_Prefs.php:129
msgid "May increase server load"
-msgstr ""
+msgstr "Ενδέχεται να αυξήσει το βάρος στον εξυπηρετητή"
#: classes/Pref_Prefs.php:130
-#, fuzzy
msgid "Grid view"
-msgstr "Καινούργια άρθρα"
+msgstr "Εμφάνιση σε πλέγμα"
#: classes/Pref_Prefs.php:130
msgid "On wider screens, if always expanded"
-msgstr ""
+msgstr "Σε ευρύτερες οθόνες, εάν είναι πάντα ανεπτυγμένο"
#: classes/Pref_Prefs.php:131
-#, fuzzy
-#| msgid "Set score"
msgid "Required score"
-msgstr "Ορισμός βαθμολογίας"
+msgstr "Απαιτούμενη βαθμολογία"
#: classes/Pref_Prefs.php:131
msgid "Include articles with this or above score"
-msgstr ""
+msgstr "Ένταξη άρθρων με αυτό ή μεγαλύτερο σκορ"
#: classes/Pref_Prefs.php:233
msgid "The configuration was saved."
@@ -565,17 +534,15 @@ msgstr "Η διαμόρφωση αποθηκεύτηκε."
#: classes/Pref_Prefs.php:275
msgid "Your personal data has been saved."
-msgstr ""
+msgstr "Τα προσωπικά σας δεδομένα αποθηκεύτηκαν."
#: classes/Pref_Prefs.php:305
-#, fuzzy
msgid "Full name:"
-msgstr "Πλήρες όνομα"
+msgstr "Πλήρες όνομα:"
#: classes/Pref_Prefs.php:310 js/PrefUsers.js:98
-#, fuzzy
msgid "E-mail:"
-msgstr "E-mail"
+msgstr "E-mail:"
#: classes/Pref_Prefs.php:318 classes/Pref_Feeds.php:691
#: plugins/nsfw/init.php:105 plugins/note/init.php:49
@@ -586,19 +553,16 @@ msgid "Save"
msgstr "Αποθήκευση"
#: classes/Pref_Prefs.php:367
-#, fuzzy
msgid "Old password:"
-msgstr "Παλιός Κωδικός Πρόσβασης"
+msgstr "Παλιός Κωδικός Πρόσβασης:"
#: classes/Pref_Prefs.php:372 js/PrefUsers.js:84
-#, fuzzy
msgid "New password:"
-msgstr "Νέος Κωδικός Πρόσβασης"
+msgstr "Νέος Κωδικός Πρόσβασης:"
#: classes/Pref_Prefs.php:377
-#, fuzzy
msgid "Confirm password:"
-msgstr "Επιβεβαίωση κωδικού πρόσβασης"
+msgstr "Επιβεβαίωση κωδικού πρόσβασης:"
#: classes/Pref_Prefs.php:385 js/PrefUsers.js:86
msgid "Change password"
@@ -610,20 +574,20 @@ msgid ""
"Authentication module used for this session (<b>%s</b>) does not provide an "
"ability to set passwords."
msgstr ""
+"Ο τρόπος αυθεντικοποίησης για αυτήν τη σύνδεση (<b>%s</b>) δεν παρέχει τη "
+"δυνατότητα ορισμού κωδικών."
#: classes/Pref_Prefs.php:409
-#, fuzzy
msgid "Generate password"
-msgstr "Παραγωγή νέου URL"
+msgstr "Παραγωγή νέου κωδικού"
#: classes/Pref_Prefs.php:415 classes/Pref_Feeds.php:950 js/PrefHelpers.js:227
msgid "Remove selected"
msgstr "Αφαίρεση επιλεγμένων"
#: classes/Pref_Prefs.php:451 classes/Pref_Prefs.php:503
-#, fuzzy
msgid "Your password:"
-msgstr "Επιβεβαίωση κωδικού πρόσβασης"
+msgstr "Ο κωδικός σας:"
#: classes/Pref_Prefs.php:459
msgid "Disable OTP"
@@ -631,11 +595,11 @@ msgstr "Απενεργοποίηση του OTP"
#: classes/Pref_Prefs.php:481
msgid "OTP secret:"
-msgstr ""
+msgstr "Μυστικό OTP:"
#: classes/Pref_Prefs.php:508
msgid "Verification code:"
-msgstr ""
+msgstr "Κωδικός επαλήθευσης:"
#: classes/Pref_Prefs.php:516
msgid "Enable OTP"
@@ -650,37 +614,32 @@ msgid "Password"
msgstr "Κωδικός Πρόσβασης"
#: classes/Pref_Prefs.php:536
-#, fuzzy
msgid "App passwords"
-msgstr "Παλιός Κωδικός Πρόσβασης"
+msgstr "Κωδικοί εφαρμογής"
#: classes/Pref_Prefs.php:543
-#, fuzzy
msgid "Authenticator (OTP)"
-msgstr "Πιστοποίηση"
+msgstr "Πιστοποίηση (OTP)"
#: classes/Pref_Prefs.php:554
msgid "Some preferences are only available in default profile."
-msgstr ""
+msgstr "Μερικές προτιμήσεις είναι διαθέσιμες μόνο στο προκαθορισμένο προφίλ."
#: classes/Pref_Prefs.php:647
-#, fuzzy
msgid "default"
-msgstr "Προκαθορισμένο"
+msgstr "προκαθορισμένο"
#: classes/Pref_Prefs.php:655
msgid "Customize"
msgstr "Διαμόρφωση"
#: classes/Pref_Prefs.php:657
-#, fuzzy
msgid "More themes..."
-msgstr "Περισσότερες ενέργειες..."
+msgstr "Περισσότερα θέματα..."
#: classes/Pref_Prefs.php:688
-#, fuzzy
msgid "Preview"
-msgstr "Καινούργια άρθρα"
+msgstr "Προεπισκόπηση"
#: classes/Pref_Prefs.php:714
msgid "Register"
@@ -692,23 +651,21 @@ msgstr "Απαλοιφή"
#: classes/Pref_Prefs.php:722 classes/Pref_Prefs.php:889
#: plugins/bookmarklets/init.php:367 js/CommonDialogs.js:689
-#, fuzzy
msgid "More info..."
-msgstr "περισσότερες πληροφορίες"
+msgstr "Περισσότερες Πληροφορίες..."
#: classes/Pref_Prefs.php:730
#, php-format
msgid "Current server time: %s"
-msgstr ""
+msgstr "Τρέχουσα ώρα εξυπηρετητή: %s"
#: classes/Pref_Prefs.php:778
msgid "Save configuration"
msgstr "Αποθήκευση διαμόρφωσης"
#: classes/Pref_Prefs.php:781
-#, fuzzy
msgid "Save and exit"
-msgstr "Σήμανση παραπάνω ως αναγνωσμένα"
+msgstr "Αποθήκευση και έξοδος"
#: classes/Pref_Prefs.php:788 js/PrefHelpers.js:127
msgid "Manage profiles"
@@ -747,32 +704,30 @@ msgid ""
"data usage and origin server load resulting in a ban of your instance: "
"<b>%s</b>"
msgstr ""
+"Τα παρακάτω πρόσθετα χρησιμοποιούν αυτοματοποιήσεις περιεχομένου ανά ροή. "
+"Αυτό μπορεί να προκαλέσει υπερβολική χρήση δεδομένων και επιβάρυνση του "
+"διακομιστή προέλευσης με αποτέλεσμα τον αποκλεισμό της εγκατάστασής σας: "
+"<b>%s</b>"
#: classes/Pref_Prefs.php:903 js/CommonFilters.js:235
-#, fuzzy
msgid "More info"
-msgstr "περισσότερες πληροφορίες"
+msgstr "Περισσότερες πληροφορίες"
#: classes/Pref_Prefs.php:906
-#, fuzzy
-#| msgid "Enable selected plugins"
msgid "Enable selected"
-msgstr "Ενεργοποίηση επιλεγμένων προσθέτων"
+msgstr "Ενεργοποίηση επιλεγμένων"
#: classes/Pref_Prefs.php:909
msgid "Reload"
-msgstr ""
+msgstr "Επαναφόρτωση"
#: classes/Pref_Prefs.php:916
-#, fuzzy
-#| msgid "Perform updates"
msgid "Check for updates"
-msgstr "Εκτέλεση ενημερώσεων"
+msgstr "Έλεγχος για ενημερώσεις"
#: classes/Pref_Prefs.php:923
-#, fuzzy
msgid "Install plugin"
-msgstr "Πρόσθετα χρήστη"
+msgstr "Εγκατάσταση προσθέτων"
#: classes/Pref_Prefs.php:936
msgid "Personal data / Authentication"
@@ -794,12 +749,12 @@ msgstr "Λανθασμένος κωδικός πρόσβασης"
#: classes/Pref_Prefs.php:1041
#, php-format
msgid "v%.2f, by %s"
-msgstr ""
+msgstr "έκδοση %.2f, από τον %s"
#: classes/Pref_Prefs.php:1055
#, php-format
msgid "v%s, by %s"
-msgstr ""
+msgstr "έκδοση %s, από %s"
#: classes/Pref_Prefs.php:1462 classes/Handler_Public.php:292
#: include/login_form.php:153
@@ -811,14 +766,12 @@ msgid "Description"
msgstr "Περιγραφή"
#: classes/Pref_Prefs.php:1516
-#, fuzzy
msgid "Created"
-msgstr "Δημιουργία"
+msgstr "Δημιουργήθηκε"
#: classes/Pref_Prefs.php:1517
-#, fuzzy
msgid "Last used"
-msgstr "Τελευταία ενημέρωση:"
+msgstr "Τελευταία χρήση"
#: classes/Pref_Prefs.php:1562
#, php-format
@@ -826,20 +779,24 @@ msgid ""
"Generated password <strong>%s</strong> for %s. Please remember it for future "
"reference."
msgstr ""
+"Δημιουργήθηκε αυτόματα ο κωδικός <strong>%s </strong> για τον %s. "
+"Παρακαλούμε να τον θυμάστε στο μέλλον."
#: classes/Mailer.php:51
#, php-format
msgid "Unknown error while sending mail. Hooks tried: %d."
msgstr ""
+"Άγνωστο λάθος κατά την αποστολή του ημέιλ. Επιχειρήθηκαν οι εξής ενέργειες: "
+"%d."
#: classes/TimeHelper.php:8
#, php-format
msgid "%d min"
-msgstr ""
+msgstr "%d λεπτά"
#: classes/Pref_System.php:24
msgid "Test message from tt-rss"
-msgstr ""
+msgstr "Δοκιμή μηνύματος από το tt-rss"
#: classes/Pref_System.php:81 js/PrefHelpers.js:622
msgid "Refresh"
@@ -847,34 +804,32 @@ msgstr "Ανανέωση"
#: classes/Pref_System.php:86
msgid "&lt;&lt;"
-msgstr ""
+msgstr "&lt;&lt;"
#: classes/Pref_System.php:90
#, php-format
msgid "Page %d of %d"
-msgstr ""
+msgstr "Σελίδα %d από %d"
#: classes/Pref_System.php:95
msgid "&gt;&gt;"
-msgstr ""
+msgstr "&gt;&gt;"
#: classes/Pref_System.php:104
msgid "Severity:"
-msgstr ""
+msgstr "Βαρύτητα:"
#: classes/Pref_System.php:108
-#, fuzzy
msgid "Errors"
-msgstr "Σφάλμα"
+msgstr "Σφάλματα"
#: classes/Pref_System.php:109
msgid "Warnings"
-msgstr ""
+msgstr "Προειδοποιήσεις"
#: classes/Pref_System.php:110
-#, fuzzy
msgid "Everything"
-msgstr "Αποεπιλογή όλων"
+msgstr "Όλα"
#: classes/Pref_System.php:120
msgid "Error"
@@ -893,29 +848,24 @@ msgid "Date"
msgstr "Ημερομηνία"
#: classes/Pref_System.php:168
-#, fuzzy
msgid "Event log"
-msgstr "Απαλοιφή καταγραφής"
+msgstr "Καταγραφέας Γεγονότων"
#: classes/Pref_System.php:174
-#, fuzzy
-#| msgid "Save configuration"
msgid "Mail configuration"
-msgstr "Αποθήκευση διαμόρφωσης"
+msgstr "Διαμόρφωση Μέιλ"
#: classes/Pref_System.php:205
msgid "To:"
msgstr "Προς:"
#: classes/Pref_System.php:207
-#, fuzzy
msgid "Send test email"
-msgstr "Αποστολή e-mail"
+msgstr "Αποστολή δοκιμαστικού e-mail"
#: classes/Pref_System.php:213
-#, fuzzy
msgid "PHP Information"
-msgstr "Πραγματοποίηση Ενέργειας"
+msgstr "Πληροφορίες για PHP"
#: classes/Feeds.php:98 classes/Feeds.php:524
msgid "Feed not found."
@@ -940,15 +890,15 @@ msgstr "Εισήχθη στις %s"
#: classes/Feeds.php:417
msgid "No unread articles found to display."
-msgstr ""
+msgstr "Δεν βρέθηκαν μη αναγνωσμένα άρθρα προς προβολή."
#: classes/Feeds.php:420
msgid "No updated articles found to display."
-msgstr ""
+msgstr "Δεν βρέθηκαν ενημερωμένα άρθρα προς προβολή."
#: classes/Feeds.php:423
msgid "No starred articles found to display."
-msgstr ""
+msgstr "Δεν βρέθηκαν άρθρα με αστέρι προς προβολή."
#: classes/Feeds.php:427
msgid ""
@@ -956,19 +906,22 @@ msgid ""
"from article header context menu (applies to all selected articles) or use a "
"filter."
msgstr ""
+"Δεν βρέθηκε κανένα άρθρο προς προβολή. Μπορείτε να αντιστοιχίσετε άρθρα σε "
+"ετικέτες χειροκίνητα από το μενού του πλαισίου του άρθρου (αφορά σε όλα τα "
+"επιλεγμένα άρθρα) ή να χρησιμοποιήσετε ένα φίλτρο."
#: classes/Feeds.php:429
msgid "No articles found to display."
-msgstr ""
+msgstr "Δεν βρέθηκε κανένα άρθρο προς προβολή."
#: classes/Feeds.php:446 classes/Feeds.php:596
-#, fuzzy, php-format
+#, php-format
msgid "Feeds last updated at %s"
-msgstr "Ενημερώθηκε τελευταία: %s"
+msgstr "Πρόσφατα ενημερωμένες ροές: %s"
#: classes/Feeds.php:457 classes/Feeds.php:607
msgid "Some feeds have update errors (click for details)"
-msgstr ""
+msgstr "Ορισμένες ροές έχουν σφάλματα ενημέρωσης (κάντε κλικ για λεπτομέρειες)"
#: classes/Feeds.php:585
msgid "No feed selected."
@@ -1006,7 +959,7 @@ msgstr "Ειδικό"
#: classes/Feeds.php:1549
#, php-format
msgid "Incorrect search syntax: %s."
-msgstr ""
+msgstr "Λανθασμένη σύνταξη αναζήτησης: %s."
#: classes/Feeds.php:1739
#, php-format
@@ -1016,34 +969,34 @@ msgstr "Αποτελέσματα αναζήτησης: %s"
#: classes/Pref_Feeds.php:72 classes/Pref_Feeds.php:232
#: classes/Pref_Feeds.php:286 classes/Pref_Feeds.php:292
#: classes/Pref_Feeds.php:322
-#, fuzzy, php-format
+#, php-format
msgid "(%d feed)"
msgid_plural "(%d feeds)"
-msgstr[0] "Επεξεργασία ροής"
-msgstr[1] "Επεξεργασία ροής"
+msgstr[0] "(%d ροή)"
+msgstr[1] "(%d ροές)"
#: classes/Pref_Feeds.php:549
-#, fuzzy, php-format
+#, php-format
msgid "(%d day)"
msgid_plural "(%d days)"
-msgstr[0] "Επεξεργασία ροής"
-msgstr[1] "Επεξεργασία ροής"
+msgstr[0] "(%d ημέρα)"
+msgstr[1] "(%d ημέρες)"
#: classes/Pref_Feeds.php:555
#, php-format
msgid "%d day"
msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%d ημέρα"
+msgstr[1] "%d ημέρες"
#: classes/Pref_Feeds.php:586
msgid "Check to enable field"
msgstr "Έλεγχος για ενεργοποίηση πεδίου"
#: classes/Pref_Feeds.php:602
-#, fuzzy, php-format
+#, php-format
msgid "(%d days)"
-msgstr "Επεξεργασία ροής"
+msgstr "(%d μέρες)"
#: classes/Pref_Feeds.php:607 js/CommonDialogs.js:506
msgid "Include in e-mail digest"
@@ -1055,12 +1008,11 @@ msgstr "Να εμφανίζονται πάντα συνημμένα εικόνα
#: classes/Pref_Feeds.php:610 js/CommonDialogs.js:509
msgid "Cache media"
-msgstr ""
+msgstr "Προσωρινή αποθήκευση πολυμέσων"
#: classes/Pref_Feeds.php:611 js/CommonDialogs.js:510
-#, fuzzy
msgid "Mark updated articles as unread"
-msgstr "Σήμανση ροής ως αναγνωσμένη"
+msgstr "Σήμανση ενημερωμένων άρθρων ως μη αναγνωσμένα"
#: classes/Pref_Feeds.php:626 js/PrefFeedTree.js:447 js/CommonDialogs.js:61
#: js/CommonDialogs.js:546
@@ -1068,14 +1020,12 @@ msgid "Place in category:"
msgstr "Τοποθέτηση σε κατηγορία:"
#: classes/Pref_Feeds.php:634 js/Feeds.js:643 js/CommonDialogs.js:562
-#, fuzzy
msgid "Language:"
-msgstr "Γλώσσα"
+msgstr "Γλώσσα:"
#: classes/Pref_Feeds.php:645 js/CommonDialogs.js:572
-#, fuzzy
msgid "Update interval:"
-msgstr "Προκαθορισμένο διάστημα ενημέρωσης ροής"
+msgstr "Διάστημα ενημέρωσης ροής:"
#: classes/Pref_Feeds.php:652 js/CommonDialogs.js:578
msgid "Article purging:"
@@ -1144,12 +1094,10 @@ msgid "Add category"
msgstr "Προσθήκη κατηγορίας"
#: classes/Pref_Feeds.php:985
-#, fuzzy
msgid "Choose file..."
-msgstr "Δημιουργία φίλτρου..."
+msgstr "Επιλογή αρχείου..."
#: classes/Pref_Feeds.php:993
-#, fuzzy
msgid "Import OPML"
msgstr "Εισαγωγή του OPML μου"
@@ -1158,8 +1106,6 @@ msgid "Export OPML"
msgstr "Εξαγωγή OPML"
#: classes/Pref_Feeds.php:1009
-#, fuzzy
-#| msgid "Include settings"
msgid "Include tt-rss settings"
msgstr "Συμπεριλάβετε ρυθμίσεις"
@@ -1172,18 +1118,16 @@ msgid "Clear all generated URLs"
msgstr "Απαλοιφή όλων των παραχθέντων URLs"
#: classes/Pref_Feeds.php:1042
-#, fuzzy
msgid "My feeds"
-msgstr "Περισσότερες ροές"
+msgstr "Οι ροές μου"
#: classes/Pref_Feeds.php:1047
msgid "OPML"
msgstr "OPML"
#: classes/Pref_Feeds.php:1052
-#, fuzzy
msgid "Sharing"
-msgstr "Διαμοιρασμός"
+msgstr "Κοινοποίηση"
#: classes/Pref_Users.php:56 classes/Pref_Users.php:257
msgid "Registered"
@@ -1198,28 +1142,27 @@ msgid "Subscribed feeds"
msgstr "Εγγεγραμμένες ροές"
#: classes/Pref_Users.php:71
-#, fuzzy
msgid "Stored articles"
-msgstr "Άρθρα με αστέρια"
+msgstr "Αποθηκευμένα άρθρα"
#: classes/Pref_Users.php:100 classes/UserHelper.php:269
msgid "User not found"
-msgstr "Ο χρήστης δεν βρέθηκε."
+msgstr "Ο χρήστης δεν βρέθηκε"
#: classes/Pref_Users.php:170
#, php-format
msgid "Added user %s with password %s"
-msgstr ""
+msgstr "Ο χρήστης %s προστέθηκε με κωδικό πρόσβασης %s"
#: classes/Pref_Users.php:173
-#, fuzzy, php-format
+#, php-format
msgid "Could not create user %s"
-msgstr "Δημιουργία χρήστη"
+msgstr "Αδυναμία δημιουργίας χρήστη %s"
#: classes/Pref_Users.php:176
#, php-format
msgid "User %s already exists."
-msgstr ""
+msgstr "Ο χρήστης %s υπάρχει ήδη."
#: classes/Pref_Users.php:233
msgid "Create user"
@@ -1253,7 +1196,7 @@ msgstr "Κάντε κλικ για επεξεργασία"
#: classes/Config.php:402
#, php-format
msgid "Git error [RC=%d]: %s"
-msgstr ""
+msgstr "Σφάλμα στο Git [RC=%d]: %s"
#: classes/Pref_Filters.php:211 classes/Pref_Filters.php:222
#: classes/Pref_Filters.php:442 classes/Pref_Filters.php:876
@@ -1267,7 +1210,7 @@ msgstr "(αναστροφή)"
#: classes/Pref_Filters.php:229 classes/Pref_Filters.php:461
#, php-format
msgid "%s on %s in %s %s"
-msgstr ""
+msgstr "%s στο %s σε %s %s"
#: classes/Pref_Filters.php:687 classes/RPC.php:674
msgid "Create filter"
@@ -1278,42 +1221,39 @@ msgid "Combine"
msgstr "Συνδυασμός"
#: classes/Pref_Filters.php:695
-#, fuzzy
msgid "Toggle rule display"
-msgstr "Συρρίκνωση λίστας ροών"
+msgstr "Εμφάνιση/Απόκρυψη κανόνων"
#: classes/Pref_Filters.php:746
msgid "[No caption]"
msgstr "[Χωρίς λεζάντα]"
#: classes/Pref_Filters.php:748
-#, fuzzy, php-format
+#, php-format
msgid "%s (%d rule)"
msgid_plural "%s (%d rules)"
-msgstr[0] "Προσθήκη κανόνα"
-msgstr[1] "Προσθήκη κανόνα"
+msgstr[0] "%s (%d κανόνας)"
+msgstr[1] "%s (%d κανόνες)"
#: classes/Pref_Filters.php:762
-#, fuzzy
msgid "matches any rule"
-msgstr "Αντιστοίχιση με οποιονδήποτε κανόνα"
+msgstr "αντιστοιχίζεται με οποιονδήποτε κανόνα"
#: classes/Pref_Filters.php:763
-#, fuzzy
msgid "inverse"
-msgstr "(αναστροφή)"
+msgstr "αναστροφή"
#: classes/Pref_Filters.php:766
-#, fuzzy, php-format
+#, php-format
msgid "%s (+%d action)"
msgid_plural "%s (+%d actions)"
-msgstr[0] "Προσθήκη ενέργειας"
-msgstr[1] "Προσθήκη ενέργειας"
+msgstr[0] "%s (+%d ενέργεια)"
+msgstr[1] "%s (+%d ενέργειες)"
#: classes/UserHelper.php:267
-#, fuzzy, php-format
+#, php-format
msgid "Changed password of user %s to %s"
-msgstr "Αλλαγή κωδικού πρόσβασης"
+msgstr "Αλλαγή κωδικού πρόσβασης του χρήστη %s σε %s"
#: classes/OPML.php:31 classes/OPML.php:35
msgid "OPML Utility"
@@ -1350,12 +1290,12 @@ msgstr "Αντιγραφή ετικέτας: %s"
#: classes/OPML.php:373
#, php-format
msgid "Setting preference key %s to %s"
-msgstr ""
+msgstr "Αλλαγή πλήκτρου προτιμήσεων από %s σε %s"
#: classes/OPML.php:409
-#, fuzzy, php-format
+#, php-format
msgid "Adding filter %s..."
-msgstr "Προσθήκη φίλτρου σε εξέλιξη..."
+msgstr "Προσθήκη φίλτρου %s..."
#: classes/OPML.php:568
#, php-format
@@ -1365,20 +1305,20 @@ msgstr "Επεξεργασία κατηγορίας: %s"
#: classes/OPML.php:617
#, php-format
msgid "Upload failed with error code %d"
-msgstr ""
+msgstr "Η μεταφόρτωση απέτυχε με κωδικό σφάλματος %d"
#: classes/OPML.php:629
msgid "Unable to move uploaded file."
-msgstr ""
+msgstr "Αδυναμία μετακίνησης του μεταφορτωμένου αρχείου."
#: classes/OPML.php:633
msgid "Error: please upload OPML file."
-msgstr ""
+msgstr "Σφάλμα: μεταφορτώστε αρχείο τύπου OPML."
#: classes/OPML.php:641
#, php-format
msgid "Error: file is not readable: %s"
-msgstr ""
+msgstr "Σφάλμα: το αρχείο δεν είναι αναγνώσιμο: %s"
#: classes/OPML.php:667
msgid "Error while parsing document."
@@ -1393,39 +1333,34 @@ msgid "Open next feed"
msgstr "Άνοιγμα επόμενης ροής"
#: classes/RPC.php:612
-#, fuzzy
-#| msgid "Open next feed"
msgid "Open next unread feed"
-msgstr "Άνοιγμα επόμενης ροής"
+msgstr "Άνοιγμα επόμενης μη αναγνωσμένης ροής"
#: classes/RPC.php:613
msgid "Open previous feed"
msgstr "Άνοιγμα προηγούμενης ροής"
#: classes/RPC.php:614
-#, fuzzy
-#| msgid "Open previous feed"
msgid "Open previous unread feed"
-msgstr "Άνοιγμα προηγούμενης ροής"
+msgstr "Άνοιγμα προηγούμενης μη αναγνωσμένης ροής"
#: classes/RPC.php:615
-#, fuzzy
msgid "Open next article (in combined mode, scroll down)"
-msgstr "Εναλλαγή συνδυασμένης λειτουργίας"
+msgstr ""
+"Άνοιγμα επόμενου άρθρου (σε συνδυασμένη λειτουργία, κύλιση προς τα κάτω)"
#: classes/RPC.php:616
msgid "Open previous article (in combined mode, scroll up)"
msgstr ""
+"Άνοιγμα προηγούμενου άρθρου (σε συνδυασμένη λειτουργία, κύλιση προς το πάνω)"
#: classes/RPC.php:617
-#, fuzzy
msgid "Scroll headlines by one page down"
-msgstr "Επιλογή άρθρων σε ομάδα"
+msgstr "Κύλιση πρωτοσέλιδων ανά μία σελίδα προς τα κάτω"
#: classes/RPC.php:618
-#, fuzzy
msgid "Scroll headlines by one page up"
-msgstr "Επιλογή άρθρων σε ομάδα"
+msgstr "Κύλιση πρωτοσέλιδων ανά μία σελίδα προς τα πάνω"
#: classes/RPC.php:619
msgid "Open next article"
@@ -1437,21 +1372,19 @@ msgstr "Άνοιγμα προηγούμενου άρθρου"
#: classes/RPC.php:621
msgid "Move to next article (don't expand)"
-msgstr ""
+msgstr "Μετάβαση στο επόμενο άρθρο (χωρίς ανάπτυξη)"
#: classes/RPC.php:622
-#, fuzzy
msgid "Move to previous article (don't expand)"
-msgstr "Άνοιγμα προηγούμενου άρθρου"
+msgstr "Μετάβαση σε προηγούμενο άρθρο (χωρίς ανάπτυξη)"
#: classes/RPC.php:623
msgid "Show search dialog"
msgstr "Εμφάνιση διαλόγου αναζήτησης"
#: classes/RPC.php:624
-#, fuzzy
msgid "Cancel active search"
-msgstr "Ακύρωση αναζήτησης"
+msgstr "Ακύρωση ενεργής αναζήτησης"
#: classes/RPC.php:625
msgid "Article"
@@ -1494,14 +1427,12 @@ msgid "Scroll up"
msgstr "Κύλιση προς τα επάνω"
#: classes/RPC.php:635
-#, fuzzy
msgid "Scroll down page"
-msgstr "Κύλιση προς τα κάτω"
+msgstr "Κύλιση προς τα κάτω στη σελίδα"
#: classes/RPC.php:636
-#, fuzzy
msgid "Scroll up page"
-msgstr "Κύλιση προς τα επάνω"
+msgstr "Κύλιση σελίδας προς τα επάνω"
#: classes/RPC.php:637
msgid "Select article under cursor"
@@ -1516,13 +1447,12 @@ msgid "Close/collapse article"
msgstr "Κλείσιμο/σύμπτηξη άρθρου"
#: classes/RPC.php:640
-#, fuzzy
msgid "Toggle article expansion (combined mode)"
-msgstr "Εναλλαγή συνδυασμένης λειτουργίας"
+msgstr "Εναλλαγή σε ανεπτυγμένα άρθρα (συνδυαστική λειτουργία)"
#: classes/RPC.php:642
msgid "Toggle full article text via Readability"
-msgstr ""
+msgstr "Εναλλαγή σε πλήρες κείμενο μέσω του Readability"
#: classes/RPC.php:643
msgid "Article selection"
@@ -1575,35 +1505,31 @@ msgstr "Αναστροφή κεφαλίδων"
#: classes/RPC.php:657
msgid "Toggle headline grouping"
-msgstr ""
+msgstr "Εναλλαγή σε ομαδοποίηση πρωτοσέλιδων"
#: classes/RPC.php:658
-#, fuzzy
msgid "Toggle grid view"
-msgstr "Εναλλαγή με αστέρια"
+msgstr "Εναλλαγή σε προβολή πλέγματος"
#: classes/RPC.php:659
msgid "Debug feed update"
msgstr "Εκσφαλμάτωση ενημέρωσης ροής"
#: classes/RPC.php:660
-#, fuzzy
msgid "Debug viewfeed()"
-msgstr "Εκσφαλμάτωση ενημέρωσης ροής"
+msgstr "Εκσφαλμάτωση προβολής ροής"
#: classes/RPC.php:661 js/FeedTree.js:164
-#, fuzzy
msgid "Mark all feeds as read"
-msgstr "Σήμανση ροής ως αναγνωσμένη"
+msgstr "Σήμανση όλων των ροών ως αναγνωσμένων"
#: classes/RPC.php:662
msgid "Un/collapse current category"
msgstr "Ανάπτυξη/σύμπτηξη τρέχουσας κατηγορίας"
#: classes/RPC.php:663
-#, fuzzy
msgid "Toggle auto expand in combined mode"
-msgstr "Εναλλαγή συνδυασμένης λειτουργίας"
+msgstr "Εναλλαγή σε αυτόματη ανάπτυξη στη συνδυαστική λειτουργία"
#: classes/RPC.php:665
msgid "Go to"
@@ -1658,15 +1584,16 @@ msgstr "Ανάκτηση κωδικού πρόσβασης"
#: classes/Handler_Public.php:720 classes/Handler_Public.php:743
#: plugins/bookmarklets/init.php:94 plugins/bookmarklets/init.php:139
#: plugins/bookmarklets/init.php:157 plugins/bookmarklets/init.php:162
-#, fuzzy
msgid "Return to Tiny Tiny RSS"
-msgstr "Ενημέρωση του Tiny Tiny RSS"
+msgstr "Επιστροφή σε Tiny Tiny RSS"
#: classes/Handler_Public.php:509
msgid ""
"You will need to provide valid account name and email. Password reset link "
"will be sent to your email address."
msgstr ""
+"Θα πρέπει να παρέχετε έγκυρο όνομα λογαριασμού και ημέιλ. Ο σύνδεσμος για "
+"επαναφορά κωδικού θα αποσταλεί στη διεύθυνση ηλεκτρονικού ταχυδρομείου σας."
#: classes/Handler_Public.php:521
msgid "Email:"
@@ -1675,37 +1602,39 @@ msgstr "Email:"
#: classes/Handler_Public.php:529
#, php-format
msgid "How much is %d + %d:"
-msgstr ""
+msgstr "Πόσο κάνει %d + %d:"
#: classes/Handler_Public.php:546
msgid "Some of the required form parameters are missing or incorrect."
msgstr ""
+"Ορισμένες από τις απαιτούμενες παραμέτρους της φόρμας λείπουν ή είναι "
+"λανθασμένες."
#: classes/Handler_Public.php:550 classes/Handler_Public.php:602
msgid "Go back"
msgstr "Επιστροφή"
#: classes/Handler_Public.php:588
-#, fuzzy
msgid "[tt-rss] Password reset request"
-msgstr "[tt-rss] Ειδοποίηση αλλαγής κωδικού πρόσβασης"
+msgstr "[tt-rss] Αίτηση αλλαγής κωδικού πρόσβασης"
#: classes/Handler_Public.php:598
msgid "Sorry, login and email combination not found."
-msgstr ""
+msgstr "Συγγνώμη, ο συνδυασμός των διαπιστευτηρίων και του ημέιλ δεν βρέθηκε."
#: classes/Handler_Public.php:618
msgid "Your access level is insufficient to run this script."
msgstr ""
+"Το επίπεδο πρόσβασής σας είναι ανεπαρκές για να εκτελέσετε αυτήν την εντολή."
#: classes/Handler_Public.php:680
msgid "Database Updater"
msgstr "Πρόγραμμα Ενημέρωσης Βάσης Δεδομένων"
#: classes/Handler_Public.php:693
-#, fuzzy, php-format
+#, php-format
msgid "Performing updates to version %d"
-msgstr "Εκτέλεση ενημερώσεων"
+msgstr "Εκτέλεση ενημερώσεων στην έκδοση %d"
#: classes/Handler_Public.php:708 classes/Handler_Public.php:735
#: js/PrefHelpers.js:418 js/PrefHelpers.js:764
@@ -1716,10 +1645,11 @@ msgstr "Ενημέρωση"
#, php-format
msgid "Database schema needs update to the latest version (%d to %d)."
msgstr ""
+"Η βάση δεδομένων χρειάζεται ενημέρωση στην τελευταία έκδοση (από %d σε %d)."
#: plugins/nsfw/init.php:46
msgid "Not safe for work (click to toggle)"
-msgstr ""
+msgstr "Μη ασφαλές για εργασία (κάντε κλικ για εναλλαγή)"
#: plugins/nsfw/init.php:80
msgid "NSFW Plugin"
@@ -1728,6 +1658,8 @@ msgstr "Πρόσθετο NSFW"
#: plugins/nsfw/init.php:95
msgid "Tags to consider NSFW (comma-separated):"
msgstr ""
+"Ετικέτες που θα θεωρούνται ως μη ασφαλείς για εργασία (διαχωρισμένες με "
+"κόμματα):"
#: plugins/nsfw/init.php:117
msgid "Configuration saved."
@@ -1738,14 +1670,12 @@ msgid "Edit article note"
msgstr "Επεξεργασία σημείωσης άρθρου"
#: plugins/toggle_sidebar/init.php:23
-#, fuzzy
msgid "Toggle sidebar"
-msgstr "Εναλλαγή με αστέρια"
+msgstr "Εναλλαγή πλευρικής μπάρας"
#: plugins/share/init.php:43
-#, fuzzy
msgid "Article unshared"
-msgstr "Άρθρο"
+msgstr "Μη διαμοιρασμένο άρθρο"
#: plugins/share/init.php:58
msgid "Unshare all articles"
@@ -1757,11 +1687,11 @@ msgstr "Έγινε απαλοιφή των κοινόχρηστων URL."
#: plugins/share/init.php:93
msgid "Share by URL"
-msgstr "Διαμοιρασμός κατά URL"
+msgstr "Κοινοποίηση βάσει URL"
#: plugins/share/init.php:265
msgid "You can share this article by the following unique URL:"
-msgstr ""
+msgstr "Μπορείτε να μοιραστείτε αυτό το άρθρο με το παρακάτω μοναδικό URL:"
#: plugins/share/init.php:277
msgid "Article not found."
@@ -1778,21 +1708,19 @@ msgstr "Παραγωγή νέου URL"
#: plugins/af_psql_trgm/init.php:34
#, php-format
msgid "Data saved (%s, %d)"
-msgstr ""
+msgstr "Τα δεδομένα αποθηκέυτηκαν (%s,%d)"
#: plugins/af_psql_trgm/init.php:144
-#, fuzzy
msgid "Show related articles"
-msgstr "Κοινόχρηστα άρθρα"
+msgstr "Εμφάνιση συναφών άρθρων"
#: plugins/af_psql_trgm/init.php:157
-#, fuzzy
msgid "Mark similar articles as read (af_psql_trgm)"
-msgstr "Σήμανση παραπάνω ως αναγνωσμένα"
+msgstr "Σήμανση παρόμοιων άρθρων ως αναγνωσμένα (af_psql_trgm)"
#: plugins/af_psql_trgm/init.php:185
msgid "Minimum similarity:"
-msgstr ""
+msgstr "Ελάχιστη ομοιότητα:"
#: plugins/af_psql_trgm/init.php:194
msgid ""
@@ -1800,34 +1728,38 @@ msgid ""
"number (0-1). Setting it too low might produce false positives, zero "
"disables checking."
msgstr ""
+"Η επέκταση PostgreSQL trigram επιστρέφει την ομοιότητα αλφαριθμητικών ως "
+"έναν δεκαδικό αριθμό (0-1). Το να της δώσετε μια πολύ χαμηλή τιμή μπορεί να "
+"παράξει αρκετά ψευδή θετικά αποτελέσματα, ενώ αν την ορίσετε μηδενική τότε ο "
+"έλεγχος θα απενεργοποιηθεί."
#: plugins/af_psql_trgm/init.php:196
msgid ""
"Setting this value too low might produce false positives, zero disables "
"checking."
msgstr ""
+"Το να της δώσετε μια πολύ χαμηλή τιμή μπορεί να παράξει αρκετά ψευδή θετικά "
+"αποτελέσματα, ενώ αν την ορίσετε μηδενική τότε ο έλεγχος θα απενεργοποιηθεί."
#: plugins/af_psql_trgm/init.php:202
msgid "Minimum title length:"
-msgstr ""
+msgstr "Ελάχιστο μήκος τίτλου:"
#: plugins/af_psql_trgm/init.php:212
-#, fuzzy
msgid "Enable for all feeds."
-msgstr "Ενεργοποίηση κατηγοριών ροών"
+msgstr "Ενεργοποίηση για όλες τις ροές."
#: plugins/af_psql_trgm/init.php:231
msgid "Currently enabled for (click to edit):"
-msgstr ""
+msgstr "Τώρα ενεργός για (κάντε κλικ για επεξεργασία):"
#: plugins/af_psql_trgm/init.php:251
msgid "Similarity (af_psql_trgm)"
-msgstr ""
+msgstr "Ομοιότητα (af_psql_trgm)"
#: plugins/af_psql_trgm/init.php:257
-#, fuzzy
msgid "Mark similar articles as read"
-msgstr "Σήμανση παραπάνω ως αναγνωσμένα"
+msgstr "Σήμανση παρόμοιων άρθρων ως αναγνωσμένα"
#: plugins/bookmarklets/init.php:91 js/PrefFeedTree.js:472
#: js/CommonDialogs.js:108
@@ -1835,34 +1767,33 @@ msgid "Subscribe"
msgstr "Εγγραφή"
#: plugins/bookmarklets/init.php:104
-#, fuzzy, php-format
+#, php-format
msgid "Already subscribed to <b>%s</b>."
-msgstr "Εγγεγραμμένος σε %s"
+msgstr "Είστε ήδη εγγεγραμμένος σε <b>%s</b>."
#: plugins/bookmarklets/init.php:107
-#, fuzzy, php-format
+#, php-format
msgid "Subscribed to <b>%s</b>."
-msgstr "Εγγεγραμμένος σε %s"
+msgstr "Εγγεγραμμένος σε <b>%s</b>."
#: plugins/bookmarklets/init.php:110
#, php-format
msgid "Could not subscribe to <b>%s</b>."
-msgstr ""
+msgstr "Αδυναμία εγγραφής σε <b>%s</b>."
#: plugins/bookmarklets/init.php:113
-#, fuzzy, php-format
+#, php-format
msgid "No feeds found in <b>%s</b>."
-msgstr "Δεν βρέθηκαν ροές."
+msgstr "Δεν βρέθηκαν ροές στο <b>%s</b>."
#: plugins/bookmarklets/init.php:119
#, php-format
msgid "Could not subscribe to <b>%s</b>.<br>Can't download the Feed URL."
-msgstr ""
+msgstr "Αδυναμία εγγραφής σε <b>%s</b>.<br>Αδυναμία λήψης του URL της Ροής."
#: plugins/bookmarklets/init.php:130
-#, fuzzy
msgid "Multiple feed URLs found:"
-msgstr "Βρέθηκαν πολλαπλές URLs ροής."
+msgstr "Βρέθηκαν πολλαπλά URLs για τη ροή:"
#: plugins/bookmarklets/init.php:138
msgid "Subscribe to selected feed"
@@ -1873,9 +1804,8 @@ msgid "Edit subscription options"
msgstr "Επεξεργασία επιλογών εγγραφής"
#: plugins/bookmarklets/init.php:187 plugins/bookmarklets/init.php:364
-#, fuzzy
msgid "Share with Tiny Tiny RSS"
-msgstr "Ενημέρωση του Tiny Tiny RSS"
+msgstr "Κοινοποίηση με Tiny Tiny RSS"
#: plugins/bookmarklets/init.php:260
msgid "Title:"
@@ -1895,20 +1825,20 @@ msgstr "Ετικέτες:"
#: plugins/bookmarklets/init.php:285
msgid "Share"
-msgstr "Διαμοιρασμός"
+msgstr "Κοινοποίησε"
#: plugins/bookmarklets/init.php:287
msgid "Shared article will appear in the Published feed."
-msgstr ""
+msgstr "Το διαμοιρασμένο άρθρο θα εμφανιστεί στην δημοσιευμένη ροή."
#: plugins/bookmarklets/init.php:326 include/login_form.php:198
msgid "Log in"
msgstr "Συνδεθείτε"
#: plugins/bookmarklets/init.php:346
-#, fuzzy, php-format
+#, php-format
msgid "Subscribe to %s in Tiny Tiny RSS?"
-msgstr "Εγγεγραμμένος σε %s"
+msgstr "Εγγραφή του %s στο Tiny Tiny RSS;"
#: plugins/bookmarklets/init.php:353
msgid "Bookmarklets"
@@ -1919,31 +1849,31 @@ 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:358
-#, fuzzy
msgid "Subscribe in Tiny Tiny RSS"
-msgstr "Ενημέρωση του Tiny Tiny RSS"
+msgstr "Εγγραφή στο Tiny Tiny RSS"
#: plugins/bookmarklets/init.php:361
msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS"
msgstr ""
+"Χρήση αυτού του δυναμικού σελιδοδείκτη για την δημοσίευση οποιασδήποτε "
+"σελίδας που χρησιμοποιείί το Tiny Tiny RSS"
#: plugins/auth_internal/init.php:93
-#, fuzzy
-#| msgid "Please enter label caption:"
msgid "Please enter verification code (OTP):"
-msgstr "Εισάγετε λεζάντα ετικέτας:"
+msgstr "Παρακαλώ εισαγάγετε τον κωδικό επαλήθευσης (OTP):"
#: plugins/auth_internal/init.php:95
-#, fuzzy
-#| msgid "Content:"
msgid "Continue"
-msgstr "Περιεχόμενο:"
+msgstr "Συνέχεια"
#: plugins/auth_internal/init.php:134
msgid "Too many authentication attempts, throttled."
-msgstr ""
+msgstr "Πάρα πολλές απόπειρες επαλήθευσης, εφαρμογή περιορισμού."
#: plugins/auth_internal/init.php:241
msgid "Password has been changed."
@@ -1955,27 +1885,28 @@ msgstr "Ο παλιός κωδικός πρόσβασης είναι λανθα�
#: plugins/af_comics/init.php:63
msgid "Feeds supported by af_comics"
-msgstr ""
+msgstr "Ροές υποστηριζόμενες από το af_comics"
#: plugins/af_comics/init.php:65
msgid "The following comics are currently supported:"
-msgstr ""
+msgstr "Τα παρακάτω κόμικς υποστηρίζονται αυτήν τη στιγμή:"
#: include/sessions.php:43
msgid "Session failed to validate (password changed)"
-msgstr ""
+msgstr "Αδυναμία επικύρωσης της σύνδεσης (ο κωδικός άλλαξε)"
#: include/sessions.php:48
msgid "Session failed to validate (account is disabled)"
msgstr ""
+"Αδυναμία επικύρωσης της σύνδεσης (ο λογαριασμός είναι απενεργοποιημένος)"
#: include/sessions.php:67
msgid "Session failed to validate (user not found)"
-msgstr ""
+msgstr "Αδυναμία επικύρωσης της σύνδεσης (ο χρήστης δεν βρέθηκε)"
#: include/functions.php:62
msgid "Detect automatically"
-msgstr ""
+msgstr "Αυτοματος εντοπισμός"
#: include/login_form.php:145
msgid "I forgot my password"
@@ -1991,15 +1922,16 @@ msgstr "Χρήση μικρότερης κίνησης"
#: include/login_form.php:167
msgid "Does not display images in articles, reduces automatic refreshes."
-msgstr ""
+msgstr "Δεν εμφανίζει εικόνες σε άρθρα, μειώνει τις αυτόματες ανανεώσεις."
#: include/login_form.php:175 js/CommonDialogs.js:16
msgid "Safe mode"
-msgstr ""
+msgstr "Ασφαλής λειτουργία"
#: include/login_form.php:180
msgid "Uses default theme and prevents all plugins from loading."
msgstr ""
+"Χρησιμοποιεί προεπιλεγμένο θέμα και αποτρέπει όλα τα πρόσθετα από τη φόρτωση."
#: include/login_form.php:188
msgid "Remember me"
@@ -2014,7 +1946,6 @@ msgid "Inverse"
msgstr "Αναστροφή"
#: js/PrefFilterTree.js:136 js/PrefFilterTree.js:165
-#, fuzzy
msgid "No filters selected."
msgstr "Δεν επιλέχθηκαν φίλτρα."
@@ -2039,41 +1970,34 @@ msgid "Click to close"
msgstr "Κάντε κλικ για κλείσιμο"
#: js/CommonFilters.js:14
-#, fuzzy
-#| msgid "Edit Filter"
msgid "Edit filter"
-msgstr "Επεξεργασία Φίλτρου"
+msgstr "Επεξεργασία φίλτρου"
#: js/CommonFilters.js:14
-#, fuzzy
-#| msgid "Create filter"
msgid "Create new filter"
-msgstr "Δημιουργία φίλτρου"
+msgstr "Δημιουργία νέου φίλτρου"
#: js/CommonFilters.js:45
#, java-printf-format, javascript-format
msgid "Looking for articles (%d processed, %f found)..."
-msgstr ""
+msgstr "Αναζήτηση άρθρων (%d επεξεργασμένα, %f βρέθηκαν) σε εξέλιξη ..."
#: js/CommonFilters.js:73
-#, fuzzy
msgid "Articles matching this filter:"
-msgstr "Άρθρα που ταιριάζουν σε αυτό το φίλτρο:"
+msgstr "Άρθρα που ταιριάζουν στο φίλτρο αυτό:"
#: js/CommonFilters.js:75
-#, fuzzy, java-printf-format, javascript-format
+#, java-printf-format, javascript-format
msgid "Found %d articles matching this filter:"
-msgstr "Άρθρα που ταιριάζουν σε αυτό το φίλτρο:"
+msgstr "Βρέθηκαν %d άρθρα που ταιριάζουν σε αυτό το φίλτρο:"
#: js/CommonFilters.js:84
msgid "Error while trying to get filter test results."
-msgstr ""
+msgstr "Σφάλμα κατά την απόπειρα ανάκτησης αποτελεσμάτων της δοκιμής φίλτρου."
#: js/CommonFilters.js:96
-#, fuzzy
-#| msgid "Rescoring articles..."
msgid "Looking for articles..."
-msgstr "Γίνεται αναβαθμολόγηση άρθρων..."
+msgstr "Διενεργείται αναζήτηση άρθρων..."
#: js/CommonFilters.js:175
msgid "Edit rule"
@@ -2088,9 +2012,8 @@ msgid "Inverse regular expression matching"
msgstr "Αναστροφή τακτικής αντιστοίχισης έκφρασης"
#: js/CommonFilters.js:223
-#, fuzzy
msgid "on"
-msgstr "Κανένα"
+msgstr "κανένα"
#: js/CommonFilters.js:251
msgid "Edit action"
@@ -2134,53 +2057,50 @@ msgid "Cancel search"
msgstr "Ακύρωση αναζήτησης"
#: js/Headlines.js:665
-#, fuzzy
msgid "Select..."
-msgstr "Επιλογή"
+msgstr "Επιλογή..."
#: js/Headlines.js:825 js/Headlines.js:879 js/Headlines.js:896
-#, fuzzy
msgid "Click to open next unread feed."
-msgstr "Κάντε κλικ για επεξεργασία ροής"
+msgstr "Κάντε κλικ για να ανοίξετε την επόμενη μη αναγνωσμένη ροή."
#: js/Headlines.js:893
msgid "New articles found, reload feed to continue."
-msgstr ""
+msgstr "Βρέθηκαν νέα άρθρα, επαναφόρτωση άρθρου για να προχωρήσετε."
#: js/Headlines.js:950 js/Headlines.js:976 js/Headlines.js:988
#: js/Headlines.js:1131 js/Headlines.js:1148 js/Headlines.js:1165
#: js/Headlines.js:1302 js/Article.js:62
-#, fuzzy
msgid "No articles selected."
-msgstr "Δεν επιλέχθηκε άρθρο."
+msgstr "Δεν επιλέχθηκαν άρθρα."
#: js/Headlines.js:1102
-#, fuzzy, java-printf-format, javascript-format
+#, java-printf-format, javascript-format
msgid "%d article selected"
msgid_plural "%d articles selected"
-msgstr[0] "Δεν επιλέχθηκε άρθρο."
-msgstr[1] "Δεν επιλέχθηκε άρθρο."
+msgstr[0] "%d επιλεγμένο άρθρο"
+msgstr[1] "%d επιλεγμένα άρθρα"
#: js/Headlines.js:1173
-#, fuzzy, java-printf-format, javascript-format
+#, java-printf-format, javascript-format
msgid "Delete %d selected article in %s?"
msgid_plural "Delete %d selected articles in %s?"
-msgstr[0] "Αναβαθμολόγηση άρθρων σε %s;"
-msgstr[1] "Αναβαθμολόγηση άρθρων σε %s;"
+msgstr[0] "Διαγραφή %d επιλεγμένου άρθρου σε %s;"
+msgstr[1] "Διαγραφή %d επιλεγμένων άρθρων σε %s;"
#: js/Headlines.js:1175
-#, fuzzy, java-printf-format, javascript-format
+#, java-printf-format, javascript-format
msgid "Delete %d selected article?"
msgid_plural "Delete %d selected articles?"
-msgstr[0] "Ενεργοποίηση επιλεγμένου προφίλ;"
-msgstr[1] "Ενεργοποίηση επιλεγμένου προφίλ;"
+msgstr[0] "Διαγραφή %d επιλεγμένου άρθρου;"
+msgstr[1] "Διαγραφή %d επιλεγμένων άρθρων;"
#: js/Headlines.js:1308
#, java-printf-format, javascript-format
msgid "Mark %d selected article in %s as read?"
msgid_plural "Mark %d selected articles in %s as read?"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Σήμανση %d επιλεγμένου άρθρου στη %s ως αναγνωσμένου;"
+msgstr[1] "Σήμανση %d επιλεγμένων άρθρων στη %s ως αναγνωσμένων;"
#: js/Headlines.js:1324
msgid "No article is selected."
@@ -2188,14 +2108,14 @@ msgstr "Δεν επιλέχθηκε άρθρο."
#: js/Headlines.js:1359
msgid "No articles found to mark"
-msgstr ""
+msgstr "Δεν βρέθηκαν άρθρα προς σήμανση"
#: js/Headlines.js:1361
-#, fuzzy, java-printf-format, javascript-format
+#, java-printf-format, javascript-format
msgid "Mark %d article as read?"
msgid_plural "Mark %d articles as read?"
-msgstr[0] "Σήμανση παραπάνω ως αναγνωσμένα"
-msgstr[1] "Σήμανση παραπάνω ως αναγνωσμένα"
+msgstr[0] "Σήμανση %d άρθρου ως αναγνωσμένο;"
+msgstr[1] "Σήμανση %d άρθρων ως αναγνωσμένα;"
#: js/Headlines.js:1420
msgid "Open original article"
@@ -2215,15 +2135,12 @@ msgstr "Αφαίρεση ετικέτας"
#: js/Headlines.js:1588 js/FeedTree.js:105 js/Headlines.js:473
#: js/Headlines.js:522 js/Headlines.js:591
-#, fuzzy
-#| msgid "Open next feed"
msgid "Open site"
-msgstr "Άνοιγμα επόμενης ροής"
+msgstr "Άνοιγμα ιστοσελίδας"
#: js/Headlines.js:1597 js/FeedTree.js:114
-#, fuzzy
msgid "Debug feed"
-msgstr "Εκσφαλμάτωση ενημέρωσης ροής"
+msgstr "Εκσφαλμάτωση ροής"
#: js/Headlines.js:1618
msgid "Select articles in group"
@@ -2238,13 +2155,12 @@ msgid "Mark feed as read"
msgstr "Σήμανση ροής ως αναγνωσμένη"
#: js/PrefHelpers.js:20
-#, fuzzy
msgid "Remove selected app passwords?"
-msgstr "Αφαίρεση επιλεγμένων κατηγοριών;"
+msgstr "Αφαίρεση επιλεγμένων κωδικών εφαρμογών;"
#: js/PrefHelpers.js:45
msgid "This will invalidate all previously generated feed URLs. Continue?"
-msgstr ""
+msgstr "Αυτό θα ακυρώσει όλα τα προηγουμένως παραχθέντα URL ροών. Συνέχεια;"
#: js/PrefHelpers.js:46 plugins/share/share_prefs.js:6
msgid "Clearing URLs..."
@@ -2255,36 +2171,33 @@ msgid "Generated URLs cleared."
msgstr "Έγινε απαλοιφή των URL που παρήχθησαν."
#: js/PrefHelpers.js:59
-#, fuzzy
-#| msgid "Digest"
msgid "Digest preview"
-msgstr "Σύνοψη"
+msgstr "Προεπισκόπηση σύνοψης"
#: js/PrefHelpers.js:113
-#, fuzzy
msgid "Clear event log?"
-msgstr "Απαλοιφή καταγραφής"
+msgstr "Απαλοιφή καταγραφής;"
#: js/PrefHelpers.js:135
msgid "Name for cloned profile:"
-msgstr ""
+msgstr "Όνομα του κλωνοποιημένου προφίλ:"
#: js/PrefHelpers.js:145
-#, fuzzy
msgid "Please select a single profile to clone."
-msgstr "Αφαίρεση επιλεγμένων φίλτρων;"
+msgstr "Παρακαλώ επιλέξτε ένα μόνο προφίλ προς κλωνοποίηση."
#: js/PrefHelpers.js:153
msgid ""
"Remove selected profiles? Active and default profiles will not be removed."
msgstr ""
+"Αφαίρεση επιλεγμένων προφίλ; Τα ενεργά και προεπιλεγμένα προφίλ δεν θα "
+"αφαιρεθούν."
#: js/PrefHelpers.js:154
msgid "Removing selected profiles..."
msgstr "Αφαίρεση επιλεγμένων φίλτρων σε εξέλιξη..."
#: js/PrefHelpers.js:163
-#, fuzzy
msgid "No profiles selected."
msgstr "Δεν επιλέχθηκαν προφίλ."
@@ -2298,7 +2211,7 @@ msgstr "(ενεργό)"
#: js/PrefHelpers.js:219
msgid "(empty)"
-msgstr ""
+msgstr "(κενό)"
#: js/PrefHelpers.js:242
msgid "Activate selected profile?"
@@ -2306,7 +2219,7 @@ msgstr "Ενεργοποίηση επιλεγμένου προφίλ;"
#: js/PrefHelpers.js:251
msgid "Please choose a profile to activate."
-msgstr ""
+msgstr "Επιλέξτε ένα προφίλ για να ενεργοποιήσετε."
#: js/PrefHelpers.js:264
msgid "Customize stylesheet"
@@ -2317,22 +2230,25 @@ msgid ""
"You can override colors, fonts and layout of your currently selected theme "
"with custom CSS declarations here."
msgstr ""
+"Μπορείτε να παρακάμψετε τα χρώματα, τις γραμματοσειρές και τη διάταξη του "
+"τρέχοντος επιλεγμένου θέματός σας με προσαρμοσμένες δηλώσεις CSS εδώ."
#: js/PrefHelpers.js:289
msgid ""
"User CSS has been applied, you might need to reload the page to see all "
"changes."
msgstr ""
+"Το User CSS έχει εφαρμοστεί, μπορεί να χρειαστεί να επαναφορτώσετε τη σελίδα "
+"για να δείτε όλες τις αλλαγές."
#: js/PrefHelpers.js:329
msgid "Reset to defaults?"
msgstr "Επαναφορά σε προεπιλογές;"
#: js/PrefHelpers.js:373
-#, fuzzy, java-printf-format, javascript-format
-#| msgid "Error while parsing document."
+#, java-printf-format, javascript-format
msgid "Error while loading plugins list: %s."
-msgstr "Σφάλμα κατά τη συντακτική ανάλυση του εγγράφου."
+msgstr "Σφάλμα κατά τη φόρτωση της λίστας πρόσθετων %s."
#: js/PrefHelpers.js:422
msgid "Clear data"
@@ -2340,124 +2256,106 @@ msgstr "Απαλοιφή δεδομένων"
#: js/PrefHelpers.js:425
msgid "Uninstall"
-msgstr ""
+msgstr "Απεγκατάσταση"
#: js/PrefHelpers.js:437 js/PrefHelpers.js:596
msgid "Could not find any plugins for this search query."
-msgstr ""
+msgstr "Αδυναμία εύρεσης κάποιου πρόσθετου με αυτόν τον όρο αναζήτησης."
#: js/PrefHelpers.js:444
-#, fuzzy, java-printf-format, javascript-format
-#| msgid "Clear feed data"
+#, java-printf-format, javascript-format
msgid "Clear stored data for %s?"
-msgstr "Απαλοιφή δεδομένων ροής"
+msgstr "Απαλοιφή δεδομένων ροής για %s;"
#: js/PrefHelpers.js:453
-#, fuzzy, java-printf-format, javascript-format
-#| msgid "User plugins"
+#, java-printf-format, javascript-format
msgid "Uninstall plugin %s?"
-msgstr "Πρόσθετα χρήστη"
+msgstr "Απεγκατάσταση προσθέτου %s;"
#: js/PrefHelpers.js:462
-#, fuzzy
-#| msgid "Registration failed."
msgid "Plugin uninstallation failed."
-msgstr "Η εγγραφή απέτυχε."
+msgstr "Η εγκατάσταση προσθέτου απέτυχε."
#: js/PrefHelpers.js:478
-#, fuzzy
msgid "Available plugins"
-msgstr "Πρόσθετα χρήστη"
+msgstr "Διαθέσιμα πρόσθετα"
#: js/PrefHelpers.js:491
-#, fuzzy
-#| msgid "Link instance"
msgid "Plugin installer"
-msgstr "Σύνδεσμος instance"
+msgstr "Εγκαταστάτης προσθέτων"
#: js/PrefHelpers.js:494
-#, fuzzy, java-printf-format, javascript-format
-#| msgid "Importing, please wait..."
+#, java-printf-format, javascript-format
msgid "Installing %s, please wait..."
-msgstr "Εισαγωγή σε εξέλιξη, παρακαλώ περιμένετε..."
+msgstr "Εγκατάσταση %s σε εξέλιξη, παρακαλώ περιμένετε..."
#: js/PrefHelpers.js:509 js/PrefHelpers.js:551 js/PrefHelpers.js:662
msgid "Operation failed: check event log."
-msgstr ""
+msgstr "Η ενέργεια απέτυχε: ελέγξτε τον καταγραφέα γεγονότων."
#: js/PrefHelpers.js:513
msgid "Plugin has been installed."
-msgstr ""
+msgstr "Το πρόσθετο εγκαταστάθηκε."
#: js/PrefHelpers.js:517
msgid "Plugin is already installed."
-msgstr ""
+msgstr "Το πρόσθετο έχει ήδη εγκατασταθεί."
#: js/PrefHelpers.js:527 js/PrefHelpers.js:679 js/PrefHelpers.js:745
#, java-printf-format, javascript-format
msgid "Exited with RC: %d"
-msgstr ""
+msgstr "Τερματίστηκε με κωδικό: %d"
#: js/PrefHelpers.js:576
msgid "Already installed"
-msgstr ""
+msgstr "Ήδη εγκατεστημένο"
#: js/PrefHelpers.js:587
-#, fuzzy, java-printf-format, javascript-format
-#| msgid "Last updated: %s"
+#, java-printf-format, javascript-format
msgid "Updated: %s"
-msgstr "Ενημερώθηκε τελευταία: %s"
+msgstr "Ενημερώθηκε: %s"
#: js/PrefHelpers.js:604
msgid "Looking for plugins..."
-msgstr ""
+msgstr "Αναζήτηση πρόσθετων σε εξέλιξη..."
#: js/PrefHelpers.js:623 js/PrefHelpers.js:765
msgid "Close"
-msgstr ""
+msgstr "Κλείσιμο"
#: js/PrefHelpers.js:641
-#, fuzzy
-#| msgid "User plugins"
msgid "Update plugins"
-msgstr "Πρόσθετα χρήστη"
+msgstr "Ενημέρωση πρόσθετων"
#: js/PrefHelpers.js:656
-#, fuzzy
-#| msgid "Importing, please wait..."
msgid "Updating, please wait..."
-msgstr "Εισαγωγή σε εξέλιξη, παρακαλώ περιμένετε..."
+msgstr "Ενημέρωση σε εξέλιξη, παρακαλώ περιμένετε..."
#: js/PrefHelpers.js:680
-#, fuzzy
-#| msgid "Update"
msgid "Update done."
-msgstr "Ενημέρωση"
+msgstr "Η ενημέρωση ολοκληρώθηκε."
#: js/PrefHelpers.js:704
-#, fuzzy
msgid "No updates available"
-msgstr "Διατίθεται νέα έκδοση!"
+msgstr "Δεν υπάρχουν διαθέσιμες ενημερώσεις"
#: js/PrefHelpers.js:716
#, java-printf-format, javascript-format
msgid "Checking: %s"
-msgstr ""
+msgstr "Έλεγχος σε εξέλιξη: %s"
#: js/PrefHelpers.js:723
#, java-printf-format, javascript-format
msgid "%s: Operation failed: check event log."
-msgstr ""
+msgstr "%s: Η ενέργεια απέτυχε: ελέγξτε τον καταγραφέα γεγονότων."
#: js/PrefHelpers.js:746
-#, fuzzy
-#| msgid "Ready to update."
msgid "Ready to update"
-msgstr "Έτοιμο για ενημέρωση."
+msgstr "Έτοιμο για ενημέρωση"
#: js/PrefHelpers.js:791
msgid "Please choose an OPML file first."
-msgstr ""
+msgstr "Επιλέξτε ένα αρχείο OPML πρώτα."
#: js/PrefHelpers.js:794
msgid "Importing, please wait..."
@@ -2472,16 +2370,16 @@ msgid ""
"If you have imported labels and/or filters, you might need to reload "
"preferences to see your new data."
msgstr ""
+"Εάν έχετε εισαγάγει ετικέτες ή/και φίλτρα, ίσως χρειαστεί να επαναφορτώσετε "
+"τις προτιμήσεις για να δείτε τα νέα δεδομένα σας."
#: js/Article.js:36
-#, fuzzy
msgid "Please enter new score for selected articles:"
-msgstr "Εισάγετε τίτλο κατηγορίας:"
+msgstr "Παρακαλώ εισαγάγετε νέα βαθμολογία για τα επιλεγμένα άρθρα:"
#: js/Article.js:70
-#, fuzzy
msgid "Please enter new score for this article:"
-msgstr "Εισάγετε τίτλο κατηγορίας:"
+msgstr "Εισαγάγετε μία νέα βαθμολογία για αυτό το άρθρο:"
#: js/Article.js:130
msgid "Article URL:"
@@ -2489,7 +2387,7 @@ msgstr "URL άρθρου:"
#: js/Article.js:132
msgid "No URL could be displayed for this article."
-msgstr ""
+msgstr "Αδυναμία προβολής των συνδέσμων για αυτό το άρθρο."
#: js/Article.js:152
msgid "no tags"
@@ -2500,20 +2398,18 @@ msgid "comments"
msgstr "σχόλια"
#: js/Article.js:247
-#, fuzzy
msgid "comment"
msgid_plural "comments"
-msgstr[0] "σχόλια"
+msgstr[0] "σχόλιο"
msgstr[1] "σχόλια"
#: js/Article.js:352
-#, fuzzy
msgid "Article tags"
-msgstr "Άρθρο"
+msgstr "Ετικέτες άρθρων"
#: js/Article.js:359
msgid "Tags for this article (separated by commas):"
-msgstr ""
+msgstr "Ετικέτες για αυτό το άρθρο (διαχωρισμένες με κόμματα):"
#: js/Article.js:379
msgid "Saving article tags..."
@@ -2521,107 +2417,96 @@ msgstr "Γίνεται αποθήκευση ετικετών άρθρου..."
#: js/Feeds.js:286
msgid "Your password is at default value"
-msgstr ""
+msgstr "Ο κωδικός σας είναι ο προεπιλεγμένος"
#: js/Feeds.js:288
msgid ""
"You are using default tt-rss password. Please change it in the Preferences "
"(Personal data / Authentication)."
msgstr ""
+"Χρησιμοποιείτε τον προεπιλεγμένο κωδικό πρόσβασης για το tt-rss. Παρακαλούμε "
+"να τον αλλάξετε στις Προτιμήσεις (Προσωπικά δεδομένα / Αυθεντικοποίηση)."
#: js/Feeds.js:443
-#, fuzzy
msgid "Mark all articles as read?"
-msgstr "Σήμανση παραπάνω ως αναγνωσμένα"
+msgstr "Σήμανση όλων των άρθρων ως αναγνωσμένα;"
#: js/Feeds.js:447
-#, fuzzy
msgid "Marking all feeds as read..."
-msgstr "Σήμανση ροής ως αναγνωσμένη"
+msgstr "Σήμανση όλων των ροών ως αναγνωσμένων..."
#: js/Feeds.js:464
-#, fuzzy
msgid "Mark %w in %s older than 1 day as read?"
-msgstr "Αναβαθμολόγηση άρθρων σε %s;"
+msgstr "Σήμανση %w σε %s παλαιότερων της μίας μέρας ως αναγνωσμένα;"
#: js/Feeds.js:467
-#, fuzzy
msgid "Mark %w in %s older than 1 week as read?"
-msgstr "Αναβαθμολόγηση άρθρων σε %s;"
+msgstr "Σήμανση %w σε %s παλαιότερων της μίας εβδομάδας ως αναγνωσμένα;"
#: js/Feeds.js:470
-#, fuzzy
msgid "Mark %w in %s older than 2 weeks as read?"
-msgstr "Αναβαθμολόγηση άρθρων σε %s;"
+msgstr "Σήμανση %w σε %s παλαιότερων των δύο εβδομάδων ως αναγνωσμένα;"
#: js/Feeds.js:473
-#, fuzzy
msgid "Mark %w in %s as read?"
-msgstr "Αναβαθμολόγηση άρθρων σε %s;"
+msgstr "Σήμανση %w στο %s ως αναγνωσμένο;"
#: js/Feeds.js:476
-#, fuzzy
msgid "search results"
-msgstr "Αποτελέσματα αναζήτησης: %s"
+msgstr "αποτελέσματα αναζήτησης"
#: js/Feeds.js:476
-#, fuzzy
msgid "all articles"
-msgstr "Όλα τα άρθρα"
+msgstr "όλα τα άρθρα"
#: js/Feeds.js:517
-#, fuzzy, java-printf-format, javascript-format
+#, java-printf-format, javascript-format
msgid "Mark all articles in %s as read?"
-msgstr "Αναβαθμολόγηση άρθρων σε %s;"
+msgstr "Σήμανση όλων των άρθρων στο %s ως αναγνωσμένα;"
#: js/Feeds.js:652
msgid "Search syntax"
msgstr "Σύνταξη αναζήτησης"
#: js/Feeds.js:716
-#, fuzzy
msgid "Search feeds"
-msgstr "Αναζήτηση..."
+msgstr "Αναζήτηση σε ροές"
#: js/PrefUsers.js:19
-#, fuzzy
msgid "Please enter username:"
-msgstr "Εισάγετε σύνδεση:"
+msgstr "Παρακαλώ εισαγάγετε το όνομα χρήστη:"
#: js/PrefUsers.js:22
msgid "Adding user..."
msgstr "Προσθήκη χρήστη σε εξέλιξη..."
#: js/PrefUsers.js:39 js/PrefUsers.js:60
-#, fuzzy
msgid "Edit user"
-msgstr "Επεξεργασία κανόνα"
+msgstr "Επεξεργασία χρήστη"
#: js/PrefUsers.js:136 js/PrefUsers.js:175
-#, fuzzy
msgid "No users selected."
msgstr "Δεν επιλέχθηκαν χρήστες."
#: js/PrefUsers.js:141
-#, fuzzy
msgid "Please select one user."
-msgstr "Αφαίρεση επιλεγμένων φίλτρων;"
+msgstr "Παρακαλώ επιλέξτε έναν χρήστη."
#: js/PrefUsers.js:145
-#, fuzzy
msgid "Reset password of selected user?"
-msgstr "Επαναφορά κωδικού πρόσβασης"
+msgstr "Επαναφορά κωδικού πρόσβασης του επιλεγμένου χρήστη;"
#: js/PrefUsers.js:146
-#, fuzzy
msgid "Resetting password for selected user..."
-msgstr "Αφαίρεση επιλεγμένων χρηστών σε εξέλιξη..."
+msgstr "Επαναφορά κωδικού για τον επιλεγμένο χρήστη σε εξέλιξη..."
#: js/PrefUsers.js:161
msgid ""
"Remove selected users? Neither default admin nor your account will be "
"removed."
msgstr ""
+"Αφαίρεση επιλεγμένων χρηστών; Δεν θα αφαιρεθεί ούτε ο προεπιλεγμένος "
+"διαχειριστής, ούτε ο λογαριασμός σας."
#: js/PrefUsers.js:162
msgid "Removing selected users..."
@@ -2640,6 +2525,8 @@ msgstr "Αφαίρεση κατηγορίας"
msgid ""
"Remove category %s? Any nested feeds would be placed into Uncategorized."
msgstr ""
+"Αφαίρεση κατηγορίας %s; Οποιαδήποτε ροή που υπάγεται σε αυτήν την κατηγορία "
+"θα μεταφερθεί στις Μη Κατηγοριοποιημένες."
#: js/PrefFeedTree.js:201
msgid "Removing category..."
@@ -2655,9 +2542,8 @@ msgstr "Κατάργηση εγγραφής από επιλεγμένες ροέ
#: js/PrefFeedTree.js:228 js/PrefFeedTree.js:297 js/PrefFeedTree.js:313
#: js/PrefFeedTree.js:518 js/CommonDialogs.js:251 js/CommonDialogs.js:272
-#, fuzzy
msgid "No feeds selected."
-msgstr "Δεν επιλέχθηκε ροή."
+msgstr "Δεν επιλέχθηκαν ροές."
#: js/PrefFeedTree.js:263
msgid "Remove selected categories?"
@@ -2668,20 +2554,16 @@ msgid "Removing selected categories..."
msgstr "Αφαίρεση επιλεγμένων κατηγοριών σε εξέλιξη..."
#: js/PrefFeedTree.js:276
-#, fuzzy
msgid "No categories selected."
msgstr "Δεν επιλέχθηκαν κατηγορίες."
#: js/PrefFeedTree.js:324
-#, fuzzy
-#| msgid "Edit Multiple Feeds"
msgid "Edit multiple feeds"
-msgstr "Επεξεργασία Πολλαπλών Ροών"
+msgstr "Επεξεργασία πολλαπλών ροών"
#: js/PrefFeedTree.js:353
-#, fuzzy
msgid "Save changes to selected feeds?"
-msgstr "Εγγραφή σε επιλεγμένες ροές"
+msgstr "Αποθήκευση αλλαγών στις επιλεγμένες ροές;"
#: js/PrefFeedTree.js:402
msgid "Category title:"
@@ -2697,7 +2579,7 @@ msgstr "Γίνεται εγγραφή σε ροές..."
#: js/PrefFeedTree.js:438
msgid "One valid feed per line (no detection is done)"
-msgstr ""
+msgstr "Μία έγκυρη ροή ανά γραμμή (δεν θα διενεργηθεί αυτόματος εντοπισμός)"
#: js/PrefFeedTree.js:491
msgid "Feeds without recent updates"
@@ -2720,17 +2602,21 @@ msgid ""
"Provided URL is a HTML page referencing multiple feeds, please select "
"required feed from the dropdown menu below."
msgstr ""
+"Ο καθορισμένος σύνδεσμος είναι μια σελίδα HTML στην οποία αναφέρονται "
+"πολλαπλές ροές, επιλέξτε την επιθυμητή ροή από το παρακάτω μενού."
#: js/CommonDialogs.js:137
msgid ""
"Failed to parse output. This can indicate server timeout and/or network "
"issues. Backend output was logged to browser console."
msgstr ""
+"Αδυναμία ανάλυσης αποτελέσματος. Αυτό μπορεί να υποδηλώνει αδυναμία "
+"επικοινωνίας με τον διακομιστή ή/και προβλήματα δικτύου. Το αποτέλεσμα του "
+"backend καταγράφηκε στην κονσόλα του περιηγητή."
#: js/CommonDialogs.js:150
-#, fuzzy
msgid "You are already subscribed to this feed."
-msgstr "Εγγεγραμμένος σε %s"
+msgstr "Είστε ήδη εγγεγραμμένος σε αυτήν την ροή."
#: js/CommonDialogs.js:154
#, java-printf-format, javascript-format
@@ -2739,11 +2625,11 @@ msgstr "Εγγεγραμμένος σε %s"
#: js/CommonDialogs.js:163
msgid "Specified URL seems to be invalid."
-msgstr ""
+msgstr "Το URL που ορίσατε φαίνεται να είναι άκυρο."
#: js/CommonDialogs.js:166
msgid "Specified URL doesn't seem to contain any feeds."
-msgstr ""
+msgstr "Το URL που ορίσατε δεν φαίνεται να περιέχει κάποια ροή."
#: js/CommonDialogs.js:179
msgid "Expand to select feed"
@@ -2752,7 +2638,7 @@ msgstr "Επέκταση για επιλογή ροής"
#: js/CommonDialogs.js:191
#, java-printf-format, javascript-format
msgid "Couldn't download the specified URL: %s"
-msgstr ""
+msgstr "Αδυναμία λήψης του καθορισμένου URL: %s"
#: js/CommonDialogs.js:194
#, java-printf-format, javascript-format
@@ -2760,30 +2646,24 @@ msgid "XML validation failed: %s"
msgstr "Η επικύρωση XML απέτυχε: %s"
#: js/CommonDialogs.js:197
-#, fuzzy
-#| msgid "Error while parsing document."
msgid "Error while creating feed database entry."
-msgstr "Σφάλμα κατά τη συντακτική ανάλυση του εγγράφου."
+msgstr "Σφάλμα κατά τη δημιουργία εγγραφής στη βάση δεδομένων για αυτήν τη ροή."
#: js/CommonDialogs.js:200
msgid "You are not allowed to perform this operation."
-msgstr ""
+msgstr "Δεν επιτρέπεται να προχωρήσετε σε αυτήν την ενέργεια."
#: js/CommonDialogs.js:222
msgid "Feeds with update errors"
msgstr "Ροές με σφάλματα ενημέρωσης"
#: js/CommonDialogs.js:258
-#, fuzzy
-#| msgid "Remove selected feeds?"
msgid "Debug selected feeds?"
-msgstr "Αφαίρεση επιλεγμένων ροών;"
+msgstr "Εκσφαλμάτωση επιλεγμένων ροών;"
#: js/CommonDialogs.js:259
-#, fuzzy
-#| msgid "Removing selected feeds..."
msgid "Opening debugger for selected feeds..."
-msgstr "Αφαίρεση επιλεγμένων ροών σε εξέλιξη..."
+msgstr "Άνοιγμα προγράμματος εκσφαλμάτωσης για τις επιλεγμένες ροές..."
#: js/CommonDialogs.js:328
msgid "Please enter label caption:"
@@ -2800,21 +2680,19 @@ msgstr "Αφαίρεση ροής σε εξέλιξη..."
#: js/CommonDialogs.js:373 js/App.js:1167 js/App.js:1284
msgid "You can't edit this kind of feed."
-msgstr ""
+msgstr "Δεν μπορείτε να επεξεργαστείτε αυτόν τον τύπο ροής."
#: js/CommonDialogs.js:398
-#, fuzzy
msgid "Please select an image file."
-msgstr "Αφαίρεση επιλεγμένων φίλτρων;"
+msgstr "Παρακαλώ επιλέξτε ένα αρχείο εικόνας."
#: js/CommonDialogs.js:418
msgid "Icon file is too large."
-msgstr ""
+msgstr "Το αρχείο του εικονιδίου είναι εξαιρετικά μεγάλο."
#: js/CommonDialogs.js:421
-#, fuzzy
msgid "Upload failed."
-msgstr "Πλήρης φόρτωση."
+msgstr "Η μεταφόρτωση απέτυχε."
#: js/CommonDialogs.js:451
msgid "Remove stored feed icon?"
@@ -2829,36 +2707,33 @@ msgid "Feed icon removed."
msgstr "Το εικονίδιο ροής αφαιρέθηκε."
#: js/CommonDialogs.js:622
-#, fuzzy
msgid "Upload new icon..."
-msgstr "Μεταφόρτωση σε εξέλιξη, περιμένετε..."
+msgstr "Μεταφόρτωση νέου εικονιδίου..."
#: js/CommonDialogs.js:651 js/Headlines.js:642
-#, fuzzy
msgid "Show as feed"
-msgstr "Αυτή τη ροή"
+msgstr "Εμφάνιση ως ροή"
#: js/CommonDialogs.js:653
msgid "Generate new syndication address for this feed?"
-msgstr ""
+msgstr "Δημιουργία νέας διεύθυνσης αναδημοσίευσης για αυτήν τη ροή;"
#: js/CommonDialogs.js:655
msgid "Trying to change address..."
msgstr "Απόπειρα αλλαγής διεύθυνσης σε εξέλιξη..."
#: js/CommonDialogs.js:673
-#, fuzzy
msgid "Could not change feed URL."
-msgstr "Δημιουργία χρήστη"
+msgstr "Αδυναμία αλλαγής του URL της ροής."
#: js/CommonDialogs.js:680
#, java-printf-format, javascript-format
msgid "%s can be accessed via the following secret URL:"
-msgstr ""
+msgstr "Η ροή %s μπορεί να ανακτηθεί από το παρακάτω μυστικό URL:"
#: js/App.js:314
msgid "This function is only available in combined mode."
-msgstr ""
+msgstr "Αυτή η λειτουργία είναι διαθέσιμη μόνο σε συνδυασμένη λειτουργία."
#: js/App.js:445
msgid "Keyboard shortcuts"
@@ -2866,11 +2741,11 @@ msgstr "Συντομεύσεις πληκτρολογίου"
#: js/App.js:506
msgid "Update daemon is not running."
-msgstr ""
+msgstr "Η ενημέρωση στο παρασκήνιο δεν λειτουργεί."
#: js/App.js:519
msgid "Update daemon is not updating feeds."
-msgstr ""
+msgstr "Η ενημέρωση στο παρασκήνιο δεν ενημερώνει τις ροές."
#: js/App.js:606
#, java-printf-format
@@ -2878,56 +2753,52 @@ msgid ""
"URL scheme reported by your browser (%a) doesn't match server-configured "
"SELF_URL_PATH (%b), check X-Forwarded-Proto."
msgstr ""
+"Το μοτίβο του URL που αναφέρεται από τον περιηγητή σας (%a) δεν ταιριάζει με "
+"την ρύθμιση του διακομιστή SELF_URL_PATH (%b), ελέγξτε το X-Forwarded-Proto."
#: js/App.js:613
msgid "Fatal error"
-msgstr ""
+msgstr "Κρίσιμο σφάλμα"
#: js/App.js:638
msgid "Unhandled exception"
-msgstr ""
+msgstr "Ανεπίλυτη εξαίρεση"
#: js/App.js:873
-#, fuzzy
msgid "Updates for Tiny Tiny RSS are available."
-msgstr "Διατίθεται νέα έκδοση!"
+msgstr "Διατίθενται ενημερώσεις για το Tiny Tiny RSS."
#: js/App.js:876
msgid "Updates for some local plugins are available."
-msgstr ""
+msgstr "Διατίθενται ενημερώσεις για μερικά τοπικά πρόσθετα."
#: js/App.js:919
msgid "Widescreen is not available in combined mode."
-msgstr ""
+msgstr "Η ευρεία οθόνη δεν είναι διαθέσιμη σε συνδυασμένη λειτουργία."
#: js/App.js:1116
msgid "Please enable mail or mailto plugin first."
-msgstr ""
+msgstr "Ενεργοποιήστε πρώτα το πρόσθετο mail ή το πρόσθετο mailto."
#: js/App.js:1239
-#, fuzzy
msgid "Please enable af_readability first."
-msgstr "Απαλοιφή επιλεγμένης ροής σε εξέλιξη..."
+msgstr "Ενεργοποιήστε το πρόσθετο af_readability πρώτα."
#: js/App.js:1293
-#, fuzzy
msgid "Please select some feed first."
-msgstr "Απαλοιφή επιλεγμένης ροής σε εξέλιξη..."
+msgstr "Παρακαλώ επιλέξτε πρώτα κάποια ροή."
#: js/App.js:1298
msgid "You can't unsubscribe from the category."
-msgstr ""
+msgstr "Δεν μπορείτε να απεγγραφείτε από αυτήν την κατηγορία."
#: js/FeedTree.js:137
-#, fuzzy
msgid "(Un)collapse"
-msgstr "Ανάπτυξη/σύμπτυξη πλευρικής μπάρας"
+msgstr "Ανάπτυξη/σύμπτυξη"
#: js/PrefLabelTree.js:71
-#, fuzzy
-#| msgid "Edit rule"
msgid "Edit label"
-msgstr "Επεξεργασία κανόνα"
+msgstr "Επεξεργασία ετικέτας"
#: js/PrefLabelTree.js:143
msgid "Foreground:"
@@ -2938,12 +2809,10 @@ msgid "Background:"
msgstr "Παρασκήνιο:"
#: js/PrefLabelTree.js:189
-#, fuzzy
msgid "Reset selected labels to default colors?"
-msgstr "Αφαίρεση επιλεγμένων ετικετών;"
+msgstr "Επαναφορά των προκαθορισμένων χρωμάτων για τις επιλεγμένες ετικέτες;"
#: js/PrefLabelTree.js:202 js/PrefLabelTree.js:222
-#, fuzzy
msgid "No labels selected."
msgstr "Δεν επιλέχθηκαν ετικέτες."
@@ -2962,6 +2831,8 @@ msgstr "Γίνεται αποθήκευση σημείωσης..."
#: plugins/share/share_prefs.js:5
msgid "This will invalidate all previously shared article URLs. Continue?"
msgstr ""
+"Αυτό θα ακυρώσει όλους τους συνδέσμους των άρθρων που έχουν διαμοιραστεί στο "
+"παρελθόν. Είστε σίγουρος;"
#: plugins/share/share.js:7
msgid "Share article by URL"
@@ -2969,36 +2840,31 @@ msgstr "Κοινή χρήση άρθρου από URL"
#: plugins/share/share.js:9
msgid "Generate new share URL for this article?"
-msgstr ""
+msgstr "Παραγωγή νέου συνδέσμου διαμοιρασμού για αυτό το άρθρο;"
#: plugins/share/share.js:11
msgid "Trying to change URL..."
msgstr "Γίνεται απόπειρα αλλαγής URL..."
#: plugins/share/share.js:34
-#, fuzzy
msgid "Could not change URL."
-msgstr "Γίνεται απόπειρα αλλαγής URL..."
+msgstr "Αδυναμία αλλαγής URL."
#: plugins/share/share.js:42
msgid "Remove sharing for this article?"
-msgstr ""
+msgstr "Αφαίρεση διαμοιρασμού για αυτό το άρθρο;"
#: plugins/af_psql_trgm/init.js:6
-#, fuzzy
msgid "Related articles"
-msgstr "Κοινόχρηστα άρθρα"
+msgstr "Συναφή άρθρα"
#: plugins/shorten_expanded/init.js:32
-#, fuzzy
-#| msgid "Email article"
msgid "Expand article"
-msgstr "Αποστολή άρθρου με e-mail"
+msgstr "Ανάπτυξη άρθρου"
#: js/CommonFilters.js:71
-#, fuzzy
msgid "No recent articles matching this filter have been found."
-msgstr "Άρθρα που ταιριάζουν σε αυτό το φίλτρο:"
+msgstr "Δεν βρέθηκαν πρόσφατα άρθρα που να ταιριάζουν σε αυτό το φίλτρο."
#: js/CommonFilters.js:419
msgid "Enabled"
@@ -3026,12 +2892,11 @@ msgstr "σήμανση ροής ως αναγνωσμένη"
#: js/Headlines.js:527
msgid "Span all columns"
-msgstr ""
+msgstr "Επέκταση σε όλες τις στήλες"
#: js/Headlines.js:554 js/Article.js:317
-#, fuzzy
msgid "Edit tags for this article"
-msgstr "Αρχειοθετημένα άρθρα"
+msgstr "Επεξεργασία ετικετών για αυτό το άρθρο"
#: js/Headlines.js:668
msgid "Invert"
@@ -3043,105 +2908,99 @@ msgstr "Ορισμός βαθμολογίας"
#: js/Headlines.js:685
msgid "Delete permanently"
-msgstr ""
+msgstr "Οριστική διαγραφή"
#: js/Headlines.js:916
msgid ""
"Could not update headlines (invalid object received - see error console for "
"details)"
msgstr ""
+"Αδυναμία ενημέρωσης πρωτοσέλιδων (λήφθηκε μη έγκυρο αντικείμενο - δείτε την "
+"κονσόλα σφάλματος για λεπτομέρειες)"
#: js/PrefHelpers.js:229
msgid "Clone"
-msgstr ""
+msgstr "Κλωνοποίηση"
#: js/PrefHelpers.js:231
-#, fuzzy
-#| msgid "Activate profile"
msgid "Activate"
-msgstr "Ενεργοποίηση προφίλ"
+msgstr "Ενεργοποίηση"
#: js/PrefHelpers.js:299
msgid "Apply"
-msgstr ""
+msgstr "Εφαρμογή"
#: js/PrefHelpers.js:303
-#, fuzzy
msgid "Save and reload"
-msgstr "Σήμανση παραπάνω ως αναγνωσμένα"
+msgstr "Αποθήκευση και επαναφόρτωση"
#: js/PrefHelpers.js:352
msgid "Selected plugins have been enabled. Reload?"
msgstr ""
+"Τα επιλεγμένα πρόσθετα έχουν απενεργοποιηθεί. Θέλετε να προχωρήσετε σε "
+"επαναφόρτωση;"
#: js/PrefHelpers.js:400
msgid "System plugins are enabled using global configuration."
msgstr ""
+"Τα πρόσθετα του συστήματος έχουν ενεργοποιηθεί χρησιμοποιώντας τις καθολικές "
+"ρυθμίσεις."
#: js/PrefHelpers.js:577
-#, fuzzy
msgid "Install"
-msgstr "Πρόσθετα χρήστη"
+msgstr "Εγκατάσταση"
#: js/PrefHelpers.js:654
-#, fuzzy
-#| msgid "Importing, please wait..."
msgid "Updating..."
-msgstr "Εισαγωγή σε εξέλιξη, παρακαλώ περιμένετε..."
+msgstr "Ενημέρωση σε εξέλιξη..."
#: js/PrefHelpers.js:687
-#, fuzzy
-#| msgid "Upload complete."
msgid "Updates complete"
-msgstr "Πλήρης φόρτωση."
+msgstr "Οι ενημερώσεις ολοληρωθηκαν"
#: js/PrefHelpers.js:701
#, javascript-format
msgid "Updates pending for %d plugin"
msgid_plural "Updates pending for %d plugins"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Εκκρεμούν ενημερώσεις για %d πρόσθετο"
+msgstr[1] "Εκκρεμούν ενημερώσεις για %d πρόσθετα"
#: js/Article.js:205
msgid "Attachments"
msgstr "Συνημμένα"
#: js/Feeds.js:293
-#, fuzzy
msgid "Open Preferences"
-msgstr "Προτιμήσεις"
+msgstr "Άνοιγμα Προτιμήσεων"
#: js/Feeds.js:636
-#, fuzzy, javascript-format
+#, javascript-format
msgid "Search %s..."
-msgstr "Αναζήτηση..."
+msgstr "Αναζήτηση %s..."
#: js/Feeds.js:645
msgid "Used for word stemming"
-msgstr ""
+msgstr "Χρησιμοποιείται για αποκοπή καταλήξεων λέξεων"
#: js/Feeds.js:705
msgid "Show feeds matching..."
-msgstr ""
+msgstr "Εμφάνιση ροών που ταιριάζουν..."
#: js/PrefUsers.js:76
msgid "Access level: "
msgstr "Επίπεδο πρόσβασης: "
#: js/PrefUsers.js:92
-#, fuzzy
-#| msgid "Enabled"
msgid "OTP enabled"
-msgstr "Ενεργοποιημένο"
+msgstr "Ενεργοποιημένο OTP"
#: js/PrefUsers.js:104
msgid "User details"
msgstr "Λεπτομέρειες χρήστη"
#: js/PrefFeedTree.js:390
-#, fuzzy
msgid "Rename category to:"
-msgstr "Αφαίρεση κατηγορίας"
+msgstr "Μετονομασία κατηγορίας σε:"
#: js/PrefFeedTree.js:466
msgid "Feeds require authentication."
@@ -3156,6 +3015,9 @@ msgid ""
"Tiny Tiny RSS is running in safe mode. All themes and plugins are disabled. "
"You will need to log out and back in to disable it."
msgstr ""
+"Το Tiny Tiny RSS εκτελείται σε ασφαλή λειτουργία. Όλα τα θέματα και τα "
+"πρόσθετα έχουν απενεργοποιηθεί. Θα χρειαστεί να αποσυνδεθείτε και να "
+"επανασυνδεθείτε για να την απενεργοποιήσετε."
#: js/CommonDialogs.js:53
msgid "Feed or site URL"
@@ -3170,30 +3032,24 @@ msgid "This feed requires authentication."
msgstr "Αυτή η ροή απαιτεί πιστοποίηση."
#: js/CommonDialogs.js:315
-#, fuzzy
-#| msgid "Edit selected feeds"
msgid "Debug selected feeds"
-msgstr "Επεξεργασία επιλεγμένων ροών"
+msgstr "Εκσφαλμάτωση επιλεγμένων ροών"
#: js/CommonDialogs.js:526
-#, fuzzy
-#| msgid "Feed Title"
msgid "Feed title"
-msgstr "Τίτλος Ροής"
+msgstr "Τίτλος ροής"
#: js/CommonDialogs.js:533
msgid "Feed URL"
msgstr "URL Ροής"
#: js/CommonDialogs.js:552
-#, fuzzy
msgid "Site URL:"
-msgstr "URL άρθρου:"
+msgstr "URL ροής:"
#: js/CommonDialogs.js:554
-#, fuzzy
msgid "Site URL"
-msgstr "URL Ροής"
+msgstr "URL ροής"
#: js/CommonDialogs.js:617
msgid "Icon"
@@ -3201,11 +3057,11 @@ msgstr "Εικονίδιο"
#: js/App.js:646
msgid "Stack trace"
-msgstr ""
+msgstr "Ιχνηλάτηση σφάλματος"
#: js/App.js:653
msgid "Additional information"
-msgstr ""
+msgstr "Πρόσθετες πληροφορίες"
#: js/PrefLabelTree.js:126
msgid "Caption"
diff --git a/locale/es/LC_MESSAGES/messages.mo b/locale/es/LC_MESSAGES/messages.mo
index b1ca8b517..2b3293e72 100644
--- a/locale/es/LC_MESSAGES/messages.mo
+++ b/locale/es/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/locale/es/LC_MESSAGES/messages.po b/locale/es/LC_MESSAGES/messages.po
index 02b60707b..876732f93 100644
--- a/locale/es/LC_MESSAGES/messages.po
+++ b/locale/es/LC_MESSAGES/messages.po
@@ -8,16 +8,16 @@ msgstr ""
"Project-Id-Version: tt-rss git\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-06-15 14:03+0300\n"
-"PO-Revision-Date: 2019-07-20 18:11+0000\n"
-"Last-Translator: Roberto Michán Sánchez <[email protected]>\n"
-"Language-Team: Spanish <https://weblate.tt-rss.org/projects/tt-rss/messages/"
-"es/>\n"
-"Language: es_ES\n"
+"PO-Revision-Date: 2024-09-13 20:06+0000\n"
+"Last-Translator: Nikolas <[email protected]>\n"
+"Language-Team: Spanish <https://hosted.weblate.org/projects/tt-rss/webui/es/>"
+"\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: Weblate 3.7.1\n"
+"X-Generator: Weblate 5.8-dev\n"
#: backend.php:65
msgid "Use default"
@@ -84,15 +84,12 @@ msgid "Weekly"
msgstr "Semanalmente"
#: backend.php:95 classes/Pref_Feeds.php:551 classes/Pref_Feeds.php:604
-#, fuzzy
msgid "Disabled"
-msgstr "Desactivar contraseñas de un solo uso"
+msgstr "Desactivado"
#: backend.php:96
-#, fuzzy
-#| msgid "Readability"
msgid "Read Only"
-msgstr "Readability"
+msgstr "Solo lectura"
#: backend.php:97 classes/Pref_System.php:123
msgid "User"
@@ -211,10 +208,8 @@ msgid "Search..."
msgstr "Buscar..."
#: index.php:265
-#, fuzzy
-#| msgid "Search %s..."
msgid "Search feeds..."
-msgstr "Buscar %s..."
+msgstr "Buscar feeds…"
#: index.php:266
msgid "Feed actions:"
@@ -243,10 +238,8 @@ msgid "(Un)hide read feeds"
msgstr "Ocultar/Mostrar fuentes leídas"
#: index.php:273
-#, fuzzy
-#| msgid "Reset UI layout"
msgid "UI layout:"
-msgstr "Reajustar la interfaz"
+msgstr "Diseño de la interfaz de usuario:"
#: index.php:274 classes/RPC.php:664
msgid "Toggle combined mode"
@@ -257,10 +250,8 @@ msgid "Toggle widescreen mode"
msgstr "Alternar modo de pantalla ancha"
#: index.php:278
-#, fuzzy
-#| msgid "Always expand articles"
msgid "Toggle expand all articles"
-msgstr "Siempre expandir artículos"
+msgstr "Alternar expandir todos los artículos"
#: index.php:279
msgid "Other actions:"
@@ -334,7 +325,7 @@ msgstr "Avanzado"
#: classes/Pref_Prefs.php:90
msgid "Debugging"
-msgstr ""
+msgstr "Depuración"
#: classes/Pref_Prefs.php:96
msgid "Never apply these tags automatically (comma-separated list)."
@@ -506,51 +497,43 @@ msgstr "Tema"
#: classes/Pref_Prefs.php:127
msgid "Don't enforce DISTINCT headlines"
-msgstr ""
+msgstr "No impongas titulares DISTINTOS"
#: classes/Pref_Prefs.php:127
-#, fuzzy
msgid "May produce duplicate entries"
-msgstr "Permitir artículos duplicados"
+msgstr "Puedes crear entradas duplicadas"
#: classes/Pref_Prefs.php:128
-#, fuzzy
msgid "Show article and feed IDs"
-msgstr "Mostrar artículos"
+msgstr "Mostrar ID de artículos y feeds"
#: classes/Pref_Prefs.php:128
-#, fuzzy
msgid "In the headlines buffer"
-msgstr "Ordenar titulares por fecha de la fuente"
+msgstr "En el búfer de los titulares"
#: classes/Pref_Prefs.php:129
-#, fuzzy
-#| msgid "Disable updates"
msgid "Disable conditional counter updates"
-msgstr "Desactivar actualizaciones"
+msgstr "Deshabilitar el contador de actualizaciones condicionales"
#: classes/Pref_Prefs.php:129
msgid "May increase server load"
-msgstr ""
+msgstr "Puede aumentar la carga del servidor"
#: classes/Pref_Prefs.php:130
-#, fuzzy
msgid "Grid view"
-msgstr "Filtrar artículo"
+msgstr "Vista de cuadrícula"
#: classes/Pref_Prefs.php:130
msgid "On wider screens, if always expanded"
-msgstr ""
+msgstr "En pantallas más anchas, si siempre se amplía"
#: classes/Pref_Prefs.php:131
-#, fuzzy
-#| msgid "Set score"
msgid "Required score"
-msgstr "Definir puntuación"
+msgstr "Puntuación requerida"
#: classes/Pref_Prefs.php:131
msgid "Include articles with this or above score"
-msgstr ""
+msgstr "Incluir artículos con esta puntuación o superior"
#: classes/Pref_Prefs.php:233
msgid "The configuration was saved."
@@ -598,11 +581,12 @@ msgid ""
"Authentication module used for this session (<b>%s</b>) does not provide an "
"ability to set passwords."
msgstr ""
+"El módulo de autenticación utilizado para esta sesión (<b>%s</b>) no permite "
+"establecer contraseñas."
#: classes/Pref_Prefs.php:409
-#, fuzzy
msgid "Generate password"
-msgstr "Generar URL nueva"
+msgstr "Generar una contraseña"
#: classes/Pref_Prefs.php:415 classes/Pref_Feeds.php:950 js/PrefHelpers.js:227
msgid "Remove selected"
@@ -618,11 +602,11 @@ msgstr "Desactivar contraseñas de un solo uso"
#: classes/Pref_Prefs.php:481
msgid "OTP secret:"
-msgstr ""
+msgstr "Contraseña de un solo uso:"
#: classes/Pref_Prefs.php:508
msgid "Verification code:"
-msgstr ""
+msgstr "Código de verificación:"
#: classes/Pref_Prefs.php:516
msgid "Enable OTP"
@@ -637,14 +621,12 @@ msgid "Password"
msgstr "Contraseña"
#: classes/Pref_Prefs.php:536
-#, fuzzy
msgid "App passwords"
-msgstr "Contraseña antigua:"
+msgstr "Contraseñas de aplicaciones"
#: classes/Pref_Prefs.php:543
-#, fuzzy
msgid "Authenticator (OTP)"
-msgstr "Autenticación"
+msgstr "Autenticador (OTP)"
#: classes/Pref_Prefs.php:554
msgid "Some preferences are only available in default profile."
@@ -663,9 +645,8 @@ msgid "More themes..."
msgstr "Más temas..."
#: classes/Pref_Prefs.php:688
-#, fuzzy
msgid "Preview"
-msgstr "Filtrar artículo"
+msgstr "Vista previa"
#: classes/Pref_Prefs.php:714
msgid "Register"
@@ -690,9 +671,8 @@ msgid "Save configuration"
msgstr "Guardar la configuración"
#: classes/Pref_Prefs.php:781
-#, fuzzy
msgid "Save and exit"
-msgstr "Marcar artículos anteriores como leídos"
+msgstr "Guardar y salir"
#: classes/Pref_Prefs.php:788 js/PrefHelpers.js:127
msgid "Manage profiles"
@@ -731,33 +711,29 @@ msgid ""
"data usage and origin server load resulting in a ban of your instance: "
"<b>%s</b>"
msgstr ""
+"Los siguientes complementos utilizan enlaces de contenido por feed. Esto "
+"puede provocar un uso excesivo de datos y una carga del servidor de origen "
+"que provoque la prohibición de tu instancia: <b>%s</b>"
#: classes/Pref_Prefs.php:903 js/CommonFilters.js:235
-#, fuzzy
msgid "More info"
-msgstr "más información"
+msgstr "Más información"
#: classes/Pref_Prefs.php:906
-#, fuzzy
-#| msgid "Enable selected plugins"
msgid "Enable selected"
-msgstr "Activar las extensiones seleccionados"
+msgstr "Activar seleccionado"
#: classes/Pref_Prefs.php:909
msgid "Reload"
-msgstr ""
+msgstr "Volver a cargar"
#: classes/Pref_Prefs.php:916
-#, fuzzy
-#| msgid "Perform updates"
msgid "Check for updates"
-msgstr "Actualizar"
+msgstr "Buscar actualizaciones"
#: classes/Pref_Prefs.php:923
-#, fuzzy
-#| msgid "Mail plugin"
msgid "Install plugin"
-msgstr "Extensión de correo"
+msgstr "Instalar plugin"
#: classes/Pref_Prefs.php:936
msgid "Personal data / Authentication"
@@ -782,10 +758,9 @@ msgid "v%.2f, by %s"
msgstr "v%.2f, por %s"
#: classes/Pref_Prefs.php:1055
-#, fuzzy, php-format
-#| msgid "v%.2f, by %s"
+#, php-format
msgid "v%s, by %s"
-msgstr "v%.2f, por %s"
+msgstr "v%s, por %s"
#: classes/Pref_Prefs.php:1462 classes/Handler_Public.php:292
#: include/login_form.php:153
@@ -797,14 +772,12 @@ msgid "Description"
msgstr "Descripción"
#: classes/Pref_Prefs.php:1516
-#, fuzzy
msgid "Created"
-msgstr "Crear"
+msgstr "Creado"
#: classes/Pref_Prefs.php:1517
-#, fuzzy
msgid "Last used"
-msgstr "Última actualización:"
+msgstr "Última vez utilizado"
#: classes/Pref_Prefs.php:1562
#, php-format
@@ -812,11 +785,13 @@ msgid ""
"Generated password <strong>%s</strong> for %s. Please remember it for future "
"reference."
msgstr ""
+"Contraseña generada <strong>%s</strong> para %s. Recuérdalo para futuras "
+"consultas."
#: classes/Mailer.php:51
#, php-format
msgid "Unknown error while sending mail. Hooks tried: %d."
-msgstr ""
+msgstr "Error desconocido al enviar correo. Hooks probados: %d ."
#: classes/TimeHelper.php:8
#, php-format
@@ -825,7 +800,7 @@ msgstr "%d min"
#: classes/Pref_System.php:24
msgid "Test message from tt-rss"
-msgstr ""
+msgstr "Mensaje de prueba tt-rss"
#: classes/Pref_System.php:81 js/PrefHelpers.js:622
msgid "Refresh"
@@ -833,34 +808,32 @@ msgstr "Actualizar"
#: classes/Pref_System.php:86
msgid "&lt;&lt;"
-msgstr ""
+msgstr "&lt;&lt;"
#: classes/Pref_System.php:90
#, php-format
msgid "Page %d of %d"
-msgstr ""
+msgstr "Página %d de %d"
#: classes/Pref_System.php:95
msgid "&gt;&gt;"
-msgstr ""
+msgstr "&gt;&gt;"
#: classes/Pref_System.php:104
msgid "Severity:"
-msgstr ""
+msgstr "Gravedad:"
#: classes/Pref_System.php:108
-#, fuzzy
msgid "Errors"
-msgstr "Error"
+msgstr "Errores"
#: classes/Pref_System.php:109
msgid "Warnings"
-msgstr ""
+msgstr "Advertencias"
#: classes/Pref_System.php:110
-#, fuzzy
msgid "Everything"
-msgstr "Deseleccionar todo"
+msgstr "Todo"
#: classes/Pref_System.php:120
msgid "Error"
@@ -879,25 +852,20 @@ msgid "Date"
msgstr "Fecha"
#: classes/Pref_System.php:168
-#, fuzzy
-#| msgid "Event Log"
msgid "Event log"
-msgstr "Registro de Eventos"
+msgstr "Registro de incidencias"
#: classes/Pref_System.php:174
-#, fuzzy
-#| msgid "Save configuration"
msgid "Mail configuration"
-msgstr "Guardar la configuración"
+msgstr "Configuración del correo"
#: classes/Pref_System.php:205
msgid "To:"
msgstr "Para:"
#: classes/Pref_System.php:207
-#, fuzzy
msgid "Send test email"
-msgstr "Enviar correo electrónico"
+msgstr "Enviar correo de prueba"
#: classes/Pref_System.php:213
msgid "PHP Information"
@@ -1013,27 +981,27 @@ msgstr[0] "(%d fuente)"
msgstr[1] "(%d fuentes)"
#: classes/Pref_Feeds.php:549
-#, fuzzy, php-format
+#, php-format
msgid "(%d day)"
msgid_plural "(%d days)"
-msgstr[0] "(%d fuente)"
-msgstr[1] "(%d fuentes)"
+msgstr[0] "(%d día)"
+msgstr[1] "(%d días)"
#: classes/Pref_Feeds.php:555
#, php-format
msgid "%d day"
msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%d día"
+msgstr[1] "%d días"
#: classes/Pref_Feeds.php:586
msgid "Check to enable field"
msgstr "Marcar para habilitar el campo"
#: classes/Pref_Feeds.php:602
-#, fuzzy, php-format
+#, php-format
msgid "(%d days)"
-msgstr "(%d fuente)"
+msgstr "(%d días)"
#: classes/Pref_Feeds.php:607 js/CommonDialogs.js:506
msgid "Include in e-mail digest"
@@ -1061,9 +1029,8 @@ msgid "Language:"
msgstr "Idioma:"
#: classes/Pref_Feeds.php:645 js/CommonDialogs.js:572
-#, fuzzy
msgid "Update interval:"
-msgstr "Intervalo de actualización por defecto"
+msgstr "Intervalo de actualización:"
#: classes/Pref_Feeds.php:652 js/CommonDialogs.js:578
msgid "Article purging:"
@@ -1144,10 +1111,8 @@ msgid "Export OPML"
msgstr "Exportar OPML"
#: classes/Pref_Feeds.php:1009
-#, fuzzy
-#| msgid "Include settings"
msgid "Include tt-rss settings"
-msgstr "Incluir preferencias"
+msgstr "Incluir ajustes tt-rss"
#: classes/Pref_Feeds.php:1025
msgid "Display URL"
@@ -1158,18 +1123,16 @@ msgid "Clear all generated URLs"
msgstr "Limpiar todas las URLs generadas"
#: classes/Pref_Feeds.php:1042
-#, fuzzy
msgid "My feeds"
-msgstr "Mis fuentes"
+msgstr "Mis feeds"
#: classes/Pref_Feeds.php:1047
msgid "OPML"
msgstr "OPML"
#: classes/Pref_Feeds.php:1052
-#, fuzzy
msgid "Sharing"
-msgstr "Compartir"
+msgstr "Compartiendo"
#: classes/Pref_Users.php:56 classes/Pref_Users.php:257
msgid "Registered"
@@ -1236,9 +1199,9 @@ msgid "Click to edit"
msgstr "Pulse aquí para editar"
#: classes/Config.php:402
-#, fuzzy, php-format
+#, php-format
msgid "Git error [RC=%d]: %s"
-msgstr "Error crítico"
+msgstr "Error de Git [RC=%d]: %s"
#: classes/Pref_Filters.php:211 classes/Pref_Filters.php:222
#: classes/Pref_Filters.php:442 classes/Pref_Filters.php:876
@@ -1263,9 +1226,8 @@ msgid "Combine"
msgstr "Combinar"
#: classes/Pref_Filters.php:695
-#, fuzzy
msgid "Toggle rule display"
-msgstr "Cambiar la lista de fuentes"
+msgstr "Conmutar la visualización de reglas"
#: classes/Pref_Filters.php:746
msgid "[No caption]"
@@ -1361,7 +1323,7 @@ msgstr "Error: por favor, suba un fichero OPML."
#: classes/OPML.php:641
#, php-format
msgid "Error: file is not readable: %s"
-msgstr ""
+msgstr "Error: archivo no legible: %s"
#: classes/OPML.php:667
msgid "Error while parsing document."
@@ -1376,40 +1338,32 @@ msgid "Open next feed"
msgstr "Abrir la fuente siguiente"
#: classes/RPC.php:612
-#, fuzzy
-#| msgid "Open next feed"
msgid "Open next unread feed"
-msgstr "Abrir la fuente siguiente"
+msgstr "Abrir el siguiente feed no leído"
#: classes/RPC.php:613
msgid "Open previous feed"
msgstr "Abrir la fuente siguiente"
#: classes/RPC.php:614
-#, fuzzy
-#| msgid "Open previous feed"
msgid "Open previous unread feed"
-msgstr "Abrir la fuente siguiente"
+msgstr "Abrir el anterior feed no leído"
#: classes/RPC.php:615
-#, fuzzy
msgid "Open next article (in combined mode, scroll down)"
-msgstr "Abrir artículo siguiente (no desplazar artículos largos)"
+msgstr "Abrir el siguiente artículo (en modo combinado, desplázate hacia abajo)"
#: classes/RPC.php:616
-#, fuzzy
msgid "Open previous article (in combined mode, scroll up)"
-msgstr "Abrir artículo anterior (no desplazar artículos largos)"
+msgstr "Abrir el artículo anterior (en modo combinado, desplázate hacia arriba)"
#: classes/RPC.php:617
-#, fuzzy
msgid "Scroll headlines by one page down"
-msgstr "Mostrar el sumario del artículo en una nueva pestaña o ventana"
+msgstr "Desplazar los titulares una página hacia abajo"
#: classes/RPC.php:618
-#, fuzzy
msgid "Scroll headlines by one page up"
-msgstr "Seleccionar los artículos del grupo"
+msgstr "Desplazar los titulares una página hacia arriba"
#: classes/RPC.php:619
msgid "Open next article"
@@ -1420,23 +1374,20 @@ msgid "Open previous article"
msgstr "Abrir el artículo anterior"
#: classes/RPC.php:621
-#, fuzzy
msgid "Move to next article (don't expand)"
-msgstr "Ir al artículo siguiente (no expandir ni marcar como leído)"
+msgstr "Pasar al artículo siguiente (no ampliar)"
#: classes/RPC.php:622
-#, fuzzy
msgid "Move to previous article (don't expand)"
-msgstr "Ir al artículo anterior (no expandir ni marcar como leído)"
+msgstr "Volver al artículo anterior (no ampliar)"
#: classes/RPC.php:623
msgid "Show search dialog"
msgstr "Mostrar el diálogo de búsqueda"
#: classes/RPC.php:624
-#, fuzzy
msgid "Cancel active search"
-msgstr "Cancelar búsqueda"
+msgstr "Cancelar búsqueda activa"
#: classes/RPC.php:625
msgid "Article"
@@ -1479,14 +1430,12 @@ msgid "Scroll up"
msgstr "Desplazarse hacia arriba"
#: classes/RPC.php:635
-#, fuzzy
msgid "Scroll down page"
-msgstr "Desplazarse abajo"
+msgstr "Desplázate hacia abajo"
#: classes/RPC.php:636
-#, fuzzy
msgid "Scroll up page"
-msgstr "Desplazarse hacia arriba"
+msgstr "Desplázate hacia arriba"
#: classes/RPC.php:637
msgid "Select article under cursor"
@@ -1506,7 +1455,7 @@ msgstr "Alternar expansión de los artículos (modo combinado)"
#: classes/RPC.php:642
msgid "Toggle full article text via Readability"
-msgstr ""
+msgstr "Texto completo del artículo a través de Readability"
#: classes/RPC.php:643
msgid "Article selection"
@@ -1562,10 +1511,8 @@ msgid "Toggle headline grouping"
msgstr "Cambiar agrupación de titulares"
#: classes/RPC.php:658
-#, fuzzy
-#| msgid "Toggle sidebar"
msgid "Toggle grid view"
-msgstr "Alternar la barra lateral"
+msgstr "Alternar vista de cuadrícula"
#: classes/RPC.php:659
msgid "Debug feed update"
@@ -1696,28 +1643,21 @@ msgid "Update"
msgstr "Actualizar"
#: classes/Handler_Public.php:728
-#, fuzzy, php-format
-#| msgid ""
-#| "Tiny Tiny RSS database needs update to the latest version (%d to %d)."
+#, php-format
msgid "Database schema needs update to the latest version (%d to %d)."
-msgstr ""
-"Su base de datos Tiny Tiny RSS necesita actualizarse a la última versión (%d "
-"to %d)."
+msgstr "Tu base de datos necesita actualizarse a la última versión (%d a %d)."
#: plugins/nsfw/init.php:46
-#, fuzzy
-#| msgid "Not work safe (click to toggle)"
msgid "Not safe for work (click to toggle)"
-msgstr "NSFW (click para alternar)"
+msgstr "No es seguro para trabajar (haz clic para alternar)"
#: plugins/nsfw/init.php:80
msgid "NSFW Plugin"
msgstr "Extensión NSFW"
#: plugins/nsfw/init.php:95
-#, fuzzy
msgid "Tags to consider NSFW (comma-separated):"
-msgstr "Etiquetas que se considerarán NSFW (separadas por comas)"
+msgstr "Etiquetas NSFW a considerar (separadas por comas):"
#: plugins/nsfw/init.php:117
msgid "Configuration saved."
@@ -1732,9 +1672,8 @@ msgid "Toggle sidebar"
msgstr "Alternar la barra lateral"
#: plugins/share/init.php:43
-#, fuzzy
msgid "Article unshared"
-msgstr "Artículos compartidos mediante URL"
+msgstr "Artículo sin compartir"
#: plugins/share/init.php:58
msgid "Unshare all articles"
@@ -1774,9 +1713,8 @@ msgid "Show related articles"
msgstr "Mostrar artículos relacionados"
#: plugins/af_psql_trgm/init.php:157
-#, fuzzy
msgid "Mark similar articles as read (af_psql_trgm)"
-msgstr "Marcar artículos similares como leídos"
+msgstr "Marcar artículos similares como leídos (af_psql_trgm)"
#: plugins/af_psql_trgm/init.php:185
msgid "Minimum similarity:"
@@ -1788,41 +1726,33 @@ msgid ""
"number (0-1). Setting it too low might produce false positives, zero "
"disables checking."
msgstr ""
-"La extensión trigram de PostgreSQL devuelve similitud de cadena como un "
+"La extensión trigram de PostgreSQL devuelve similitud de cadena como un "
"número de punto flotante (0-1). Si se ajusta a un valor demasiado bajo se "
"pueden producir falsos positivos, cero deshabilita la comprobación."
#: plugins/af_psql_trgm/init.php:196
-#, fuzzy
-#| msgid ""
-#| "PostgreSQL trigram extension returns string similarity as a floating "
-#| "point number (0-1). Setting it too low might produce false positives, "
-#| "zero disables checking."
msgid ""
"Setting this value too low might produce false positives, zero disables "
"checking."
msgstr ""
-"La extensión trigram de PostgreSQL devuelve similitud de cadena como un "
-"número de punto flotante (0-1). Si se ajusta a un valor demasiado bajo se "
-"pueden producir falsos positivos, cero deshabilita la comprobación."
+"Establecer este valor demasiado bajo podría producir falsos positivos, cero "
+"desactiva la comprobación."
#: plugins/af_psql_trgm/init.php:202
msgid "Minimum title length:"
msgstr "Longitud mínima del título:"
#: plugins/af_psql_trgm/init.php:212
-#, fuzzy
msgid "Enable for all feeds."
-msgstr "Habilitar para todas las fuentes:"
+msgstr "Activar para todos los feeds."
#: plugins/af_psql_trgm/init.php:231
msgid "Currently enabled for (click to edit):"
msgstr "Actualmente habilitado para (click para editar):"
#: plugins/af_psql_trgm/init.php:251
-#, fuzzy
msgid "Similarity (af_psql_trgm)"
-msgstr "Similitud (pg_trgm)"
+msgstr "Similitud (af_psql_trgm)"
#: plugins/af_psql_trgm/init.php:257
msgid "Mark similar articles as read"
@@ -1932,20 +1862,16 @@ msgstr ""
"Use este bookmarklet para publicar cualquier página usando Tiny Tiny RSS"
#: plugins/auth_internal/init.php:93
-#, fuzzy
-#| msgid "Please enter label caption:"
msgid "Please enter verification code (OTP):"
-msgstr "Por favor, introduzca el nombre del marcador:"
+msgstr "Por favor, introduce el código de verificación (OTP):"
#: plugins/auth_internal/init.php:95
-#, fuzzy
-#| msgid "Content"
msgid "Continue"
-msgstr "Contenido"
+msgstr "Continuar"
#: plugins/auth_internal/init.php:134
msgid "Too many authentication attempts, throttled."
-msgstr ""
+msgstr "Demasiados intentos de inicio de sesión, limitados."
#: plugins/auth_internal/init.php:241
msgid "Password has been changed."
@@ -1968,10 +1894,8 @@ msgid "Session failed to validate (password changed)"
msgstr "No se pudo validar la sesión (ha cambiado la contraseña)"
#: include/sessions.php:48
-#, fuzzy
-#| msgid "Session failed to validate (user agent changed)"
msgid "Session failed to validate (account is disabled)"
-msgstr "No se pudo validar la sesión (ha cambiado el agente de usuario)"
+msgstr "No se ha podido validar la sesión (la cuenta está desactivada)"
#: include/sessions.php:67
msgid "Session failed to validate (user not found)"
@@ -2000,11 +1924,11 @@ msgstr ""
#: include/login_form.php:175 js/CommonDialogs.js:16
msgid "Safe mode"
-msgstr ""
+msgstr "Modo seguro"
#: include/login_form.php:180
msgid "Uses default theme and prevents all plugins from loading."
-msgstr ""
+msgstr "Utiliza el tema por defecto y evita que se carguen todos los plugins."
#: include/login_form.php:188
msgid "Remember me"
@@ -2043,16 +1967,12 @@ msgid "Click to close"
msgstr "Clic para cerrar"
#: js/CommonFilters.js:14
-#, fuzzy
-#| msgid "Edit Filter"
msgid "Edit filter"
msgstr "Editar filtro"
#: js/CommonFilters.js:14
-#, fuzzy
-#| msgid "Create filter"
msgid "Create new filter"
-msgstr "Crear filtro"
+msgstr "Crear un nuevo filtro"
#: js/CommonFilters.js:45
#, java-printf-format, javascript-format
@@ -2060,10 +1980,8 @@ msgid "Looking for articles (%d processed, %f found)..."
msgstr "Buscando artículos (%d procesados, %f encontrados)..."
#: js/CommonFilters.js:73
-#, fuzzy
-#| msgid "Found %d articles matching this filter:"
msgid "Articles matching this filter:"
-msgstr "Encontrados %d artículos coincidentes con este filtro:"
+msgstr "Artículos que coinciden con este filtro:"
#: js/CommonFilters.js:75
#, java-printf-format, javascript-format
@@ -2076,10 +1994,8 @@ msgstr ""
"Error mientras se intentaba obtener los resultados de la prueba del filtro."
#: js/CommonFilters.js:96
-#, fuzzy
-#| msgid "Rescoring articles..."
msgid "Looking for articles..."
-msgstr "Reiniciando la puntuación de los artículos..."
+msgstr "Buscando artículos..."
#: js/CommonFilters.js:175
msgid "Edit rule"
@@ -2220,10 +2136,8 @@ msgstr "Borrar marcador"
#: js/Headlines.js:1588 js/FeedTree.js:105 js/Headlines.js:473
#: js/Headlines.js:522 js/Headlines.js:591
-#, fuzzy
-#| msgid "Open next feed"
msgid "Open site"
-msgstr "Abrir la fuente siguiente"
+msgstr "Abrir sitio"
#: js/Headlines.js:1597 js/FeedTree.js:114
msgid "Debug feed"
@@ -2242,9 +2156,8 @@ msgid "Mark feed as read"
msgstr "Marcar fuente como leída"
#: js/PrefHelpers.js:20
-#, fuzzy
msgid "Remove selected app passwords?"
-msgstr "¿Eliminar los usuarios seleccionados?"
+msgstr "¿Eliminar las contraseñas de las aplicaciones seleccionadas?"
#: js/PrefHelpers.js:45
msgid "This will invalidate all previously generated feed URLs. Continue?"
@@ -2259,10 +2172,8 @@ msgid "Generated URLs cleared."
msgstr "Borradas todas las URLs generadas."
#: js/PrefHelpers.js:59
-#, fuzzy
-#| msgid "Digest"
msgid "Digest preview"
-msgstr "Correos recopilatorios"
+msgstr "Avance del resumen"
#: js/PrefHelpers.js:113
msgid "Clear event log?"
@@ -2270,12 +2181,11 @@ msgstr "¿Borrar registro de eventos?"
#: js/PrefHelpers.js:135
msgid "Name for cloned profile:"
-msgstr ""
+msgstr "Nombre para el perfil clonado:"
#: js/PrefHelpers.js:145
-#, fuzzy
msgid "Please select a single profile to clone."
-msgstr "Seleccione un archivo de imagen para cargar."
+msgstr "Por favor, selecciona un único perfil para clonar."
#: js/PrefHelpers.js:153
msgid ""
@@ -2302,7 +2212,7 @@ msgstr "(activo)"
#: js/PrefHelpers.js:219
msgid "(empty)"
-msgstr ""
+msgstr "(vacío)"
#: js/PrefHelpers.js:242
msgid "Activate selected profile?"
@@ -2329,16 +2239,17 @@ msgid ""
"User CSS has been applied, you might need to reload the page to see all "
"changes."
msgstr ""
+"Se ha aplicado CSS del usuario, es posible que tengas que volver a cargar la "
+"página para ver todos los cambios."
#: js/PrefHelpers.js:329
msgid "Reset to defaults?"
msgstr "¿Restaurar las opciones por defecto?"
#: js/PrefHelpers.js:373
-#, fuzzy, java-printf-format, javascript-format
-#| msgid "Error while parsing document."
+#, java-printf-format, javascript-format
msgid "Error while loading plugins list: %s."
-msgstr "Error mientras se analizaba el documento."
+msgstr "Error al cargar la lista de plugins: %s."
#: js/PrefHelpers.js:422
msgid "Clear data"
@@ -2346,126 +2257,102 @@ msgstr "Borrar datos"
#: js/PrefHelpers.js:425
msgid "Uninstall"
-msgstr ""
+msgstr "Desinstalar"
#: js/PrefHelpers.js:437 js/PrefHelpers.js:596
msgid "Could not find any plugins for this search query."
-msgstr ""
+msgstr "No se ha encontrado ningún plugin para esta búsqueda."
#: js/PrefHelpers.js:444
-#, fuzzy, java-printf-format, javascript-format
-#| msgid "Clear stored data for this plugin?"
+#, java-printf-format, javascript-format
msgid "Clear stored data for %s?"
-msgstr "¿Borrar los datos guardados por esta extensión?"
+msgstr "¿Borrar datos almacenados para %s?"
#: js/PrefHelpers.js:453
-#, fuzzy, java-printf-format, javascript-format
-#| msgid "User plugins"
+#, java-printf-format, javascript-format
msgid "Uninstall plugin %s?"
-msgstr "Extensiones de usuario"
+msgstr "¿Desinstalar el plugin %s?"
#: js/PrefHelpers.js:462
-#, fuzzy
-#| msgid "Registration failed."
msgid "Plugin uninstallation failed."
-msgstr "El registro ha fallado."
+msgstr "Error en la desinstalación del plugin."
#: js/PrefHelpers.js:478
-#, fuzzy
-#| msgid "Mail plugin"
msgid "Available plugins"
-msgstr "Extensión de correo"
+msgstr "Plugins disponibles"
#: js/PrefHelpers.js:491
-#, fuzzy
-#| msgid "Link instance"
msgid "Plugin installer"
-msgstr "Enlazar instancia"
+msgstr "Instalador de plugins"
#: js/PrefHelpers.js:494
-#, fuzzy, java-printf-format, javascript-format
-#| msgid "Importing, please wait..."
+#, java-printf-format, javascript-format
msgid "Installing %s, please wait..."
-msgstr "Importando, espere por favor..."
+msgstr "Instalando %s, por favor espere..."
#: js/PrefHelpers.js:509 js/PrefHelpers.js:551 js/PrefHelpers.js:662
msgid "Operation failed: check event log."
-msgstr ""
+msgstr "Operación fallida: compruebe el registro de eventos."
#: js/PrefHelpers.js:513
-#, fuzzy
-#| msgid "E-mail has been changed."
msgid "Plugin has been installed."
-msgstr "El correo electrónico ha sido cambiado."
+msgstr "El plugin ha sido instalado."
#: js/PrefHelpers.js:517
msgid "Plugin is already installed."
-msgstr ""
+msgstr "El plugin ya está instalado."
#: js/PrefHelpers.js:527 js/PrefHelpers.js:679 js/PrefHelpers.js:745
#, java-printf-format, javascript-format
msgid "Exited with RC: %d"
-msgstr ""
+msgstr "Finalizado con RC: %d"
#: js/PrefHelpers.js:576
msgid "Already installed"
-msgstr ""
+msgstr "Ya está instalado"
#: js/PrefHelpers.js:587
-#, fuzzy, java-printf-format, javascript-format
-#| msgid "Updated"
+#, java-printf-format, javascript-format
msgid "Updated: %s"
-msgstr "Actualizados"
+msgstr "Actualizado: %s"
#: js/PrefHelpers.js:604
msgid "Looking for plugins..."
-msgstr ""
+msgstr "Buscando plugins..."
#: js/PrefHelpers.js:623 js/PrefHelpers.js:765
-#, fuzzy
msgid "Close"
-msgstr "cerrar"
+msgstr "Cerrar"
#: js/PrefHelpers.js:641
-#, fuzzy
-#| msgid "User plugins"
msgid "Update plugins"
-msgstr "Extensiones de usuario"
+msgstr "Actualizar plugins"
#: js/PrefHelpers.js:656
-#, fuzzy
-#| msgid "Uploading, please wait..."
msgid "Updating, please wait..."
-msgstr "Cargando. Por favor, espere..."
+msgstr "Actualizando, por favor espere..."
#: js/PrefHelpers.js:680
-#, fuzzy
-#| msgid "Updated"
msgid "Update done."
-msgstr "Actualizados"
+msgstr "Actualización realizada."
#: js/PrefHelpers.js:704
-#, fuzzy
-#| msgid "No actions available"
msgid "No updates available"
-msgstr "Ninguna acción disponible"
+msgstr "No hay actualizaciones"
#: js/PrefHelpers.js:716
-#, fuzzy, java-printf-format, javascript-format
-#| msgid "Checking version... "
+#, java-printf-format, javascript-format
msgid "Checking: %s"
-msgstr "Comprobando la versión..."
+msgstr "Comprobando: %s"
#: js/PrefHelpers.js:723
#, java-printf-format, javascript-format
msgid "%s: Operation failed: check event log."
-msgstr ""
+msgstr "%s: Operación fallida: comprueba el registro de eventos."
#: js/PrefHelpers.js:746
-#, fuzzy
-#| msgid "Ready to update."
msgid "Ready to update"
-msgstr "Listo para actualizar"
+msgstr "Preparado para actualizar"
#: js/PrefHelpers.js:791
msgid "Please choose an OPML file first."
@@ -2500,9 +2387,8 @@ msgid "Article URL:"
msgstr "URL del artículo:"
#: js/Article.js:132
-#, fuzzy
msgid "No URL could be displayed for this article."
-msgstr "¿No compartir este artículo?"
+msgstr "No se ha podido mostrar ninguna URL para este artículo."
#: js/Article.js:152
msgid "no tags"
@@ -2519,10 +2405,8 @@ msgstr[0] "comentario"
msgstr[1] "comentarios"
#: js/Article.js:352
-#, fuzzy
-#| msgid "Articles"
msgid "Article tags"
-msgstr "Artículos"
+msgstr "Etiquetas del artículo"
#: js/Article.js:359
msgid "Tags for this article (separated by commas):"
@@ -2566,7 +2450,7 @@ msgstr "¿Marcar %w en %s de más de 2 semanas de antigüedad como leídos?"
#: js/Feeds.js:473
msgid "Mark %w in %s as read?"
-msgstr "¿Marcar %w en %s como leídos?"
+msgstr "¿Marcar %w en %s como leídos?"
#: js/Feeds.js:476
msgid "search results"
@@ -2586,10 +2470,8 @@ msgid "Search syntax"
msgstr "Sintaxis de búsqueda"
#: js/Feeds.js:716
-#, fuzzy
-#| msgid "Search %s..."
msgid "Search feeds"
-msgstr "Buscar %s..."
+msgstr "Buscar feeds"
#: js/PrefUsers.js:19
msgid "Please enter username:"
@@ -2676,10 +2558,8 @@ msgid "No categories selected."
msgstr "Ninguna categoría seleccionada."
#: js/PrefFeedTree.js:324
-#, fuzzy
-#| msgid "Edit Multiple Feeds"
msgid "Edit multiple feeds"
-msgstr "Editar múltiples fuentes"
+msgstr "Editar múltiples feeds"
#: js/PrefFeedTree.js:353
msgid "Save changes to selected feeds?"
@@ -2722,6 +2602,9 @@ msgid ""
"Provided URL is a HTML page referencing multiple feeds, please select "
"required feed from the dropdown menu below."
msgstr ""
+"La URL proporcionada es una página HTML que hace referencia a varias "
+"fuentes. Seleccione la fuente deseada en el menú desplegable que aparece a "
+"continuación."
#: js/CommonDialogs.js:137
msgid ""
@@ -2764,30 +2647,24 @@ msgid "XML validation failed: %s"
msgstr "Fallo de validación de XML: %s"
#: js/CommonDialogs.js:197
-#, fuzzy
-#| msgid "Error while parsing document."
msgid "Error while creating feed database entry."
-msgstr "Error mientras se analizaba el documento."
+msgstr "Error al crear una entrada en la base de datos de feed."
#: js/CommonDialogs.js:200
msgid "You are not allowed to perform this operation."
-msgstr ""
+msgstr "No está permitido realizar esta operación."
#: js/CommonDialogs.js:222
msgid "Feeds with update errors"
msgstr "Fuentes con errores de actualización"
#: js/CommonDialogs.js:258
-#, fuzzy
-#| msgid "Remove selected feeds?"
msgid "Debug selected feeds?"
-msgstr "¿Borrar fuentes seleccionadas?"
+msgstr "¿Borrar feeds seleccionadas?"
#: js/CommonDialogs.js:259
-#, fuzzy
-#| msgid "Changing category of selected feeds..."
msgid "Opening debugger for selected feeds..."
-msgstr "Cambiando la categoría de las fuentes seleccionadas..."
+msgstr "Abrir depurador para feeds seleccionadas..."
#: js/CommonDialogs.js:328
msgid "Please enter label caption:"
@@ -2807,13 +2684,12 @@ msgid "You can't edit this kind of feed."
msgstr "No puede editar esta clase de fuente."
#: js/CommonDialogs.js:398
-#, fuzzy
msgid "Please select an image file."
-msgstr "Seleccione un archivo de imagen para cargar."
+msgstr "Por favor, seleccione un archivo de imagen."
#: js/CommonDialogs.js:418
msgid "Icon file is too large."
-msgstr ""
+msgstr "El archivo de iconos es demasiado grande."
#: js/CommonDialogs.js:421
msgid "Upload failed."
@@ -2832,9 +2708,8 @@ msgid "Feed icon removed."
msgstr "Icono de la fuente borrado."
#: js/CommonDialogs.js:622
-#, fuzzy
msgid "Upload new icon..."
-msgstr "¿Cargar un nuevo icono para esta fuente?"
+msgstr "Cargar nuevo icono..."
#: js/CommonDialogs.js:651 js/Headlines.js:642
msgid "Show as feed"
@@ -2858,28 +2733,20 @@ msgid "%s can be accessed via the following secret URL:"
msgstr "%s puede ser accedido desde la siguiente URL secreta:"
#: js/App.js:314
-#, fuzzy
-#| msgid "Widescreen is not available in combined mode."
msgid "This function is only available in combined mode."
-msgstr "El modo de pantalla ancha no está disponible en el modo combinado."
+msgstr "Esta función solo está disponible en modo combinado."
#: js/App.js:445
msgid "Keyboard shortcuts"
msgstr "Atajos de teclado"
#: js/App.js:506
-#, fuzzy
msgid "Update daemon is not running."
-msgstr ""
-"<span onclick=\"App.explainError(3)\">El demonio de actualización no está "
-"actualizando las fuentes.</span>"
+msgstr "La actualización de daemon no se esta ejecutando."
#: js/App.js:519
-#, fuzzy
msgid "Update daemon is not updating feeds."
-msgstr ""
-"<span onclick=\"App.explainError(3)\">El demonio de actualización no está "
-"actualizando las fuentes.</span>"
+msgstr "La actualización de daemon no actualiza los feeds."
#: js/App.js:606
#, java-printf-format
@@ -2887,6 +2754,8 @@ msgid ""
"URL scheme reported by your browser (%a) doesn't match server-configured "
"SELF_URL_PATH (%b), check X-Forwarded-Proto."
msgstr ""
+"El esquema de URL informado por su navegador (%a) no coincide con el "
+"SELF_URL_PATH configurado por el servidor (%b), compruebe X-Forwarded-Proto."
#: js/App.js:613
msgid "Fatal error"
@@ -2897,14 +2766,12 @@ msgid "Unhandled exception"
msgstr "Excepción no controlada"
#: js/App.js:873
-#, fuzzy
-#| msgid "New version of Tiny Tiny RSS is available!"
msgid "Updates for Tiny Tiny RSS are available."
-msgstr "¡Nueva versión de Tiny Tiny RSS disponible!"
+msgstr "Ya están disponibles las actualizaciones de Tiny Tiny RSS."
#: js/App.js:876
msgid "Updates for some local plugins are available."
-msgstr ""
+msgstr "Ya están disponibles las actualizaciones de algunos plugins locales."
#: js/App.js:919
msgid "Widescreen is not available in combined mode."
@@ -2915,9 +2782,8 @@ msgid "Please enable mail or mailto plugin first."
msgstr "Por favor, habilite primero la extensión de correo."
#: js/App.js:1239
-#, fuzzy
msgid "Please enable af_readability first."
-msgstr "Por favor, habilite primero la extensión de correo."
+msgstr "Por favor, active primero af_readability."
#: js/App.js:1293
msgid "Please select some feed first."
@@ -2932,10 +2798,8 @@ msgid "(Un)collapse"
msgstr "(Des)plegar"
#: js/PrefLabelTree.js:71
-#, fuzzy
-#| msgid "Edit rule"
msgid "Edit label"
-msgstr "Editar regla"
+msgstr "Editar etiqueta"
#: js/PrefLabelTree.js:143
msgid "Foreground:"
@@ -2994,10 +2858,8 @@ msgid "Related articles"
msgstr "Artículos relacionados"
#: plugins/shorten_expanded/init.js:32
-#, fuzzy
-#| msgid "Email article"
msgid "Expand article"
-msgstr "Enviar artículo por correo"
+msgstr "Ampliar el artículo"
#: js/CommonFilters.js:71
msgid "No recent articles matching this filter have been found."
@@ -3029,7 +2891,7 @@ msgstr "Marcar fuente como leída"
#: js/Headlines.js:527
msgid "Span all columns"
-msgstr ""
+msgstr "Extender todas las columnas"
#: js/Headlines.js:554 js/Article.js:317
msgid "Edit tags for this article"
@@ -3045,7 +2907,7 @@ msgstr "Definir puntuación"
#: js/Headlines.js:685
msgid "Delete permanently"
-msgstr ""
+msgstr "Borrar permanentemente"
#: js/Headlines.js:916
msgid ""
@@ -3057,54 +2919,47 @@ msgstr ""
#: js/PrefHelpers.js:229
msgid "Clone"
-msgstr ""
+msgstr "Clonar"
#: js/PrefHelpers.js:231
-#, fuzzy
msgid "Activate"
-msgstr "Adaptable"
+msgstr "Activar"
#: js/PrefHelpers.js:299
msgid "Apply"
-msgstr ""
+msgstr "Aplicar"
#: js/PrefHelpers.js:303
-#, fuzzy
msgid "Save and reload"
-msgstr "Marcar artículos anteriores como leídos"
+msgstr "Guardar y volver a cargar"
#: js/PrefHelpers.js:352
msgid "Selected plugins have been enabled. Reload?"
-msgstr ""
+msgstr "Se han activado los plugins seleccionados. ¿Recargar?"
#: js/PrefHelpers.js:400
msgid "System plugins are enabled using global configuration."
msgstr ""
+"Los complementos del sistema se activan mediante la configuración global."
#: js/PrefHelpers.js:577
-#, fuzzy
-#| msgid "Mail plugin"
msgid "Install"
-msgstr "Extensión de correo"
+msgstr "Instalar"
#: js/PrefHelpers.js:654
-#, fuzzy
-#| msgid "Playing..."
msgid "Updating..."
-msgstr "Reproduciendo..."
+msgstr "Actualizando..."
#: js/PrefHelpers.js:687
-#, fuzzy
-#| msgid "Upload complete."
msgid "Updates complete"
-msgstr "Subida completa."
+msgstr "Actualizaciones finalizadas"
#: js/PrefHelpers.js:701
#, javascript-format
msgid "Updates pending for %d plugin"
msgid_plural "Updates pending for %d plugins"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Actualizaciones pendientes para el plugin %d"
+msgstr[1] "Actualizaciones pendientes para %d plugins"
#: js/Article.js:205
msgid "Attachments"
@@ -3127,17 +2982,15 @@ msgstr ""
#: js/Feeds.js:705
msgid "Show feeds matching..."
-msgstr ""
+msgstr "Mostrar feeds que coincidan..."
#: js/PrefUsers.js:76
msgid "Access level: "
msgstr "Nivel de acceso:· "
#: js/PrefUsers.js:92
-#, fuzzy
-#| msgid "Enabled"
msgid "OTP enabled"
-msgstr "Habilitado"
+msgstr "OTP activado"
#: js/PrefUsers.js:104
msgid "User details"
@@ -3160,6 +3013,9 @@ msgid ""
"Tiny Tiny RSS is running in safe mode. All themes and plugins are disabled. "
"You will need to log out and back in to disable it."
msgstr ""
+"Tiny Tiny RSS se ejecuta en modo seguro. Todos los temas y plugins están "
+"desactivados. Tendrás que cerrar la sesión y volver a entrar para "
+"desactivarlo."
#: js/CommonDialogs.js:53
msgid "Feed or site URL"
@@ -3174,16 +3030,12 @@ msgid "This feed requires authentication."
msgstr "Esta fuente requiere autenticación."
#: js/CommonDialogs.js:315
-#, fuzzy
-#| msgid "Edit selected feeds"
msgid "Debug selected feeds"
-msgstr "Editar fuentes seleccionadas"
+msgstr "Depurar feeds seleccionados"
#: js/CommonDialogs.js:526
-#, fuzzy
-#| msgid "Feed Title"
msgid "Feed title"
-msgstr "Título de la fuente"
+msgstr "Título del feed"
#: js/CommonDialogs.js:533
msgid "Feed URL"
@@ -3203,12 +3055,11 @@ msgstr "Icono"
#: js/App.js:646
msgid "Stack trace"
-msgstr ""
+msgstr "Rastros en el registro"
#: js/App.js:653
-#, fuzzy
msgid "Additional information"
-msgstr "Mostrar información adicional en la lista de fuentes"
+msgstr "Información adicional"
#: js/PrefLabelTree.js:126
msgid "Caption"
diff --git a/locale/gl/LC_MESSAGES/messages.mo b/locale/gl/LC_MESSAGES/messages.mo
index 53b430fcb..b5328beb1 100644
--- a/locale/gl/LC_MESSAGES/messages.mo
+++ b/locale/gl/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/locale/gl/LC_MESSAGES/messages.po b/locale/gl/LC_MESSAGES/messages.po
index 1865eb4de..afb8c854c 100644
--- a/locale/gl/LC_MESSAGES/messages.po
+++ b/locale/gl/LC_MESSAGES/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-06-15 14:03+0300\n"
-"PO-Revision-Date: 2024-06-20 13:09+0000\n"
+"PO-Revision-Date: 2024-08-31 04:09+0000\n"
"Last-Translator: \"josé m.\" <[email protected]>\n"
"Language-Team: Galician <https://hosted.weblate.org/projects/tt-rss/webui/gl/"
">\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 5.6-rc\n"
+"X-Generator: Weblate 5.7.1-dev\n"
#: backend.php:65
msgid "Use default"
@@ -305,7 +305,7 @@ msgstr "Etiqueta creada <b>%s</b>"
#: js/CommonFilters.js:443 js/CommonFilters.js:476 js/PrefHelpers.js:184
#: js/PrefFeedTree.js:524 js/CommonDialogs.js:278
msgid "Select"
-msgstr "Elexir"
+msgstr "Seleccionar"
#: classes/Pref_Prefs.php:38 classes/Pref_Feeds.php:622 js/CommonDialogs.js:517
msgid "General"
@@ -975,8 +975,8 @@ msgstr "Resultados da busca: %s"
#, php-format
msgid "(%d feed)"
msgid_plural "(%d feeds)"
-msgstr[0] "(%d canle)(%d canles)"
-msgstr[1] ""
+msgstr[0] "(%d canle)"
+msgstr[1] "(%d canles)"
#: classes/Pref_Feeds.php:549
#, php-format
@@ -1098,7 +1098,7 @@ msgstr "Engadir categoría"
#: classes/Pref_Feeds.php:985
msgid "Choose file..."
-msgstr "Elexir ficheiro..."
+msgstr "Elixir ficheiro..."
#: classes/Pref_Feeds.php:993
msgid "Import OPML"
@@ -1409,7 +1409,7 @@ msgstr "Editar etiquetas"
#: classes/RPC.php:630
msgid "Open in new window"
-msgstr "Abrir en nova ventá"
+msgstr "Abrir en nova xanela"
#: classes/RPC.php:631 js/Headlines.js:1482
msgid "Mark below as read"
@@ -1437,7 +1437,7 @@ msgstr "Ir á páxina superior"
#: classes/RPC.php:637
msgid "Select article under cursor"
-msgstr "Elexir artigo baixo o cursor"
+msgstr "Seleccionar artigo baixo o cursor"
#: classes/RPC.php:638
msgid "Email article"
@@ -1570,7 +1570,7 @@ msgstr "Control"
#: js/Feeds.js:296 js/PrefFeedTree.js:558 js/CommonDialogs.js:22
#: js/CommonDialogs.js:318 js/CommonDialogs.js:695 js/App.js:661
msgid "Close this window"
-msgstr "Pechar esta ventá"
+msgstr "Pechar esta xanela"
#: classes/Handler_Public.php:416
msgid "Incorrect username or password"
diff --git a/plugins/auth_internal/init.php b/plugins/auth_internal/init.php
index 881d867cf..6dd79373d 100644
--- a/plugins/auth_internal/init.php
+++ b/plugins/auth_internal/init.php
@@ -116,7 +116,7 @@ class Auth_Internal extends Auth_Base implements IAuthModule2 {
if ($login) {
$user = ORM::for_table('ttrss_users')
- ->where('login', $login)
+ ->where_raw('LOWER(login) = LOWER(?)', [$login])
->find_one();
if ($user) {
diff --git a/plugins/auth_remote/init.php b/plugins/auth_remote/init.php
index 2fb45fdef..3a1fa4c16 100644
--- a/plugins/auth_remote/init.php
+++ b/plugins/auth_remote/init.php
@@ -64,13 +64,13 @@ class Auth_Remote extends Auth_Base {
// LemonLDAP can send user informations via HTTP HEADER
if (Config::get(Config::AUTH_AUTO_CREATE)) {
// update user name
- $fullname = isset($_SERVER['HTTP_USER_NAME']) ? $_SERVER['HTTP_USER_NAME'] : ($_SERVER['AUTHENTICATE_CN'] ?? "");
+ $fullname = $_SERVER['HTTP_USER_NAME'] ?? $_SERVER['AUTHENTICATE_CN'] ?? '';
if ($fullname){
$sth = $this->pdo->prepare("UPDATE ttrss_users SET full_name = ? WHERE id = ?");
$sth->execute([$fullname, $user_id]);
}
// update user mail
- $email = isset($_SERVER['HTTP_USER_MAIL']) ? $_SERVER['HTTP_USER_MAIL'] : ($_SERVER['AUTHENTICATE_MAIL'] ?? "");
+ $email = $_SERVER['HTTP_USER_MAIL'] ?? $_SERVER['AUTHENTICATE_MAIL'] ?? '';
if ($email){
$sth = $this->pdo->prepare("UPDATE ttrss_users SET email = ? WHERE id = ?");
$sth->execute([$email, $user_id]);
diff --git a/prefs.php b/prefs.php
index 83b620bc6..f1c7a0fa7 100644
--- a/prefs.php
+++ b/prefs.php
@@ -1,13 +1,5 @@
<?php
- // we need a separate check here because functions.php might get parsed
- // incorrectly before 5.3 because of :: syntax.
- if (version_compare(PHP_VERSION, '7.4.0', '<')) {
- print "<b>Fatal Error</b>: PHP version 7.4.0 or newer required. You're using " . PHP_VERSION . ".\n";
- exit;
- }
-
- set_include_path(__DIR__ ."/include" . PATH_SEPARATOR .
- get_include_path());
+ set_include_path(__DIR__ . "/include" . PATH_SEPARATOR . get_include_path());
require_once "autoload.php";
require_once "sessions.php";
diff --git a/tests/ConfigTest.php b/tests/ConfigTest.php
index 30f3a212a..8d706c5af 100644
--- a/tests/ConfigTest.php
+++ b/tests/ConfigTest.php
@@ -104,6 +104,30 @@ final class SelfUrlPathTest extends TestCase {
);
}
+ public function test_self_url_i(): void {
+ $_SERVER = [];
+
+ $_SERVER["HTTP_HOST"] = "example.com";
+ $_SERVER["REQUEST_URI"] = "/tt-rss////plugins.local/example///api/long path/test.php";
+
+ $this->assertEquals(
+ 'http://example.com/tt-rss',
+ Config::get_self_url(true)
+ );
+ }
+
+ public function test_self_url_j(): void {
+ $_SERVER = [];
+
+ $_SERVER["HTTP_HOST"] = "example.com";
+ $_SERVER["REQUEST_URI"] = "/tt-rss/plugins.local/example/api/longpath/test.php/reader/api/0/stream/items/ids?n=1000&output=json&s=user/-/state/com.google/starred";
+
+ $this->assertEquals(
+ 'http://example.com/tt-rss',
+ Config::get_self_url(true)
+ );
+ }
+
public function test_get_self_dir(): void {
$this->assertEquals(
dirname(__DIR__), # we're in (app)/tests/
diff --git a/utils/phpunit.sh b/utils/phpunit.sh
index 8423798e4..e8f00d0f5 100755
--- a/utils/phpunit.sh
+++ b/utils/phpunit.sh
@@ -1,5 +1,5 @@
#!/bin/sh
docker run --rm -v $(pwd):/app \
- --workdir /app registry.fakecake.org/infra/php8.3-alpine:3.19 \
+ --workdir /app registry.fakecake.org/infra/php-fpm8.3-alpine3.19:latest \
php83 -d memory_limit=-1 ./vendor/bin/phpunit --exclude integration