Archivo

Entradas Etiquetadas ‘inflector’

Castellaniza los nombre de tus modelos y controllers en CakePHP

Lunes, 2 de Junio de 2008

Actualización: Por alguna razón el nuevo cake se niega a encontrar el singular de las palabras terminadas en “as”, he actualizado las reglas de inflexión para corregir este problema.

¿Alguna vez haz necesitado que los nombres de los modelos que creas en cake estén en español ? ¿Haz sufrido (como yo) los azares de hacer bake de nombres de tablas en español con una “a” al final? La solución es muy simple…. pero primero, algo de historia.

Algo increíble de CakePHP es que tiene la inteligencia necesaria para deducir sinónimos y plurales de palabras, lo cual es muy utlizado dentro de las convenciones de este framework para darle semántica a los nombres de archivo que se han de crear para cada capa de las aplicaciones.

Como podrás recordar, las convenciones dictan que los nombres de tabla deben estar en plural (cosa que a los purista de SQL no les agrada, puesto que una tabla representa una entidad, no un conjunto de ellas), los nombres de modelo en plural, que a veces representan el conjunto y a veces la entidad; finalmente los controladores, que deben ser nombrados igual que las tablas, pues representan acciones sobre el conjunto de datos.

El lado negativo de estas convenciones, es que, como fueron diseñadas para el idioma inglés, no toman en cuenta las inflexiones del lenguaje castellano, que si bien no son más complicadas que la de la lengua anglosajona, son un poco diferentes.

Una de las reglas que difieren entre estas dos lenguas, y que más me mortifican al momento de autogenerar código con CakePHP, son las palabras terminadas por “a”, puesto que el plural en inglés tiene terminación “um”, mientras que en la hermosa lengua castellana, simplemente se le agrega una “s” al final.

Pues bien, los desarrolladores de mi framework favorito sabían que el inglés no es el único idioma, así que dejaron la infraestructura armada para agregar o quitar reglas de inflexión muy sencillamente. A continuación les dejo mi archivo inflections.php, que debe ser depositado en la carpeta app/configs de tu aplicación cake, para ser utilizado. Si se les ocurren nuevas reglas de inflexión, por favor avísenme y se las iremos agregando hasta que cubramos las reglas enteras para el castellano:

$pluralRules = array('/([r|d|j|n|l|m|y|z])$/i' => '\1es','/a$/i' => '\1as');
$uninflectedPlural = array();
$irregularPlural = array();
$singularRules = array('/([r|d|j|n|l|m|y|z])es$/i' => '\1', '/as$/i' => 'a', '/([ti])a$/i' => '\1a');
$uninflectedSingular = $uninflectedPlural;
$irregularSingular = array_flip($irregularPlural);

¡Qué lo disfruten!

Tecnología ,