En la entrada del pasado 30 de mayo hice alguna esquiva referencia a mi implicación en un proyecto de plataforma de blogs basada en WordPress MU. Sin prisas, pero sin pausas (hemos tomado buena nota de las observaciones de Luis Barriocanal, a quien deseo expresar mi reconocimiento por sus consejos y por su Planeta Educativo, víctima de prácticas nada edificantes) la aventura sigue adelante, sorteando numerosos escollos y atascos. De unos y otros vamos saliendo gracias a una mezcla de técnicas y habilidades en la que intervienen, en proporciones nada fáciles de precisar, la experiencia con WordPress, las habilidades informáticas y, por supuesto, la cabezonería.
En la citada entrada señalaba los quebraderos de cabeza que nos dio el editor visual de WordPress MU, basado en TinyMCE, cuyo módulo de corrección ortográfica en castellano no conseguimos que funcionara satisfactoriamente. Pues bien, me alegra poder decir que esos problemas se han visto superados gracias al talento de Miguel Ríos Martín, mi jefe en la Sección de Nuevas Tecnologías del Departamento de Educación del Gobierno de Navarra.
Miguel, que es un programador avezado, con amplia experiencia en PHP, AJAX y Java, identificó enseguida la causa del trastorno: cuando el corrector halla una palabra mal escrita, solicita la lista de alternativas. Si éstas no contienen tildes o eñes, todo va bien; en cambio, si en la lista se encuentran dichos caracteres, el corrector se atasca.
Hasta aquí, el planteamiento del caso. Cedo la palabra a Miguel para que enuncie la solución:
Para arreglar el problema del diccionario hay que realizar un par de modificaciones en el fichero wp-includes/js/tinymce/plugins/spellchecker/classes/TinyPspell.class.php.
El problema surge cuando el array de palabras sugeridas contiene caracteres con acento o eñes y es debido a que AJAX (JavaScript) trabaja con UTF-8 y no con ISO-8859-1. La función PHP que genera las sugerencias sobre una determinada palabra es
pspell_suggest(diccionario, palabra)y devuelve un array codificado en ISO-8859-1 (supongo que porque el servidor utiliza esa codificación, o al menos el PHP la detecta). Usando la función PHP
utf8_encode(cadena)podemos convertirla antes de que JavaScript la reciba. Es decir, la línea ~57:
return pspell_suggest($this->;plink, $word);la cambiamos por:
return array_map("utf8_encode", pspell_suggest($this->;plink, $word));La función PHP
array_map(función, unarray)aplica la función a cada elemento del array unarray. Con esto la cadena de sugerencias se recibe correctamente.
Pero la cosa no queda ahí, porque resulta que cuando se pide chequear la ortografía siempre selecciona las palabras con acentos o eñes. La razón es que JavaScript manda al servidor esas palabra y como llegan codificadas con UTF-8 para ser chequeadas y resulta que PHP usa ISO-8859-1, las considera erróneas, aunque estén bien escritas. Por ello las sigue marcando como para revisar. ¿Cómo se arregla? Pues haciendo el proceso inverso. En la línea 44 aparece, en la función
checkWordsif(!pspell_check($this->;plink, trim($word)))que cambiamos por:
if(!pspell_check($this->;plink, trim(utf8_decode($word)))De este modo decodificamos la palabra antes de dársela al PHP, que chequea de forma que la revisión sale perfecta si la palabra estaba bien escrita.
Con el permiso del jefe, publico en La Bitácora del Tigre este truco, que probablemente venga bien a más de un esforzado practicante de esa hidra de mil cabezas que es WPMU.
Addenda del 9 de agosto de 2007
Después de actualizar nuestro WordPress MU a la versión 1.2.3, hemos constatado que el módulo spellchecker no funciona, ni siquiera después de aplicar este truco. La solución, al menos por el momento, ha sido la que se propone en una de las entradas de los foros de WPMU: cambiar el nombre del módulo spellchecker, subir el antiguo módulo (para esto sirven las copias de seguridad), y listo.
Etiquetas: correctores ortográficos, plataformas de blogs, PNTE, TinyMCE, trucos para WordPress MU
- El futuro de la corrección ortográfica y gramatical en los blogs 3
- El futuro de la corrección ortográfica y gramatical en los blogs 2
- El futuro de la corrección ortográfica y gramatical en los blogs 1
- Multiblog, plataforma de blogs del PNTE
- Más recursos de escritura y Feliz Navidad para todos
- Ortografía y expresión escrita en los blogs educativos
- Moodle en el PNTE
- Los chandríos de los correctores ortográficos
- WordPress en Educastur
-
Hola Eduardo.
Pregunto y sólo pregunto, por que no conozco muy bien lo que estáis haciendo: ¿ no sería más fácil que el servidor trabajara en utf8 que es el estándar?.
No sé de que servidor estás hablando pero si es un apache, me extraña que use por defecto iso-8859-1, lo lógico sería el utf8. En las versiones viejas de apache si que solía pasar pero a partir de la 2 no.
Como prueba cambia el .htaccess con lo siguiente:
AddDefaultCharset On
AddDefaultCharset utf8Igual lo tenéis con iso-8859-1.
Bueno ya me contarás.
Saludos. -
Eduardo php utilza por defecto iso-8859-1, lo puedes cambiar a utf8 en php.ini con la directiva:
default-charset utf8
Evidentemente esta solución sólo sirve si tu gestionas el servidor.
Saludos





7 comentarios
Fuente RSS de comentarios para esta entrada
Enlace de trackback: http://www.labitacoradeltigre.com/2007/06/08/sobre-el-problema-del-corrector-ortografico-de-wpmu/trackback/