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
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.
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
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.
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
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.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.
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.
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.
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.
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".
* Eines de localització de Softcatalà
* Guia d'estil per a la traducció de programari de Softcatalà
* 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à
* 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.
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 |
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
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ó.
| Mòdul | Estat | Responsable | Notes | ||
|---|---|---|---|---|---|
| 5.x | 6.x | 7.x | |||
| Drupal | P (5.23) |
P (6.20) |
P (7.0) |
rvilar | - |
| 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 | - | - |
| 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 | - |
| 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 | |
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.
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).
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.
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>
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>
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>
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>
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>
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>
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>
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.
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.
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 é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.
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:
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à).