Explorar el Código

improve page-header a11y

add nav landmark for links
labeling the purpose of nav in page-header
labeling the meaning of total number in page-header title
krvpb024 hace 2 años
padre
commit
b568b1d41d
Se han modificado 30 ficheros con 419 adiciones y 217 borrados
  1. 7 1
      internal/locale/translations/de_DE.json
  2. 7 0
      internal/locale/translations/el_EL.json
  3. 8 0
      internal/locale/translations/en_US.json
  4. 8 1
      internal/locale/translations/es_ES.json
  5. 7 0
      internal/locale/translations/fi_FI.json
  6. 8 1
      internal/locale/translations/fr_FR.json
  7. 9 2
      internal/locale/translations/hi_IN.json
  8. 8 1
      internal/locale/translations/id_ID.json
  9. 8 1
      internal/locale/translations/it_IT.json
  10. 7 0
      internal/locale/translations/ja_JP.json
  11. 7 0
      internal/locale/translations/nl_NL.json
  12. 7 0
      internal/locale/translations/pl_PL.json
  13. 7 0
      internal/locale/translations/pt_BR.json
  14. 7 0
      internal/locale/translations/ru_RU.json
  15. 7 0
      internal/locale/translations/tr_TR.json
  16. 7 0
      internal/locale/translations/uk_UA.json
  17. 6 0
      internal/locale/translations/zh_CN.json
  18. 7 0
      internal/locale/translations/zh_TW.json
  19. 5 1
      internal/template/templates/views/bookmark_entries.html
  20. 12 6
      internal/template/templates/views/categories.html
  21. 50 38
      internal/template/templates/views/category_entries.html
  22. 32 24
      internal/template/templates/views/category_feeds.html
  23. 7 5
      internal/template/templates/views/create_category.html
  24. 13 11
      internal/template/templates/views/edit_category.html
  25. 20 18
      internal/template/templates/views/edit_feed.html
  26. 62 53
      internal/template/templates/views/feed_entries.html
  27. 23 17
      internal/template/templates/views/history_entries.html
  28. 21 15
      internal/template/templates/views/shared_entries.html
  29. 28 22
      internal/template/templates/views/unread_entries.html
  30. 14 0
      internal/ui/static/css/common.css

+ 7 - 1
internal/locale/translations/de_DE.json

@@ -18,6 +18,7 @@
     "action.home_screen": "Zum Startbildschirm hinzufügen",
     "tooltip.keyboard_shortcuts": "Tastenkürzel: %s",
     "tooltip.logged_user": "Angemeldet als %s",
+    "menu.title": "Menu",
     "menu.unread": "Ungelesen",
     "menu.starred": "Lesezeichen",
     "menu.history": "Verlauf",
@@ -81,11 +82,14 @@
     "entry.estimated_reading_time": [
         "%d Minute zu lesen",
         "%d Minuten zu lesen"
-    ],    
+    ],
     "entry.tags.label": "Stichworte:",
     "page.shared_entries.title": "Geteilte Artikel",
+    "page.shared_entries.total": "Number of shared entries",
     "page.unread.title": "Ungelesen",
+    "page.unread.total": "Number of unread entries",
     "page.starred.title": "Lesezeichen",
+    "page.starred.total": "Number of starred entries",
     "page.categories.title": "Kategorien",
     "page.categories.no_feed": "Kein Abonnement.",
     "page.categories.entries": "Artikel",
@@ -95,6 +99,7 @@
         "Es gibt %d Abonnements."
     ],
     "page.categories.unread_counter": "Anzahl der ungelesenen Artikel",
+    "page.categories.all_counter": "Number of all entries",
     "page.new_category.title": "Neue Kategorie",
     "page.new_user.title": "Neuer Benutzer",
     "page.edit_category.title": "Kategorie bearbeiten: %s",
@@ -109,6 +114,7 @@
         "%d Fehler"
     ],
     "page.history.title": "Verlauf",
+    "page.history.total": "Number of read entries",
     "page.import.title": "Importieren",
     "page.search.title": "Suchergebnisse",
     "page.about.title": "Über",

+ 7 - 0
internal/locale/translations/el_EL.json

@@ -18,6 +18,7 @@
     "action.home_screen": "Προσθήκη στην αρχική οθόνη",
     "tooltip.keyboard_shortcuts": "Συντόμευση πληκτρολογίου: % s",
     "tooltip.logged_user": "Συνδεδεμένος/η ως %s",
+    "menu.title": "Menu",
     "menu.unread": "Μη αναγνωσμένα",
     "menu.starred": "Αγαπημένα",
     "menu.history": "Ιστορικό",
@@ -84,17 +85,22 @@
     ],
     "entry.tags.label": "Ετικέτες:",
     "page.shared_entries.title": "Κοινόχρηστες Καταχωρήσεις",
+    "page.shared_entries.total": "Number of shared entries",
     "page.unread.title": "Μη αναγνωσμένα",
+    "page.unread.total": "Number of unread entries",
     "page.starred.title": "Αγαπημένo",
+    "page.starred.total": "Number of starred entries",
     "page.categories.title": "Κατηγορίες",
     "page.categories.no_feed": "Καμία ροή.",
     "page.categories.entries": "Άρθρα",
     "page.categories.feeds": "Συνδρομές",
+    "page.categories.feeds.total": "Number of feeds",
     "page.categories.feed_count": [
         "Υπάρχει μία %d ροή.",
         "Υπάρχουν %d ροές."
     ],
     "page.categories.unread_counter": "Αριθμός μη αναγνωσμένων καταχωρήσεων",
+    "page.categories.all_counter": "Number of all entries",
     "page.new_category.title": "Νέα Κατηγορία",
     "page.new_user.title": "Νέος Χρήστης",
     "page.edit_category.title": "Επεξεργασία κατηγορίας: % s",
@@ -109,6 +115,7 @@
         "%d σφάλματα"
     ],
     "page.history.title": "Ιστορικό",
+    "page.history.total": "Number of read entries",
     "page.import.title": "Εισαγωγή",
     "page.search.title": "Αποτελέσματα Αναζήτησης",
     "page.about.title": "Περί",

+ 8 - 0
internal/locale/translations/en_US.json

@@ -18,6 +18,7 @@
     "action.home_screen": "Add to home screen",
     "tooltip.keyboard_shortcuts": "Keyboard Shortcut: %s",
     "tooltip.logged_user": "Logged in as %s",
+    "menu.title": "Menu",
     "menu.unread": "Unread",
     "menu.starred": "Starred",
     "menu.history": "History",
@@ -84,17 +85,23 @@
     ],
     "entry.tags.label": "Tags:",
     "page.shared_entries.title": "Shared entries",
+    "page.shared_entries.total": "Number of shared entries",
     "page.unread.title": "Unread",
+    "page.unread.total": "Number of unread entries",
     "page.starred.title": "Starred",
+    "page.starred.total": "Number of starred entries",
     "page.categories.title": "Categories",
     "page.categories.no_feed": "No feed.",
     "page.categories.entries": "Entries",
     "page.categories.feeds": "Feeds",
+    "page.categories.feeds.total": "Number of feeds",
     "page.categories.feed_count": [
         "There is %d feed.",
         "There are %d feeds."
     ],
     "page.categories.unread_counter": "Number of unread entries",
+    "page.categories.all_counter": "Number of all entries",
+    "page.categories.total": "Number of categories",
     "page.new_category.title": "New Category",
     "page.new_user.title": "New User",
     "page.edit_category.title": "Edit Category: %s",
@@ -109,6 +116,7 @@
         "%d errors"
     ],
     "page.history.title": "History",
+    "page.history.total": "Number of read entries",
     "page.import.title": "Import",
     "page.search.title": "Search Results",
     "page.about.title": "About",

+ 8 - 1
internal/locale/translations/es_ES.json

@@ -18,6 +18,7 @@
     "action.home_screen": "Añadir a la pantalla principal",
     "tooltip.keyboard_shortcuts": "Atajo de teclado: %s",
     "tooltip.logged_user": "Registrado como %s",
