|
| 1 | +import type { AcceptedLanguages } from '@payloadcms/translations' |
1 | 2 | import type { Config, Endpoint } from 'payload' |
2 | 3 |
|
3 | 4 | import { deepMergeSimple } from 'payload/shared' |
4 | 5 |
|
| 6 | +import type { PluginDefaultTranslationsObject } from './translations/types.js' |
5 | 7 | import type { EcommercePluginConfig, SanitizedEcommercePluginConfig } from './types/index.js' |
6 | 8 |
|
7 | 9 | import { createAddressesCollection } from './collections/addresses/createAddressesCollection.js' |
@@ -316,6 +318,33 @@ export const ecommercePlugin = |
316 | 318 | incomingConfig.i18n?.translations, |
317 | 319 | ) |
318 | 320 |
|
| 321 | + /** |
| 322 | + * Merge plugin translations |
| 323 | + */ |
| 324 | + if (!incomingConfig.i18n) { |
| 325 | + incomingConfig.i18n = {} |
| 326 | + } |
| 327 | + Object.entries(translations).forEach(([locale, pluginI18nObject]) => { |
| 328 | + const typedLocale = locale as AcceptedLanguages |
| 329 | + if (!incomingConfig.i18n!.translations) { |
| 330 | + incomingConfig.i18n!.translations = {} |
| 331 | + } |
| 332 | + if (!(typedLocale in incomingConfig.i18n!.translations)) { |
| 333 | + incomingConfig.i18n!.translations[typedLocale] = {} |
| 334 | + } |
| 335 | + if (!('plugin-ecommerce' in incomingConfig.i18n!.translations[typedLocale]!)) { |
| 336 | + ;(incomingConfig.i18n!.translations[typedLocale] as PluginDefaultTranslationsObject)[ |
| 337 | + 'plugin-ecommerce' |
| 338 | + ] = {} as PluginDefaultTranslationsObject['plugin-ecommerce'] |
| 339 | + } |
| 340 | + |
| 341 | + ;(incomingConfig.i18n!.translations[typedLocale] as PluginDefaultTranslationsObject)[ |
| 342 | + 'plugin-ecommerce' |
| 343 | + ] = { |
| 344 | + ...pluginI18nObject.translations['plugin-ecommerce'], |
| 345 | + } |
| 346 | + }) |
| 347 | + |
319 | 348 | if (!incomingConfig.typescript) { |
320 | 349 | incomingConfig.typescript = {} |
321 | 350 | } |
|
0 commit comments