La idea (propuesta por Olivier) es instalar, por el método de los plugins, un nuevo atajo en la función typo(). Este atajo permitirá obtener una palabra extraída de un fichero de traducción.
El plugin se llamará toutmulti.
La sintaxis elegida es la de los bloques de traducción tal como se los utiliza en los esqueletos: <:toto:> significará «buscar la palabra cuyo código es toto, e indicarlo en la lengua corriente». Así <:date_mois_9:> se indicará « Septiembre » si se está en un artículo en español, y « Wrzesień » si es un artículo en polaco.
Para programar un plugin capaz de administrar este nuevo recurso, se va a comenzar por duplicar el plugin «ancres» que se encuentra en el directorio plugins/ancres/. Se vuelve a copiar pues este directorio bajo el nombre plugins/toutmulti/.
Se compone de un único fichero, plugins/toutmulti/version.php, que se editará simplemente modificando la expresión racional (regexp) de lo que se busca, así como la línea que efectúa la sustitución.
He aquí un pedazo significativo de código extraído del plugin « ancres » :
function ancre($texte) {
$regexp = "|\[#?([^][]*)<-\]|";
if (preg_match_all($regexp, $texte, $matches,
PREG_SET_ORDER))
foreach ($matches as $regs)
$texte = str_replace($regs[0],
'<a name="'.entites_html($regs[1]).'"></a>',
$texte);
return $texte;
}y aquí la función « toutmulti » :
function toutmulti($texte) {
$regexp = "|<:([^>]*):>|";
if (preg_match_all($regexp, $texte, $matches,
PREG_SET_ORDER))
foreach ($matches as $regs)
$texte = str_replace($regs[0],
_T('spip/ecrire/public:'.$regs[1]),
$texte);
return $texte;
}Hay que señalar que este plugin es tan simple que se decidió permitir a SPIP cargar a cada llamado de página la función que efectúa la sustitución
(function toutmulti()) , incluso cuando no se llama a la función (página ya en caché, por ejemplo). Es preferible, en términos de resultados, definir la función en un fichero secundario. La última línea del plugin (que se encuentra aquí comentada) sirve para precisar qué fichero llamar, en este caso, para encargar esta función solamente en caso de necesidad..
Queda por explicar la primera línea:
$GLOBALS['spip_pipeline']['pre_typo'] .= '|toutmulti';Ésta indica que se quiere hacer esta sustitución en el punto de entrada pre_typo, que es invocado antes del tratamiento tipográfico (y es mejor, ya que el carácter « : » del recurso se activa por el tratamiento tipográfico normal).
* * *
Para instalar el plugin, es suficiente con colocar la carpeta toutmulti dentro de plugins/. Es necesario a continuación activar el plugin; SPIP no ofrece aún interfaz gráfica para eso: es necesario añadir, en ecrire/mes_options.php3, la línea siguiente :
<?php
$plugins[] = 'toutmulti';
?>Eso es todo!
Espero que este pequeño tutorial les de el deseo de dar una vuelta por el Spip Zone y su directorio de plugins que también está esperando los tuyos!
Aquí, para terminar, el código completo:



Comentar este artículo