From cd7b6019410c1efb80b43fa6225a9ed07f12209f Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 7 Nov 2025 22:51:26 +0000 Subject: [PATCH] fix: Add missing 'reasoning' namespace to i18n configuration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CRITICAL FIX: Translation keys showing instead of translated text The Bug: -------- Dashboard components were using useTranslation('reasoning') but the 'reasoning' namespace was NOT loaded into i18n configuration. Result: i18n couldn't find translations and returned keys literally: - "jtbd.health_status.last_updated" instead of "Last updated" / "Última actualización" - "jtbd.action_queue.all_caught_up" instead of "All caught up!" / "¡Todo al día!" - "jtbd.production_timeline.no_production" instead of translations - etc. Why It Happened: ---------------- locales/index.ts was missing: 1. Import statements for reasoning.json (all 3 languages) 2. 'reasoning' property in resources object (es/en/eu) 3. 'reasoning' in namespaces array The Fix: -------- Added to frontend/src/locales/index.ts: 1. Imports: import reasoningEs from './es/reasoning.json'; import reasoningEn from './en/reasoning.json'; import reasoningEu from './eu/reasoning.json'; 2. Resources object: es: { ..., reasoning: reasoningEs } en: { ..., reasoning: reasoningEn } eu: { ..., reasoning: reasoningEu } 3. Namespaces array: export const namespaces = [..., 'reasoning'] as const; 4. Exports: export { ..., reasoningEs }; Now: ---- ✅ t('jtbd.health_status.last_updated') returns "Last updated" (en) or "Última actualización" (es) ✅ All dashboard translations work in all 3 languages (es, en, eu) ✅ Language switching works properly --- frontend/src/locales/index.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/frontend/src/locales/index.ts b/frontend/src/locales/index.ts index 462b78fc..1e77e640 100644 --- a/frontend/src/locales/index.ts +++ b/frontend/src/locales/index.ts @@ -13,6 +13,7 @@ import equipmentEs from './es/equipment.json'; import landingEs from './es/landing.json'; import settingsEs from './es/settings.json'; import ajustesEs from './es/ajustes.json'; +import reasoningEs from './es/reasoning.json'; // English translations import commonEn from './en/common.json'; @@ -29,6 +30,7 @@ import equipmentEn from './en/equipment.json'; import landingEn from './en/landing.json'; import settingsEn from './en/settings.json'; import ajustesEn from './en/ajustes.json'; +import reasoningEn from './en/reasoning.json'; // Basque translations import commonEu from './eu/common.json'; @@ -45,6 +47,7 @@ import equipmentEu from './eu/equipment.json'; import landingEu from './eu/landing.json'; import settingsEu from './eu/settings.json'; import ajustesEu from './eu/ajustes.json'; +import reasoningEu from './eu/reasoning.json'; // Translation resources by language export const resources = { @@ -63,6 +66,7 @@ export const resources = { landing: landingEs, settings: settingsEs, ajustes: ajustesEs, + reasoning: reasoningEs, }, en: { common: commonEn, @@ -79,6 +83,7 @@ export const resources = { landing: landingEn, settings: settingsEn, ajustes: ajustesEn, + reasoning: reasoningEn, }, eu: { common: commonEu, @@ -95,6 +100,7 @@ export const resources = { landing: landingEu, settings: settingsEu, ajustes: ajustesEu, + reasoning: reasoningEu, }, }; @@ -131,7 +137,7 @@ export const languageConfig = { }; // Namespaces available in translations -export const namespaces = ['common', 'auth', 'inventory', 'foodSafety', 'suppliers', 'orders', 'recipes', 'errors', 'dashboard', 'production', 'equipment', 'landing', 'settings', 'ajustes'] as const; +export const namespaces = ['common', 'auth', 'inventory', 'foodSafety', 'suppliers', 'orders', 'recipes', 'errors', 'dashboard', 'production', 'equipment', 'landing', 'settings', 'ajustes', 'reasoning'] as const; export type Namespace = typeof namespaces[number]; // Helper function to get language display name @@ -145,7 +151,7 @@ export const isSupportedLanguage = (language: string): language is SupportedLang }; // Export individual language modules for direct imports -export { commonEs, authEs, inventoryEs, foodSafetyEs, suppliersEs, ordersEs, recipesEs, errorsEs, equipmentEs, landingEs, settingsEs, ajustesEs }; +export { commonEs, authEs, inventoryEs, foodSafetyEs, suppliersEs, ordersEs, recipesEs, errorsEs, equipmentEs, landingEs, settingsEs, ajustesEs, reasoningEs }; // Default export with all translations export default resources;