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
- Navigate to Glossaries page
- Click "Create Glossary" button (Plus icon)
- 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
- Click "Upload CSV File" button
- File picker opens (accepts .csv only)
- Select your CSV file
- File validates and parses automatically
- Success message shows: "CSV file uploaded successfully"
- Filename displays below button
- Click "Clear" to remove file and try again
Method 2: Enter CSV Manually
- Click in text area labeled "Or enter CSV manually"
- Paste or type CSV content directly
- Format:
source_term,target_termper line - 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
- Review all entered information:
- Name filled
- Source language selected
- Target language selected
- CSV entries provided
- Click "Create" button
- Glossary created and added to list
- Success toast: "Glossary created successfully"
- Modal closes automatically
- 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 Properties
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:
- Cancel button (smoke variant, closes modal)
- 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
- Manage Terms - View and manage glossary entries
- Apply to Transcripts - Use glossaries in your workflow