More feed info: last received date, publication date (#8799)

* More feed info: last received date, publication date
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/8670

* Fix <br />

* Change i18n English
This commit is contained in:
Alexandre Alapetite
2026-05-10 16:47:24 +02:00
committed by GitHub
parent cedf339330
commit cb04c6cfaa
32 changed files with 110 additions and 16 deletions

View File

@@ -242,17 +242,17 @@ Voir le [dépôt dédié à ces extensions](https://github.com/FreshRSS/Extensio
| Italiano (it) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F) |
| 日本語 (ja) | ■■■■■■■■・・ 88% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fja+%2F%28TODO%7CDIRTY%29%24%2F) |
| 한국어 (ko) | ■■■■■■■■・・ 82% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fko+%2F%28TODO%7CDIRTY%29%24%2F) |
| Latviešu (lv) | ■■■■■■■■・・ 83% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Flv+%2F%28TODO%7CDIRTY%29%24%2F) |
| Latviešu (lv) | ■■■■■■■■・・ 82% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Flv+%2F%28TODO%7CDIRTY%29%24%2F) |
| Nederlands (nl) | ■■■■■■■■■・ 97% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fnl+%2F%28TODO%7CDIRTY%29%24%2F) |
| Occitan (oc) | ■■■■■■■・・・ 75% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Foc+%2F%28TODO%7CDIRTY%29%24%2F) |
| Polski (pl) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpl+%2F%28TODO%7CDIRTY%29%24%2F) |
| Polski (pl) | ■■■■■■■■■・ 98% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpl+%2F%28TODO%7CDIRTY%29%24%2F) |
| Português (Brasil) (pt-BR) | ■■■■■■■■■・ 98% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-BR+%2F%28TODO%7CDIRTY%29%24%2F) |
| Português (Portugal) (pt-PT) | ■■■■■■■■・・ 82% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-PT+%2F%28TODO%7CDIRTY%29%24%2F) |
| Português (Portugal) (pt-PT) | ■■■■■■■■・・ 81% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-PT+%2F%28TODO%7CDIRTY%29%24%2F) |
| Русский (ru) | ■■■■■■■■■・ 97% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fru+%2F%28TODO%7CDIRTY%29%24%2F) |
| Slovenčina (sk) | ■■■■■■■■・・ 82% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fsk+%2F%28TODO%7CDIRTY%29%24%2F) |
| Türkçe (tr) | ■■■■■■■■・ 90% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ftr+%2F%28TODO%7CDIRTY%29%24%2F) |
| Türkçe (tr) | ■■■■■■■■89% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ftr+%2F%28TODO%7CDIRTY%29%24%2F) |
| Українська (uk) | ■■■■■■■■■・ 92% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fuk+%2F%28TODO%7CDIRTY%29%24%2F) |
| 简体中文 (zh-CN) | ■■■■■■■■■・ 98% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-CN+%2F%28TODO%7CDIRTY%29%24%2F) |
| 简体中文 (zh-CN) | ■■■■■■■■■・ 97% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-CN+%2F%28TODO%7CDIRTY%29%24%2F) |
| 正體中文 (zh-TW) | ■■■■■■■■■・ 95% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-TW+%2F%28TODO%7CDIRTY%29%24%2F) |
</translations>

View File

