Problema de codificación de caracteres especiales en consejos de incorporación

Ver el botón:

No me sorprendería si el problema estuviera presente en todas las descripciones emergentes.

6 Me gusta

Me encontré con el mismo problema.

Un vistazo rápido a Discourse muestra que escape se usa en la etiqueta del botón, el título y el contenido.

¿Qué hace escape?

En un contexto de texto, estos parecen ser todos los caracteres válidos para usar.

Me pregunto, ¿es necesario aquí?
Creo que el HTML que no está marcado con htmlSafe será escapado por la plantilla? :thinking:

2 Me gusta

Una solución podría ser reemplazar el apóstrofo de programación por el apóstrofo francés real.

Usar:
No: '

Este símbolo no existe en los teclados QWERTY de EE. UU. y tampoco existe en los AZERTY antiguos, pero sí existe en los teclados franceses estándar AFNOR (Association française de normalisation) nuevos, tanto en AZERTY nuevo como en BÉPO.

No solucionaría el problema más profundo de que el apóstrofo programático no se escapa correctamente, pero el apóstrofo francés real es el correcto para usar y debería ser el que la mayoría de los hablantes de francés utilicen al escribir una vez que la mayoría de ellos estén en teclados estándar.

El antiguo AZERTY nunca fue estandarizado por ningún organismo oficial.

1 me gusta

Tengo el mismo problema en Discourse 3.4.1…
No puedo reemplazar todas las ' en el sitio web. ¿Tienes alguna sugerencia?

Acabo de solucionar este problema con algo de código personalizado, reemplaza ' por en I18n.translations

withPluginApi("0.8.18", (api) => {
    const locale = I18n.currentLocale();

    function replaceSingleQuotes(obj) {
        if (typeof obj === 'string') {
            // Divide la cadena en etiquetas HTML y partes que no son etiquetas
            return obj.split(/(<[^>]+>)/g).map(segment => {
                // Si el segmento es una etiqueta HTML, no reemplaces nada
                if (segment.startsWith('<') && segment.endsWith('>')) {
                    return segment;
                } else {
                    // Reemplaza las comillas simples solo en partes que no son HTML
                    return segment.replace(/'/g, '’');
                }
            }).join('');
        } else if (typeof obj === 'object' && obj !== null) {
            // Procesa recursivamente las propiedades del objeto
            for (const key in obj) {
                obj[key] = replaceSingleQuotes(obj[key]);
            }
        }
        return obj;
    }

    if (I18n.translations[locale].js) {
        I18n.translations[locale].js = replaceSingleQuotes(I18n.translations[locale].js);
    }
});

1 me gusta

Esto debería estar solucionado ahora tras este commit: FIX: user tips in languages with apostrophes by pmusaraj · Pull Request #34118 · discourse/discourse · GitHub

¡Gracias por el informe!

4 Me gusta

Este tema se cerró automáticamente después de 3 días. Ya no se permiten nuevas respuestas.