From e65e10224447e91cccacb456ba0046e9f3082a58 Mon Sep 17 00:00:00 2001 From: adevopg Date: Thu, 16 Jul 2026 13:58:01 +0000 Subject: [PATCH] Foro: interfaz de TinyMCE en el idioma de la web MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El editor salía siempre en inglés. Ahora su interfaz (barra, menús, diálogos) usa el locale de la web: inglés por defecto (idioma nativo de TinyMCE) y español desde public/tinymce-langs/es.js (localización oficial de TinyMCE, versionada porque public/tinymce se regenera en postinstall y no la incluye). Los enlaces de wowhead del foro ya seguían el locale (subdominio del idioma en la URL y domain=es.wotlk en data-wowhead), así que el tooltip sale en español en /es y en inglés en /en. Verificado: /tinymce-langs/es.js se sirve y language_url queda compilado. Co-Authored-By: Claude Opus 4.8 (1M context) --- web-next/components/ForumEditor.tsx | 5 + web-next/public/tinymce-langs/es.js | 426 ++++++++++++++++++++++++++++ 2 files changed, 431 insertions(+) create mode 100644 web-next/public/tinymce-langs/es.js diff --git a/web-next/components/ForumEditor.tsx b/web-next/components/ForumEditor.tsx index 4dc6326..819956c 100644 --- a/web-next/components/ForumEditor.tsx +++ b/web-next/components/ForumEditor.tsx @@ -81,6 +81,11 @@ export function ForumEditor({ height, menubar: false, statusbar: false, + // Idioma de la interfaz del editor según el locale de la web. El inglés es el + // idioma por defecto de TinyMCE (no necesita paquete); el español se carga + // desde public/tinymce-langs/es.js (localización oficial de TinyMCE). + language: es ? 'es' : 'en', + ...(es ? { language_url: '/tinymce-langs/es.js' } : {}), skin: 'oxide-dark', content_css: 'dark', // colores de calidad de WoW dentro del editor (para el preview de wowhead) diff --git a/web-next/public/tinymce-langs/es.js b/web-next/public/tinymce-langs/es.js new file mode 100644 index 0000000..b073cc6 --- /dev/null +++ b/web-next/public/tinymce-langs/es.js @@ -0,0 +1,426 @@ +tinymce.addI18n("es", { + "#": "#", + "Accessibility": "Accesibilidad", + "Accordion": "Acorde\xf3n", + "Accordion body...": "Cuerpo del acorde\xf3n...", + "Accordion summary...": "Resumen de Acorde\xf3n...", + "Action": "Acci\xf3n", + "Activity": "Actividad", + "Address": "Direcci\xf3n", + "Advanced": "Avanzado", + "Align": "Alinear", + "Align center": "Alinear al centro", + "Align left": "Alinear a la izquierda", + "Align right": "Alinear a la derecha", + "Alignment": "Alineaci\xf3n", + "Alignment {0}": "Alineaci\xf3n {0}", + "All": "Todo", + "Alternative description": "Descripci\xf3n alternativa", + "Alternative source": "Enlace alternativo", + "Alternative source URL": "Origen de URL alternativo", + "Anchor": "Anclaje", + "Anchor...": "Anclaje...", + "Anchors": "Anclajes", + "Animals and Nature": "Animales y naturaleza", + "Arrows": "Flechas", + "B": "B", + "Background color": "Color de fondo", + "Background color {0}": "Color de fondo {0}", + "Black": "Negro", + "Block": "Bloque", + "Block {0}": "Bloque {0}", + "Blockquote": "Cita en bloque", + "Blocks": "Bloques", + "Blue": "Azul", + "Blue component": "Componente azul", + "Body": "Cuerpo", + "Bold": "Negrita", + "Border": "Borde", + "Border color": "Color de borde", + "Border style": "Estilo de borde", + "Border width": "Ancho de borde", + "Bottom": "Inferior", + "Browse files": "Explora los archivos", + "Browse for an image": "Buscar una imagen", + "Browse links": "Explora los enlaces", + "Bullet list": "Lista de vi\xf1etas", + "Cancel": "Cancelar", + "Caption": "Leyenda", + "Cell": "Celda", + "Cell padding": "Relleno de celda", + "Cell properties": "Propiedades de la celda", + "Cell spacing": "Espacio entre celdas", + "Cell styles": "Estilos de celda", + "Cell type": "Tipo de celda", + "Center": "Centro", + "Characters": "Caracteres", + "Characters (no spaces)": "Caracteres (sin espacios)", + "Circle": "C\xedrculo", + "Class": "Clase", + "Clear formatting": "Limpiar formato", + "Close": "Cerrar", + "Code": "C\xf3digo", + "Code sample...": "Ejemplo de c\xf3digo...", + "Code view": "Vista de c\xf3digo", + "Color Picker": "Selector de colores", + "Color swatch": "Muestrario de colores", + "Cols": "Columnas", + "Column": "Columna", + "Column clipboard actions": "Acciones del portapapeles de la columna", + "Column group": "Grupo de columnas", + "Column header": "Encabezado de columna", + "Constrain proportions": "Restringir proporciones", + "Copy": "Copiar", + "Copy column": "Copiar columna", + "Copy row": "Copiar fila", + "Could not find the specified string.": "No se encuentra la cadena especificada.", + "Could not load emojis": "No se pudieron cargar los emojis", + "Count": "Recuento", + "Currency": "Divisa", + "Current window": "Ventana actual", + "Custom color": "Color personalizado", + "Custom...": "Personalizado...", + "Cut": "Cortar", + "Cut column": "Cortar columna", + "Cut row": "Cortar fila", + "Dark Blue": "Azul oscuro", + "Dark Gray": "Gris oscuro", + "Dark Green": "Verde oscuro", + "Dark Orange": "Naranja oscuro", + "Dark Purple": "Morado oscuro", + "Dark Red": "Rojo oscuro", + "Dark Turquoise": "Turquesa oscuro", + "Dark Yellow": "Amarillo oscuro", + "Dashed": "Guiones", + "Date/time": "Fecha/hora", + "Decrease indent": "Disminuir sangr\xeda", + "Default": "Por defecto", + "Delete accordion": "Eliminar acorde\xf3n", + "Delete column": "Eliminar columna", + "Delete row": "Eliminar fila", + "Delete table": "Eliminar tabla", + "Dimensions": "Dimensiones", + "Disc": "Disco", + "Div": "Div", + "Document": "Documento", + "Dotted": "Puntos", + "Double": "Doble", + "Drop an image here": "Arrastre una imagen aqu\xed", + "Dropped file type is not supported": "No se soporta el archivo arrastrado", + "Edit": "Editar", + "Embed": "Insertar", + "Emojis": "Emojis", + "Emojis...": "Emojis...", + "Error": "Error", + "Error: Form submit field collision.": "Error: Colisi\xf3n de campo al enviar formulario.", + "Error: No form element found.": "Error: No se encuentra ning\xfan elemento de formulario.", + "Extended Latin": "Latino extendido A", + "Failed to initialize plugin: {0}": "Fallo al iniciar el complemento: {0}", + "Failed to load plugin url: {0}": "Fallo al cargar URL del complemento: {0}", + "Failed to load plugin: {0} from url {1}": "Fallo al cargar complemento: {0} desde URL {1}", + "Failed to upload image: {0}": "Fallo al cargar imagen: {0}", + "File": "Archivo", + "Find": "Buscar", + "Find (if searchreplace plugin activated)": "Buscar (si el complemento buscar-reemplazar est\xe1 activado)", + "Find and Replace": "Buscar y Reemplazar", + "Find and replace...": "Buscar y reemplazar...", + "Find in selection": "Buscar en la selecci\xf3n", + "Find whole words only": "Solo palabras completas", + "Flags": "Banderas", + "Focus to contextual toolbar": "Enfocar la barra de herramientas contextual", + "Focus to element path": "Enfocar la ruta del elemento", + "Focus to menubar": "Enfocar la barra del men\xfa", + "Focus to toolbar": "Enfocar la barra de herramientas", + "Font": "Fuente", + "Font size {0}": "Tama\xf1o de fuente {0}", + "Font sizes": "Tama\xf1os de fuente", + "Font {0}": "Fuente {0}", + "Fonts": "Fuentes", + "Food and Drink": "Comida y bebida", + "Footer": "Pie de p\xe1gina", + "Format": "Formato", + "Format {0}": "Formato {0}", + "Formats": "Formatos", + "Fullscreen": "Pantalla completa", + "G": "G", + "General": "General", + "Gray": "Gris", + "Green": "Verde", + "Green component": "Componente verde", + "Groove": "Groove", + "Handy Shortcuts": "Accesos pr\xe1cticos", + "Header": "Encabezado", + "Header cell": "Celda de encabezado", + "Heading 1": "Encabezado 1", + "Heading 2": "Encabezado 2", + "Heading 3": "Encabezado 3", + "Heading 4": "Encabezado 4", + "Heading 5": "Encabezado 5", + "Heading 6": "Encabezado 6", + "Headings": "Encabezados", + "Height": "Altura", + "Help": "Ayuda", + "Hex color code": "C\xf3digo de color hexadecimal", + "Hidden": "Oculto", + "Horizontal align": "Alineaci\xf3n horizontal", + "Horizontal line": "L\xednea horizontal", + "Horizontal space": "Espacio horizontal", + "ID": "ID", + "ID should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "El ID deber\xeda comenzar con una letra y seguir solo con letras, n\xfameros, guiones, puntos, dos puntos o guiones bajos.", + "Image is decorative": "La imagen es decorativa", + "Image list": "Lista de im\xe1genes", + "Image title": "Titulo de imagen", + "Image...": "Imagen...", + "ImageProxy HTTP error: Could not find Image Proxy": "Error HTTP de Image Proxy: no se ha podido encontrar Image Proxy", + "ImageProxy HTTP error: Incorrect Image Proxy URL": "Error HTTP de Image Proxy: la URL de Image Proxy no es correcta", + "ImageProxy HTTP error: Rejected request": "Error HTTP de Image Proxy: petici\xf3n rechazada", + "ImageProxy HTTP error: Unknown ImageProxy error": "Error HTTP de Image Proxy: error desconocido de Image Proxy", + "Increase indent": "Incrementar sangr\xeda", + "Inline": "Alineado", + "Insert": "Insertar", + "Insert Template": "Insertar Plantilla", + "Insert accordion": "Insertar acorde\xf3n", + "Insert column after": "Insertar columna despu\xe9s", + "Insert column before": "Insertar columna antes", + "Insert date/time": "Insertar fecha/hora", + "Insert image": "Insertar imagen", + "Insert link (if link plugin activated)": "Insertar enlace (si el complemento de enlace est\xe1 activado)", + "Insert row after": "Insertar fila despu\xe9s", + "Insert row before": "Insertar fila antes", + "Insert table": "Insertar tabla", + "Insert template...": "Insertar plantilla...", + "Insert video": "Insertar v\xeddeo", + "Insert/Edit code sample": "Insertar/editar ejemplo de c\xf3digo", + "Insert/edit image": "Insertar/editar imagen", + "Insert/edit link": "Insertar/editar enlace", + "Insert/edit media": "Insertar/editar medio", + "Insert/edit video": "Insertar/editar v\xeddeo", + "Inset": "Insertar", + "Invalid hex color code: {0}": "Color hexadecimal no v\xe1lido: {0}", + "Invalid input": "Entrada inv\xe1lida", + "Italic": "Cursiva", + "Justify": "Justificar", + "Keyboard Navigation": "Navegaci\xf3n con el teclado", + "Language": "Idioma", + "Learn more...": "M\xe1s informaci\xf3n...", + "Left": "Izquierda", + "Left to right": "Izquierda a derecha", + "Light Blue": "Azul claro", + "Light Gray": "Gris claro", + "Light Green": "Verde claro", + "Light Purple": "Morado claro", + "Light Red": "Rojo claro", + "Light Yellow": "Amarillo claro", + "Line height": "Altura de l\xednea", + "Link list": "Lista de enlaces", + "Link...": "Enlace...", + "List Properties": "Propiedades de Lista", + "List properties...": "Propiedades de Lista...", + "Loading emojis...": "Cargando emojis...", + "Loading...": "Cargando...", + "Lower Alpha": "Letras min\xfasculas", + "Lower Greek": "Griego en min\xfasculas", + "Lower Roman": "Romano en min\xfasculas", + "Match case": "Coincidir may\xfasculas y min\xfasculas", + "Mathematical": "S\xedmbolo matem\xe1tico", + "Media poster (Image URL)": "P\xf3ster de medio (URL de imagen)", + "Media...": "Medios...", + "Medium Blue": "Azul medio", + "Medium Gray": "Gris medio", + "Medium Purple": "P\xfarpura medio", + "Merge cells": "Combinar celdas", + "Middle": "Central", + "Midnight Blue": "Azul medio", + "More...": "M\xe1s...", + "Name": "Nombre", + "Navy Blue": "Azul marino", + "New document": "Nuevo documento", + "New window": "Nueva ventana", + "Next": "Siguiente", + "No": "No", + "No alignment": "Sin alineaci\xf3n", + "No color": "Sin color", + "Nonbreaking space": "Espacio de no separaci\xf3n", + "None": "Ninguno", + "Numbered list": "Lista numerada", + "OR": "O", + "Objects": "Objetos", + "Ok": "Ok", + "Open help dialog": "Abrir di\xe1logo de ayuda", + "Open link": "Abrir enlace", + "Open link in...": "Abrir enlace en...", + "Open popup menu for split buttons": "Abrir men\xfa emergente para botones de separado", + "Orange": "Naranja", + "Outset": "Comienzo", + "Page break": "Salto de p\xe1gina", + "Paragraph": "P\xe1rrafo", + "Paste": "Pegar", + "Paste as text": "Pegar como texto", + "Paste column after": "Pegar columna despu\xe9s", + "Paste column before": "Pegar columna antes", + "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Pegar est\xe1 ahora en modo de texto sin formato. El contenido se pegar\xe1 ahora como texto sin formato hasta que desactive esta opci\xf3n.", + "Paste or type a link": "Pegue o escriba un enlace", + "Paste row after": "Pegar la fila despu\xe9s", + "Paste row before": "Pegar la fila antes", + "Paste your embed code below:": "Pegue el c\xf3digo para insertar a continuaci\xf3n:", + "People": "Personas", + "Plugins": "Complementos", + "Plugins installed ({0}):": "Complementos instalados ({0}):", + "Powered by {0}": "Con tecnolog\xeda de {0}", + "Pre": "Pre", + "Preferences": "Preferencias", + "Preformatted": "Con formato previo", + "Premium plugins:": "Complementos premium:", + "Press the Up and Down arrow keys to resize the editor.": "Pulse las teclas de flecha arriba y abajo para cambiar el tama\xf1o del editor.", + "Press the arrow keys to resize the editor.": "Pulse las teclas de flecha para cambiar el tama\xf1o del editor.", + "Press {0} for help": "Pulse {0} para obtener ayuda", + "Preview": "Previsualizar", + "Previous": "Anterior", + "Print": "Imprimir", + "Print...": "Imprimir...", + "Purple": "P\xfarpura", + "Quotations": "Comillas", + "R": "R", + "Range 0 to 255": "Rango de 0 a 255", + "Red": "Rojo", + "Red component": "Componente rojo", + "Redo": "Redo", + "Remove": "Remover", + "Remove color": "Quitar color", + "Remove link": "Quitar enlace", + "Replace": "Reemplazar", + "Replace all": "Reemplazar todo", + "Replace with": "Reemplazar por", + "Resize": "Redimensionar", + "Restore last draft": "Restaurar el \xfaltimo borrador", + "Reveal or hide additional toolbar items": "Mostrar u ocultar elementos adicionales de la barra de herramientas", + "Rich Text Area": "\xc1rea de Texto Enriquecido", + "Rich Text Area. Press ALT-0 for help.": "\xc1rea de texto enriquecido. Pulse ALT-0 para abrir la ayuda.", + "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\xc1rea de texto enriquecido. Pulse ALT-F9 para el men\xfa. Pulse ALT-F10 para la barra de herramientas. Pulse ALT-0 para la ayuda.", + "Ridge": "Cresta", + "Right": "Derecha", + "Right to left": "Derecha a izquierda", + "Row": "Fila", + "Row clipboard actions": "Acciones del portapapeles de la fila", + "Row group": "Grupo de filas", + "Row header": "Encabezado de fila", + "Row properties": "Propiedades de la fila", + "Row type": "Tipo de fila", + "Rows": "Filas", + "Save": "Guardar", + "Save (if save plugin activated)": "Guardar (si el complemento de guardar est\xe1 activado)", + "Scope": "\xc1mbito", + "Search": "Buscar", + "Select all": "Seleccionar todo", + "Select...": "Seleccionar...", + "Selection": "Selecci\xf3n", + "Shortcut": "Acceso directo", + "Show blocks": "Mostrar bloques", + "Show caption": "Mostrar t\xedtulo", + "Show invisible characters": "Mostrar caracteres invisibles", + "Size": "Tama\xf1o", + "Solid": "S\xf3lido", + "Source": "C\xf3digo fuente", + "Source code": "C\xf3digo fuente", + "Special Character": "Car\xe1cter especial", + "Special character...": "Car\xe1cter especial...", + "Split cell": "Dividir celda", + "Square": "Cuadrado", + "Start list at number": "Iniciar lista con un n\xfamero", + "Strikethrough": "Tachado", + "Style": "Estilo", + "Subscript": "Sub\xedndice", + "Superscript": "Super\xedndice", + "Switch to or from fullscreen mode": "Activar o desactivar modo pantalla completa", + "Symbols": "S\xedmbolos", + "System Font": "Fuente de sistema", + "Table": "Tabla", + "Table caption": "T\xedtulo de la tabla", + "Table properties": "Propiedades de la tabla", + "Table styles": "Estilos de tabla", + "Template": "Plantilla", + "Templates": "Plantillas", + "Text": "Texto", + "Text color": "Color del texto", + "Text color {0}": "Color del texto {0}", + "Text to display": "Texto que mostrar", + "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "La URL que ha introducido parece ser una direcci\xf3n de correo electr\xf3nico. \xbfQuiere a\xf1adir el prefijo necesario mailto:?", + "The URL you entered seems to be an external link. Do you want to add the required http:// prefix?": "La URL que ha introducido parece ser un enlace externo. \xbfQuiere a\xf1adir el prefijo necesario http://?", + "The URL you entered seems to be an external link. Do you want to add the required https:// prefix?": "La URL que ha introducido parece ser un enlace externo. \xbfQuiere a\xf1adir el prefijo necesario https://?", + "Title": "T\xedtulo", + "To open the popup, press Shift+Enter": "Para abrir el elemento emergente, pulse May\xfas+Intro", + "Toggle accordion": "Alternar acorde\xf3n", + "Tools": "Herramientas", + "Top": "Superior", + "Travel and Places": "Viajes y lugares", + "Turquoise": "Turquesa", + "Underline": "Subrayado", + "Undo": "Rehacer", + "Upload": "Cargar", + "Uploading image": "Subiendo imagen", + "Upper Alpha": "Letras may\xfasculas", + "Upper Roman": "Romano en may\xfasculas", + "Url": "URL", + "User Defined": "Definido por el usuario", + "Valid": "V\xe1lido", + "Version": "Versi\xf3n", + "Vertical align": "Alineaci\xf3n vertical", + "Vertical space": "Espacio vertical", + "View": "Ver", + "Visual aids": "Ayudas visuales", + "Warn": "Advertencia", + "White": "Blanco", + "Width": "Ancho", + "Word count": "Contar palabras", + "Words": "Palabras", + "Words: {0}": "Palabras: {0}", + "Yellow": "Amarillo", + "Yes": "S\xed", + "You are using {0}": "Est\xe1 usando {0}", + "You have unsaved changes are you sure you want to navigate away?": "Tiene cambios sin guardar. \xbfEst\xe1 seguro de que quiere salir?", + "Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.": "Su navegador no es compatible con el acceso directo al portapapeles. Use las teclas Crtl+X/C/V de su teclado.", + "alignment": "alineaci\xf3n", + "austral sign": "signo de austral", + "cedi sign": "signo de cedi", + "colon sign": "signo de dos puntos", + "cruzeiro sign": "signo de cruceiro", + "currency sign": "signo de divisa", + "dollar sign": "signo de d\xf3lar", + "dong sign": "signo de dong", + "drachma sign": "signo de dracma", + "euro-currency sign": "signo de euro", + "example": "ejemplo", + "formatting": "formato", + "french franc sign": "signo de franco franc\xe9s", + "german penny symbol": "signo de penique alem\xe1n", + "guarani sign": "signo de guaran\xed", + "history": "historial", + "hryvnia sign": "signo de grivna", + "indentation": "sangr\xeda", + "indian rupee sign": "signo de rupia india", + "kip sign": "signo de kip", + "lira sign": "signo de lira", + "livre tournois sign": "signo de libra tornesa", + "manat sign": "signo de manat", + "mill sign": "signo de mill", + "naira sign": "signo de naira", + "new sheqel sign": "signo de nuevo s\xe9quel", + "nordic mark sign": "signo de marco n\xf3rdico", + "peseta sign": "signo de peseta", + "peso sign": "signo de peso", + "ruble sign": "signo de rublo", + "rupee sign": "signo de rupia", + "spesmilo sign": "signo de spesmilo", + "styles": "estilos", + "tenge sign": "signo de tenge", + "tugrik sign": "signo de tugrik", + "turkish lira sign": "signo de lira turca", + "won sign": "signo de won", + "yen character": "car\xe1cter de yen", + "yen/yuan character variant one": "Variante uno de car\xe1cter de yen/yuan", + "yuan character": "car\xe1cter de yuan", + "yuan character, in hong kong and taiwan": "car\xe1cter de yuan en Hong Kong y Taiw\xe1n", + "{0} characters": "{0} caracteres", + "{0} columns, {1} rows": "{0} columnas, {1} filas", + "{0} words": "{0} palabras" +}); \ No newline at end of file