Claude Traductor
Este es el oleoducto que corre www.conveythis.com en sí — un sitio Astro de 238 páginas, disponible en 55 idiomas. Lo extrajimos, documentamos cada modo de falla que nos costó encontrar y publicamos todo. No es una prueba ni un adelanto: no hay clave para comprar, ni cuota, ni cuenta.
Dos decisiones de diseño
Cómo funciona
Dos decisiones lo definen. Primero, las traducciones se empalman en el HTML creado mediante desplazamiento de bytes y el documento nunca se vuelve a serializar desde un DOM —, por lo que se incluyen CSS crítico, el elemento LCP, hashes de activos y el width/height todos los atributos que contienen CLS permanecen intactos. Eso es por qué las páginas locales coinciden con el idioma de origen en Core Web Vitals en lugar de simplemente parecerse a él. En segundo lugar, la unidad de traducción es el bloque completo, no el nodo de texto, porque aproximadamente una quinta parte de los nodos de texto de un sitio típico están divididos por marcado en línea y traducir los fragmentos por separado rompe la gramática en cualquier idioma que reordene o flexione.
El resultado está probado en lugar de afirmado: ocho puertas y una auditoría SEO exhaustiva en cada página, incluida una puerta que existe simplemente porque las métricas de cobertura son estructuralmente ciegas a los errores de extracción.
Verificación
¿Realmente se mantiene?
Es una pregunta justa y comprobable, más que algo por lo que tengas que confiar en nuestra palabra. doctorslator.com/fr es un gran sitio Astro cuyas páginas en francés fueron construidas por este oleoducto. Compárelo con el original en inglés y el marcado es byte idéntico:
2,743
etiquetas, en secuencia idéntica
2,031
atributos de clase, todos coinciden
+0.74%
peso de la página — El francés es más largo
No se movió nada estructural, por lo que no hay nada que el navegador pueda diseñar de manera diferente. Compruébelo usted mismo — tarda unos diez segundos:
curl -s https://doctranslator.com/ | grep -o 'class="[^"]*"' > en.txt
curl -s https://doctranslator.com/fr | grep -o 'class="[^"]*"' > fr.txt
diff en.txt fr.txt && echo "markup identical — only the text changed"Y las puntuaciones
| Fuente en inglés | Francés, de esta herramienta | A11y / Mejores prácticas / SEO | |
|---|---|---|---|
| Escritorio | 100 | 100 | 100 / 100 / 100 |
| Móvil | 98 | 98 | 100 / 100 / 100 |
Puntuaciones de rendimiento de PageSpeed Insights, medidas el 25 de agosto de 2026. Accesibilidad, mejores prácticas y SEO fueron 100 en cada tirada de ambas páginas, en ambas estrategias.
Estas son medianas, deliberadamente. Las puntuaciones de Lighthouse se mueven: cinco ejecuciones consecutivas de la misma página móvil en inglés arrojaron 98, 98, 88, 98, 98, y la pintura con mayor contenido osciló entre 1,8 y 3,2 s. Esto es variación de red y CDN más que calidad de página. Si mides una vez y obtienes 91, es por eso que — ejecútalo unas cuantas veces y compara los dos idiomas entre sí en lugar de compararlos con un número en una página de marketing.
Y el idioma
La identidad del marcado es medible. Si el español es alguno bueno es una pregunta diferente, y hasta la versión 2.0 el pipeline no tenía respuesta — las pruebas verificaban las formas y el andamiaje de las solicitudes, y nada calificaba una traducción.
node scripts/i18n/tqa.mjs --lang es --dry # sample size and cost, no API call
node scripts/i18n/tqa.mjs --lang es,fr,de # scorecard + per-locale JSON
node scripts/i18n/tqa.mjs --lang es --repeat # judge the same sample twicePuntúa una muestra estratificada según la tipología de error MQM en sus pesos convencionales — menor 1, mayor 5, crítico 10 — y pondera la muestra según la frecuencia con la que aparece cada cadena, por lo que el encabezado que todos leen cuenta para más de una nota al pie única. Tres cosas impiden que el número sea decorativo:
- El juez es un modelo diferente al traductor
- Los modelos puntúan generosamente su propia producción. Si no se configura ninguna segunda clave de proveedor, utiliza la misma y así lo dice, en la ejecución y en el informe.
- Se siembra la muestra y se informa la varianza
- Una semilla reproduce exactamente una puntuación;
--repeatpuntúa la misma muestra dos veces e imprime la brecha. Un número de calidad que nadie puede volver a derivar, citado sin su ruido, es un número de marketing. - Una unidad que el juez no puede evaluar queda excluida y no se considera limpia
- Una versión anterior imprimía 100,00 sobre 100 a partir de una muestra en la que cada unidad no había podido analizarse. Ahora se niega a informar de ninguna puntuación en ese caso.
Léalo como una comparación — entre lugares, entre modelos, antes y después de un cambio rápido — no como una calificación. Se trata de la evaluación que hace un modelo del trabajo de otro, más que de una revisión humana, y el informe lo dice a primera vista.
Decisión tres
La terminología no es una elección por oración
Las cadenas idénticas siempre fueron consistentes — las unidades están codificadas por un hash del texto fuente, por lo que una etiqueta de navegación traducida una vez se reutiliza en cada página y en todas las ejecuciones. Lo que eso no puede hacer es mantener un mandato dentro de diferentes oraciones: “Dashboard” en dos párrafos diferentes hay dos hashes, dos lotes, dos solicitudes sin estado y nada las compara.
[
{ "source": "Acme", "rule": "keep", "matchCase": true },
{ "source": "Dashboard", "rule": "translate",
"targets": { "es": "Panel de control", "de": "Übersicht" } }
]matchCase es la respuesta a una pregunta que nos hicieron directamente: ¿puede decirlo Manzana La empresa de manzana ¿la fruta? Una lista plana de nombres no puede expresar eso. Las reglas que distinguen entre palabras y casos pueden hacerlo.
| fuente | español | por qué |
|---|---|---|
| Apple anunció un dispositivo | Apple anunció un dispositivo | capital A — protegido y ahora verificado |
| Una manzana al día | Una manzana al día | minúsculas — traducido normalmente |
| La salsa de manzana está a la venta | La compota está en oferta | palabra completa — nunca coincide dentro de una palabra más larga |
La misma versión le dice al modelo qué es una cuerda. Solía recibir el texto y nada más, por lo que una etiqueta de botón y un párrafo del cuerpo eran indistinguibles —, lo que hacía que la propia instrucción del mensaje para mantener cortas las etiquetas de los botones fuera inaplicable. A <button>, un encabezado, una etiqueta de formulario y una meta descripción ahora lo dicen.
Deliberadamente no exige el imperativo para los botones: la interfaz de usuario alemana prefiere un sustantivo verbal y la francesa el infinitivo, por lo que solicita cualquier construcción que ese lenguaje realmente ponga en un botón. Las marcas que ya enumera se incorporan automáticamente como reglas de conservación que distinguen entre mayúsculas y minúsculas, lo que también las coloca bajo una puerta de verificación que verifica que hayan sobrevivido. Nada había comprobado eso antes.
Convenciones locales
Los números se localizan. Los precios nunca se convierten.
Escribiendo 1,234.56 Para un lector alemán es una de las marcas más visibles de una traducción automática. Los modelos no son confiables en las convenciones de separación, por lo que se le dice al modelo que deje los números en paz y Intl los reformatea posteriormente, de forma determinista.
| fuente | becomes | dónde |
|---|---|---|
| 1,234.56 | 1.234,56 | de |
| 1,234.56 | 1 234,56 | fr |
| $5 | 5,00 $EE.UU | fr — ubicación y espaciado, no la cantidad |
| 50% | 50 % | fr — con un espacio que no se rompe |
Formatos. Nunca se convierte.
No hay opción de configuración para elloUn precio es un compromiso comercial, y convertir uno a un ritmo incorporado en un build — rancio al día siguiente de escribirlo — es como una herramienta de traducción comienza a publicar ofertas incorrectas en mercados que nadie está observando. Cada cantidad monetaria encontrada se escribe en un informe, por lo que un ser humano fija deliberadamente el precio de cada mercado.
Una puerta de integridad numérica respalda esto al fallar la compilación si hay un número valor cambios entre fuente y traducción. Un modelo que se envía silenciosamente $39 donde dijo la fuente $49 pasa todas las demás comprobaciones: marcado idéntico, marcadores de posición coincidentes, longitud plausible, español fluido.
Deliberadamente dejado en paz: números de versión, horas, direcciones IP, fechas ISO, números de teléfono y cualquier número no agrupado — durante el desarrollo se convirtió en un patrón codicioso 192.168.1.1 en 1.921.681,1, y ese caso ahora es una prueba. Un resultado que parece un error y no lo es: el español no agrupa números de cuatro dígitos, por lo que 1,234.50 es correcto 1234,50 en es y 1.234,50 en de.
Ruta honesta
¿Cuál necesitas realmente?
La sustitución estática y una capa de tiempo de ejecución resuelven diferentes problemas. Elegir el equivocado te cuesta un fin de semana, así que aquí está la división honesta.
Tienes una compilación estática, el contenido cambia según la cadencia de lanzamiento y quieres ser dueño absoluto del HTML.
Claude Traductor
Gratuito, autohospedado, AGPL-3.0. Tu propia clave API, tus propios archivos, sin cuenta.
Ver en GitHub →Su contenido cambia diariamente, reside en un CMS, es generado por el usuario o se encuentra detrás de un inicio de sesión o pago.
ConveyThis
Una capa de tiempo de ejecución administrada. Sin pasos de compilación para enganchar, sin repetición en cada edición, un editor visual y una revisión humana.
Ver precios →Lo que necesitas traducir son documentos en lugar de páginas — PDF, DOCX, XLSX, PPTX.
Traductor de documentos
Archivos completos, diseño y tablas conservados, 100+ idiomas.
Ir a DocTranslator →Inicio rápido
Instalarlo
Repositorio
https://github.com/ConveyThis/claude-translator
AGPL-3.0 · Nodo ≥ 20 · una dependencia (parse5) · abrir en GitHub →
Necesitas
- Node.js 20 o más reciente
- Un sitio que crea HTML estático — lee el resultado de tu compilación, no tu fuente
- Una clave API para cualquier modelo que elijas — o ninguno en absoluto, si ejecuta uno localmente
Como habilidad de Claude Code
Clónalo en tu directorio de habilidades y luego pídele a Claude que localice el sitio. Sigue las instrucciones incluidas, incluidos los modos de falla que nos costaron dinero real encontrar — y las reglas sobre cuándo esta es la herramienta completamente incorrecta.
git clone https://github.com/ConveyThis/claude-translator.git \
~/.claude/skills/claude-translatorEn cualquier proyecto
Un comando. init copia la tubería en scripts/i18n/, escribe una configuración, declara parse5 y añade el derivado i18n/ caminos hacia tu .gitignore. Nunca sobrescribe nada sin --force, e imprime cada archivo que toca.
cd your-project
npx claude-translator init
npm install # parse5, the only dependencyLos scripts aterrizan en su repositorio en lugar de permanecer allí node_modules a propósito — resuelven rutas del proyecto en el que se encuentran, son lo suficientemente cortos para leer y la licencia existe para que puedas cambiarlos.
Instalación sin npx
git clone https://github.com/ConveyThis/claude-translator.git
cp -r claude-translator/scripts your-project/scripts/i18n
cp claude-translator/i18n.config.example.json your-project/i18n.config.json
cd your-project && npm install --save-dev parse5Configurar
La configuración más pequeña que se ejecuta. buildDir es donde su generador escribe HTML; baseUrl es tu origen canónico, sin barra diagonal final.
{
"buildDir": "dist",
"baseUrl": "https://example.com",
"provider": "anthropic",
"glossary": "glossary.json",
"locales": [
{ "hreflang": "es", "pathCode": "es", "nativeLabel": "Español" },
{ "hreflang": "de", "pathCode": "de", "nativeLabel": "Deutsch" }
]
}echo "ANTHROPIC_API_KEY=your-key-here" >> .env # and gitignore itEjecútalo
| npm ejecuta compilación | Su compilación normal — solo idioma de origen |
| scripts de nodo/i18n/extract.mjs | Encuentra cada unidad traducible |
| scripts de nodo/i18n/translate.mjs --lang es,fr | traducir a la memoria |
| scripts de nodo/i18n/build-locales.mjs --lang all | escribe las páginas localizadas |
| scripts de nodo/i18n/verify.mjs --lang all | ocho puertas — salidas distintas de cero en caso de falla |
| scripts de nodo/i18n/audit-seo.mjs | canónicos, hreflang, JSON-LD, mapas de sitio |
| scripts de nodo/i18n/tqa.mjs --lang es --dry | opcional — Puntuación de calidad MQM, costo primero |
Luego implemente el directorio de compilación exactamente como lo implementa hoy — las páginas localizadas son archivos comunes que se encuentran al lado de los existentes. Las opciones completas, cada modo de falla y el razonamiento detrás de cada decisión de diseño están en el README.
Modelos
Trae tu propio modelo — incluido uno local
El paso de traducción se comunica con un modelo a través de un pequeño adaptador y se envían tres con él: Claude (el predeterminado), Gemini y cualquier punto final compatible con OpenAI. Este último cubre la mayor parte del campo —OpenAI, Azure, Groq, DeepSeek, Mistral, OpenRouter, Together, Fireworks— y también cubre Ollama, LM Studio y vLLM.
Lo que significa que tres líneas de configuración ejecutan todo el proceso en su propio hardware:
{
"provider": "openai",
"apiBaseUrl": "http://localhost:11434/v1",
"model": "qwen2.5:14b"
}Sin clave, sin cuota y nada sale de la máquina — lo cual importa si el contenido es confidencial. Todo lo que no esté en esa lista es un archivo adaptador con dos funciones.
Límites
Donde termina la herramienta gratuita
Seis límites reales. Ninguna de ellas es una característica limitada — son la forma del enfoque y los scripts te indican cuándo acertas uno en lugar de fallar silenciosamente.
- Hidratación del lado del cliente
- Las islas y las cargas útiles del marco se vuelven a renderizar en el navegador, a través del HTML sustituido. El extractor cuenta las páginas afectadas para que puedas averiguarlo en segundos, no después de una ejecución completa.
- Documentos
- Los PDF vinculados, DOCX y XLSX permanecen en el idioma de origen — la canalización solo toca HTML.
- Batir
- La memoria está codificada por el hash de origen, por lo que puede indicarle qué parte de su sitio cambió desde la última ejecución. Una alta tasa de abandono significa pagar para volver a traducir, repetidamente.
- Edición de una traducción
- Busque el hash en el archivo de memoria, edite la cadena, reconstruya. No hay editor, ni revisor, ni flujo de trabajo.
- Volumen
- Pagas a tu propio proveedor de modelos directamente, a su tarifa, con tu propia clave — o nada en absoluto, si ejecutas el modelo tú mismo.
- Uso de red modificado
- AGPL-3.0 §13 le obliga a publicar modificaciones si ejecuta una copia modificada como un servicio para otras personas. Ejecutarlo sin modificaciones o modificado internamente no tiene restricciones.
Los primeros cuatro son los que la gente realmente golpea, y todos tienen la misma forma: algo tiene que pasar después la compilación, algo que una herramienta de tiempo de compilación no puede hacer. Para eso está el producto gestionado y el plan gratuito Son 5.000 palabras sin tarjeta, lo que es suficiente para saber si ayuda. No lo necesitas para usar nada de esta página.
Atribución
Lo que pone en tus páginas
Las páginas localizadas llevan un <meta name="generator"> etiqueta y un comentario HTML que nombra ConveyThis — aproximadamente 150 bytes, sin solicitud, sin script y sin enlace. Es el mismo mecanismo que utilizan Astro, Hugo y WordPress. Dos claves de configuración lo eliminan y nada en el repositorio verifica si lo hiciste.
Si prefiere mostrar un crédito visible, establezca credit.visibleLink a true y coloca el espacio donde quieras en la página. No te piden nada por ello y no te dan nada a cambio — existe porque algunas personas quieren dar crédito a las herramientas que utilizan, y sin ningún otro motivo.
El enlace de crédito es rel="nofollow", deliberadamente. No porque sea pago — no lo es — sino porque es un enlace que de otro modo un script de compilación agregaría en cada página de un sitio, y los enlaces a todo el sitio que aparecen a través de herramientas en lugar de opciones editoriales son la forma a la que apunta la guía del esquema de enlaces de Google. Vale la pena el tráfico de referencia, no los backlinks — cualquiera que te diga lo contrario te está vendiendo una penalización.
Licencia comercial
El código es AGPL-3.0. Localizar sus propios sitios y enviar el resultado no tiene restricciones — la licencia cubre el software, no el HTML que escribe. Sólo muerde si corres un modificado copiar como un servicio de red para otras personas. Si eres tú y no puedes publicar tus cambios, escribe a [correo electrónico protegido].
Preguntas
Las preguntas que la gente realmente hace
¿Esto es realmente gratis? ¿cuál es el truco?
¿Necesito una cuenta ConveyThis?
¿Cuánto cuesta realmente una carrera?
¿Puedo usar mi propio modelo o ejecutarlo completamente sin conexión?
¿Las páginas traducidas serán más lentas que las originales?
¿Funciona con mi framework?
¿Qué pasa con los componentes de React o las islas Astro que se hidratan?
¿Puede mantener mi terminología coherente y distinguir un nombre de marca de una palabra común?
Ya lo uso. ¿Qué cambia cuando actualizo a 2.0.0?
¿Puedo arreglar una traducción que no me gusta?
¿Qué pasa cuando edito una página o agrego una nueva?
¿Las páginas traducidas serán indexadas por Google?
¿Puedo usarlo comercialmente? ¿Qué significa AGPL-3.0 para mí?
¿Es necesaria la atribución ConveyThis?
¿En qué se diferencia esto del propio ConveyThis?
La traducción, mucho más que simplemente conocer idiomas, es un proceso complejo.
Siguiendo nuestros consejos y utilizando ConveyThis , sus páginas traducidas resonarán en su audiencia y se sentirán nativas del idioma de destino.
Si bien exige esfuerzo, el resultado es gratificante. Si está traduciendo un sitio web, ConveyThis puede ahorrarle horas con la traducción automática.
Comience con ConveyThis en nuestro plan gratuito — ¡no se requiere tarjeta de crédito!
