feat: multilingual glossary templates + inline GlossarySelector rewrite
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 1m28s

- Enriched 8 glossary templates with 18,191 translations across 11 languages
  using LLM batch generation + back-translation validation (99.98% confirmed)
- Rewrote GlossarySelector as inline section with template creation
- Fixed sidebar duplicate (single Glossaries link with proOnly flag)
- Added glossaryId reset when sourceLang changes
- Always show GlossarySelector (locked with Pro badge for free users)
- Added source_language flag on glossary cards
- Redirected /dashboard/context to /dashboard/glossaries
- Updated import endpoint to read translations from templates
- Added enrichment script (scripts/enrich_glossary_templates.py)
- Added 6 i18n keys across all 13 locales

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-17 00:52:24 +02:00
parent 9be640c449
commit ca8abc560d
19 changed files with 28747 additions and 2029 deletions

View File

@@ -1,4 +1,4 @@
import { FileText, Key, BookText, User, Globe, type LucideIcon } from 'lucide-react';
import { FileText, Key, BookText, User, type LucideIcon } from 'lucide-react';
export interface NavItem {
labelKey: string;
@@ -13,15 +13,3 @@ export const baseNavItems: NavItem[] = [
{ labelKey: 'dashboard.nav.glossaries', href: '/dashboard/glossaries', icon: BookText, proOnly: true },
{ labelKey: 'dashboard.nav.apiKeys', href: '/dashboard/api-keys', icon: Key, proOnly: true },
];
export const proNavItem: NavItem = {
labelKey: 'dashboard.nav.glossaries',
href: '/dashboard/glossaries',
icon: BookText,
proOnly: true,
};
export function getNavItems(isPro: boolean): NavItem[] {
if (isPro) return [...baseNavItems, proNavItem];
return baseNavItems.filter(item => !item.proOnly);
}