+    "menu.title": "Menu",
     "menu.unread": "No leídos",
     "menu.starred": "Marcadores",
     "menu.history": "Historial",
@@ -81,20 +82,25 @@
     "entry.estimated_reading_time": [
         "%d minuto de lectura",
         "%d minutos de lectura"
-    ],    
+    ],
     "entry.tags.label": "Etiquetas:",
     "page.shared_entries.title": "Artículos compartidos",
+    "page.shared_entries.total": "Number of shared entries",
     "page.unread.title": "No leídos",
+    "page.unread.total": "Number of unread entries",
     "page.starred.title": "Marcadores",
+    "page.starred.total": "Number of starred entries",
     "page.categories.title": "Categorías",
     "page.categories.no_feed": "Sin fuente.",
     "page.categories.entries": "Artículos",
     "page.categories.feeds": "Fuentes",
+    "page.categories.feeds.total": "Number of feeds",
     "page.categories.feed_count": [
         "Hay %d fuente.",
         "Hay %d fuentes."
     ],
     "page.categories.unread_counter": "Número de artículos no leídos",
+    "page.categories.all_counter": "Number of all entries",
     "page.new_category.title": "Nueva categoría",
     "page.new_user.title": "Nuevo usuario",
     "page.edit_category.title": "Editar categoría: %s",
@@ -109,6 +115,7 @@
         "%d errores"
     ],
     "page.history.title": "Historial",
+    "page.history.total": "Number of read entries",
     "page.import.title": "Importar",
     "page.search.title": "Resultados de la búsqueda",
     "page.about.title": "Acerca de",

+ 7 - 0
internal/locale/translations/fi_FI.json

@@ -18,6 +18,7 @@
     "action.home_screen": "Lisää aloitusnäytölle",
     "tooltip.keyboard_shortcuts": "Pikanäppäin: %s",
     "tooltip.logged_user": "Kirjautunut %s-käyttäjänä",
+    "menu.title": "Menu",
     "menu.unread": "Lukemattomat",
     "menu.starred": "Suosikit",
     "menu.history": "Historia",
@@ -84,17 +85,22 @@
     ],
     "entry.tags.label": "Tags:",
     "page.shared_entries.title": "Jaetut artikkelit",
+    "page.shared_entries.total": "Number of shared entries",
     "page.unread.title": "Lukemattomat",
+    "page.unread.total": "Number of unread entries",
     "page.starred.title": "Suosikit",
+    "page.starred.total": "Number of starred entries",
     "page.categories.title": "Kategoriat",
     "page.categories.no_feed": "Ei syötettä.",
     "page.categories.entries": "Artikkelit",
     "page.categories.feeds": "Tilaukset",
+    "page.categories.feeds.total": "Number of feeds",
     "page.categories.feed_count": [
         "On %d syöte.",
         "On %d syötettä."
     ],
     "page.categories.unread_counter": "Lukemattomien artikkeleiden määrä",
+    "page.categories.all_counter": "Number of all entries",
     "page.new_category.title": "Uusi kategoria",
     "page.new_user.title": "Uusi käyttäjä",
     "page.edit_category.title": "Muokkaa kategoria: %s",
@@ -109,6 +115,7 @@
         "%d virhettä"
     ],
     "page.history.title": "Historia",
+    "page.history.total": "Number of read entries",
     "page.import.title": "Tuo",
     "page.search.title": "Hakutulokset",
     "page.about.title": "Tietoja",

+ 8 - 1
internal/locale/translations/fr_FR.json

@@ -18,6 +18,7 @@
     "action.home_screen": "Ajouter à l'écran d'accueil",
     "tooltip.keyboard_shortcuts": "Raccourci clavier : %s",
     "tooltip.logged_user": "Connecté en tant que %s",
+    "menu.title": "Menu",
     "menu.unread": "Non lus",
     "menu.starred": "Favoris",
     "menu.history": "Historique",
@@ -81,20 +82,25 @@
     "entry.estimated_reading_time": [
         "%d minute de lecture",
         "%d minutes de lecture"
-    ],    
+    ],
     "entry.tags.label": "Libellés :",
     "page.shared_entries.title": "Articles partagés",
+    "page.shared_entries.total": "Number of shared entries",
     "page.unread.title": "Non lus",
+    "page.unread.total": "Number of unread entries",
     "page.starred.title": "Favoris",
+    "page.starred.total": "Number of starred entries",
     "page.categories.title": "Catégories",
     "page.categories.no_feed": "Aucun abonnement.",
     "page.categories.entries": "Articles",
     "page.categories.feeds": "Abonnements",
+    "page.categories.feeds.total": "Number of feeds",
     "page.categories.feed_count": [
         "Il y a %d abonnement.",
         "Il y a %d abonnements."
     ],
     "page.categories.unread_counter": "Nombre d'entrées non lues",
+    "page.categories.all_counter": "Number of all entries",
     "page.new_category.title": "Nouvelle catégorie",
     "page.new_user.title": "Nouvel Utilisateur",
     "page.edit_category.title": "Modification de la catégorie : %s",
@@ -109,6 +115,7 @@
         "%d erreurs"
     ],
     "page.history.title": "Historique",
+    "page.history.total": "Number of read entries",
     "page.import.title": "Importation",
     "page.search.title": "Résultats de la recherche",
     "page.about.title": "À propos",

+ 9 - 2
internal/locale/translations/hi_IN.json

@@ -18,6 +18,7 @@
     "action.home_screen": "होम स्क्रीन में शामिल करें",
     "tooltip.keyboard_shortcuts": "कुंजीपटल संक्षिप्त रीति: %s",
     "tooltip.logged_user": "%s के रूप में लॉग इन किया",
+    "menu.title": "Menu",
     "menu.unread": "अपठित",
     "menu.starred": "तारांकित",
     "menu.history": "इतिहास",
@@ -81,20 +82,25 @@
     "entry.estimated_reading_time": [
         "पढ़ने मे %d मिनट मागेगा",
         "पढ़ने मे %d मिनट मागेगा"
-    ],    
+    ],
     "entry.tags.label": "टैग:",
     "page.shared_entries.title": "साझा किया हुआ प्रविष्टि",
+    "page.shared_entries.total": "Number of shared entries",
     "page.unread.title": "अपठित",
+    "page.unread.total": "Number of unread entries",
     "page.starred.title": "तारांकित",
+    "page.starred.total": "Number of starred entries",
     "page.categories.title": "श्रेणियाँ",
     "page.categories.no_feed": "कोई फ़ीड नहीं है।",
     "page.categories.entries": "विषयवस्तुया",
     "page.categories.feeds": "सदस्यता ले",
+    "page.categories.feeds.total": "Number of feeds",
     "page.categories.feed_count": [
         "%d फ़ीड बाकी है।",
         "%d फ़ीड बाकी है।"
     ],
     "page.categories.unread_counter": "अपठित प्रविष्टिया",
+    "page.categories.all_counter": "Number of all entries",
     "page.new_category.title": "नया श्रेणी",
     "page.new_user.title": "नया उपभोक्ता",
     "page.edit_category.title": "%s श्रेणी संपाद करे",
@@ -109,6 +115,7 @@
         "%d समस्याए"
     ],
     "page.history.title": "इतिहास",
+    "page.history.total": "Number of read entries",
     "page.import.title": "आयात",
     "page.search.title": "खोज का परिणाम",
     "page.about.title": "पृष्ठ के बारे में",
@@ -363,7 +370,7 @@
     "form.integration.pinboard_bookmark": "बुकमार्क को अपठित के रूप में चिह्नित करें",
     "form.integration.instapaper_activate": "विषय-वस्तु को इंस्टापेपर में सहेजें",
     "form.integration.instapaper_username": "इंस्टापेपर यूजरनेम",
