Por una serie de cambios que a continuación referiré, pero, no sólo por ellos, sino por todos los que se han acumulado desde la publicación de la versión 1.0 estable de Gesbit, digo, me he decidido a publicar hoy la versión 1.1 Pink Floyd estable, así como la siguiente versión 1.2 Dire Straits "beta". Efectivamente, dedico la versión estable (hasta ahora "beta") a Pink Floyd, y a Dire Straits la versión "beta" actual y la siguiente versión estable del gestor de bitácoras Gesbit. Son dos de mis grupos preferidos, que, me han acompañado y aun me acompañarán en el futuro, desarrollando Gesbit, o haciendo cualquier otra cosa que me permita escuchar su buena música. Mantengo la línea, además, de dedicar las distintas versiones de Gesbit a músicos y compositores.
Ahora vamos con lo bueno: los cambios, los últimos cambios llevados a cabo, que, han propiciado el salto de versión y que me alegran especialmente, porque tenía ganas hace tiempo de llevarlos a cabo, pero, no me he decidido hasta hoy, que, según he despertado, ha sido pensar en Gesbit y en dichos cambios, y verlos como algo posible y hacedero. Así que me he puesto a ellos. Y aquí están. Hacía ya tiempo que estaba viendo un agravio comparativo (siempre he querido decir esto) entre los temas y plugins para Gesbit. ¿Qué ocurría? Pues, estoy hablando de que los plugins para Gesbit no necesitan cargar su "dominio de texto" para ser traducidos, puesto que de esto se encarga el propio Gesbit, mientras que los temas sí tenían que encargarse de esta tarea.
Para ello contaban con lo necesario, es decir, el archivo "functions.php" (tal vez lo renombre algún día de estos), donde los temas podían implementar funciones útiles para su traducción, de modo que no usaran las funciones "para traducir" conque cuenta Gesbit (ya hablaremos luego), que harían que tuviesen que indicar su "dominio de texto" ("textdomain") a cada paso. De modo que los temas implementaban dichas funciones "auxiliares", y también, en el propio archivo "functions.php" se habían de encargar de establecer el "textdomain" correspondiente, de modo que no hubiera confusión entre distintos "textdomains" (el propio de Gesbit y los de los plugins que lo necesitasen). Ahora bien, ¿por qué no se encargaba Gesbit de cargar el "textdomain" de los temas y sí lo hacía para los plugins?
En realidad no estoy muy seguro. No recuerdo exactamente porqué razón, empero, sí que he sabido casi desde un principio que sería posible para Gesbit cargar el "textdomain" de los temas, de una forma similar a como lo hace con los plugins. Era cuestión de ponerse a ello, como he podido comprobar hoy. Ahora, los temas no necesitan cargar expresamente su "textdomain", Gesbit se encargará de ello, si es que el tema está preparado para su traducción (cuenta con el correspondiente archivo "PO"). Pero, precisamente por esto, ya no son necesarias las funciones auxiliares relacionadas del archivo "functions.php" de los temas, sino que he añadido a la clase "G" (que está para los temas y plugins, básicamente) los métodos necesarios para llevar a cabo la traducción de las cadenas que se utilicen en un determinado tema.
Con todo y con eso, ya puesto, no me he querido quedar ahí. Gesbit usa funciones auxiliares (implementadas en el archivo "gb-i18naid.php") para tratar con la clase "I18n". Son funciones de "nombre corto", porque, se usan profusamente a lo largo de todo el código fuente. Estas funciones sirven para traducir cadenas, para retornar cadenas traducidas y para imprimirlas, directamente. Estoy hablando de las funciones "_r()", "_e()", "_rp()" y "_ep()". Pues bien, el cambio en este sentido ha ido por acortar el identificador, prescindiendo de los "guiones bajos", de modo que ahora queden en "r()", "e()", etc. Ahora bien, había un pequeño lío con los identificadores de estas funciones en relación con temas y plugins, y es que cada uno de estos elementos las nombraba de forma distinta.
Esto se vió bien en su momento porque para trabajar con archivos "PO", hay que especificar la serie de identificadores, correspondientes a funciones (o métodos) que contienen de algún modo las cadenas a traducir: en su momento se comprobó que si se usaban los mismos identificadores para Gesbit, temas y plugins, a la hora de "actualizar desde las fuentes" el archivo "PO" de turno, las cadenas podían entremezclarse, es decir, el archivo "PO" de un tema, por ejemplo, tomaría como propias las cadenas que en realidad pertenecen al "corazón" de Gesbit. Este es un problema real, que, efectivamente, existe, pero, la solución que se dio en su momento: usar diferentes identificadores, era poco elegante, confusa, solucionaba un problema poniendo en medio otros.
Otros problemas a un nivel mucho más bajo que los archivos "PO", porque una cosa es "tener cuidado" cuando se actualiza un archivo "PO", y otra marcar a fuego distintos identificadores en el propio código fuente de Gesbit, plugins y temas incluidos. ¿Adónde quiero llegar? Pues a que ahora se utilizan siempre los mismos identificadores, esto es, "r", "e", "rp" y "ep", tanto en Gesbit, como en temas y plugins, sólo que estos se encuentran separados por su ámbito, lo que además ayuda a clarificar bastante las cosas. Gesbit usará la función "r()", un tema usará el método "r()" de la clase "G", y un plugin usará un método propio (heredado de la clase "GbPlugin) también de nombre "r()". Habrá que prestar atención a la hora de "actualizar desde las fuentes" los archivos "PO", pero, considero que es mucho mejor esto que la solución (provocadora de confusión) que tomé en un principio ante este "problema".
En definitiva, hoy es otro de esos días en que estoy contento del desarrollo de Gesbit, porque, cuando me percato de este tipo de cosas, sólo caben dos salidas: dejar las cosas como están (porque al fin y al cabo funcionan) o llevar a cabo los cambios necesarios, y tirar adelante con una mejor solución, que para eso se hacen los cambios. Los plugins de Gesbit más o menos siguen como antes (he actualizado todos ellos, a la vez que el propio Gesbit y las bitácoras en que lo uso, y todo ha ido rápido, a pedir de boca, muy sencillo, quizás porque tengo a Gesbit en la cabeza desde hace meses), salvo que en lugar de usar sus métodos "_r" y "_e", por ejemplo, usan los nuevos métodos "r" y "e". Para los temas (los tres que existen actualmente y que yo mismo desarrollo) el asunto pinta mejor: ya no necesitan cargar su "textdomain", ni siquiera preocuparse de ello, sino que es Gesbit quien lo hace cuando es menester.
Esto simplifica la traducción de temas, puesto que para que un tema pueda ser traducido el desarrollador no necesita sino escribir algo como "G::r('Cadena')", en lugar de sólo "cadena" (literalmente). A partir de ahí, podrá incorporarse al tema un archivo "PO", y este ser traducido a distintos idiomas, sin que sea menester por parte del desarrollador del tema absolutamente nada más. Así no hay muchas excusas para hacer un tema "intraducible", ¿no te parece? No hay que cargar "textdomains", ni preocuparse de preparar "funciones auxiliares". Sólamente usar el método "G::r()" cada vez que queremos retornar una cadena traducida, o bien "G::e()" cada vez que queramos imprimirla, sin más. Y, en fin, estos y algunos otros cambios menores, además de todos los cambios llevados a cabo desde la publicación de la versión 1.0, han sido los que me han animado a publicar la actual versión 1.1 estable de Gesbit, así como la correspondiente "beta".
Ya sabes que puedes descargar Gesbit desde su sitio web. Puedes descargar temas y plugins desde su wiki (que algún día tendré que revisar, aunque ya lo he hecho respecto de estos últimos cambios, y está al día, pero, quisiera hacer cambios y completarla en lo posible una año de estos...) y puedes, por último, probar Gesbit "en línea" en su demostración. Me gustaría que te fuera de utilidad y lo disfrutases en lo posible. Eso es todo. ¡Hasta la próxima! ;-)
Para celebrar que Pink Floyd siempre ha sido mi grupo favorito te dejo este enlace: pabernosmatao.com/blog/ y si encuentras en él algo que te sirva, todo tuyo.
Jau!
Qué bonito gesto Nailuj, ¡y qué buen trabajo! Ahora mismo he descargado el tema, y pienso echarle un vistazo mucho más de cerca. Si te parece bien, incluso podría ser un buen sustituto para el tema "tradition" que se incluye con Gesbit (que yo no he cuidado demasiado, para qué nos vamos a engañar) de modo que tu "gbkubrick" fuera el tema alternativo en Gesbit. ¿Eh?
Sea como sea muchas gracias Nailuj, ¡y enhorabuena! :)
Bueno, yo no quitaría el tradition, por lo menos a mi me gusta por lo sencillo que es. De hecho lo he copiado vilmente para el gestor de contenidos que sabes que estoy haciendo, e incluso lo he puesto como tema por omisión. Bueno, y el gbkubrick también lo tengo, pues lo hice al mismo tiempo para gesbit y para el mio.
Un saludo!
¡Ya está aquí Kubrick! ;)