Ajouter une langue à SPIP

, par Julien Falconnet

Pour un site SPIP, nous voulions pouvoir avoir des traductions même rares en de nombreuses langues, dont :
 hébreux
 hindi
 swahili

Or ces trois dernières langues ne sont pas intégrées, faute de traduction complète, dans SPIP. Mais des embryons existent qui seront bien suffisants pour nos besoin. Mais comment les ajouter à spip ?

Préambule

On considère que l’on a déjà des articles en plusieurs langues et que le multilinguisme est installé, mais que pour certains articles on ne trouve pas les langues appropriées dans SPIP. On cherche donc à ajouter une nouvelle langue.

Justification

Après quelques recherche, il s’avère difficile de trouver une aide concrète pour un site SPIP en version 2.1. Il y a des questions similaires pour d’anciennes versions, il y des question et des réponses sur le multilinguisme et sur le fait d’aider à la traduction de SPIP. Mais je n’ai rien trouvé de synthétique sur l’ajout en tant que tel d’une nouvelle langue en SPIP 2.1. Et surtout google ne nous sort rien de pertinent sur la requête "ajouter une langue à spip".

Le périple

En cherchant on voit que l’on a besoin de 3 fichiers pour chaque langue :
 ecrire_lang.php
 public_lang.php
 spip_lang.php

où lang est le code langue. Par exemple, pour le français c’est ’fr’ (ecrire_fr.php, public_fr.php, spip_fr.php), pour l’anglais c’est ’en’, pour l’italien c’est ’it’, etc. Il existe plusieurs standards pour définir une langue, celui utilisé ici semble être le ISO 639-1 (voir liste exhaustive) avec, parfois, une variante pays (pt_br).

Je trouvais un tableau très prometteur avec la liste des traductions en cours : http://www.spip.net/rubrique4.html

Mais encore fallait il pouvoir récupérer les fichiers correspondant.

Dans cette quête de fichiers, un certain nombre de liens semblent brisés, notamment dans spip-contrib (la gestion des langues semble avoir été gérée dans spip-contrib). D’autre sur spip.net semblent au contraire amener sur une mailing liste ou l’interface privée (inaccessibles sans inscription).

Finalement la meilleure piste semble le suivi de développement en cours :
 http://core.spip.org/trac/spip/browser/ecrire/lang
Après tout on sait bien qu’on va chercher quelque chose qui n’est pas finit mais qui est déjà bien mieux que rien.

On y trouve en particulier he (hébreux), mais aucun des autres qui m’intéressent.

Après beaucoup de recherches et un peu de chance je trouve une adresse magique : http://www.spip.net/fichier_langue.php

Cette petite adresse permet de récupérer n’importe quel fichier de langue pour peu qu’il existe et qu’on soit capable de deviner son nom.

Dans mon cas, je cherchais :
 spip_sw.php, ecrire_sw.php, public_sw.php
 spip_hi.php, ecrire_hi.php, public_hi.php
 spip_he.php, ecrire_he.php, public_he.php

Et par exemple pour récupérer le premier, j’ai pu utiliser l’adresse :

http://www.spip.net/fichier_langue.php?f=spip_sw

Une fois cela n’a pas résolu tous mes problèmes puisque je n’ai pu récupérer qu’une partie des fichiers dont j’avais besoin :

  • spip_sw.php
  • spip_hi.php
  • spip_he.php
  • public_he.php
  • ecrire_hi.php
  • ecrire_he.php

De plus en les parcourant, on remarque que :
 pour l’hébreu ça semble ok même si dans écrire, il reste des traductions à faire.
 pour l’hindi, rien ne semble fait ou presque. (outre qu’il manque un fichier)
 pour le swahili, c’est en fait une base en anglais. (outre qu’il manque deux fichiers)

Il aurait fallu que je puisse traduire les fichiers manquants ou incorrects. Mais n’ayant ni les compétence, ni le temps, je décidais plutôt de mettre en place des artifices approximatifs qui permettrait quand même de profiter de l’extraordinaire moteur multilingue de SPIP. Donc, j’utilisais les fichiers les plus adaptés (l’anglais) pour remplacer les fichiers manquants ou erronés.

