From 56662c53e98b08434e64b3194e9d1e013e98131a Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 26 Nov 2025 16:47:58 +0000 Subject: [PATCH 1/2] Add humanizeTime to the module i18n API So modules can access it simply with the right context etc --- .../element-web-module-api/element-web-module-api.api.md | 1 + packages/element-web-module-api/src/api/i18n.ts | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/packages/element-web-module-api/element-web-module-api.api.md b/packages/element-web-module-api/element-web-module-api.api.md index b31cee299d..45a41ddb97 100644 --- a/packages/element-web-module-api/element-web-module-api.api.md +++ b/packages/element-web-module-api/element-web-module-api.api.md @@ -172,6 +172,7 @@ export interface ExtrasApi { // @public export interface I18nApi { + humanizeTime(timeMillis: number): string; get language(): string; register(translations: Partial): void; translate(key: keyof Translations, variables?: Variables): string; diff --git a/packages/element-web-module-api/src/api/i18n.ts b/packages/element-web-module-api/src/api/i18n.ts index a93c247d4b..af44b698a9 100644 --- a/packages/element-web-module-api/src/api/i18n.ts +++ b/packages/element-web-module-api/src/api/i18n.ts @@ -49,4 +49,10 @@ export interface I18nApi { * @param variables - Optional variables to interpolate into the translation */ translate(key: keyof Translations, variables?: Variables): string; + + /** + * Convert a timestamp into a human-readable time string + * @param timeMillis - The time in milliseconds since epoch + */ + humanizeTime(timeMillis: number): string; } From 65edff067a6472dd79106677fa4581b5f2c0c55d Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 28 Nov 2025 15:20:51 +0000 Subject: [PATCH 2/2] Better doc --- packages/element-web-module-api/src/api/i18n.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/element-web-module-api/src/api/i18n.ts b/packages/element-web-module-api/src/api/i18n.ts index af44b698a9..1e8ac2f64a 100644 --- a/packages/element-web-module-api/src/api/i18n.ts +++ b/packages/element-web-module-api/src/api/i18n.ts @@ -51,7 +51,8 @@ export interface I18nApi { translate(key: keyof Translations, variables?: Variables): string; /** - * Convert a timestamp into a human-readable time string + * Convert a timestamp into a translated, human-readable time, + * using the current system time as a reference, eg. "5 minutes ago". * @param timeMillis - The time in milliseconds since epoch */ humanizeTime(timeMillis: number): string;