@@ -138,17 +138,17 @@ See the [repository dedicated to those extensions](https://github.com/FreshRSS/E
| Italiano (it) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F) |
| 日本語 (ja) | ■■■■■■■■・・ 88% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fja+%2F%28TODO%7CDIRTY%29%24%2F) |
| 한국어 (ko) | ■■■■■■■■・・ 82% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fko+%2F%28TODO%7CDIRTY%29%24%2F) |
| Latviešu (lv) | ■■■■■■■■・・ 83% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Flv+%2F%28TODO%7CDIRTY%29%24%2F) |
| Latviešu (lv) | ■■■■■■■■・・ 82% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Flv+%2F%28TODO%7CDIRTY%29%24%2F) |
| Nederlands (nl) | ■■■■■■■■■・ 97% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fnl+%2F%28TODO%7CDIRTY%29%24%2F) |
| Occitan (oc) | ■■■■■■■・・・ 75% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Foc+%2F%28TODO%7CDIRTY%29%24%2F) |
| Polski (pl) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpl+%2F%28TODO%7CDIRTY%29%24%2F) |
| Polski (pl) | ■■■■■■■■■・ 98% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpl+%2F%28TODO%7CDIRTY%29%24%2F) |
| Português (Brasil) (pt-BR) | ■■■■■■■■■・ 98% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-BR+%2F%28TODO%7CDIRTY%29%24%2F) |
| Português (Portugal) (pt-PT) | ■■■■■■■■・・ 82% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-PT+%2F%28TODO%7CDIRTY%29%24%2F) |
| Português (Portugal) (pt-PT) | ■■■■■■■■・・ 81% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-PT+%2F%28TODO%7CDIRTY%29%24%2F) |
| Русский (ru) | ■■■■■■■■■・ 97% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fru+%2F%28TODO%7CDIRTY%29%24%2F) |
| Slovenčina (sk) | ■■■■■■■■・・ 82% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fsk+%2F%28TODO%7CDIRTY%29%24%2F) |
| Türkçe (tr) | ■■■■■■■■・ 90% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ftr+%2F%28TODO%7CDIRTY%29%24%2F) |
| Türkçe (tr) | ■■■■■■■■89% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ftr+%2F%28TODO%7CDIRTY%29%24%2F) |
| Українська (uk) | ■■■■■■■■■・ 92% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fuk+%2F%28TODO%7CDIRTY%29%24%2F) |
| 简体中文 (zh-CN) | ■■■■■■■■■・ 98% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-CN+%2F%28TODO%7CDIRTY%29%24%2F) |
| 简体中文 (zh-CN) | ■■■■■■■■■・ 97% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-CN+%2F%28TODO%7CDIRTY%29%24%2F) |
| 正體中文 (zh-TW) | ■■■■■■■■■・ 95% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-TW+%2F%28TODO%7CDIRTY%29%24%2F) |
</translations>

View File

