@justanarthur/payload-plugin-translator 1.3.20 → 1.3.21

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.
Files changed (128) hide show
  1. package/dist/client.d.ts +6 -0
  2. package/dist/client.js +320 -0
  3. package/dist/index.d.ts +102 -11
  4. package/dist/index.js +1294 -80
  5. package/dist/jobs.d.ts +195 -0
  6. package/dist/jobs.js +824 -0
  7. package/dist/resolvers/copy.d.ts +21 -3
  8. package/dist/resolvers/copy.js +18 -12
  9. package/dist/resolvers/google.d.ts +29 -11
  10. package/dist/resolvers/google.js +58 -44
  11. package/dist/resolvers/libreTranslate.d.ts +33 -15
  12. package/dist/resolvers/libreTranslate.js +60 -45
  13. package/dist/resolvers/openAI.d.ts +39 -21
  14. package/dist/resolvers/openAI.js +110 -114
  15. package/dist/resolvers/types.d.ts +16 -16
  16. package/dist/resolvers/types.js +0 -3
  17. package/dist/{client/components/CustomButton/styles.scss → styles-jt3fm5fh.scss} +5 -5
  18. package/dist/{client/components/TranslatorModal/styles.scss → styles-vs6m7h55.scss} +76 -76
  19. package/dist/types.d.ts +70 -22
  20. package/dist/types.js +0 -3
  21. package/package.json +87 -64
  22. package/README.md +0 -215
  23. package/dist/client/api/index.d.ts +0 -8
  24. package/dist/client/api/index.d.ts.map +0 -1
  25. package/dist/client/api/index.js +0 -28
  26. package/dist/client/api/index.js.map +0 -1
  27. package/dist/client/components/CustomButton/CustomButtonWithTranslator.d.ts +0 -5
  28. package/dist/client/components/CustomButton/CustomButtonWithTranslator.d.ts.map +0 -1
  29. package/dist/client/components/CustomButton/CustomButtonWithTranslator.js +0 -28
  30. package/dist/client/components/CustomButton/CustomButtonWithTranslator.js.map +0 -1
  31. package/dist/client/components/CustomButton/index.d.ts +0 -3
  32. package/dist/client/components/CustomButton/index.d.ts.map +0 -1
  33. package/dist/client/components/CustomButton/index.js +0 -10
  34. package/dist/client/components/CustomButton/index.js.map +0 -1
  35. package/dist/client/components/LocaleLabel/LocaleLabel.d.ts +0 -5
  36. package/dist/client/components/LocaleLabel/LocaleLabel.d.ts.map +0 -1
  37. package/dist/client/components/LocaleLabel/LocaleLabel.js +0 -28
  38. package/dist/client/components/LocaleLabel/LocaleLabel.js.map +0 -1
  39. package/dist/client/components/LocaleLabel/index.d.ts +0 -2
  40. package/dist/client/components/LocaleLabel/index.d.ts.map +0 -1
  41. package/dist/client/components/LocaleLabel/index.js +0 -3
  42. package/dist/client/components/LocaleLabel/index.js.map +0 -1
  43. package/dist/client/components/ResolverButton/ResolverButton.d.ts +0 -5
  44. package/dist/client/components/ResolverButton/ResolverButton.d.ts.map +0 -1
  45. package/dist/client/components/ResolverButton/ResolverButton.js +0 -16
  46. package/dist/client/components/ResolverButton/ResolverButton.js.map +0 -1
  47. package/dist/client/components/ResolverButton/index.d.ts +0 -2
  48. package/dist/client/components/ResolverButton/index.d.ts.map +0 -1
  49. package/dist/client/components/ResolverButton/index.js +0 -3
  50. package/dist/client/components/ResolverButton/index.js.map +0 -1
  51. package/dist/client/components/TranslatorModal/Content.d.ts +0 -2
  52. package/dist/client/components/TranslatorModal/Content.d.ts.map +0 -1
  53. package/dist/client/components/TranslatorModal/Content.js +0 -60
  54. package/dist/client/components/TranslatorModal/Content.js.map +0 -1
  55. package/dist/client/components/TranslatorModal/TranslatorModal.d.ts +0 -3
  56. package/dist/client/components/TranslatorModal/TranslatorModal.d.ts.map +0 -1
  57. package/dist/client/components/TranslatorModal/TranslatorModal.js +0 -26
  58. package/dist/client/components/TranslatorModal/TranslatorModal.js.map +0 -1
  59. package/dist/client/components/TranslatorModal/index.d.ts +0 -2
  60. package/dist/client/components/TranslatorModal/index.d.ts.map +0 -1
  61. package/dist/client/components/TranslatorModal/index.js +0 -3
  62. package/dist/client/components/TranslatorModal/index.js.map +0 -1
  63. package/dist/client/providers/Translator/TranslatorProvider.d.ts +0 -5
  64. package/dist/client/providers/Translator/TranslatorProvider.d.ts.map +0 -1
  65. package/dist/client/providers/Translator/TranslatorProvider.js +0 -109
  66. package/dist/client/providers/Translator/TranslatorProvider.js.map +0 -1
  67. package/dist/client/providers/Translator/context.d.ts +0 -21
  68. package/dist/client/providers/Translator/context.d.ts.map +0 -1
  69. package/dist/client/providers/Translator/context.js +0 -9
  70. package/dist/client/providers/Translator/context.js.map +0 -1
  71. package/dist/exports/client.d.ts +0 -2
  72. package/dist/exports/client.d.ts.map +0 -1
  73. package/dist/exports/client.js +0 -3
  74. package/dist/exports/client.js.map +0 -1
  75. package/dist/i18n-translations.d.ts +0 -87
  76. package/dist/i18n-translations.d.ts.map +0 -1
  77. package/dist/i18n-translations.js +0 -88
  78. package/dist/i18n-translations.js.map +0 -1
  79. package/dist/index.d.ts.map +0 -1
  80. package/dist/index.js.map +0 -1
  81. package/dist/resolvers/copy.d.ts.map +0 -1
  82. package/dist/resolvers/copy.js.map +0 -1
  83. package/dist/resolvers/google.d.ts.map +0 -1
  84. package/dist/resolvers/google.js.map +0 -1
  85. package/dist/resolvers/libreTranslate.d.ts.map +0 -1
  86. package/dist/resolvers/libreTranslate.js.map +0 -1
  87. package/dist/resolvers/openAI.d.ts.map +0 -1
  88. package/dist/resolvers/openAI.js.map +0 -1
  89. package/dist/resolvers/types.d.ts.map +0 -1
  90. package/dist/resolvers/types.js.map +0 -1
  91. package/dist/translate/endpoint.d.ts +0 -3
  92. package/dist/translate/endpoint.d.ts.map +0 -1
  93. package/dist/translate/endpoint.js +0 -23
  94. package/dist/translate/endpoint.js.map +0 -1
  95. package/dist/translate/findEntityWithConfig.d.ts +0 -16
  96. package/dist/translate/findEntityWithConfig.d.ts.map +0 -1
  97. package/dist/translate/findEntityWithConfig.js +0 -34
  98. package/dist/translate/findEntityWithConfig.js.map +0 -1
  99. package/dist/translate/operation.d.ts +0 -9
  100. package/dist/translate/operation.d.ts.map +0 -1
  101. package/dist/translate/operation.js +0 -78
  102. package/dist/translate/operation.js.map +0 -1
  103. package/dist/translate/traverseFields.d.ts +0 -17
  104. package/dist/translate/traverseFields.d.ts.map +0 -1
  105. package/dist/translate/traverseFields.js +0 -233
  106. package/dist/translate/traverseFields.js.map +0 -1
  107. package/dist/translate/traverseRichText.d.ts +0 -10
  108. package/dist/translate/traverseRichText.d.ts.map +0 -1
  109. package/dist/translate/traverseRichText.js +0 -24
  110. package/dist/translate/traverseRichText.js.map +0 -1
  111. package/dist/translate/types.d.ts +0 -27
  112. package/dist/translate/types.d.ts.map +0 -1
  113. package/dist/translate/types.js +0 -3
  114. package/dist/translate/types.js.map +0 -1
  115. package/dist/translate/updateEntity.d.ts +0 -14
  116. package/dist/translate/updateEntity.d.ts.map +0 -1
  117. package/dist/translate/updateEntity.js +0 -26
  118. package/dist/translate/updateEntity.js.map +0 -1
  119. package/dist/types.d.ts.map +0 -1
  120. package/dist/types.js.map +0 -1
  121. package/dist/utils/chunkArray.d.ts +0 -2
  122. package/dist/utils/chunkArray.d.ts.map +0 -1
  123. package/dist/utils/chunkArray.js +0 -7
  124. package/dist/utils/chunkArray.js.map +0 -1
  125. package/dist/utils/isEmpty.d.ts +0 -2
  126. package/dist/utils/isEmpty.d.ts.map +0 -1
  127. package/dist/utils/isEmpty.js +0 -8
  128. package/dist/utils/isEmpty.js.map +0 -1
