From f41de5789388eeb18dbffa6c078c2db1db87e26e Mon Sep 17 00:00:00 2001 From: Lotus CI Date: Sun, 18 Oct 2026 00:19:48 -0400 Subject: [PATCH] fix(translate): no "use the Lotus desktop app" advice inside the desktop app (#349) Where the on-device Translator/LanguageDetector APIs are missing, Settings said to use Chrome/Edge "or the Lotus desktop app", but the Linux and macOS apps (WebKit) lack them too, and showed the advice to people already in the app. Word it by platform. (The per-message Translate action was already hidden where unsupported.) Fixes #349 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5 --- src/app/features/settings/general/General.tsx | 3 ++- src/app/utils/translation/langUtils.test.ts | 7 +++++++ src/app/utils/translation/langUtils.ts | 10 ++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/app/features/settings/general/General.tsx b/src/app/features/settings/general/General.tsx index 4103ebfaa..b5090243a 100644 --- a/src/app/features/settings/general/General.tsx +++ b/src/app/features/settings/general/General.tsx @@ -108,6 +108,7 @@ import { TRANSLATE_TARGET_LANGUAGES, normalizeLang, isSupportedTargetLang, + translationUnavailableText, } from '../../../utils/translation/langUtils'; import { chromeTranslationEngine } from '../../../utils/translation/chromeEngine'; import { SequenceCardStyle } from '../styles.css'; @@ -2760,7 +2761,7 @@ function Messages() { description={ translationSupported ? 'Translate messages written in other languages into this one. Runs entirely on your device — message text never leaves your computer or touches a cloud service.' - : 'On-device translation isn’t available in this browser. Use a Chromium desktop browser (Chrome/Edge 138+) or the Lotus desktop app.' + : translationUnavailableText(isTauriEnv()) } after={ { assert.equal(new Set(codes).size, codes.length); assert.ok(codes.includes('en')); }); + +test('translationUnavailableText: no "use the desktop app" inside the desktop app (#349)', () => { + assert.doesNotMatch(translationUnavailableText(true), /desktop app\.$|Lotus desktop app/); + assert.match(translationUnavailableText(true), /this version of the desktop app/); + assert.match(translationUnavailableText(false), /this browser/); +}); diff --git a/src/app/utils/translation/langUtils.ts b/src/app/utils/translation/langUtils.ts index c0738e109..6b4effedb 100644 --- a/src/app/utils/translation/langUtils.ts +++ b/src/app/utils/translation/langUtils.ts @@ -85,3 +85,13 @@ export function languageName(code: string, uiLocale = 'en'): string { export function isSupportedTargetLang(code: string): boolean { return CURATED_NAME.has(normalizeLang(code)); } + +/** + * [Gitea #349] Why translation is unavailable, by platform. The desktop app + * on Linux/macOS (WebKit) lacks the on-device APIs too, so it must not send + * people to "the Lotus desktop app" they're already using. + */ +export const translationUnavailableText = (desktopApp: boolean): string => + desktopApp + ? 'On-device translation isn’t available in this version of the desktop app. It works in Chrome or Edge 138+ on a computer.' + : 'On-device translation isn’t available in this browser. Use Chrome or Edge 138+ on a computer.'; -- 2.47.3