@contractspec/lib.content-gen 2.3.0 → 2.5.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/browser/generators/blog.js +943 -12
- package/dist/browser/generators/email.js +952 -14
- package/dist/browser/generators/index.js +1005 -46
- package/dist/browser/generators/landing-page.js +938 -15
- package/dist/browser/generators/social.js +926 -5
- package/dist/browser/i18n/catalogs/en.js +276 -0
- package/dist/browser/i18n/catalogs/es.js +276 -0
- package/dist/browser/i18n/catalogs/fr.js +276 -0
- package/dist/browser/i18n/catalogs/index.js +826 -0
- package/dist/browser/i18n/index.js +937 -0
- package/dist/browser/i18n/keys.js +85 -0
- package/dist/browser/i18n/locale.js +13 -0
- package/dist/browser/i18n/messages.js +838 -0
- package/dist/browser/index.js +1020 -50
- package/dist/browser/seo/index.js +933 -4
- package/dist/browser/seo/optimizer.js +933 -4
- package/dist/generators/blog.d.ts +1 -0
- package/dist/generators/blog.js +943 -12
- package/dist/generators/email.d.ts +1 -0
- package/dist/generators/email.js +952 -14
- package/dist/generators/index.js +1005 -46
- package/dist/generators/landing-page.d.ts +1 -0
- package/dist/generators/landing-page.js +938 -15
- package/dist/generators/social.d.ts +1 -0
- package/dist/generators/social.js +926 -5
- package/dist/i18n/catalogs/en.d.ts +8 -0
- package/dist/i18n/catalogs/en.js +277 -0
- package/dist/i18n/catalogs/es.d.ts +6 -0
- package/dist/i18n/catalogs/es.js +277 -0
- package/dist/i18n/catalogs/fr.d.ts +6 -0
- package/dist/i18n/catalogs/fr.js +277 -0
- package/dist/i18n/catalogs/index.d.ts +8 -0
- package/dist/i18n/catalogs/index.js +827 -0
- package/dist/i18n/i18n.test.d.ts +1 -0
- package/dist/i18n/index.d.ts +29 -0
- package/dist/i18n/index.js +938 -0
- package/dist/i18n/keys.d.ts +244 -0
- package/dist/i18n/keys.js +86 -0
- package/dist/i18n/locale.d.ts +8 -0
- package/dist/i18n/locale.js +14 -0
- package/dist/i18n/messages.d.ts +14 -0
- package/dist/i18n/messages.js +839 -0
- package/dist/index.js +1020 -50
- package/dist/node/generators/blog.js +943 -12
- package/dist/node/generators/email.js +952 -14
- package/dist/node/generators/index.js +1005 -46
- package/dist/node/generators/landing-page.js +938 -15
- package/dist/node/generators/social.js +926 -5
- package/dist/node/i18n/catalogs/en.js +276 -0
- package/dist/node/i18n/catalogs/es.js +276 -0
- package/dist/node/i18n/catalogs/fr.js +276 -0
- package/dist/node/i18n/catalogs/index.js +826 -0
- package/dist/node/i18n/index.js +937 -0
- package/dist/node/i18n/keys.js +85 -0
- package/dist/node/i18n/locale.js +13 -0
- package/dist/node/i18n/messages.js +838 -0
- package/dist/node/index.js +1020 -50
- package/dist/node/seo/index.js +933 -4
- package/dist/node/seo/optimizer.js +933 -4
- package/dist/seo/index.js +933 -4
- package/dist/seo/optimizer.d.ts +10 -1
- package/dist/seo/optimizer.js +933 -4
- package/dist/types.d.ts +2 -0
- package/package.json +145 -5
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/i18n/catalogs/fr.ts
|
|
3
|
+
import { defineTranslation } from "@contractspec/lib.contracts-spec/translations";
|
|
4
|
+
var frMessages = defineTranslation({
|
|
5
|
+
meta: {
|
|
6
|
+
key: "content-gen.messages",
|
|
7
|
+
version: "1.0.0",
|
|
8
|
+
domain: "content-gen",
|
|
9
|
+
description: "French translations for the content-gen package",
|
|
10
|
+
owners: ["platform"],
|
|
11
|
+
stability: "experimental"
|
|
12
|
+
},
|
|
13
|
+
locale: "fr",
|
|
14
|
+
fallback: "en",
|
|
15
|
+
messages: {
|
|
16
|
+
"prompt.blog.system": {
|
|
17
|
+
value: "Vous \xEAtes un r\xE9dacteur marketing produit. Produisez du JSON avec title, subtitle, intro, sections[].heading/body/bullets, outro.",
|
|
18
|
+
description: "Blog generator LLM system prompt"
|
|
19
|
+
},
|
|
20
|
+
"prompt.email.system": {
|
|
21
|
+
value: "R\xE9digez un e-mail marketing produit en JSON {subject, previewText, body, cta}.",
|
|
22
|
+
description: "Email generator LLM system prompt"
|
|
23
|
+
},
|
|
24
|
+
"prompt.landing.system": {
|
|
25
|
+
value: "\xC9crivez du JSON pour une page d'atterrissage avec hero/highlights/socialProof/faq.",
|
|
26
|
+
description: "Landing page generator LLM system prompt"
|
|
27
|
+
},
|
|
28
|
+
"prompt.social.system": {
|
|
29
|
+
value: "Cr\xE9ez un tableau JSON de posts sociaux pour twitter/linkedin/threads avec body, hashtags, cta.",
|
|
30
|
+
description: "Social post generator LLM system prompt"
|
|
31
|
+
},
|
|
32
|
+
"blog.intro": {
|
|
33
|
+
value: "Les \xE9quipes comme {role} font face \xE0 {problems}. {title} change la donne gr\xE2ce \xE0 {summary}.",
|
|
34
|
+
description: "Blog post intro paragraph template",
|
|
35
|
+
placeholders: [
|
|
36
|
+
{ name: "role", type: "string" },
|
|
37
|
+
{ name: "problems", type: "string" },
|
|
38
|
+
{ name: "title", type: "string" },
|
|
39
|
+
{ name: "summary", type: "string" }
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"blog.heading.whyNow": {
|
|
43
|
+
value: "Pourquoi maintenant",
|
|
44
|
+
description: "Blog section heading: why now"
|
|
45
|
+
},
|
|
46
|
+
"blog.heading.whatYouGet": {
|
|
47
|
+
value: "Ce que vous obtenez",
|
|
48
|
+
description: "Blog section heading: what you get"
|
|
49
|
+
},
|
|
50
|
+
"blog.heading.proofItWorks": {
|
|
51
|
+
value: "La preuve que \xE7a marche",
|
|
52
|
+
description: "Blog section heading: proof it works"
|
|
53
|
+
},
|
|
54
|
+
"blog.body.whatYouGet": {
|
|
55
|
+
value: "Une pile cibl\xE9e con\xE7ue pour l'automatisation conforme aux politiques.",
|
|
56
|
+
description: "Blog section body: what you get"
|
|
57
|
+
},
|
|
58
|
+
"blog.body.proofItWorks": {
|
|
59
|
+
value: "Les \xE9quipes utilisant le mod\xE8le rapportent des gains mesurables.",
|
|
60
|
+
description: "Blog section body: proof it works"
|
|
61
|
+
},
|
|
62
|
+
"blog.metric.launchWorkflows": {
|
|
63
|
+
value: "Lancez des workflows en quelques minutes",
|
|
64
|
+
description: "Default metric: launch workflows"
|
|
65
|
+
},
|
|
66
|
+
"blog.metric.cutReviewTime": {
|
|
67
|
+
value: "R\xE9duisez le temps de revue de 60\xA0%",
|
|
68
|
+
description: "Default metric: cut review time"
|
|
69
|
+
},
|
|
70
|
+
"blog.outro.default": {
|
|
71
|
+
value: "Pr\xEAt \xE0 voir en direct\xA0? Lancez un bac \xE0 sable en moins de 5 minutes.",
|
|
72
|
+
description: "Default blog outro / call to action"
|
|
73
|
+
},
|
|
74
|
+
"blog.whyNow": {
|
|
75
|
+
value: "Les \xE9quipes {audience} sont bloqu\xE9es par {pains}. {title} fournit des garde-fous sans ralentir les livraisons.",
|
|
76
|
+
description: "Blog why-now section body template",
|
|
77
|
+
placeholders: [
|
|
78
|
+
{ name: "audience", type: "string" },
|
|
79
|
+
{ name: "pains", type: "string" },
|
|
80
|
+
{ name: "title", type: "string" }
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
"blog.audience.industry": {
|
|
84
|
+
value: " dans le secteur {industry}",
|
|
85
|
+
description: "Audience industry suffix for blog why-now",
|
|
86
|
+
placeholders: [{ name: "industry", type: "string" }]
|
|
87
|
+
},
|
|
88
|
+
"email.subject.announcement.launch": {
|
|
89
|
+
value: "Lancement\xA0: {title}",
|
|
90
|
+
description: "Announcement email subject variant: launch",
|
|
91
|
+
placeholders: [{ name: "title", type: "string" }]
|
|
92
|
+
},
|
|
93
|
+
"email.subject.announcement.live": {
|
|
94
|
+
value: "{title} est en ligne",
|
|
95
|
+
description: "Announcement email subject variant: live",
|
|
96
|
+
placeholders: [{ name: "title", type: "string" }]
|
|
97
|
+
},
|
|
98
|
+
"email.subject.announcement.new": {
|
|
99
|
+
value: "Nouveau\xA0: {title}",
|
|
100
|
+
description: "Announcement email subject variant: new",
|
|
101
|
+
placeholders: [{ name: "title", type: "string" }]
|
|
102
|
+
},
|
|
103
|
+
"email.subject.onboarding.getStarted": {
|
|
104
|
+
value: "D\xE9marrez avec {title}",
|
|
105
|
+
description: "Onboarding email subject variant: get started",
|
|
106
|
+
placeholders: [{ name: "title", type: "string" }]
|
|
107
|
+
},
|
|
108
|
+
"email.subject.onboarding.guide": {
|
|
109
|
+
value: "Votre guide {title}",
|
|
110
|
+
description: "Onboarding email subject variant: guide",
|
|
111
|
+
placeholders: [{ name: "title", type: "string" }]
|
|
112
|
+
},
|
|
113
|
+
"email.subject.nurture.speeds": {
|
|
114
|
+
value: "Comment {title} acc\xE9l\xE8re les op\xE9rations",
|
|
115
|
+
description: "Nurture email subject variant: speeds ops",
|
|
116
|
+
placeholders: [{ name: "title", type: "string" }]
|
|
117
|
+
},
|
|
118
|
+
"email.subject.nurture.proof": {
|
|
119
|
+
value: "La preuve que {title} fonctionne",
|
|
120
|
+
description: "Nurture email subject variant: proof",
|
|
121
|
+
placeholders: [{ name: "title", type: "string" }]
|
|
122
|
+
},
|
|
123
|
+
"email.subject.fallback": {
|
|
124
|
+
value: "Mise \xE0 jour {title}",
|
|
125
|
+
description: "Fallback email subject line",
|
|
126
|
+
placeholders: [{ name: "title", type: "string" }]
|
|
127
|
+
},
|
|
128
|
+
"email.preview.defaultWin": {
|
|
129
|
+
value: "livrent plus vite sans lacunes de conformit\xE9",
|
|
130
|
+
description: "Default win text for email preview"
|
|
131
|
+
},
|
|
132
|
+
"email.preview.template": {
|
|
133
|
+
value: "D\xE9couvrez comment les \xE9quipes {win}.",
|
|
134
|
+
description: "Email preview text template",
|
|
135
|
+
placeholders: [{ name: "win", type: "string" }]
|
|
136
|
+
},
|
|
137
|
+
"email.body.greeting": {
|
|
138
|
+
value: "Bonjour,",
|
|
139
|
+
description: "Email body greeting"
|
|
140
|
+
},
|
|
141
|
+
"email.body.reasons": {
|
|
142
|
+
value: "Les principales raisons pour lesquelles les \xE9quipes adoptent {title}\xA0:",
|
|
143
|
+
description: "Email body reasons intro",
|
|
144
|
+
placeholders: [{ name: "title", type: "string" }]
|
|
145
|
+
},
|
|
146
|
+
"email.cta.sandbox": {
|
|
147
|
+
value: "Lancez un bac \xE0 sable",
|
|
148
|
+
description: "Default CTA: spin up a sandbox"
|
|
149
|
+
},
|
|
150
|
+
"email.cta.explore": {
|
|
151
|
+
value: "Explorez le bac \xE0 sable",
|
|
152
|
+
description: "Default CTA: explore the sandbox"
|
|
153
|
+
},
|
|
154
|
+
"email.hook.announcement": {
|
|
155
|
+
value: "{title} est en ligne. {summary}",
|
|
156
|
+
description: "Announcement variant hook",
|
|
157
|
+
placeholders: [
|
|
158
|
+
{ name: "title", type: "string" },
|
|
159
|
+
{ name: "summary", type: "string" }
|
|
160
|
+
]
|
|
161
|
+
},
|
|
162
|
+
"email.hook.onboarding": {
|
|
163
|
+
value: "Voici votre prochaine \xE9tape pour d\xE9bloquer {title}.",
|
|
164
|
+
description: "Onboarding variant hook",
|
|
165
|
+
placeholders: [{ name: "title", type: "string" }]
|
|
166
|
+
},
|
|
167
|
+
"email.hook.nurture": {
|
|
168
|
+
value: "Les op\xE9rateurs comme {role} demandent sans cesse comment automatiser les v\xE9rifications de conformit\xE9. Voici ce qui fonctionne.",
|
|
169
|
+
description: "Nurture variant hook",
|
|
170
|
+
placeholders: [{ name: "role", type: "string" }]
|
|
171
|
+
},
|
|
172
|
+
"landing.eyebrow.defaultIndustry": {
|
|
173
|
+
value: "Op\xE9rations",
|
|
174
|
+
description: "Default industry for landing page eyebrow"
|
|
175
|
+
},
|
|
176
|
+
"landing.eyebrow.template": {
|
|
177
|
+
value: "\xC9quipes {industry}",
|
|
178
|
+
description: "Landing page eyebrow template",
|
|
179
|
+
placeholders: [{ name: "industry", type: "string" }]
|
|
180
|
+
},
|
|
181
|
+
"landing.cta.primary": {
|
|
182
|
+
value: "Lancer un bac \xE0 sable",
|
|
183
|
+
description: "Landing page primary CTA"
|
|
184
|
+
},
|
|
185
|
+
"landing.cta.secondary": {
|
|
186
|
+
value: "Voir la documentation",
|
|
187
|
+
description: "Landing page secondary CTA"
|
|
188
|
+
},
|
|
189
|
+
"landing.highlight.policySafe": {
|
|
190
|
+
value: "Conforme aux politiques par d\xE9faut",
|
|
191
|
+
description: "Landing page highlight heading 1"
|
|
192
|
+
},
|
|
193
|
+
"landing.highlight.autoAdapts": {
|
|
194
|
+
value: "S'adapte automatiquement par locataire",
|
|
195
|
+
description: "Landing page highlight heading 2"
|
|
196
|
+
},
|
|
197
|
+
"landing.highlight.launchReady": {
|
|
198
|
+
value: "Pr\xEAt au lancement en quelques jours",
|
|
199
|
+
description: "Landing page highlight heading 3"
|
|
200
|
+
},
|
|
201
|
+
"landing.highlight.fallback": {
|
|
202
|
+
value: "Capacit\xE9 cl\xE9",
|
|
203
|
+
description: "Fallback highlight heading"
|
|
204
|
+
},
|
|
205
|
+
"landing.socialProof.heading": {
|
|
206
|
+
value: "\xC9quipes utilisant ContractSpec",
|
|
207
|
+
description: "Social proof section heading"
|
|
208
|
+
},
|
|
209
|
+
"landing.socialProof.defaultQuote": {
|
|
210
|
+
value: "\xAB\xA0Nous livrons des workflows conformes 5x plus vite tout en r\xE9duisant de moiti\xE9 les t\xE2ches op\xE9rationnelles.\xA0\xBB",
|
|
211
|
+
description: "Default social proof quote"
|
|
212
|
+
},
|
|
213
|
+
"landing.faq.policiesEnforced.heading": {
|
|
214
|
+
value: "Comment les politiques restent-elles appliqu\xE9es\xA0?",
|
|
215
|
+
description: "FAQ heading: policies enforced"
|
|
216
|
+
},
|
|
217
|
+
"landing.faq.policiesEnforced.body": {
|
|
218
|
+
value: "Tous les workflows sont compil\xE9s \xE0 partir de sp\xE9cifications TypeScript et passent par des v\xE9rifications PDP avant ex\xE9cution, emp\xEAchant toute logique non autoris\xE9e.",
|
|
219
|
+
description: "FAQ body: policies enforced"
|
|
220
|
+
},
|
|
221
|
+
"landing.faq.existingStack.heading": {
|
|
222
|
+
value: "Est-ce compatible avec notre pile existante\xA0?",
|
|
223
|
+
description: "FAQ heading: existing stack"
|
|
224
|
+
},
|
|
225
|
+
"landing.faq.existingStack.body": {
|
|
226
|
+
value: "Les adaptateurs se connectent \xE0 REST, GraphQL ou MCP. Les int\xE9grations restent agnostiques vis-\xE0-vis des fournisseurs.",
|
|
227
|
+
description: "FAQ body: existing stack"
|
|
228
|
+
},
|
|
229
|
+
"landing.faq.compliance.heading": {
|
|
230
|
+
value: "Qu'en est-il des exigences de conformit\xE9\xA0?",
|
|
231
|
+
description: "FAQ heading: compliance requirements"
|
|
232
|
+
},
|
|
233
|
+
"social.cta.linkedin": {
|
|
234
|
+
value: "R\xE9servez une d\xE9mo de 15 min",
|
|
235
|
+
description: "LinkedIn post default CTA"
|
|
236
|
+
},
|
|
237
|
+
"social.cta.twitter": {
|
|
238
|
+
value: "\u2192 contractspec.io/sandbox",
|
|
239
|
+
description: "Twitter post default CTA"
|
|
240
|
+
},
|
|
241
|
+
"social.body.threads": {
|
|
242
|
+
value: "Ops + conformit\xE9 peuvent avancer vite. {title} automatise les garde-fous pour que les \xE9quipes livrent quotidiennement.",
|
|
243
|
+
description: "Threads post body template",
|
|
244
|
+
placeholders: [{ name: "title", type: "string" }]
|
|
245
|
+
},
|
|
246
|
+
"social.body.twitter.connector": {
|
|
247
|
+
value: " en <60s. ",
|
|
248
|
+
description: "Twitter body connector between solutions"
|
|
249
|
+
},
|
|
250
|
+
"seo.metaTitle": {
|
|
251
|
+
value: "{title} | ContractSpec",
|
|
252
|
+
description: "SEO meta title template",
|
|
253
|
+
placeholders: [{ name: "title", type: "string" }]
|
|
254
|
+
},
|
|
255
|
+
"seo.metaDescription": {
|
|
256
|
+
value: "{summary} \u2014 con\xE7u pour {role}{industry}.",
|
|
257
|
+
description: "SEO meta description template",
|
|
258
|
+
placeholders: [
|
|
259
|
+
{ name: "summary", type: "string" },
|
|
260
|
+
{ name: "role", type: "string" },
|
|
261
|
+
{ name: "industry", type: "string" }
|
|
262
|
+
]
|
|
263
|
+
},
|
|
264
|
+
"seo.offer.default": {
|
|
265
|
+
value: "Commencez \xE0 construire avec ContractSpec",
|
|
266
|
+
description: "Default offer description for schema markup"
|
|
267
|
+
},
|
|
268
|
+
"seo.audience.industry": {
|
|
269
|
+
value: " dans le secteur {industry}",
|
|
270
|
+
description: "Audience industry suffix for SEO description",
|
|
271
|
+
placeholders: [{ name: "industry", type: "string" }]
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
export {
|
|
276
|
+
frMessages
|
|
277
|
+
};
|