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

  1. Enable Auto-Translate: Administration > Message > Auto-Translate, or POST /api/v1/settings/AutoTranslate_Enabled with { value: true }
  2. Configure a translation provider and its API key under the same section
  3. Gate all translate UI/API calls on the AutoTranslate_Enabled public setting before invoking
  4. 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

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.