ciiic-translation-rules 1.0.0 → 1.1.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.
@@ -2,6 +2,25 @@
2
2
 
3
3
  Use these rules when translating content between Dutch and English for CIIIC.
4
4
 
5
+ ## Voice & Style — apply this FIRST
6
+
7
+ Translate **meaning, not words**. The output must read like a native speaker of the target language wrote it, not like a transcription of the source. Re-read what you produced and ask: "Would a native speaker actually write this sentence in this context?" If the answer is no, rewrite it.
8
+
9
+ Headings, titles, subheads, and CTAs are the most common failure mode — they are idiomatic by nature, so render their **intent**, not their syntax.
10
+
11
+ Examples:
12
+
13
+ | Source (NL) | Literal (avoid) | Idiomatic (use) |
14
+ |-------------|-----------------|-----------------|
15
+ | Wat hieronder zit | What sits underneath this | The thinking behind it / Why this matters |
16
+ | Op een rij | On a row | At a glance / Summed up |
17
+
18
+ - Dutch metaphors and figures of speech usually do not carry word-for-word to English. Replace them with the closest natural English equivalent — and the same in reverse.
19
+ - Match the register and tone of the source. Friendly informal Dutch ("je/jij") should land as friendly conversational English — not formal corporate-speak, and not stiff word-by-word renderings either.
20
+ - Respect target-language rhythm. Dutch tolerates long stacked compound noun phrases; English usually breaks them up. English prefers active verbs; Dutch tolerates more nominalisation.
21
+ - When choosing between literal accuracy and natural-sounding prose, lean toward natural-sounding prose — as long as no factual content, name, number, date, or commitment is lost or distorted.
22
+ - The terminology and spelling rules below are exact and must be followed for those specific terms. Everything else gets the native-speaker treatment.
23
+
5
24
  ## Organisation Names
6
25
 
7
26
  | Dutch | English | Notes |
@@ -48,6 +67,8 @@ Use these exact translations for funding call names:
48
67
  | Adviseur | Advisor |
49
68
  | Coördinator | Coordinator |
50
69
  | Communityplatform | Community Platform |
70
+ | Begeleidingscommissie | Advisory Committee |
71
+ | Adviesraad | Advisory Board |
51
72
 
52
73
  ## Terminology
53
74
 
@@ -56,7 +77,7 @@ These terms can be used interchangeably or have specific translations:
56
77
  | Dutch | English | Notes |
57
78
  |-------|---------|-------|
58
79
  | immersive experiences, immersieve ervaringen | immersive experiences | In Dutch, both "immersive experiences" (English) and "immersieve ervaringen" are acceptable. The abbreviation "IX" is common in both languages. |
59
- | call, regeling | call, funding call, grant scheme | The English word "call" is commonly used in Dutch. "Regeling" is the formal Dutch synonym. |
80
+ | regeling | funding scheme | Decision 2026-06-11: "regeling" is the public-facing Dutch term, "funding scheme" the English one. Reserve "call" (NL and EN) for a specific open edition of a regeling (e.g. "the current ADRIE call"); never use it for the regeling itself. |
60
81
  | subsidie, financiering | grant, funding | |
61
82
  | aanvraag, aanvragen | application, apply | |
62
83
  | bijdrage | contribution, grant | |
package/dist/index.d.mts CHANGED
@@ -49,6 +49,13 @@ declare const TRANSLATION_RULES: TranslationRules;
49
49
  * Generate the terminology rules section for LLM prompts
50
50
  */
51
51
  declare function generateTerminologyPrompt(): string;
52
+ /**
53
+ * Voice & style guidelines that apply in BOTH directions (NL→EN and EN→NL).
54
+ * Read this BEFORE applying any terminology/spelling rule — without it, an LLM
55
+ * tends to fall back to word-for-word translation that is technically correct
56
+ * but reads like a robot wrote it.
57
+ */
58
+ declare function getTranslationVoiceGuidelines(): string;
52
59
  /**
53
60
  * Get Dutch-specific translation guidelines for LLM prompts
54
61
  */
@@ -81,4 +88,4 @@ declare function shouldNeverTranslate(term: string): boolean;
81
88
  */
82
89
  declare function generateMarkdownPrompt(): string;
83
90
 
84
- export { type FundingCallMapping, type OfficialTerm, type OrganisationMapping, type SimpleTranslation, TRANSLATION_RULES, type TerminologyMapping, type TranslationRules, generateMarkdownPrompt, generateTerminologyPrompt, getDutchGuidelines, getEnglishGuidelines, getGuidelines, shouldNeverTranslate, translateFundingCall, translateOrganisation };
91
+ export { type FundingCallMapping, type OfficialTerm, type OrganisationMapping, type SimpleTranslation, TRANSLATION_RULES, type TerminologyMapping, type TranslationRules, generateMarkdownPrompt, generateTerminologyPrompt, getDutchGuidelines, getEnglishGuidelines, getGuidelines, getTranslationVoiceGuidelines, shouldNeverTranslate, translateFundingCall, translateOrganisation };
package/dist/index.d.ts CHANGED
@@ -49,6 +49,13 @@ declare const TRANSLATION_RULES: TranslationRules;
49
49
  * Generate the terminology rules section for LLM prompts
50
50
  */
51
51
  declare function generateTerminologyPrompt(): string;
52
+ /**
53
+ * Voice & style guidelines that apply in BOTH directions (NL→EN and EN→NL).
54
+ * Read this BEFORE applying any terminology/spelling rule — without it, an LLM
55
+ * tends to fall back to word-for-word translation that is technically correct
56
+ * but reads like a robot wrote it.
57
+ */
58
+ declare function getTranslationVoiceGuidelines(): string;
52
59
  /**
53
60
  * Get Dutch-specific translation guidelines for LLM prompts
54
61
  */
@@ -81,4 +88,4 @@ declare function shouldNeverTranslate(term: string): boolean;
81
88
  */
82
89
  declare function generateMarkdownPrompt(): string;
83
90
 
