{}} />
+ >
+ );
+ expect(screen.getByRole('separator', { name: 'resize' })).toBeInTheDocument();
+ expect(screen.getByRole('button', { name: 'close' })).toBeInTheDocument();
+ });
+});
diff --git a/components/layout/inline-app-view.tsx b/components/layout/inline-app-view.tsx
index 368d49c55..c74296236 100644
--- a/components/layout/inline-app-view.tsx
+++ b/components/layout/inline-app-view.tsx
@@ -1,6 +1,8 @@
'use client';
+import { useTranslations } from 'next-intl';
import { X } from '@/components/icons';
+import { IconButton } from '@/components/ui/icon-button';
import { cn } from '@/lib/utils';
import type { InlineAppState } from '@/hooks/use-sidebar-apps';
@@ -12,6 +14,7 @@ interface InlineAppViewProps {
}
export function InlineAppView({ apps, activeAppId, onClose, className }: InlineAppViewProps) {
+ const tCommon = useTranslations('common');
const activeApp = apps.find((a) => a.id === activeAppId);
return (
@@ -19,13 +22,9 @@ export function InlineAppView({ apps, activeAppId, onClose, className }: InlineA
{/* Header bar */}
{activeApp?.name}
-
+
+
+
{/* Iframes - active one visible, rest hidden but alive */}
diff --git a/components/layout/mv-top-bar.tsx b/components/layout/mv-top-bar.tsx
index f3e74cf9a..9694e6763 100644
--- a/components/layout/mv-top-bar.tsx
+++ b/components/layout/mv-top-bar.tsx
@@ -117,6 +117,7 @@ export function MvTopBar({
}: MvTopBarProps) {
const t = useTranslations("sidebar");
const tSearch = useTranslations("advanced_search");
+ const tShell = useTranslations("shell");
const pathname = usePathname();
const router = useRouter();
const allInboxesReachable = useAllInboxesReachable();
@@ -289,7 +290,7 @@ export function MvTopBar({
href={`${getPathPrefix()}/admin`}
className="relative grid place-items-center w-12 h-12 rounded-full text-muted-foreground hover:bg-muted hover:text-foreground transition-colors"
title={t("admin")}
- aria-label={t("admin")}
+ aria-label={hasUpdate ? `${t("admin")}, ${tShell(updateImportant ? "update_important" : "update_available")}` : t("admin")}
>
{hasUpdate && (
@@ -298,7 +299,7 @@ export function MvTopBar({
"absolute top-3 end-3 w-2 h-2 rounded-full ring-2 ring-background",
updateImportant ? "bg-red-500" : "bg-amber-500",
)}
- aria-label={updateImportant ? "Important update available" : "Update available"}
+ aria-hidden="true"
/>
)}
diff --git a/components/layout/navigation-rail.tsx b/components/layout/navigation-rail.tsx
index 1ea2ad81f..c3c0af96b 100644
--- a/components/layout/navigation-rail.tsx
+++ b/components/layout/navigation-rail.tsx
@@ -253,6 +253,9 @@ export function NavigationRail({
const startUpdatePolling = useUpdateStore((s) => s.startPolling);
useEffect(() => { startUpdatePolling(); }, [startUpdatePolling]);
const updateImportant = updateSeverity === 'security' || updateSeverity === 'deprecated';
+ const tShell = useTranslations("shell");
+ // Said with the admin entry; its dot alone is not announced.
+ const updateLabel = hasUpdate ? tShell(updateImportant ? "update_important" : "update_available") : null;
// Account list for rail
const accounts = useAccountStore((s) => s.accounts);
@@ -501,11 +504,12 @@ export function NavigationRail({
"absolute -top-0.5 -end-0.5 w-2 h-2 rounded-full ring-2 ring-background",
updateImportant ? "bg-red-500" : "bg-amber-500",
)}
- aria-label={updateImportant ? "Important update available" : "Update available"}
+ aria-hidden="true"
/>
)}
{t("admin") || "Admin"}
+ {updateLabel && {`, ${updateLabel}`}}
)}
@@ -729,6 +733,7 @@ export function NavigationRail({
adminActive ? "bg-primary/10 text-primary" : "text-muted-foreground hover:text-foreground hover:bg-muted",
)}
title={t("admin") || "Admin"}
+ aria-label={updateLabel ? `${t("admin") || "Admin"}, ${updateLabel}` : undefined}
aria-current={adminActive ? "page" : undefined}
>
@@ -738,7 +743,7 @@ export function NavigationRail({
"absolute top-2 end-2 w-2 h-2 rounded-full ring-2 ring-background",
updateImportant ? "bg-red-500" : "bg-amber-500",
)}
- aria-label={updateImportant ? "Important update available" : "Update available"}
+ aria-hidden="true"
/>
)}
diff --git a/components/layout/resize-handle.tsx b/components/layout/resize-handle.tsx
index 81915c038..33e853d90 100644
--- a/components/layout/resize-handle.tsx
+++ b/components/layout/resize-handle.tsx
@@ -1,6 +1,7 @@
"use client";
import { useCallback, useEffect, useRef } from "react";
+import { useTranslations } from "next-intl";
import { cn } from "@/lib/utils";
interface ResizeHandleProps {
@@ -17,6 +18,7 @@ interface ResizeHandleProps {
const KEYBOARD_STEP = 10;
export function ResizeHandle({ onResizeStart, onResize, onResizeEnd, onDoubleClick, orientation = "vertical", className, testId }: ResizeHandleProps) {
+ const t = useTranslations("shell");
const handleRef = useRef(null);
// Id of the pointer that started the drag, or null when idle. Only that
// pointer may move or end the drag, so a second finger or button can't
@@ -120,7 +122,7 @@ export function ResizeHandle({ onResizeStart, onResize, onResizeEnd, onDoubleCli
ref={handleRef}
role="separator"
aria-orientation={isHorizontal ? "horizontal" : "vertical"}
- aria-label="Resize"
+ aria-label={t("resize")}
data-testid={testId}
tabIndex={0}
onPointerDown={handlePointerDown}
diff --git a/components/layout/sidebar.tsx b/components/layout/sidebar.tsx
index 2ae285a74..f8d48490d 100644
--- a/components/layout/sidebar.tsx
+++ b/components/layout/sidebar.tsx
@@ -222,6 +222,7 @@ function SidebarRowCounts({
isSelected: boolean;
onUnreadClick?: () => void;
}) {
+ const tShell = useTranslations('shell');
const showFolderTotalCount = useSettingsStore(s => s.showFolderTotalCount);
const mountainView = useSettingsStore(s => s.interfaceLayout === 'mountain-view');
// Per-folder override from the folder settings (#982).
@@ -272,7 +273,7 @@ function SidebarRowCounts({
}
}}
className={cn(unreadClass, "cursor-pointer hover:underline")}
- title={`${unreadCount} unread`}
+ title={tShell("folder_unread", { count: unreadCount })}
>
{unreadCount}
@@ -284,7 +285,7 @@ function SidebarRowCounts({
return (
0 ? `${unreadCount} unread / ${totalCount} total` : `${unreadCount} unread`}
+ title={totalCount > 0 ? tShell("folder_counts", { unread: unreadCount, total: totalCount }) : tShell("folder_unread", { count: unreadCount })}
data-testid="folder-counts"
data-unread={unreadCount}
data-total={totalCount}
diff --git a/locales/ar/common.json b/locales/ar/common.json
index 9680a164b..fb4ddec8d 100644
--- a/locales/ar/common.json
+++ b/locales/ar/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "خيارات أخرى"
},
+ "shell": {
+ "resize": "تغيير الحجم",
+ "update_available": "يتوفر تحديث",
+ "update_important": "يتوفر تحديث مهم",
+ "folder_unread": "{count} غير مقروءة",
+ "folder_counts": "{unread} غير مقروءة، {total} إجمالًا"
+ },
"plugin_pages": {
"loading": "جارٍ تحميل الصفحة",
"not_available_title": "هذه الصفحة غير متاحة",
diff --git a/locales/ca/common.json b/locales/ca/common.json
index 76cc628b9..e765a488e 100644
--- a/locales/ca/common.json
+++ b/locales/ca/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Més opcions"
},
+ "shell": {
+ "resize": "Canvia la mida",
+ "update_available": "Hi ha una actualització",
+ "update_important": "Hi ha una actualització important",
+ "folder_unread": "{count} sense llegir",
+ "folder_counts": "{unread} sense llegir, {total} en total"
+ },
"plugin_pages": {
"loading": "S'està carregant la pàgina",
"not_available_title": "Aquesta pàgina no està disponible",
diff --git a/locales/cs/common.json b/locales/cs/common.json
index b2a16fcb7..5acec63ea 100644
--- a/locales/cs/common.json
+++ b/locales/cs/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Další možnosti"
},
+ "shell": {
+ "resize": "Změnit velikost",
+ "update_available": "Je k dispozici aktualizace",
+ "update_important": "Je k dispozici důležitá aktualizace",
+ "folder_unread": "Nepřečteno: {count}",
+ "folder_counts": "Nepřečteno: {unread}, celkem: {total}"
+ },
"plugin_pages": {
"loading": "Načítání stránky",
"not_available_title": "Tato stránka není k dispozici",
diff --git a/locales/da/common.json b/locales/da/common.json
index 6ba2d2f33..5cfebcf04 100644
--- a/locales/da/common.json
+++ b/locales/da/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Flere muligheder"
},
+ "shell": {
+ "resize": "Tilpas størrelse",
+ "update_available": "Opdatering tilgængelig",
+ "update_important": "Vigtig opdatering tilgængelig",
+ "folder_unread": "{count} ulæste",
+ "folder_counts": "{unread} ulæste, {total} i alt"
+ },
"plugin_pages": {
"loading": "Indlæser side",
"not_available_title": "Denne side er ikke tilgængelig",
diff --git a/locales/de/common.json b/locales/de/common.json
index 1461e4a8b..ba45b371c 100644
--- a/locales/de/common.json
+++ b/locales/de/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Weitere Optionen"
},
+ "shell": {
+ "resize": "Größe ändern",
+ "update_available": "Update verfügbar",
+ "update_important": "Wichtiges Update verfügbar",
+ "folder_unread": "{count} ungelesen",
+ "folder_counts": "{unread} ungelesen, {total} insgesamt"
+ },
"plugin_pages": {
"loading": "Seite wird geladen",
"not_available_title": "Diese Seite ist nicht verfügbar",
diff --git a/locales/en/common.json b/locales/en/common.json
index 78719b817..b34cacbbf 100644
--- a/locales/en/common.json
+++ b/locales/en/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "More options"
},
+ "shell": {
+ "resize": "Resize",
+ "update_available": "Update available",
+ "update_important": "Important update available",
+ "folder_unread": "{count} unread",
+ "folder_counts": "{unread} unread, {total} total"
+ },
"plugin_pages": {
"loading": "Loading page",
"not_available_title": "This page is not available",
diff --git a/locales/es/common.json b/locales/es/common.json
index c98e82ab6..672e7a0fc 100644
--- a/locales/es/common.json
+++ b/locales/es/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Más opciones"
},
+ "shell": {
+ "resize": "Cambiar tamaño",
+ "update_available": "Actualización disponible",
+ "update_important": "Actualización importante disponible",
+ "folder_unread": "{count} sin leer",
+ "folder_counts": "{unread} sin leer, {total} en total"
+ },
"plugin_pages": {
"loading": "Cargando la página",
"not_available_title": "Esta página no está disponible",
diff --git a/locales/et/common.json b/locales/et/common.json
index eaca8757c..e726eeff0 100644
--- a/locales/et/common.json
+++ b/locales/et/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Rohkem valikuid"
},
+ "shell": {
+ "resize": "Muuda suurust",
+ "update_available": "Saadaval on värskendus",
+ "update_important": "Saadaval on oluline värskendus",
+ "folder_unread": "Lugemata: {count}",
+ "folder_counts": "Lugemata: {unread}, kokku: {total}"
+ },
"plugin_pages": {
"loading": "Lehe laadimine",
"not_available_title": "See leht pole saadaval",
diff --git a/locales/fa/common.json b/locales/fa/common.json
index 2ee1e9747..1840ca58d 100644
--- a/locales/fa/common.json
+++ b/locales/fa/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "گزینههای بیشتر"
},
+ "shell": {
+ "resize": "تغییر اندازه",
+ "update_available": "بهروزرسانی موجود است",
+ "update_important": "بهروزرسانی مهم موجود است",
+ "folder_unread": "{count} خواندهنشده",
+ "folder_counts": "{unread} خواندهنشده، {total} در مجموع"
+ },
"plugin_pages": {
"loading": "در حال بارگذاری صفحه",
"not_available_title": "این صفحه در دسترس نیست",
diff --git a/locales/fr/common.json b/locales/fr/common.json
index 051a31a6c..421f256f9 100644
--- a/locales/fr/common.json
+++ b/locales/fr/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Plus d'options"
},
+ "shell": {
+ "resize": "Redimensionner",
+ "update_available": "Mise à jour disponible",
+ "update_important": "Mise à jour importante disponible",
+ "folder_unread": "{count} non lus",
+ "folder_counts": "{unread} non lus, {total} au total"
+ },
"plugin_pages": {
"loading": "Chargement de la page",
"not_available_title": "Cette page n'est pas disponible",
diff --git a/locales/he/common.json b/locales/he/common.json
index bfa7059f4..1fd39b1d0 100644
--- a/locales/he/common.json
+++ b/locales/he/common.json
@@ -4581,6 +4581,13 @@
"top_bar": {
"more": "אפשרויות נוספות"
},
+ "shell": {
+ "resize": "שינוי גודל",
+ "update_available": "יש עדכון",
+ "update_important": "יש עדכון חשוב",
+ "folder_unread": "{count} שלא נקראו",
+ "folder_counts": "{unread} שלא נקראו, {total} בסך הכול"
+ },
"plugin_pages": {
"loading": "טוען את הדף",
"not_available_title": "הדף הזה אינו זמין",
diff --git a/locales/hu/common.json b/locales/hu/common.json
index 9efe67330..b7a1127e6 100644
--- a/locales/hu/common.json
+++ b/locales/hu/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "További lehetőségek"
},
+ "shell": {
+ "resize": "Átméretezés",
+ "update_available": "Frissítés érhető el",
+ "update_important": "Fontos frissítés érhető el",
+ "folder_unread": "{count} olvasatlan",
+ "folder_counts": "{unread} olvasatlan, összesen {total}"
+ },
"plugin_pages": {
"loading": "Oldal betöltése",
"not_available_title": "Ez az oldal nem érhető el",
diff --git a/locales/it/common.json b/locales/it/common.json
index 38c756512..0b3a2be92 100644
--- a/locales/it/common.json
+++ b/locales/it/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Altre opzioni"
},
+ "shell": {
+ "resize": "Ridimensiona",
+ "update_available": "Aggiornamento disponibile",
+ "update_important": "Aggiornamento importante disponibile",
+ "folder_unread": "{count} non letti",
+ "folder_counts": "{unread} non letti, {total} in totale"
+ },
"plugin_pages": {
"loading": "Caricamento della pagina",
"not_available_title": "Questa pagina non è disponibile",
diff --git a/locales/ja/common.json b/locales/ja/common.json
index d4978091c..8424924fb 100644
--- a/locales/ja/common.json
+++ b/locales/ja/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "その他のオプション"
},
+ "shell": {
+ "resize": "サイズを変更",
+ "update_available": "アップデートがあります",
+ "update_important": "重要なアップデートがあります",
+ "folder_unread": "未読 {count} 件",
+ "folder_counts": "未読 {unread} 件 / 全 {total} 件"
+ },
"plugin_pages": {
"loading": "ページを読み込んでいます",
"not_available_title": "このページは利用できません",
diff --git a/locales/ko/common.json b/locales/ko/common.json
index a74721f69..e3d897ad0 100644
--- a/locales/ko/common.json
+++ b/locales/ko/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "추가 옵션"
},
+ "shell": {
+ "resize": "크기 조정",
+ "update_available": "업데이트가 있습니다",
+ "update_important": "중요한 업데이트가 있습니다",
+ "folder_unread": "읽지 않음 {count}개",
+ "folder_counts": "읽지 않음 {unread}개, 전체 {total}개"
+ },
"plugin_pages": {
"loading": "페이지를 불러오는 중",
"not_available_title": "이 페이지를 사용할 수 없습니다",
diff --git a/locales/lv/common.json b/locales/lv/common.json
index 5cb9cbe76..f7d1846c6 100644
--- a/locales/lv/common.json
+++ b/locales/lv/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Citas iespējas"
},
+ "shell": {
+ "resize": "Mainīt izmēru",
+ "update_available": "Pieejams atjauninājums",
+ "update_important": "Pieejams svarīgs atjauninājums",
+ "folder_unread": "Nelasīti: {count}",
+ "folder_counts": "Nelasīti: {unread}, kopā: {total}"
+ },
"plugin_pages": {
"loading": "Ielādē lapu",
"not_available_title": "Šī lapa nav pieejama",
diff --git a/locales/mn/common.json b/locales/mn/common.json
index 5b62a975f..38c52b3fa 100644
--- a/locales/mn/common.json
+++ b/locales/mn/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Бусад сонголт"
},
+ "shell": {
+ "resize": "Хэмжээ өөрчлөх",
+ "update_available": "Шинэчлэл гарсан",
+ "update_important": "Чухал шинэчлэл гарсан",
+ "folder_unread": "{count} уншаагүй",
+ "folder_counts": "{unread} уншаагүй, нийт {total}"
+ },
"plugin_pages": {
"loading": "Хуудсыг ачаалж байна",
"not_available_title": "Энэ хуудас боломжгүй байна",
diff --git a/locales/nb/common.json b/locales/nb/common.json
index 1d646f905..31a86f917 100644
--- a/locales/nb/common.json
+++ b/locales/nb/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Flere alternativer"
},
+ "shell": {
+ "resize": "Endre størrelse",
+ "update_available": "Oppdatering tilgjengelig",
+ "update_important": "Viktig oppdatering tilgjengelig",
+ "folder_unread": "{count} uleste",
+ "folder_counts": "{unread} uleste, {total} totalt"
+ },
"plugin_pages": {
"loading": "Laster inn siden",
"not_available_title": "Denne siden er ikke tilgjengelig",
diff --git a/locales/nl/common.json b/locales/nl/common.json
index f4e4dd7f3..0f0255bb9 100644
--- a/locales/nl/common.json
+++ b/locales/nl/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Meer opties"
},
+ "shell": {
+ "resize": "Formaat wijzigen",
+ "update_available": "Update beschikbaar",
+ "update_important": "Belangrijke update beschikbaar",
+ "folder_unread": "{count} ongelezen",
+ "folder_counts": "{unread} ongelezen, {total} totaal"
+ },
"plugin_pages": {
"loading": "Pagina laden",
"not_available_title": "Deze pagina is niet beschikbaar",
diff --git a/locales/pl/common.json b/locales/pl/common.json
index 4a7f4ea29..b4ac17fbb 100644
--- a/locales/pl/common.json
+++ b/locales/pl/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Więcej opcji"
},
+ "shell": {
+ "resize": "Zmień rozmiar",
+ "update_available": "Dostępna aktualizacja",
+ "update_important": "Dostępna ważna aktualizacja",
+ "folder_unread": "Nieprzeczytane: {count}",
+ "folder_counts": "Nieprzeczytane: {unread}, łącznie: {total}"
+ },
"plugin_pages": {
"loading": "Wczytywanie strony",
"not_available_title": "Ta strona jest niedostępna",
diff --git a/locales/pt/common.json b/locales/pt/common.json
index 344c3d826..b629709cb 100644
--- a/locales/pt/common.json
+++ b/locales/pt/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Mais opções"
},
+ "shell": {
+ "resize": "Redimensionar",
+ "update_available": "Atualização disponível",
+ "update_important": "Atualização importante disponível",
+ "folder_unread": "{count} não lidas",
+ "folder_counts": "{unread} não lidas, {total} no total"
+ },
"plugin_pages": {
"loading": "Carregando a página",
"not_available_title": "Esta página não está disponível",
diff --git a/locales/ro/common.json b/locales/ro/common.json
index 6daa65529..252f848be 100644
--- a/locales/ro/common.json
+++ b/locales/ro/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Mai multe opțiuni"
},
+ "shell": {
+ "resize": "Redimensionează",
+ "update_available": "Actualizare disponibilă",
+ "update_important": "Actualizare importantă disponibilă",
+ "folder_unread": "{count} necitite",
+ "folder_counts": "{unread} necitite, {total} în total"
+ },
"plugin_pages": {
"loading": "Se încarcă pagina",
"not_available_title": "Această pagină nu este disponibilă",
diff --git a/locales/ru/common.json b/locales/ru/common.json
index bba4f47b5..9b671594a 100644
--- a/locales/ru/common.json
+++ b/locales/ru/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Другие действия"
},
+ "shell": {
+ "resize": "Изменить размер",
+ "update_available": "Доступно обновление",
+ "update_important": "Доступно важное обновление",
+ "folder_unread": "Непрочитанных: {count}",
+ "folder_counts": "Непрочитанных: {unread}, всего: {total}"
+ },
"plugin_pages": {
"loading": "Загрузка страницы",
"not_available_title": "Эта страница недоступна",
diff --git a/locales/sk/common.json b/locales/sk/common.json
index 2f686d928..7a52faaec 100644
--- a/locales/sk/common.json
+++ b/locales/sk/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Ďalšie možnosti"
},
+ "shell": {
+ "resize": "Zmeniť veľkosť",
+ "update_available": "K dispozícii je aktualizácia",
+ "update_important": "K dispozícii je dôležitá aktualizácia",
+ "folder_unread": "Neprečítané: {count}",
+ "folder_counts": "Neprečítané: {unread}, spolu: {total}"
+ },
"plugin_pages": {
"loading": "Načítava sa stránka",
"not_available_title": "Táto stránka nie je k dispozícii",
diff --git a/locales/th/common.json b/locales/th/common.json
index 896b8b600..65fc76c51 100644
--- a/locales/th/common.json
+++ b/locales/th/common.json
@@ -41,6 +41,13 @@
"top_bar": {
"more": "ตัวเลือกเพิ่มเติม"
},
+ "shell": {
+ "resize": "ปรับขนาด",
+ "update_available": "มีอัปเดต",
+ "update_important": "มีอัปเดตสำคัญ",
+ "folder_unread": "ยังไม่ได้อ่าน {count}",
+ "folder_counts": "ยังไม่ได้อ่าน {unread} จากทั้งหมด {total}"
+ },
"date": {
"today": "วันนี้",
"yesterday": "เมื่อวานนี้",
diff --git a/locales/tr/common.json b/locales/tr/common.json
index 284279d5a..57c52ea3b 100644
--- a/locales/tr/common.json
+++ b/locales/tr/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Diğer seçenekler"
},
+ "shell": {
+ "resize": "Yeniden boyutlandır",
+ "update_available": "Güncelleme var",
+ "update_important": "Önemli güncelleme var",
+ "folder_unread": "{count} okunmamış",
+ "folder_counts": "{unread} okunmamış, toplam {total}"
+ },
"plugin_pages": {
"loading": "Sayfa yükleniyor",
"not_available_title": "Bu sayfa kullanılamıyor",
diff --git a/locales/uk/common.json b/locales/uk/common.json
index a44d9612d..fa1fbdb0e 100644
--- a/locales/uk/common.json
+++ b/locales/uk/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "Інші дії"
},
+ "shell": {
+ "resize": "Змінити розмір",
+ "update_available": "Доступне оновлення",
+ "update_important": "Доступне важливе оновлення",
+ "folder_unread": "Непрочитаних: {count}",
+ "folder_counts": "Непрочитаних: {unread}, усього: {total}"
+ },
"plugin_pages": {
"loading": "Завантаження сторінки",
"not_available_title": "Ця сторінка недоступна",
diff --git a/locales/zh-TW/common.json b/locales/zh-TW/common.json
index caf616f90..c50de1edc 100644
--- a/locales/zh-TW/common.json
+++ b/locales/zh-TW/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "更多選項"
},
+ "shell": {
+ "resize": "調整大小",
+ "update_available": "有可用的更新",
+ "update_important": "有重要更新",
+ "folder_unread": "{count} 封未讀",
+ "folder_counts": "{unread} 封未讀,共 {total} 封"
+ },
"plugin_pages": {
"loading": "正在載入頁面",
"not_available_title": "此頁面無法使用",
diff --git a/locales/zh/common.json b/locales/zh/common.json
index 303e158b4..706996c36 100644
--- a/locales/zh/common.json
+++ b/locales/zh/common.json
@@ -4580,6 +4580,13 @@
"top_bar": {
"more": "更多选项"
},
+ "shell": {
+ "resize": "调整大小",
+ "update_available": "有可用更新",
+ "update_important": "有重要更新",
+ "folder_unread": "{count} 封未读",
+ "folder_counts": "{unread} 封未读,共 {total} 封"
+ },
"plugin_pages": {
"loading": "正在加载页面",
"not_available_title": "此页面不可用",