-    "form.integration.instapaper_password": "इंस्टापेपर पासवर्ड", 
+    "form.integration.instapaper_password": "इंस्टापेपर पासवर्ड",
     "form.integration.pocket_activate": "विषय-कविता को पॉकेट में सहेजें",
     "form.integration.pocket_consumer_key": "पॉकेट उपभोक्ता कुंजी",
     "form.integration.pocket_access_token": "पॉकेट एक्सेस टोकन",

+ 8 - 1
internal/locale/translations/id_ID.json

@@ -18,6 +18,7 @@
     "action.home_screen": "Tambahkan ke beranda",
     "tooltip.keyboard_shortcuts": "Pintasan Papan Tik: %s",
     "tooltip.logged_user": "Masuk sebagai %s",
+    "menu.title": "Menu",
     "menu.unread": "Belum Dibaca",
     "menu.starred": "Markah",
     "menu.history": "Riwayat",
@@ -80,19 +81,24 @@
     "entry.shared_entry.label": "Bagikan",
     "entry.estimated_reading_time": [
     "%d menit untuk dibaca"
-    ],    
+    ],
     "entry.tags.label": "Tanda:",
     "page.shared_entries.title": "Entri yang Dibagikan",
+    "page.shared_entries.total": "Number of shared entries",
     "page.unread.title": "Belum Dibaca",
+    "page.unread.total": "Number of unread entries",
     "page.starred.title": "Markah",
+    "page.starred.total": "Number of starred entries",
     "page.categories.title": "Kategori",
     "page.categories.no_feed": "Tidak ada umpan.",
     "page.categories.entries": "Artikel",
     "page.categories.feeds": "Langganan",
+    "page.categories.feeds.total": "Number of feeds",
     "page.categories.feed_count": [
     "Ada %d umpan."
     ],
     "page.categories.unread_counter": "Jumlah entri yang belum dibaca",
+    "page.categories.all_counter": "Number of all entries",
     "page.new_category.title": "Kategori Baru",
     "page.new_user.title": "Pengguna Baru",
     "page.edit_category.title": "Sunting Kategori: %s",
@@ -106,6 +112,7 @@
     "%d galat"
     ],
     "page.history.title": "Riwayat",
+    "page.history.total": "Number of read entries",
     "page.import.title": "Impor",
     "page.search.title": "Hasil Pencarian",
     "page.about.title": "Tentang",

+ 8 - 1
internal/locale/translations/it_IT.json

@@ -18,6 +18,7 @@
     "action.home_screen": "Aggiungere alla schermata Home",
     "tooltip.keyboard_shortcuts": "Scorciatoia da tastiera: %s",
     "tooltip.logged_user": "Autenticato come %s",
+    "menu.title": "Menu",
     "menu.unread": "Da leggere",
     "menu.starred": "Preferiti",
     "menu.history": "Cronologia",
@@ -81,20 +82,25 @@
     "entry.estimated_reading_time": [
         "%d minuto di lettura",
         "%d minuti di lettura"
-    ],    
+    ],
     "entry.tags.label": "Tag:",
     "page.shared_entries.title": "Voci condivise",
+    "page.shared_entries.total": "Number of shared entries",
     "page.unread.title": "Da leggere",
+    "page.unread.total": "Number of unread entries",
     "page.starred.title": "Preferiti",
+    "page.starred.total": "Number of starred entries",
     "page.categories.title": "Categorie",
     "page.categories.no_feed": "Nessun feed.",
     "page.categories.entries": "Articoli",
     "page.categories.feeds": "Abbonamenti",
+    "page.categories.feeds.total": "Number of feeds",
     "page.categories.feed_count": [
         "C'è %d feed.",
         "Ci sono %d feed."
     ],
     "page.categories.unread_counter": "Numero di voci non lette",
+    "page.categories.all_counter": "Number of all entries",
     "page.new_category.title": "Nuova categoria",
     "page.new_user.title": "Nuovo utente",
     "page.edit_category.title": "Modifica categoria: %s",
@@ -109,6 +115,7 @@
         "%d errori"
     ],
     "page.history.title": "Cronologia",
+    "page.history.total": "Number of read entries",
     "page.import.title": "Importa",
     "page.search.title": "Risultati della ricerca",
     "page.about.title": "Informazioni",

+ 7 - 0
internal/locale/translations/ja_JP.json

@@ -18,6 +18,7 @@
     "action.home_screen": "ホームスクリーンに追加",
     "tooltip.keyboard_shortcuts": "キーボードショートカット: %s",
     "tooltip.logged_user": "%s としてログイン中",
+    "menu.title": "Menu",
     "menu.unread": "未読",
     "menu.starred": "星付き",
     "menu.history": "履歴",
@@ -84,17 +85,22 @@
     ],
     "entry.tags.label": "タグ:",
     "page.shared_entries.title": "共有エントリ",
+    "page.shared_entries.total": "Number of shared entries",
     "page.unread.title": "未読",
+    "page.unread.total": "Number of unread entries",
     "page.starred.title": "星付き",
+    "page.starred.total": "Number of starred entries",
     "page.categories.title": "カテゴリ",
     "page.categories.no_feed": "フィードはありません。",
     "page.categories.entries": "記事一覧",
     "page.categories.feeds": "フィード一覧",
+    "page.categories.feeds.total": "Number of feeds",
     "page.categories.feed_count": [
         "%d 件のフィードがあります。",
         "%d 件のフィードがあります。"
     ],
     "page.categories.unread_counter": "未読記事の数",
+    "page.categories.all_counter": "Number of all entries",
     "page.new_category.title": "新規カテゴリ",
     "page.new_user.title": "新規ユーザー",
     "page.edit_category.title": "カテゴリを編集: %s",
@@ -109,6 +115,7 @@
         "%d 個のエラー"
     ],
     "page.history.title": "履歴",
+    "page.history.total": "Number of read entries",
     "page.import.title": "インポート",
     "page.search.title": "検索結果",
     "page.about.title": "ソフトウェア情報",

+ 7 - 0
internal/locale/translations/nl_NL.json

@@ -18,6 +18,7 @@
     "action.home_screen": "Toevoegen aan startscherm",
     "tooltip.keyboard_shortcuts": "Sneltoets: %s",
     "tooltip.logged_user": "Ingelogd als %s",
+    "menu.title": "Menu",
     "menu.unread": "Ongelezen",
     "menu.starred": "Favorieten",
     "menu.history": "Geschiedenis",
@@ -84,17 +85,22 @@
     ],
     "entry.tags.label": "Labels:",
     "page.shared_entries.title": "Gedeelde vermeldingen",
+    "page.shared_entries.total": "Number of shared entries",
     "page.unread.title": "Ongelezen",
+    "page.unread.total": "Number of unread entries",
     "page.starred.title": "Favorieten",
+    "page.starred.total": "Number of starred entries",
     "page.categories.title": "Categorieën",
     "page.categories.no_feed": "Geen feeds.",
     "page.categories.entries": "Lidwoord",
     "page.categories.feeds": "Abonnementen",
+    "page.categories.feeds.total": "Number of feeds",
     "page.categories.feed_count": [
         "Er is %d feed.",
         "Er zijn %d feeds."
     ],
     "page.categories.unread_counter": "Aantal ongelezen vermeldingen",
+    "page.categories.all_counter": "Number of all entries",
     "page.new_category.title": "Nieuwe categorie",
     "page.new_user.title": "Nieuwe gebruiker",
     "page.edit_category.title": "Bewerken van categorie: %s",
@@ -109,6 +115,7 @@
         "%d errors"
     ],
     "page.history.title": "Geschiedenis",
+    "page.history.total": "Number of read entries",
     "page.import.title": "Importeren",
     "page.login.title": "Inloggen",
     "page.search.title": "Zoekresultaten",

+ 7 - 0
internal/locale/translations/pl_PL.json

@@ -18,6 +18,7 @@
     "action.home_screen": "Dodaj do ekranu głównego",
     "tooltip.keyboard_shortcuts": "Skróty klawiszowe: %s",
     "tooltip.logged_user": "Zalogowany jako %s",
+    "menu.title": "Menu",
     "menu.unread": "Nieprzeczytane",
     "menu.starred": "Ulubione",
     "menu.history": "Historia",