Je récupérai donc spip_en.php, ecrire_en.php et public_en.php et les copiais/renommais pour obtenir

  • spip_hi.php
  • ecrire_hi.php
  • public_hi.php
  • ecrire_sw.php
  • public_sw.php

Ensuite restait à mettre tout ça en place dans /ecrire/lang .

Mais, grande déception, les nouvelles langues n’apparaissent pas dans la liste des langues disponibles. On vérifie rapidement ecrire/inc/lang_liste.php pour voir que, pourtant, elles ont été prévues.

En cherchant dans l’interface d’administration, on trouve dans Configuration>Gestion des langues>Multilinguisme la liste des langues à activer.
Au passage on note que les langues soulignées sont celles qui ont des fichiers spécifiques (pour les autres, on utilisera la langue par défaut)

Procédure Synthétique

1. Trouver le code langue de la langue recherchée

Soit dans spip dans le fichier ecrire/inc/lang_liste.php
Soit sur le site : http://www.loc.gov/standards/iso639... colonne ISO 639-1 mais attention certains ajustements sont fait par spip.
A partir de là, on sait que l’on aura besoin de :

  • spip_<_code>.php
  • ecrire_<_code>.php
  • public_<_code>.php

Par exemple pour l’allemand, ce serait spip_de.php, ecrire_de.php, public_de.php

2. Récupérer les fichiers des langues qui nous intéressent

On utilise l’adresse http://www.spip.net/fichier_langue.php?f=<monfichier> pour récupérer les fichiers de langue (en remplacant par le nom du fichier recherché sans le ".php"

Par exemple pour l’allemand ce serait :

2bis. Inventer ceux qui nous manquent

Si par hasard, les fichiers ne sont pas disponibles ou sont erronés, il faut :
 soit les traduire (et je vous y invite fortement si vous avez les compétences et à participer à l’effort de traduction de SPIP)
 soit choisir une langue disponible la plus proche ou la plus appropriée (souvent l’anglais). Une fois la langue choisit on trouve les trois fichiers dans /ecrire/lang et on les copie en les renommant pour qu’il semblent représenter la langue voulue.

Par exemple, si on ne trouve pas l’hindi et qu’on décide de le remplacer par l’anglais, on copie /ecrire/lang/spip_en.php en /ecrire/lang/spip_hi.php, /ecrire/lang/public_en.php en /ecrire/lang/public_hi.php et /ecrire/lang/ecrire_en.php en /ecrire/lang/ecrire_hi.php

3. Mettre en place leur utilisation

Une fois les fichiers en place il reste à les activer dans l’administration de spip : Configuration>Gestion des langues>Multilinguisme . Cette page propose, en dessous des options de configuration linguistiques générales, la liste des langues disponibles et activables. Il ne reste plus qu’à cliquer votre nouvelle langue pour l’activer et qu’elle soit disponible dans l’interface.

3bis. Mettre en place leur utilisation, langue rare

Si d’aventure, la langue n’apparaissait pas dans la liste de la page Configuration>Gestion des langues>Multilinguisme, il faudrait la rajouter à la main dans le fichier : ecrire/inc/lang_liste.php

Ressources

Voici les ressources qui m’ont bien aidé :
 http://forum.spip.org/fr_208428.html (ajout du chinois non-simplifié en 2008)
 http://www.eklesia.net/spip.php?article75
 http://www.spip.net/rubrique4.html (ou l’on trouve l’état d’avancement des traductions.

Notes

On s’occupe bien ici de rajouter une nouvelle langue à SPIP. La gestion d’un site multilingue (avoir des articles/ rubriques/pages etc.) est un sujet extrêmement bien documenté. Par exemple :
 http://www.spip.net/fr_article1972.html
 http://www.spip.net/fr_article2128.html

La version que j’utilise de spip propose 40 langues dans l’interface privée. Pourtant étrangement il y a 45 fichiers de langues dans /ecrire/lang. Et on trouve 189 code langues dans ecrire/inc/lang_liste.php.
Cela tient au fait que 189 langues ont été prévues. 45 sont livrées par défaut mais 5 ne sont pas activées par défaut :

  • asturianu [ast]
  • Indonesia [id]
  • Cambodian [km]
  • Burmese [my]
  • svenska [sv]