Texto y herramientas cotidianas · Text Toolkit
Cómo los generadores de slugs pliegan los acentos: explicación de la descomposición NFD
· Cómo funciona
URL-babosas conversión de texto javascript
Explica cómo la descomposición canónica Unicode separa una letra base de su acento, por lo que 'Café Crème' se convierte en café-creme en lugar de café-cr-me, y dónde la descomposición por sí sola no es suficiente.
caf-cr-me: el error común que destroza los nombres y por qué sucede
Una rutina slug débil puede convertir `Café Crème` en `caf-cr-me` cuando elimina todos los caracteres fuera de un rango ASCII estrecho. Los acentos visibles desaparecen, pero las letras base subyacentes desaparecen con ellos, dejando una URL que ya no se parece al título del artículo. Ese daño es especialmente obvio en nombres, lugares y categorías editoriales repetidas.
ToolAcre toma una ruta diferente en `slugify`. Primero normaliza la entrada y luego elimina un rango específico de marcas de combinación conservando las letras resultantes. Sólo después pone en minúsculas el texto y los separadores de forma. El orden es la razón por la que `Café Crème` se convierte en `cafe-creme` en lugar de un fragmento al que le faltan vocales.
Un carácter, dos representaciones: cómo é puede ser un único punto de código o una e seguida de un acento agudo combinado
El texto que parece idéntico puede tener diferentes secuencias internas. Un `é` puede llegar como un carácter precompuesto o como un `e` normal seguido de una marca aguda combinada. Por lo general, un editor de contenido no puede ver qué representación proviene de un CMS, un documento o un portapapeles; sin embargo, un filtro carácter por carácter puede tratar las dos entradas de manera diferente.
Esa diferencia oculta es importante cuando una regla de reemplazo reconoce una forma pero no la otra. ToolAcre evita escribir un reemplazo por separado para cada ortografía precompuesta. La normalización le da al canal de slug una forma intermedia más consistente, por lo que los acentos admitidos se pueden eliminar en un paso posterior mientras las letras base permanecen disponibles para la URL.
Formulario de normalización D: cómo la descomposición canónica reescribe cada letra acentuada en una letra base más marcas combinadas
La implementación llama a `.normalize("NFD")` antes de cualquier trabajo de minúsculas o separadores. Para los caracteres que tienen una descomposición canónica manejada por el tiempo de ejecución de JavaScript, esto produce un carácter base seguido de una o más marcas de combinación. La función no mantiene su propio catálogo de ortografía en francés o español y no inspecciona las palabras semánticamente.
El esquema dice que NFD reescribe cada letra acentuada, pero la fuente respalda una afirmación más limitada. La descomposición depende del carácter y la siguiente expresión de eliminación cubre puntos de código desde `U+0300` hasta `U+036F`. Por lo tanto, el artículo debería describir el comportamiento demostrado por el código en lugar de prometer la eliminación universal del acento para cada escritura o marca.
NFD descompone los caracteres admitidos; la implementación no promete que cada letra acentuada se separe
Después de la normalización, `slugify` aplica `/[̀-ͯ]/g` y reemplaza cada marca coincidente con una cadena vacía. En la forma descompuesta de `é`, `e` no coincide con ese rango, mientras que la marca aguda sí. Al eliminar solo la marca, se deja la letra base legible que el método anterior de solo ASCII habría descartado.
Esto es un plegado con acento, no una pasada de limpieza de texto general. La expresión regular se coloca deliberadamente antes de la regla para los separadores, lo que permite que la letra base participe como letra más adelante. Si la eliminación de la marca se produjo después de que los tramos sin soporte ya se hubieran colapsado, una marca descompuesta podría influir en la ubicación del separador y producir un trozo menos fiel.
El resto del proceso de slug: minúsculas, colapso de ejecuciones no alfanuméricas en guiones simples, recorte de separadores iniciales y finales, eliminación de emojis.
La canalización restante pone en minúsculas el texto normalizado y reemplaza cada ejecución que no es una letra o número Unicode con el separador configurado, que de forma predeterminada es un guión. Una segunda expresión recorta los separadores repetidos de ambos extremos. Por lo tanto, los emoji y la puntuación desaparecen como contenido, mientras que los caracteres adyacentes no compatibles se convierten en un límite en lugar de varios guiones.
El esquema describe un colapso no alfanumérico, pero el patrón real utiliza escapes de propiedad Unicode, no un alfabeto solo ASCII. Las letras de escrituras no latinas pueden permanecer en el slug después de escribirlas en minúsculas. La configuración confirma que no hay ningún paso de transliteración: los símbolos se eliminan, pero las letras retenidas no se reescriben automáticamente como una ortografía latina aproximada.
El resto de este canal de slug mantiene letras y dígitos de cualquier script mientras reemplaza otras ejecuciones con el separador elegido.
Siga a `Café Crème & Co. — Été 2024!` durante la implementación. NFD separa los caracteres acentuados admitidos en letras base y marcas. La expresión de eliminación de marcas deja `Cafe Creme & Co. — Ete 2024!` y las minúsculas producen `cafe creme & co. — ete 2024!` antes de que se procese la puntuación.
Las ejecuciones que no son letras ni números se convierten en guiones, lo que produce la secuencia significativa `cafe-creme-co-ete-2024` después de recortar los separadores iniciales y finales. El signo comercial, el punto, el guión y el signo de exclamación no reciben nombres hablados ni sustituciones personalizadas. Sólo sirven como límites entre las series de letras y números en esta conversión.
Lo que la descomposición no puede hacer: letras como ø, ł, ß y æ no tienen acento que quitar y necesitan una tabla de transliteración
La descomposición no es transliteración. Caracteres como `ø`, `ł`, `ß` y `æ` siguen siendo letras Unicode después de esta canalización, por lo que el filtro basado en propiedades los mantiene en lugar de consultar una tabla para `o`, `l`, `ss` o `ae`. Afirmar que los usuarios necesitan una tabla de transliteración puede ser un consejo de diseño útil en otros lugares, pero dicha tabla no existe en esta herramienta.
Esa distinción también explica por qué el resultado puede ser un slug de proyecto válido sin ser solo ASCII. Los editores cuyo sistema de publicación requiera ASCII deben verificar esa restricción del sistema por separado antes de usar la salida. ToolAcre promete plegado acentuado para el rango de descomposición y marca implementado; no promete ortografía adaptada al idioma, conversión reversible o salida en latín para cada título.
Los caracteres sin marcas removibles siguen siendo letras; esta herramienta no tiene tabla de transliteración
La conclusión confiable es de procedimiento: normalice primero, elimine las marcas de combinación admitidas, minúsculas, contraiga los tramos no admitidos y recorte los separadores. Cada etapa tiene una responsabilidad visible y su secuencia preserva las letras base antes de que se descarte la puntuación. Eso es suficiente para evitar el error común `caf-cr-me` sin inventar reglas de lenguaje que la fuente no contiene.
Pegue el título trabajado en el convertidor de mayúsculas y minúsculas y seleccione la opción slug para inspeccionar el resultado final en el mismo cuadro de texto. Si un título incluye letras fuera de los casos de acento demostrados, revise el resultado en la plataforma de destino. El conversor proporciona una transformación predecible del lado del navegador, mientras que el editor sigue siendo responsable de las convenciones de ruta.