@@ -84,18 +85,23 @@
     ],
     "entry.tags.label": "Tagi:",
     "page.shared_entries.title": "Udostępnione wpisy",
+    "page.shared_entries.total": "Number of shared entries",
     "page.unread.title": "Nieprzeczytane",
+    "page.unread.total": "Number of unread entries",
     "page.starred.title": "Oznaczone gwiazdką",
+    "page.starred.total": "Number of starred entries",
     "page.categories.title": "Kategorie",
     "page.categories.no_feed": "Brak kanałów.",
     "page.categories.entries": "Artykuły",
     "page.categories.feeds": "Subskrypcje",
+    "page.categories.feeds.total": "Number of feeds",
     "page.categories.feed_count": [
         "Jest %d kanał.",
         "Są %d kanały.",
         "Jest %d kanałów."
     ],
     "page.categories.unread_counter": "Liczba nieprzeczytanych wpisów",
+    "page.categories.all_counter": "Number of all entries",
     "page.new_category.title": "Nowa kategoria",
     "page.new_user.title": "Nowy użytkownik",
     "page.edit_category.title": "Edycja Kategorii: %s",
@@ -111,6 +117,7 @@
         "%d błędów"
     ],
     "page.history.title": "Historia",
+    "page.history.total": "Number of read entries",
     "page.import.title": "Importuj",
     "page.search.title": "Wyniki wyszukiwania",
     "page.about.title": "O",

+ 7 - 0
internal/locale/translations/pt_BR.json

@@ -18,6 +18,7 @@
     "action.home_screen": "Voltar para a tela inicial",
     "tooltip.keyboard_shortcuts": "Atalho do teclado: %s",
     "tooltip.logged_user": "Autenticado como %s",
+    "menu.title": "Menu",
     "menu.unread": "Não lido",
     "menu.starred": "Favoritos",
     "menu.history": "Histórico",
@@ -84,17 +85,22 @@
     ],
     "entry.tags.label": "Etiquetas:",
     "page.shared_entries.title": "Itens compartilhados",
+    "page.shared_entries.total": "Number of shared entries",
     "page.unread.title": "Não lidos",
+    "page.unread.total": "Number of unread entries",
     "page.starred.title": "Favoritos",
+    "page.starred.total": "Number of starred entries",
     "page.categories.title": "Categorias",
     "page.categories.no_feed": "Sem fonte.",
     "page.categories.entries": "Itens",
     "page.categories.feeds": "Inscrições",
+    "page.categories.feeds.total": "Number of feeds",
     "page.categories.feed_count": [
         "Existe %d fonte.",
         "Existem %d fontes."
     ],
     "page.categories.unread_counter": "Numero de itens não lidos",
+    "page.categories.all_counter": "Number of all entries",
     "page.new_category.title": "Nova categoria",
     "page.new_user.title": "Novo usuário",
     "page.edit_category.title": "Editar categoria: %s",
@@ -109,6 +115,7 @@
         "%d erros"
     ],
     "page.history.title": "Histórico",
+    "page.history.total": "Number of read entries",
     "page.import.title": "Importar",
     "page.search.title": "Resultados da busca",
     "page.about.title": "Sobre",

+ 7 - 0
internal/locale/translations/ru_RU.json

@@ -18,6 +18,7 @@
     "action.home_screen": "Добавить на домашний экран",
     "tooltip.keyboard_shortcuts": "Сочетания клавиш: %s",
     "tooltip.logged_user": "Авторизован как %s",
+    "menu.title": "Menu",
     "menu.unread": "Непрочитанное",
     "menu.starred": "Избранное",
     "menu.history": "История",
@@ -84,18 +85,23 @@
     ],
     "entry.tags.label": "Теги:",
     "page.shared_entries.title": "Общедоступные статьи",
+    "page.shared_entries.total": "Number of shared entries",
     "page.unread.title": "Непрочитанное",
+    "page.unread.total": "Number of unread entries",
     "page.starred.title": "Избранное",
+    "page.starred.total": "Number of starred entries",
     "page.categories.title": "Категории",
     "page.categories.no_feed": "Нет подписок.",
     "page.categories.entries": "Cтатьи",
     "page.categories.feeds": "Подписки",
+    "page.categories.feeds.total": "Number of feeds",
     "page.categories.feed_count": [
         "Есть %d подписка.",
         "Есть %d подписки.",
         "Есть %d подписок."
     ],
     "page.categories.unread_counter": "Количество непрочитанных статей",
+    "page.categories.all_counter": "Number of all entries",
     "page.new_category.title": "Новая категория",
     "page.new_user.title": "Новый пользователь",
     "page.edit_category.title": "Изменить категорию: %s",
@@ -111,6 +117,7 @@
         "%d ошибок"
     ],
     "page.history.title": "История",
+    "page.history.total": "Number of read entries",
     "page.import.title": "Импорт",
     "page.search.title": "Результаты поиска",
     "page.about.title": "О приложении",

+ 7 - 0
internal/locale/translations/tr_TR.json

@@ -18,6 +18,7 @@
     "action.home_screen": "Ana ekrana ekle",
     "tooltip.keyboard_shortcuts": "Klavye Kısayolu: %s",
     "tooltip.logged_user": "%s olarak giriş yapıldı",
+    "menu.title": "Menu",
     "menu.unread": "Okunmadı",
     "menu.starred": "Yıldız",
     "menu.history": "Geçmiş",
@@ -84,17 +85,22 @@
     ],
     "entry.tags.label": "Etiketleri:",
     "page.shared_entries.title": "Paylaşılan iletiler",
+    "page.shared_entries.total": "Number of shared entries",
     "page.unread.title": "Okunmadı",
+    "page.unread.total": "Number of unread entries",
     "page.starred.title": "Yıldızlı",
+    "page.starred.total": "Number of starred entries",
     "page.categories.title": "Kategoriler",
     "page.categories.no_feed": "Besleme yok.",
     "page.categories.entries": "Makaleler",
     "page.categories.feeds": "Abonelikler",
+    "page.categories.feeds.total": "Number of feeds",
     "page.categories.feed_count": [
         "%d besleme var.",
         "%d besleme var."
     ],
     "page.categories.unread_counter": "Okunmamış iletilerin sayısı",
+    "page.categories.all_counter": "Number of all entries",
     "page.new_category.title": "Yeni Kategori",
     "page.new_user.title": "Yeni Kullanıcı",
     "page.edit_category.title": "Kategoriyi Düzenle: %s",
@@ -109,6 +115,7 @@
         "%d hata"
     ],
     "page.history.title": "Geçmiş",
+    "page.history.total": "Number of read entries",
     "page.import.title": "İçeri Aktar",
     "page.search.title": "Arama Sonuçları",
     "page.about.title": "Hakkında",

+ 7 - 0
internal/locale/translations/uk_UA.json

@@ -18,6 +18,7 @@
     "action.home_screen": "Додати до головного екрану",
     "tooltip.keyboard_shortcuts": "Комбінація клавіш: %s",
     "tooltip.logged_user": "Здійснено вхід як %s",
+    "menu.title": "Menu",
     "menu.unread": "Непрочитане",
     "menu.starred": "З зірочкою",
     "menu.history": "Історія",
@@ -85,18 +86,23 @@
     ],
     "entry.tags.label": "Теги:",
     "page.shared_entries.title": "Спильні записи",
+    "page.shared_entries.total": "Number of shared entries",
     "page.unread.title": "Непрочитане",
+    "page.unread.total": "Number of unread entries",
     "page.starred.title": "З зірочкою",
+    "page.starred.total": "Number of starred entries",
     "page.categories.title": "Категорії",
     "page.categories.no_feed": "Немає стрічки.",
     "page.categories.entries": "Статті",
     "page.categories.feeds": "Підписки",
+    "page.categories.feeds.total": "Number of feeds",
     "page.categories.feed_count": [
         "Містить %d стрічку.",
         "Містить %d стрічки.",
         "Містить %d стрічок."
     ],
     "page.categories.unread_counter": "Кількість непрочитаних записів",
