@strapi/i18n 5.29.0 → 5.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/CMHeaderActions.js +85 -11
 - package/dist/admin/components/CMHeaderActions.js.map +1 -1
 - package/dist/admin/components/CMHeaderActions.mjs +88 -14
 - package/dist/admin/components/CMHeaderActions.mjs.map +1 -1
 - package/dist/admin/hooks/useAILocalizationJobsPolling.js +110 -0
 - package/dist/admin/hooks/useAILocalizationJobsPolling.js.map +1 -0
 - package/dist/admin/hooks/useAILocalizationJobsPolling.mjs +89 -0
 - package/dist/admin/hooks/useAILocalizationJobsPolling.mjs.map +1 -0
 - package/dist/admin/hooks/useI18n.js +4 -4
 - package/dist/admin/hooks/useI18n.js.map +1 -1
 - package/dist/admin/hooks/useI18n.mjs +4 -4
 - package/dist/admin/hooks/useI18n.mjs.map +1 -1
 - package/dist/admin/pages/SettingsPage.js +1 -1
 - package/dist/admin/pages/SettingsPage.js.map +1 -1
 - package/dist/admin/pages/SettingsPage.mjs +1 -1
 - package/dist/admin/pages/SettingsPage.mjs.map +1 -1
 - package/dist/admin/services/aiLocalizationJobs.js +26 -0
 - package/dist/admin/services/aiLocalizationJobs.js.map +1 -0
 - package/dist/admin/services/aiLocalizationJobs.mjs +24 -0
 - package/dist/admin/services/aiLocalizationJobs.mjs.map +1 -0
 - package/dist/admin/services/api.js +2 -1
 - package/dist/admin/services/api.js.map +1 -1
 - package/dist/admin/services/api.mjs +2 -1
 - package/dist/admin/services/api.mjs.map +1 -1
 - package/dist/admin/src/components/CMHeaderActions.d.ts +12 -5
 - package/dist/admin/src/hooks/useAILocalizationJobsPolling.d.ts +9 -0
 - package/dist/admin/src/services/aiLocalizationJobs.d.ts +6 -0
 - package/dist/admin/src/services/api.d.ts +1 -1
 - package/dist/admin/src/services/locales.d.ts +1 -1
 - package/dist/admin/src/services/relations.d.ts +1 -1
 - package/dist/admin/src/services/settings.d.ts +2 -2
 - package/dist/admin/translations/en.json.js +4 -1
 - package/dist/admin/translations/en.json.js.map +1 -1
 - package/dist/admin/translations/en.json.mjs +4 -1
 - package/dist/admin/translations/en.json.mjs.map +1 -1
 - package/dist/server/bootstrap.js +2 -0
 - package/dist/server/bootstrap.js.map +1 -1
 - package/dist/server/bootstrap.mjs +2 -0
 - package/dist/server/bootstrap.mjs.map +1 -1
 - package/dist/server/controllers/ai-localization-jobs.js +47 -0
 - package/dist/server/controllers/ai-localization-jobs.js.map +1 -0
 - package/dist/server/controllers/ai-localization-jobs.mjs +45 -0
 - package/dist/server/controllers/ai-localization-jobs.mjs.map +1 -0
 - package/dist/server/controllers/index.js +3 -1
 - package/dist/server/controllers/index.js.map +1 -1
 - package/dist/server/controllers/index.mjs +3 -1
 - package/dist/server/controllers/index.mjs.map +1 -1
 - package/dist/server/models/ai-localization-job.js +60 -0
 - package/dist/server/models/ai-localization-job.js.map +1 -0
 - package/dist/server/models/ai-localization-job.mjs +57 -0
 - package/dist/server/models/ai-localization-job.mjs.map +1 -0
 - package/dist/server/register.js +3 -1
 - package/dist/server/register.js.map +1 -1
 - package/dist/server/register.mjs +3 -1
 - package/dist/server/register.mjs.map +1 -1
 - package/dist/server/routes/admin.js +20 -0
 - package/dist/server/routes/admin.js.map +1 -1
 - package/dist/server/routes/admin.mjs +20 -0
 - package/dist/server/routes/admin.mjs.map +1 -1
 - package/dist/server/services/ai-localization-jobs.js +64 -0
 - package/dist/server/services/ai-localization-jobs.js.map +1 -0
 - package/dist/server/services/ai-localization-jobs.mjs +62 -0
 - package/dist/server/services/ai-localization-jobs.mjs.map +1 -0
 - package/dist/server/services/ai-localizations.js +253 -5
 - package/dist/server/services/ai-localizations.js.map +1 -1
 - package/dist/server/services/ai-localizations.mjs +253 -5
 - package/dist/server/services/ai-localizations.mjs.map +1 -1
 - package/dist/server/services/index.js +3 -1
 - package/dist/server/services/index.js.map +1 -1
 - package/dist/server/services/index.mjs +3 -1
 - package/dist/server/services/index.mjs.map +1 -1
 - package/dist/server/services/metrics.js +12 -1
 - package/dist/server/services/metrics.js.map +1 -1
 - package/dist/server/services/metrics.mjs +12 -1
 - package/dist/server/services/metrics.mjs.map +1 -1
 - package/dist/server/src/bootstrap.d.ts.map +1 -1
 - package/dist/server/src/controllers/ai-localization-jobs.d.ts +17 -0
 - package/dist/server/src/controllers/ai-localization-jobs.d.ts.map +1 -0
 - package/dist/server/src/controllers/index.d.ts +6 -0
 - package/dist/server/src/controllers/index.d.ts.map +1 -1
 - package/dist/server/src/index.d.ts +27 -2
 - package/dist/server/src/index.d.ts.map +1 -1
 - package/dist/server/src/models/ai-localization-job.d.ts +5 -0
 - package/dist/server/src/models/ai-localization-job.d.ts.map +1 -0
 - package/dist/server/src/models/index.d.ts +5 -0
 - package/dist/server/src/models/index.d.ts.map +1 -0
 - package/dist/server/src/register.d.ts +1 -1
 - package/dist/server/src/register.d.ts.map +1 -1
 - package/dist/server/src/routes/admin.d.ts.map +1 -1
 - package/dist/server/src/services/ai-localization-jobs.d.ts +26 -0
 - package/dist/server/src/services/ai-localization-jobs.d.ts.map +1 -0
 - package/dist/server/src/services/ai-localizations.d.ts +11 -1
 - package/dist/server/src/services/ai-localizations.d.ts.map +1 -1
 - package/dist/server/src/services/index.d.ts +20 -1
 - package/dist/server/src/services/index.d.ts.map +1 -1
 - package/dist/server/src/services/metrics.d.ts +1 -0
 - package/dist/server/src/services/metrics.d.ts.map +1 -1
 - package/dist/server/src/utils/index.d.ts +4 -0
 - package/dist/server/src/utils/index.d.ts.map +1 -1
 - package/dist/server/utils/index.js.map +1 -1
 - package/dist/server/utils/index.mjs.map +1 -1
 - package/dist/shared/contracts/ai-localization-jobs.d.ts +27 -0
 - package/dist/shared/contracts/ai-localization-jobs.d.ts.map +1 -0
 - package/dist/shared/contracts/shared.d.ts.map +1 -0
 - package/package.json +7 -6
 
| 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import type { Core } from '@strapi/types';
         
     | 
| 
      
 2 
     | 
    
         
            +
            import type { AILocalizationJobs } from '../../../shared/contracts/ai-localization-jobs';
         
     | 
| 
      
 3 
     | 
    
         
            +
            export declare const createAILocalizationJobsService: ({ strapi }: {
         
     | 
| 
      
 4 
     | 
    
         
            +
                strapi: Core.Strapi;
         
     | 
| 
      
 5 
     | 
    
         
            +
            }) => {
         
     | 
| 
      
 6 
     | 
    
         
            +
                /**
         
     | 
| 
      
 7 
     | 
    
         
            +
                 * Create a new AI localizations job or update an existing one for a document
         
     | 
| 
      
 8 
     | 
    
         
            +
                 * Ensures only one job exists per document
         
     | 
| 
      
 9 
     | 
    
         
            +
                 */
         
     | 
| 
      
 10 
     | 
    
         
            +
                upsertJobForDocument({ documentId, contentType, sourceLocale, targetLocales, status, }: {
         
     | 
| 
      
 11 
     | 
    
         
            +
                    documentId: string;
         
     | 
| 
      
 12 
     | 
    
         
            +
                    contentType: string;
         
     | 
| 
      
 13 
     | 
    
         
            +
                    sourceLocale: string;
         
     | 
| 
      
 14 
     | 
    
         
            +
                    targetLocales: string[];
         
     | 
| 
      
 15 
     | 
    
         
            +
                    status?: AILocalizationJobs['status'];
         
     | 
| 
      
 16 
     | 
    
         
            +
                }): Promise<any>;
         
     | 
| 
      
 17 
     | 
    
         
            +
                /**
         
     | 
| 
      
 18 
     | 
    
         
            +
                 * Get job by document ID
         
     | 
| 
      
 19 
     | 
    
         
            +
                 */
         
     | 
| 
      
 20 
     | 
    
         
            +
                getJobByDocument(contentType: string, documentId: string): Promise<any>;
         
     | 
| 
      
 21 
     | 
    
         
            +
                /**
         
     | 
| 
      
 22 
     | 
    
         
            +
                 * Get job by content type
         
     | 
| 
      
 23 
     | 
    
         
            +
                 */
         
     | 
| 
      
 24 
     | 
    
         
            +
                getJobByContentType(contentType: string): Promise<any>;
         
     | 
| 
      
 25 
     | 
    
         
            +
            };
         
     | 
