This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
import { generateText } from 'ai';
|
||||
import { openai } from '@ai-sdk/openai';
|
||||
|
||||
/**
|
||||
* Motor de traducción impulsado por Vercel AI SDK y OpenAI.
|
||||
* Usa generateText para evitar bugs de compatibilidad con Zod.
|
||||
* @param content Objeto con los textos a traducir. Ej: { title: "...", content: "..." }
|
||||
* @returns Objeto con los idiomas y sus traducciones
|
||||
*/
|
||||
export async function translateContentForCMS(content: Record<string, string>) {
|
||||
try {
|
||||
const { text } = await generateText({
|
||||
model: openai('gpt-4o'),
|
||||
system: `You are an elite technical translator for FLUX, a premium brand of Radio Frequency (RF) industrial machinery.
|
||||
|
||||
Your task is to translate the user's JSON content into 4 specific locales:
|
||||
1. 'it': Standard Professional Italian.
|
||||
2. 'vec': Venetian dialect (from Bassano del Grappa). Maintain a proud, industrial, and authentic tone.
|
||||
3. 'es': Professional Spanish (Neutral/Global).
|
||||
4. 'de': Professional Industrial German.
|
||||
|
||||
CRITICAL RULES:
|
||||
- NEVER translate Markdown syntax (#, **, *, >, |---|).
|
||||
- NEVER translate URLs, file paths (like /cases/img.jpg), or code blocks.
|
||||
- NEVER translate technical acronyms like "RF", "kW", "MHz", "FLUX".
|
||||
- Keep the exact same JSON key names as the input.
|
||||
|
||||
OUTPUT FORMAT:
|
||||
You MUST return ONLY a raw, valid JSON object. Do not wrap it in \`\`\`json blocks. No pleasantries.
|
||||
The output must strictly follow this structure:
|
||||
{
|
||||
"it": { "key1": "translated text..." },
|
||||
"vec": { "key1": "translated text..." },
|
||||
"es": { "key1": "translated text..." },
|
||||
"de": { "key1": "translated text..." }
|
||||
}`,
|
||||
|
||||
prompt: JSON.stringify(content),
|
||||
});
|
||||
|
||||
// Limpiamos el texto por si GPT-4o decide ponerle "```json" alrededor
|
||||
const cleanedText = text.replace(/```json/g, '').replace(/```/g, '').trim();
|
||||
|
||||
// Convertimos la respuesta de la IA en un objeto real de Javascript
|
||||
const parsedObject = JSON.parse(cleanedText);
|
||||
|
||||
return parsedObject;
|
||||
|
||||
} catch (error) {
|
||||
console.error("Error in AI Translation:", error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user