+    "page.categories.all_counter": "Number of all entries",
     "page.new_category.title": "Нова категорія",
     "page.new_user.title": "Новий користувач",
     "page.edit_category.title": "Редагування категорії: %s",
@@ -112,6 +118,7 @@
         "%d помилок"
     ],
     "page.history.title": "Історія",
+    "page.history.total": "Number of read entries",
     "page.import.title": "Імпорт",
     "page.search.title": "Результати пошуку",
     "page.about.title": "Про додадок",

+ 6 - 0
internal/locale/translations/zh_CN.json

@@ -18,6 +18,7 @@
     "action.home_screen": "添加到主屏幕",
     "tooltip.keyboard_shortcuts": "快捷键: %s",
     "tooltip.logged_user": "当前登录 %s",
+    "menu.title": "Menu",
     "menu.unread": "未读",
     "menu.starred": "收藏",
     "menu.history": "历史",
@@ -84,12 +85,16 @@
     ],
     "entry.tags.label": "标签:",
     "page.shared_entries.title": "已分享的文章",
+    "page.shared_entries.total": "Number of shared entries",
     "page.unread.title": "未读",
+    "page.unread.total": "Number of unread entries",
     "page.starred.title": "收藏",
+    "page.starred.total": "Number of starred entries",
     "page.categories.title": "分类",
     "page.categories.no_feed": "没有源",
     "page.categories.entries": "查看内容",
     "page.categories.feeds": "查看源",
+    "page.categories.feeds.total": "Number of feeds",
     "page.categories.feed_count": [
         "有 %d 个源"
     ],
@@ -107,6 +112,7 @@
         "%d 错误"
     ],
     "page.history.title": "历史",
+    "page.history.total": "Number of read entries",
     "page.import.title": "导入",
     "page.search.title": "搜索结果",
     "page.about.title": "关于",

+ 7 - 0
internal/locale/translations/zh_TW.json

@@ -18,6 +18,7 @@
     "action.home_screen": "新增到主螢幕",
     "tooltip.keyboard_shortcuts": "快捷鍵: %s",
     "tooltip.logged_user": "當前登入 %s",
+    "menu.title": "導覽",
     "menu.unread": "未讀",
     "menu.starred": "收藏",
     "menu.history": "歷史",
@@ -84,17 +85,22 @@
     ],
     "entry.tags.label": "標籤:",
     "page.shared_entries.title": "已分享的文章",
+    "page.shared_entries.total": "已分享的文章數",
     "page.unread.title": "未讀",
+    "page.unread.total": "未讀文章數",
     "page.starred.title": "收藏",
     "page.categories.title": "分類",
     "page.categories.no_feed": "沒有Feed",
     "page.categories.entries": "檢視內容",
     "page.categories.feeds": "檢視Feeds",
+    "page.categories.feeds.total": "Feeds總數",
     "page.categories.feed_count": [
         "有 %d 個Feed",
         "有 %d 個Feeds"
     ],
     "page.categories.unread_counter": "未讀文章數",
+    "page.categories.all_counter": "所有文章數",
+    "page.categories.total": "分類總數",
     "page.new_category.title": "新分類",
     "page.new_user.title": "新使用者",
     "page.edit_category.title": "編輯分類 : %s",
@@ -109,6 +115,7 @@
         "%d 錯誤"
     ],
     "page.history.title": "歷史",
+    "page.history.total": "已讀文章數",
     "page.import.title": "匯入",
     "page.search.title": "搜尋結果",
     "page.about.title": "關於",

+ 5 - 1
internal/template/templates/views/bookmark_entries.html

@@ -2,7 +2,11 @@
 
 {{ define "content"}}
 <section class="page-header">
-    <h1>{{ t "page.starred.title" }} ({{ .total }})</h1>
+    <h1 dir="auto">
+        {{ t "page.starred.title" }}
+        <span aria-hidden="true"> ({{ .total }})</span>
+    </h1>
+    <span class="sr-only">{{ t "page.starred.total" }}: {{ .total }}</span>
 </section>
 
 {{ if not .entries }}

+ 12 - 6
internal/template/templates/views/categories.html

@@ -2,12 +2,18 @@
 
 {{ define "content"}}
 <section class="page-header">
-    <h1>{{ t "page.categories.title" }} ({{ .total }})</h1>
-    <ul>
-        <li>
-            <a href="{{ route "createCategory" }}">{{ icon "add-category" }}{{ t "menu.create_category" }}</a>
-        </li>
-    </ul>
+    <h1 dir="auto">
+        {{ t "page.categories.title" }}
+        <span aria-hidden="true"> ({{ .total }})</span>
+    </h1>
+    <span class="sr-only">{{ t "page.categories.total" }}: {{ .total }}</span>
+    <nav aria-label="{{ t "page.categories.title" }} {{ t "menu.title" }}">
+        <ul>
+            <li>
+                <a href="{{ route "createCategory" }}">{{ icon "add-category" }}{{ t "menu.create_category" }}</a>
+            </li>
+        </ul>
+    </nav>
 </section>
 
 {{ if not .categories }}

+ 50 - 38
internal/template/templates/views/category_entries.html

@@ -2,44 +2,56 @@
 
 {{ define "content"}}
 <section class="page-header">
-    <h1 dir="auto">{{ .category.Title }} ({{ .total }})</h1>
-    <ul>
-    {{ if .entries }}
-        <li>
-            <a href="#"
-                data-action="markPageAsRead"
-                data-label-question="{{ t "confirm.question" }}"
-                data-label-yes="{{ t "confirm.yes" }}"
-                data-label-no="{{ t "confirm.no" }}"
-                data-label-loading="{{ t "confirm.loading" }}"
-                data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}">{{ icon "mark-page-as-read" }}{{ t "menu.mark_page_as_read" }}</a>
-        </li>
-        <li>
-            <a href="#"
-                data-confirm="true"
-                data-label-question="{{ t "confirm.question" }}"
-                data-label-yes="{{ t "confirm.yes" }}"
-                data-label-no="{{ t "confirm.no" }}"
-                data-label-loading="{{ t "confirm.loading" }}"
-                data-url="{{ route "markCategoryAsRead" "categoryID" .category.ID }}">{{ icon "mark-all-as-read" }}{{ t "menu.mark_all_as_read" }}</a>
-        </li>
-    {{ end }}
-    {{ if .showOnlyUnreadEntries }}
-        <li>
-            <a href="{{ route "categoryEntriesAll" "categoryID" .category.ID }}">{{ icon "show-all-entries" }}{{ t "menu.show_all_entries" }}</a>
-        </li>
-    {{ else }}
-        <li>
-            <a href="{{ route "categoryEntries" "categoryID" .category.ID }}">{{ icon "show-unread-entries" }}{{ t "menu.show_only_unread_entries" }}</a>
-        </li>
-    {{ end }}
-        <li>
-            <a href="{{ route "categoryFeeds" "categoryID" .category.ID }}">{{ icon "feeds" }}{{ t "menu.feeds" }}</a>
-        </li>
-        <li>
-            <a href="{{ route "refreshCategoryEntriesPage" "categoryID" .category.ID }}">{{ icon "refresh" }}{{ t "menu.refresh_all_feeds" }}</a>
-        </li>
-    </ul>
+    <h1 dir="auto">
+        {{ .category.Title }}
+        <span aria-hidden="true">({{ .total }})</span>
+    </h1>
+    <span class="sr-only">
+        {{ if .showOnlyUnreadEntries }}
+        {{ t "page.categories.unread_counter" }}: {{ .total }}
+        {{ else }}
+        {{ t "page.categories.all_counter" }}: {{ .total }}
+        {{ end }}
+    </span>
+    <nav aria-label="{{ .category.Title }} {{ t "menu.title" }}">
+        <ul>
+        {{ if .entries }}
+            <li>
+                <a href="#"
+                    data-action="markPageAsRead"
+                    data-label-question="{{ t "confirm.question" }}"
+                    data-label-yes="{{ t "confirm.yes" }}"
+                    data-label-no="{{ t "confirm.no" }}"
+                    data-label-loading="{{ t "confirm.loading" }}"
+                    data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}">{{ icon "mark-page-as-read" }}{{ t "menu.mark_page_as_read" }}</a>
+            </li>
+            <li>
+                <a href="#"
+                    data-confirm="true"
+                    data-label-question="{{ t "confirm.question" }}"
+                    data-label-yes="{{ t "confirm.yes" }}"
+                    data-label-no="{{ t "confirm.no" }}"
+                    data-label-loading="{{ t "confirm.loading" }}"
+                    data-url="{{ route "markCategoryAsRead" "categoryID" .category.ID }}">{{ icon "mark-all-as-read" }}{{ t "menu.mark_all_as_read" }}</a>
+            </li>
+        {{ end }}
+        {{ if .showOnlyUnreadEntries }}
+            <li>
+                <a href="{{ route "categoryEntriesAll" "categoryID" .category.ID }}">{{ icon "show-all-entries" }}{{ t "menu.show_all_entries" }}</a>
+            </li>
+        {{ else }}
+            <li>
+                <a href="{{ route "categoryEntries" "categoryID" .category.ID }}">{{ icon "show-unread-entries" }}{{ t "menu.show_only_unread_entries" }}</a>
+            </li>
+        {{ end }}
+            <li>
+                <a href="{{ route "categoryFeeds" "categoryID" .category.ID }}">{{ icon "feeds" }}{{ t "menu.feeds" }}</a>
+            </li>
+            <li>
+                <a href="{{ route "refreshCategoryEntriesPage" "categoryID" .category.ID }}">{{ icon "refresh" }}{{ t "menu.refresh_all_feeds" }}</a>
+            </li>
+        </ul>
+    </nav>
 </section>
 
 {{ if not .entries }}

