Skip to main content

Create Glossary

Step-by-step guide to creating custom glossaries in Scriptix.

What You'll Need

Before creating a glossary:

  • CSV term pairs (source → target language)
  • Source and target languages selected
  • Glossary name and optional description

Creating a Glossary

Step 1: Access Glossaries

  1. Navigate to Glossaries page
  2. Click "Create Glossary" button (Plus icon)
  3. Create Glossary modal opens

Step 2: Configure Glossary Details

Glossary Name (Required):

  • Enter descriptive name
  • Example: "Medical Cardiology Terms", "Company Product Names"
  • Maximum 100 characters
  • Validation: Required field

Description (Optional):

  • Add notes about glossary purpose
  • Helps identify when to use glossary
  • Text input field
  • Multiline supported

Step 3: Select Languages

Source Language (Required):

  • Select language of your audio/video
  • Dropdown list of supported source languages
  • Shows: Language Name (code)
  • Example: English (en), Dutch (nl), French (fr)
  • Validation: Required field

Target Language (Required):

  • Select target translation language
  • Available options depend on source language selected
  • Dynamically filtered based on source
  • Must select source first
  • Placeholder shows "Select source language first" until source selected
  • Validation: Required field

Language Pair Services:

  • Uses DeepL or Google translation services
  • Service automatically selected based on availability
  • DeepL prioritized if available for language pair
  • Target languages shown from selected service only

Step 4: Upload Term Pairs

Two Methods Available:

Method 1: Upload CSV File

  1. Click "Upload CSV File" button
  2. File picker opens (accepts .csv only)
  3. Select your CSV file
  4. File validates and parses automatically
  5. Success message shows: "CSV file uploaded successfully"
  6. Filename displays below button
  7. Click "Clear" to remove file and try again

Method 2: Enter CSV Manually

  1. Click in text area labeled "Or enter CSV manually"
  2. Paste or type CSV content directly
  3. Format: source_term,target_term per line
  4. No file upload needed

CSV Format Requirements:

source_term,target_term
PostgreSQL,PostgreSQL
myocardial infarction,hartinfarct
API,API

CSV Validation:

  • Must have exactly 2 columns per row
  • Empty rows automatically filtered
  • At least one term pair required
  • Extra whitespace trimmed automatically
  • Special characters handled by parser

CSV Processing:

  • Uses PapaParse library for parsing
  • Skips empty lines automatically
  • Validates column count
  • Filters invalid rows
  • Converts to clean CSV format

Error Messages:

  • "Please upload a valid CSV file" - Wrong file type
  • "Error reading file" - Parse error
  • "CSV must contain at least one term pair" - Empty file
  • "All rows must have exactly two columns" - Format error

Step 5: Create Glossary

  1. Review all entered information:
    • Name filled
    • Source language selected
    • Target language selected
    • CSV entries provided
  2. Click "Create" button
  3. Glossary created and added to list
  4. Success toast: "Glossary created successfully"
  5. Modal closes automatically
  6. Form resets

Create Button:

  • Disabled if loading
  • Disabled if languages still loading
  • Type: submit
  • Variant: primary
  • Label: "Create"

CSV File Examples

Medical Terms (English → Dutch)

myocardial infarction,hartinfarct
hypertension,hypertensie
diabetes mellitus,diabetes mellitus
coronary artery disease,coronaire hartziekte

Product Names (English → English)

PostgreSQL,PostgreSQL
Scriptix,Scriptix
iPhone,iPhone
macOS,macOS

Technical Terms (English → French)

database,base de données
server,serveur
API,API
cloud storage,stockage en nuage

Form Fields

Name Input:

  • ID: name
  • Label: "Glossary name"
  • Type: text
  • Placeholder: From translation key
  • Max length: 100 characters
  • Required: Yes

Description Input:

  • ID: description
  • Label: "Description"
  • Type: text
  • Multiline: Yes
  • Placeholder: From translation key
  • Required: No

Source Language Select:

  • ID: source_language
  • Label: "Source language"
  • Type: dropdown (single select)
  • Options: Sorted alphabetically by name
  • Format: "Language Name (code)"
  • Placeholder: "Loading..." or "Select source language"
  • Required: Yes

Target Language Select:

  • ID: target_language
  • Label: "Target language"
  • Type: dropdown (single select)
  • Options: Dynamically filtered by source
  • Format: "Language Name (code)"
  • Placeholder: "Select source language first" or "Select target language"
  • Disabled until source selected
  • Required: Yes

Entries CSV Input:

  • ID: entries_csv
  • Label: "Term pairs"
  • Type: textarea (multiline text)
  • Placeholder: From translation key
  • Help text: CSV format help
  • Required: Yes
  • Can be populated by file upload OR manual entry

After Creating

Once created, your glossary:

  • Appears in glossaries list
  • Shows entry count (number of term pairs)
  • Can be edited (name, description, active status)
  • Can be deleted
  • Can be downloaded as CSV
  • Has active status (true by default)

Modal Size: Large

Close Behavior:

  • Close button (X) in header
  • Cancel button in footer
  • Does NOT close on outside click
  • On close: form resets, state clears

Footer Actions:

  1. Cancel button (smoke variant, closes modal)
  2. Create button (primary variant, submits form)

Form Submission:

  • Handled by handleSubmit from react-hook-form
  • Calls onSubmitCreate function
  • Validates all fields
  • Shows errors inline

Language Pair Support

Supported Language Pairs:

  • Fetched from API: /api/v3/glossaries/supported_languages
  • Returns array of language pairs
  • Each pair includes:
    • source_language (code)
    • target_language (code)
    • source_language_name
    • target_language_name
    • service (deepl or google)

Service Selection:

  • If source language available in both services:
    • DeepL prioritized if available
    • Falls back to Google if DeepL not available
  • Target languages shown from selected service only
  • Ensures consistency within glossary

Error Handling

API Errors:

  • Shows error_description from response
  • Or detail field
  • Or error field
  • Or message field
  • Falls back to generic message

File Upload Errors:

  • Validates .csv file extension
  • Catches parse errors
  • Validates row format
  • Shows specific error messages
  • Clears file input on error

Form Validation Errors:

  • Inline error messages below fields
  • Name: Required, max 100 chars
  • Source language: Required
  • Target language: Required
  • Entries CSV: Required

Glossary Display

After creation, glossaries shown in list with:

  • Name (clickable to details)
  • Language pair (source → target format)
  • Entry count
  • Active status
  • Created date

State Management

Modal State:

  • isModalOpen controls visibility
  • selectedSourceLanguage tracks source selection
  • uploadedFileName tracks file upload status
  • Form state managed by react-hook-form

Reset on Close:

  • Source language selection cleared
  • Uploaded filename cleared
  • File input value cleared
  • Form values reset to empty

Reset on Success:

  • Same as close
  • Plus query cache invalidated
  • Glossaries list refreshes

Create glossaries! Upload CSV term pairs for translation.

Note: Glossary features and term limits may vary based on your subscription plan. Contact your organization administrator for details.

Next Steps