| 
      
 26 
     | 
    
         
            +
            //# sourceMappingURL=ai-localization-jobs.d.ts.map
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"ai-localization-jobs.d.ts","sourceRoot":"","sources":["../../../../server/src/services/ai-localization-jobs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEzF,eAAO,MAAM,+BAA+B,eAAgB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;IACjF;;;OAGG;4FAOA;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,MAAM,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;KACvC;IAsCD;;OAEG;kCACiC,MAAM,cAAc,MAAM;IAS9D;;OAEG;qCACoC,MAAM;CAO7C,CAAC"}
         
     | 
| 
         @@ -1,8 +1,18 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import type { Core } from '@strapi/types';
         
     | 
| 
      
 1 
     | 
    
         
            +
            import type { Core, Modules, UID } from '@strapi/types';
         
     | 
| 
       2 
2 
     | 
    
         
             
            declare const createAILocalizationsService: ({ strapi }: {
         
     | 
| 
       3 
3 
     | 
    
         
             
                strapi: Core.Strapi;
         
     | 
| 
       4 
4 
     | 
    
         
             
            }) => {
         
     | 
| 
       5 
5 
     | 
    
         
             
                isEnabled(): Promise<boolean>;
         
     | 
| 
      
 6 
     | 
    
         
            +
                /**
         
     | 
| 
      
 7 
     | 
    
         
            +
                 * Checks if there are localizations that need to be generated for the given document,
         
     | 
| 
      
 8 
     | 
    
         
            +
                 * and if so, calls the AI service and saves the results to the database.
         
     | 
| 
      
 9 
     | 
    
         
            +
                 * Works for both single and collection types, on create and update.
         
     | 
| 
      
 10 
     | 
    
         
            +
                 */
         
     | 
| 
      
 11 
     | 
    
         
            +
                generateDocumentLocalizations({ model, document, }: {
         
     | 
| 
      
 12 
     | 
    
         
            +
                    model: UID.ContentType;
         
     | 
| 
      
 13 
     | 
    
         
            +
                    document: Modules.Documents.AnyDocument;
         
     | 
| 
      
 14 
     | 
    
         
            +
                }): Promise<void>;
         
     | 
| 
      
 15 
     | 
    
         
            +
                setupMiddleware(): void;
         
     | 
| 
       6 
16 
     | 
    
         
             
            };
         
     | 
| 
       7 
17 
     | 
    
         
             
            export { createAILocalizationsService };
         
     | 
| 
       8 