+ 32 - 24
internal/template/templates/views/category_feeds.html

@@ -2,30 +2,38 @@
 
 {{ define "content"}}
 <section class="page-header">
-    <h1 dir="auto">{{ .category.Title }} &gt; {{ t "page.feeds.title" }} ({{ .total }})</h1>
-    <ul>
-        <li>
-            <a href="{{ route "categoryEntries" "categoryID" .category.ID }}">{{ icon "entries" }}{{ t "menu.feed_entries" }}</a>
-        </li>
-        <li>
-            <a href="{{ route "editCategory" "categoryID" .category.ID }}">{{ icon "edit" }}{{ t "menu.edit_category" }}</a>
-        </li>
-        {{ if eq .total 0 }}
-        <li>
-            <a href="#"
-                data-confirm="true"
-                data-label-question="{{ t "confirm.question" }}"
-                data-label-yes="{{ t "confirm.yes" }}"
-                data-label-no="{{ t "confirm.no" }}"
-                data-label-loading="{{ t "confirm.loading" }}"
-                data-redirect-url="{{ route "categories" }}"
-                data-url="{{ route "removeCategory" "categoryID" .category.ID }}">{{ icon "delete" }}{{ t "action.remove" }}</a>
-        </li>
-        {{ end }}
-        <li>
-            <a href="{{ route "refreshCategoryFeedsPage" "categoryID" .category.ID }}">{{ icon "refresh" }}{{ t "menu.refresh_all_feeds" }}</a>
-        </li>
-    </ul>
+    <h1 dir="auto">
+        {{ .category.Title }} <span aria-hidden="true">&gt;</span> {{ t "page.feeds.title" }}
+        <span aria-hidden="true"> ({{ .total }})</span>
+    </h1>
+    <span class="sr-only">
+        {{ t "page.categories.feeds.total" }}: {{ .total }}
+    </span>
+    <nav aria-label="{{ .category.Title }} {{ t "page.feeds.title" }} {{ t "menu.title" }}">
+        <ul>
+            <li>
+                <a href="{{ route "categoryEntries" "categoryID" .category.ID }}">{{ icon "entries" }}{{ t "menu.feed_entries" }}</a>
+            </li>
+            <li>
+                <a href="{{ route "editCategory" "categoryID" .category.ID }}">{{ icon "edit" }}{{ t "menu.edit_category" }}</a>
+            </li>
+            {{ if eq .total 0 }}
+            <li>
+                <a href="#"
+                    data-confirm="true"
+                    data-label-question="{{ t "confirm.question" }}"
+                    data-label-yes="{{ t "confirm.yes" }}"
+                    data-label-no="{{ t "confirm.no" }}"
+                    data-label-loading="{{ t "confirm.loading" }}"
+                    data-redirect-url="{{ route "categories" }}"
+                    data-url="{{ route "removeCategory" "categoryID" .category.ID }}">{{ icon "delete" }}{{ t "action.remove" }}</a>
+            </li>
+            {{ end }}
+            <li>
+                <a href="{{ route "refreshCategoryFeedsPage" "categoryID" .category.ID }}">{{ icon "refresh" }}{{ t "menu.refresh_all_feeds" }}</a>
+            </li>
+        </ul>
+    </nav>
 </section>
 
 {{ if not .feeds }}

+ 7 - 5
internal/template/templates/views/create_category.html

@@ -3,11 +3,13 @@
 {{ define "content"}}
 <section class="page-header">
     <h1>{{ t "page.new_category.title" }}</h1>
-    <ul>
-        <li>
-            <a href="{{ route "categories" }}">{{ icon "categories" }}{{ t "menu.categories" }}</a>
-        </li>
-    </ul>
+    <nav aria-label="{{ t "page.new_category.title" }} {{ t "menu.title" }}">
+        <ul>
+            <li>
+                <a href="{{ route "categories" }}">{{ icon "categories" }}{{ t "menu.categories" }}</a>
+            </li>
+        </ul>
+    </nav>
 </section>
 
 <form action="{{ route "saveCategory" }}" method="post" autocomplete="off">

+ 13 - 11
internal/template/templates/views/edit_category.html

@@ -3,17 +3,19 @@
 {{ define "content"}}
 <section class="page-header">
     <h1>{{ t "page.edit_category.title" .category.Title }}</h1>
-    <ul>
-        <li>
-            <a href="{{ route "categories" }}">{{ icon "categories" }}{{ t "menu.categories" }}</a>
-        </li>
-        <li>
-            <a href="{{ route "categoryFeeds" "categoryID" .category.ID }}">{{ icon "feeds" }}{{ t "menu.feeds" }}</a>
-        </li>
-        <li>
-            <a href="{{ route "createCategory" }}">{{ icon "add-category" }}{{ t "menu.create_category" }}</a>
-        </li>
-    </ul>
+    <nav aria-label="{{ t "page.edit_category.title" .category.Title }} {{ t "menu.title" }}">
+        <ul>
+            <li>
+                <a href="{{ route "categories" }}">{{ icon "categories" }}{{ t "menu.categories" }}</a>
+            </li>
+            <li>
+                <a href="{{ route "categoryFeeds" "categoryID" .category.ID }}">{{ icon "feeds" }}{{ t "menu.feeds" }}</a>
+            </li>
+            <li>
+                <a href="{{ route "createCategory" }}">{{ icon "add-category" }}{{ t "menu.create_category" }}</a>
+            </li>
+        </ul>
+    </nav>
 </section>
 
 <form action="{{ route "updateCategory" "categoryID" .category.ID }}" method="post" autocomplete="off">

+ 20 - 18
internal/template/templates/views/edit_feed.html

@@ -3,24 +3,26 @@
 {{ define "content"}}
 <section class="page-header">
     <h1 dir="auto">{{ .feed.Title }}</h1>
