RocketChat/Rocket.Chat · warning · Meteor.Error
error-autotranslate-disabled
error-autotranslate-disabled
Error message
Auto-Translate is disabled
What it means
Returned by the auto-translate API when the workspace setting AutoTranslate_Enabled is false. getSupportedLanguages backs DDP method 'autoTranslate.getSupportedLanguages' (rate-limited to 5 calls per 60s) and 'GET /api/v1/autotranslate.getSupportedLanguages'; the REST wrapper pre-checks the setting and returns a plain failure payload instead of throwing. Nothing in auto-translate works until the setting is on and a provider is configured.
Source
Thrown at apps/meteor/server/lib/autotranslate/functions/getSupportedLanguages.ts:9
import { Meteor } from 'meteor/meteor';
import { settings } from '../../../settings';
import { hasPermissionAsync } from '../../authorization/hasPermission';
import { TranslationProviderRegistry } from '../index';
export const getSupportedLanguages = async (userId: string, targetLanguage: string) => {
if (!settings.get('AutoTranslate_Enabled')) {
throw new Meteor.Error('error-autotranslate-disabled', 'Auto-Translate is disabled');
}
if (!(await hasPermissionAsync(userId, 'auto-translate'))) {
throw new Meteor.Error('error-action-not-allowed', 'Auto-Translate is not allowed', {
method: 'autoTranslate.getSupportedLanguages',
});
}
return TranslationProviderRegistry.getSupportedLanguages(targetLanguage);
};
View on GitHub (pinned to b2c16d5842)
Solutions
- Enable Auto-Translate: Administration > Message > Auto-Translate, or POST /api/v1/settings/AutoTranslate_Enabled with { value: true }
- Configure a translation provider and its API key under the same section
- Gate all translate UI/API calls on the AutoTranslate_Enabled public setting before invoking
- If it was just enabled, reload settings/reconnect so the server and clients pick up the change
Example fix
// before
const langs = await call('autoTranslate.getSupportedLanguages', 'en');
// after
if (!settingsCache.get('AutoTranslate_Enabled')) {
throw new Error('Auto-Translate is disabled');
}
const langs = await call('autoTranslate.getSupportedLanguages', 'en'); Defensive patterns
Strategy: validation
Validate before calling
// client: public settings are pushed on login
if (!settingsCollection.get('AutoTranslate_Enabled')) {
// hide translate UI; do not call autoTranslate.getSupportedLanguages
} Try / catch
try {
const langs = await call('autoTranslate.getSupportedLanguages', 'en');
} catch (e) {
if (e instanceof Meteor.Error && e.error === 'error-autotranslate-disabled') {
// disable translate UI for this session
} else {
throw e;
}
} Prevention
- Gate all auto-translate UI and API calls on the AutoTranslate_Enabled public setting
- When enabling the setting, also configure and health-check a provider
- Remember the DDP method is rate-limited (5 calls / 60s) - do not poll it
When it happens
Trigger: A client with a stale settings cache still invokes the translate UI after an admin disabled Auto-Translate; calling the endpoint on a fresh install before enabling Administration > Message > Auto-Translate; invoking the DDP method directly.
Common situations: Trial workspaces where the setting was never enabled; the feature toggled off during an incident while clients keep polling supported languages; forgetting that AutoTranslate_Enabled and the translation provider (DeepL/Google/Microsoft/LibreTranslate plus API key) are configured separately.
Related errors
AI-assisted analysis of RocketChat/Rocket.Chat@b2c16d5842 (2026-08-18).
Data as JSON: /api/errors/86215e0ca73dcb90.
Report an issue: GitHub.