84
- export { type FundingCallMapping, type OfficialTerm, type OrganisationMapping, type SimpleTranslation, TRANSLATION_RULES, type TerminologyMapping, type TranslationRules, generateMarkdownPrompt, generateTerminologyPrompt, getDutchGuidelines, getEnglishGuidelines, getGuidelines, shouldNeverTranslate, translateFundingCall, translateOrganisation };
91
+ export { type FundingCallMapping, type OfficialTerm, type OrganisationMapping, type SimpleTranslation, TRANSLATION_RULES, type TerminologyMapping, type TranslationRules, generateMarkdownPrompt, generateTerminologyPrompt, getDutchGuidelines, getEnglishGuidelines, getGuidelines, getTranslationVoiceGuidelines, shouldNeverTranslate, translateFundingCall, translateOrganisation };
package/dist/index.js CHANGED
@@ -26,6 +26,7 @@ __export(index_exports, {
26
26
  getDutchGuidelines: () => getDutchGuidelines,
27
27
  getEnglishGuidelines: () => getEnglishGuidelines,
28
28
  getGuidelines: () => getGuidelines,
29
+ getTranslationVoiceGuidelines: () => getTranslationVoiceGuidelines,
29
30
  shouldNeverTranslate: () => shouldNeverTranslate,
30
31
  translateFundingCall: () => translateFundingCall,
31
32
  translateOrganisation: () => translateOrganisation
@@ -87,14 +88,17 @@ var TRANSLATION_RULES = {
87
88
  */
88
89
  terminology: [
89
90
  {
90
- dutch: ["immersive experiences", "immersieve ervaringen"],
91
+ dutch: [
92
+ "immersive experiences",
93
+ "immersieve ervaringen"
94
+ ],
91
95
  english: ["immersive experiences"],
92
96
  notes: 'In Dutch, both "immersive experiences" (English) and "immersieve ervaringen" are acceptable. The abbreviation "IX" is common in both languages.'
93
97
  },
94
98
  {
95
- dutch: ["call", "regeling"],
96
- english: ["call", "funding call", "grant scheme"],
97
- notes: 'The English word "call" is commonly used in Dutch. "Regeling" is the formal Dutch synonym.'
99
+ dutch: ["regeling"],
100
+ english: ["funding scheme"],
101
+ notes: 'Decision 2026-06-11: "regeling" is the public-facing Dutch term, "funding scheme" the English one. Reserve "call" (NL and EN) for a specific open edition of a regeling (e.g. "the current ADRIE call"); never use it for the regeling itself.'
98
102
  },
99
103
  // Grant/Funding Terminology
100
104
  {
@@ -210,11 +214,17 @@ var TRANSLATION_RULES = {
210
214
  ctaTranslations: [
211
215
  { dutch: "Lees meer", english: "Read more" },
212
216
  { dutch: "Lees verder", english: "Read more" },
213
- { dutch: "Meer informatie", english: "More information" },
217
+ {
218
+ dutch: "Meer informatie",
219
+ english: "More information"
220
+ },
214
221
  { dutch: "Schrijf je in", english: "Register" },
215
222
  { dutch: "Meld je aan", english: "Sign up" },
216
223
  { dutch: "Aanmelden", english: "Register" },
217
- { dutch: "Bekijk de agenda", english: "View the agenda" },
224
+ {
225
+ dutch: "Bekijk de agenda",
226
+ english: "View the agenda"
227
+ },
218
228
  { dutch: "Naar de website", english: "Go to website" },
219
229
  { dutch: "Download", english: "Download" },
220
230
  { dutch: "Deel dit bericht", english: "Share this" }
@@ -223,24 +233,47 @@ var TRANSLATION_RULES = {
223
233
  * CIIIC-specific role and term translations
224
234
  */
225
235
  ciiicSpecifics: [
226
- { dutch: "Programmadirecteur", english: "Programme Director" },
236
+ {
237
+ dutch: "Programmadirecteur",
238
+ english: "Programme Director"
239
+ },
227
240
  { dutch: "Projectleider", english: "Project Lead" },
228
- { dutch: "Communicatie & Marketing", english: "Communications & Marketing" },
241
+ {
242
+ dutch: "Communicatie & Marketing",
243
+ english: "Communications & Marketing"
244
+ },
229
245
  { dutch: "Adviseur", english: "Advisor" },
230
246
  { dutch: "Co\xF6rdinator", english: "Coordinator" },
231
- { dutch: "Communityplatform", english: "Community Platform" }
247
+ {
248
+ dutch: "Communityplatform",
249
+ english: "Community Platform"
250
+ },
251
+ { dutch: "Begeleidingscommissie", english: "Advisory Committee" },
252
+ { dutch: "Adviesraad", english: "Advisory Board" }
232
253
  ],
233
254
  /**
234
255
  * Newsletter-specific phrases
235
256
  */
236
257
  newsletterPhrases: [
237
- { dutch: "Bekijk deze e-mail in je browser", english: "View this email in your browser" },
258
+ {
259
+ dutch: "Bekijk deze e-mail in je browser",
260
+ english: "View this email in your browser"
261
+ },
238
262
  { dutch: "Uitschrijven", english: "Unsubscribe" },
239
- { dutch: "Voorkeuren aanpassen", english: "Update your preferences" },
263
+ {
264
+ dutch: "Voorkeuren aanpassen",
265
+ english: "Update your preferences"
266
+ },
240
267
  { dutch: "Beste lezer", english: "Dear reader" },
241
- { dutch: "Met vriendelijke groet", english: "Kind regards" },
268
+ {
269
+ dutch: "Met vriendelijke groet",
270
+ english: "Kind regards"
271
+ },
242
272
  { dutch: "Hartelijke groet", english: "Warm regards" },
243
- { dutch: "In deze nieuwsbrief", english: "In this newsletter" }
273
+ {
274
+ dutch: "In deze nieuwsbrief",
275
+ english: "In this newsletter"
276
+ }
244
277
  ]
245
278
  };
246
279
  function generateTerminologyPrompt() {
@@ -249,16 +282,22 @@ function generateTerminologyPrompt() {
249
282
  lines.push("");
250
283
  lines.push("Organisation names:");
251
284
  for (const org of TRANSLATION_RULES.organisations) {
252
- lines.push(` - "${org.dutch}" (Dutch) = "${org.english}" (English)`);
285
+ lines.push(
286
+ ` - "${org.dutch}" (Dutch) = "${org.english}" (English)`
287
+ );
253
288
  if (org.notes) {
254
289
  lines.push(` Note: ${org.notes}`);
255
290
  }
256
291
  }
257
292
  lines.push("");
258
- lines.push("Funding call translations (use these exact translations):");
293
+ lines.push(
294
+ "Funding call translations (use these exact translations):"
295
+ );
259
296
  for (const call of TRANSLATION_RULES.fundingCalls) {
260
297
  if (call.dutch === call.english) {
261
- lines.push(` - "${call.dutch}" - same in both languages`);
298
+ lines.push(
299
+ ` - "${call.dutch}" - same in both languages`
300
+ );
262
301
  } else {
263
302
  lines.push(` - Dutch: "${call.dutch}"`);
264
303
  lines.push(` English: "${call.english}"`);
@@ -270,17 +309,27 @@ function generateTerminologyPrompt() {
270
309
  lines.push("");
271
310
  lines.push("Terminology guidelines:");
272
311
  for (const term of TRANSLATION_RULES.terminology) {
273
- lines.push(` - Dutch options: ${term.dutch.map((t) => `"${t}"`).join(", ")}`);
274
- lines.push(` English options: ${term.english.map((t) => `"${t}"`).join(", ")}`);
312
+ lines.push(
313
+ ` - Dutch options: ${term.dutch.map((t) => `"${t}"`).join(", ")}`
314
+ );
315
+ lines.push(
316
+ ` English options: ${term.english.map((t) => `"${t}"`).join(", ")}`
317
+ );
275
318
  if (term.notes) {
276
319
  lines.push(` Note: ${term.notes}`);
277
320
  }
278
321
  }
279
322
  lines.push("");
280
- lines.push("Terms that should NEVER be translated (keep as-is):");
281
- lines.push(` ${TRANSLATION_RULES.neverTranslate.join(", ")}`);
323
+ lines.push(
324
+ "Terms that should NEVER be translated (keep as-is):"
325
+ );
326
+ lines.push(
327
+ ` ${TRANSLATION_RULES.neverTranslate.join(", ")}`
328
+ );
282
329
  lines.push("");
283
- lines.push("Official terms (keep in original language, use quotes if needed):");
330
+ lines.push(
331
+ "Official terms (keep in original language, use quotes if needed):"
332
+ );
284
333
  for (const term of TRANSLATION_RULES.officialTerms) {
285
334
  lines.push(` - "${term.term}" (${term.language})`);
286
335
  if (term.notes) {
@@ -290,30 +339,71 @@ function generateTerminologyPrompt() {
290
339
  lines.push("");
291
340
  lines.push("Button/CTA text translations:");
292
341
  for (const cta of TRANSLATION_RULES.ctaTranslations) {
293
- lines.push(` - "${cta.dutch}" (Dutch) = "${cta.english}" (English)`);
342
+ lines.push(
343
+ ` - "${cta.dutch}" (Dutch) = "${cta.english}" (English)`
344
+ );
294
345
  }
295
346
  lines.push("");
296
347
  lines.push("CIIIC-specific terms:");
297
348
  for (const term of TRANSLATION_RULES.ciiicSpecifics) {
298
- lines.push(` - "${term.dutch}" (Dutch) = "${term.english}" (English)`);
349
+ lines.push(
350
+ ` - "${term.dutch}" (Dutch) = "${term.english}" (English)`
351
+ );
299
352
  }
300
353
  lines.push("");
301
354
  lines.push("Newsletter-specific phrases:");
302
355
  for (const phrase of TRANSLATION_RULES.newsletterPhrases) {
303
- lines.push(` - "${phrase.dutch}" (Dutch) = "${phrase.english}" (English)`);
356
+ lines.push(
357
+ ` - "${phrase.dutch}" (Dutch) = "${phrase.english}" (English)`
358
+ );
304
359
  }
305
360
  lines.push("");
306
361
  lines.push("Personal names:");
307
362
  lines.push(" - People's names must NEVER be translated");
308
- lines.push(' - Example: "Jan de Vries" stays "Jan de Vries", NOT "John of Vries"');
363
+ lines.push(
364
+ ' - Example: "Jan de Vries" stays "Jan de Vries", NOT "John of Vries"'
365
+ );
309
366
  lines.push("");
310
367
  lines.push(
311
368
  "GENERAL PRINCIPLE: It is acceptable and often preferable to leave some terms in their original language. Proper nouns, programme names, personal names, and official terminology should generally remain unchanged or use the official translation if one exists."
312
369
  );
313
370
  return lines.join("\n");
314
371
  }
372
+ function getTranslationVoiceGuidelines() {
373
+ return `TRANSLATION VOICE & STYLE \u2014 apply this FIRST, before the rules below:
374
+
375
+ Translate **meaning, not words**. The output must read like it was written by a
376
+ native speaker of the target language, not transcribed from the source.
377
+
378
+ - Re-read what you produced and ask yourself: "Would a native speaker actually
379
+ write this sentence in this context?" If the answer is no, rewrite it.
380
+ - Headings, titles, subheads, and CTAs are the most common failure mode \u2014 they
381
+ are idiomatic by nature, so render their INTENT, not their syntax.
382
+ BAD (literal): "Wat hieronder zit" \u2192 "What sits underneath this"
383
+ GOOD (idiomatic): "Wat hieronder zit" \u2192 "The thinking behind it" /
384
+ "Why this matters" /
385
+ "What's underneath"
386
+ BAD (literal): "Op een rij" \u2192 "On a row"
387
+ GOOD (idiomatic): "Op een rij" \u2192 "At a glance" / "Summed up"
388
+ - Dutch metaphors and figures of speech usually do not carry over to English
389
+ word-for-word. Replace them with the closest natural English equivalent.
390
+ The same applies in reverse for English \u2192 Dutch.
391
+ - Match the register and tone of the source. Friendly informal Dutch ("je/jij")
392
+ should land as friendly conversational English \u2014 not formal corporate-speak,
393
+ and not stiff word-by-word renderings either.
394
+ - Respect target-language rhythm. Dutch tolerates long stacked compound noun
395
+ phrases; English usually breaks them up. English prefers active verbs;
396
+ Dutch tolerates more nominalisation. Adjust sentence structure accordingly.
397
+ - When you have to choose between literal accuracy and natural-sounding prose,
398
+ lean toward natural-sounding prose \u2014 as long as no factual content, name,
399
+ number, date, or commitment is lost or distorted.
400
+ - The terminology mappings below are exact and must be followed for those
401
+ specific terms. Everything else gets the native-speaker treatment.`;
402
+ }
315
403
  function getDutchGuidelines() {
316
404
  return `
405
+ ${getTranslationVoiceGuidelines()}
406
+
317
407
  DUTCH-SPECIFIC RULES:
318
408
  - Headlines and titles: Use sentence case only (first letter capitalised, rest lowercase)
319
409
  Example: "Deze titel is goed" NOT "Deze Titel Is Goed"
@@ -321,17 +411,20 @@ DUTCH-SPECIFIC RULES:
321
411
  - Maintain a friendly but professional tone
322
412
  - When translating "Creative Industries Fund NL" \u2192 use "Stimuleringsfonds Creatieve Industrie"
323
413
  - "Immersive experiences" can stay in English or be translated to "immersieve ervaringen"
324
- - The word "call" (funding call) can remain "call" or be translated to "regeling"
414
+ - "Funding scheme" \u2192 "regeling" (public-facing term). Use "call" only for a specific open edition of a regeling, never for the regeling itself
325
415
 
326
416
  ${generateTerminologyPrompt()}`;
327
417
  }
328
418
  function getEnglishGuidelines() {
329
419
  return `
420
+ ${getTranslationVoiceGuidelines()}
421
+
330
422
  ENGLISH-SPECIFIC RULES:
331
423
  - Use British English spellings (e.g., "colour" not "color", "organise" not "organize", "centre" not "center")
332
424
  - British vocabulary: "programme" (not "program" for non-computer contexts), "behaviour", "favour", etc.
333
425
  - Date format references should use British conventions where applicable
334
426
  - When translating "Stimuleringsfonds Creatieve Industrie" \u2192 use "Creative Industries Fund NL"
427
+ - "Regeling" \u2192 "funding scheme" (public-facing term). Use "call" only for a specific open edition of a scheme (e.g. "the current ADRIE call"), never for the scheme itself
335
428
 
336
429
  ${generateTerminologyPrompt()}`;
337
430
  }
@@ -363,25 +456,70 @@ function generateMarkdownPrompt() {
363
456
  const lines = [];
364
457
  lines.push("# CIIIC Translation Rules");
365
458
  lines.push("");
366
- lines.push("Use these rules when translating content between Dutch and English for CIIIC.");
459
+ lines.push(
460
+ "Use these rules when translating content between Dutch and English for CIIIC."
461
+ );
462
+ lines.push("");
463
+ lines.push("## Voice & Style \u2014 apply this FIRST");
464
+ lines.push("");
465
+ lines.push(
466
+ 'Translate **meaning, not words**. The output must read like a native speaker of the target language wrote it, not like a transcription of the source. Re-read what you produced and ask: "Would a native speaker actually write this sentence in this context?" If the answer is no, rewrite it.'
467
+ );
468
+ lines.push("");
469
+ lines.push(
470
+ "Headings, titles, subheads, and CTAs are the most common failure mode \u2014 they are idiomatic by nature, so render their **intent**, not their syntax."
471
+ );
472
+ lines.push("");
473
+ lines.push("Examples:");
474
+ lines.push("");
475
+ lines.push("| Source (NL) | Literal (avoid) | Idiomatic (use) |");
476
+ lines.push("|-------------|-----------------|-----------------|");
477
+ lines.push(
478
+ "| Wat hieronder zit | What sits underneath this | The thinking behind it / Why this matters |"
479
+ );
480
+ lines.push(
481
+ "| Op een rij | On a row | At a glance / Summed up |"
482
+ );
483
+ lines.push("");
484
+ lines.push(
485
+ "- Dutch metaphors and figures of speech usually do not carry word-for-word to English. Replace them with the closest natural English equivalent \u2014 and the same in reverse."
486
+ );
487
+ lines.push(
488
+ '- Match the register and tone of the source. Friendly informal Dutch ("je/jij") should land as friendly conversational English \u2014 not formal corporate-speak, and not stiff word-by-word renderings either.'
489
+ );
490
+ lines.push(
491
+ "- Respect target-language rhythm. Dutch tolerates long stacked compound noun phrases; English usually breaks them up. English prefers active verbs; Dutch tolerates more nominalisation."
492
+ );
493
+ lines.push(
494
+ "- When choosing between literal accuracy and natural-sounding prose, lean toward natural-sounding prose \u2014 as long as no factual content, name, number, date, or commitment is lost or distorted."
495
+ );
496
+ lines.push(
497
+ "- The terminology and spelling rules below are exact and must be followed for those specific terms. Everything else gets the native-speaker treatment."
498
+ );
367
499
  lines.push("");
368
500
  lines.push("## Organisation Names");
369
501
  lines.push("");
370
502
  lines.push("| Dutch | English | Notes |");
371
503
  lines.push("|-------|---------|-------|");
372
504
  for (const org of TRANSLATION_RULES.organisations) {
373
- lines.push(`| ${org.dutch} | ${org.english} | ${org.notes || ""} |`);
505
+ lines.push(
506
+ `| ${org.dutch} | ${org.english} | ${org.notes || ""} |`
507
+ );
374
508
  }
375
509
  lines.push("");
376
510
  lines.push("## Funding Call Translations");
377
511
  lines.push("");
378
- lines.push("Use these exact translations for funding call names:");
512
+ lines.push(
513
+ "Use these exact translations for funding call names:"
514
+ );
379
515
  lines.push("");
380
516
  lines.push("| Dutch | English | Notes |");
381
517
  lines.push("|-------|---------|-------|");
382
518
  for (const call of TRANSLATION_RULES.fundingCalls) {
383
519
  const note = call.dutch === call.english ? "Same in both languages" : call.notes || "";
384
- lines.push(`| ${call.dutch} | ${call.english} | ${note} |`);
520
+ lines.push(
521
+ `| ${call.dutch} | ${call.english} | ${note} |`
522
+ );
385
523
  }
386
524
  lines.push("");
387
525
  lines.push("## Button/CTA Text");
@@ -402,14 +540,18 @@ function generateMarkdownPrompt() {
402
540
  lines.push("");
403
541
  lines.push("## Terminology");
404
542
  lines.push("");
405
- lines.push("These terms can be used interchangeably or have specific translations:");
543
+ lines.push(
544
+ "These terms can be used interchangeably or have specific translations:"
545
+ );
406
546
  lines.push("");
407
547
  lines.push("| Dutch | English | Notes |");
408
548
  lines.push("|-------|---------|-------|");
409
549
  for (const term of TRANSLATION_RULES.terminology) {
410
550
  const dutchStr = term.dutch.join(", ");
411
551
  const englishStr = term.english.join(", ");
412
- lines.push(`| ${dutchStr} | ${englishStr} | ${term.notes || ""} |`);
552
+ lines.push(
553
+ `| ${dutchStr} | ${englishStr} | ${term.notes || ""} |`
554
+ );
413
555
  }
414
556
  lines.push("");
415
557
  lines.push("## Newsletter-Specific Phrases");
@@ -422,15 +564,21 @@ function generateMarkdownPrompt() {
422
564
  lines.push("");
423
565
  lines.push("## Official Terms");
424
566
  lines.push("");
425
- lines.push("Keep these in their original language (use quotes if needed):");
567
+ lines.push(
568
+ "Keep these in their original language (use quotes if needed):"
569
+ );
426
570
  lines.push("");
427
571
  for (const term of TRANSLATION_RULES.officialTerms) {
428
- lines.push(`- **${term.term}** (${term.language})${term.notes ? ` - ${term.notes}` : ""}`);
572
+ lines.push(
573
+ `- **${term.term}** (${term.language})${term.notes ? ` - ${term.notes}` : ""}`
574
+ );
429
575
  }
430
576
  lines.push("");
431
577
  lines.push("## Never Translate");
432
578
  lines.push("");
433
- lines.push("These terms should NEVER be translated - keep them exactly as-is:");
579
+ lines.push(
580
+ "These terms should NEVER be translated - keep them exactly as-is:"
581
+ );
434
582
  lines.push("");
435
583
  lines.push("```");
436
584
  lines.push(TRANSLATION_RULES.neverTranslate.join(", "));
@@ -440,19 +588,31 @@ function generateMarkdownPrompt() {
440
588
  lines.push("");
441
589
  lines.push("### Personal Names");
442
590
  lines.push("- People's names must NEVER be translated");
443
- lines.push('- Example: "Jan de Vries" stays "Jan de Vries", NOT "John of Vries"');
591
+ lines.push(
592
+ '- Example: "Jan de Vries" stays "Jan de Vries", NOT "John of Vries"'
593
+ );
444
594
  lines.push("");
445
595
  lines.push("### Dutch-Specific");
446
- lines.push("- Headlines and titles: Use sentence case only (first letter capitalised, rest lowercase)");
447
- lines.push('- Use informal Dutch: Always use "je/jij/jouw" instead of "u/uw"');
596
+ lines.push(
597
+ "- Headlines and titles: Use sentence case only (first letter capitalised, rest lowercase)"
598
+ );
599
+ lines.push(
600
+ '- Use informal Dutch: Always use "je/jij/jouw" instead of "u/uw"'
601
+ );
448
602
  lines.push("- Maintain a friendly but professional tone");
449
603
  lines.push("");
450
604
  lines.push("### English-Specific");
451
- lines.push("- Use British English spellings (colour, organise, centre)");
452
- lines.push('- British vocabulary: "programme" (not "program"), "behaviour", "favour"');
605
+ lines.push(
606
+ "- Use British English spellings (colour, organise, centre)"
607
+ );
608
+ lines.push(
609
+ '- British vocabulary: "programme" (not "program"), "behaviour", "favour"'
610
+ );
453
611
  lines.push("");
454
612
  lines.push("### General Principle");
455
- lines.push("It is acceptable and often preferable to leave some terms in their original language. Proper nouns, programme names, personal names, and official terminology should generally remain unchanged or use the official translation if one exists.");
613
+ lines.push(
614
+ "It is acceptable and often preferable to leave some terms in their original language. Proper nouns, programme names, personal names, and official terminology should generally remain unchanged or use the official translation if one exists."
615
+ );
456
616
  lines.push("");
457
617
  return lines.join("\n");
458
618
  }
@@ -464,6 +624,7 @@ function generateMarkdownPrompt() {
464
624
  getDutchGuidelines,
465
625
  getEnglishGuidelines,
466
626
  getGuidelines,
627
+ getTranslationVoiceGuidelines,
467
628
  shouldNeverTranslate,
468
629
  translateFundingCall,
469
630
  translateOrganisation
package/dist/index.mjs CHANGED
@@ -55,14 +55,17 @@ var TRANSLATION_RULES = {
55
55
  */
56
56
  terminology: [
57
57
  {
58
- dutch: ["immersive experiences", "immersieve ervaringen"],
58
+ dutch: [
59
+ "immersive experiences",
60
+ "immersieve ervaringen"
61
+ ],
59
62
  english: ["immersive experiences"],
60
63
  notes: 'In Dutch, both "immersive experiences" (English) and "immersieve ervaringen" are acceptable. The abbreviation "IX" is common in both languages.'
61
64
  },
62
65
  {
63
- dutch: ["call", "regeling"],
64
- english: ["call", "funding call", "grant scheme"],
65
- notes: 'The English word "call" is commonly used in Dutch. "Regeling" is the formal Dutch synonym.'
66
+ dutch: ["regeling"],
67
+ english: ["funding scheme"],
68
+ notes: 'Decision 2026-06-11: "regeling" is the public-facing Dutch term, "funding scheme" the English one. Reserve "call" (NL and EN) for a specific open edition of a regeling (e.g. "the current ADRIE call"); never use it for the regeling itself.'
66
69
  },
67
70
  // Grant/Funding Terminology
68
71
  {
@@ -178,11 +181,17 @@ var TRANSLATION_RULES = {
178
181
  ctaTranslations: [
179
182
  { dutch: "Lees meer", english: "Read more" },
180
183
  { dutch: "Lees verder", english: "Read more" },
181
- { dutch: "Meer informatie", english: "More information" },
184
+ {
185
+ dutch: "Meer informatie",
186
+ english: "More information"
187
+ },
182
188
  { dutch: "Schrijf je in", english: "Register" },
183
189
  { dutch: "Meld je aan", english: "Sign up" },
184
190
  { dutch: "Aanmelden", english: "Register" },
185
- { dutch: "Bekijk de agenda", english: "View the agenda" },
191
+ {
192
+ dutch: "Bekijk de agenda",
193
+ english: "View the agenda"
194
+ },
186
195
  { dutch: "Naar de website", english: "Go to website" },
187
196
  { dutch: "Download", english: "Download" },
188
197
  { dutch: "Deel dit bericht", english: "Share this" }
@@ -191,24 +200,47 @@ var TRANSLATION_RULES = {
191
200
  * CIIIC-specific role and term translations
192
201
  */
193
202
  ciiicSpecifics: [
194
- { dutch: "Programmadirecteur", english: "Programme Director" },
203
+ {
204
+ dutch: "Programmadirecteur",
205
+ english: "Programme Director"
206
+ },
195
207
  { dutch: "Projectleider", english: "Project Lead" },
196
- { dutch: "Communicatie & Marketing", english: "Communications & Marketing" },
208
+ {
209
+ dutch: "Communicatie & Marketing",
210
+ english: "Communications & Marketing"
211
+ },
197
212
  { dutch: "Adviseur", english: "Advisor" },
198
213
  { dutch: "Co\xF6rdinator", english: "Coordinator" },
199
- { dutch: "Communityplatform", english: "Community Platform" }
214
+ {
215
+ dutch: "Communityplatform",
216
+ english: "Community Platform"
217
+ },
218
+ { dutch: "Begeleidingscommissie", english: "Advisory Committee" },
219
+ { dutch: "Adviesraad", english: "Advisory Board" }
200
220
  ],
201
221
  /**
202
222
  * Newsletter-specific phrases
203
223
  */
204
224
  newsletterPhrases: [
205
- { dutch: "Bekijk deze e-mail in je browser", english: "View this email in your browser" },
225
+ {
226
+ dutch: "Bekijk deze e-mail in je browser",
227
+ english: "View this email in your browser"
228
+ },
206
229
  { dutch: "Uitschrijven", english: "Unsubscribe" },
207
- { dutch: "Voorkeuren aanpassen", english: "Update your preferences" },
230
+ {
231
+ dutch: "Voorkeuren aanpassen",
232
+ english: "Update your preferences"
233
+ },
208
234
  { dutch: "Beste lezer", english: "Dear reader" },
209
- { dutch: "Met vriendelijke groet", english: "Kind regards" },
235
+ {
236
+ dutch: "Met vriendelijke groet",
237
+ english: "Kind regards"
238
+ },
210
239
  { dutch: "Hartelijke groet", english: "Warm regards" },
211
- { dutch: "In deze nieuwsbrief", english: "In this newsletter" }
240
+ {
241
+ dutch: "In deze nieuwsbrief",
242
+ english: "In this newsletter"
243
+ }
212
244
  ]
213
245
  };
214
246
  function generateTerminologyPrompt() {
@@ -217,16 +249,22 @@ function generateTerminologyPrompt() {
217
249
  lines.push("");
218
250
  lines.push("Organisation names:");
219
251
  for (const org of TRANSLATION_RULES.organisations) {
220
- lines.push(` - "${org.dutch}" (Dutch) = "${org.english}" (English)`);
252
+ lines.push(
253
+ ` - "${org.dutch}" (Dutch) = "${org.english}" (English)`
254
+ );
221
255
  if (org.notes) {
222
256
  lines.push(` Note: ${org.notes}`);
223
257
  }
224
258
  }
225
259
  lines.push("");
226
- lines.push("Funding call translations (use these exact translations):");
260
+ lines.push(
261
+ "Funding call translations (use these exact translations):"
262
+ );
227
263
  for (const call of TRANSLATION_RULES.fundingCalls) {
228
264
  if (call.dutch === call.english) {
229
- lines.push(` - "${call.dutch}" - same in both languages`);
265
+ lines.push(
266
+ ` - "${call.dutch}" - same in both languages`
267
+ );
230
268
  } else {
231
269
  lines.push(` - Dutch: "${call.dutch}"`);
232
270
  lines.push(` English: "${call.english}"`);
@@ -238,17 +276,27 @@ function generateTerminologyPrompt() {
238
276
  lines.push("");
239
277
  lines.push("Terminology guidelines:");
240
278
  for (const term of TRANSLATION_RULES.terminology) {
241
- lines.push(` - Dutch options: ${term.dutch.map((t) => `"${t}"`).join(", ")}`);
242
- lines.push(` English options: ${term.english.map((t) => `"${t}"`).join(", ")}`);
279
+ lines.push(
280
+ ` - Dutch options: ${term.dutch.map((t) => `"${t}"`).join(", ")}`
281
+ );
282
+ lines.push(
283
+ ` English options: ${term.english.map((t) => `"${t}"`).join(", ")}`
284
+ );
243
285
  if (term.notes) {
244
286
  lines.push(` Note: ${term.notes}`);
245
287
  }
246
288
  }
247
289
  lines.push("");
248
- lines.push("Terms that should NEVER be translated (keep as-is):");
249
- lines.push(` ${TRANSLATION_RULES.neverTranslate.join(", ")}`);
290
+ lines.push(
291
+ "Terms that should NEVER be translated (keep as-is):"
292
+ );
293
+ lines.push(
294
+ ` ${TRANSLATION_RULES.neverTranslate.join(", ")}`
295
+ );
250
296
  lines.push("");
251
- lines.push("Official terms (keep in original language, use quotes if needed):");
297
+ lines.push(
298
+ "Official terms (keep in original language, use quotes if needed):"
299
+ );
252
300
  for (const term of TRANSLATION_RULES.officialTerms) {
253
301
  lines.push(` - "${term.term}" (${term.language})`);
254
302
  if (term.notes) {
@@ -258,30 +306,71 @@ function generateTerminologyPrompt() {
258
306
  lines.push("");
259
307
  lines.push("Button/CTA text translations:");
260
308
  for (const cta of TRANSLATION_RULES.ctaTranslations) {
261
- lines.push(` - "${cta.dutch}" (Dutch) = "${cta.english}" (English)`);
309
+ lines.push(
310
+ ` - "${cta.dutch}" (Dutch) = "${cta.english}" (English)`
311
+ );
262
312
  }
263
313
  lines.push("");
264
314
  lines.push("CIIIC-specific terms:");
265
315
  for (const term of TRANSLATION_RULES.ciiicSpecifics) {
266
- lines.push(` - "${term.dutch}" (Dutch) = "${term.english}" (English)`);
316
+ lines.push(
317
+ ` - "${term.dutch}" (Dutch) = "${term.english}" (English)`
318
+ );
267
319
  }
268
320
  lines.push("");
269
321
  lines.push("Newsletter-specific phrases:");
270
322
  for (const phrase of TRANSLATION_RULES.newsletterPhrases) {
271
- lines.push(` - "${phrase.dutch}" (Dutch) = "${phrase.english}" (English)`);
323
+ lines.push(
324
+ ` - "${phrase.dutch}" (Dutch) = "${phrase.english}" (English)`
325
+ );
272
326
  }
273
327
  lines.push("");
274
328
  lines.push("Personal names:");
275
329
  lines.push(" - People's names must NEVER be translated");
276
- lines.push(' - Example: "Jan de Vries" stays "Jan de Vries", NOT "John of Vries"');
330
+ lines.push(
331
+ ' - Example: "Jan de Vries" stays "Jan de Vries", NOT "John of Vries"'
332
+ );
277
333
  lines.push("");
278
334
  lines.push(
279
335
  "GENERAL PRINCIPLE: It is acceptable and often preferable to leave some terms in their original language. Proper nouns, programme names, personal names, and official terminology should generally remain unchanged or use the official translation if one exists."
280
336
  );
281
337
  return lines.join("\n");
282
338
  }
339
+ function getTranslationVoiceGuidelines() {
340
+ return `TRANSLATION VOICE & STYLE \u2014 apply this FIRST, before the rules below:
341
+
342
+ Translate **meaning, not words**. The output must read like it was written by a
343
+ native speaker of the target language, not transcribed from the source.
344
+
345
+ - Re-read what you produced and ask yourself: "Would a native speaker actually
346
+ write this sentence in this context?" If the answer is no, rewrite it.
347
+ - Headings, titles, subheads, and CTAs are the most common failure mode \u2014 they
348
+ are idiomatic by nature, so render their INTENT, not their syntax.
349
+ BAD (literal): "Wat hieronder zit" \u2192 "What sits underneath this"
350
+ GOOD (idiomatic): "Wat hieronder zit" \u2192 "The thinking behind it" /
351
+ "Why this matters" /
352
+ "What's underneath"
353
+ BAD (literal): "Op een rij" \u2192 "On a row"
354
+ GOOD (idiomatic): "Op een rij" \u2192 "At a glance" / "Summed up"
355
+ - Dutch metaphors and figures of speech usually do not carry over to English
356
+ word-for-word. Replace them with the closest natural English equivalent.
357
+ The same applies in reverse for English \u2192 Dutch.
358
+ - Match the register and tone of the source. Friendly informal Dutch ("je/jij")
359
+ should land as friendly conversational English \u2014 not formal corporate-speak,
360
+ and not stiff word-by-word renderings either.
361
+ - Respect target-language rhythm. Dutch tolerates long stacked compound noun
362
+ phrases; English usually breaks them up. English prefers active verbs;
363
+ Dutch tolerates more nominalisation. Adjust sentence structure accordingly.
364
+ - When you have to choose between literal accuracy and natural-sounding prose,
365
+ lean toward natural-sounding prose \u2014 as long as no factual content, name,
366
+ number, date, or commitment is lost or distorted.
367
+ - The terminology mappings below are exact and must be followed for those
368
+ specific terms. Everything else gets the native-speaker treatment.`;
369
+ }
283
370
  function getDutchGuidelines() {
284
371
  return `
372
+ ${getTranslationVoiceGuidelines()}
373
+
285
374
  DUTCH-SPECIFIC RULES:
286
375
  - Headlines and titles: Use sentence case only (first letter capitalised, rest lowercase)
287
376
  Example: "Deze titel is goed" NOT "Deze Titel Is Goed"
@@ -289,17 +378,20 @@ DUTCH-SPECIFIC RULES:
289
378
  - Maintain a friendly but professional tone
290
379
  - When translating "Creative Industries Fund NL" \u2192 use "Stimuleringsfonds Creatieve Industrie"
291
380
  - "Immersive experiences" can stay in English or be translated to "immersieve ervaringen"
292
- - The word "call" (funding call) can remain "call" or be translated to "regeling"
381
+ - "Funding scheme" \u2192 "regeling" (public-facing term). Use "call" only for a specific open edition of a regeling, never for the regeling itself
293
382
 
294
383
  ${generateTerminologyPrompt()}`;
295
384
  }
296
385
  function getEnglishGuidelines() {
297
386
  return `
387
+ ${getTranslationVoiceGuidelines()}
388
+
298
389
  ENGLISH-SPECIFIC RULES:
299
390
  - Use British English spellings (e.g., "colour" not "color", "organise" not "organize", "centre" not "center")
300
391
  - British vocabulary: "programme" (not "program" for non-computer contexts), "behaviour", "favour", etc.
301
392
  - Date format references should use British conventions where applicable
302
393
  - When translating "Stimuleringsfonds Creatieve Industrie" \u2192 use "Creative Industries Fund NL"
394
+ - "Regeling" \u2192 "funding scheme" (public-facing term). Use "call" only for a specific open edition of a scheme (e.g. "the current ADRIE call"), never for the scheme itself
303
395
 
304
396
  ${generateTerminologyPrompt()}`;
305
397
  }
@@ -331,25 +423,70 @@ function generateMarkdownPrompt() {
331
423
  const lines = [];
332
424
  lines.push("# CIIIC Translation Rules");
333
425
  lines.push("");
334
- lines.push("Use these rules when translating content between Dutch and English for CIIIC.");
426
+ lines.push(
427
+ "Use these rules when translating content between Dutch and English for CIIIC."
428
+ );
429
+ lines.push("");
430
+ lines.push("## Voice & Style \u2014 apply this FIRST");
431
+ lines.push("");
432
+ lines.push(
433
+ 'Translate **meaning, not words**. The output must read like a native speaker of the target language wrote it, not like a transcription of the source. Re-read what you produced and ask: "Would a native speaker actually write this sentence in this context?" If the answer is no, rewrite it.'
434
+ );
435
+ lines.push("");
436
+ lines.push(
437
+ "Headings, titles, subheads, and CTAs are the most common failure mode \u2014 they are idiomatic by nature, so render their **intent**, not their syntax."
438
+ );
439
+ lines.push("");
440
+ lines.push("Examples:");
441
+ lines.push("");
442
+ lines.push("| Source (NL) | Literal (avoid) | Idiomatic (use) |");
443
+ lines.push("|-------------|-----------------|-----------------|");
444
+ lines.push(
445
+ "| Wat hieronder zit | What sits underneath this | The thinking behind it / Why this matters |"
446
+ );
447
+ lines.push(
448
+ "| Op een rij | On a row | At a glance / Summed up |"
449
+ );
450
+ lines.push("");
451
+ lines.push(
452
+ "- Dutch metaphors and figures of speech usually do not carry word-for-word to English. Replace them with the closest natural English equivalent \u2014 and the same in reverse."
453
+ );
454
+ lines.push(
455
+ '- Match the register and tone of the source. Friendly informal Dutch ("je/jij") should land as friendly conversational English \u2014 not formal corporate-speak, and not stiff word-by-word renderings either.'
456
+ );
457
+ lines.push(
458
+ "- Respect target-language rhythm. Dutch tolerates long stacked compound noun phrases; English usually breaks them up. English prefers active verbs; Dutch tolerates more nominalisation."
459
+ );
460
+ lines.push(
461
+ "- When choosing between literal accuracy and natural-sounding prose, lean toward natural-sounding prose \u2014 as long as no factual content, name, number, date, or commitment is lost or distorted."
462
+ );
463
+ lines.push(
464
+ "- The terminology and spelling rules below are exact and must be followed for those specific terms. Everything else gets the native-speaker treatment."
465
+ );
335
466
  lines.push("");
336
467
  lines.push("## Organisation Names");
337
468
  lines.push("");
338
469
  lines.push("| Dutch | English | Notes |");
339
470
  lines.push("|-------|---------|-------|");
340
471
  for (const org of TRANSLATION_RULES.organisations) {
341
- lines.push(`| ${org.dutch} | ${org.english} | ${org.notes || ""} |`);
472
+ lines.push(
473
+ `| ${org.dutch} | ${org.english} | ${org.notes || ""} |`
474
+ );
342
475
  }
343
476
  lines.push("");
344
477
  lines.push("## Funding Call Translations");
345
478
  lines.push("");
346
- lines.push("Use these exact translations for funding call names:");
479
+ lines.push(
480
+ "Use these exact translations for funding call names:"
481
+ );
347
482
  lines.push("");
348
483
  lines.push("| Dutch | English | Notes |");
349
484
  lines.push("|-------|---------|-------|");
350
485
  for (const call of TRANSLATION_RULES.fundingCalls) {
351
486
  const note = call.dutch === call.english ? "Same in both languages" : call.notes || "";
352
- lines.push(`| ${call.dutch} | ${call.english} | ${note} |`);
487
+ lines.push(
488
+ `| ${call.dutch} | ${call.english} | ${note} |`
489
+ );
353
490
  }
354
491
  lines.push("");
355
492
  lines.push("## Button/CTA Text");
@@ -370,14 +507,18 @@ function generateMarkdownPrompt() {
370
507
  lines.push("");
371
508
  lines.push("## Terminology");
372
509
  lines.push("");
373
- lines.push("These terms can be used interchangeably or have specific translations:");
510
+ lines.push(
511
+ "These terms can be used interchangeably or have specific translations:"
512
+ );
374
513
  lines.push("");
375
514
  lines.push("| Dutch | English | Notes |");
376
515
  lines.push("|-------|---------|-------|");
377
516
  for (const term of TRANSLATION_RULES.terminology) {
378
517
  const dutchStr = term.dutch.join(", ");
379
518
  const englishStr = term.english.join(", ");
380
- lines.push(`| ${dutchStr} | ${englishStr} | ${term.notes || ""} |`);
519
+ lines.push(
520
+ `| ${dutchStr} | ${englishStr} | ${term.notes || ""} |`
521
+ );
381
522
  }
382
523
  lines.push("");
383
524
  lines.push("## Newsletter-Specific Phrases");
@@ -390,15 +531,21 @@ function generateMarkdownPrompt() {
390
531
  lines.push("");
391
532
  lines.push("## Official Terms");
392
533
  lines.push("");
393
- lines.push("Keep these in their original language (use quotes if needed):");
534
+ lines.push(
535
+ "Keep these in their original language (use quotes if needed):"
536
+ );
394
537
  lines.push("");
395
538
  for (const term of TRANSLATION_RULES.officialTerms) {
396
- lines.push(`- **${term.term}** (${term.language})${term.notes ? ` - ${term.notes}` : ""}`);
539
+ lines.push(
540
+ `- **${term.term}** (${term.language})${term.notes ? ` - ${term.notes}` : ""}`
541
+ );
397
542
  }
398
543
  lines.push("");
399
544
  lines.push("## Never Translate");
400
545
  lines.push("");
401
- lines.push("These terms should NEVER be translated - keep them exactly as-is:");
546
+ lines.push(
547
+ "These terms should NEVER be translated - keep them exactly as-is:"
548
+ );
402
549
  lines.push("");
403
550
  lines.push("```");
404
551
  lines.push(TRANSLATION_RULES.neverTranslate.join(", "));
@@ -408,19 +555,31 @@ function generateMarkdownPrompt() {
408
555
  lines.push("");
409
556
  lines.push("### Personal Names");
410
557
  lines.push("- People's names must NEVER be translated");
411
- lines.push('- Example: "Jan de Vries" stays "Jan de Vries", NOT "John of Vries"');
558
+ lines.push(
559
+ '- Example: "Jan de Vries" stays "Jan de Vries", NOT "John of Vries"'
560
+ );
412
561
  lines.push("");
413
562
  lines.push("### Dutch-Specific");
414
- lines.push("- Headlines and titles: Use sentence case only (first letter capitalised, rest lowercase)");
415
- lines.push('- Use informal Dutch: Always use "je/jij/jouw" instead of "u/uw"');
563
+ lines.push(
564
+ "- Headlines and titles: Use sentence case only (first letter capitalised, rest lowercase)"
565
+ );
566
+ lines.push(
567
+ '- Use informal Dutch: Always use "je/jij/jouw" instead of "u/uw"'
568
+ );
416
569
  lines.push("- Maintain a friendly but professional tone");
417
570
  lines.push("");
418
571
  lines.push("### English-Specific");
419
- lines.push("- Use British English spellings (colour, organise, centre)");
420
- lines.push('- British vocabulary: "programme" (not "program"), "behaviour", "favour"');
572
+ lines.push(
573
+ "- Use British English spellings (colour, organise, centre)"
574
+ );
575
+ lines.push(
576
+ '- British vocabulary: "programme" (not "program"), "behaviour", "favour"'
577
+ );
421
578
  lines.push("");
422
579
  lines.push("### General Principle");
423
- lines.push("It is acceptable and often preferable to leave some terms in their original language. Proper nouns, programme names, personal names, and official terminology should generally remain unchanged or use the official translation if one exists.");
580
+ lines.push(
581
+ "It is acceptable and often preferable to leave some terms in their original language. Proper nouns, programme names, personal names, and official terminology should generally remain unchanged or use the official translation if one exists."
582
+ );
424
583
  lines.push("");
425
584
  return lines.join("\n");
426
585
  }
@@ -431,6 +590,7 @@ export {
431
590
  getDutchGuidelines,
432
591
  getEnglishGuidelines,
433
592
  getGuidelines,
593
+ getTranslationVoiceGuidelines,
434
594
  shouldNeverTranslate,
435
595
  translateFundingCall,
436
596
  translateOrganisation
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ciiic-translation-rules",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Translation rules and terminology for CIIIC content (English/Dutch)",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",