From 4b82d5d5a638f18f824283889904439d2c359722 Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Mon, 20 Jul 2026 16:54:21 -0300 Subject: [PATCH 01/12] fix: deleted thread not being displayed correctly --- apps/meteor/client/lib/normalizeThreadMessage.tsx | 9 +++++++-- .../contextualBar/Threads/components/ThreadListItem.tsx | 4 +++- .../Threads/hooks/useNormalizedThreadTitleHtml.ts | 8 +++++++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/apps/meteor/client/lib/normalizeThreadMessage.tsx b/apps/meteor/client/lib/normalizeThreadMessage.tsx index 846321918f410..9bfd4db490dfe 100644 --- a/apps/meteor/client/lib/normalizeThreadMessage.tsx +++ b/apps/meteor/client/lib/normalizeThreadMessage.tsx @@ -1,7 +1,8 @@ -import type { IMessage } from '@rocket.chat/core-typings'; +import { isDeletedMessage, type IMessage } from '@rocket.chat/core-typings'; import { Markup } from '@rocket.chat/gazzodown'; import { parse } from '@rocket.chat/message-parser'; import type { Root } from '@rocket.chat/message-parser'; +import type { TFunction } from 'i18next'; import { getMarkdownParserLimit } from './getMarkdownParserLimit'; import { filterMarkdown } from '../../app/markdown/lib/markdown'; @@ -21,7 +22,11 @@ const tryParseWithLimit = (text: string): Root | undefined => { } }; -export function normalizeThreadMessage({ ...message }: Readonly>) { +export function normalizeThreadMessage({ ...message }: Readonly, t: TFunction) { + if (isDeletedMessage(message)) { + return t('Message_removed'); + } + if (message.msg) { delete message.mentions; diff --git a/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadListItem.tsx b/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadListItem.tsx index dc33266d91b52..5afa7a0bc51e0 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadListItem.tsx +++ b/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadListItem.tsx @@ -4,6 +4,7 @@ import { Palette } from '@rocket.chat/fuselage'; import { useSetting, useUserId } from '@rocket.chat/ui-contexts'; import type { MouseEvent } from 'react'; import { useCallback, memo } from 'react'; +import { useTranslation } from 'react-i18next'; import ThreadListMessage from './ThreadListMessage'; import { useDecryptedMessage } from '../../../../../hooks/useDecryptedMessage'; @@ -18,9 +19,10 @@ export type ThreadListItemProps = { }; const ThreadListItem = ({ thread, unread, unreadUser, unreadGroup, onClick }: ThreadListItemProps) => { + const { t } = useTranslation(); const uid = useUserId(); const decryptedMsg = useDecryptedMessage(thread); - const msg = normalizeThreadMessage({ ...thread, msg: decryptedMsg }); + const msg = normalizeThreadMessage({ ...thread, msg: decryptedMsg }, t); const { name = thread.u.username } = thread.u; diff --git a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts index 4ac708211cf47..6d9ccb2d7a563 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts +++ b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts @@ -1,13 +1,15 @@ -import type { IThreadMainMessage } from '@rocket.chat/core-typings'; +import { isDeletedMessage, type IThreadMainMessage } from '@rocket.chat/core-typings'; import { escapeHTML } from '@rocket.chat/string-helpers'; import { useUser, useSetting } from '@rocket.chat/ui-contexts'; import { useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; import { emojiParser } from '../../../../../../app/emoji/client/emojiParser'; import { filterMarkdown } from '../../../../../../app/markdown/lib/markdown'; import { MentionsParser } from '../../../../../../app/mentions/lib/MentionsParser'; export const useNormalizedThreadTitleHtml = (mainMessage: IThreadMainMessage) => { + const { t } = useTranslation(); const me = useUser()?.username || ''; const pattern = useSetting('UTF8_User_Names_Validation', '[0-9a-zA-Z-_.]+'); const useRealName = useSetting('UI_Use_Real_Name', false); @@ -15,6 +17,10 @@ export const useNormalizedThreadTitleHtml = (mainMessage: IThreadMainMessage) => return useMemo((): string => { const message = { ...mainMessage }; + if (isDeletedMessage(message)) { + return t('Message_removed'); + } + if (message.msg) { const filteredMessage = filterMarkdown(escapeHTML(message.msg)); if (!message.channels && !message.mentions) { From 52beb1760a67b1f987252576289e8dc6d28be1ff Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Mon, 20 Jul 2026 18:25:49 -0300 Subject: [PATCH 02/12] test: add unit tests --- .../lib/normalizeThreadMessage.spec.tsx | 50 +++++++++---- .../useNormalizedThreadTitleHtml.spec.ts | 72 +++++++++++++++++++ 2 files changed, 110 insertions(+), 12 deletions(-) create mode 100644 apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.spec.ts diff --git a/apps/meteor/client/lib/normalizeThreadMessage.spec.tsx b/apps/meteor/client/lib/normalizeThreadMessage.spec.tsx index 94251e88e80d7..67d493c21813d 100644 --- a/apps/meteor/client/lib/normalizeThreadMessage.spec.tsx +++ b/apps/meteor/client/lib/normalizeThreadMessage.spec.tsx @@ -1,5 +1,7 @@ +import type { IMessage } from '@rocket.chat/core-typings'; import { parse } from '@rocket.chat/message-parser'; import { render } from '@testing-library/react'; +import type { TFunction } from 'i18next'; import { getMarkdownParserLimit } from './getMarkdownParserLimit'; import { normalizeThreadMessage } from './normalizeThreadMessage'; @@ -14,6 +16,8 @@ const mockedGetMarkdownParserLimit = jest.mocked(getMarkdownParserLimit); const mockedFilterMarkdown = jest.mocked(filterMarkdown); const mockedParse = jest.mocked(parse); +const t = ((key: string) => key) as TFunction; + describe('normalizeThreadMessage', () => { beforeEach(() => { mockedGetMarkdownParserLimit.mockReturnValue(Infinity); @@ -26,8 +30,8 @@ describe('normalizeThreadMessage', () => { }); it('should parse message through filterMarkdown and parse when within limit', () => { - const message = { msg: 'Hello world', mentions: [], attachments: [] }; - normalizeThreadMessage(message); + const message = { msg: 'Hello world', mentions: [], attachments: [] } as unknown as IMessage; + normalizeThreadMessage(message, t); expect(mockedFilterMarkdown).toHaveBeenCalledWith('Hello world'); expect(mockedParse).toHaveBeenCalledWith('Hello world', { emoticons: true }); @@ -36,8 +40,8 @@ describe('normalizeThreadMessage', () => { it('should skip filterMarkdown and parse when message exceeds limit', () => { mockedGetMarkdownParserLimit.mockReturnValue(5); - const message = { msg: 'This message is longer than the limit', mentions: [], attachments: [] }; - const result = normalizeThreadMessage(message); + const message = { msg: 'This message is longer than the limit', mentions: [], attachments: [] } as unknown as IMessage; + const result = normalizeThreadMessage(message, t); expect(mockedFilterMarkdown).not.toHaveBeenCalled(); expect(mockedParse).not.toHaveBeenCalled(); @@ -49,21 +53,21 @@ describe('normalizeThreadMessage', () => { }); it('should return null when msg is empty and no attachments', () => { - const message = { msg: '', mentions: [], attachments: undefined } as any; - expect(normalizeThreadMessage(message)).toBeNull(); + const message = { msg: '', mentions: [], attachments: undefined } as unknown as IMessage; + expect(normalizeThreadMessage(message, t)).toBeNull(); }); it('should return attachment title when msg is empty but attachment has title', () => { - const message = { msg: '', mentions: [], attachments: [{ title: 'file.pdf' }] } as any; - const result = normalizeThreadMessage(message); + const message = { msg: '', mentions: [], attachments: [{ title: 'file.pdf' }] } as unknown as IMessage; + const result = normalizeThreadMessage(message, t); const { container } = render(<>{result}); expect(container.textContent).toBe('file.pdf'); }); it('should return attachment description when msg is empty and attachments have no title', () => { - const message = { msg: '', mentions: [], attachments: [{ description: 'desc' }] } as any; - const result = normalizeThreadMessage(message); + const message = { msg: '', mentions: [], attachments: [{ description: 'desc' }] } as unknown as IMessage; + const result = normalizeThreadMessage(message, t); const { container } = render(<>{result}); expect(container.textContent).toBe('desc'); @@ -74,7 +78,29 @@ describe('normalizeThreadMessage', () => { throw new Error('parse error'); }); - const message = { msg: 'test', mentions: [], attachments: [] }; - expect(normalizeThreadMessage(message)).toBeNull(); + const message = { msg: 'test', mentions: [], attachments: [] } as unknown as IMessage; + expect(normalizeThreadMessage(message, t)).toBeNull(); + }); + + it('should return the "Message_removed" translation for a deleted message, ignoring its content', () => { + const message = { + t: 'rm', + msg: 'this content should not be displayed', + editedAt: new Date(), + editedBy: { _id: 'uid', username: 'user' }, + mentions: [], + attachments: [], + } as unknown as IMessage; + + expect(normalizeThreadMessage(message, t)).toBe('Message_removed'); + expect(mockedFilterMarkdown).not.toHaveBeenCalled(); + expect(mockedParse).not.toHaveBeenCalled(); + }); + + it('should not treat a message with `t: rm` as deleted when it is not edited', () => { + const message = { t: 'rm', msg: 'Hello world', mentions: [], attachments: [] } as unknown as IMessage; + + expect(normalizeThreadMessage(message, t)).not.toBe('Message_removed'); + expect(mockedParse).toHaveBeenCalledWith('Hello world', { emoticons: true }); }); }); diff --git a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.spec.ts b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.spec.ts new file mode 100644 index 0000000000000..5853a2c8aec02 --- /dev/null +++ b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.spec.ts @@ -0,0 +1,72 @@ +import type { IThreadMainMessage } from '@rocket.chat/core-typings'; +import { mockAppRoot } from '@rocket.chat/mock-providers'; +import { renderHook } from '@testing-library/react'; + +import { useNormalizedThreadTitleHtml } from './useNormalizedThreadTitleHtml'; +import { filterMarkdown } from '../../../../../../app/markdown/lib/markdown'; + +jest.mock('../../../../../../app/markdown/lib/markdown', () => ({ + filterMarkdown: jest.fn((text: string) => text), +})); + +jest.mock('../../../../../../app/emoji/client/emojiParser', () => ({ + emojiParser: jest.fn((text: string) => text), +})); + +const mockedFilterMarkdown = jest.mocked(filterMarkdown); + +const baseMessage = { + _id: 'msg-id', + rid: 'rid', + ts: new Date(), + u: { _id: 'uid', username: 'user' }, + _updatedAt: new Date(), + tcount: 1, + tlm: new Date(), + replies: [], +} as unknown as IThreadMainMessage; + +describe('useNormalizedThreadTitleHtml', () => { + afterEach(() => { + jest.clearAllMocks(); + }); + + it('should return the "Message_removed" translation for a deleted message, ignoring its content', () => { + const message = { + ...baseMessage, + t: 'rm', + msg: 'this content should not be displayed', + editedAt: new Date(), + editedBy: { _id: 'uid', username: 'user' }, + } as unknown as IThreadMainMessage; + + const { result } = renderHook(() => useNormalizedThreadTitleHtml(message), { + wrapper: mockAppRoot().build(), + }); + + expect(result.current).toBe('Message_removed'); + expect(mockedFilterMarkdown).not.toHaveBeenCalled(); + }); + + it('should return the normalized message content for a regular message', () => { + const message = { ...baseMessage, msg: 'Hello world' } as unknown as IThreadMainMessage; + + const { result } = renderHook(() => useNormalizedThreadTitleHtml(message), { + wrapper: mockAppRoot().build(), + }); + + expect(result.current).toBe('Hello world'); + expect(mockedFilterMarkdown).toHaveBeenCalledWith('Hello world'); + }); + + it('should not treat a message with `t: rm` as deleted when it is not edited', () => { + const message = { ...baseMessage, t: 'rm', msg: 'Hello world' } as unknown as IThreadMainMessage; + + const { result } = renderHook(() => useNormalizedThreadTitleHtml(message), { + wrapper: mockAppRoot().build(), + }); + + expect(result.current).not.toBe('Message_removed'); + expect(result.current).toBe('Hello world'); + }); +}); From d4c3eb48cbea9185a997adf9d86a25dcb03950cc Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Mon, 20 Jul 2026 18:28:31 -0300 Subject: [PATCH 03/12] fix: DiscussionListRow missing translation fn --- .../room/contextualBar/Discussions/DiscussionsListRow.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/meteor/client/views/room/contextualBar/Discussions/DiscussionsListRow.tsx b/apps/meteor/client/views/room/contextualBar/Discussions/DiscussionsListRow.tsx index c448c46e8979a..f410c2d47fda1 100644 --- a/apps/meteor/client/views/room/contextualBar/Discussions/DiscussionsListRow.tsx +++ b/apps/meteor/client/views/room/contextualBar/Discussions/DiscussionsListRow.tsx @@ -1,6 +1,7 @@ import type { IDiscussionMessage } from '@rocket.chat/core-typings'; import type { MouseEvent } from 'react'; import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; import DiscussionsListItem from './components/DiscussionsListItem'; import { useTimeAgo } from '../../../../hooks/useTimeAgo'; @@ -13,9 +14,10 @@ export type DiscussionListRowProps = { }; function DiscussionListRow({ discussion, showRealNames, onClick }: DiscussionListRowProps) { + const { t } = useTranslation(); const formatDate = useTimeAgo(); - const msg = normalizeThreadMessage(discussion); + const msg = normalizeThreadMessage(discussion, t); const { name = discussion.u.username } = discussion.u; From 35737e2ee30626e0b198e144c8446541a2422b3b Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Mon, 20 Jul 2026 18:48:58 -0300 Subject: [PATCH 04/12] chore: use MessageTypes --- apps/meteor/client/lib/normalizeThreadMessage.tsx | 11 +++++++---- .../Threads/hooks/useNormalizedThreadTitleHtml.ts | 14 ++++++++------ 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/apps/meteor/client/lib/normalizeThreadMessage.tsx b/apps/meteor/client/lib/normalizeThreadMessage.tsx index 9bfd4db490dfe..ab44f195fbd37 100644 --- a/apps/meteor/client/lib/normalizeThreadMessage.tsx +++ b/apps/meteor/client/lib/normalizeThreadMessage.tsx @@ -1,7 +1,8 @@ -import { isDeletedMessage, type IMessage } from '@rocket.chat/core-typings'; +import { type IMessage } from '@rocket.chat/core-typings'; import { Markup } from '@rocket.chat/gazzodown'; import { parse } from '@rocket.chat/message-parser'; import type { Root } from '@rocket.chat/message-parser'; +import { MessageTypes } from '@rocket.chat/message-types'; import type { TFunction } from 'i18next'; import { getMarkdownParserLimit } from './getMarkdownParserLimit'; @@ -23,9 +24,7 @@ const tryParseWithLimit = (text: string): Root | undefined => { }; export function normalizeThreadMessage({ ...message }: Readonly, t: TFunction) { - if (isDeletedMessage(message)) { - return t('Message_removed'); - } + const messageType = MessageTypes.getType(message); if (message.msg) { delete message.mentions; @@ -55,5 +54,9 @@ export function normalizeThreadMessage({ ...message }: Readonly, t: TF } } + if (message.t) { + return messageType?.text(t, message); + } + return null; } diff --git a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts index 6d9ccb2d7a563..beaf86d9216b8 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts +++ b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts @@ -1,4 +1,5 @@ -import { isDeletedMessage, type IThreadMainMessage } from '@rocket.chat/core-typings'; +import { type IThreadMainMessage } from '@rocket.chat/core-typings'; +import { MessageTypes } from '@rocket.chat/message-types'; import { escapeHTML } from '@rocket.chat/string-helpers'; import { useUser, useSetting } from '@rocket.chat/ui-contexts'; import { useMemo } from 'react'; @@ -16,10 +17,7 @@ export const useNormalizedThreadTitleHtml = (mainMessage: IThreadMainMessage) => return useMemo((): string => { const message = { ...mainMessage }; - - if (isDeletedMessage(message)) { - return t('Message_removed'); - } + const messageType = MessageTypes.getType(message); if (message.msg) { const filteredMessage = filterMarkdown(escapeHTML(message.msg)); @@ -50,6 +48,10 @@ export const useNormalizedThreadTitleHtml = (mainMessage: IThreadMainMessage) => } } + if (message.t && messageType) { + return messageType.text(t, message); + } + return ''; - }, [mainMessage, me, pattern, useRealName]); + }, [mainMessage, me, pattern, useRealName, t]); }; From 4ca7fcb80c9e5e2ba0a28ead093d84d5d800b87d Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Tue, 21 Jul 2026 13:59:56 -0300 Subject: [PATCH 05/12] chore: capitalize --- apps/meteor/client/lib/normalizeThreadMessage.tsx | 2 +- .../contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts | 2 +- packages/message-types/src/MessageTypes.ts | 2 +- packages/message-types/src/registrations/common.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/meteor/client/lib/normalizeThreadMessage.tsx b/apps/meteor/client/lib/normalizeThreadMessage.tsx index ab44f195fbd37..05ba473cf6288 100644 --- a/apps/meteor/client/lib/normalizeThreadMessage.tsx +++ b/apps/meteor/client/lib/normalizeThreadMessage.tsx @@ -55,7 +55,7 @@ export function normalizeThreadMessage({ ...message }: Readonly, t: TF } if (message.t) { - return messageType?.text(t, message); + return messageType?.text(t, message, true); } return null; diff --git a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts index beaf86d9216b8..0f253a2f09c13 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts +++ b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts @@ -49,7 +49,7 @@ export const useNormalizedThreadTitleHtml = (mainMessage: IThreadMainMessage) => } if (message.t && messageType) { - return messageType.text(t, message); + return messageType.text(t, message, true); } return ''; diff --git a/packages/message-types/src/MessageTypes.ts b/packages/message-types/src/MessageTypes.ts index aefb98540f969..85fc452263ab6 100644 --- a/packages/message-types/src/MessageTypes.ts +++ b/packages/message-types/src/MessageTypes.ts @@ -4,7 +4,7 @@ import type { TFunction } from 'i18next'; type MessageType = { readonly id: MessageTypesValues; readonly system: boolean; - readonly text: (t: TFunction, message: IMessage) => string; + readonly text: (t: TFunction, message: IMessage, capitalize?: boolean) => string; }; export class MessageTypes { diff --git a/packages/message-types/src/registrations/common.ts b/packages/message-types/src/registrations/common.ts index 67e78d6074040..c631906e94d5c 100644 --- a/packages/message-types/src/registrations/common.ts +++ b/packages/message-types/src/registrations/common.ts @@ -112,7 +112,7 @@ export default (instance: MessageTypes) => { instance.registerType({ id: 'rm', system: true, - text: (t) => t('Message_is_removed'), + text: (t, _, capitalize) => (capitalize ? t('Message_HideType_rm') : t('Message_is_removed')), }); instance.registerType({ From 78307c7d390b10f569c2603c91db51b44f565742 Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Tue, 21 Jul 2026 14:34:20 -0300 Subject: [PATCH 06/12] test: update test --- apps/meteor/client/lib/normalizeThreadMessage.spec.tsx | 10 +++++----- .../Threads/hooks/useNormalizedThreadTitleHtml.spec.ts | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/meteor/client/lib/normalizeThreadMessage.spec.tsx b/apps/meteor/client/lib/normalizeThreadMessage.spec.tsx index 67d493c21813d..333e9b92e084e 100644 --- a/apps/meteor/client/lib/normalizeThreadMessage.spec.tsx +++ b/apps/meteor/client/lib/normalizeThreadMessage.spec.tsx @@ -82,25 +82,25 @@ describe('normalizeThreadMessage', () => { expect(normalizeThreadMessage(message, t)).toBeNull(); }); - it('should return the "Message_removed" translation for a deleted message, ignoring its content', () => { + it('should return the message type text for a removed message without content', () => { const message = { t: 'rm', - msg: 'this content should not be displayed', + msg: '', editedAt: new Date(), editedBy: { _id: 'uid', username: 'user' }, mentions: [], attachments: [], } as unknown as IMessage; - expect(normalizeThreadMessage(message, t)).toBe('Message_removed'); + expect(normalizeThreadMessage(message, t)).toBe('Message_HideType_rm'); expect(mockedFilterMarkdown).not.toHaveBeenCalled(); expect(mockedParse).not.toHaveBeenCalled(); }); - it('should not treat a message with `t: rm` as deleted when it is not edited', () => { + it('should render the message content when a `t: rm` message still has content', () => { const message = { t: 'rm', msg: 'Hello world', mentions: [], attachments: [] } as unknown as IMessage; - expect(normalizeThreadMessage(message, t)).not.toBe('Message_removed'); + expect(normalizeThreadMessage(message, t)).not.toBe('Message_HideType_rm'); expect(mockedParse).toHaveBeenCalledWith('Hello world', { emoticons: true }); }); }); diff --git a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.spec.ts b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.spec.ts index 5853a2c8aec02..0fe62e84d9c6e 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.spec.ts +++ b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.spec.ts @@ -31,11 +31,11 @@ describe('useNormalizedThreadTitleHtml', () => { jest.clearAllMocks(); }); - it('should return the "Message_removed" translation for a deleted message, ignoring its content', () => { + it('should return the "Message_HideType_rm" translation for a removed message without content', () => { const message = { ...baseMessage, t: 'rm', - msg: 'this content should not be displayed', + msg: '', editedAt: new Date(), editedBy: { _id: 'uid', username: 'user' }, } as unknown as IThreadMainMessage; @@ -44,7 +44,7 @@ describe('useNormalizedThreadTitleHtml', () => { wrapper: mockAppRoot().build(), }); - expect(result.current).toBe('Message_removed'); + expect(result.current).toBe('Message_HideType_rm'); expect(mockedFilterMarkdown).not.toHaveBeenCalled(); }); @@ -59,14 +59,14 @@ describe('useNormalizedThreadTitleHtml', () => { expect(mockedFilterMarkdown).toHaveBeenCalledWith('Hello world'); }); - it('should not treat a message with `t: rm` as deleted when it is not edited', () => { + it('should render the message content when a `t: rm` message still has content', () => { const message = { ...baseMessage, t: 'rm', msg: 'Hello world' } as unknown as IThreadMainMessage; const { result } = renderHook(() => useNormalizedThreadTitleHtml(message), { wrapper: mockAppRoot().build(), }); - expect(result.current).not.toBe('Message_removed'); + expect(result.current).not.toBe('Message_HideType_rm'); expect(result.current).toBe('Hello world'); }); }); From 77171487fb6f0b876ae3caede57c14e480de92b8 Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Tue, 21 Jul 2026 16:57:37 -0300 Subject: [PATCH 07/12] chore: changeset --- .changeset/sparkly-regions-drive.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/sparkly-regions-drive.md diff --git a/.changeset/sparkly-regions-drive.md b/.changeset/sparkly-regions-drive.md new file mode 100644 index 0000000000000..7842214bd9d62 --- /dev/null +++ b/.changeset/sparkly-regions-drive.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/message-types': patch +'@rocket.chat/meteor': patch +--- + +Fixes an issue where delete thread message display as empty in thread context From b197de8911f1a96c540b7ab946247f6fb1ec816e Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Tue, 21 Jul 2026 17:07:04 -0300 Subject: [PATCH 08/12] fix: use options object --- apps/meteor/client/lib/normalizeThreadMessage.tsx | 2 +- .../Threads/hooks/useNormalizedThreadTitleHtml.ts | 2 +- packages/message-types/src/MessageTypes.ts | 6 +++++- packages/message-types/src/registrations/common.ts | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/apps/meteor/client/lib/normalizeThreadMessage.tsx b/apps/meteor/client/lib/normalizeThreadMessage.tsx index 05ba473cf6288..57c4168fea240 100644 --- a/apps/meteor/client/lib/normalizeThreadMessage.tsx +++ b/apps/meteor/client/lib/normalizeThreadMessage.tsx @@ -55,7 +55,7 @@ export function normalizeThreadMessage({ ...message }: Readonly, t: TF } if (message.t) { - return messageType?.text(t, message, true); + return messageType?.text(t, message, { capitalize: true }); } return null; diff --git a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts index 0f253a2f09c13..8e2a95524e8e6 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts +++ b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts @@ -49,7 +49,7 @@ export const useNormalizedThreadTitleHtml = (mainMessage: IThreadMainMessage) => } if (message.t && messageType) { - return messageType.text(t, message, true); + return messageType.text(t, message, { capitalize: true }); } return ''; diff --git a/packages/message-types/src/MessageTypes.ts b/packages/message-types/src/MessageTypes.ts index 85fc452263ab6..731d1bde8ce4c 100644 --- a/packages/message-types/src/MessageTypes.ts +++ b/packages/message-types/src/MessageTypes.ts @@ -1,10 +1,14 @@ import type { MessageTypesValues, IMessage } from '@rocket.chat/core-typings'; import type { TFunction } from 'i18next'; +type MessageTypeTextOptions = { + capitalize?: boolean; +}; + type MessageType = { readonly id: MessageTypesValues; readonly system: boolean; - readonly text: (t: TFunction, message: IMessage, capitalize?: boolean) => string; + readonly text: (t: TFunction, message: IMessage, options?: MessageTypeTextOptions) => string; }; export class MessageTypes { diff --git a/packages/message-types/src/registrations/common.ts b/packages/message-types/src/registrations/common.ts index c631906e94d5c..3a60277f38dc5 100644 --- a/packages/message-types/src/registrations/common.ts +++ b/packages/message-types/src/registrations/common.ts @@ -112,7 +112,7 @@ export default (instance: MessageTypes) => { instance.registerType({ id: 'rm', system: true, - text: (t, _, capitalize) => (capitalize ? t('Message_HideType_rm') : t('Message_is_removed')), + text: (t, _, options) => (options?.capitalize ? t('Message_HideType_rm') : t('Message_is_removed')), }); instance.registerType({ From 7c5cdd008fe049aa29e5d2ff74ce99da65434e1b Mon Sep 17 00:00:00 2001 From: dougfabris Date: Tue, 21 Jul 2026 17:07:50 -0300 Subject: [PATCH 09/12] chore: changeset Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> --- .changeset/sparkly-regions-drive.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/sparkly-regions-drive.md b/.changeset/sparkly-regions-drive.md index 7842214bd9d62..66c8312d90c94 100644 --- a/.changeset/sparkly-regions-drive.md +++ b/.changeset/sparkly-regions-drive.md @@ -3,4 +3,4 @@ '@rocket.chat/meteor': patch --- -Fixes an issue where delete thread message display as empty in thread context +Fixes an issue where deleted thread messages display as empty in thread context From 88f4c2612bbb834c64a41a19cac1d5fdc90a9d28 Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Tue, 21 Jul 2026 17:42:54 -0300 Subject: [PATCH 10/12] chore: escapeHTML messageType.text --- .../contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts index 8e2a95524e8e6..c7c23fcbd428d 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts +++ b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts @@ -49,7 +49,7 @@ export const useNormalizedThreadTitleHtml = (mainMessage: IThreadMainMessage) => } if (message.t && messageType) { - return messageType.text(t, message, { capitalize: true }); + return escapeHTML(messageType.text(t, message, { capitalize: true })); } return ''; From 65bd1bf8c94e66df07e3ffccb1a74f0157209197 Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Wed, 22 Jul 2026 12:35:39 -0300 Subject: [PATCH 11/12] i18n: sanitize translation --- packages/i18n/src/locales/af.i18n.json | 2 +- packages/i18n/src/locales/ar.i18n.json | 2 +- packages/i18n/src/locales/az.i18n.json | 2 +- packages/i18n/src/locales/be-BY.i18n.json | 2 +- packages/i18n/src/locales/bg.i18n.json | 2 +- packages/i18n/src/locales/bs.i18n.json | 2 +- packages/i18n/src/locales/ca.i18n.json | 2 +- packages/i18n/src/locales/cs.i18n.json | 2 +- packages/i18n/src/locales/cy.i18n.json | 2 +- packages/i18n/src/locales/da.i18n.json | 2 +- packages/i18n/src/locales/de-AT.i18n.json | 2 +- packages/i18n/src/locales/de.i18n.json | 2 +- packages/i18n/src/locales/el.i18n.json | 2 +- packages/i18n/src/locales/en.i18n.json | 4 ++-- packages/i18n/src/locales/eo.i18n.json | 2 +- packages/i18n/src/locales/es.i18n.json | 2 +- packages/i18n/src/locales/fa.i18n.json | 2 +- packages/i18n/src/locales/fi.i18n.json | 4 ++-- packages/i18n/src/locales/fr.i18n.json | 2 +- packages/i18n/src/locales/gl.i18n.json | 2 +- packages/i18n/src/locales/he.i18n.json | 2 +- packages/i18n/src/locales/hi-IN.i18n.json | 2 +- packages/i18n/src/locales/hr.i18n.json | 2 +- packages/i18n/src/locales/hu.i18n.json | 2 +- packages/i18n/src/locales/id.i18n.json | 2 +- packages/i18n/src/locales/it.i18n.json | 4 ++-- packages/i18n/src/locales/ja.i18n.json | 2 +- packages/i18n/src/locales/ka-GE.i18n.json | 2 +- packages/i18n/src/locales/km.i18n.json | 2 +- packages/i18n/src/locales/ko.i18n.json | 2 +- packages/i18n/src/locales/ku.i18n.json | 2 +- packages/i18n/src/locales/lo.i18n.json | 2 +- packages/i18n/src/locales/lt.i18n.json | 2 +- packages/i18n/src/locales/lv.i18n.json | 2 +- packages/i18n/src/locales/mn.i18n.json | 2 +- packages/i18n/src/locales/ms-MY.i18n.json | 2 +- packages/i18n/src/locales/nb.i18n.json | 2 +- packages/i18n/src/locales/nl.i18n.json | 2 +- packages/i18n/src/locales/nn.i18n.json | 2 +- packages/i18n/src/locales/pl.i18n.json | 2 +- packages/i18n/src/locales/pt-BR.i18n.json | 2 +- packages/i18n/src/locales/pt.i18n.json | 2 +- packages/i18n/src/locales/ro.i18n.json | 2 +- packages/i18n/src/locales/ru.i18n.json | 2 +- packages/i18n/src/locales/sk-SK.i18n.json | 2 +- packages/i18n/src/locales/sl-SI.i18n.json | 2 +- packages/i18n/src/locales/sq.i18n.json | 2 +- packages/i18n/src/locales/sr.i18n.json | 2 +- packages/i18n/src/locales/sv.i18n.json | 2 +- packages/i18n/src/locales/ta-IN.i18n.json | 2 +- packages/i18n/src/locales/th-TH.i18n.json | 2 +- packages/i18n/src/locales/tr.i18n.json | 2 +- packages/i18n/src/locales/ug.i18n.json | 2 +- packages/i18n/src/locales/uk.i18n.json | 4 ++-- packages/i18n/src/locales/vi-VN.i18n.json | 2 +- packages/i18n/src/locales/zh-HK.i18n.json | 2 +- packages/i18n/src/locales/zh-TW.i18n.json | 2 +- packages/i18n/src/locales/zh.i18n.json | 2 +- packages/message-types/src/registrations/common.ts | 2 +- 59 files changed, 63 insertions(+), 63 deletions(-) diff --git a/packages/i18n/src/locales/af.i18n.json b/packages/i18n/src/locales/af.i18n.json index 64c5276d9d9f7..d86fdd59c2124 100644 --- a/packages/i18n/src/locales/af.i18n.json +++ b/packages/i18n/src/locales/af.i18n.json @@ -1454,9 +1454,9 @@ "Message_deleting_blocked": "Hierdie boodskap kan nie meer uitgevee word nie", "Message_editing": "Boodskap redigering", "Message_info": "Boodskapinligting", - "Message_is_removed": "Boodskap verwyder", "Message_pinning": "Boodskap vasbind", "Message_removed": "Boodskap verwyder", + "message_removed": "boodskap verwyder", "Message_sent_by_email": "Boodskap gestuur per e-pos", "Message_starring": "Boodskap hoofletter", "Message_too_long": "Boodskap te lank", diff --git a/packages/i18n/src/locales/ar.i18n.json b/packages/i18n/src/locales/ar.i18n.json index ccd42740a468c..c8958a2beec7b 100644 --- a/packages/i18n/src/locales/ar.i18n.json +++ b/packages/i18n/src/locales/ar.i18n.json @@ -2487,9 +2487,9 @@ "Message_has_been_unpinned": "تم إلغاء تثبيت الرسالة", "Message_has_been_unstarred": "تم إلغاء تمييز الرسالة بنجمة", "Message_info": "معلومات الرسالة", - "Message_is_removed": "تمت إزالة الرسالة", "Message_pinning": "تثبيت الرسالة", "Message_removed": "تمت إزالة الرسالة", + "message_removed": "تمت إزالة الرسالة", "Message_sent_by_email": "تم إرسال الرسالة عبر البريد الإلكتروني", "Message_starring": "تمييز الرسالة بنجمة", "Message_too_long": "الرسالة طويلة جدًا", diff --git a/packages/i18n/src/locales/az.i18n.json b/packages/i18n/src/locales/az.i18n.json index e5cce8f67b1cf..e4de19a10d844 100644 --- a/packages/i18n/src/locales/az.i18n.json +++ b/packages/i18n/src/locales/az.i18n.json @@ -1454,9 +1454,9 @@ "Message_deleting_blocked": "Bu mesaj artıq silinə bilməz", "Message_editing": "Mesajın redaktə edilməsi", "Message_info": "Mesaj məlumatı", - "Message_is_removed": "Mesaj silindi", "Message_pinning": "Mesaj pinning", "Message_removed": "Mesaj silindi", + "message_removed": "mesaj silindi", "Message_sent_by_email": "E-poçt ilə göndərilən mesaj", "Message_starring": "Başlanğıc mesaj", "Message_too_long": "Mesaj çox uzun", diff --git a/packages/i18n/src/locales/be-BY.i18n.json b/packages/i18n/src/locales/be-BY.i18n.json index 455e1562be618..630bd5700c6c2 100644 --- a/packages/i18n/src/locales/be-BY.i18n.json +++ b/packages/i18n/src/locales/be-BY.i18n.json @@ -1474,9 +1474,9 @@ "Message_deleting_blocked": "Гэта паведамленне не можа быць выдаленае больш", "Message_editing": "рэдагаванне паведамлення", "Message_info": "інфармацыя паведамленняў", - "Message_is_removed": "паведамленне удалено", "Message_pinning": "паведамленне пиннинга", "Message_removed": "паведамленне удалено", + "message_removed": "паведамленне удалено", "Message_sent_by_email": "Паведамленне адпраўлена па электроннай пошце", "Message_starring": "Паведамленне ў галоўнай ролі", "Message_too_long": "Занадта доўгае паведамленне", diff --git a/packages/i18n/src/locales/bg.i18n.json b/packages/i18n/src/locales/bg.i18n.json index b06bced7b481c..ad5b6c39378e7 100644 --- a/packages/i18n/src/locales/bg.i18n.json +++ b/packages/i18n/src/locales/bg.i18n.json @@ -1451,9 +1451,9 @@ "Message_deleting_blocked": "Това съобщение вече не може да бъде изтрито", "Message_editing": "Редактиране на съобщения", "Message_info": "Информация за съобщението", - "Message_is_removed": "Съобщението бе премахнато", "Message_pinning": "Писане на съобщения", "Message_removed": "Съобщението бе премахнато", + "message_removed": "съобщението бе премахнато", "Message_sent_by_email": "Съобщението е изпратено по имейл", "Message_starring": "Съобщение с главна роля", "Message_too_long": "Съобщението е твърде дълго", diff --git a/packages/i18n/src/locales/bs.i18n.json b/packages/i18n/src/locales/bs.i18n.json index 00096b87da98e..fc115e58a7346 100644 --- a/packages/i18n/src/locales/bs.i18n.json +++ b/packages/i18n/src/locales/bs.i18n.json @@ -1451,9 +1451,9 @@ "Message_deleting_blocked": "Ova poruka se više ne može izbrisati", "Message_editing": "Uređivanje poruke", "Message_info": "Informacije o poruci", - "Message_is_removed": "Poruka je maknuta", "Message_pinning": "Prikvačivanje poruka", "Message_removed": "Poruka je maknuta", + "message_removed": "poruka je maknuta", "Message_sent_by_email": "Poruka poslana putem e-pošte", "Message_starring": "Dodavanje zvjezdica na poruka", "Message_too_long": "Poruka je preduga", diff --git a/packages/i18n/src/locales/ca.i18n.json b/packages/i18n/src/locales/ca.i18n.json index 7843639a76e98..95cd43ce85285 100644 --- a/packages/i18n/src/locales/ca.i18n.json +++ b/packages/i18n/src/locales/ca.i18n.json @@ -2460,9 +2460,9 @@ "Message_has_been_unpinned": "El missatge ha estat desancorat", "Message_has_been_unstarred": "El missatge s'ha tret de favorits", "Message_info": "Informació del missatge", - "Message_is_removed": "Missatge eliminat", "Message_pinning": "Fixació de missatges", "Message_removed": "Missatge eliminat", + "message_removed": "missatge eliminat", "Message_sent_by_email": "Missatge enviat via correu-e", "Message_starring": "Destacar missatges", "Message_too_long": "Missatge massa llarg", diff --git a/packages/i18n/src/locales/cs.i18n.json b/packages/i18n/src/locales/cs.i18n.json index ab291a09924d0..7debdb56a55c0 100644 --- a/packages/i18n/src/locales/cs.i18n.json +++ b/packages/i18n/src/locales/cs.i18n.json @@ -2091,9 +2091,9 @@ "Message_has_been_unpinned": "Zpráva odepnuta", "Message_has_been_unstarred": "Hvězdička odebrána", "Message_info": "Informace o zprávě", - "Message_is_removed": "Zpráva odstraněna", "Message_pinning": "Připnutí zprávy", "Message_removed": "Zpráva odstraněna", + "message_removed": "zpráva odstraněna", "Message_sent_by_email": "Zpráva odeslaná emailem", "Message_starring": "Ohvězdičkování zprávy", "Message_too_long": "Zpráva je příliš dlouhá", diff --git a/packages/i18n/src/locales/cy.i18n.json b/packages/i18n/src/locales/cy.i18n.json index 3af8f1517c583..fe0e76adc458c 100644 --- a/packages/i18n/src/locales/cy.i18n.json +++ b/packages/i18n/src/locales/cy.i18n.json @@ -1451,9 +1451,9 @@ "Message_deleting_blocked": "Ni ellir dileu'r neges hon bellach", "Message_editing": "Golygu negeseuon", "Message_info": "Gwybodaeth am negeseuon", - "Message_is_removed": "Neges wedi'i dynnu", "Message_pinning": "Pwyso negeseuon", "Message_removed": "Neges wedi'i dynnu", + "message_removed": "neges wedi'i dynnu", "Message_sent_by_email": "Neges a anfonwyd trwy E-bost", "Message_starring": "Neges yn chwarae", "Message_too_long": "Neges yn rhy hir", diff --git a/packages/i18n/src/locales/da.i18n.json b/packages/i18n/src/locales/da.i18n.json index 4aaf872f0b3a5..a692e116643be 100644 --- a/packages/i18n/src/locales/da.i18n.json +++ b/packages/i18n/src/locales/da.i18n.json @@ -2171,9 +2171,9 @@ "Message_has_been_unpinned": "Beskeden er frigjort", "Message_has_been_unstarred": "Beskeden er ikke længere stjernemarkeret", "Message_info": "Besked info", - "Message_is_removed": "Beskeden er fjernet", "Message_pinning": "Meddelelse fastgørelse", "Message_removed": "Beskeden er fjernet", + "message_removed": "beskeden er fjernet", "Message_sent_by_email": "Besked sendt via e-mail", "Message_starring": "Meddelelse med hovedrollen", "Message_too_long": "Besked for lang", diff --git a/packages/i18n/src/locales/de-AT.i18n.json b/packages/i18n/src/locales/de-AT.i18n.json index ac631250d7693..dbf9ccdb9f08d 100644 --- a/packages/i18n/src/locales/de-AT.i18n.json +++ b/packages/i18n/src/locales/de-AT.i18n.json @@ -1455,9 +1455,9 @@ "Message_deleting_blocked": "Diese Nachricht kann nicht mehr gelöscht werden.", "Message_editing": "Bearbeiten von Nachrichten", "Message_info": "Nachrichteninfo", - "Message_is_removed": "Diese Nachricht wurde entfernt.", "Message_pinning": "Anpinnen von Nachrichten", "Message_removed": "Diese Nachricht wurde entfernt.", + "message_removed": "diese nachricht wurde entfernt.", "Message_sent_by_email": "Nachricht per E-Mail gesendet", "Message_starring": "Markieren von Nachrichten", "Message_too_long": "Diese Nachricht ist zu lang.", diff --git a/packages/i18n/src/locales/de.i18n.json b/packages/i18n/src/locales/de.i18n.json index 6940f7efc662b..6a3986d377074 100644 --- a/packages/i18n/src/locales/de.i18n.json +++ b/packages/i18n/src/locales/de.i18n.json @@ -2748,9 +2748,9 @@ "Message_has_been_unpinned": "Nachricht wurde entpinnt", "Message_has_been_unstarred": "Nachricht nicht mehr favorisiert", "Message_info": "Nachricht Info", - "Message_is_removed": "Nachricht entfernt", "Message_pinning": "Anheften von Nachrichten", "Message_removed": "Die Nachricht wurde entfernt", + "message_removed": "Nachricht entfernt", "Message_sent_by_email": "Nachricht per E-Mail versendet", "Message_starring": "Markieren von favorisierten Nachrichten", "Message_too_long": "Die Nachricht ist zu lang", diff --git a/packages/i18n/src/locales/el.i18n.json b/packages/i18n/src/locales/el.i18n.json index 5099268440086..d8164f5053037 100644 --- a/packages/i18n/src/locales/el.i18n.json +++ b/packages/i18n/src/locales/el.i18n.json @@ -1459,9 +1459,9 @@ "Message_deleting_blocked": "Αυτό το μήνυμα δεν μπορεί να διαγραφεί πια", "Message_editing": "επεξεργασίας του μηνύματος", "Message_info": "Πληροφορίες μηνυμάτων", - "Message_is_removed": "Το μήνυμα αφαιρέθηκε", "Message_pinning": "μήνυμα εναποθέτει", "Message_removed": "Το μήνυμα αφαιρέθηκε", + "message_removed": "το μήνυμα αφαιρέθηκε", "Message_sent_by_email": "Μήνυμα αποστέλλεται με Email", "Message_starring": "μήνυμα πρωταγωνιστή", "Message_too_long": "Μήνυμα πάρα πολύ καιρό", diff --git a/packages/i18n/src/locales/en.i18n.json b/packages/i18n/src/locales/en.i18n.json index b96c22d3b557d..89c8b2ee1cbc6 100644 --- a/packages/i18n/src/locales/en.i18n.json +++ b/packages/i18n/src/locales/en.i18n.json @@ -3709,10 +3709,10 @@ "Message_has_been_unpinned": "Message has been unpinned", "Message_has_been_unstarred": "Message has been unstarred", "Message_info": "Message info", - "Message_is_removed": "message removed", "Message_list": "Message list", "Message_pinning": "Message pinning", - "Message_removed": "message removed", + "Message_removed": "Message removed", + "message_removed": "message removed", "Message_request": "Message request", "Message_sent": "Message sent", "Message_sent_by_email": "Message sent by Email", diff --git a/packages/i18n/src/locales/eo.i18n.json b/packages/i18n/src/locales/eo.i18n.json index c80c581bcc629..7a36c875f8c60 100644 --- a/packages/i18n/src/locales/eo.i18n.json +++ b/packages/i18n/src/locales/eo.i18n.json @@ -1452,9 +1452,9 @@ "Message_deleting_blocked": "Ĉi tiu mesaĝo ne plu povas esti forigita", "Message_editing": "Mesaĝo-redaktado", "Message_info": "Mesaĝaj informoj", - "Message_is_removed": "Mesaĝo forigita", "Message_pinning": "Mesaĝo pinning", "Message_removed": "Mesaĝo forigita", + "message_removed": "mesaĝo forigita", "Message_sent_by_email": "Mesaĝo sendita de retpoŝto", "Message_starring": "Mesaĝo ĉefrolita", "Message_too_long": "Mesaĝo tro longa", diff --git a/packages/i18n/src/locales/es.i18n.json b/packages/i18n/src/locales/es.i18n.json index 5a322881861ec..db46dbfe37bfb 100644 --- a/packages/i18n/src/locales/es.i18n.json +++ b/packages/i18n/src/locales/es.i18n.json @@ -2523,9 +2523,9 @@ "Message_has_been_unpinned": "El mensaje se ha desfijado", "Message_has_been_unstarred": "El mensaje se ha marcado como no destacado", "Message_info": "Información de mensaje", - "Message_is_removed": "Mensaje eliminado", "Message_pinning": "Fijar mensajes", "Message_removed": "Mensaje eliminado", + "message_removed": "mensaje eliminado", "Message_sent_by_email": "Mensaje enviado por correo electrónico", "Message_starring": "Destacar mensajes", "Message_too_long": "Mensaje demasiado largo", diff --git a/packages/i18n/src/locales/fa.i18n.json b/packages/i18n/src/locales/fa.i18n.json index 1b250d01e6516..f96652705de56 100644 --- a/packages/i18n/src/locales/fa.i18n.json +++ b/packages/i18n/src/locales/fa.i18n.json @@ -1701,9 +1701,9 @@ "Message_deleting_blocked": "این پیام می توانید دیگر حذف شود", "Message_editing": "ویرایش پیام", "Message_info": "اطلاعات پیام", - "Message_is_removed": "پیام حذف", "Message_pinning": "سنجاق پیام", "Message_removed": "پیام حذف", + "message_removed": "پیام حذف", "Message_sent_by_email": "پیام فرستاده شده توسط ایمیل", "Message_starring": "پیام بازیگران", "Message_too_long": "پیام بسیار طولانی", diff --git a/packages/i18n/src/locales/fi.i18n.json b/packages/i18n/src/locales/fi.i18n.json index 6bb8696184135..da1af39ca580e 100644 --- a/packages/i18n/src/locales/fi.i18n.json +++ b/packages/i18n/src/locales/fi.i18n.json @@ -2815,9 +2815,9 @@ "Message_has_been_unpinned": "Viestin kiinnitys poistettu", "Message_has_been_unstarred": "Viestin tähtimerkintä poistettu", "Message_info": "Viestin tiedot", - "Message_is_removed": "viesti poistettu", "Message_pinning": "Viestin kiinnitys", - "Message_removed": "viesti poistettu", + "Message_removed": "Viesti poistettu", + "message_removed": "viesti poistettu", "Message_sent_by_email": "Viesti lähetetty sähköpostilla", "Message_starring": "Viestin merkitseminen tähdellä", "Message_too_long": "Viesti liian pitkä", diff --git a/packages/i18n/src/locales/fr.i18n.json b/packages/i18n/src/locales/fr.i18n.json index 3574a52e951a9..f7ffd1f6bbe96 100644 --- a/packages/i18n/src/locales/fr.i18n.json +++ b/packages/i18n/src/locales/fr.i18n.json @@ -2482,9 +2482,9 @@ "Message_has_been_unpinned": "Le message a été désépinglé", "Message_has_been_unstarred": "Le message a été désétoilé", "Message_info": "Informations sur le message", - "Message_is_removed": "Message supprimé", "Message_pinning": "Épinglage de messages", "Message_removed": "Message supprimé", + "message_removed": "message supprimé", "Message_sent_by_email": "Message envoyé par e-mail", "Message_starring": "Étoilage de messages", "Message_too_long": "Message trop long", diff --git a/packages/i18n/src/locales/gl.i18n.json b/packages/i18n/src/locales/gl.i18n.json index d0b70685f619e..52451d95d264f 100644 --- a/packages/i18n/src/locales/gl.i18n.json +++ b/packages/i18n/src/locales/gl.i18n.json @@ -179,8 +179,8 @@ "Logout_Others": "Pechar sesión en outras localizacións", "Message": "Mensaxe", "Message_deleting_blocked": "Esta mensaxe xa non se pode eliminar", - "Message_is_removed": "Eliminouse a mensaxe", "Message_removed": "Eliminouse a mensaxe", + "message_removed": "eliminouse a mensaxe", "Message_too_long": "A mensaxe é demasiado longa", "Messages": "Mensaxes", "Messages_sent": "Mensaxes enviadas", diff --git a/packages/i18n/src/locales/he.i18n.json b/packages/i18n/src/locales/he.i18n.json index b40bb6a3771e7..8a322bec5e1a0 100644 --- a/packages/i18n/src/locales/he.i18n.json +++ b/packages/i18n/src/locales/he.i18n.json @@ -767,9 +767,9 @@ "Message_deleting_blocked": "הודעה זו לא ניתן למחוק עוד", "Message_editing": "עריכת הודעות", "Message_info": "מידע על ההודעה", - "Message_is_removed": "ההודעה הוסרה", "Message_pinning": "הצמדת הודעות", "Message_removed": "ההודעה הוסרה", + "message_removed": "ההודעה הוסרה", "Message_starring": "סימון הודעות בכוכב", "Message_too_long": "ההודעה ארוכה מדי", "Message_view_mode_info": "זה משנה את כמות הודעות החלל תופסת על מסך.", diff --git a/packages/i18n/src/locales/hi-IN.i18n.json b/packages/i18n/src/locales/hi-IN.i18n.json index 5875c02e6d265..1a15f58b68e48 100644 --- a/packages/i18n/src/locales/hi-IN.i18n.json +++ b/packages/i18n/src/locales/hi-IN.i18n.json @@ -2938,9 +2938,9 @@ "Message_has_been_unpinned": "संदेश अनपिन कर दिया गया है", "Message_has_been_unstarred": "संदेश अतारांकित कर दिया गया है", "Message_info": "संदेश जानकारी", - "Message_is_removed": "संदेश हटा दिया गया", "Message_pinning": "संदेश पिन करना", "Message_removed": "संदेश हटा दिया गया", + "message_removed": "संदेश हटा दिया गया", "Message_sent_by_email": "ईमेल द्वारा भेजा गया संदेश", "Message_starring": "संदेश अभिनीत", "Message_too_long": "संदेश बहुत लंबा है", diff --git a/packages/i18n/src/locales/hr.i18n.json b/packages/i18n/src/locales/hr.i18n.json index 21a0d2e61a19c..27d0939c8fdbf 100644 --- a/packages/i18n/src/locales/hr.i18n.json +++ b/packages/i18n/src/locales/hr.i18n.json @@ -1570,9 +1570,9 @@ "Message_deleting_blocked": "Ova poruka se više ne može izbrisati", "Message_editing": "Uređivanje poruke", "Message_info": "Informacije o poruci", - "Message_is_removed": "Poruka je maknuta", "Message_pinning": "Prikvačivanje poruka", "Message_removed": "Poruka je maknuta", + "message_removed": "poruka je maknuta", "Message_sent_by_email": "Poruka poslana putem e-pošte", "Message_starring": "Dodavanje zvjezdica na poruka", "Message_too_long": "Poruka je preduga", diff --git a/packages/i18n/src/locales/hu.i18n.json b/packages/i18n/src/locales/hu.i18n.json index 8652477b5536f..26f206916ad84 100644 --- a/packages/i18n/src/locales/hu.i18n.json +++ b/packages/i18n/src/locales/hu.i18n.json @@ -2682,9 +2682,9 @@ "Message_has_been_unpinned": "Az üzenet kitűzése meg lett szüntetve", "Message_has_been_unstarred": "Az üzenet csillagozása meg lett szüntetve", "Message_info": "Üzenetinformációk", - "Message_is_removed": "üzenet eltávolítva", "Message_pinning": "Üzenet kitűzése", "Message_removed": "üzenet eltávolítva", + "message_removed": "üzenet eltávolítva", "Message_sent_by_email": "Üzenet elküldve e-mailben", "Message_starring": "Üzenet csillagozása", "Message_too_long": "Az üzenet túl hosszú", diff --git a/packages/i18n/src/locales/id.i18n.json b/packages/i18n/src/locales/id.i18n.json index f9c52c4deeebc..365fa76a5467b 100644 --- a/packages/i18n/src/locales/id.i18n.json +++ b/packages/i18n/src/locales/id.i18n.json @@ -1452,9 +1452,9 @@ "Message_deleting_blocked": "Pesan ini tidak dapat dihapus lagi", "Message_editing": "editing pesan", "Message_info": "Info pesan", - "Message_is_removed": "Pesan telah dihapus", "Message_pinning": "pesan menjepit", "Message_removed": "Pesan telah dihapus", + "message_removed": "pesan telah dihapus", "Message_sent_by_email": "Pesan dikirim melalui Email", "Message_starring": "pesan dibintangi", "Message_too_long": "Pesan terlalu lama", diff --git a/packages/i18n/src/locales/it.i18n.json b/packages/i18n/src/locales/it.i18n.json index 65200e25aa823..7a0168348f394 100644 --- a/packages/i18n/src/locales/it.i18n.json +++ b/packages/i18n/src/locales/it.i18n.json @@ -1844,9 +1844,9 @@ "Message_deleting_blocked": "Questo messaggio non può più essere eliminato", "Message_editing": "Modifica del messaggio", "Message_info": "Informazioni sul messaggio", - "Message_is_removed": "messaggio rimosso", "Message_pinning": "Evidenzia Messaggio", - "Message_removed": "messaggio rimosso", + "Message_removed": "Messaggio rimosso", + "message_removed": "messaggio rimosso", "Message_sent_by_email": "Messaggio inviato tramite email", "Message_starring": "Segnalibro Messaggio", "Message_too_long": "Messaggio troppo lungo", diff --git a/packages/i18n/src/locales/ja.i18n.json b/packages/i18n/src/locales/ja.i18n.json index 902982d4c637d..9d605008898ec 100644 --- a/packages/i18n/src/locales/ja.i18n.json +++ b/packages/i18n/src/locales/ja.i18n.json @@ -2462,9 +2462,9 @@ "Message_has_been_unpinned": "メッセージの固定が解除されました", "Message_has_been_unstarred": "メッセージのスターを外しました", "Message_info": "メッセージ情報", - "Message_is_removed": "メッセージを削除しました", "Message_pinning": "メッセージの固定", "Message_removed": "メッセージを削除しました", + "message_removed": "メッセージを削除しました", "Message_sent_by_email": "メールで送信されたメッセージ", "Message_starring": "スター付きのメッセージ", "Message_too_long": "メッセージが長すぎます", diff --git a/packages/i18n/src/locales/ka-GE.i18n.json b/packages/i18n/src/locales/ka-GE.i18n.json index 76d251fdccd52..2f7da72034c42 100644 --- a/packages/i18n/src/locales/ka-GE.i18n.json +++ b/packages/i18n/src/locales/ka-GE.i18n.json @@ -1979,9 +1979,9 @@ "Message_has_been_unpinned": "შეტყობინება აღარ არის მიმაგრებული", "Message_has_been_unstarred": "შეტყობინება ვარსკვლავით აღარ არის მონიშნული", "Message_info": "შეტყობინების ინფორმაცია", - "Message_is_removed": "შეტყობინება წაშლილია", "Message_pinning": "შეტყობინების მიმარგება", "Message_removed": "შეტყობინება წაშლილია", + "message_removed": "შეტყობინება წაშლილია", "Message_sent_by_email": "შეტყობინება გაგზავნილია ელ.ფოსტით", "Message_starring": "შეტყობინების ვარსკვლავით მონიშვნა", "Message_too_long": "შეტყობინება ძალიან გრძელია", diff --git a/packages/i18n/src/locales/km.i18n.json b/packages/i18n/src/locales/km.i18n.json index 19fd70fdb0995..3713fe8d5a409 100644 --- a/packages/i18n/src/locales/km.i18n.json +++ b/packages/i18n/src/locales/km.i18n.json @@ -1719,9 +1719,9 @@ "Message_deleting_blocked": "សារនេះមិនអាចត្រូវបានលុបទៀតទេ", "Message_editing": "កែសម្រួលសារ", "Message_info": "ព័ត៌មានសារ", - "Message_is_removed": "សារ​បាន​លប់", "Message_pinning": "សារ pinning", "Message_removed": "សារ​បាន​លប់", + "message_removed": "សារ​បាន​លប់", "Message_sent_by_email": "សារបានផ្ញើដោយអ៊ីម៉ែល", "Message_starring": "សារសម្តែង", "Message_too_long": "សារយូរពេក", diff --git a/packages/i18n/src/locales/ko.i18n.json b/packages/i18n/src/locales/ko.i18n.json index f82017f98ed68..bcc0791da7568 100644 --- a/packages/i18n/src/locales/ko.i18n.json +++ b/packages/i18n/src/locales/ko.i18n.json @@ -2151,9 +2151,9 @@ "Message_has_been_unpinned": "메시지의 고정이 해제되었습니다", "Message_has_been_unstarred": "메시지의 별표가 해제되었습니다.", "Message_info": "메시지 정보", - "Message_is_removed": "메시지 삭제", "Message_pinning": "메시지 고정", "Message_removed": "메시지 삭제", + "message_removed": "메시지 삭제", "Message_sent_by_email": "이메일로 보낸 메시지", "Message_starring": "별표 메시지", "Message_too_long": "메시지가 너무 깁니다.", diff --git a/packages/i18n/src/locales/ku.i18n.json b/packages/i18n/src/locales/ku.i18n.json index 44b3f44787256..84095915a58bc 100644 --- a/packages/i18n/src/locales/ku.i18n.json +++ b/packages/i18n/src/locales/ku.i18n.json @@ -1448,9 +1448,9 @@ "Message_deleting_blocked": "Vê peyamê ne dikarin naherikin jêbirin", "Message_editing": "guherandinê Message", "Message_info": "Agahdariya peyamê", - "Message_is_removed": "Message rakirin", "Message_pinning": "Message Colîn", "Message_removed": "Message rakirin", + "message_removed": "message rakirin", "Message_sent_by_email": "Peyama şandin Email", "Message_starring": "Message derdixe ku", "Message_too_long": "Peyam zêde dirêj", diff --git a/packages/i18n/src/locales/lo.i18n.json b/packages/i18n/src/locales/lo.i18n.json index 8788bc4d77673..bb0ab720a3ff2 100644 --- a/packages/i18n/src/locales/lo.i18n.json +++ b/packages/i18n/src/locales/lo.i18n.json @@ -1482,9 +1482,9 @@ "Message_deleting_blocked": "ຂໍ້ຄວາມນີ້ບໍ່ສາມາດໄດ້ຮັບການລຶບອີກຕໍ່ໄປ", "Message_editing": "ການແກ້ໄຂຂໍ້ຄວາມ", "Message_info": "ຂໍ້ຄວາມຂໍ້ຄວາມ", - "Message_is_removed": "ຂໍ້ຄວາມການໂຍກຍ້າຍອອກ", "Message_pinning": "ຂໍ້ຄວາມ pinning", "Message_removed": "ຂໍ້ຄວາມການໂຍກຍ້າຍອອກ", + "message_removed": "ຂໍ້ຄວາມການໂຍກຍ້າຍອອກ", "Message_sent_by_email": "ຂໍ້ຄວາມທີ່ສົ່ງໂດຍອີເມວ", "Message_starring": "ຂໍ້ຄວາມສະແດງ", "Message_too_long": "ຂໍ້ຄວາມຍາວເກີນໄປ", diff --git a/packages/i18n/src/locales/lt.i18n.json b/packages/i18n/src/locales/lt.i18n.json index 8a0ab074a7f58..145a796b61e7f 100644 --- a/packages/i18n/src/locales/lt.i18n.json +++ b/packages/i18n/src/locales/lt.i18n.json @@ -1502,9 +1502,9 @@ "Message_deleting_blocked": "Šio pranešimo negalima ištrinti", "Message_editing": "Pranešimo redagavimas", "Message_info": "Pranešimo informacija", - "Message_is_removed": "Pranešimas pašalintas", "Message_pinning": "Pranešimo prisegimas", "Message_removed": "Pranešimas pašalintas", + "message_removed": "pranešimas pašalintas", "Message_sent_by_email": "Pranešimas išsiųstas el. Paštu", "Message_starring": "Žinutė starring", "Message_too_long": "Pranešimas per ilgas", diff --git a/packages/i18n/src/locales/lv.i18n.json b/packages/i18n/src/locales/lv.i18n.json index ad7212d19a43b..10b30aee6cb85 100644 --- a/packages/i18n/src/locales/lv.i18n.json +++ b/packages/i18n/src/locales/lv.i18n.json @@ -1468,9 +1468,9 @@ "Message_deleting_blocked": "Šo ziņojumu vairs nevar izdzēst", "Message_editing": "Ziņojuma rediģēšana", "Message_info": "Ziņojuma info", - "Message_is_removed": "Ziņojums ir noņemts", "Message_pinning": "Ziņojuma piespraušana", "Message_removed": "Ziņojums ir noņemts", + "message_removed": "ziņojums ir noņemts", "Message_sent_by_email": "Ziņojums nosūtīts pa e-pastu", "Message_starring": "Ziņojumu atzīmēšana ar zvaigznīti", "Message_too_long": "Ziņojums ir pārāk garš", diff --git a/packages/i18n/src/locales/mn.i18n.json b/packages/i18n/src/locales/mn.i18n.json index 9d1af7dbd78b8..e1de9d783c95c 100644 --- a/packages/i18n/src/locales/mn.i18n.json +++ b/packages/i18n/src/locales/mn.i18n.json @@ -1452,9 +1452,9 @@ "Message_deleting_blocked": "Энэ зурвасыг устгах боломжгүй", "Message_editing": "Зурвас засварлах", "Message_info": "Зурвасын мэдээлэл", - "Message_is_removed": "Мессежийг устгасан", "Message_pinning": "Зурвасын зүү", "Message_removed": "Мессежийг устгасан", + "message_removed": "мессежийг устгасан", "Message_sent_by_email": "Имэйлээр илгээгдсэн зурвас", "Message_starring": "Зурвас тоглосон", "Message_too_long": "Зурвас хэт урт байна", diff --git a/packages/i18n/src/locales/ms-MY.i18n.json b/packages/i18n/src/locales/ms-MY.i18n.json index 2f3590892ae0c..a5d3fc88abffa 100644 --- a/packages/i18n/src/locales/ms-MY.i18n.json +++ b/packages/i18n/src/locales/ms-MY.i18n.json @@ -1456,9 +1456,9 @@ "Message_deleting_blocked": "Mesej ini tidak boleh dihapuskan lagi", "Message_editing": "editing mesej", "Message_info": "Maklumat mesej", - "Message_is_removed": "Mesej dipadam", "Message_pinning": "mesej menyematkan", "Message_removed": "Mesej dipadam", + "message_removed": "mesej dipadam", "Message_sent_by_email": "Mesej dihantar melalui E-mel", "Message_starring": "mesej dibintangi", "Message_too_long": "Mesej terlalu lama", diff --git a/packages/i18n/src/locales/nb.i18n.json b/packages/i18n/src/locales/nb.i18n.json index c1c96a90c66dd..efaac54a1fa95 100644 --- a/packages/i18n/src/locales/nb.i18n.json +++ b/packages/i18n/src/locales/nb.i18n.json @@ -3491,10 +3491,10 @@ "Message_has_been_unpinned": "Meldingen er løsnet", "Message_has_been_unstarred": "Meldingen har blitt fjernet stjernemerkingen", "Message_info": "Meldingsinformasjon", - "Message_is_removed": "melding fjernet", "Message_list": "Meldingsliste", "Message_pinning": "Melding festes", "Message_removed": "melding fjernet", + "message_removed": "melding fjernet", "Message_request": "Forespørsel om melding", "Message_sent": "Melding sendt", "Message_sent_by_email": "Melding sendt på e-post", diff --git a/packages/i18n/src/locales/nl.i18n.json b/packages/i18n/src/locales/nl.i18n.json index dc24ac7c34536..c9e8865a2ccd6 100644 --- a/packages/i18n/src/locales/nl.i18n.json +++ b/packages/i18n/src/locales/nl.i18n.json @@ -2486,9 +2486,9 @@ "Message_has_been_unpinned": "Bericht is losgemaakt", "Message_has_been_unstarred": "Bericht heeft geen ster meer", "Message_info": "Bericht info", - "Message_is_removed": "Bericht verwijderd", "Message_pinning": "Bericht vastzetten", "Message_removed": "Bericht verwijderd", + "message_removed": "bericht verwijderd", "Message_sent_by_email": "Bericht verzonden per e-mail", "Message_starring": "Bericht in de hoofdrol", "Message_too_long": "Bericht te lang", diff --git a/packages/i18n/src/locales/nn.i18n.json b/packages/i18n/src/locales/nn.i18n.json index 9b870844a5bb4..27e49d7b85dc6 100644 --- a/packages/i18n/src/locales/nn.i18n.json +++ b/packages/i18n/src/locales/nn.i18n.json @@ -3260,10 +3260,10 @@ "Message_has_been_unpinned": "Meldingen er løsnet", "Message_has_been_unstarred": "Meldingen har blitt fjernet stjernemerkingen", "Message_info": "Melding info", - "Message_is_removed": "melding fjernet", "Message_list": "Meldingsliste", "Message_pinning": "Melding pinne", "Message_removed": "Melding fjernet", + "message_removed": "melding fjernet", "Message_sent": "Melding sendt", "Message_sent_by_email": "Melding sendt via e-post", "Message_starring": "Melding med hovedrollen", diff --git a/packages/i18n/src/locales/pl.i18n.json b/packages/i18n/src/locales/pl.i18n.json index 94a876e4a788d..b88c27e71afc6 100644 --- a/packages/i18n/src/locales/pl.i18n.json +++ b/packages/i18n/src/locales/pl.i18n.json @@ -2692,9 +2692,9 @@ "Message_has_been_unpinned": "Wiadomość została odpięta", "Message_has_been_unstarred": "Gwiazdka został usunięta z wiadomości", "Message_info": "Informacje o wiadomości", - "Message_is_removed": "wiadomość usunięta", "Message_pinning": "Przypinanie wiadomości", "Message_removed": "Wiadomość usunięta", + "message_removed": "wiadomość usunięta", "Message_sent_by_email": "Wiadomość wysłana przez e-mail", "Message_starring": "Dawanie gwiazdek wiadomościom", "Message_too_long": "Wiadomość jest za długa", diff --git a/packages/i18n/src/locales/pt-BR.i18n.json b/packages/i18n/src/locales/pt-BR.i18n.json index 3779e81eae554..7649314a5f221 100644 --- a/packages/i18n/src/locales/pt-BR.i18n.json +++ b/packages/i18n/src/locales/pt-BR.i18n.json @@ -3598,10 +3598,10 @@ "Message_has_been_unpinned": "Mensagem foi desafixada", "Message_has_been_unstarred": "Mensagem foi desfavoritada", "Message_info": "Informação da mensagem", - "Message_is_removed": "Mensagem removida", "Message_list": "Lista de mensagens", "Message_pinning": "Fixação de mensagem", "Message_removed": "Mensagem removida", + "message_removed": "mensagem removida", "Message_request": "Solicitação de mensagem", "Message_sent": "Mensagem enviada", "Message_sent_by_email": "Mensagem enviada por e-mail", diff --git a/packages/i18n/src/locales/pt.i18n.json b/packages/i18n/src/locales/pt.i18n.json index 0c55b23c355ca..ebd8c2bd0f771 100644 --- a/packages/i18n/src/locales/pt.i18n.json +++ b/packages/i18n/src/locales/pt.i18n.json @@ -1714,9 +1714,9 @@ "Message_deleting_blocked": "Esta mensagem não pode ser mais apagada", "Message_editing": "Edição de mensagem", "Message_info": "Informação da mensagem", - "Message_is_removed": "Mensagem removida", "Message_pinning": "Fixação de mensagem", "Message_removed": "Mensagem removida", + "message_removed": "mensagem removida", "Message_sent_by_email": "Mensagem enviada por Email", "Message_starring": "Favoritando mensagem", "Message_too_long": "Mensagem muito longa", diff --git a/packages/i18n/src/locales/ro.i18n.json b/packages/i18n/src/locales/ro.i18n.json index 5d405fa2bd8e6..841d7ee97c837 100644 --- a/packages/i18n/src/locales/ro.i18n.json +++ b/packages/i18n/src/locales/ro.i18n.json @@ -1454,9 +1454,9 @@ "Message_deleting_blocked": "Acest mesaj nu mai poate fi șters", "Message_editing": "editare mesaje", "Message_info": "Informații despre mesaj", - "Message_is_removed": "Mesaj eliminat", "Message_pinning": "mesajul pinning", "Message_removed": "Mesaj eliminat", + "message_removed": "mesaj eliminat", "Message_sent_by_email": "Mesajul trimis prin e-mail", "Message_starring": "mesajul încearcă", "Message_too_long": "Mesaj prea lung", diff --git a/packages/i18n/src/locales/ru.i18n.json b/packages/i18n/src/locales/ru.i18n.json index 7f7f902574de0..4a21e447e8e93 100644 --- a/packages/i18n/src/locales/ru.i18n.json +++ b/packages/i18n/src/locales/ru.i18n.json @@ -2595,9 +2595,9 @@ "Message_has_been_unpinned": "Сообщение было откреплено", "Message_has_been_unstarred": "С сообщения была снята отметка", "Message_info": "Информация о сообщении", - "Message_is_removed": "Сообщение удалено", "Message_pinning": "Закрепление сообщений", "Message_removed": "Сообщение удалено", + "message_removed": "сообщение удалено", "Message_sent_by_email": "Сообщение отправлено по электронной почте", "Message_starring": "Помеченное сообщение", "Message_too_long": "Сообщение слишком длинное", diff --git a/packages/i18n/src/locales/sk-SK.i18n.json b/packages/i18n/src/locales/sk-SK.i18n.json index 0b32a02002015..d56e0d83011ad 100644 --- a/packages/i18n/src/locales/sk-SK.i18n.json +++ b/packages/i18n/src/locales/sk-SK.i18n.json @@ -1459,9 +1459,9 @@ "Message_deleting_blocked": "Túto správu už nemožno vymazať", "Message_editing": "Upravovanie správ", "Message_info": "Informácie o správe", - "Message_is_removed": "Správa bola odstránená", "Message_pinning": "Pripájanie správ", "Message_removed": "Správa bola odstránená", + "message_removed": "správa bola odstránená", "Message_sent_by_email": "Správa bola odoslaná e-mailom", "Message_starring": "Správa v hlavičke", "Message_too_long": "Príliš dlhá správa", diff --git a/packages/i18n/src/locales/sl-SI.i18n.json b/packages/i18n/src/locales/sl-SI.i18n.json index 90c7b9b5719f0..d054c65943907 100644 --- a/packages/i18n/src/locales/sl-SI.i18n.json +++ b/packages/i18n/src/locales/sl-SI.i18n.json @@ -1449,9 +1449,9 @@ "Message_deleting_blocked": "Tega sporočila več ni mogoče izbrisati", "Message_editing": "Urejanje sporočil", "Message_info": "Informacije o sporočilu", - "Message_is_removed": "Sporočilo odstranjeno", "Message_pinning": "Pripenjanje sporočil", "Message_removed": "Sporočilo odstranjeno", + "message_removed": "sporočilo odstranjeno", "Message_sent_by_email": "Sporočilo poslano po e-pošti", "Message_starring": "Označevanje sporočil z zvezdico ", "Message_too_long": "Sporočilo je predolgo", diff --git a/packages/i18n/src/locales/sq.i18n.json b/packages/i18n/src/locales/sq.i18n.json index bea438b06ab96..ed13039f992ea 100644 --- a/packages/i18n/src/locales/sq.i18n.json +++ b/packages/i18n/src/locales/sq.i18n.json @@ -1454,9 +1454,9 @@ "Message_deleting_blocked": "Ky mesazh nuk mund të fshihet më", "Message_editing": "mesazhi redaktimi", "Message_info": "Mesazhi i informacionit", - "Message_is_removed": "Masazhi është fshirë", "Message_pinning": "mesazhi pinning", "Message_removed": "Masazhi është fshirë", + "message_removed": "masazhi është fshirë", "Message_sent_by_email": "Mesazhi i dërguar nga Email", "Message_starring": "mesazhi starring", "Message_too_long": "Mesazhi shumë e gjatë", diff --git a/packages/i18n/src/locales/sr.i18n.json b/packages/i18n/src/locales/sr.i18n.json index ce2f6ae4f6f04..b7d745b436992 100644 --- a/packages/i18n/src/locales/sr.i18n.json +++ b/packages/i18n/src/locales/sr.i18n.json @@ -1301,9 +1301,9 @@ "Message_deleting_blocked": "Ова порука више не може бити обрисана", "Message_editing": "Уређивање поруке", "Message_info": "Информације о поруци", - "Message_is_removed": "Порука уклоњена", "Message_pinning": "Порука пиннинг", "Message_removed": "Порука уклоњена", + "message_removed": "порука уклоњена", "Message_sent_by_email": "Порука послата путем е-поште", "Message_starring": "Порука глуми", "Message_too_long": "Порука предуго", diff --git a/packages/i18n/src/locales/sv.i18n.json b/packages/i18n/src/locales/sv.i18n.json index fa66233f1dc9a..45fbaa510ff11 100644 --- a/packages/i18n/src/locales/sv.i18n.json +++ b/packages/i18n/src/locales/sv.i18n.json @@ -3587,10 +3587,10 @@ "Message_has_been_unpinned": "Meddelandet har lossats", "Message_has_been_unstarred": "Meddelandets stjärnmarkeringar har tagits bort", "Message_info": "Meddelandeinfo", - "Message_is_removed": "meddelande borttaget", "Message_list": "Lista över meddelanden", "Message_pinning": "Fäst meddelande", "Message_removed": "meddelandet borttaget", + "message_removed": "meddelande borttaget", "Message_request": "Meddelandebegäran", "Message_sent": "Meddelande skickat", "Message_sent_by_email": "Meddelande skickat via e-post", diff --git a/packages/i18n/src/locales/ta-IN.i18n.json b/packages/i18n/src/locales/ta-IN.i18n.json index 4c4bcb5a6e22d..05a40ed785a8d 100644 --- a/packages/i18n/src/locales/ta-IN.i18n.json +++ b/packages/i18n/src/locales/ta-IN.i18n.json @@ -1454,9 +1454,9 @@ "Message_deleting_blocked": "இந்த செய்தி இனி நீக்க முடியாது", "Message_editing": "செய்தி எடிட்டிங்", "Message_info": "செய்தி தகவல்", - "Message_is_removed": "செய்தி நீக்கப்பட்டது", "Message_pinning": "செய்தி பின்செய்வதில்", "Message_removed": "செய்தி நீக்கப்பட்டது", + "message_removed": "செய்தி நீக்கப்பட்டது", "Message_sent_by_email": "மின்னஞ்சல் அனுப்பிய செய்தி", "Message_starring": "நடித்த செய்தி", "Message_too_long": "நீண்ட செய்தி", diff --git a/packages/i18n/src/locales/th-TH.i18n.json b/packages/i18n/src/locales/th-TH.i18n.json index 66ac844864d2c..5f80fd429c6d6 100644 --- a/packages/i18n/src/locales/th-TH.i18n.json +++ b/packages/i18n/src/locales/th-TH.i18n.json @@ -1448,9 +1448,9 @@ "Message_deleting_blocked": "ไม่สามารถลบข้อความนี้ได้อีกต่อไป", "Message_editing": "แก้ไขข้อความ", "Message_info": "ข้อมูลข้อความ", - "Message_is_removed": "ลบข้อความแล้ว", "Message_pinning": "ปักหมุดข้อความ", "Message_removed": "ลบข้อความแล้ว", + "message_removed": "ลบข้อความแล้ว", "Message_sent_by_email": "ข้อความที่ส่งทางอีเมล", "Message_starring": "ข้อความที่นำแสดงโดย", "Message_too_long": "ข้อความยาวเกินไป", diff --git a/packages/i18n/src/locales/tr.i18n.json b/packages/i18n/src/locales/tr.i18n.json index 81787b722c5c3..d6731e35a32e1 100644 --- a/packages/i18n/src/locales/tr.i18n.json +++ b/packages/i18n/src/locales/tr.i18n.json @@ -1739,9 +1739,9 @@ "Message_deleting_blocked": "Bu ileti artık silinemez", "Message_editing": "İleti düzenleme", "Message_info": "İleti bilgisi", - "Message_is_removed": "İleti silindi", "Message_pinning": "İleti sabitleniyor", "Message_removed": "İleti silindi", + "message_removed": "ileti silindi", "Message_sent_by_email": "İleti e-posta aracılığıyla gönderildi", "Message_starring": "İleti favorilere ekleniyor", "Message_too_long": "İleti fazla uzun", diff --git a/packages/i18n/src/locales/ug.i18n.json b/packages/i18n/src/locales/ug.i18n.json index 68287f3ecdf16..a28de47e07bdf 100644 --- a/packages/i18n/src/locales/ug.i18n.json +++ b/packages/i18n/src/locales/ug.i18n.json @@ -598,9 +598,9 @@ "Message_TimeFormat_Description": "قاراڭ:[Moment.js](http://momentjs.com/docs/#/displaying/format/)", "Message_deleting_blocked": "بۇ ئۇچۇر يەنە بىر قېتىم يۇيۇۋەتكىلى بولمايدۇ", "Message_editing": "قالدۇرۇلغان سۆزنى تەھرىرلەش", - "Message_is_removed": "ئۇچۇر يۇيۇلدى", "Message_pinning": "قالدۇرۇلغان سۆزنى باغلاش", "Message_removed": "ئۇچۇر يۇيۇلدى", + "message_removed": "ئۇچۇر يۇيۇلدى", "Message_starring": "باش رولنىڭ قالدۇرغان سۆزى", "Message_too_long": "ئۇچۇر بەك ئۇزۇن", "Message_view_mode_info": "بۇ ئۇچۇرنىڭ ئېكراندا ئىگىلىگەن بوشلۇقىنى ئۆزگەرتىدۇ", diff --git a/packages/i18n/src/locales/uk.i18n.json b/packages/i18n/src/locales/uk.i18n.json index 24a146a23c2a5..f321241d97e11 100644 --- a/packages/i18n/src/locales/uk.i18n.json +++ b/packages/i18n/src/locales/uk.i18n.json @@ -1888,9 +1888,9 @@ "Message_has_been_starred": "Повідомлення було позначено зірочкою", "Message_has_been_unstarred": "З повідомлення було знято позначку-зірочку", "Message_info": "Інформація про повідомлення", - "Message_is_removed": "повідомлення видалено", "Message_pinning": "повідомлення піннінга", - "Message_removed": "повідомлення видалено", + "Message_removed": "Повідомлення видалено", + "message_removed": "повідомлення видалено", "Message_sent_by_email": "Повідомлення надіслано по електронній пошті", "Message_starring": "Повідомлення в головній ролі", "Message_too_long": "Повідомлення занадто довго", diff --git a/packages/i18n/src/locales/vi-VN.i18n.json b/packages/i18n/src/locales/vi-VN.i18n.json index 9716cd2bca68d..4ef26d99ad8fc 100644 --- a/packages/i18n/src/locales/vi-VN.i18n.json +++ b/packages/i18n/src/locales/vi-VN.i18n.json @@ -1544,9 +1544,9 @@ "Message_deleting_blocked": "Không thể xóa tin nhắn này nữa", "Message_editing": "Chỉnh sửa tin nhắn", "Message_info": "Thông tin tin", - "Message_is_removed": "Đã xoá tin nhắn", "Message_pinning": "Pinning tin nhắn", "Message_removed": "Đã xoá tin nhắn", + "message_removed": "đã xoá tin nhắn", "Message_sent_by_email": "Tin nhắn được gửi bằng Email", "Message_starring": "Thông báo có gắn dấu sao", "Message_too_long": "Tin nhắn quá dài", diff --git a/packages/i18n/src/locales/zh-HK.i18n.json b/packages/i18n/src/locales/zh-HK.i18n.json index 6804f30bb2c9b..30a5b1d4baa25 100644 --- a/packages/i18n/src/locales/zh-HK.i18n.json +++ b/packages/i18n/src/locales/zh-HK.i18n.json @@ -1474,9 +1474,9 @@ "Message_deleting_blocked": "此消息不能再被删除", "Message_editing": "消息编辑", "Message_info": "消息信息", - "Message_is_removed": "消息已删除", "Message_pinning": "消息固定", "Message_removed": "消息已删除", + "message_removed": "消息已删除", "Message_sent_by_email": "邮件发送的消息", "Message_starring": "留言主演", "Message_too_long": "信息太长", diff --git a/packages/i18n/src/locales/zh-TW.i18n.json b/packages/i18n/src/locales/zh-TW.i18n.json index 387cf254b070c..3df190e4eb01b 100644 --- a/packages/i18n/src/locales/zh-TW.i18n.json +++ b/packages/i18n/src/locales/zh-TW.i18n.json @@ -2426,9 +2426,9 @@ "Message_has_been_unpinned": "訊息已取消釘選", "Message_has_been_unstarred": "已取消標記訊息", "Message_info": "訊息資訊", - "Message_is_removed": "訊息已刪除", "Message_pinning": "訊息釘選", "Message_removed": "訊息已刪除", + "message_removed": "訊息已刪除", "Message_sent_by_email": "由電子郵件發送訊息", "Message_starring": "最愛訊息", "Message_too_long": "訊息太長", diff --git a/packages/i18n/src/locales/zh.i18n.json b/packages/i18n/src/locales/zh.i18n.json index 6ecddc058e348..0f959188e04f3 100644 --- a/packages/i18n/src/locales/zh.i18n.json +++ b/packages/i18n/src/locales/zh.i18n.json @@ -3488,10 +3488,10 @@ "Message_has_been_unpinned": "已取消固定消息", "Message_has_been_unstarred": "已取消标星消息", "Message_info": "消息信息", - "Message_is_removed": "已移除消息", "Message_list": "消息列表", "Message_pinning": "固定消息", "Message_removed": "已移除消息", + "message_removed": "已移除消息", "Message_request": "消息请求", "Message_sent": "消息已发送", "Message_sent_by_email": "邮件发送的消息", diff --git a/packages/message-types/src/registrations/common.ts b/packages/message-types/src/registrations/common.ts index 3a60277f38dc5..67b97abc54f80 100644 --- a/packages/message-types/src/registrations/common.ts +++ b/packages/message-types/src/registrations/common.ts @@ -112,7 +112,7 @@ export default (instance: MessageTypes) => { instance.registerType({ id: 'rm', system: true, - text: (t, _, options) => (options?.capitalize ? t('Message_HideType_rm') : t('Message_is_removed')), + text: (t, _, options) => (options?.capitalize ? t('Message_removed') : t('message_removed')), }); instance.registerType({ From eaeab923313625c982237c6cfe713db96740f38d Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Wed, 22 Jul 2026 13:04:11 -0300 Subject: [PATCH 12/12] test: update translation key in assertion --- apps/meteor/client/lib/normalizeThreadMessage.spec.tsx | 4 ++-- .../Threads/hooks/useNormalizedThreadTitleHtml.spec.ts | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/meteor/client/lib/normalizeThreadMessage.spec.tsx b/apps/meteor/client/lib/normalizeThreadMessage.spec.tsx index 333e9b92e084e..1dba5d344dded 100644 --- a/apps/meteor/client/lib/normalizeThreadMessage.spec.tsx +++ b/apps/meteor/client/lib/normalizeThreadMessage.spec.tsx @@ -92,7 +92,7 @@ describe('normalizeThreadMessage', () => { attachments: [], } as unknown as IMessage; - expect(normalizeThreadMessage(message, t)).toBe('Message_HideType_rm'); + expect(normalizeThreadMessage(message, t)).toBe('Message_removed'); expect(mockedFilterMarkdown).not.toHaveBeenCalled(); expect(mockedParse).not.toHaveBeenCalled(); }); @@ -100,7 +100,7 @@ describe('normalizeThreadMessage', () => { it('should render the message content when a `t: rm` message still has content', () => { const message = { t: 'rm', msg: 'Hello world', mentions: [], attachments: [] } as unknown as IMessage; - expect(normalizeThreadMessage(message, t)).not.toBe('Message_HideType_rm'); + expect(normalizeThreadMessage(message, t)).not.toBe('Message_removed'); expect(mockedParse).toHaveBeenCalledWith('Hello world', { emoticons: true }); }); }); diff --git a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.spec.ts b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.spec.ts index 0fe62e84d9c6e..2397f82024753 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.spec.ts +++ b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.spec.ts @@ -31,7 +31,7 @@ describe('useNormalizedThreadTitleHtml', () => { jest.clearAllMocks(); }); - it('should return the "Message_HideType_rm" translation for a removed message without content', () => { + it('should return the "Message_removed" translation for a removed message without content', () => { const message = { ...baseMessage, t: 'rm', @@ -44,7 +44,7 @@ describe('useNormalizedThreadTitleHtml', () => { wrapper: mockAppRoot().build(), }); - expect(result.current).toBe('Message_HideType_rm'); + expect(result.current).toBe('Message_removed'); expect(mockedFilterMarkdown).not.toHaveBeenCalled(); }); @@ -66,7 +66,7 @@ describe('useNormalizedThreadTitleHtml', () => { wrapper: mockAppRoot().build(), }); - expect(result.current).not.toBe('Message_HideType_rm'); + expect(result.current).not.toBe('Message_removed'); expect(result.current).toBe('Hello world'); }); });