18 
     | 
    
         
             
            //# sourceMappingURL=ai-localizations.d.ts.map
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"ai-localizations.d.ts","sourceRoot":"","sources":["../../../../server/src/services/ai-localizations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC; 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"ai-localizations.d.ts","sourceRoot":"","sources":["../../../../server/src/services/ai-localizations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAU,GAAG,EAAE,MAAM,eAAe,CAAC;AAQhE,QAAA,MAAM,4BAA4B,eAAgB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;;IAuCrE;;;;OAIG;wDAIA;QACD,KAAK,EAAE,IAAI,WAAW,CAAC;QACvB,QAAQ,EAAE,QAAQ,SAAS,CAAC,WAAW,CAAC;KACzC;;CA0QJ,CAAC;AAEF,OAAO,EAAE,4BAA4B,EAAE,CAAC"}
         
     | 
| 
         @@ -39,6 +39,7 @@ declare const _default: { 
     | 
|
| 
       39 
39 
     | 
    
         
             
                metrics: () => {
         
     | 
| 
       40 
40 
     | 
    
         
             
                    sendDidInitializeEvent: () => Promise<void>;
         
     | 
| 
       41 
41 
     | 
    
         
             
                    sendDidUpdateI18nLocalesEvent: () => Promise<void>;
         
     | 
| 
      
 42 
     | 
    
         
            +
                    sendWithAIEventProperty: (event: string, payload?: Record<string, any>) => Promise<void>;
         
     | 
| 
       42 
43 
     | 
    
         
             
                };
         
     | 
| 
       43 
44 
     | 
    
         
             
                localizations: () => {
         
     | 
| 
       44 
45 
     | 
    
         
             
                    syncNonLocalizedAttributes: (sourceEntry: any, model: import("@strapi/types/dist/struct").ContentTypeSchema) => Promise<void>;
         
     | 
| 
         @@ -76,10 +77,28 @@ declare const _default: { 
     | 
|
| 
       76 
77 
     | 
    
         
             
                    fillNonLocalizedAttributes: (entry: any, relatedEntry: any, { model }: any) => void;
         
     | 
| 
       77 
78 
     | 
    
         
             
                    getNestedPopulateOfNonLocalizedAttributes: (modelUID: any) => string[];
         
     | 
| 
       78 
79 
     | 
    
         
             
                };
         
     | 
| 
       79 
     | 
    
         
            -
                 
     | 
| 
      
 80 
     | 
    
         
            +
                'ai-localizations': ({ strapi }: {
         
     | 
| 
       80 
81 
     | 
    
         
             
                    strapi: import("@strapi/types/dist/core").Strapi;
         
     | 
| 
       81 
82 
     | 
    
         
             
                }) => {
         
     | 
| 
       82 
83 
     | 
    
         
             
                    isEnabled(): Promise<boolean>;
         
     | 
| 
      
 84 
     | 
    
         
            +
                    generateDocumentLocalizations({ model, document, }: {
         
     | 
| 
      
 85 
     | 
    
         
            +
                        model: import("@strapi/types/dist/uid").ContentType;
         
     | 
| 
      
 86 
     | 
    
         
            +
                        document: import("@strapi/types/dist/modules/documents").AnyDocument;
         
     | 
| 
      
 87 
     | 
    
         
            +
                    }): Promise<void>;
         
     | 
| 
      
 88 
     | 
    
         
            +
                    setupMiddleware(): void;
         
     | 
| 
      
 89 
     | 
    
         
            +
                };
         
     | 
| 
      
 90 
     | 
    
         
            +
                'ai-localization-jobs': ({ strapi }: {
         
     | 
| 
      
 91 
     | 
    
         
            +
                    strapi: import("@strapi/types/dist/core").Strapi;
         
     | 
| 
      
 92 
     | 
    
         
            +
                }) => {
         
     | 
| 
      
 93 
     | 
    
         
            +
                    upsertJobForDocument({ documentId, contentType, sourceLocale, targetLocales, status, }: {
         
     | 
| 
      
 94 
     | 
    
         
            +
                        documentId: string;
         
     | 
| 
      
 95 
     | 
    
         
            +
                        contentType: string;
         
     | 
| 
      
 96 
     | 
    
         
            +
                        sourceLocale: string;
         
     | 
| 
      
 97 
     | 
    
         
            +
                        targetLocales: string[];
         
     | 
| 
      
 98 
     | 
    
         
            +
                        status?: "processing" | "completed" | "failed" | undefined;
         
     | 
| 
      
 99 
     | 
    
         
            +
                    }): Promise<any>;
         
     | 
| 
      
 100 
     | 
    
         
            +
                    getJobByDocument(contentType: string, documentId: string): Promise<any>;
         
     | 
| 
      
 101 
     | 
    
         
            +
                    getJobByContentType(contentType: string): Promise<any>;
         
     | 
| 
       83 
102 
     | 
    
         
             
                };
         
     | 
| 
       84 
103 
     | 
    
         
             
                settings: ({ strapi }: {
         
     | 
| 
       85 
104 
     | 
    
         
             
                    strapi: import("@strapi/types/dist/core").Strapi;
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":" 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,wBAWE"}
         
     | 
| 
         @@ -1,6 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            declare const metrics: () => {
         
     | 
| 
       2 
2 
     | 
    
         
             
                sendDidInitializeEvent: () => Promise<void>;
         
     | 
| 
       3 
3 
     | 
    
         
             
                sendDidUpdateI18nLocalesEvent: () => Promise<void>;
         
     | 
| 
      
 4 
     | 
    
         
            +
                sendWithAIEventProperty: (event: string, payload?: Record<string, any>) => Promise<void>;
         
     | 
| 
       4 
5 
     | 
    
         
             
            };
         
     | 
| 
       5 
6 
     | 
    
         
             
            type MetricsService = typeof metrics;
         
     | 
| 
       6 
7 
     | 
    
         
             
            export default metrics;
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../server/src/services/metrics.ts"],"names":[],"mappings":" 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../server/src/services/metrics.ts"],"names":[],"mappings":"AAmCA,QAAA,MAAM,OAAO;;;qCAZiC,MAAM,YAAW,OAAO,MAAM,EAAE,GAAG,CAAC;CAgBhF,CAAC;AAEH,KAAK,cAAc,GAAG,OAAO,OAAO,CAAC;AAErC,eAAe,OAAO,CAAC;AACvB,YAAY,EAAE,cAAc,EAAE,CAAC"}
         
     | 
| 
         @@ -6,6 +6,8 @@ import type { ISOLocalesService } from '../services/iso-locales'; 
     | 
|
| 
       6 
6 
     | 
    
         
             
            import type { LocalizationsService } from '../services/localizations';
         
     | 
| 
       7 
7 
     | 
    
         
             
            import type { SanitizeService } from '../services/sanitize';
         
     | 
| 
       8 
8 
     | 
    
         
             
            import type { SettingsService } from '../services/settings';
         
     | 
| 
      
 9 
     | 
    
         
            +
            import type { createAILocalizationsService } from '../services/ai-localizations';
         
     | 
| 
      
 10 
     | 
    
         
            +
            import type { createAILocalizationJobsService } from '../services/ai-localization-jobs';
         
     | 
| 
       9 
11 
     | 
    
         
             
            type S = {
         
     | 
| 
       10 
12 
     | 
    
         
             
                permissions: PermissionsService;
         
     | 
| 
       11 
13 
     | 
    
         
             
                metrics: MetricsService;
         
     | 
| 
         @@ -15,6 +17,8 @@ type S = { 
     | 
|
| 
       15 
17 
     | 
    
         
             
                ['iso-locales']: ISOLocalesService;
         
     | 
| 
       16 
18 
     | 
    
         
             
                ['content-types']: ContentTypesService;
         
     | 
| 
       17 
19 
     | 
    
         
             
                sanitize: SanitizeService;
         
     | 
| 
      
 20 
     | 
    
         
            +
                ['ai-localizations']: ReturnType<typeof createAILocalizationsService>;
         
     | 
| 
      
 21 
     | 
    
         
            +
                'ai-localization-jobs': ReturnType<typeof createAILocalizationJobsService>;
         
     | 
| 
       18 
22 
     | 
    
         
             
            };
         
     | 
| 
       19 
23 
     | 
    
         
             
            declare const getCoreStore: () => {
         
     | 
| 
       20 
24 
     | 
    
         
             
                get(params?: Partial<{
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC; 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AAExF,KAAK,CAAC,GAAG;IACP,WAAW,EAAE,kBAAkB,CAAC;IAChC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,aAAa,EAAE,oBAAoB,CAAC;IACpC,QAAQ,EAAE,eAAe,CAAC;IAC1B,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IACnC,CAAC,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACvC,QAAQ,EAAE,eAAe,CAAC;IAC1B,CAAC,kBAAkB,CAAC,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC;IACtE,sBAAsB,EAAE,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAAC;CAC5E,CAAC;AAEF,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;CAEjB,CAAC;AAGF,QAAA,MAAM,UAAU,4BACR,CAAC,KACN,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAE7D,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC"}
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"index.js","sources":["../../../server/src/utils/index.ts"],"sourcesContent":["import type { LocaleService } from '../services/locales';\nimport type { PermissionsService } from '../services/permissions';\nimport type { ContentTypesService } from '../services/content-types';\nimport type { MetricsService } from '../services/metrics';\nimport type { ISOLocalesService } from '../services/iso-locales';\nimport type { LocalizationsService } from '../services/localizations';\nimport type { SanitizeService } from '../services/sanitize';\nimport type { SettingsService } from '../services/settings';\n\ntype S = {\n  permissions: PermissionsService;\n  metrics: MetricsService;\n  locales: LocaleService;\n  localizations: LocalizationsService;\n  settings: SettingsService;\n  ['iso-locales']: ISOLocalesService;\n  ['content-types']: ContentTypesService;\n  sanitize: SanitizeService;\n};\n\nconst getCoreStore = () => {\n  return strapi.store({ type: 'plugin', name: 'i18n' });\n};\n\n// retrieve a local service\nconst getService = <T extends keyof S>(\n  name: T\n): S[T] extends (...args: any) => any ? ReturnType<S[T]> : S[T] => {\n  return strapi.plugin('i18n').service(name);\n};\n\nexport { getService, getCoreStore };\n"],"names":["getCoreStore","strapi","store","type","name","getService","plugin","service"],"mappings":";; 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"index.js","sources":["../../../server/src/utils/index.ts"],"sourcesContent":["import type { LocaleService } from '../services/locales';\nimport type { PermissionsService } from '../services/permissions';\nimport type { ContentTypesService } from '../services/content-types';\nimport type { MetricsService } from '../services/metrics';\nimport type { ISOLocalesService } from '../services/iso-locales';\nimport type { LocalizationsService } from '../services/localizations';\nimport type { SanitizeService } from '../services/sanitize';\nimport type { SettingsService } from '../services/settings';\nimport type { createAILocalizationsService } from '../services/ai-localizations';\nimport type { createAILocalizationJobsService } from '../services/ai-localization-jobs';\n\ntype S = {\n  permissions: PermissionsService;\n  metrics: MetricsService;\n  locales: LocaleService;\n  localizations: LocalizationsService;\n  settings: SettingsService;\n  ['iso-locales']: ISOLocalesService;\n  ['content-types']: ContentTypesService;\n  sanitize: SanitizeService;\n  ['ai-localizations']: ReturnType<typeof createAILocalizationsService>;\n  'ai-localization-jobs': ReturnType<typeof createAILocalizationJobsService>;\n};\n\nconst getCoreStore = () => {\n  return strapi.store({ type: 'plugin', name: 'i18n' });\n};\n\n// retrieve a local service\nconst getService = <T extends keyof S>(\n  name: T\n): S[T] extends (...args: any) => any ? ReturnType<S[T]> : S[T] => {\n  return strapi.plugin('i18n').service(name);\n};\n\nexport { getService, getCoreStore };\n"],"names":["getCoreStore","strapi","store","type","name","getService","plugin","service"],"mappings":";;AAwBA,MAAMA,YAAe,GAAA,IAAA;IACnB,OAAOC,MAAAA,CAAOC,KAAK,CAAC;QAAEC,IAAM,EAAA,QAAA;QAAUC,IAAM,EAAA;AAAO,KAAA,CAAA;AACrD;AAEA;AACA,MAAMC,aAAa,CACjBD,IAAAA,GAAAA;AAEA,IAAA,OAAOH,MAAOK,CAAAA,MAAM,CAAC,MAAA,CAAA,CAAQC,OAAO,CAACH,IAAAA,CAAAA;AACvC;;;;;"}
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"index.mjs","sources":["../../../server/src/utils/index.ts"],"sourcesContent":["import type { LocaleService } from '../services/locales';\nimport type { PermissionsService } from '../services/permissions';\nimport type { ContentTypesService } from '../services/content-types';\nimport type { MetricsService } from '../services/metrics';\nimport type { ISOLocalesService } from '../services/iso-locales';\nimport type { LocalizationsService } from '../services/localizations';\nimport type { SanitizeService } from '../services/sanitize';\nimport type { SettingsService } from '../services/settings';\n\ntype S = {\n  permissions: PermissionsService;\n  metrics: MetricsService;\n  locales: LocaleService;\n  localizations: LocalizationsService;\n  settings: SettingsService;\n  ['iso-locales']: ISOLocalesService;\n  ['content-types']: ContentTypesService;\n  sanitize: SanitizeService;\n};\n\nconst getCoreStore = () => {\n  return strapi.store({ type: 'plugin', name: 'i18n' });\n};\n\n// retrieve a local service\nconst getService = <T extends keyof S>(\n  name: T\n): S[T] extends (...args: any) => any ? ReturnType<S[T]> : S[T] => {\n  return strapi.plugin('i18n').service(name);\n};\n\nexport { getService, getCoreStore };\n"],"names":["getCoreStore","strapi","store","type","name","getService","plugin","service"],"mappings":" 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"index.mjs","sources":["../../../server/src/utils/index.ts"],"sourcesContent":["import type { LocaleService } from '../services/locales';\nimport type { PermissionsService } from '../services/permissions';\nimport type { ContentTypesService } from '../services/content-types';\nimport type { MetricsService } from '../services/metrics';\nimport type { ISOLocalesService } from '../services/iso-locales';\nimport type { LocalizationsService } from '../services/localizations';\nimport type { SanitizeService } from '../services/sanitize';\nimport type { SettingsService } from '../services/settings';\nimport type { createAILocalizationsService } from '../services/ai-localizations';\nimport type { createAILocalizationJobsService } from '../services/ai-localization-jobs';\n\ntype S = {\n  permissions: PermissionsService;\n  metrics: MetricsService;\n  locales: LocaleService;\n  localizations: LocalizationsService;\n  settings: SettingsService;\n  ['iso-locales']: ISOLocalesService;\n  ['content-types']: ContentTypesService;\n  sanitize: SanitizeService;\n  ['ai-localizations']: ReturnType<typeof createAILocalizationsService>;\n  'ai-localization-jobs': ReturnType<typeof createAILocalizationJobsService>;\n};\n\nconst getCoreStore = () => {\n  return strapi.store({ type: 'plugin', name: 'i18n' });\n};\n\n// retrieve a local service\nconst getService = <T extends keyof S>(\n  name: T\n): S[T] extends (...args: any) => any ? ReturnType<S[T]> : S[T] => {\n  return strapi.plugin('i18n').service(name);\n};\n\nexport { getService, getCoreStore };\n"],"names":["getCoreStore","strapi","store","type","name","getService","plugin","service"],"mappings":"AAwBA,MAAMA,YAAe,GAAA,IAAA;IACnB,OAAOC,MAAAA,CAAOC,KAAK,CAAC;QAAEC,IAAM,EAAA,QAAA;QAAUC,IAAM,EAAA;AAAO,KAAA,CAAA;AACrD;AAEA;AACA,MAAMC,aAAa,CACjBD,IAAAA,GAAAA;AAEA,IAAA,OAAOH,MAAOK,CAAAA,MAAM,CAAC,MAAA,CAAA,CAAQC,OAAO,CAACH,IAAAA,CAAAA;AACvC;;;;"}
         
     | 
| 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import { errors } from '@strapi/utils';
         
     | 
| 
      
 2 
     | 
    
         
            +
            import { Entity } from './shared';
         
     | 
| 
      
 3 
     | 
    
         
            +
            export interface AILocalizationJobs extends Entity {
         
     | 
| 
      
 4 
     | 
    
         
            +
                contentType: string;
         
     | 
| 
      
 5 
     | 
    
         
            +
                relatedDocumentId: string;
         
     | 
| 
      
 6 
     | 
    
         
            +
                sourceLocale: string;
         
     | 
| 
      
 7 
     | 
    
         
            +
                targetLocales: string[];
         
     | 
| 
      
 8 
     | 
    
         
            +
                status: 'processing' | 'completed' | 'failed';
         
     | 
| 
      
 9 
     | 
    
         
            +
            }
         
     | 
| 
      
 10 
     | 
    
         
            +
            /**
         
     | 
| 
      
 11 
     | 
    
         
            +
             * GET /i18n/ai-localization-jobs/document/:documentId - Get AI localization jobs by document ID
         
     | 
| 
      
 12 
     | 
    
         
            +
             */
         
     | 
| 
      
 13 
     | 
    
         
            +
            export declare namespace GetAILocalizationJobsByDocument {
         
     | 
| 
      
 14 
     | 
    
         
            +
                interface Request {
         
     | 
| 
      
 15 
     | 
    
         
            +
                    query: {};
         
     | 
| 
      
 16 
     | 
    
         
            +
                    body: {};
         
     | 
| 
      
 17 
     | 
    
         
            +
                }
         
     | 
| 
      
 18 
     | 
    
         
            +
                interface Params {
         
     | 
| 
      
 19 
     | 
    
         
            +
                    documentId: string;
         
     | 
| 
      
 20 
     | 
    
         
            +
                }
         
     | 
| 
      
 21 
     | 
    
         
            +
                type Response = {
         
     | 
| 
      
 22 
     | 
    
         
            +
                    data: AILocalizationJobs;
         
     | 
| 
      
 23 
     | 
    
         
            +
                } | {
         
     | 
| 
      
 24 
     | 
    
         
            +
                    data: null;
         
     | 
| 
      
 25 
     | 
    
         
            +
                    error: errors.ApplicationError;
         
     | 
| 
      
 26 
     | 
    
         
            +
                };
         
     | 
| 
      
 27 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"ai-localization-jobs.d.ts","sourceRoot":"","sources":["../../../shared/contracts/ai-localization-jobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,WAAW,kBAAmB,SAAQ,MAAM;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,+BAA+B,CAAC;IACvD,UAAiB,OAAO;QACtB,KAAK,EAAE,EAAE,CAAC;QACV,IAAI,EAAE,EAAE,CAAC;KACV;IAED,UAAiB,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB;IAED,KAAY,QAAQ,GAChB;QACE,IAAI,EAAE,kBAAkB,CAAC;KAC1B,GACD;QACE,IAAI,EAAE,IAAI,CAAC;QACX,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC;KAChC,CAAC;CACP"}
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../shared/contracts/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB"}
         
     | 
    
        package/package.json
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            {
         
     | 
| 
       2 
2 
     | 
    
         
             
              "name": "@strapi/i18n",
         
     | 
| 
       3 
     | 
    
         
            -
              "version": "5. 
     | 
| 
      
 3 
     | 
    
         
            +
              "version": "5.30.0",
         
     | 
| 
       4 
4 
     | 
    
         
             
              "description": "Create read and update content in different languages, both from the Admin Panel and from the API",
         
     | 
| 
       5 
5 
     | 
    
         
             
              "repository": {
         
     | 
| 
       6 
6 
     | 
    
         
             
                "type": "git",
         
     | 
| 
         @@ -59,7 +59,7 @@ 
     | 
|
| 
       59 
59 
     | 
    
         
             
                "@reduxjs/toolkit": "1.9.7",
         
     | 
| 
       60 
60 
     | 
    
         
             
                "@strapi/design-system": "2.0.0-rc.30",
         
     | 
| 
       61 
61 
     | 
    
         
             
                "@strapi/icons": "2.0.0-rc.30",
         
     | 
| 
       62 
     | 
    
         
            -
                "@strapi/utils": "5. 
     | 
| 
      
 62 
     | 
    
         
            +
                "@strapi/utils": "5.30.0",
         
     | 
| 
       63 
63 
     | 
    
         
             
                "lodash": "4.17.21",
         
     | 
| 
       64 
64 
     | 
    
         
             
                "qs": "6.11.1",
         
     | 
| 
       65 
65 
     | 
    
         
             
                "react-intl": "6.6.2",
         
     | 
| 
         @@ -68,10 +68,11 @@ 
     | 
|
| 
       68 
68 
     | 
    
         
             
                "zod": "3.25.67"
         
     | 
| 
       69 
69 
     | 
    
         
             
              },
         
     | 
| 
       70 
70 
     | 
    
         
             
              "devDependencies": {
         
     | 
| 
       71 
     | 
    
         
            -
                "@strapi/admin": "5. 
     | 
| 
       72 
     | 
    
         
            -
                "@strapi/admin-test-utils": "5. 
     | 
| 
       73 
     | 
    
         
            -
                "@strapi/content-manager": "5. 
     | 
| 
       74 
     | 
    
         
            -
                "@strapi/ 
     | 
| 
      
 71 
     | 
    
         
            +
                "@strapi/admin": "5.30.0",
         
     | 
| 
      
 72 
     | 
    
         
            +
                "@strapi/admin-test-utils": "5.30.0",
         
     | 
| 
      
 73 
     | 
    
         
            +
                "@strapi/content-manager": "5.30.0",
         
     | 
| 
      
 74 
     | 
    
         
            +
                "@strapi/database": "5.30.0",
         
     | 
| 
      
 75 
     | 
    
         
            +
                "@strapi/types": "5.30.0",
         
     | 
| 
       75 
76 
     | 
    
         
             
                "@testing-library/react": "15.0.7",
         
     | 
| 
       76 
77 
     | 
    
         
             
                "@testing-library/user-event": "14.5.2",
         
     | 
| 
       77 
78 
     | 
    
         
             
                "koa": "2.16.1",
         
     |