-    <ul>
-        <li>
-            <a href="{{ route "feeds" }}">{{ icon "feeds" }}{{ t "menu.feeds" }}</a>
-        </li>
-        <li>
-            <a href="{{ route "feedEntries" "feedID" .feed.ID }}">{{ icon "entries" }}{{ t "menu.feed_entries" }}</a>
-        </li>
-        <li>
-            <a href="#"
-                data-confirm="true"
-                data-label-question="{{ t "confirm.question.refresh" }}"
-                data-label-yes="{{ t "confirm.yes" }}"
-                data-label-no="{{ t "confirm.no" }}"
-                data-label-loading="{{ t "confirm.loading" }}"
-                data-url="{{ route "refreshFeed" "feedID" .feed.ID }}?forceRefresh=true"
-                data-no-action-url="{{ route "refreshFeed" "feedID" .feed.ID }}?forceRefresh=false">{{ icon "refresh" }}{{ t "menu.refresh_feed" }}</a>
-        </li>
-    </ul>
+    <nav aria-label="{{ .feed.Title }} {{ t "menu.title" }}">
+        <ul>
+            <li>
+                <a href="{{ route "feeds" }}">{{ icon "feeds" }}{{ t "menu.feeds" }}</a>
+            </li>
+            <li>
+                <a href="{{ route "feedEntries" "feedID" .feed.ID }}">{{ icon "entries" }}{{ t "menu.feed_entries" }}</a>
+            </li>
+            <li>
+                <a href="#"
+                    data-confirm="true"
+                    data-label-question="{{ t "confirm.question.refresh" }}"
+                    data-label-yes="{{ t "confirm.yes" }}"
+                    data-label-no="{{ t "confirm.no" }}"
+                    data-label-loading="{{ t "confirm.loading" }}"
+                    data-url="{{ route "refreshFeed" "feedID" .feed.ID }}?forceRefresh=true"
+                    data-no-action-url="{{ route "refreshFeed" "feedID" .feed.ID }}?forceRefresh=false">{{ icon "refresh" }}{{ t "menu.refresh_feed" }}</a>
+            </li>
+        </ul>
+    </nav>
 </section>
 
 {{ if not .categories }}

+ 62 - 53
internal/template/templates/views/feed_entries.html

@@ -4,63 +4,72 @@
 <section class="page-header">
     <h1 dir="auto">
         <a href="{{ .feed.SiteURL | safeURL  }}" title="{{ .feed.SiteURL }}" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer" data-original-link="{{ .user.MarkReadOnView }}">{{ .feed.Title }}</a>
-        ({{ .total }})
+        <span aria-hidden="true">({{ .total }})</span>
     </h1>
-    <ul>
-        {{ if .entries }}
-        <li>
-            <a href="#"
-                data-action="markPageAsRead"
-                data-label-question="{{ t "confirm.question" }}"
-                data-label-yes="{{ t "confirm.yes" }}"
-                data-label-no="{{ t "confirm.no" }}"
-                data-label-loading="{{ t "confirm.loading" }}"
-                data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}">{{ icon "mark-page-as-read" }}{{ t "menu.mark_page_as_read" }}</a>
-        </li>
-        <li>
-            <a href="#"
-                data-confirm="true"
-                data-label-question="{{ t "confirm.question" }}"
-                data-label-yes="{{ t "confirm.yes" }}"
-                data-label-no="{{ t "confirm.no" }}"
-                data-label-loading="{{ t "confirm.loading" }}"
-                data-url="{{ route "markFeedAsRead" "feedID" .feed.ID }}">{{ icon "mark-all-as-read" }}{{ t "menu.mark_all_as_read" }}</a>
-        </li>
-        {{ end }}
+    <span class="sr-only">
         {{ if .showOnlyUnreadEntries }}
-        <li>
-            <a href="{{ route "feedEntriesAll" "feedID" .feed.ID }}">{{ icon "show-all-entries" }}{{ t "menu.show_all_entries" }}</a>
-        </li>
+        {{ t "page.feeds.unread_counter" }}: {{ .total }}
         {{ else }}
-        <li>
-            <a href="{{ route "feedEntries" "feedID" .feed.ID }}">{{ icon "show-unread-entries" }}{{ t "menu.show_only_unread_entries" }}</a>
-        </li>
+        {{ t "page.feeds.read_counter" }}: {{ .total }}
         {{ end }}
-        <li>
-            <a href="#"
-                data-confirm="true"
-                data-label-question="{{ t "confirm.question.refresh" }}"
-                data-label-yes="{{ t "confirm.yes" }}"
-                data-label-no="{{ t "confirm.no" }}"
-                data-label-loading="{{ t "confirm.loading" }}"
-                data-url="{{ route "refreshFeed" "feedID" .feed.ID }}?forceRefresh=true"
-                data-no-action-url="{{ route "refreshFeed" "feedID" .feed.ID }}?forceRefresh=false">{{ icon "refresh" }}{{ t "menu.refresh_feed" }}</a>
-        </li>
-        <li>
-            <a href="{{ route "editFeed" "feedID" .feed.ID }}">{{ icon "edit" }}{{ t "menu.edit_feed" }}</a>
-        </li>
-        <li>
-            <a href="#"
-                data-confirm="true"
-                data-action="remove-feed"
-                data-label-question="{{ t "confirm.question" }}"
-                data-label-yes="{{ t "confirm.yes" }}"
-                data-label-no="{{ t "confirm.no" }}"
-                data-label-loading="{{ t "confirm.loading" }}"
-                data-url="{{ route "removeFeed" "feedID" .feed.ID }}"
-                data-redirect-url="{{ route "feeds" }}">{{ icon "delete" }}{{ t "action.remove_feed" }}</a>
-        </li>
-    </ul>
+    </span>
+    <nav aria-label="{{ .feed.Title }} {{ t "menu.title" }}">
+        <ul>
+            {{ if .entries }}
+            <li>
+                <a href="#"
+                    data-action="markPageAsRead"
+                    data-label-question="{{ t "confirm.question" }}"
+                    data-label-yes="{{ t "confirm.yes" }}"
+                    data-label-no="{{ t "confirm.no" }}"
+                    data-label-loading="{{ t "confirm.loading" }}"
+                    data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}">{{ icon "mark-page-as-read" }}{{ t "menu.mark_page_as_read" }}</a>
+            </li>
+            <li>
+                <a href="#"
+                    data-confirm="true"
+                    data-label-question="{{ t "confirm.question" }}"
+                    data-label-yes="{{ t "confirm.yes" }}"
+                    data-label-no="{{ t "confirm.no" }}"
+                    data-label-loading="{{ t "confirm.loading" }}"
+                    data-url="{{ route "markFeedAsRead" "feedID" .feed.ID }}">{{ icon "mark-all-as-read" }}{{ t "menu.mark_all_as_read" }}</a>
+            </li>
+            {{ end }}
+            {{ if .showOnlyUnreadEntries }}
+            <li>
+                <a href="{{ route "feedEntriesAll" "feedID" .feed.ID }}">{{ icon "show-all-entries" }}{{ t "menu.show_all_entries" }}</a>
+            </li>
+            {{ else }}
+            <li>
+                <a href="{{ route "feedEntries" "feedID" .feed.ID }}">{{ icon "show-unread-entries" }}{{ t "menu.show_only_unread_entries" }}</a>
+            </li>
+            {{ end }}
+            <li>
+                <a href="#"
+                    data-confirm="true"
+                    data-label-question="{{ t "confirm.question.refresh" }}"
+                    data-label-yes="{{ t "confirm.yes" }}"
+                    data-label-no="{{ t "confirm.no" }}"
+                    data-label-loading="{{ t "confirm.loading" }}"
+                    data-url="{{ route "refreshFeed" "feedID" .feed.ID }}?forceRefresh=true"
+                    data-no-action-url="{{ route "refreshFeed" "feedID" .feed.ID }}?forceRefresh=false">{{ icon "refresh" }}{{ t "menu.refresh_feed" }}</a>
+            </li>
+            <li>
+                <a href="{{ route "editFeed" "feedID" .feed.ID }}">{{ icon "edit" }}{{ t "menu.edit_feed" }}</a>
+            </li>
+            <li>
+                <a href="#"
+                    data-confirm="true"
+                    data-action="remove-feed"
+                    data-label-question="{{ t "confirm.question" }}"
+                    data-label-yes="{{ t "confirm.yes" }}"
+                    data-label-no="{{ t "confirm.no" }}"
+                    data-label-loading="{{ t "confirm.loading" }}"
+                    data-url="{{ route "removeFeed" "feedID" .feed.ID }}"
+                    data-redirect-url="{{ route "feeds" }}">{{ icon "delete" }}{{ t "action.remove_feed" }}</a>
+            </li>
+        </ul>
+    </nav>
 </section>
 
 {{ if ne .feed.ParsingErrorCount 0 }}

