aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2025-08-07 22:20:08 +0200
committerGravatar GitHub <noreply@github.com> 2025-08-07 22:20:08 +0200
commit1f8273803f632b40c260721cb3257ae4e2251f5a (patch)
tree4c60bfc77bb815600c4a8fbd505281b57834be4c /app
parent62f32ccadff77594f5b8e3ad24c4c2541ff35885 (diff)
Add more unicity criteria based on title and/or content (#7789)
* Add more unicity criteria based on title and/or content https://github.com/FreshRSS/FreshRSS/discussions/7788 * More
Diffstat (limited to 'app')
-rw-r--r--app/Models/Feed.php6
-rw-r--r--app/i18n/cs/sub.php6
-rw-r--r--app/i18n/de/sub.php6
-rw-r--r--app/i18n/el/sub.php6
-rw-r--r--app/i18n/en-us/sub.php6
-rw-r--r--app/i18n/en/admin.php4
-rw-r--r--app/i18n/en/conf.php4
-rw-r--r--app/i18n/en/gen.php2
-rw-r--r--app/i18n/en/index.php12
-rw-r--r--app/i18n/en/sub.php12
-rw-r--r--app/i18n/es/sub.php6
-rw-r--r--app/i18n/fa/sub.php6
-rw-r--r--app/i18n/fi/sub.php6
-rw-r--r--app/i18n/fr/sub.php6
-rw-r--r--app/i18n/he/sub.php6
-rwxr-xr-xapp/i18n/hu/sub.php8
-rw-r--r--app/i18n/id/sub.php6
-rw-r--r--app/i18n/it/sub.php6
-rw-r--r--app/i18n/ja/sub.php6
-rw-r--r--app/i18n/ko/sub.php6
-rw-r--r--app/i18n/lv/sub.php6
-rw-r--r--app/i18n/nl/sub.php6
-rw-r--r--app/i18n/oc/sub.php6
-rw-r--r--app/i18n/pl/sub.php6
-rw-r--r--app/i18n/pt-br/sub.php6
-rw-r--r--app/i18n/pt-pt/sub.php6
-rw-r--r--app/i18n/ru/sub.php6
-rw-r--r--app/i18n/sk/sub.php6
-rw-r--r--app/i18n/tr/sub.php6
-rw-r--r--app/i18n/zh-cn/sub.php6
-rw-r--r--app/i18n/zh-tw/sub.php6
-rw-r--r--app/views/helpers/feed/update.phtml6
32 files changed, 183 insertions, 15 deletions
diff --git a/app/Models/Feed.php b/app/Models/Feed.php
index 48a1d108f..26f85093e 100644
--- a/app/Models/Feed.php
+++ b/app/Models/Feed.php
@@ -661,6 +661,12 @@ class FreshRSS_Feed extends Minz_Model {
'sha1:link_published' => sha1($item->get_permalink() . $item->get_date('U')),
'sha1:link_published_title' => sha1($item->get_permalink() . $item->get_date('U') . $item->get_title()),
'sha1:link_published_title_content' => sha1($item->get_permalink() . $item->get_date('U') . $item->get_title() . $item->get_content()),
+ 'sha1:title' => sha1($item->get_title() ?? ''),
+ 'sha1:title_published' => sha1($item->get_title() . $item->get_date('U')),
+ 'sha1:title_published_content' => sha1($item->get_title() . $item->get_date('U') . $item->get_content()),
+ 'sha1:content' => sha1($item->get_content() ?? ''),
+ 'sha1:content_published' => sha1($item->get_content() . $item->get_date('U')),
+ 'sha1:published' => sha1((string)($item->get_date('U') ?? '')),
default => $entryId,
};
diff --git a/app/i18n/cs/sub.php b/app/i18n/cs/sub.php
index aee11fb22..260dd8e53 100644
--- a/app/i18n/cs/sub.php
+++ b/app/i18n/cs/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.', // TODO
'id' => 'Standard ID (default)', // TODO
'link' => 'Link', // TODO
+ 'sha1:content' => 'Content', // TODO
+ 'sha1:content_published' => 'Content + Date', // TODO
'sha1:link_published' => 'Link + Date', // TODO
'sha1:link_published_title' => 'Link + Date + Title', // TODO
'sha1:link_published_title_content' => 'Link + Date + Title + Content', // TODO
+ 'sha1:published' => 'Date', // TODO
+ 'sha1:title' => 'Title', // TODO
+ 'sha1:title_published' => 'Title + Date', // TODO
+ 'sha1:title_published_content' => 'Title + Date + Content', // TODO
),
'url' => 'Adresa URL kanálu',
'useragent' => 'Nastavte uživatelský agent pro načítání tohoto kanálu',
diff --git a/app/i18n/de/sub.php b/app/i18n/de/sub.php
index 710c8e1d1..8df861c24 100644
--- a/app/i18n/de/sub.php
+++ b/app/i18n/de/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Relevant für defekte Feeds.<br />⚠️ Änderungen werden Duplikate erzeugen.',
'id' => 'Standard ID (Standardeinstellung)',
'link' => 'Link', // IGNORE
+ 'sha1:content' => 'Inhalt',
+ 'sha1:content_published' => 'Inhalt + Datum',
'sha1:link_published' => 'Link + Datum',
'sha1:link_published_title' => 'Link + Datum + Titel',
'sha1:link_published_title_content' => 'Link + Datum + Titel + Inhalt',
+ 'sha1:published' => 'Datum',
+ 'sha1:title' => 'Titel',
+ 'sha1:title_published' => 'Titel + Datum',
+ 'sha1:title_published_content' => 'Titel + Datum + Inhalt',
),
'url' => 'Feed-URL',
'useragent' => 'Browser User Agent für den Abruf des Feeds verwenden',
diff --git a/app/i18n/el/sub.php b/app/i18n/el/sub.php
index 50be23da9..dfe308c3b 100644
--- a/app/i18n/el/sub.php
+++ b/app/i18n/el/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.', // TODO
'id' => 'Standard ID (default)', // TODO
'link' => 'Link', // TODO
+ 'sha1:content' => 'Content', // TODO
+ 'sha1:content_published' => 'Content + Date', // TODO
'sha1:link_published' => 'Link + Date', // TODO
'sha1:link_published_title' => 'Link + Date + Title', // TODO
'sha1:link_published_title_content' => 'Link + Date + Title + Content', // TODO
+ 'sha1:published' => 'Date', // TODO
+ 'sha1:title' => 'Title', // TODO
+ 'sha1:title_published' => 'Title + Date', // TODO
+ 'sha1:title_published_content' => 'Title + Date + Content', // TODO
),
'url' => 'Feed URL', // TODO
'useragent' => 'Set the user agent for fetching this feed', // TODO
diff --git a/app/i18n/en-us/sub.php b/app/i18n/en-us/sub.php
index dc71cb859..b42e9769b 100644
--- a/app/i18n/en-us/sub.php
+++ b/app/i18n/en-us/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.', // IGNORE
'id' => 'Standard ID (default)', // IGNORE
'link' => 'Link', // IGNORE
+ 'sha1:content' => 'Content', // IGNORE
+ 'sha1:content_published' => 'Content + Date', // IGNORE
'sha1:link_published' => 'Link + Date', // IGNORE
'sha1:link_published_title' => 'Link + Date + Title', // IGNORE
'sha1:link_published_title_content' => 'Link + Date + Title + Content', // IGNORE
+ 'sha1:published' => 'Date', // IGNORE
+ 'sha1:title' => 'Title', // IGNORE
+ 'sha1:title_published' => 'Title + Date', // IGNORE
+ 'sha1:title_published_content' => 'Title + Date + Content', // IGNORE
),
'url' => 'Feed URL', // IGNORE
'useragent' => 'Set the user agent for fetching this feed', // IGNORE
diff --git a/app/i18n/en/admin.php b/app/i18n/en/admin.php
index aa0c110fe..a553a4ac0 100644
--- a/app/i18n/en/admin.php
+++ b/app/i18n/en/admin.php
@@ -116,7 +116,7 @@ return array(
'description' => 'Description',
'disabled' => 'Disabled',
'empty_list' => 'There are no installed extensions',
- 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO
+ 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.',
'enabled' => 'Enabled',
'latest' => 'Installed',
'name' => 'Name',
@@ -148,7 +148,7 @@ return array(
'main_stream' => 'Main stream',
'no_idle' => 'There are no idle feeds!',
'number_entries' => '%d articles',
- 'overview' => 'Overview', // TODO
+ 'overview' => 'Overview',
'percent_of_total' => '% of total',
'repartition' => 'Articles repartition: %s',
'status_favorites' => 'Favourites',
diff --git a/app/i18n/en/conf.php b/app/i18n/en/conf.php
index 1dc75704a..5ec6797d8 100644
--- a/app/i18n/en/conf.php
+++ b/app/i18n/en/conf.php
@@ -149,8 +149,8 @@ return array(
'tags' => 'Display by label',
'type' => 'Type',
),
- 'get_A' => 'Show all feeds, also those shown in their category', // TODO
- 'get_Z' => 'Show all feeds, also archived ones', // TODO
+ 'get_A' => 'Show all feeds, also those shown in their category',
+ 'get_Z' => 'Show all feeds, also archived ones',
'get_all' => 'Display all articles',
'get_all_labels' => 'Display articles with any label',
'get_category' => 'Display “%s” category',
diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php
index 398e7e60b..3b3872561 100644
--- a/app/i18n/en/gen.php
+++ b/app/i18n/en/gen.php
@@ -16,7 +16,7 @@ return array(
'add' => 'Add',
'back_to_rss_feeds' => '← Go back to your RSS feeds',
'cancel' => 'Cancel',
- 'close' => 'Close', // TODO
+ 'close' => 'Close',
'create' => 'Create',
'delete_all_feeds' => 'Delete all feeds',
'delete_errored_feeds' => 'Delete feeds with errors',
diff --git a/app/i18n/en/index.php b/app/i18n/en/index.php
index c5404e6ce..d0b7a95dc 100644
--- a/app/i18n/en/index.php
+++ b/app/i18n/en/index.php
@@ -16,13 +16,13 @@ return array(
'agpl3' => '<a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL 3</a>',
'bug_reports' => array(
'environment_information' => array(
- '_' => 'System information', // TODO
- 'browser' => 'Browser', // TODO
- 'database' => 'Database', // TODO
- 'server_software' => 'Server software', // TODO
+ '_' => 'System information',
+ 'browser' => 'Browser',
+ 'database' => 'Database',
+ 'server_software' => 'Server software',
'version_curl' => 'cURL version',
- 'version_frss' => 'FreshRSS version', // TODO
- 'version_php' => 'PHP version', // TODO
+ 'version_frss' => 'FreshRSS version',
+ 'version_php' => 'PHP version',
),
),
'bugs_reports' => 'Bug reports',
diff --git a/app/i18n/en/sub.php b/app/i18n/en/sub.php
index a392a52af..0122eff29 100644
--- a/app/i18n/en/sub.php
+++ b/app/i18n/en/sub.php
@@ -237,13 +237,19 @@ return array(
'ttl' => 'Do not automatically refresh more often than',
'unicityCriteria' => array(
'_' => 'Article unicity criteria',
- 'forced' => '<span title="Block the unicity criteria, even when the feed has duplicate articles">forced</span>', // TODO
- 'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.', // TODO
+ 'forced' => '<span title="Block the unicity criteria, even when the feed has duplicate articles">forced</span>',
+ 'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.',
'id' => 'Standard ID (default)',
'link' => 'Link',
+ 'sha1:content' => 'Content',
+ 'sha1:content_published' => 'Content + Date',
'sha1:link_published' => 'Link + Date',
'sha1:link_published_title' => 'Link + Date + Title',
'sha1:link_published_title_content' => 'Link + Date + Title + Content',
+ 'sha1:published' => 'Date',
+ 'sha1:title' => 'Title',
+ 'sha1:title_published' => 'Title + Date',
+ 'sha1:title_published_content' => 'Title + Date + Content',
),
'url' => 'Feed URL',
'useragent' => 'Set the user agent for fetching this feed',
@@ -255,7 +261,7 @@ return array(
'import_export' => array(
'export' => array(
'_' => 'Export',
- 'sqlite' => 'Download user database as SQLite', // TODO
+ 'sqlite' => 'Download user database as SQLite',
),
'export_labelled' => 'Export your labelled articles',
'export_opml' => 'Export list of feeds (OPML)',
diff --git a/app/i18n/es/sub.php b/app/i18n/es/sub.php
index d57bb0a9f..65bb1ae92 100644
--- a/app/i18n/es/sub.php
+++ b/app/i18n/es/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Relevante para fuentes inválidas.<br />⚠️ Cambiar la política creara duplicados.',
'id' => 'ID Estándar (por defecto)',
'link' => 'Link', // IGNORE
+ 'sha1:content' => 'Contenido',
+ 'sha1:content_published' => 'Contenido + Fecha',
'sha1:link_published' => 'Link + Fecha',
'sha1:link_published_title' => 'Link + Fecha + Título',
'sha1:link_published_title_content' => 'Link + Fecha + Título + Contenido',
+ 'sha1:published' => 'Fecha',
+ 'sha1:title' => 'Título',
+ 'sha1:title_published' => 'Título + Fecha',
+ 'sha1:title_published_content' => 'Título + Fecha + Contenido',
),
'url' => 'URL de la fuente',
'useragent' => 'Selecciona el agente de usuario por recuperar la fuente',
diff --git a/app/i18n/fa/sub.php b/app/i18n/fa/sub.php
index 2a7e96f6d..c577c6869 100644
--- a/app/i18n/fa/sub.php
+++ b/app/i18n/fa/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.', // TODO
'id' => 'Standard ID (default)', // TODO
'link' => 'Link', // TODO
+ 'sha1:content' => 'Content', // TODO
+ 'sha1:content_published' => 'Content + Date', // TODO
'sha1:link_published' => 'Link + Date', // TODO
'sha1:link_published_title' => 'Link + Date + Title', // TODO
'sha1:link_published_title_content' => 'Link + Date + Title + Content', // TODO
+ 'sha1:published' => 'Date', // TODO
+ 'sha1:title' => 'Title', // TODO
+ 'sha1:title_published' => 'Title + Date', // TODO
+ 'sha1:title_published_content' => 'Title + Date + Content', // TODO
),
'url' => ' URL فید',
'useragent' => ' عامل کاربر را برای واکشی این فید تنظیم کنید',
diff --git a/app/i18n/fi/sub.php b/app/i18n/fi/sub.php
index 6e852e10f..39f5a69d2 100644
--- a/app/i18n/fi/sub.php
+++ b/app/i18n/fi/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Olennainen virheellisille syötteille.<br />⚠️ Käytännön muuttaminen luo kaksoiskappaleita.',
'id' => 'Perustunnus (oletus)',
'link' => 'Linkki',
+ 'sha1:content' => 'Sisältö',
+ 'sha1:content_published' => 'Sisältö + päiväys',
'sha1:link_published' => 'Linkki + päiväys',
'sha1:link_published_title' => 'Linkki + päiväys + otsikko',
'sha1:link_published_title_content' => 'Linkki + päiväys + otsikko + sisältö',
+ 'sha1:published' => 'Päiväys',
+ 'sha1:title' => 'Otsikko',
+ 'sha1:title_published' => 'Otsikko + päiväys',
+ 'sha1:title_published_content' => 'Otsikko + päiväys + sisältö',
),
'url' => 'Syötteen URL-osoite',
'useragent' => 'Määritä syötteen noutamiseen käytettävä käyttäjäagentti',
diff --git a/app/i18n/fr/sub.php b/app/i18n/fr/sub.php
index 19b1348e0..226307dda 100644
--- a/app/i18n/fr/sub.php
+++ b/app/i18n/fr/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Utile pour les flux invalides.<br />⚠️ Changer le critère peut créer des doublons.',
'id' => 'ID standard (défaut)',
'link' => 'Lien',
+ 'sha1:content' => 'Contenu',
+ 'sha1:content_published' => 'Contenu + Date',
'sha1:link_published' => 'Lien + Date',
'sha1:link_published_title' => 'Lien + Date + Titre',
'sha1:link_published_title_content' => 'Lien + Date + Titre + Contenu',
+ 'sha1:published' => 'Date', // IGNORE
+ 'sha1:title' => 'Titre',
+ 'sha1:title_published' => 'Titre + Date',
+ 'sha1:title_published_content' => 'Titre + Date + Contenu',
),
'url' => 'URL du flux',
'useragent' => 'Sélectionner l’agent utilisateur pour télécharger ce flux',
diff --git a/app/i18n/he/sub.php b/app/i18n/he/sub.php
index 076945003..0b7cd5459 100644
--- a/app/i18n/he/sub.php
+++ b/app/i18n/he/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.', // TODO
'id' => 'Standard ID (default)', // TODO
'link' => 'Link', // TODO
+ 'sha1:content' => 'Content', // TODO
+ 'sha1:content_published' => 'Content + Date', // TODO
'sha1:link_published' => 'Link + Date', // TODO
'sha1:link_published_title' => 'Link + Date + Title', // TODO
'sha1:link_published_title_content' => 'Link + Date + Title + Content', // TODO
+ 'sha1:published' => 'Date', // TODO
+ 'sha1:title' => 'Title', // TODO
+ 'sha1:title_published' => 'Title + Date', // TODO
+ 'sha1:title_published_content' => 'Title + Date + Content', // TODO
),
'url' => 'הזנה URL',
'useragent' => 'Set the user agent for fetching this feed', // TODO
diff --git a/app/i18n/hu/sub.php b/app/i18n/hu/sub.php
index d4f21a813..0259da2a5 100755
--- a/app/i18n/hu/sub.php
+++ b/app/i18n/hu/sub.php
@@ -240,10 +240,16 @@ return array(
'forced' => '<span title="Blokkolja az egységességi feltételeket, még akkor is, ha a hírcsatorna ismétlődő cikkeket tartalmaz">kényszerít</span>',
'help' => 'Érvénytelen hírforrásokra vonatkozik.<br />⚠️ A házirend módosítása duplikációkat fog létrehozni.',
'id' => 'Standard ID (alapértelmezés)',
- 'link' => 'Link', // TODO
+ 'link' => 'Link', // IGNORE
+ 'sha1:content' => 'Tartalom',
+ 'sha1:content_published' => 'Tartalom + Dátum',
'sha1:link_published' => 'Link + Dátum',
'sha1:link_published_title' => 'Link + Dátum + Cím',
'sha1:link_published_title_content' => 'Link + Dátum + Cím + Tartalom',
+ 'sha1:published' => 'Dátum',
+ 'sha1:title' => 'Cím',
+ 'sha1:title_published' => 'Cím + Dátum',
+ 'sha1:title_published_content' => 'Cím + Dátum + Tartalom',
),
'url' => 'Hírforrás URL',
'useragent' => 'Állíts be egy user agent-et ehhez a hírforráshoz',
diff --git a/app/i18n/id/sub.php b/app/i18n/id/sub.php
index b5f667e4b..85ab3572e 100644
--- a/app/i18n/id/sub.php
+++ b/app/i18n/id/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Relevan untuk umpan yang tidak valid.<br />⚠️ Mengubah ini akan membuat artikel duplikat.',
'id' => 'ID standar (baku)',
'link' => 'Tautan',
+ 'sha1:content' => 'Konten',
+ 'sha1:content_published' => 'Konten + Tanggal',
'sha1:link_published' => 'Tautan + Tanggal',
'sha1:link_published_title' => 'Tautan + Tanggal + Judul',
'sha1:link_published_title_content' => 'Tautan + Tanggal + Judul + Konten',
+ 'sha1:published' => 'Tanggal',
+ 'sha1:title' => 'Judul',
+ 'sha1:title_published' => 'Judul + Tanggal',
+ 'sha1:title_published_content' => 'Judul + Tanggal + Konten',
),
'url' => 'URL umpan',
'useragent' => 'Atur UA (user agent) untuk mengambil umpan ini',
diff --git a/app/i18n/it/sub.php b/app/i18n/it/sub.php
index 3d4b29c40..84d9b3347 100644
--- a/app/i18n/it/sub.php
+++ b/app/i18n/it/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Rilevante per i feed non validi.<br />⚠️ La modifica del criterio creerà dei duplicati.',
'id' => 'Standard ID (default)', // IGNORE
'link' => 'Link', // IGNORE
+ 'sha1:content' => 'Contenuto',
+ 'sha1:content_published' => 'Contenuto + Data',
'sha1:link_published' => 'Link + Data',
'sha1:link_published_title' => 'Link + Data + Titolo',
'sha1:link_published_title_content' => 'Link + Data + Titolo + Contenuto',
+ 'sha1:published' => 'Data',
+ 'sha1:title' => 'Titolo',
+ 'sha1:title_published' => 'Titolo + Data',
+ 'sha1:title_published_content' => 'Titolo + Data + Contenuto',
),
'url' => 'URL del feed',
'useragent' => 'Imposta lo user agent per recuperare questo feed',
diff --git a/app/i18n/ja/sub.php b/app/i18n/ja/sub.php
index cd9ff501e..d8303119a 100644
--- a/app/i18n/ja/sub.php
+++ b/app/i18n/ja/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => '不正なフィードに対処します。<br />⚠️ ポリシーを変更すると重複が発生します。',
'id' => '標準的なID (デフォルト)',
'link' => 'リンク',
+ 'sha1:content' => 'Content', // TODO
+ 'sha1:content_published' => 'Content + Date', // TODO
'sha1:link_published' => 'リンク + 日付',
'sha1:link_published_title' => 'リンク + 日付 + タイトル',
'sha1:link_published_title_content' => 'リンク + 日付 + タイトル + コンテンツ',
+ 'sha1:published' => 'Date', // TODO
+ 'sha1:title' => 'Title', // TODO
+ 'sha1:title_published' => 'Title + Date', // TODO
+ 'sha1:title_published_content' => 'Title + Date + Content', // TODO
),
'url' => 'フィードのURL',
'useragent' => 'フィードを取得するときのユーザーエージェント',
diff --git a/app/i18n/ko/sub.php b/app/i18n/ko/sub.php
index 41d06dc19..8208e4a65 100644
--- a/app/i18n/ko/sub.php
+++ b/app/i18n/ko/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.', // TODO
'id' => 'Standard ID (default)', // TODO
'link' => 'Link', // TODO
+ 'sha1:content' => 'Content', // TODO
+ 'sha1:content_published' => 'Content + Date', // TODO
'sha1:link_published' => 'Link + Date', // TODO
'sha1:link_published_title' => 'Link + Date + Title', // TODO
'sha1:link_published_title_content' => 'Link + Date + Title + Content', // TODO
+ 'sha1:published' => 'Date', // TODO
+ 'sha1:title' => 'Title', // TODO
+ 'sha1:title_published' => 'Title + Date', // TODO
+ 'sha1:title_published_content' => 'Title + Date + Content', // TODO
),
'url' => '피드 URL',
'useragent' => '이 피드를 가져올 때 사용할 유저 에이전트 설정',
diff --git a/app/i18n/lv/sub.php b/app/i18n/lv/sub.php
index f597f5747..428240a84 100644
--- a/app/i18n/lv/sub.php
+++ b/app/i18n/lv/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.', // TODO
'id' => 'Standard ID (default)', // TODO
'link' => 'Link', // TODO
+ 'sha1:content' => 'Content', // TODO
+ 'sha1:content_published' => 'Content + Date', // TODO
'sha1:link_published' => 'Link + Date', // TODO
'sha1:link_published_title' => 'Link + Date + Title', // TODO
'sha1:link_published_title_content' => 'Link + Date + Title + Content', // TODO
+ 'sha1:published' => 'Date', // TODO
+ 'sha1:title' => 'Title', // TODO
+ 'sha1:title_published' => 'Title + Date', // TODO
+ 'sha1:title_published_content' => 'Title + Date + Content', // TODO
),
'url' => 'Barotnes URL',
'useragent' => 'Lietotāja aģenta iestatīšana šīs barotnes iegūšanai',
diff --git a/app/i18n/nl/sub.php b/app/i18n/nl/sub.php
index 968bef419..ca4c52ac4 100644
--- a/app/i18n/nl/sub.php
+++ b/app/i18n/nl/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.', // TODO
'id' => 'Standard ID (default)', // TODO
'link' => 'Link', // TODO
+ 'sha1:content' => 'Content', // TODO
+ 'sha1:content_published' => 'Content + Date', // TODO
'sha1:link_published' => 'Link + Date', // TODO
'sha1:link_published_title' => 'Link + Date + Title', // TODO
'sha1:link_published_title_content' => 'Link + Date + Title + Content', // TODO
+ 'sha1:published' => 'Date', // TODO
+ 'sha1:title' => 'Title', // TODO
+ 'sha1:title_published' => 'Title + Date', // TODO
+ 'sha1:title_published_content' => 'Title + Date + Content', // TODO
),
'url' => 'Feed-url',
'useragent' => 'Stelt de useragent in om deze feed op te halen',
diff --git a/app/i18n/oc/sub.php b/app/i18n/oc/sub.php
index c342fe9e7..f8082d6cb 100644
--- a/app/i18n/oc/sub.php
+++ b/app/i18n/oc/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.', // TODO
'id' => 'Standard ID (default)', // TODO
'link' => 'Link', // TODO
+ 'sha1:content' => 'Content', // TODO
+ 'sha1:content_published' => 'Content + Date', // TODO
'sha1:link_published' => 'Link + Date', // TODO
'sha1:link_published_title' => 'Link + Date + Title', // TODO
'sha1:link_published_title_content' => 'Link + Date + Title + Content', // TODO
+ 'sha1:published' => 'Date', // TODO
+ 'sha1:title' => 'Title', // TODO
+ 'sha1:title_published' => 'Title + Date', // TODO
+ 'sha1:title_published_content' => 'Title + Date + Content', // TODO
),
'url' => 'Flux URL',
'useragent' => 'Definir un user agent per recuperar aqueste flux',
diff --git a/app/i18n/pl/sub.php b/app/i18n/pl/sub.php
index b334265bc..18b6b63de 100644
--- a/app/i18n/pl/sub.php
+++ b/app/i18n/pl/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Istotne dla niezgodnych kanałów.<br />⚠️ Wprowadzenie zmian w polityce utworzy duplikaty.',
'id' => 'standardowe ID (domyślne)',
'link' => 'odnośnik',
+ 'sha1:content' => 'zawartość',
+ 'sha1:content_published' => 'zawartość + data',
'sha1:link_published' => 'odnośnik + data',
'sha1:link_published_title' => 'odnośnik + data + tytuł',
'sha1:link_published_title_content' => 'odnośnik + data + tytuł + zawartość',
+ 'sha1:published' => 'data',
+ 'sha1:title' => 'tytuł',
+ 'sha1:title_published' => 'tytuł + data',
+ 'sha1:title_published_content' => 'tytuł + data + zawartość',
),
'url' => 'Adres kanału',
'useragent' => 'Ciąg user agent używany podczas pobierania kanału',
diff --git a/app/i18n/pt-br/sub.php b/app/i18n/pt-br/sub.php
index f26f8afc4..1d694baed 100644
--- a/app/i18n/pt-br/sub.php
+++ b/app/i18n/pt-br/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.', // TODO
'id' => 'Standard ID (default)', // TODO
'link' => 'Link', // TODO
+ 'sha1:content' => 'Content', // TODO
+ 'sha1:content_published' => 'Content + Date', // TODO
'sha1:link_published' => 'Link + Date', // TODO
'sha1:link_published_title' => 'Link + Date + Title', // TODO
'sha1:link_published_title_content' => 'Link + Date + Title + Content', // TODO
+ 'sha1:published' => 'Date', // TODO
+ 'sha1:title' => 'Title', // TODO
+ 'sha1:title_published' => 'Title + Date', // TODO
+ 'sha1:title_published_content' => 'Title + Date + Content', // TODO
),
'url' => 'URL do Feed',
'useragent' => 'Defina um usuário para buscar este feed',
diff --git a/app/i18n/pt-pt/sub.php b/app/i18n/pt-pt/sub.php
index 12c5c2b5b..7cddeb767 100644
--- a/app/i18n/pt-pt/sub.php
+++ b/app/i18n/pt-pt/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.', // TODO
'id' => 'Standard ID (default)', // TODO
'link' => 'Link', // TODO
+ 'sha1:content' => 'Content', // TODO
+ 'sha1:content_published' => 'Content + Date', // TODO
'sha1:link_published' => 'Link + Date', // TODO
'sha1:link_published_title' => 'Link + Date + Title', // TODO
'sha1:link_published_title_content' => 'Link + Date + Title + Content', // TODO
+ 'sha1:published' => 'Date', // TODO
+ 'sha1:title' => 'Title', // TODO
+ 'sha1:title_published' => 'Title + Date', // TODO
+ 'sha1:title_published_content' => 'Title + Date + Content', // TODO
),
'url' => 'URL do Feed',
'useragent' => 'Defina um utilizador para pesquisar este feed',
diff --git a/app/i18n/ru/sub.php b/app/i18n/ru/sub.php
index 3b5ca6ca0..edbc219b2 100644
--- a/app/i18n/ru/sub.php
+++ b/app/i18n/ru/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.', // TODO
'id' => 'Standard ID (default)', // TODO
'link' => 'Link', // TODO
+ 'sha1:content' => 'Content', // TODO
+ 'sha1:content_published' => 'Content + Date', // TODO
'sha1:link_published' => 'Link + Date', // TODO
'sha1:link_published_title' => 'Link + Date + Title', // TODO
'sha1:link_published_title_content' => 'Link + Date + Title + Content', // TODO
+ 'sha1:published' => 'Date', // TODO
+ 'sha1:title' => 'Title', // TODO
+ 'sha1:title_published' => 'Title + Date', // TODO
+ 'sha1:title_published_content' => 'Title + Date + Content', // TODO
),
'url' => 'URL ленты',
'useragent' => 'Указать юзерагент для извлечения лент',
diff --git a/app/i18n/sk/sub.php b/app/i18n/sk/sub.php
index b603e8d9e..8d6472f5d 100644
--- a/app/i18n/sk/sub.php
+++ b/app/i18n/sk/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.', // TODO
'id' => 'Standard ID (default)', // TODO
'link' => 'Link', // TODO
+ 'sha1:content' => 'Content', // TODO
+ 'sha1:content_published' => 'Content + Date', // TODO
'sha1:link_published' => 'Link + Date', // TODO
'sha1:link_published_title' => 'Link + Date + Title', // TODO
'sha1:link_published_title_content' => 'Link + Date + Title + Content', // TODO
+ 'sha1:published' => 'Date', // TODO
+ 'sha1:title' => 'Title', // TODO
+ 'sha1:title_published' => 'Title + Date', // TODO
+ 'sha1:title_published_content' => 'Title + Date + Content', // TODO
),
'url' => 'Odkaz kanála',
'useragent' => 'Nastaviť používateľského agenta na sťahovanie tohto kanála',
diff --git a/app/i18n/tr/sub.php b/app/i18n/tr/sub.php
index 5c92c8e8c..d47ad49b0 100644
--- a/app/i18n/tr/sub.php
+++ b/app/i18n/tr/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Geçersiz beslemeler için geçerlidir.<br />⚠️ Politikayı değiştirmek kopyalar oluşturur.',
'id' => 'Standart Kimlik (varsayılan)',
'link' => 'Bağlantı',
+ 'sha1:content' => 'İçerik',
+ 'sha1:content_published' => 'İçerik + Tarih',
'sha1:link_published' => 'Bağlantı + Tarih',
'sha1:link_published_title' => 'Bağlantı + Tarih + Başlık',
'sha1:link_published_title_content' => 'Bağlantı + Tarih + Başlık + İçerik',
+ 'sha1:published' => 'Tarih',
+ 'sha1:title' => 'Başlık',
+ 'sha1:title_published' => 'Başlık + Tarih',
+ 'sha1:title_published_content' => 'Başlık + Tarih + İçerik',
),
'url' => 'Besleme URL’si',
'useragent' => 'Bu beslemeyi almak için kullanıcı aracısını ayarlayın',
diff --git a/app/i18n/zh-cn/sub.php b/app/i18n/zh-cn/sub.php
index 07af113a9..ecdf964cc 100644
--- a/app/i18n/zh-cn/sub.php
+++ b/app/i18n/zh-cn/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.', // TODO
'id' => 'Standard ID (default)', // TODO
'link' => 'Link', // TODO
+ 'sha1:content' => 'Content', // TODO
+ 'sha1:content_published' => 'Content + Date', // TODO
'sha1:link_published' => 'Link + Date', // TODO
'sha1:link_published_title' => 'Link + Date + Title', // TODO
'sha1:link_published_title_content' => 'Link + Date + Title + Content', // TODO
+ 'sha1:published' => 'Date', // TODO
+ 'sha1:title' => 'Title', // TODO
+ 'sha1:title_published' => 'Title + Date', // TODO
+ 'sha1:title_published_content' => 'Title + Date + Content', // TODO
),
'url' => '源地址',
'useragent' => '设置用于获取此源的 User Agent',
diff --git a/app/i18n/zh-tw/sub.php b/app/i18n/zh-tw/sub.php
index d0ff30f94..b1ccf1c13 100644
--- a/app/i18n/zh-tw/sub.php
+++ b/app/i18n/zh-tw/sub.php
@@ -241,9 +241,15 @@ return array(
'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.', // TODO
'id' => 'Standard ID (default)', // TODO
'link' => 'Link', // TODO
+ 'sha1:content' => 'Content', // TODO
+ 'sha1:content_published' => 'Content + Date', // TODO
'sha1:link_published' => 'Link + Date', // TODO
'sha1:link_published_title' => 'Link + Date + Title', // TODO
'sha1:link_published_title_content' => 'Link + Date + Title + Content', // TODO
+ 'sha1:published' => 'Date', // TODO
+ 'sha1:title' => 'Title', // TODO
+ 'sha1:title_published' => 'Title + Date', // TODO
+ 'sha1:title_published_content' => 'Title + Date + Content', // TODO
),
'url' => '源地址',
'useragent' => '設置用於獲取此源的 User Agent',
diff --git a/app/views/helpers/feed/update.phtml b/app/views/helpers/feed/update.phtml
index f6c88d372..430f8608b 100644
--- a/app/views/helpers/feed/update.phtml
+++ b/app/views/helpers/feed/update.phtml
@@ -143,6 +143,12 @@
<option value="sha1:link_published" <?= $unicityCriteria === 'sha1:link_published' ? 'selected="selected"' : '' ?>><?= _t('sub.feed.unicityCriteria.sha1:link_published') ?></option>
<option value="sha1:link_published_title" <?= $unicityCriteria === 'sha1:link_published_title' ? 'selected="selected"' : '' ?>><?= _t('sub.feed.unicityCriteria.sha1:link_published_title') ?></option>
<option value="sha1:link_published_title_content" <?= $unicityCriteria === 'sha1:link_published_title_content' ? 'selected="selected"' : '' ?>><?= _t('sub.feed.unicityCriteria.sha1:link_published_title_content') ?></option>
+ <option value="sha1:title" <?= $unicityCriteria === 'sha1:title' ? 'selected="selected"' : '' ?>><?= _t('sub.feed.unicityCriteria.sha1:title') ?></option>
+ <option value="sha1:title_published" <?= $unicityCriteria === 'sha1:title_published' ? 'selected="selected"' : '' ?>><?= _t('sub.feed.unicityCriteria.sha1:title_published') ?></option>
+ <option value="sha1:title_published_content" <?= $unicityCriteria === 'sha1:title_published_content' ? 'selected="selected"' : '' ?>><?= _t('sub.feed.unicityCriteria.sha1:title_published_content') ?></option>
+ <option value="sha1:content" <?= $unicityCriteria === 'sha1:content' ? 'selected="selected"' : '' ?>><?= _t('sub.feed.unicityCriteria.sha1:content') ?></option>
+ <option value="sha1:content_published" <?= $unicityCriteria === 'sha1:content_published' ? 'selected="selected"' : '' ?>><?= _t('sub.feed.unicityCriteria.sha1:content_published') ?></option>
+ <option value="sha1:published" <?= $unicityCriteria === 'sha1:published' ? 'selected="selected"' : '' ?>><?= _t('sub.feed.unicityCriteria.sha1:published') ?></option>
</select>
<label for="unicityCriteriaForced" class="inline">
<input type="checkbox" name="unicityCriteriaForced" id="unicityCriteriaForced" value="1"<?= $this->feed->attributeBoolean('unicityCriteriaForced') ? ' checked="checked"' : '' ?> />