{"record":{"id":"133303d9778a97a5","repo":"payloadcms/payload","slug":"localization-is-not-enabled-in-payload-config","errorCode":null,"errorMessage":"Localization is not enabled in payload config","messagePattern":"Localization is not enabled in payload config","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/db-mongodb/src/predefinedMigrations/migrateLocalizeStatus.ts","lineNumber":93,"sourceCode":" * per-locale object for a single collection or global.\n */\nexport async function localizeStatus(args: LocalizeStatusArgs): Promise<void> {\n  const { collectionSlug, globalSlug, payload, req, session } = args\n\n  if (!collectionSlug && !globalSlug) {\n    throw new Error('Either collectionSlug or globalSlug must be provided')\n  }\n\n  if (collectionSlug && globalSlug) {\n    throw new Error('Cannot provide both collectionSlug and globalSlug')\n  }\n\n  const entitySlug = collectionSlug || globalSlug\n  // MongoDB collection names are case-insensitive and stored as lowercase\n  const versionsCollection = `_${entitySlug}_versions`.toLowerCase()\n\n  if (!payload.config.localization) {\n    throw new Error('Localization is not enabled in payload config')\n  }\n\n  // Check if versions are enabled on this collection/global\n  let entityConfig\n  if (collectionSlug) {\n    const collection = payload.config.collections.find((c) => c.slug === collectionSlug)\n    if (collection) {\n      entityConfig = collection\n    }\n  } else if (globalSlug) {\n    const global = payload.config.globals.find((g) => g.slug === globalSlug)\n    if (global) {\n      entityConfig = global\n    }\n  }\n\n  if (!entityConfig) {\n    throw new Error(","sourceCodeStart":75,"sourceCodeEnd":111,"githubUrl":"https://github.com/payloadcms/payload/blob/00c58b35c0ed348ddc22daabf467b139727214fd/packages/db-mongodb/src/predefinedMigrations/migrateLocalizeStatus.ts#L75-L111","documentation":"localizeStatus converts a scalar version._status into a per-locale status object, so it requires payload.config.localization to be configured. Thrown when the migration is invoked on a config that has no localization block, since there are no locales to map status onto.","triggerScenarios":"Calling localizeStatus() for a collection/global that has drafts.localizeStatus enabled, but the top-level payload.config.localization is missing or falsy. Note the orchestrator migrateLocalizeStatus short-circuits when localization is absent, so this is mainly reachable via direct localizeStatus calls or an inconsistent config.","commonSituations":"Enabling versions.drafts.localizeStatus on an entity without enabling localization in payload.config; running the migration against a config where localization was removed after the entity flag was set.","solutions":["Add a localization block to payload.config.ts (localization: { locales: [...], defaultLocale: '...' }) before running the migration.","Remove versions.drafts.localizeStatus from the entity if you do not intend to use per-locale status.","Run via migrateLocalizeStatus() which no-ops gracefully when localization is absent.","Verify config consistency: localizeStatus requires localization at the config root."],"exampleFix":"// before\nexport default buildConfig({\n  collections: [{\n    slug: 'posts',\n    versions: { drafts: { localizeStatus: true } },\n  }],\n  // no localization block\n})\n\n// after\nexport default buildConfig({\n  localization: {\n    locales: [{ code: 'en' }, { code: 'es' }],\n    defaultLocale: 'en',\n  },\n  collections: [{\n    slug: 'posts',\n    versions: { drafts: { localizeStatus: true } },\n  }],\n})","handlingStrategy":"validation","validationCode":"function assertLocalizationEnabled(config: { localization?: unknown }) {\n  if (!config.localization) {\n    throw new Error('Enable payload.config.localization before running the localize-status migration')\n  }\n}","typeGuard":"function hasLocalization(config: unknown): config is { localization: { locales: unknown[]; defaultLocale: string } } {\n  return typeof config === 'object' && config !== null && 'localization' in config && Boolean((config as any).localization)\n}","tryCatchPattern":null,"preventionTips":["Only enable versions.drafts.localizeStatus on entities when localization is configured.","Run via migrateLocalizeStatus() which no-ops when localization is absent.","Keep localizeStatus flags and the localization block in sync."],"tags":["db-mongodb","migration","localization","config"],"backgroundTag":null,"analyzedSha":"00c58b35c0ed348ddc22daabf467b139727214fd","analyzedAt":"2026-08-12T20:45:03.758Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}