Files
FreshRSS/app/i18n/it/conf.php
polybjorn e416117591 Disable unread counter in tab title and favicon (refresh of #6590) (#8728)
Closes FreshRSS/FreshRSS#6522.

Refresh of FreshRSS/FreshRSS#6590 by @sgzmd, which has been stalled with merge
conflicts since 2024. All original commits are preserved as-is in the history
(authorship intact); this PR adds a merge with current `edge` plus minor fixes.

## Summary

Adds a user setting `show_title_unread` (default `true`, so existing behavior
is preserved) that hides the unread article counter from both the tab title
and the favicon overlay. A single toggle controls both, matching the request
in #6522.

## Screenshots

Toggle in display settings:

<img width="320" height="127" alt="Display settings with new toggle" src="https://github.com/user-attachments/assets/fc78f825-161d-4b47-9b85-08e39554a4b1" />

Tab title and favicon when **enabled** (current behavior):

<img width="253" height="42" alt="Tab title and favicon with unread counter" src="https://github.com/user-attachments/assets/57387600-72e0-4b22-b059-04b5bfea673a" />

Tab title and favicon when **disabled** (new behavior):

<img width="254" height="40" alt="Tab title and favicon without unread counter" src="https://github.com/user-attachments/assets/93ac7997-dd4e-49bc-ab4a-74e4f0d2db1b" />

## Changes on top of #6590

- Resolved merge conflicts with current `edge` (controllers, model, view,
  `config.default.php`, ~25 i18n files, plus the `zh-tw` -> `zh-TW` rename).
- Replaced Czech text mistakenly placed in `de/conf.php` with an English
  `// TODO` marker so a German speaker can translate later.
- Renamed JS context key `show_unread_favicon` -> `show_title_unread` to
  match the backend property and avoid a confusing dual-name for one setting.
- Removed an unused duplicate of `show_title_unread` from `config.default.php`
  (the setting is read via `userConf()`, never `systemConf()`).
- Gated the dynamic title rewrite in `incUnreadsFeed` (`p/scripts/main.js`)
  on the setting. Without this, marking an article read while the setting
  was off would re-add the `(N)` prefix to the tab title.
- Escaped a stray apostrophe in the Occitan translation that broke parsing.
- `make fix-all` re-sorted i18n keys and added `// TODO` placeholders for
  `fi`, `pt-PT`, `uk` (untranslated by the original PR).

## Test plan

- [x] `make test-all` passes (620/620 PHPUnit, phpstan, phpcs, eslint,
      stylelint, markdownlint clean; `bin/typos` failed locally with a binary
      arch mismatch on macOS arm64 - unrelated to this change).
- [x] Manually tested on a real instance: default behavior unchanged;
      toggling the setting hides both the tab title `(N) ` prefix and the
      favicon overlay; toggling back restores both; marking articles read
      while the setting is off does not bring the counter back; opening and
      closing an article preserves the user's choice.

* Make showing the number of unread items in the title configurable.

* Proposed approach to passing show_unread_favicon setting down to client-side code

* Fixes and refactoring

* Updating default config for the user.

When user's config wasn't initialised we are copying it from `config-user.default.php` - if `show_title_unread` is not there, it is assumed to be false, whereas in `config.default.php` it's true by default. This results in inconsistency until user changes the field for the first time in Config->Display.

* Adding translations.

* fix: gate JS title rewrite + drop dead system config entry

The original PR added show_title_unread to both config-user.default.php
(read by userConf, the right place) and config.default.php (read by
systemConf, never used here). Drop the system-level entry.

Also: incUnreadsFeed dynamically rewrites document.title when articles
are marked read/unread. That code path was not gated by the setting, so
toggling the setting off and then marking an article read would re-add
the (N) prefix to the tab title. Skip the document.title / prevTitle
write when context.show_title_unread is false.

* fix: drop README pollution from local make fix-all

`make fix-all` regenerated the README translation tables on macOS, where the
case-insensitive filesystem and an untracked local `app/i18n/nb/` directory
caused the generator to emit `zh-tw` (lowercase) and an `nb` entry. Reset
both README files to upstream/edge so CI can regenerate them cleanly.

* fix: restore zh-TW/conf.php from edge (case-insensitive FS damage)

The macOS case-insensitive filesystem caused the merge to overwrite
upstream/edge's properly-translated zh-TW/conf.php with the older
zh-tw/conf.php content from the PR side, regressing translation
coverage from 94% to 71%. Reset the file to edge's content and re-add
the show_title_unread Traditional Chinese translation.

---------

Co-authored-by: sgzmd <sigizmund@gmail.com>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
Co-authored-by: Bjørn A. Andersen <polybjorn@users.noreply.github.com>
2026-04-29 21:35:31 +02:00

378 lines
17 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/******************************************************************************
* Each entry of that file can be associated with a comment to indicate its *
* state. When there is no comment, it means the entry is fully translated. *
* The recognized comments are (comment matching is case-insensitive): *
* + TODO: the entry has never been translated. *
* + DIRTY: the entry has been translated but needs to be updated. *
* + IGNORE: the entry does not need to be translated. *
* When a comment is not recognized, it is discarded. *
******************************************************************************/
return array(
'archiving' => array(
'_' => 'Archiviazione',
'exception' => 'Eccezioni alleliminazione automatica',
'help' => 'Altre opzioni sono disponibili nelle impostazioni dei singoli feed',
'keep_favourites' => 'Non eliminare mai i preferiti',
'keep_labels' => 'Non eliminare mai le etichette',
'keep_max' => 'Numero massimo di articoli da mantenere per feed',
'keep_min_by_feed' => 'Numero minimo di articoli da mantenere per feed',
'keep_period' => 'Massima durata degli articoli da mantenere',
'keep_unreads' => 'Non eliminare mai gli articoli non letti',
'maintenance' => 'Manutenzione',
'optimize' => 'Ottimizza database',
'optimize_help' => 'Da fare occasionalmente per ridurre le dimensioni del database',
'policy' => 'Politiche di eliminazione automatica',
'policy_warning' => 'Se non viene selezionata una politica di eliminazione automatica, ogni articolo sarà mantenuto.',
'purge_now' => 'Cancella ora',
'title' => 'Archiviazione',
'ttl' => 'Non effettuare aggiornamenti per più di',
),
'display' => array(
'_' => 'Visualizzazione',
'darkMode' => array(
'_' => 'Modalità scura automatica',
'auto' => 'Auto', // IGNORE
'help' => 'Solo per i temi compatibili',
'no' => 'No', // IGNORE
),
'icon' => array(
'bottom_line' => 'Barra in fondo',
'display_authors' => 'Autori',
'entry' => 'Icone degli articoli',
'publication_date' => 'Data di pubblicazione',
'related_tags' => 'Tags correlati',
'sharing' => 'Condivisione',
'summary' => 'Sommario',
'top_line' => 'Barra in alto',
),
'language' => 'Lingua',
'notif_html5' => array(
'seconds' => 'secondi (0 significa nessun timeout)',
'timeout' => 'Notifica timeout HTML5',
),
'show_nav_buttons' => 'Mostra i pulsanti di navigazione',
'show_title_unread' => 'Mostra il numero di articoli non letti nel titolo',
'sidebar_hidden_by_default' => 'Nascondi la barra laterale di default',
'theme' => array(
'_' => 'Tema',
'deprecated' => array(
'_' => 'Deprecato',
'description' => 'Questo tema non è più supportato e non sarà più disponibile in un <a href="https://freshrss.github.io/FreshRSS/en/users/05_Configuration.html#theme" target="_blank">futuro rilascio di FreshRSS</a>',
),
),
'theme_not_available' => 'Il tema “%s” non è più disponibile. Si prega di selezionarne un altro.',
'thumbnail' => array(
'label' => 'Miniatura',
'landscape' => 'Panoramica',
'none' => 'Nessuna',
'portrait' => 'Ritratto',
'square' => 'Squadrata',
),
'timezone' => 'Fuso orario',
'title' => 'Visualizzazione',
'website' => array(
'full' => 'Icona e nome',
'icon' => 'Solo icona',
'label' => 'Sito web',
'name' => 'Solo nome',
'none' => 'Nessuno',
),
'width' => array(
'content' => 'Larghezza contenuto',
'large' => 'Largo',
'medium' => 'Medio',
'no_limit' => 'Nessun limite',
'thin' => 'Stretto',
),
),
'logs' => array(
'loglist' => array(
'level' => 'Livello di log',
'message' => 'Messaggio di log',
'timestamp' => 'Timestamp', // IGNORE
),
'pagination' => array(
'first' => 'Prima',
'last' => 'Ultima',
'next' => 'Successiva',
'previous' => 'Precedente',
),
),
'mark_read_button' => array(
'_' => 'pulsante “segna tutto come letto”',
'big' => 'Grande',
'none' => 'Nessuno',
'small' => 'Piccolo',
),
'notification' => array(
'html5_enable_notif' => 'Abilita notifiche',
),
'notification_timeout' => array(
'bad' => array(
'label' => 'Mostra banner con le segnalazioni',
'seconds' => 'secondi (almeno 1)',
),
'good' => array(
'label' => 'Mostra banner di accettazione',
'seconds' => 'secondi (0 significa nascosto)',
),
),
'privacy' => array(
'_' => 'Privacy', // IGNORE
'retrieve_extension_list' => 'Recupero dellelenco delle estensioni',
'send_referrer_allowlist' => 'Sites allowed to see your server address (%s)', // TODO
),
'profile' => array(
'_' => 'Gestione profili',
'api' => array(
'_' => 'Gestione API',
'api_not_set' => 'Password API non impostata',
'api_set' => 'Password API impostata',
'check_link' => 'Verificare lo stato dellAPI tramite: <kbd><a href="../api/" target="_blank">%s</a></kbd>',
'disabled' => 'Laccesso allAPI è disabilitato.',
'documentation_link' => 'Vedi la <a href="https://freshrss.github.io/FreshRSS/en/users/06_Mobile_access.html#access-via-mobile-app" target="_blank">documentazione e lelenco delle applicazioni</a>',
'help' => 'leggi la <a href="http://freshrss.github.io/FreshRSS/en/users/06_Mobile_access.html#access-via-mobile-app" target=_blank>documentazione</a>',
),
'change_password' => 'Modifica password',
'confirm_new_password' => 'Conferma nuova password',
'current_password' => 'Password corrente<br /><small>(per il metodo di login tramite Web-form)</small>',
'delete' => array(
'_' => 'Cancellazione account',
'warn' => 'Il tuo account e tutti i dati associati saranno cancellati.',
),
'email' => 'Indirizzo email',
'new_password' => 'Nuova password',
'password_api' => 'Password API<br /><small>(e.g., per applicazioni mobili)</small>',
'password_format' => 'Almeno 7 caratteri',
'title' => 'Profilo',
),
'query' => array(
'_' => 'Ricerche personali',
'create' => 'Create new user query', // TODO
'deprecated' => 'Questa query non è più valida. La categoria o il feed di riferimento non stati cancellati.',
'description' => 'Descrizione',
'filter' => array(
'_' => 'Filtro applicato:',
'categories' => 'Mostra per categoria',
'feeds' => 'Mostra per feed',
'order' => 'Ordina per data',
'publish_labels_instead_of_tags' => 'Sostituisce i <i>tag del feed</i> con le <i>etichette dellutente</i> nel feed RSS condiviso',
'search' => 'Espressione',
'shareOpml' => 'Abilita la condivisione di OPML di categorie e feed corrispondenti',
'shareRss' => 'Abilita la condivisione di HTML &amp; RSS',
'state' => 'Stato',
'tags' => 'Tag',
'type' => 'Tipo',
),
'get_A' => 'Mostra tutti i feed, anche quelli mostrati nella loro categoria',
'get_Z' => 'Mostra tutti i feed, anche quelli archiviati',
'get_all' => 'Mostra tutti gli articoli',
'get_all_labels' => 'Mostra gli articoli con qualsiasi etichetta',
'get_category' => 'Mostra la categoria “%s” ',
'get_favorite' => 'Mostra articoli preferiti',
'get_feed' => 'Mostra feed “%s” ',
'get_important' => 'Mostra articoli dai feed importanti',
'get_label' => 'Mostra articoli con letichetta “%s”',
'help' => 'Vedi la <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentazione per le query utente e ricondivisioine tramite HTML / RSS / OPML</a>.',
'image_url' => 'URL immagine',
'name' => 'Nome',
'no_filter' => 'Nessun filtro',
'no_queries' => array(
'_' => 'Nessuna ricerca personale è stata ancora inserita',
'help' => 'Leggi la <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentazione</a>',
),
'number' => 'Ricerca n°%d',
'order_asc' => 'Mostra prima gli articoli più vecchi',
'order_desc' => 'Mostra prima gli articoli più nuovi',
'search' => 'Cerca per “%s”',
'share' => array(
'_' => 'Condividi questa query tramite un link',
'disabled' => array(
'_' => 'disabilitato',
'title' => 'Condivisione',
),
'greader' => 'Link condivisibile al JSON GReader',
'help' => 'Fornisci questo link se vuoi condividere questa query con altre persone',
'html' => 'Link condivisibile alla pagina HTML',
'opml' => 'Link condivisibile alla lista OPML dei feed',
'rss' => 'Link condivisibile al feed RSS',
),
'state_0' => 'Mostra tutti gli articoli',
'state_1' => 'Mostra gli articoli letti',
'state_2' => 'Mostra gli articoli non letti',
'state_3' => 'Mostra tutti gli articoli',
'state_4' => 'Mostra gli articoli preferiti',
'state_5' => 'Mostra gli articoli preferiti letti',
'state_6' => 'Mostra gli articoli preferiti non letti',
'state_7' => 'Mostra gli articoli preferiti',
'state_8' => 'Non mostrare gli articoli preferiti',
'state_9' => 'Mostra gli articoli letti non preferiti',
'state_10' => 'Mostra gli articoli non letti e non preferiti',
'state_11' => 'Non mostrare gli articoli preferiti',
'state_12' => 'Mostra tutti gli articoli',
'state_13' => 'Mostra gli articoli letti',
'state_14' => 'Mostra gli articoli non letti',
'state_15' => 'Mostra tutti gli articoli',
'title' => 'Ricerche personali',
),
'reading' => array(
'_' => 'Lettura',
'after_onread' => 'Dopo “segna tutto come letto”,',
'always_show_favorites' => 'Mostra tutti gli articoli nei preferiti di default',
'apply_to_individual_feed' => 'Si applica ai feed singolarmente',
'article' => array(
'authors_date' => array(
'_' => 'Autori e data',
'both' => 'Nellintestazione e nel fondo pagina',
'footer' => 'Nel fondo pagina',
'header' => 'Nellintestazione',
'none' => 'Nessuno',
),
'feed_name' => array(
'above_title' => 'Sopra il titolo/tag',
'none' => 'Nessuno',
'with_authors' => 'Nella riga degli autori e data',
),
'feed_title' => 'Titolo del feed',
'icons' => array(
'_' => 'Posizione delle icone dellarticolo <br /><small>(solo in lettura)</small>',
'above_title' => 'Titolo in evidenza',
'with_authors' => 'Nella riga degli autori e della data',
),
'tags' => array(
'_' => 'Tag',
'both' => 'Nellintestazione e nel fondo pagina',
'footer' => 'Nel fondo pagina',
'header' => 'Nellintestazione',
'none' => 'Nessuno',
),
'tags_max' => array(
'_' => 'Numero massimo di tag mostrati',
'help' => '0 significa: mostra tutti i tag e non raggrupparli',
),
),
'articles_per_page' => 'Numero di articoli per pagina',
'auto_load_more' => 'Carica articoli successivi a fondo pagina',
'auto_remove_article' => 'Nascondi articoli dopo la lettura',
'confirm_enabled' => 'Mostra una conferma per “segna tutto come letto”',
'display_articles_unfolded' => 'Mostra articoli aperti di predefinito',
'display_categories_unfolded' => 'Categorie da aprire',
'headline' => array(
'articles' => 'Articoli: Apri/Chiudi',
'articles_header_footer' => 'Articoli: intestazione/fondo pagina',
'categories' => 'Navigazione di sinistra: Categorie',
'mark_as_read' => 'Segna gli articoli come letti',
'misc' => 'Varie',
'view' => 'Vista',
),
'hide_read_feeds' => 'Nascondi categorie e feed con articoli già letti (non funziona se “Mostra tutti gli articoli” è selezionato)',
'img_with_lazyload' => 'Usa la modalità “caricamento ritardato” per le immagini',
'jump_next' => 'Salta al successivo fratello non letto',
'mark_updated_article_unread' => 'Segna articoli aggiornati come non letti',
'number_divided_when_reader' => 'Diviso 2 nella modalità di lettura.',
'read' => array(
'article_open_on_website' => 'Quando un articolo è aperto nel suo sito di origine',
'article_viewed' => 'Quando un articolo viene letto',
'focus' => 'quando larticolo è in primo piano (eccetto per feed importanti)',
'keep_max_n_unread' => 'Massimo numero di articoli da mantenere come non letti',
'scroll' => 'Scorrendo la pagina (eccetto per feed importanti)',
'upon_gone' => 'quando non si trova più nel feed di notizie in alto',
'upon_reception' => 'Alla ricezione del contenuto',
'when' => 'Segna articoli come letti…',
'when_same_guid_in_category' => 'if an identical GUID already exists in the top <i>n</i> newest articles of the category', // TODO
'when_same_title_in_category' => 'se un titolo identico esiste già nei primi <i>n</i> articoli più recenti della categoria',
'when_same_title_in_feed' => 'se un titolo identico esiste già tra i <i>n</i> articoli più recenti (del feed)',
),
'show' => array(
'_' => 'Articoli da visualizzare',
'active_category' => 'Categoria attiva',
'adaptive' => 'Mostra i non letti se ci sono o tutti gli articoli altrimenti',
'all_articles' => 'Mostra tutti gli articoli',
'all_categories' => 'Tutte le categorie',
'no_category' => 'Nessuna categoria',
'remember_categories' => 'Ricorda le categorie aperte',
'unread' => 'Mostra solo non letti',
'unread_or_favorite' => 'Mostra i non letti e i preferiti',
),
'show_fav_unread_help' => 'Si applica anche alle etichette',
'sides_close_article' => 'Cliccare fuori dallarea di testo dellarticolo chiude larticolo',
'star' => array(
'when' => 'Segna un articolo come preferito…',
),
'sticky_post' => 'Blocca il contenuto a inizio pagina quando aperto',
'title' => 'Lettura',
'view' => array(
'default' => 'Visualizzazione predefinita',
'global' => 'Vista globale per categorie',
'normal' => 'Vista elenco',
'reader' => 'Modalità di lettura',
),
),
'sharing' => array(
'_' => 'Condivisione',
'add' => 'Aggiungi un metodo di condivisione',
'bluesky' => 'Bluesky', // IGNORE
'deprecated' => 'Questo servizio è deprecato e sarà rimosso da FreshRSS in una <a href="https://freshrss.github.io/FreshRSS/en/users/08_sharing_services.html" title="Apri la documentazione per ulteriori informazioni" target="_blank">release successiva</a>.',
'diaspora' => 'Diaspora*', // IGNORE
'email' => 'Email', // IGNORE
'facebook' => 'Facebook', // IGNORE
'more_information' => 'Ulteriori informazioni',
'print' => 'Stampa',
'raindrop' => 'Raindrop.io', // IGNORE
'remove' => 'Rimuovi metodo di condivisione',
'shaarli' => 'Shaarli', // IGNORE
'share_name' => 'Nome condivisione',
'share_url' => 'URL condivisione',
'title' => 'Condividi',
'twitter' => 'X (Twitter)', // IGNORE
'wallabag' => 'wallabag', // IGNORE
),
'shortcut' => array(
'_' => 'Comandi tastiera',
'article_action' => 'Azioni sugli articoli',
'auto_share' => 'Condividi',
'auto_share_help' => 'Se è presente un solo servizio di condivisione verrà usato quello, altrimenti usare anche il numero associato.',
'close_menus' => 'Chiudi menù',
'collapse_article' => 'Collassa articoli',
'first_article' => 'Salta al primo articolo',
'focus_search' => 'Modulo di ricerca',
'global_view' => 'Passa alla vista globale',
'help' => 'Mostra documentazione',
'javascript' => 'JavaScript deve essere abilitato per poter usare i comandi da tastiera',
'last_article' => 'Salta all ultimo articolo',
'load_more' => 'Carica altri articoli',
'mark_favorite' => 'Segna come preferito',
'mark_read' => 'Segna come letto',
'navigation' => 'Navigazione',
'navigation_help' => 'Con il tasto <kbd>⇧ Shift</kbd> i comandi di navigazione verranno applicati ai feed.<br/>Con il tasto <kbd>Alt ⎇</kbd> i comandi di navigazione verranno applicati alle categorie.',
'navigation_no_mod_help' => 'Le seguenti scorciatoie di navigazione non supportano i modificatori.',
'next_article' => 'Salta al contenuto successivo',
'next_unread_article' => 'Apri il prossimo articolo non letto',
'non_standard' => 'Alcuni tasti (<kbd>%s</kbd>) potrebbero non funzionare come scorciatoie.',
'normal_view' => 'Passa alla vista normale',
'other_action' => 'Altre azioni',
'previous_article' => 'Salta al contenuto precedente',
'reading_view' => 'Passa alla modalità lettura',
'rss_view' => 'Apri come feed RSS',
'see_on_website' => 'Vai al sito fonte',
'shift_for_all_read' => '+ <kbd>Alt ⎇</kbd> per segnare i precedenti articoli come già letti<br />+ <kbd>⇧ Shift</kbd> per segnare tutti gli articoli come già letti',
'skip_next_article' => 'Evidenzia il prossimo senza aprire',
'skip_previous_article' => 'Evidenzia il precedente senza aprire',
'title' => 'Comandi da tastiera',
'toggle_aside' => 'Mostra/nascondi la barra laterale',
'toggle_media' => 'Riproduci/Metti in pausa i media',
'user_filter' => 'Accedi alle ricerche personali',
'user_filter_help' => 'Se è presente una sola ricerca personale verrà usata quella, altrimenti usare anche il numero associato.',
'views' => 'Viste',
),
'user' => array(
'articles_and_size' => '%s articoli (%s)',
'current' => 'Utente connesso',
'is_admin' => 'è amministratore',
'users' => 'Utenti',
),
);