diff --git a/src/controllers/documents.controller.js b/src/controllers/documents.controller.js index 3eb1496d..8663b872 100644 --- a/src/controllers/documents.controller.js +++ b/src/controllers/documents.controller.js @@ -110,7 +110,7 @@ async function getDocument(req, res) { }); } - // Check if translation exists + // Check if translation exists (embedded in document) if (document.translations && document.translations[lang]) { const translation = document.translations[lang]; @@ -133,14 +133,30 @@ async function getDocument(req, res) { success: true, document: translatedDoc }); - } else { - // Translation not available - return res.status(404).json({ - error: 'Not Found', - message: `Translation not available for language: ${lang}`, - available_languages: Object.keys(document.translations || {}) + } + + // FALLBACK: Check for separate language document (e.g., glossary-de, glossary-fr) + // Try appending language code to slug + const translatedSlug = `${identifier}-${lang}`; + const translatedDoc = await Document.findBySlug(translatedSlug); + + if (translatedDoc) { + return res.json({ + success: true, + document: { + ...translatedDoc, + language: lang, + sections: undefined // Force traditional view + } }); } + + // Translation not available + return res.status(404).json({ + error: 'Not Found', + message: `Translation not available for language: ${lang}`, + available_languages: Object.keys(document.translations || {}) + }); } // Default: Return English version