From 80fff047ab596bb0e4d009e2bcf8ce1dd5a56827 Mon Sep 17 00:00:00 2001 From: Christian Vidal Wolf Date: Thu, 9 Apr 2026 11:05:00 +0200 Subject: [PATCH] fix: ensure Gemini translates all-caps phrases and maintains casing --- src/components/EditPanel.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/components/EditPanel.tsx b/src/components/EditPanel.tsx index 36477b8..ca5265d 100644 --- a/src/components/EditPanel.tsx +++ b/src/components/EditPanel.tsx @@ -164,7 +164,7 @@ export function EditPanel({ row, rowIndex, onSave, onClose, onCaptureState }: Ed let prompt = ''; const baseContext = `Article Name: ${row[COLUMNS.ARTICLE_NAME]}\nArticle Details (EN): ${formData.detailsEn || 'N/A'}\nArticle Details (DE): ${formData.detailsDe || 'N/A'}`; - const systemPrompt = "You are a professional copywriter and expert translator for CRAZE GmbH, a German toy company. CRITICAL: Output ONLY the translated or generated content. Do not include any introductions, conclusions, or conversational text (e.g., do NOT say 'Here is the translation' or 'Sure, I can help'). Your response must contain only the final product description."; + const systemPrompt = "You are a professional copywriter and expert translator for CRAZE GmbH, a German toy company. CRITICAL: Output ONLY the translated or generated content. Do not include any introductions, conclusions, or conversational text. Translate EVERYTHING, including phrases in ALL CAPS (maintain the all-caps casing for those phrases in the translation). Your response must contain only the final product description."; if (field === 'longDe') { if (formData.longEn) { @@ -174,6 +174,7 @@ export function EditPanel({ row, rowIndex, onSave, onClose, onCaptureState }: Ed 2. Maintain the EXACT same length and detailed information. 3. Keep all technical specs intact. 4. Translate every single paragraph into natural, commercial German for toy buyers. + 5. Translate ALL text, including titles or phrases in ALL CAPS, and keep them in ALL CAPS in the translation. English Text to Translate: ${formData.longEn}`; @@ -188,6 +189,7 @@ export function EditPanel({ row, rowIndex, onSave, onClose, onCaptureState }: Ed 2. Maintain the EXACT same length and detailed information. 3. Keep all technical specs intact. 4. Translate every single paragraph into natural, commercial English for toy buyers. + 5. Translate ALL text, including titles or phrases in ALL CAPS, and keep them in ALL CAPS in the translation. German Text to Translate: ${formData.longDe}`; @@ -196,7 +198,7 @@ export function EditPanel({ row, rowIndex, onSave, onClose, onCaptureState }: Ed } } else if (field === 'shortDe') { if (formData.shortEn) { - prompt = `Translate exactly this short English product description into professional German for the toy market:\n\n${formData.shortEn}`; + prompt = `Translate exactly this short English product description into professional German for the toy market. IMPORTANT: Translate everything, including any ALL CAPS phrases, maintaining the all-caps formatting:\n\n${formData.shortEn}`; } else if (formData.longDe) { const targetChars = Math.round(formData.longDe.length * 0.3); prompt = `Create a concise summary of the following German product description. The summary must be approximately ${targetChars} characters long (about 30% of the original). Preserve the most important commercial highlights and features in natural, professional German for B2B toy buyers. Do not use bullet points — write flowing prose.\n\nOriginal description:\n${formData.longDe}`; @@ -205,7 +207,7 @@ export function EditPanel({ row, rowIndex, onSave, onClose, onCaptureState }: Ed } } else if (field === 'shortEn') { if (formData.shortDe) { - prompt = `Translate exactly this short German product description into professional English for the toy market:\n\n${formData.shortDe}`; + prompt = `Translate exactly this short German product description into professional English for the toy market. IMPORTANT: Translate everything, including any ALL CAPS phrases, maintaining the all-caps formatting:\n\n${formData.shortDe}`; } else if (formData.longEn) { const targetChars = Math.round(formData.longEn.length * 0.3); prompt = `Create a concise summary of the following English product description. The summary must be approximately ${targetChars} characters long (about 30% of the original). Preserve the most important commercial highlights and features in natural, professional English for B2B toy buyers. Do not use bullet points — write flowing prose.\n\nOriginal description:\n${formData.longEn}`;