+ 23 - 17
internal/template/templates/views/history_entries.html

@@ -2,23 +2,29 @@
 
 {{ define "content"}}
 <section class="page-header">
-    <h1>{{ t "page.history.title" }} ({{ .total }})</h1>
-    <ul>
-        {{ if .entries }}
-        <li>
-            <a href="#"
-                data-confirm="true"
-                data-url="{{ route "flushHistory" }}"
-                data-label-question="{{ t "confirm.question" }}"
-                data-label-yes="{{ t "confirm.yes" }}"
-                data-label-no="{{ t "confirm.no" }}"
-                data-label-loading="{{ t "confirm.loading" }}">{{ icon "delete" }}{{ t "menu.flush_history" }}</a>
-        </li>
-        {{ end }}
-        <li>
-            <a href="{{ route "sharedEntries" }}">{{ icon "share" }}{{ t "menu.shared_entries" }}</a>
-        </li>
-    </ul>
+    <h1>
+        {{ t "page.history.title" }}
+        <span aria-hidden="true">({{ .total }})</span>
+    </h1>
+    <span class="sr-only">{{ t "page.history.total" }}: {{ .total }}</span>
+    <nav aria-label="{{ t "page.history.title" }} {{ t "menu.title" }}">
+        <ul>
+            {{ if .entries }}
+            <li>
+                <a href="#"
+                    data-confirm="true"
+                    data-url="{{ route "flushHistory" }}"
+                    data-label-question="{{ t "confirm.question" }}"
+                    data-label-yes="{{ t "confirm.yes" }}"
+                    data-label-no="{{ t "confirm.no" }}"
+                    data-label-loading="{{ t "confirm.loading" }}">{{ icon "delete" }}{{ t "menu.flush_history" }}</a>
+            </li>
+            {{ end }}
+            <li>
+                <a href="{{ route "sharedEntries" }}">{{ icon "share" }}{{ t "menu.shared_entries" }}</a>
+            </li>
+        </ul>
+    </nav>
 </section>
 
 {{ if not .entries }}

+ 21 - 15
internal/template/templates/views/shared_entries.html

@@ -2,22 +2,28 @@
 
 {{ define "content"}}
 <section class="page-header">
-    <h1>{{ t "page.shared_entries.title" }} ({{ .total }})</h1>
+    <h1>
+        {{ t "page.shared_entries.title" }}
+        <span aria-hidden="true">({{ .total }})</span>
+    </h1>
+    <span class="sr-only">{{ t "page.shared_entries.total" }}: {{ .total }}</span>
     {{ if .entries }}
-    <ul>
-        <li>
-            <a href="#"
-                data-confirm="true"
-                data-url="{{ route "flushHistory" }}"
-                data-label-question="{{ t "confirm.question" }}"
-                data-label-yes="{{ t "confirm.yes" }}"
-                data-label-no="{{ t "confirm.no" }}"
-                data-label-loading="{{ t "confirm.loading" }}">{{ icon "delete" }}{{ t "menu.flush_history" }}</a>
-        </li>
-        <li>
-            <a href="{{ route "sharedEntries" }}">{{ icon "share" }}{{ t "menu.shared_entries" }}</a>
-        </li>
-    </ul>
+    <nav aria-label="{{ t "page.shared_entries.title" }} {{ t "menu.title" }}">
+        <ul>
+            <li>
+                <a href="#"
+                    data-confirm="true"
+                    data-url="{{ route "flushHistory" }}"
+                    data-label-question="{{ t "confirm.question" }}"
+                    data-label-yes="{{ t "confirm.yes" }}"
+                    data-label-no="{{ t "confirm.no" }}"
+                    data-label-loading="{{ t "confirm.loading" }}">{{ icon "delete" }}{{ t "menu.flush_history" }}</a>
+            </li>
+            <li>
+                <a href="{{ route "sharedEntries" }}">{{ icon "share" }}{{ t "menu.shared_entries" }}</a>
+            </li>
+        </ul>
+    </nav>
     {{ end }}
 </section>
 

+ 28 - 22
internal/template/templates/views/unread_entries.html

@@ -2,29 +2,35 @@
 
 {{ define "content"}}
 <section class="page-header">
-    <h1>{{ t "page.unread.title" }} (<span class="unread-counter">{{ .countUnread }}</span>)</h1>
+    <h1>
+        {{ t "page.unread.title" }}
+        <span aria-hidden="true">(<span class="unread-counter">{{ .countUnread }}</span>)</span>
+    </h1>
+    <span class="sr-only">{{ t "page.unread.total" }}: {{ .countUnread }}</span>
     {{ if .entries }}
-    <ul>
-        <li>
-            <a href="#"
-                data-action="markPageAsRead"
-                data-show-only-unread="1"
-                data-label-question="{{ t "confirm.question" }}"
-                data-label-yes="{{ t "confirm.yes" }}"
-                data-label-no="{{ t "confirm.no" }}"
-                data-label-loading="{{ t "confirm.loading" }}">{{ icon "mark-page-as-read" }}{{ t "menu.mark_page_as_read" }}</a>
-        </li>
-        <li>
-            <a href="#"
-                data-confirm="true"
-                data-url="{{ route "markAllAsRead" }}"
-                data-redirect-url="{{ route "unread" }}"
-                data-label-question="{{ t "confirm.question" }}"
-                data-label-yes="{{ t "confirm.yes" }}"
-                data-label-no="{{ t "confirm.no" }}"
-                data-label-loading="{{ t "confirm.loading" }}">{{ icon "mark-all-as-read" }}{{ t "menu.mark_all_as_read" }}</a>
-        </li>
-    </ul>
+    <nav aria-label="{{ t "page.unread.title" }} {{ t "menu.title" }}">
+        <ul>
+            <li>
+                <a href="#"
+                    data-action="markPageAsRead"
+                    data-show-only-unread="1"
+                    data-label-question="{{ t "confirm.question" }}"
+                    data-label-yes="{{ t "confirm.yes" }}"
+                    data-label-no="{{ t "confirm.no" }}"
+                    data-label-loading="{{ t "confirm.loading" }}">{{ icon "mark-page-as-read" }}{{ t "menu.mark_page_as_read" }}</a>
+            </li>
+            <li>
+                <a href="#"
+                    data-confirm="true"
+                    data-url="{{ route "markAllAsRead" }}"
+                    data-redirect-url="{{ route "unread" }}"
+                    data-label-question="{{ t "confirm.question" }}"
+                    data-label-yes="{{ t "confirm.yes" }}"
+                    data-label-no="{{ t "confirm.no" }}"
+                    data-label-loading="{{ t "confirm.loading" }}">{{ icon "mark-all-as-read" }}{{ t "menu.mark_all_as_read" }}</a>
+            </li>
+        </ul>
+    </nav>
     {{ end }}
 </section>
 

+ 14 - 0
internal/ui/static/css/common.css

@@ -50,6 +50,20 @@ a:hover {
     text-decoration: none;
 }
 
+.sr-only {
+  border: 0 !important;
+  clip: rect(1px, 1px, 1px, 1px) !important;
+  -webkit-clip-path: inset(50%) !important;
+  clip-path: inset(50%) !important;
+  height: 1px !important;
+  overflow: hidden !important;
+  margin: -1px !important;
+  padding: 0 !important;
+  position: absolute !important;
+  width: 1px !important;
+  white-space: nowrap !important;
+}
+
 /* Header and main menu */
 .header {
     margin-top: 10px;