@@ -1,6 +1,11 @@
1
- import { chunkArray } from '../utils/chunkArray';
2
- const defaultPrompt = ({ localeFrom, localeTo, texts })=>{
3
- return `You are a machine translation service. Your task is to translate values in a strict JSON of key value pairs from ${localeFrom} to ${localeTo}.
1
+ // src/utils/chunkArray.ts
2
+ var chunkArray = (array, length) => {
3
+ return Array.from({ length: Math.ceil(array.length / length) }, (_, i) => array.slice(i * length, i * length + length));
4
+ };
5
+
6
+ // src/resolvers/openAI.ts
7
+ var defaultPrompt = ({ localeFrom, localeTo, texts }) => {
8
+ return `You are a machine translation service. Your task is to translate values in a strict JSON of key value pairs from ${localeFrom} to ${localeTo}.
4
9
 
5
10
  **INSTRUCTIONS:**
6
11
  1. **Translate each value**.
@@ -17,120 +22,111 @@ const defaultPrompt = ({ localeFrom, localeTo, texts })=>{
17
22
  **INPUT JSON TO TRANSLATE:**
18
23
  ${JSON.stringify(texts)}`;
19
24
  };
20
- export const openAIResolver = ({ apiKey, baseUrl, chunkLength = 100, model = 'gpt-3.5-turbo', prompt = defaultPrompt })=>{
21
- return {
22
- key: 'openai',
23
- resolve: async ({ localeFrom, localeTo, req, texts })=>{
24
- const apiUrl = `${baseUrl || 'https://api.openai.com'}/v1/chat/completions`;
25
- const localizationConfig = req.payload.config.localization;
26
- const resolveLocaleName = (code)=>{
27
- if (localizationConfig && localizationConfig.locales) {
28
- const found = localizationConfig.locales.find((l)=>(typeof l === 'string' ? l : l.code) === code);
29
- if (found && typeof found !== 'string' && found.label) {
30
- return typeof found.label === 'string' ? found.label : found.label['en'] ?? code;
31
- }
25
+ var openAIResolver = ({
26
+ apiKey,
27
+ baseUrl,
28
+ chunkLength = 100,
29
+ model = "gpt-3.5-turbo",
30
+ prompt = defaultPrompt
31
+ }) => {
32
+ return {
33
+ key: "openai",
34
+ resolve: async ({ localeFrom, localeTo, req, texts }) => {
35
+ const apiUrl = `${baseUrl || "https://api.openai.com"}/v1/chat/completions`;
36
+ try {
37
+ const response = await Promise.all(chunkArray(texts, chunkLength).map((texts2) => {
38
+ const structuredTexts = texts2.reduce((acc, curr, index) => {
39
+ acc[index + 1] = curr;
40
+ return acc;
41
+ }, {});
42
+ return fetch(apiUrl, {
43
+ body: JSON.stringify({
44
+ messages: [
45
+ {
46
+ content: prompt({ localeFrom, localeTo, texts: structuredTexts }),
47
+ role: "user"
32
48
  }
33
- return new Intl.DisplayNames([
34
- 'en'
35
- ], {
36
- type: 'language'
37
- }).of(code) ?? code;
49
+ ],
50
+ model
51
+ }),
52
+ headers: {
53
+ Authorization: `Bearer ${apiKey}`,
54
+ "Content-Type": "application/json"
55
+ },
56
+ method: "post"
57
+ }).then(async (res) => {
58
+ const data = await res.json();
59
+ if (!res.ok)
60
+ req.payload.logger.info({
61
+ message: "An error occurred when trying to translate the data using OpenAI API",
62
+ openAIresponse: data
63
+ });
64
+ return {
65
+ data,
66
+ success: res.ok
38
67
  };
39
- const localeFromName = resolveLocaleName(localeFrom);
40
- const localeToName = resolveLocaleName(localeTo);
41
- try {
42
- const response = await Promise.all(chunkArray(texts, chunkLength).map((texts)=>{
43
- const structuredTexts = texts.reduce((acc, curr, index)=>{
44
- acc[index + 1] = curr;
45
- return acc;
46
- }, {});
47
- return fetch(apiUrl, {
48
- body: JSON.stringify({
49
- messages: [
50
- {
51
- content: prompt({
52
- localeFrom: localeFromName,
53
- localeTo: localeToName,
54
- texts: structuredTexts
55
- }),
56
- role: 'user'
57
- }
58
- ],
59
- model
60
- }),
61
- headers: {
62
- Authorization: `Bearer ${apiKey}`,
63
- 'Content-Type': 'application/json'
64
- },
65
- method: 'post'
66
- }).then(async (res)=>{
67
- const data = await res.json();
68
- if (!res.ok) req.payload.logger.info({
69
- message: 'An error occurred when trying to translate the data using OpenAI API',
70
- openAIresponse: data
71
- });
72
- return {
73
- data,
74
- success: res.ok
75
- };
76
- });
77
- }));
78
- const translated = [];
79
- for (const { data, success } of response){
80
- if (!success) return {
81
- success: false
82
- };
83
- const content = data?.choices?.[0]?.message?.content;
84
- if (!content) {
85
- req.payload.logger.error('An error occurred when trying to translate the data using OpenAI API - missing content in the response');
86
- return {
87
- success: false
88
- };
89
- }
90
- const translatedStructuredTexts = JSON.parse(content);
91
- const translatedChunk = Object.values(translatedStructuredTexts);
92
- if (!Array.isArray(translatedChunk)) {
93
- req.payload.logger.error({
94
- data: translatedChunk,
95
- fullContent: content,
96
- message: 'An error occurred when trying to translate the data using OpenAI API - parsed content is not an array'
97
- });
98
- return {
99
- success: false
100
- };
101
- }
102
- for (const text of translatedChunk){
103
- if (text && typeof text !== 'string') {
104
- req.payload.logger.error({
105
- chunkData: translatedChunk,
106
- data: text,
107
- fullContent: content,
108
- message: 'An error occurred when trying to translate the data using OpenAI API - parsed content is not a string'
109
- });
110
- return {
111
- success: false
112
- };
113
- }
114
- translated.push(text);
115
- }
116
- }
117
- return {
118
- success: true,
119
- translatedTexts: translated
120
- };
121
- } catch (e) {
122
- if (e instanceof Error) {
123
- req.payload.logger.info({
124
- message: 'An error occurred when trying to translate the data using OpenAI API',
125
- originalErr: e.message
126
- });
127
- }
128
- return {
129
- success: false
130
- };
68
+ });
69
+ }));
70
+ const translated = [];
71
+ for (const { data, success } of response) {
72
+ if (!success)
73
+ return {
74
+ success: false
75
+ };
76
+ const content = data?.choices?.[0]?.message?.content;
77
+ if (!content) {
78
+ req.payload.logger.error("An error occurred when trying to translate the data using OpenAI API - missing content in the response");
79
+ return {
80
+ success: false
81
+ };
82
+ }
83
+ const translatedStructuredTexts = JSON.parse(content);
84
+ const translatedChunk = Object.values(translatedStructuredTexts);
85
+ if (!Array.isArray(translatedChunk)) {
86
+ req.payload.logger.error({
87
+ data: translatedChunk,
88
+ fullContent: content,
89
+ message: "An error occurred when trying to translate the data using OpenAI API - parsed content is not an array"
90
+ });
91
+ return {
92
+ success: false
93
+ };
94
+ }
95
+ for (const text of translatedChunk) {
96
+ if (text && typeof text !== "string") {
97
+ req.payload.logger.error({
98
+ chunkData: translatedChunk,
99
+ data: text,
100
+ fullContent: content,
101
+ message: "An error occurred when trying to translate the data using OpenAI API - parsed content is not a string"
102
+ });
103
+ return {
104
+ success: false
105
+ };
131
106
  }
107
+ translated.push(text);
108
+ }
132
109
  }
133
- };
110
+ return {
111
+ success: true,
112
+ translatedTexts: translated
113
+ };
114
+ } catch (e) {
115
+ if (e instanceof Error) {
116
+ req.payload.logger.info({
117
+ message: "An error occurred when trying to translate the data using OpenAI API",
118
+ originalErr: e.message
119
+ });
120
+ }
121
+ return { success: false };
122
+ }
123
+ }
124
+ };
134
125
  };
135
126
 
136
- //# sourceMappingURL=openAI.js.map
127
+ // src/exports/resolvers/openAI.ts
128
+ var openAI_default = openAIResolver;
129
+ export {
130
+ openAIResolver,
131
+ openAI_default as default
132
+ };
@@ -1,20 +1,20 @@
1
- import type { PayloadRequest } from 'payload';
2
- export type TranslateResolverArgs = {
3
- /** Locale to translate from */
4
- localeFrom: string;
5
- /** Locale to translate to */
6
- localeTo: string;
7
- req: PayloadRequest;
8
- texts: string[];
1
+ import { PayloadRequest } from "payload";
2
+ type TranslateResolverArgs = {
3
+ /** Locale to translate from */
4
+ localeFrom: string;
5
+ /** Locale to translate to */
6
+ localeTo: string;
7
+ req: PayloadRequest;
8
+ texts: string[];
9
9
  };
10
- export type TranslateResolverResponse = {
11
- success: false;
10
+ type TranslateResolverResponse = {
11
+ success: false;
12
12
  } | {
13
- success: true;
14
- translatedTexts: string[];
13
+ success: true;
14
+ translatedTexts: string[];
15
15
  };
16
- export type TranslateResolver = {
17
- key: string;
18
- resolve: (args: TranslateResolverArgs) => Promise<TranslateResolverResponse> | TranslateResolverResponse;
16
+ type TranslateResolver = {
17
+ key: string;
18
+ resolve: (args: TranslateResolverArgs) => Promise<TranslateResolverResponse> | TranslateResolverResponse;
19
19
  };
20
- //# sourceMappingURL=types.d.ts.map
20
+ export { TranslateResolverResponse, TranslateResolverArgs, TranslateResolver };
@@ -1,3 +0,0 @@
1
- export { };
2
-
3
- //# sourceMappingURL=types.js.map
@@ -1,5 +1,5 @@
1
- .translator__custom-save-button {
2
- display: flex;
3
- align-items: center;
4
- gap: 10px;
5
- }
1
+ .translator__custom-save-button {
2
+ display: flex;
3
+ align-items: center;
4
+ gap: 10px;
5
+ }
@@ -1,76 +1,76 @@
1
- .translator {
2
- &__modal {
3
- display: flex;
4
- position: relative;
5
- justify-content: center;
6
- align-items: center;
7
- width: fit-content;
8
- height: fit-content;
9
- }
10
-
11
- &__wrapper {
12
- display: flex;
13
- position: relative;
14
- flex-direction: column;
15
- gap: var(--base);
16
- z-index: 1;
17
- background: var(--theme-elevation-50);
18
- padding: 50px;
19
- }
20
-
21
- &__content {
22
- display: flex;
23
- flex-direction: column;
24
- align-items: center;
25
- gap: var(--base);
26
- max-width: 400px;
27
-
28
- h2 {
29
- margin: 0;
30
- text-align: center;
31
- }
32
- }
33
-
34
- &__buttons {
35
- display: flex;
36
- justify-content: center;
37
- gap: 10px;
38
- width: 100%;
39
-
40
- button {
41
- margin: 0;
42
- }
43
- }
44
-
45
- &__close {
46
- position: absolute;
47
- top: 10px;
48
- right: 10px;
49
- transition: 0.25s;
50
- cursor: pointer;
51
- width: 32px;
52
- height: 32px;
53
-
54
- &:hover {
55
- opacity: 0.6;
56
- }
57
-
58
- &:before,
59
- &:after {
60
- position: absolute;
61
- left: 15px;
62
- background-color: var(--theme-elevation-800);
63
- width: 2px;
64
- height: 33px;
65
- content: ' ';
66
- }
67
-
68
- &:before {
69
- transform: rotate(45deg);
70
- }
71
-
72
- &:after {
73
- transform: rotate(-45deg);
74
- }
75
- }
76
- }
1
+ .translator {
2
+ &__modal {
3
+ display: flex;
4
+ position: relative;
5
+ justify-content: center;
6
+ align-items: center;
7
+ width: fit-content;
8
+ height: fit-content;
9
+ }
10
+
11
+ &__wrapper {
12
+ display: flex;
13
+ position: relative;
14
+ flex-direction: column;
15
+ gap: var(--base);
16
+ z-index: 1;
17
+ background: var(--theme-elevation-50);
18
+ padding: 50px;
19
+ }
20
+
21
+ &__content {
22
+ display: flex;
23
+ flex-direction: column;
24
+ align-items: center;
25
+ gap: var(--base);
26
+ max-width: 400px;
27
+
28
+ h2 {
29
+ margin: 0;
30
+ text-align: center;
31
+ }
32
+ }
33
+
34
+ &__buttons {
35
+ display: flex;
36
+ justify-content: center;
37
+ gap: 10px;
38
+ width: 100%;
39
+
40
+ button {
41
+ margin: 0;
42
+ }
43
+ }
44
+
45
+ &__close {
46
+ position: absolute;
47
+ top: 10px;
48
+ right: 10px;
49
+ transition: 0.25s;
50
+ cursor: pointer;
51
+ width: 32px;
52
+ height: 32px;
53
+
54
+ &:hover {
55
+ opacity: 0.6;
56
+ }
57
+
58
+ &:before,
59
+ &:after {
60
+ position: absolute;
61
+ left: 15px;
62
+ background-color: var(--theme-elevation-800);
63
+ width: 2px;
64
+ height: 33px;
65
+ content: ' ';
66
+ }
67
+
68
+ &:before {
69
+ transform: rotate(45deg);
70
+ }
71
+
72
+ &:after {
73
+ transform: rotate(-45deg);
74
+ }
75
+ }
76
+ }
package/dist/types.d.ts CHANGED
@@ -1,23 +1,71 @@
1
- import type { CollectionSlug, GlobalSlug } from 'payload';
2
- import type { TranslateResolver } from './resolvers/types';
3
- import { traverseFields } from "./translate/traverseFields";
4
- export type TranslatorConfig = {
5
- /**
6
- * Collections with the enabled translator in the admin UI
7
- */
8
- collections: CollectionSlug[];
9
- /**
10
- * Disable the plugin
11
- */
12
- disabled?: boolean;
13
- /**
14
- * Globals with the enabled translator in the admin UI
15
- */
16
- globals: GlobalSlug[];
17
- /**
18
- * Add resolvers that you want to include, examples on how to write your own in ./plugin/src/resolvers
19
- */
20
- resolvers: TranslateResolver[];
21
- _options?: Parameters<typeof traverseFields>[0]['_options'];
1
+ import { CollectionSlug, GlobalSlug } from "payload";
2
+ import { PayloadRequest } from "payload";
3
+ type TranslateResolverArgs = {
4
+ /** Locale to translate from */
5
+ localeFrom: string;
6
+ /** Locale to translate to */
7
+ localeTo: string;
8
+ req: PayloadRequest;
9
+ texts: string[];
22
10
  };
23
- //# sourceMappingURL=types.d.ts.map
11
+ type TranslateResolverResponse = {
12
+ success: false;
13
+ } | {
14
+ success: true;
15
+ translatedTexts: string[];
16
+ };
17
+ type TranslateResolver = {
18
+ key: string;
19
+ resolve: (args: TranslateResolverArgs) => Promise<TranslateResolverResponse> | TranslateResolverResponse;
20
+ };
21
+ type TranslatorConfig = {
22
+ /**
23
+ * Collections with the enabled translator in the admin UI
24
+ */
25
+ collections: CollectionSlug[];
26
+ /**
27
+ * Disable the plugin
28
+ */
29
+ disabled?: boolean;
30
+ /**
31
+ * Globals with the enabled translator in the admin UI
32
+ */
33
+ globals: GlobalSlug[];
34
+ /**
35
+ * Add resolvers that you want to include, examples on how to write your own in ./plugin/src/resolvers
36
+ */
37
+ resolvers: TranslateResolver[];
38
+ /**
39
+ * Auto-translate every save in the default locale to the other
40
+ * configured locales via Payload's job queue.
41
+ *
42
+ * When `true`, the plugin:
43
+ * - registers `createTranslateTask()` and `createTranslateWorkflow()`
44
+ * in `config.jobs` (idempotent — skips if a task/workflow with
45
+ * the same slug is already registered, so host-customized
46
+ * factories survive),
47
+ * - prepends `createAutoTranslateCollectionHook` /
48
+ * `createAutoTranslateGlobalHook` to each collection/global
49
+ * listed in `collections` / `globals`.
50
+ *
51
+ * Default: `false`. Public factories stay exported for hosts that
52
+ * need per-entity control.
53
+ */
54
+ autoTranslate?: boolean;
55
+ /**
56
+ * Advanced traversal options. Mirrors the options accepted by the
57
+ * internal field walker — keep in sync if you need the latest shape.
58
+ */
59
+ _options?: {
60
+ /**
61
+ * Hook invoked while walking each rich-text node. Lets you append
62
+ * extra text segments to be translated (e.g. custom lexical nodes).
63
+ */
64
+ additionalTraverseRichText?: (args: {
65
+ onText: (siblingData: Record<string, unknown>, attribute?: string) => void;
66
+ root: Record<string, unknown>;
67
+ siblingData?: Record<string, unknown>;
68
+ }) => void;
69
+ };
70
+ };
71
+ export { TranslatorConfig };
package/dist/types.js CHANGED
@@ -1,3 +0,0 @@
1
- export { };
2
-
3
- //# sourceMappingURL=types.js.map