@@ -407,6 +407,26 @@ class FreshRSS_Feed extends Minz_Model {
return $this->nbNotRead;
}
/** @return int Timestamp of the newest article received for this feed, or 0 if none */
public function newestArticleReceivedDate(): int {
static $newestArticleReceivedDate = null;
if (!is_int($newestArticleReceivedDate)) {
$feedDAO = FreshRSS_Factory::createFeedDao();
$newestArticleReceivedDate = $feedDAO->newestArticleReceivedDate($this->id());
}
return $newestArticleReceivedDate;
}
/** @return int Timestamp of the Last article published for this feed, or 0 if none */
public function newestArticlePublicationDate(): int {
static $newestArticlePublicationDate = null;
if (!is_int($newestArticlePublicationDate)) {
$feedDAO = FreshRSS_Factory::createFeedDao();
$newestArticlePublicationDate = $feedDAO->newestArticlePublicationDate($this->id());
}
return $newestArticlePublicationDate;
}
public function faviconPrepare(bool $force = false): void {
require_once LIB_PATH . '/favicons.php';
if ($this->customFavicon()) {

View File

@@ -555,6 +555,22 @@ class FreshRSS_FeedDAO extends Minz_ModelPdo {
return $this->fetchInt($sql, ['id_feed' => $id]) ?? -1;
}
/** @return int Timestamp of the newest article received for the specified feed, or 0 if none */
public function newestArticleReceivedDate(int $feedId): int {
$sql = <<<'SQL'
SELECT MAX(id) / 1000000 AS t FROM `_entry` WHERE id_feed=:id_feed
SQL;
return $this->fetchInt($sql, ['id_feed' => $feedId]) ?? 0;
}
/** @return int Timestamp of the Last article published for the specified feed, or 0 if none */
public function newestArticlePublicationDate(int $feedId): int {
$sql = <<<'SQL'
SELECT MAX(date) AS t FROM `_entry` WHERE id_feed=:id_feed
SQL;
return $this->fetchInt($sql, ['id_feed' => $feedId]) ?? 0;
}
/**
* Update cached values for selected feeds, or all feeds if no feed ID is provided.
*/

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (výchozí)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (Standard)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Letzte fehlerhafte Aktualisierung <time datetime="%1$s" title="%1$s">%2$s</time>.',
'last-update' => 'Letzte erfolgreiche Aktualisierung <time datetime="%1$s" title="%1$s">%2$s</time>.',
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (default)', // TODO
'xml_xpath' => 'XML + XPath', // TODO
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (default)', // IGNORE
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // IGNORE
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // IGNORE
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // IGNORE
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // IGNORE
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (default)',
'xml_xpath' => 'XML + XPath',
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.',
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.',
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.',
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.',
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (por defecto)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => ' RSS / Atom (پیش‌فرض)',
'xml_xpath' => ' XML + XPath',
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS/Atom (oletus)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (par défaut)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Dernier article publié <time datetime="%1$s" title="%1$s">%2$s</time>.',
'last-entry-received-date' => 'Dernier article reçu <time datetime="%1$s" title="%1$s">%2$s</time>.',
'last-error-date' => 'Dernière mise à jour erronée <time datetime="%1$s" title="%1$s">%2$s</time>.',
'last-update' => 'Dernière mise à jour réussie <time datetime="%1$s" title="%1$s">%2$s</time>.',
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (default)', // TODO
'xml_xpath' => 'XML + XPath', // TODO
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (alapértelmezett)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (baku)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (predefinito)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (標準)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (기본값)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (noklusējums)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (standaard)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (defaut)',
'xml_xpath' => 'XML + XPath', // TODO
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (domyślne)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (padrão)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (padrão)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (по умолчанию)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (prednastavené)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (varsayılan)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS/Atom (типово)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (默认)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'maintenance' => array(

View File

@@ -186,6 +186,8 @@ return array(
'rss' => 'RSS / Atom (預設)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.', // TODO
'last-error-date' => '上次錯誤更新 <time datetime="%1$s" title="%1$s">%2$s</time>。',
'last-update' => '上次成功更新 <time datetime="%1$s" title="%1$s">%2$s</time>。',
'maintenance' => array(

View File

@@ -18,16 +18,20 @@
<p class="alert alert-error">
<span class="alert-head"><?= _t('gen.short.damn') ?></span>
<?= _t('sub.feed.error') ?><br />
<?= _t('sub.feed.last-update', timestampToMachineDate($this->feed->lastUpdate()), timeago($this->feed->lastUpdate())) ?>
<?php if ($this->feed->lastError() > 1) { ?><br />
<?= _t('sub.feed.last-error-date', timestampToMachineDate($this->feed->lastError()), timeago($this->feed->lastError())) ?>
<?php if ($this->feed->lastError() > 1) { ?>
<?= _t('sub.feed.last-error-date', timestampToMachineDate($this->feed->lastError()), timeago($this->feed->lastError())) ?><br />
<?php } ?>
</p>
<?php else: ?>
<p class="alert alert-success">
<?= _t('sub.feed.last-update', timestampToMachineDate($this->feed->lastUpdate()), timeago($this->feed->lastUpdate())) ?>
</p>
<?php endif; ?>
<?= _t('sub.feed.last-update', timestampToMachineDate($this->feed->lastUpdate()), timeago($this->feed->lastUpdate())) ?>
<?php if ($this->feed->newestArticleReceivedDate() > 0): ?><br />
<?= _t('sub.feed.last-entry-received-date', timestampToMachineDate($this->feed->newestArticleReceivedDate()), timeago($this->feed->newestArticleReceivedDate())) ?>
<?php endif; ?>
<?php if ($this->feed->newestArticlePublicationDate() > 0): ?><br />
<?= _t('sub.feed.last-entry-publication-date', timestampToMachineDate($this->feed->newestArticlePublicationDate()), timeago($this->feed->newestArticlePublicationDate())) ?>
<?php endif; ?>
</p>
<?php $nbEntries = $this->feed->nbEntries(); ?>
<?php if ($nbEntries === 0): ?>