Skip to content

[GSoC'26] Vocabulary Integration in Template Engine #482

@Shubh-Raj

Description

@Shubh-Raj

Label: GSoC'26 Problem Statement Proposal

Problem Statement

The Template Engine (@accordproject/template-engine) has no integration with Concerto Vocabulary (@accordproject/concerto-vocabulary). Templates must be duplicated per language, and property labels are hardcoded — {{vin}} always renders as "vin", never as localized terms like "Vehicle Identification Number" or "Numéro d'identification du véhicule".

Related Issue: accordproject/template-engine#10

Description

The VocabularyManager API already provides locale-specific term resolution via YAML vocabulary files, but the Template Engine ignores it. This project wires them together so templates can render localized labels based on a locale generation option, enabling a single template to produce output in multiple languages with proper fallback chains (fr-CAfr → en → property name).

Expected Outcomes

  1. Extended GenerationOptions with locale and vocabularyManager parameters
  2. Term resolution integrated into TemplateMarkInterpreter rendering pipeline
  3. Locale fallback chain implementation
  4. Unit and integration tests with multi-locale fixtures (en/fr/es)
  5. API documentation and usage examples

Skills Required

  • Required: TypeScript, understanding of AST/tree traversal, Jest testing
  • Preferred: Familiarity with i18n concepts (BCP-47 locales), template engines

Possible Mentors

TBD

Expected Size

Medium (~175 hours)

Expected Difficulty

Medium — The APIs exist on both sides; the work is wiring them together and handling edge cases.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions