fix: keep the phone conversation's reply buttons readable and count its messages with each language's plural forms

This commit is contained in:
Linus Rath
2026-10-28 12:46:18 +01:00
parent 8fb4e51dc5
commit 2bb63f648b
33 changed files with 129 additions and 106 deletions
@@ -70,3 +70,32 @@ describe('phone conversation header', () => {
expect(screen.getByRole('heading', { level: 1 }).className).toContain('line-clamp-2');
});
});
// In Arabic the per-message "Reply all" and "Forward" were cut with no way to
// read them, and the count said "3 رسالة" (one form for every number).
describe('phone conversation messages', () => {
it('counts the messages with the plural message', () => {
renderView({});
expect(screen.getByText('threads.messages_count')).toBeTruthy();
});
it('wraps the reply buttons instead of cutting their names', () => {
render(
<ThreadConversationView
thread={{ threadId: 't1', emails: [email], latestEmail: email } as never}
emails={[email] as never}
onBack={() => {}}
onReply={() => {}}
onReplyAll={() => {}}
onForward={() => {}}
/>,
);
const replyAll = screen.getByRole('button', { name: 'email_viewer.reply_all' });
expect(replyAll.parentElement?.className).toContain('flex-wrap');
for (const name of ['email_viewer.reply', 'email_viewer.reply_all', 'email_viewer.forward']) {
const button = screen.getByRole('button', { name });
expect(button.className).not.toContain('min-w-0');
expect(button.querySelector('.truncate')).toBeNull();
}
});
});
+10 -9
View File
@@ -263,7 +263,7 @@ export function ThreadConversationView({
{thread.latestEmail.subject || t("email_viewer.no_subject")}
</h1>
<p className="text-sm text-muted-foreground">
{t("threads.messages_other", { count: emails.length })}
{t("threads.messages_count", { count: emails.length })}
</p>
</div>
{actions && <ConversationHeaderActions email={thread.latestEmail} actions={actions} />}
@@ -436,8 +436,9 @@ function EmailCard({
<PluginSlot name="email-footer" className="w-full" extraProps={plugin.idProps} />
{/* Action Buttons; plugin reader actions behind a "more" button, as
in the single reader's More panel on phones. */}
<div className="px-4 pb-4 flex gap-2">
in the single reader's More panel on phones. Long names (Arabic
"Reply all") wrap to a second line instead of being cut. */}
<div className="px-4 pb-4 flex flex-wrap gap-2">
{onReply && (
<Button
variant="outline"
@@ -446,10 +447,10 @@ function EmailCard({
e.stopPropagation();
onReply();
}}
className="flex-1 min-w-0 px-2 whitespace-nowrap"
className="flex-auto px-2 whitespace-nowrap"
>
<Reply className="w-4 h-4 me-1.5 shrink-0" />
<span className="truncate">{t("email_viewer.reply")}</span>
{t("email_viewer.reply")}
</Button>
)}
{onReplyAll && (
@@ -460,10 +461,10 @@ function EmailCard({
e.stopPropagation();
onReplyAll();
}}
className="flex-1 min-w-0 px-2 whitespace-nowrap"
className="flex-auto px-2 whitespace-nowrap"
>
<ReplyAll className="w-4 h-4 me-1.5 shrink-0" />
<span className="truncate">{t("email_viewer.reply_all")}</span>
{t("email_viewer.reply_all")}
</Button>
)}
{onForward && (
@@ -474,10 +475,10 @@ function EmailCard({
e.stopPropagation();
onForward();
}}
className="flex-1 min-w-0 px-2 whitespace-nowrap"
className="flex-auto px-2 whitespace-nowrap"
>
<Forward className="w-4 h-4 me-1.5 shrink-0" />
<span className="truncate">{t("email_viewer.forward")}</span>
{t("email_viewer.forward")}
</Button>
)}
<PluginActions
@@ -429,7 +429,7 @@ async function openPhoneConversation(ref: Email, threadClient: JMAPClient, selec
fireEvent.click(await screen.findByText('Routing conversation'));
await screen.findByRole('button', { name: 'email_viewer.back_to_list' });
await waitFor(() => expect(threadFetch).toHaveBeenCalled());
await screen.findByText('threads.messages_other');
await screen.findByText('threads.messages_count');
return threadFetch;
}
+22
View File
@@ -241,3 +241,25 @@ describe('mail menu labels', () => {
expect(resolveKey(loadLocale(locale), 'email_viewer.keyboard_shortcuts')).not.toMatch(/[((][??؟][))]/);
});
});
describe('message counts', () => {
// The phone conversation said "3 رسالة": it used the hand-made "other"
// form for every count, and several plural messages missed the forms
// their language has (Arabic two/few/many, Russian few).
const KEYS = ['threads.messages_count', 'threads.messages_tooltip'];
const branches = (message: string) => new Set([...message.matchAll(/(?:^|[}\s,])(zero|one|two|few|many|other)\s*\{/g)].map((m) => m[1]));
it.each(locales)('%s has a plural form for every whole count', (locale) => {
const table = loadLocale(locale);
const rules = new Intl.PluralRules(locale);
const needed = new Set<string>();
for (let n = 0; n <= 200; n++) needed.add(rules.select(n));
const missing = KEYS.flatMap((key) => {
const message = resolveKey(table, key);
if (typeof message !== 'string' || !message.includes('plural')) return [`${key}: not a plural message`];
const have = branches(message);
return [...needed].filter((form) => !have.has(form)).map((form) => `${key}: ${form}`);
});
expect(missing).toEqual([]);
});
});
+3 -4
View File
@@ -3080,9 +3080,7 @@
}
},
"threads": {
"messages_one": "{count} رسالة",
"messages_other": "{count} رسالة",
"messages_tooltip": "{count, plural, one {# رسالة في هذه المحادثة} other {# رسالة في هذه المحادثة}}",
"messages_tooltip": "{count, plural, zero {لا رسائل في هذه المحادثة} one {رسالة واحدة في هذه المحادثة} two {رسالتان في هذه المحادثة} few {# رسائل في هذه المحادثة} many {# رسالة في هذه المحادثة} other {# رسالة في هذه المحادثة}}",
"expand": "توسيع المحادثة",
"collapse": "طي المحادثة",
"loading": "جارٍ تحميل المحادثة...",
@@ -3092,7 +3090,8 @@
"delete": "حذف المحادثة",
"star": "تمييز المحادثة بنجمة",
"unstar": "إزالة النجمة عن المحادثة",
"toggle_thread": "تبديل عرض المحادثة"
"toggle_thread": "تبديل عرض المحادثة",
"messages_count": "{count, plural, zero {لا رسائل} one {رسالة واحدة} two {رسالتان} few {# رسائل} many {# رسالة} other {# رسالة}}"
},
"identities": {
"modal_title": "إدارة هويات الإرسال",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count} missatge",
"messages_other": "{count} missatges",
"messages_tooltip": "{count, plural, one {# missatge en aquesta conversa} other {# missatges en aquesta conversa}}",
"expand": "Desplega la conversa",
"collapse": "Replega la conversa",
@@ -3092,7 +3090,8 @@
"delete": "Suprimeix la conversa",
"star": "Marca la conversa amb estrella",
"unstar": "Treu l'estrella de la conversa",
"toggle_thread": "Commuta el fil"
"toggle_thread": "Commuta el fil",
"messages_count": "{count, plural, one {# missatge} other {# missatges}}"
},
"identities": {
"modal_title": "Gestiona les identitats d'enviament",
+3 -4
View File
@@ -3080,9 +3080,7 @@
}
},
"threads": {
"messages_one": "{count} zpráva",
"messages_other": "{count} zpráv",
"messages_tooltip": "{count, plural, one {1 zpráva v této konverzaci} few {# zprávy v této konverzaci} other {# zpráv v této konverzaci}}",
"messages_tooltip": "{count, plural, one {# zpráva v této konverzaci} few {# zprávy v této konverzaci} many {# zprávy v této konverzaci} other {# zpráv v této konverzaci}}",
"expand": "Rozbalit konverzaci",
"collapse": "Sbalit konverzaci",
"loading": "Načítání konverzace...",
@@ -3092,7 +3090,8 @@
"delete": "Odstranit konverzaci",
"star": "Označit konverzaci hvězdičkou",
"unstar": "Odebrat hvězdičku z konverzace",
"toggle_thread": "Přepnout zobrazení vlákna"
"toggle_thread": "Přepnout zobrazení vlákna",
"messages_count": "{count, plural, one {# zpráva} few {# zprávy} many {# zprávy} other {# zpráv}}"
},
"identities": {
"modal_title": "Správa identit odesílatele",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count} besked",
"messages_other": "{count} beskeder",
"messages_tooltip": "{count, plural, one {# besked i denne samtale} other {# beskeder i denne samtale}}",
"expand": "Udvid samtale",
"collapse": "Skjul samtale",
@@ -3092,7 +3090,8 @@
"delete": "Slet samtale",
"star": "Stjernemarkér samtale",
"unstar": "Fjern stjernemarkering",
"toggle_thread": "Slå tråd til/fra"
"toggle_thread": "Slå tråd til/fra",
"messages_count": "{count, plural, one {# besked} other {# beskeder}}"
},
"identities": {
"modal_title": "Administrér afsenderidentiteter",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count} Nachricht",
"messages_other": "{count} Nachrichten",
"messages_tooltip": "{count, plural, one {# Nachricht in dieser Unterhaltung} other {# Nachrichten in dieser Unterhaltung}}",
"expand": "Unterhaltung erweitern",
"collapse": "Unterhaltung einklappen",
@@ -3092,7 +3090,8 @@
"delete": "Unterhaltung löschen",
"star": "Unterhaltung mit Stern markieren",
"unstar": "Stern von Unterhaltung entfernen",
"toggle_thread": "Unterhaltung ein-/ausklappen"
"toggle_thread": "Unterhaltung ein-/ausklappen",
"messages_count": "{count, plural, one {# Nachricht} other {# Nachrichten}}"
},
"identities": {
"modal_title": "Sendeidentitäten verwalten",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count} message",
"messages_other": "{count} messages",
"messages_tooltip": "{count, plural, one {# message in this conversation} other {# messages in this conversation}}",
"expand": "Expand conversation",
"collapse": "Collapse conversation",
@@ -3092,7 +3090,8 @@
"delete": "Delete conversation",
"star": "Star conversation",
"unstar": "Unstar conversation",
"toggle_thread": "Toggle thread"
"toggle_thread": "Toggle thread",
"messages_count": "{count, plural, one {# message} other {# messages}}"
},
"identities": {
"modal_title": "Manage sending identities",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count} mensaje",
"messages_other": "{count} mensajes",
"messages_tooltip": "{count, plural, one {# mensaje en esta conversación} other {# mensajes en esta conversación}}",
"expand": "Expandir conversación",
"collapse": "Contraer conversación",
@@ -3092,7 +3090,8 @@
"delete": "Eliminar conversación",
"star": "Destacar conversación",
"unstar": "Quitar destacado de conversación",
"toggle_thread": "Expandir/contraer hilo"
"toggle_thread": "Expandir/contraer hilo",
"messages_count": "{count, plural, one {# mensaje} other {# mensajes}}"
},
"identities": {
"modal_title": "Administrar Identidades de Envío",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count} sõnum",
"messages_other": "{count} sõnumit",
"messages_tooltip": "{count, plural, one {# sõnum selles vestluses} other {# sõnumit selles vestluses}}",
"expand": "Ava vestlus",
"collapse": "Sulge vestlus",
@@ -3092,7 +3090,8 @@
"delete": "Kustuta vestlus",
"star": "Tähista vestlus",
"unstar": "Eemalda vestluse tähistus",
"toggle_thread": "Lülita vestlus"
"toggle_thread": "Lülita vestlus",
"messages_count": "{count, plural, one {# sõnum} other {# sõnumit}}"
},
"identities": {
"modal_title": "Halda saatja identiteete",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count} پیام",
"messages_other": "{count} پیام",
"messages_tooltip": "{count, plural, one {# پیام در این مکالمه} other {# پیام در این مکالمه}}",
"expand": "باز کردن مکالمه",
"collapse": "جمع کردن مکالمه",
@@ -3092,7 +3090,8 @@
"delete": "حذف مکالمه",
"star": "ستاره‌دار کردن مکالمه",
"unstar": "حذف ستاره مکالمه",
"toggle_thread": "تغییر وضعیت رشته"
"toggle_thread": "تغییر وضعیت رشته",
"messages_count": "{count, plural, one {# پیام} other {# پیام}}"
},
"identities": {
"modal_title": "مدیریت هویت‌های ارسال",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count} message",
"messages_other": "{count} messages",
"messages_tooltip": "{count, plural, one {# message dans cette conversation} other {# messages dans cette conversation}}",
"expand": "Développer la conversation",
"collapse": "Réduire la conversation",
@@ -3092,7 +3090,8 @@
"delete": "Supprimer la conversation",
"star": "Marquer la conversation comme favorite",
"unstar": "Retirer des favoris",
"toggle_thread": "Déplier/replier la discussion"
"toggle_thread": "Déplier/replier la discussion",
"messages_count": "{count, plural, one {# message} other {# messages}}"
},
"identities": {
"modal_title": "Gérer les identités d'envoi",
+3 -4
View File
@@ -2998,9 +2998,7 @@
}
},
"threads": {
"messages_one": "הודעת{count}",
"messages_other": "הודעות{count}",
"messages_tooltip": "{count, plural, one {הודעה אחת בשיחה זו} other {# הודעות בשיחה זו}}",
"messages_tooltip": "{count, plural, one {הודעה אחת בשיחה זו} two {שתי הודעות בשיחה זו} other {# הודעות בשיחה זו}}",
"expand": "הרחב את השיחה",
"collapse": "כווץ השיחה",
"loading": "טוען שיחה...",
@@ -3010,7 +3008,8 @@
"delete": "מחק את השיחה",
"star": "שיחת כוכב",
"unstar": "הסר שיחה בכוכב",
"toggle_thread": "החלף חוט"
"toggle_thread": "החלף חוט",
"messages_count": "{count, plural, one {הודעה אחת} two {שתי הודעות} other {# הודעות}}"
},
"identities": {
"modal_title": "ניהול זהויות שליחה",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count} üzenet",
"messages_other": "{count} üzenet",
"messages_tooltip": "{count, plural, one {# üzenet ebben a beszélgetésben} other {# üzenet ebben a beszélgetésben}}",
"expand": "Beszélgetés kibontása",
"collapse": "Beszélgetés összecsukása",
@@ -3092,7 +3090,8 @@
"delete": "Beszélgetés törlése",
"star": "Beszélgetés csillagozása",
"unstar": "Beszélgetés csillagozásának megszüntetése",
"toggle_thread": "Beszélgetés váltása"
"toggle_thread": "Beszélgetés váltása",
"messages_count": "{count, plural, one {# üzenet} other {# üzenet}}"
},
"identities": {
"modal_title": "Küldő azonosságok kezelése",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count} messaggio",
"messages_other": "{count} messaggi",
"messages_tooltip": "{count, plural, one {# messaggio in questa conversazione} other {# messaggi in questa conversazione}}",
"expand": "Espandi conversazione",
"collapse": "Comprimi conversazione",
@@ -3092,7 +3090,8 @@
"delete": "Elimina conversazione",
"star": "Aggiungi stella alla conversazione",
"unstar": "Rimuovi stella dalla conversazione",
"toggle_thread": "Espandi/comprimi discussione"
"toggle_thread": "Espandi/comprimi discussione",
"messages_count": "{count, plural, one {# messaggio} other {# messaggi}}"
},
"identities": {
"modal_title": "Gestisci identità di invio",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count}件のメッセージ",
"messages_other": "{count}件のメッセージ",
"messages_tooltip": "{count, plural, other {この会話の#件のメッセージ}}",
"expand": "会話を展開",
"collapse": "会話を折りたたむ",
@@ -3092,7 +3090,8 @@
"delete": "会話を削除",
"star": "会話にスターを付ける",
"unstar": "会話のスターを外す",
"toggle_thread": "スレッドの展開/折りたたみ"
"toggle_thread": "スレッドの展開/折りたたみ",
"messages_count": "{count, plural, other {#件のメッセージ}}"
},
"identities": {
"modal_title": "送信者情報を管理",
+3 -4
View File
@@ -3080,9 +3080,7 @@
}
},
"threads": {
"messages_one": "메시지 1개",
"messages_other": "메시지 {count}개",
"messages_tooltip": "이 대화에 {count}개의 메시지가 있어요",
"messages_tooltip": "{count, plural, other {이 대화에 #개의 메시지가 있어요}}",
"expand": "대화 펼치기",
"collapse": "대화 접기",
"loading": "대화를 불러오는 중...",
@@ -3092,7 +3090,8 @@
"delete": "대화 삭제",
"star": "대화 전체에 별표 달기",
"unstar": "대화 전체 별표 해제",
"toggle_thread": "스레드 켜기/끄기"
"toggle_thread": "스레드 켜기/끄기",
"messages_count": "{count, plural, other {메시지 #개}}"
},
"identities": {
"modal_title": "보내는 사람 관리",
+3 -4
View File
@@ -3080,9 +3080,7 @@
}
},
"threads": {
"messages_one": "{count} ziņojums",
"messages_other": "{count} ziņojumi",
"messages_tooltip": "{count, plural, one {# ziņojums šajā sarunā} other {# ziņojumi šajā sarunā}}",
"messages_tooltip": "{count, plural, zero {# ziņojumu šajā sarunā} one {# ziņojums šajā sarunā} other {# ziņojumi šajā sarunā}}",
"expand": "Izvērst sarunu",
"collapse": "Sairt sarunu",
"loading": "Ielādē sarunu...",
@@ -3092,7 +3090,8 @@
"delete": "Dzēst sarunu",
"star": "Pievienot zvaigznīti sarunai",
"unstar": "Noņemt zvaigznīti sarunai",
"toggle_thread": "Pārslēgt sarunu"
"toggle_thread": "Pārslēgt sarunu",
"messages_count": "{count, plural, zero {# ziņojumu} one {# ziņojums} other {# ziņojumi}}"
},
"identities": {
"modal_title": "Pārvaldīt sūtītāja identitātes",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count} мессеж",
"messages_other": "{count} мессежүүд",
"messages_tooltip": "{count, plural, one {Энэ харилцан ярианд # зурвас байна} other {Энэ харилцан ярианд # зурвас байна}}",
"expand": "Харилцан яриаг өргөжүүлэх",
"collapse": "Харилцан яриаг хураах",
@@ -3092,7 +3090,8 @@
"delete": "Харилцан яриаг устгах",
"star": "Харилцан яриаг одтой болгох",
"unstar": "Харилцан ярианы одыг авах",
"toggle_thread": "Хэлхээсийг дэлгэх/хумих"
"toggle_thread": "Хэлхээсийг дэлгэх/хумих",
"messages_count": "{count, plural, one {# мессеж} other {# мессеж}}"
},
"identities": {
"modal_title": "Илгээж буй таниулбаруудыг удирдах",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count} melding",
"messages_other": "{count} meldinger",
"messages_tooltip": "{count, plural, one {# melding i denne samtalen} other {# meldinger i denne samtalen}}",
"expand": "Utvid samtalen",
"collapse": "Fold sammen samtalen",
@@ -3092,7 +3090,8 @@
"delete": "Slett samtalen",
"star": "Stjernemerk samtalen",
"unstar": "Fjern stjernemerking fra samtalen",
"toggle_thread": "Utvid eller fold sammen tråden"
"toggle_thread": "Utvid eller fold sammen tråden",
"messages_count": "{count, plural, one {# melding} other {# meldinger}}"
},
"identities": {
"modal_title": "Administrer avsenderidentiteter",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count} bericht",
"messages_other": "{count} berichten",
"messages_tooltip": "{count, plural, one {# bericht in dit gesprek} other {# berichten in dit gesprek}}",
"expand": "Gesprek uitklappen",
"collapse": "Gesprek inklappen",
@@ -3092,7 +3090,8 @@
"delete": "Gesprek verwijderen",
"star": "Ster toevoegen aan gesprek",
"unstar": "Ster verwijderen van gesprek",
"toggle_thread": "Gesprek in-/uitvouwen"
"toggle_thread": "Gesprek in-/uitvouwen",
"messages_count": "{count, plural, one {# bericht} other {# berichten}}"
},
"identities": {
"modal_title": "Verzendidentiteiten beheren",
+3 -4
View File
@@ -3080,9 +3080,7 @@
}
},
"threads": {
"messages_one": "{count} wiadomość",
"messages_other": "{count} wiadomości",
"messages_tooltip": "{count, plural, one {# wiadomość w tej konwersacji} other {# wiadomości w tej konwersacji}}",
"messages_tooltip": "{count, plural, one {# wiadomość w tej konwersacji} few {# wiadomości w tej konwersacji} many {# wiadomości w tej konwersacji} other {# wiadomości w tej konwersacji}}",
"expand": "Rozwiń konwersację",
"collapse": "Zwiń konwersację",
"loading": "Ładowanie konwersacji...",
@@ -3092,7 +3090,8 @@
"delete": "Usuń konwersację",
"star": "Oznacz konwersację gwiazdką",
"unstar": "Usuń gwiazdkę z konwersacji",
"toggle_thread": "Przełącz widok wątku"
"toggle_thread": "Przełącz widok wątku",
"messages_count": "{count, plural, one {# wiadomość} few {# wiadomości} many {# wiadomości} other {# wiadomości}}"
},
"identities": {
"modal_title": "Zarządzaj tożsamościami nadawcy",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count} mensagem",
"messages_other": "{count} mensagens",
"messages_tooltip": "{count, plural, one {# mensagem nesta conversa} other {# mensagens nesta conversa}}",
"expand": "Expandir conversa",
"collapse": "Recolher conversa",
@@ -3092,7 +3090,8 @@
"delete": "Excluir conversa",
"star": "Adicionar estrela à conversa",
"unstar": "Remover estrela da conversa",
"toggle_thread": "Expandir/recolher conversa"
"toggle_thread": "Expandir/recolher conversa",
"messages_count": "{count, plural, one {# mensagem} other {# mensagens}}"
},
"identities": {
"modal_title": "Gerenciar Identidades de Envio",
+3 -4
View File
@@ -3080,9 +3080,7 @@
}
},
"threads": {
"messages_one": "{count} mesaj",
"messages_other": "{count} mesaje",
"messages_tooltip": "{count, plural, one {# mesajul din această conversație} few {# mesaje din această conversație} other {# de mesaje din această conversație}}",
"messages_tooltip": "{count, plural, one {# mesaj în această conversație} few {# mesaje în această conversație} other {# de mesaje în această conversație}}",
"expand": "Extinde conversația",
"collapse": "Ascunde conversația",
"loading": "Se încarcă conversația...",
@@ -3092,7 +3090,8 @@
"delete": "Șterge conversația",
"star": "Marcați conversația cu stea",
"unstar": "Dezactivează marcajul conversației",
"toggle_thread": "Comutare fir de discuție"
"toggle_thread": "Comutare fir de discuție",
"messages_count": "{count, plural, one {# mesaj} few {# mesaje} other {# de mesaje}}"
},
"identities": {
"modal_title": "Gestionarea identităților de expediere",
+3 -4
View File
@@ -3080,9 +3080,7 @@
}
},
"threads": {
"messages_one": "{count} сообщение",
"messages_other": "{count} сообщений",
"messages_tooltip": "{count, plural, one {# сообщение в этом разговоре} other {# сообщений в этом разговоре}}",
"messages_tooltip": "{count, plural, one {# сообщение в этом разговоре} few {# сообщения в этом разговоре} many {# сообщений в этом разговоре} other {# сообщения в этом разговоре}}",
"expand": "Развернуть разговор",
"collapse": "Свернуть разговор",
"loading": "Загрузка разговора...",
@@ -3092,7 +3090,8 @@
"delete": "Удалить разговор",
"star": "Добавить звёздочку к разговору",
"unstar": "Убрать звёздочку у разговора",
"toggle_thread": "Переключить цепочку"
"toggle_thread": "Переключить цепочку",
"messages_count": "{count, plural, one {# сообщение} few {# сообщения} many {# сообщений} other {# сообщения}}"
},
"identities": {
"modal_title": "Управление идентификациями отправителя",
+3 -4
View File
@@ -3080,9 +3080,7 @@
}
},
"threads": {
"messages_one": "{count} správa",
"messages_other": "{count} správ",
"messages_tooltip": "{count, plural, one {# správa v tejto konverzácii} other {# správ v tejto konverzácii}}",
"messages_tooltip": "{count, plural, one {# správa v tejto konverzácii} few {# správy v tejto konverzácii} many {# správy v tejto konverzácii} other {# správ v tejto konverzácii}}",
"expand": "Rozbaliť konverzáciu",
"collapse": "Zbaliť konverzáciu",
"loading": "Načítavanie konverzácie...",
@@ -3092,7 +3090,8 @@
"delete": "Odstrániť konverzáciu",
"star": "Označiť konverzáciu hviezdičkou",
"unstar": "Odstrániť hviezdičku z konverzácie",
"toggle_thread": "Prepnúť zobrazenie vlákna"
"toggle_thread": "Prepnúť zobrazenie vlákna",
"messages_count": "{count, plural, one {# správa} few {# správy} many {# správy} other {# správ}}"
},
"identities": {
"modal_title": "Správa identít odosielateľa",
+2 -3
View File
@@ -383,8 +383,6 @@
"open_app": "เปิด {name}"
},
"threads": {
"messages_one": "{count} ข้อความ",
"messages_other": "{count} ข้อความ",
"messages_tooltip": "{count, plural, other {# ข้อความในการสนทนานี้}}",
"expand": "ขยายการสนทนา",
"collapse": "ย่อการสนทนา",
@@ -395,7 +393,8 @@
"delete": "ลบการสนทนา",
"star": "ติดดาวการสนทนา",
"unstar": "ยกเลิกติดดาวการสนทนา",
"toggle_thread": "สลับมุมมองการสนทนา"
"toggle_thread": "สลับมุมมองการสนทนา",
"messages_count": "{count, plural, other {# ข้อความ}}"
},
"notifications": {
"email_sent": "ส่งอีเมลแล้ว",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count} ileti",
"messages_other": "{count} ileti",
"messages_tooltip": "{count, plural, one {Bu konuşmada # ileti} other {Bu konuşmada # ileti}}",
"expand": "Konuşmayı genişlet",
"collapse": "Konuşmayı daralt",
@@ -3092,7 +3090,8 @@
"delete": "Konuşmayı sil",
"star": "Konuşmaya yıldız ekle",
"unstar": "Konuşmanın yıldızını kaldır",
"toggle_thread": "İleti dizisini aç/kapat"
"toggle_thread": "İleti dizisini aç/kapat",
"messages_count": "{count, plural, one {# ileti} other {# ileti}}"
},
"identities": {
"modal_title": "Gönderme Kimliklerini Yönet",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count} повідомлення",
"messages_other": "{count} повідомлень",
"messages_tooltip": "{count, plural, one {# повідомлення в цій розмові} few {# повідомлення в цій розмові} many {# повідомлень у цій розмові} other {# повідомлень у цій розмові}}",
"expand": "Розгорнути бесіду",
"collapse": "Згорнути бесіду",
@@ -3092,7 +3090,8 @@
"delete": "Видалити бесіду",
"star": "Зоряна розмова",
"unstar": "Зняти зірочку з розмови",
"toggle_thread": "Перемкнути потік"
"toggle_thread": "Перемкнути потік",
"messages_count": "{count, plural, one {# повідомлення} few {# повідомлення} many {# повідомлень} other {# повідомлення}}"
},
"identities": {
"modal_title": "Керування ідентифікаторами надсилання",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count} 封郵件",
"messages_other": "{count} 封郵件",
"messages_tooltip": "{count, plural, one {此對話串有 # 封郵件} other {此對話串有 # 封郵件}}",
"expand": "展開對話串",
"collapse": "收合對話串",
@@ -3092,7 +3090,8 @@
"delete": "刪除對話串",
"star": "為對話串加上星號",
"unstar": "移除對話串星號",
"toggle_thread": "展開/收合對話串"
"toggle_thread": "展開/收合對話串",
"messages_count": "{count, plural, other {# 封郵件}}"
},
"identities": {
"modal_title": "管理寄件身分",
+2 -3
View File
@@ -3080,8 +3080,6 @@
}
},
"threads": {
"messages_one": "{count} 条消息",
"messages_other": "{count} 条消息",
"messages_tooltip": "{count, plural, one {此会话中有 # 条消息} other {此会话中有 # 条消息}}",
"expand": "展开会话",
"collapse": "折叠会话",
@@ -3092,7 +3090,8 @@
"delete": "删除会话",
"star": "会话加星标",
"unstar": "取消会话星标",
"toggle_thread": "展开/折叠会话"
"toggle_thread": "展开/折叠会话",
"messages_count": "{count, plural, other {# 条消息}}"
},
"identities": {
"modal_title": "管理发送身份",