Desenvolupant per a Drupal

Com a projecte de codi obert que és Drupal, qualsevol persona pot contribuir al seu desenvolupament. El nostre objectiu principal, des de Drupal.cat, és col·laborar en la seva traducció, de manera que aquesta és la primera tasca que documentarem. Si necessiteu més informació sobre com col·laborar en el desenvolupament de Drupal podeu visitar la secció Developing for Drupal de drupal.org 

Manual del traductor

Aquesta guia del traductor pretén donar-vos totes les instruccions necessàries per poder traduir el Drupal. Trobareu una guia actualitzada en anglès a drupal.org (http://drupal.org/node/11130 )

A la secció Arxius de traducció hi trobareu informació referent a la gestió dels arxius necessaris per a la traducció del vostre Drupal.

A la secció Les traduccions a Drupal.cat trobareu instruccions sobre com ajudar-nos a la traducció de Drupal.

Arxius de traducció

Hi ha dos tipus d'arxius per a la traducció de Drupal. Tots dos tipus d'arxius són de text, amb un format especial: els .po i els .pot. Els .po són els arxius que contenen la traducció pròpiament dita, i que importarem al drupal des de la pàgina corresponent del mòdul 'locale', mentre que els .pot són les plantilles a partir de les quals es poden generar els arxius .po.

Podrem obrir aquests arxius amb qualsevol programa de text però si volem treballar més còmodes necessitarem un programa d'edició d'arxius .po. En trobareu una llista a http://drupal.org/node/11131. Assegureu-vos de llegir la pàgina d'incidències si useu poEdit de windows

Plantilles .pot

Les plantilles .pot són els arxius que hem de fer servir per fer una traducció nova, tot i que també podríeu fer servir un .po. En aquest cas, en obrir-lo amb el programa editor, veuríeu no només les cadenes en anglès a traduir sinó també les seves traduccions a un idioma concret i que hauríeu d'anar esborrant a mesura que aneu traduint.

Per obtenir els .pot dels mòduls del core, el millor és baixar-los del cvs de drupal.org (L'enllaç us porta als .pot de la versió 5 de drupal. si voleu una altra versió, sel·leccioneu-la al formulari del peu de la pàgina del cvs)

Els .pot dels mòduls contribuïts els hauríeu de trobar dins del directori 'po' que hi ha d'haver al directori del mòdul. Tanmateix, alguns desenvolupadors no es preocupen de les traduccions dels seus mòduls i no fan el .pot. En aquest cas l'haurem d'extreure nosaltres mateixos. Per això tenim un arxiu anomenat 'extractor.php' que trobareu a la mateixa pàgina del cvs anterior. Llegiu-vos el readme.txt que hi ha també a la mateixa pàgina per a instruccions de com usar l'extractor.

Un cop tingueu la plantilla per al mòdul que volgueu traduir, obriu-la amb el programa editor d'arxius .po que hagueu triat i feu-ne la traducció. Recordeu-vos de fer una ullada a les nostres recomanacions d'estil.

Arxiu .po

Els arxius .po són els que heu de fer servir per importar-los a la vostra distribució de drupal. S'obtenen a partir de les plantilles .pot, que un cop obertes amb un programa editor adequat, es poden guardar amb el format .po.

La nomenclatura que segueixen els arxius .po amb Drupal és molt simple: el nom de l'arxiu correspon al codi ISO 639-1 de dues lletres per identificar idiomes. En el nostre cas 'ca'. Afegim el .po i llest. Per tant, tots els arxius .po que trobareu en les distribucions de Drupal segueixen aquesta norma.

De totes maneres, a drupal.cat seguirem una nomenclatura pròpia per tal de poder identificar clarament els diferents arxius .po de cada mòdul. Aquesta és la nomenclatura que fem servir per pujar els arxius .po a drupal.cat perquè tothom en pugui disposar.

Paral·lelament farem servir aquests arxius per el·laborar el ca.po que s'haurà de descarregar de http://drupal.org/project/Translations

Tractament dels plurals

Aquests arxius .po permeten un tractament personalitzat dels plurals per a cada idoma, de manera que depenent del nombre que una paraula representi, es pot assignar una traducció diferent. No tots els idiomes fan servir la mateixa fòrmula, que en el nostre cas seria:

0 = singular
>1 = plural

Per tal que les diferents fòrmules que es poden fer servir per als diferents idiomes puguin ser interpretades correctament, cal especificar la fòrmula a la capçalera de l'arxiu .po. Així doncs, assegureu-vos que l'arxiu .po que genereu tingui una línia com la següent a la capçalera:

"Plural-Forms: nplurals=2; plural=n>1;\n"

És possible que us trobeu que a la capçalera original no hi hagi cap línia similar. Si n'hi ha, pot ser una cosa com aquesta:

"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"

Com veieu, es tracta de substituir la paraula INTEGER pel nombre de formes de plural que té l'idioma i la paraula EXPRESSION per la fòrmula concreta que els defineix. Si voleu més informació sobre el tema la trobareu a: http://www.gnu.org/software/gettext/manual/html_node/gettext_150.html

Si no feu aquest canvi i no especifiqueu els dos valors INTEGER i EXPRESSION, la importació de l'arxiu .po a drupal us donarà l'error

The translation file contains an error: the plural formula could not be parsed.

Les traduccions a Drupal.cat

Equip de traducció

Objectiu

L'objectiu de l'equip de traducció de Drupal és disposar d'aquest programari completament en català, tant el nucli com els seus mòduls. Així, els esforços de traducció s'haurien de centrar en traduir en el següent ordre:

* Traduir el nucli de Drupal.
* Traduir els mòduls més utilitzats o catalogats com a imprescindibles.
* Traduir la resta de mòduls.

I sempre centrant els seus esforços en la darrera versió d'aquest sistema.

Detecció de necessitats

Abans de traduir res cal saber quines són les necessitats reals, és a dir, quins mòduls no estan traduïts al català ni s'estan traduint actualment.

Si existís alguna forma de gestionar les necessitats de traducció dels mòduls de Drupal al servidor de traduccions (com per exemple mitjançant incidències i assignacions d'aquestes) no caldria fer cap tipus de procés de coordinació; però actualment, això no és possible, i per tant, cal establir una metodologia per a la coordinació, tant de traduccions com de necessitats.

* En principi els membres de l'equip de traducció són a la vegada usuaris de Drupal, i per tant, poden fer un seguiment de quins mòduls no estan traduïts al català.
* Cal disposar d'un llistat on s'indiqui l'estat de traducció dels mòduls en que es vagi treballant, així com les versions afectades. D'aquesta manera, els traductors podran saber en què han de treballar i indicar-hi si hi ha algú treballant-hi o no. El procediment per anar construint aquesta taula pot ser el següent:
* La gent detecta un mòdul que creu que hauria d'estar traduït al català i ho comunica a l'equip a través del fòrum o bé edita directament la taula.
* La persona responsable del manteniment de la taula hi afegeix el nom del mòdul.

Coordinació

Com la plataforma de traducció de Drupal no permet una coordinació explícita de les traduccions, cal crear un mecanisme per a dur-la a terme.

L'artefacte per a la coordinació de traduccions és la llista de traduccions completes, pendents i en progrés.

Glossari

S'ha creat un glossari de termes que podem trobar habitualment a la interfície de Drupal. Aquest es pot complementar amb d'altres termes que es creguin interessants, així com encetar una discussió sobre alguna traducció d'algun terme que ja existeixi o que s'hi vulgui afegir.

Cicle de vida de les traduccions

Abans de tot, cal tenir en compte que el sistema amb el que Drupal usa les cadenes fa impossible acotar-les a un únic mòdul, ja que estan compartides per tots ells, de manera que es pot aprovar una traducció per a un mòdul que no hauria de perquè ser correcte per a un altre. Això és un problema que no podem solucionar ara com ara fins que no s'integri un sistema de contexts.

Tot i que el procés de traducció és molt flexible i permet que qualsevol se l'adapti a la seva manera de treballar, hi ha un cicle de vida de la traducció que sempre serà el mateix:

* El traductor troba quelcom per traduir i ho comunica al fòrum o edita la llista per assignar-se el mòdul. En cas que no hi hagi ningú més treballant en la traducció i que l'usuari no tingui permisos d'edició de la llista, un altre membre li assignarà la traducció.
* El traductor actualitzarà el llistat de traduccions (o bé afegint-hi la traducció si és nova, o bé canviant-li l'estat a "en progrés" si ja era a la llista).
* El traductor procedirà a fer la traducció segons el mètode que li sigui més convenient. És recomanat fer la traducció en local amb l'ajuda del mòdul Localization client i una vegada acabada, exportar-la amb l'ajuda del mòdul Translation template extractor i importar-la al l.d.o.
* Un cop acabada la traducció, el traductor actualitzarà l'estat al llistat de traduccions ("per revisar"). Igualment, pot escriure un missatge al fòrum o bé enviar un correu a algun administrador de traduccions per informar-ne.
* Un revisor comprovarà la traducció (canviarà l'estat a "en revisió"). En cas de trobar errors, el revisor pot modificar la traducció o bé declinar el suggeriment. Si queden cadenes per traduir, marcarà la traducció com "per completar". Això pot comportar que el traductor hagi d'aplicar canvis i enviar tornar a començar el cicle.
* Un cop el revisor hagi acceptat totes les cadenes, el mòdul es marcarà com a "pujat".

Enllaços

Guies de traducció

* Eines de localització de Softcatalà
* Guia d'estil per a la traducció de programari de Softcatalà

Referència

Llengua

* Glossari de termes de Drupal
* Recull de termes de Softcatalà
* Centre de terminologia TERMCAT
* Diccionari en línia de l'Institut d'Estudis Catalans (IEC)
* Diccionari en línia de l'Enciclopèdia Catalana
* Diccionari en línia multilingüe de l'Enciclopèdia Catalana
* Memòria de traducció de projectes de programari lliure
* Corrector ortogràfic de català de Softcatalà

Eines

* Manual del gettext (ordres per a l'edició i manipulació de fitxers PO, descripció de l'estructura dels fitxers PO)
* Descripció de l'estructura dels fitxers PO utilitzats en les traduccions.

Glossari de termes

A continuació recollim alguns dels termes que podem trobar habitualment a la interfície de Drupal. Aquest glossari pot servir per a complementar, en el cas particular de Drupal, el propi de Softcatalà.

Abans de completar la taula, és recomanable obrir una discussió sobre la traducció en algun fil del fòrum de traduccions.

Terme anglès Traducció al català Notes
autocomplete compleció automàtica
auto-incrementing ID
block bloc espai o bloc de contingut del Drupal, diferenciat dels nodes.
blog blog emprarem la forma amb 'g' per a evitar confusions amb la traducció de block.
cachable
contributed module
cron hook
dashboard tauler
disabled inhabilitat
drag-and-drop handle
enabled habilitat
enter introduir, entrar Utilitzarem introduir quan omplim un text en un camp, per exemple, i en canvi entrar quan ens moguem a un lloc o una secció.
entry entrada
flood control limit
handle icon
language llengua, llenguatge Si és un llenguatge natural, ex. català, parlarem de llengua; en altres casos, com ara el Javascript, de llenguatge.
library biblioteca
locale configuració local, codi de llengua, llengua En funció del context, pot fer referència als paràmetres de configuració local del sistema (llengua, país, etc.), al codi estàndard de la llengua, o fins i tot a la mateixa llengua.
node node element o pàgina del CMS Drupal
path camí
post
raw
save desar
store emmagatzemar
summary resum
teaser resum
throttle
token token S'utilitza la paraula anglesa quan estiguem parlant d'una cadena de substitució de text (funcionalitat del mòdul Token).
tokenizer
toolkit joc d'eines
trackback retroenllaç es tracta d'un enllaç que s'ofereix a qui vulgui fer referència a un apunt des de llur propi bloc

Llista de traduccions completes, pendents i en progrés

En aquesta llista es detalla el conjunt de mòduls traduïts o pendents de traduir amb l'objectiu de coordinar-ne el seu procés de traducció. També serveix per a mostrar informació relacionada amb les traduccions, com ara el responsable, l'estat, etc.

Les traduccions es fan des de http://localize.drupal.org

Estat de les traduccions

Per a interpretar cada columna de la taula, podeu consultar la referència que hi ha al final del tot d'aquesta pàgina. Pel que fa a la columna d'estat, és interessant llegir-se i tenir en compte el cicle de vida d'una traducció.

Nucli

Mòdul Estat Responsable Notes
5.x 6.x 7.x
Drupal P
(5.23)
P
(6.20)
P
(7.0)
rvilar -

Mòduls de primer nivell o bàsics

Mòdul Estat Responsable Notes
5.x 6.x 7.x
Administration menu PA PA - - -
Advanced Help P
(5.x-1.0-beta1)
P
(6.x-1.2)
- rvilar -
CAPTCHA PA PA PA - -
Chaos tool suite - PA PA - -
Content Construction Kit (CCK) P
(5.x-1.12)
EP - rvilar -
Date PA PA - - -
FileField PA PA - - -
Google Analytics PA PA - - -
Image PA PA - rvilar -
ImageAPI P
(5.x-1.5)
P
(6.x-1.8)
PA rvilar -
ImageCache PA PA - - -
ImageField P
(5.x-2.6)
P
(6.x-3.7)
- nasinandes -
IMCE P
(5.x-1.3)
PA PA - -
jQuery UI P
(5.x-1.2)
P
(6.x-1.4)
- - -
Pathauto EP EP PA Richy -
Poormanscron P
(5.x-2.1)
P
(6.x-2.2)
- rvilar -
Token EP
(5.x-1.13)
EP
(6.x-1.12)
P
(7.x-1.0-alpha3)
rvilar -
Views EP EP EP rvilar -
Webform PA PA PA - -
Wysiwyg PA PA PA - -

Altres mòduls

Mòdul Estat Responsable Notes
5.x 6.x 7.x
Admin - P
(6.x-2.0)
P
(7.x-2.0-beta1)
rvilar -
Automatic Nodetitles P
(5.x-1.3)
P
(6.x-1.2)
P
(7.x-1.0-alpha1)
rvilar -
Bibliography Module EP EP PA mcus21 -
CAS P
(5.x-3.0)
P
(6.x-1.0)
- mcus21 -
Case Tracker PA P
(6.x-1.0-beta6)
- mcus21 -
Devel PA PA PA - -
Diff P
(5.x-2.1)
P
(6.x-1.0)
PA rvilar -
Event P
(5.x-1.0)
- - ecamos -
Forward - PR
(6.x-1.16)
- calbasi -
Holding page - P
(6.x-1.2)
- rvilar -
Insert - PA - - -
Internationalization (i18n) PA PA - - -
Legal P
(5.x-1.9)
P
(6.x-2.2-beta4)
PA mcus21 -
Localization client P
(5.x-1.2)
P
(6.x-1.7)
PA rvilar -
Localization update - P
(6.x-1.0-alpha2)
- rvilar -
Mollom PA EP PA toniher -
Nodewords PA PA - - -
Notifications - EP - calbasi -
Organic groups PA PA - - -
PNG Fix P
(5.x-3.0)
P
(6.x-1.0)
- rvilar -
Quick Tabs EP
(5.x-2.1)
EP
(6.x-2.2)
- 3701 -
Scheduler P
(5.x-1.19)
P
(6.x-1.7)
- mcus21 -
Semantic Views - P
(6.x-1.1)
- rvilar -
Service links P
(5.x-1.2)
P
(6.x-1.0)
- mcus21 -
Simplenews PA PA - - -
SimpleTest P
(5.x-1.2)
P
(6.x-2.10)
- rvilar -
String Overrides PA PA PA - -
Support Ticketing System - PC - Richy -
Tagadelic P
(5.x-1.1)
P
(6.x-1.2)
- mcus21 -
Translation overview - PA - - -
Translation template extractor P
(5.x-1.3)
P
(6.x-3.2)
- rvilar -
Ubercart PA PA - - -
Ubercart Out of Stock Notification P
(5.x-1.5)
P
(6.x-1.4)
- calbasi -
Ubercart ajax cart - PR
(6.x-2.0-beta2)
- calbasi -
UC Restrict Qty PA PA - - -
Views Tagadelic P
(5.x-1.1)
P
(6.x-1.2)
- rvilar -

Temes

Tema Estat Responsable Notes
5.x 6.x 7.x
A cloudy day - P
(6.x-2.0)
- rvilar
Rubik - P
(6.x-3.0-beta2)
P
(7.x-4.0-beta4)
rvilar
Tao - P
(6.x-3.1)
P
(7.x-3.0-beta3)
rvilar

Referència de les cel·les de la taula

Mòdul
Nom del mòdul enllaçat a la pàgina en qüestió del l.d.o
Estat
Estat en el que es troba actualment la traducció d'aquest mòdul. Hi ha una columna per cada branca de desenvolupament del mòdul. Els estats poden ser:
- per assignar (PA): encara no hi ha cap responsable assignat.
- per completar (PC): l'estat anterior era "pujat" i s'ha vist que hi ha noves cadenes per traduir.
- en progrés (EP): algú s'ha assignat el mòdul i està traduint-lo.
- per revisar (PR): el responsable dóna per traduït el mòdul i el marca perquè un administrador el revisi.
- en revisió (ER): hi ha un administrador que està revisant el mòdul.
- pujat (P): la traducció s'ha revisat i acceptat.
Responsable
Persona que s'està fent càrrec de la tasca de traducció del mòdul. És convenient enllaçar a la pàgina d'usuari del servidor de traduccions per si cal posar-se en contacte amb la persona.
Notes
Un apartat per posar notes de la traducció, com per exemple, quina és la darrera versió del mòdul traduïda o d'altres notes interessants.

Recomanacions d'estil

A drupal.cat no som pas de començar de zero si ja hi ha feina feta. I pel que fa a l'estil de traducció de programari al català hi ha molta feina feta per part de la gent de Softcatalà amb les seves eines de localització.

La nostra recomanació en aquest sentit, doncs, és seguir les seves normes d'estil.

Pel que fa a la terminologia, us pot ser d'utilitat el recull de termes de Softcatalà i la memòria de traducció en línia Open-Tran.eu.

Específicament per al Drupal, hem fet un glossari dels termes més habituals.
Si creieu que hi ha cap terme que hauria d'estar-hi anotat o bé actualment no té una traducció disponible, comenteu-ho al nostre fòrum.

Creació de mòduls

Aquest manual intentarà explicar pas per pas com crear nous mòduls per a Drupal. En principi, el manual estarà enfocat a la versió 5.x de Drupal, per ser en aquest moment la versió estable. Això no vol dir que moltes de les coses que ací es diguen no serveixin per a versions anteriors i posteriors.

En aquest manual intentarà ser d'aplicació pràctica, no obstant hi haurà seccions dedicades a conceptes teòrics de funcionament de Drupal, per tal d'aclarir els coneixements.

Algunes seccions seran pures traduccions dels manuals de la pàgina oficial de Drupal, pot ser modificades per tal d'aclarir alguns aspectes.

En tot moment s'ha de contar amb les pàgines oficials d'ajuda a la creació de mòduls. Aquestes són: Manual oficial per a la creació de mòduls (Anglés), Buscador de funcions de l'API de Drupal (Anglés) i Buscador de funcions de l'API de E-commerce (Anglés).

Funcionament de Drupal

Drupal està dissenyat de forma modular per tal que siga fàcil d'ampliar i millorar. Açò vol dir que cada funcionalitat de Drupal és, més o menys, independent de la resta, llevat del que anomenem cor (CORE), que és la base de tot. Aquest disseny permet que varies persones traballen paral·lelament per ampliar Drupal sense que es produeixquen incompatibilitats. Evidentment aquesta modularitat no és extrema, i si que hi ha funcionalitats que depenen d'altres, d'altra manera es crearia codi redundant.

El mòduls són, doncs, funcionalitats de Drupal. Teòricament un mateix mòdul pot allotjar més d'una funcionalitat, però aquesta pràctica no és recomanable. Cada mòdul conté les funcions necessàries per tal d'acomplir la funcionalitat pertinent. Tots els mòduls han d'estar al directori "modules" de Drupal, podent tindre el seu propi directori al si d'aquest.

La comunicació entre el mòdul i el cor es realitza a través de "hooks" (ganxos, garfis, no sé com traduir-ho, però tots coneguem a peter-pan). Per explicar-ho senzillament, els hooks són les funcions del mòdul a les quals el cor intentarà cridar. Per exemple, existeix el hook anomenat "hook_help". Si nosaltres volguéssim implementar un mòdul i incorporar-hi un text per a l'ajuda, hauríem d'implementar una funció que s'anomenés "nommodul_help". Açò ja ens dona una idea de com podem utilitzar-los. Bàsicament la implementació d'un hook serà la creació d'una funció, el nom de la qual serà el nom del mòdul més un subratllat i el nom del hook a implementar (nommodul_nomhook). Durant tot aquest manual anirem explicant els hooks més important que hem de tenir en compte a l'hora de crear un nou mòdul.

Nota de l'autor:
Aquest manual anirà ampliant-se conforme jo vaja coneixent l'ús dels diferents hooks, o algú altre els explique.

Tipus de móduls

Per tal d'explicar la creació de mòduls m'ha paregut interessant classificar-los en diferents grups per tal de fer més senzilla l'explicació dels diferents hooks. Aquesta classificació no és oficial (és la que jo em faig personalment).

<

p>

Mòduls d'implementació de nodes

Són aquells que defineixen nous tipus de continguts. A Drupal cada unitat de contingut s'anomena node. Per tant una pàgina és un node, també ho són una enquesta, un event, un article, etc...

<

p>

Mòduls d'implementació de modificacions als nodes

Són aquells que en si no creen nous tipus de nodes, però modifiquen d'alguna manera els tipus existents. Per exemple, poden afegir camps a l'edició de nodes. El mòdul taxonomy pot afegir nous camps a l'edició d'un node per incorporar-hi temes. O el mòdul upload, que permet adjuntar fitxers a un node.

<

p>

Mòduls d'implementació de modificacions als usuaris

Són molt pareguts als d'implementació de modificacions als nodes, però enfocats als usuaris. A aquesta categoria podem trobar per exemple el mòdul profile.

<

p>

Mòduls d'implementació de filtres

Són mòduls per a la creació de filtres per a les àrees de text. Aquestos són els que permeten la introducció d'etiquetes especials al cos dels nodes per tal d'aconseguir algun tipus d'efecte, com ara d'incorporació d'imatges, de fitxers, o simplement l'eliminació de paraules malsonants.

<

p>

Mòduls d'implementació de modificacions d'APIs

Són mòduls que modifiquen d'alguna manera el comportament de certes funcions de les APIs, Personalment sols he trobat mòduls que modifiquen l'API dels formularis. D'aquest tipus serien tots els mòduls d'editors de text JavaScript.

<

p>

Mòduls d'implementació d'accés remot

Són aquells que implementen comunicacions bilateral amb altres webs, o aplicacions. Drupal implementa una API de comunicació XMLRPC, però probablement es pogués crear una nova API per a la comunicació SOAP, per exemple. Aquestos mòduls serien aquells que utilitzaren aquestes APIs.

<

p>

Mòduls d'implementació d'APIs

Aquestos mòduls afegeixen noves APIs a Drupal. Per exemple el conjunt de mòduls ecommerce, o el mòdul VotingAPI.

Hi ha altres tipus de mòduls que no m'he decidit a classificar, tant per la seua simplicitat, com complexitat. No obstant aquesta classificació és orientativa, i serà més una eina per classificar els hooks que per classificar els mòduls.

Els fitxers que composen un mòdul

Són tres els fitxers que composen un mòdul. No necessàriament s'han d'implementar els tres, i no necessàriament sols han de ser tres. Per mantenir certa organització és aconsellable col·locar tots aquests fitxers dintre d'un directori amb el nom del mòdul.

  • El primer, el qual és imprescindible, és el fitxer .module. Aquest fitxer és el que conté l'implementació dels hooks. Sense aquest no hi ha mòdul.
  • El segon, també és imprescindible a partir de la versió 5 de Drupal. Aquest és el .info. Aquest dóna informació sobre el mòdul. Per exemple el nom, el paquet al que pertany, o les dependències. Aquest fitxer fou introduït per primer cop a la versió 5 de Drupal.
  • Finalment, el tercer fitxer és molt important si el nostre mòdul treballa amb les seues pròpies taules. Aquest és el .install. Amb aquest fitxer podem fer que Drupal cree les taules necessàries per fer funcionar el nostre mòdul. Aquest fitxer fou introduït per primer cop amb la versió 4.7 de Drupal. No obstant a la versió 5 de Drupal s'introduí el hook_uninstall, per automatitzar el procés de desinstal·lació.

D'altra banda el mòdul pot necessitar per al seu bon funcionament altres fitxers, com ara un .css o un .js. Més endavant veurem com fer referència a ells al sí del mòdul.

El fitxer .module

El fitxer .module és un fitxer escrit en llenguatge PHP. Aquest fitxer conté totes les funcions (inclosos els hooks) per al correcte funcionament del mòdul. Com tot bon fitxer PHP el .module ha de començar amb l'etiqueta <?php, i finalitzar amb l'etiqueta ?>.

Podreu observar que alguns mòduls, per la seua complexitat, mantenen certes funcions fora del .module, a un altre fitxer, normalment, anomenat nommodul.inc. Aquesta pràctica no és massa comú, però en algun cas us pot ajudar a organitzar el codi.

Més endavant, en aquest manual, explicarem més profundament les possibilitats del fitxer .module.

El fitxer .info

A les versions anterior a la Drupal 5 l'informació bàsica del mòdul (nom i descripció) la proporcionava el hook_help, a partir de la 5, aquesta informació es proporcionada pel fitxer .info. Aquest fitxer és imprescindible a partir de la versió 5 de Drupal.

El .info conté "meta-informació" del mòdul, com el ja mencionat nom, descripció, i també les dependències, el paquet al que pertany, la versió, etc... El fitxer ha de tenir el mateix nom que el fitxer .module, però amb l'extensió .info. El format del fitxer ha de ser com un fitxer .ini (molt utilitzat a Windows)

Per tal de fer l'explicació més clarificadora utilitzarem el fitxer .info d'un mòdul que m'estic plantejant, i que aniré implementant al mateix temps que vaja escrivint aquest manual.

El mòdul en qüestió s'anomenarà "logo-contest", per tant el nom del fitxer haurà de ser "logo-contest.info". A més, necessitarà per funcionar dels mòduls VotingAPI, Image i Taxonomy. Doncs el fitxer .info hauria de ser més o menys així:

; Mòdul logo-contest creat per Andreu_n1. Codi amb llicència GPL.
name = Logo contest
description = "Permet la creació de concursos per elegir un logotip"
dependencies = votingapi image taxonomy
package = Voting
version = "Ver. 0.1alpha"

Anem a analitzar pas per pas aquest fitxer:

; Mòdul logo-contest creat per Andreu_n1. Codi amb llicència GPL.

Aquesta línia és un comentari que Drupal no tindrà en compte a l'hora de processar el fitxer. Al fitxer .info els comentaris comencen amb un punt i coma, i afecten a tota la línia a partir d'ell. Per tant aquesta línia sols serveix per a que altres desenvolupadors que llegeixin el codi. Al principi del fitxer es sol introduir un comentari referent a l'autor, la llicència, la versió, etc... Si publiqueu el mòdul als servidors de drupal.org hauriu de posar un comentari com aquest: ";$id$". Aquest comentari serà substituït pel servidor CVS per les dades de l'autor, la data, etc...

name = Logo contest
Aquesta línia és bastant òbvia. Es tracta d'una etiqueta, en aquest cas "name", i del seu valor "Logo contest". Aquest serà el nom que apareixerà al llistat de mòduls. El nom pot contenir espais, però per raons evident no pot contenir punts i comes. A més aquest nom ha de seguir l'estandard de "capitalització" (no sé com traduir-ho) de Drupal 5. Es a dir, sols la primera lletra de la primera paraula ha d'estar en majúscula. Per exemple "Logo Contest" no seria correcte, tampoc ho seria "logo contest". Aquesta etiqueta és obligatòria.

description = "Permet la creació de concursos per elegir un logotip"
Aquesta indica la descripció que apareixerà al costat del mòdul al llistat d'estos. El valor de l'etiqueta "description" ha d'estar tancat amb cometes. Si volguéssiu utilitzar les cometes a la descripció hauríeu d'utilitzar &qoute; per tal que aparegueren les cometes. El text descriptiu pot contenir etiquetes HTML, com ara <b>. La descripció ha de ser curta per tal que la pàgina dels mòduls no faça coses extranyes. Per tant es demana que sigueu concisos a l'hora de fer les descripcions. Aquesta etiqueta és obligatòria.

dependencies = votingapi image taxonomy
Aquesta indica els mòduls dels que depèn el vostre mòdul. Cada mòdul depenent ha d'estar separat de l'anterior per un espai. Si algún d'aquestos mòduls no sigués present, Drupal no deixaria que s'instal·lés el nostre, i si foren presents, però no habilitats, Drupal suggeriria habilitar-los. Aquesta etiqueta NO és obligatòria.

package = Voting
Amb aquesta etiqueta indiquem el paquet al que pertany el nostre mòdul. Sols podem indicar un. Açò serveix per agrupar els mòduls en paquets al llistat. Es suggereix utilitzar els següent:

  • Audio
  • Bot
  • CCK
  • Chat
  • E-Commerce
  • Event
  • Feed parser
  • Organic groups
  • Station
  • Video
  • Views
  • Voting (si utilitza/requereix el mòdul VotingAPI)
  • Location

No obstant vosaltres podeu crear els vostres propis paquets. Aquesta etiqueta NO és obligatòria.

version = "Ver. 0.1alpha"
L'etiqueta "version" indica la versió del mòdul. Si publiqueu a drupal.org ací heu de posar "$name$" així el servidor CVS introduirà la versió automàticament. No heu d'utilitzar en cap cas "$revision$" la qual introduiria la versió del fitxer .info no la del mòdul. Aquesta etiqueta NO és obligatòria.

D'altra banda també existeix l'etiqueta "project" que indica a quin projecte pertany el mòdul, però es introduïda automàticament per servidor CVS de drupal.org.

Per a l'elaboració d'aquesta pàgina s'ha utilitzat el manual oficial de drupal.org per a la creació de fitxers .info: Telling Drupal about your module (Anglès) i Writing .info files (Drupal 5.x) (Anglès).

Per saber més sobre la sintaxis dels fitxers .ini visiteu la pàgina de PHP (Castellà).