* ## ✅ Phase 1 & 3 Implementation Complete
I've successfully implemented Phase 1 (Language Configuration System) and Phase 3 (Auto-generated Language Dropdown):
### **✅ What's Been Accomplished:**
1. **Created centralized language configuration** ([`frontend/src/i18n/languages.ts`](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/vk-e266-improvemen/frontend/src/i18n/languages.ts))
- Uses `Intl.DisplayNames` for native language names (English, 日本語, Español)
- Provides fallbacks for older browsers
- Single source of truth for all supported languages
2. **Converted UiLanguage to enum** in [`shared/types.ts`](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/vk-e266-improvemen/shared/types.ts#L103-L108)
3. **Enhanced i18n configuration** ([`frontend/src/i18n/config.ts`](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/vk-e266-improvemen/frontend/src/i18n/config.ts))
- Added `supportedLngs` and `load: 'languageOnly'` for better language detection
- Improved language mapping with proper error handling
4. **Removed duplicate language names** from all translation files
- [English](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/vk-e266-improvemen/frontend/src/i18n/locales/en/common.json#L20-L22), [Japanese](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/vk-e266-improvemen/frontend/src/i18n/locales/ja/common.json#L20-L22), [Spanish](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/vk-e266-improvemen/frontend/src/i18n/locales/es/common.json#L20-L22) common.json files
- Only kept `browserDefault` translation key
5. **Auto-generated language dropdown** in [`GeneralSettings.tsx`](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/vk-e266-improvemen/frontend/src/pages/settings/GeneralSettings.tsx#L215-L221)
- Dynamically generates options from language configuration
- Shows native language names without hardcoding
### **✅ Issues Resolved:**
- ✅ **Issue #1**: Language names no longer repeated in every translation file
- ✅ **Issue #4**: Language dropdown now auto-generated from enum instead of hardcoded
### **Next Steps (Phase 2):**
When you're ready, I can implement Phase 2 (Build-time Validation Tools) which will address the remaining issues:
- **Issue #2**: Translation key completeness checking
- **Issue #3**: Template variable validation
The system now provides a solid foundation with type safety, centralized configuration, and native language display names using modern browser APIs!
* Cleanup script changes for task attempt e26648e5-d440-43ea-be44-6764efa795af
* Perfect! I've successfully simplified the translation system.
## ✅ Simplification Complete
**What I changed:**
1. **Simplified [`languages.ts`](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/vk-e266-improvemen/frontend/src/i18n/languages.ts)** from 100+ lines to just 43 lines
- Removed unnecessary interfaces and complex abstractions
- Kept essential functionality: UI-to-i18n mapping, native names, dropdown generation
- Added proper TypeScript typing with `as const`
2. **Updated [`GeneralSettings.tsx`](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/vk-e266-improvemen/frontend/src/pages/settings/GeneralSettings.tsx#L49-L54)** to use the simpler API
- Changed from `getAllLanguageInfo()` to `getLanguageOptions()`
- Updated mapping from `{uiValue, displayName}` to `{value, label}`
**Key benefits of the simplified version:**
- ✅ **70% less code** (43 lines vs 100+)
- ✅ **Stronger typing** with `as const` assertions
- ✅ **Same functionality** - still uses `Intl.DisplayNames` with fallbacks
- ✅ **Easier to maintain** for the current 3-language setup
- ✅ **Still centralized** - single source of truth maintained
The dev server is running at http://127.0.0.1:3001 for your manual testing. The language dropdown should now show native language names (English, 日本語, Español) generated dynamically instead of being hardcoded!
* Cleanup script changes for task attempt e26648e5-d440-43ea-be44-6764efa795af