+
+ Dummy textual event text
+
+
+`;
diff --git a/src/shared-components/event-tiles/TextualEvent/index.ts b/src/shared-components/event-tiles/TextualEvent/index.ts
new file mode 100644
index 00000000000..96f257fbfa1
--- /dev/null
+++ b/src/shared-components/event-tiles/TextualEvent/index.ts
@@ -0,0 +1,8 @@
+/*
+Copyright 2025 New Vector Ltd.
+
+SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
+Please see LICENSE files in the repository root for full details.
+*/
+
+export { TextualEvent } from "./TextualEvent";
diff --git a/src/shared-components/i18n.tsx b/src/shared-components/i18n.tsx
new file mode 100644
index 00000000000..e23acff831b
--- /dev/null
+++ b/src/shared-components/i18n.tsx
@@ -0,0 +1,432 @@
+/*
+ * Copyright 2025 New Vector Ltd.
+ *
+ * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
+ * Please see LICENSE files in the repository root for full details.
+ */
+
+/*
+ * Translates text and optionally also replaces XML-ish elements in the text with e.g. React components
+ * @param {string} text The untranslated text, e.g "click