martes, 9 de agosto de 2011

Tip: Elimina los diccionarios que no ocupas en Firefox 5.0

No tengo idea si es un problema específico de Arch Linux, pero es bien molesto encontrarse con un menú como este cuando hacen click derecho y quieren cambiar el lenguaje del corrector ortográfico:
Tristemente -no sé si por mi ignorancia o porque realmente no existe- no logré dar nunca con una solución «limpia» que me permitiera controlar que idiomas aparecerían, así que me puse a investigar.

El problema sencillamente es que en el directorio donde se almacenan los diccionarios (/usr/lib/firefox-5.0/dictionaries) está lleno de enlaces simbólicos:
$ ls
en_AG.aff en_CA.dic en_IN.aff en_PH.dic es_AR.aff es_CU.dic es_MX.aff es_PY.dic hyph_es_CR.dic hyph_es_PR.dic en_AG.dic en_DK.aff en_IN.dic en_SG.aff es_AR.dic es_DO.aff es_MX.dic es_SV.aff hyph_es_CU.dic hyph_es_PY.dic en_AU.aff en_DK.dic en_JM.aff en_SG.dic es_BO.aff es_DO.dic es_NI.aff es_SV.dic hyph_es_DO.dic hyph_es_SV.dic en_AU.dic en_GB.aff en_JM.dic en_TT.aff es_BO.dic es_EC.aff es_NI.dic es_UY.aff hyph_es_EC.dic hyph_es_UY.dic en_BS.aff en_GB.dic en_NA.aff en_TT.dic es_CL.aff es_EC.dic es_PA.aff es_UY.dic hyph_es_ES.dic hyph_es_VE.dic en_BS.dic en_GH.aff en_NA.dic en_US.aff es_CL.dic es_ES.aff es_PA.dic es_VE.aff hyph_es_GT.dic en_BW.aff en_GH.dic en_NG.aff en_US.dic es_CO.aff es_ES.dic es_PE.aff es_VE.dic hyph_es_HN.dic en_BW.dic en_HK.aff en_NG.dic en_ZA.aff es_CO.dic es_GT.aff es_PE.dic hyph_es_AR.dic hyph_es_MX.dic en_BZ.aff en_HK.dic en_NZ.aff en_ZA.dic es_CR.aff es_GT.dic es_PR.aff hyph_es_BO.dic hyph_es_NI.dic en_BZ.dic en_IE.aff en_NZ.dic en_ZW.aff es_CR.dic es_HN.aff es_PR.dic hyph_es_CL.dic hyph_es_PA.dic en_CA.aff en_IE.dic en_PH.aff en_ZW.dic es_CU.aff es_HN.dic es_PY.aff hyph_es_CO.dic hyph_es_PE.dic

Es obvio que no necesito tantas variaciones (¿para qué querría la variación de Sudáfrica?), así que la tarea consiste en eliminar los que no necesitemos; en mi caso quería quedarme con el español de Chile (es_CL) y el inglés de Gringolandia (en_US). Podríamos eliminarlos a mano… pero sería muy fome :P, así que aprovecho la ocasión para contarles otro método que consiste en “eliminar todos los archivos excepto…”, situación bastante frecuente que enfrentamos sin una buena solución. Por desgracia hay que echar mano a las arcanas artes de las expresiones regulares (regex para los amigos).
Lo primero, es asegurarnos si la opción extglob está desactivada (por defecto):
$ shopt extglob
extglob off
$ shopt -s extglob
$ shopt extglob
extglob on

Luego procederemos al comando mágico:
$ rm !(*es_CL*|*en_US*)
$ ls
en_US.aff en_US.dic es_CL.aff es_CL.dic hyph_es_CL.dic

Desmenuzando un poco el comando podemos ver que contiene 5 partes:
! excepto
() grupo
* 0 (cero) o más apariciones
es_CL patrón
| ó
O sea, borra todo excepto los archivos que contengan es_CL o en_US. Por eso sobrevivió al borrado el archivo hyph_es_CL.dic.
Por supuesto es posible depurar mucho más la expresión regular, pero honestamente es tema demasiado denso y por lo mismo, increíblemente poderoso. Creo que este artículo es un buen comienzo (pero ni siquiera introducción) para al menos comprender en que consisten las expresiones regulares. Si acaso te picó el bichito de la curiosidad, la web está llena de recursos para estudiar más del tema.
Honestamente no tengo idea que otras implicancias pueda tener mantener esa opción activada, pero por seguridad puedes desactivarla con shopt -u extglob.

Fuente:http://www.glatelier.org/2011/08/tip-elimina-los-diccionarios-que-no-ocupas-en-firefox-5-0/

No hay comentarios:

Publicar un comentario