diff --git a/res/fonts/NotoSansCJK-Subset.ttf b/res/fonts/NotoSansCJK-Subset.ttf index 183fd8f..b61ac72 100644 Binary files a/res/fonts/NotoSansCJK-Subset.ttf and b/res/fonts/NotoSansCJK-Subset.ttf differ diff --git a/res/lang/de.json b/res/lang/de.json index 93704e1..a08a415 100644 --- a/res/lang/de.json +++ b/res/lang/de.json @@ -146,6 +146,11 @@ "chat_bubble_minimal": "Minimal", "chat_bubble_rounded": "Abgerundet", "chat_bubble_square": "Eckig", + "chat_buffer_loading": "Chat-Puffer: …", + "chat_buffer_preparing": "Chat-Puffer: bereite %d/%d vor…", + "chat_buffer_ready": "Chat-Puffer: %d/%d bereit", + "chat_buffer_sending": "Chat: sende %d Nachrichten…", + "chat_buffer_sending_one": "Chat: sende %d Nachricht…", "chat_cancel": "Abbrechen", "chat_contact_added": "Kontakt hinzugefügt – benenne ihn in Kontakte um", "chat_contact_request": "kontaktanfrage", diff --git a/res/lang/es.json b/res/lang/es.json index db8a5aa..48ab26f 100644 --- a/res/lang/es.json +++ b/res/lang/es.json @@ -146,6 +146,11 @@ "chat_bubble_minimal": "Mínima", "chat_bubble_rounded": "Redondeada", "chat_bubble_square": "Cuadrada", + "chat_buffer_loading": "Búfer de chat: …", + "chat_buffer_preparing": "Búfer de chat: preparando %d/%d…", + "chat_buffer_ready": "Búfer de chat: %d/%d listos", + "chat_buffer_sending": "Chat: enviando %d mensajes…", + "chat_buffer_sending_one": "Chat: enviando %d mensaje…", "chat_cancel": "Cancelar", "chat_contact_added": "Contacto añadido: renómbralo en Contactos", "chat_contact_request": "solicitud de contacto", diff --git a/res/lang/fr.json b/res/lang/fr.json index 0b6d3c2..25ba5e2 100644 --- a/res/lang/fr.json +++ b/res/lang/fr.json @@ -146,6 +146,11 @@ "chat_bubble_minimal": "Minimale", "chat_bubble_rounded": "Arrondie", "chat_bubble_square": "Carrée", + "chat_buffer_loading": "Tampon de chat: …", + "chat_buffer_preparing": "Tampon de chat: préparation %d/%d…", + "chat_buffer_ready": "Tampon de chat: %d/%d prêts", + "chat_buffer_sending": "Chat: envoi de %d messages…", + "chat_buffer_sending_one": "Chat: envoi de %d message…", "chat_cancel": "Annuler", "chat_contact_added": "Contact ajouté — renommez-le dans Contacts", "chat_contact_request": "demande de contact", diff --git a/res/lang/ja.json b/res/lang/ja.json index 0b0cc2c..e13d9bc 100644 --- a/res/lang/ja.json +++ b/res/lang/ja.json @@ -146,6 +146,11 @@ "chat_bubble_minimal": "ミニマル", "chat_bubble_rounded": "角丸", "chat_bubble_square": "角ばった", + "chat_buffer_loading": "チャットバッファ:…", + "chat_buffer_preparing": "チャットバッファ:%d/%d を準備中…", + "chat_buffer_ready": "チャットバッファ:%d/%d 準備完了", + "chat_buffer_sending": "チャット:%d 件のメッセージを送信中…", + "chat_buffer_sending_one": "チャット:%d 件のメッセージを送信中…", "chat_cancel": "キャンセル", "chat_contact_added": "連絡先を追加しました — 連絡先で名前を変更できます", "chat_contact_request": "連絡リクエスト", diff --git a/res/lang/ko.json b/res/lang/ko.json index fab66df..5b2a585 100644 --- a/res/lang/ko.json +++ b/res/lang/ko.json @@ -146,6 +146,11 @@ "chat_bubble_minimal": "미니멀", "chat_bubble_rounded": "둥근", "chat_bubble_square": "각진", + "chat_buffer_loading": "채팅 버퍼: …", + "chat_buffer_preparing": "채팅 버퍼: %d/%d 준비 중…", + "chat_buffer_ready": "채팅 버퍼: %d/%d 준비됨", + "chat_buffer_sending": "채팅: 메시지 %d개 보내는 중…", + "chat_buffer_sending_one": "채팅: 메시지 %d개 보내는 중…", "chat_cancel": "취소", "chat_contact_added": "연락처 추가됨 — 연락처에서 이름을 변경하세요", "chat_contact_request": "연락 요청", diff --git a/res/lang/pt.json b/res/lang/pt.json index 2c2217e..8f42661 100644 --- a/res/lang/pt.json +++ b/res/lang/pt.json @@ -146,6 +146,11 @@ "chat_bubble_minimal": "Mínimo", "chat_bubble_rounded": "Arredondado", "chat_bubble_square": "Quadrado", + "chat_buffer_loading": "Buffer de chat: …", + "chat_buffer_preparing": "Buffer de chat: preparando %d/%d…", + "chat_buffer_ready": "Buffer de chat: %d/%d prontos", + "chat_buffer_sending": "Chat: enviando %d mensagens…", + "chat_buffer_sending_one": "Chat: enviando %d mensagem…", "chat_cancel": "Cancelar", "chat_contact_added": "Contato adicionado — renomeie em Contatos", "chat_contact_request": "solicitação de contato", diff --git a/res/lang/ru.json b/res/lang/ru.json index e5567b9..b28ef24 100644 --- a/res/lang/ru.json +++ b/res/lang/ru.json @@ -146,6 +146,11 @@ "chat_bubble_minimal": "Минимальный", "chat_bubble_rounded": "Скруглённый", "chat_bubble_square": "Прямоугольный", + "chat_buffer_loading": "Буфер чата: …", + "chat_buffer_preparing": "Буфер чата: подготовка %d/%d…", + "chat_buffer_ready": "Буфер чата: %d/%d готово", + "chat_buffer_sending": "Чат: отправка %d сообщений…", + "chat_buffer_sending_one": "Чат: отправка %d сообщения…", "chat_cancel": "Отмена", "chat_contact_added": "Контакт добавлен — переименуйте его в Контактах", "chat_contact_request": "запрос контакта", diff --git a/res/lang/zh.json b/res/lang/zh.json index c24231e..fa16303 100644 --- a/res/lang/zh.json +++ b/res/lang/zh.json @@ -146,6 +146,11 @@ "chat_bubble_minimal": "极简", "chat_bubble_rounded": "圆角", "chat_bubble_square": "方形", + "chat_buffer_loading": "聊天缓冲:…", + "chat_buffer_preparing": "聊天缓冲:正在准备 %d/%d…", + "chat_buffer_ready": "聊天缓冲:%d/%d 已就绪", + "chat_buffer_sending": "聊天:正在发送 %d 条消息…", + "chat_buffer_sending_one": "聊天:正在发送 %d 条消息…", "chat_cancel": "取消", "chat_contact_added": "已添加联系人——可在联系人中重命名", "chat_contact_request": "联系人请求", diff --git a/src/app_network.cpp b/src/app_network.cpp index 5d7d12c..d331f35 100644 --- a/src/app_network.cpp +++ b/src/app_network.cpp @@ -3177,14 +3177,20 @@ std::string App::chatBufferStatusText() { if (!chat::hushChatFeatureEnabledAtBuild() || !chat_service_.hasIdentity()) return ""; const int queued = static_cast(chat_send_queue_.size()); const int verified = std::max(0, std::min(chat_verified_note_budget_, kChatBufferTarget)); - const std::string tgt = std::to_string(kChatBufferTarget); - if (queued > 0) - return "Chat: sending " + std::to_string(queued) + (queued == 1 ? " message…" : " messages…"); - if (chat_split_outstanding_) - return "Chat buffer: preparing " + std::to_string(verified) + "/" + tgt + "…"; + const int target = static_cast(kChatBufferTarget); + char buf[128]; + if (queued > 0) { + snprintf(buf, sizeof(buf), TR(queued == 1 ? "chat_buffer_sending_one" : "chat_buffer_sending"), queued); + return buf; + } + if (chat_split_outstanding_) { + snprintf(buf, sizeof(buf), TR("chat_buffer_preparing"), verified, target); + return buf; + } if (!chat_note_model_seen_) - return "Chat buffer: …"; - return "Chat buffer: " + std::to_string(verified) + "/" + tgt + " ready"; + return TR("chat_buffer_loading"); + snprintf(buf, sizeof(buf), TR("chat_buffer_ready"), verified, target); + return buf; } bool App::isTransientVerifiedFundsError(const std::string& error) { diff --git a/src/util/i18n.cpp b/src/util/i18n.cpp index 5d01ddb..0ac0c87 100644 --- a/src/util/i18n.cpp +++ b/src/util/i18n.cpp @@ -266,6 +266,13 @@ void I18n::loadBuiltinEnglish() strings_["chat_rename"] = "Rename contact"; strings_["chat_rename_hint"] = "Contact name"; strings_["chat_renamed"] = "Contact renamed"; + // Chat note-buffer status (status bar, while the Chat tab is active). %d are counts; + // keep the format specifiers intact in translations. + strings_["chat_buffer_sending_one"] = "Chat: sending %d message\xE2\x80\xA6"; + strings_["chat_buffer_sending"] = "Chat: sending %d messages\xE2\x80\xA6"; + strings_["chat_buffer_preparing"] = "Chat buffer: preparing %d/%d\xE2\x80\xA6"; + strings_["chat_buffer_loading"] = "Chat buffer: \xE2\x80\xA6"; + strings_["chat_buffer_ready"] = "Chat buffer: %d/%d ready"; // Chat customization (gear modal + Settings → Chat & Contacts) strings_["chat_settings_title"] = "Chat settings"; strings_["chat_settings_tip"] = "Chat customization";