From 3be4f968a09eb19ff2eacfa68a729f96f9348abf Mon Sep 17 00:00:00 2001 From: Alexandre Franke Date: Mon, 13 Nov 2023 01:11:48 +0100 Subject: [PATCH] misc: Solve plural issue for some languages --- .../view/content/room_history/typing_row.rs | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/session/view/content/room_history/typing_row.rs b/src/session/view/content/room_history/typing_row.rs index ca42f35a..00ab2a5a 100644 --- a/src/session/view/content/room_history/typing_row.rs +++ b/src/session/view/content/room_history/typing_row.rs @@ -3,7 +3,7 @@ use gtk::{glib, glib::clone, prelude::*, CompositeTemplate}; use crate::{ components::{Avatar, OverlappingBox}, - i18n::ngettext_f, + i18n::{gettext_f, ngettext_f}, prelude::*, session::model::{Member, TypingList}, utils::BoundObjectWeakRef, @@ -172,14 +172,23 @@ impl TypingRow { let members = list.members(); let user = members[0].display_name(); - let label = ngettext_f( - // Translators: Do NOT translate the content between '{' and '}', these are - // variable names. - "{user} is typing…", - "{n} members are typing…", - n, - &[("user", &user), ("n", &n.to_string())], - ); + let label = if n == 1 { + gettext_f( + // Translators: Do NOT translate the content between '{' and '}', these are + // variable names. + "{user} is typing…", + &[("user", &user)], + ) + } else { + ngettext_f( + // Translators: Do NOT translate the content between '{' and '}', these are + // variable names. + "{n} member is typing…", + "{n} members are typing…", + n, + &[("n", &n.to_string())], + ) + }; self.imp().label.set_label(&label); } }