I develop stuff and have opinions on things -
About me/Contact

Articles:

Pelican et internationalisation

Depuis que ce blog utilise Pelican, je me suis mis à rédiger la plupart de mes articles (quand j’en ai le temps et la motivation) en anglais et en français. Pelican gère l’internationalisation par défaut, pour peu qu’on ait choisi un thème qui le prenne en charge (j’utilise pour ma part le thème SoMA2 dont c’est le cas). Mais par défaut il est impossible de générer un flux RSS par langue et par tag/catégorie ; j’avais également essayé de mettre des tags différents par langue, mais cela ne marche pas.

À la dernière (et première) rencontre XMPP à Paris, j’ai pu rencontrer Jean-Baptiste qui a une expérience certaine dans le domaine, et qui m’a fait remarquer que c’était possible via des subsites. Et m’a proposé plutôt qu’une bière en échange de la solution, que j’écrive un article pour décrire le processus. Après avoir eu la piste, ce n’est pas bien compliqué, mais chose promise, chose dûe.

1 - Ajout du plugin i18n_subsites

Le plus simple est de cloner le dépôt pelican_plugins qui contient tous les plugins possibles, afin de récupérer le plugin voulu. Le plus simple est de faire ça dans le dossier qui contient le blog.

git clone https://github.com/getpelican/pelican-plugins.git

Ensuite, il faut configurer le blog pour utiliser le plugin, donc éditer pelicanconf.py et y ajouter ces lignes :

PLUGIN_PATHS = ['pelican-plugins']
PLUGINS = ['i18n_subsites']

Puis il suffit de configurer les langues que vous voulez faire apparaître sur votre site (ici je mets ma configuration, très complexe) :

I18N_SUBSITES = {
    'en': {
        'SITENAME': 'mathieui’s blog',
    },
    'fr': {
        'SITENAME': 'mathieui’s blog',
    }
}

Et… Voilà, c’est tout, le blog est configuré, il va :

  • Générer un sous-dossier en/ et un fr/ dans le dossier de sortie de pelican
  • Mettre également à la racine la langue définie comme langue par défaut dans votre configuration
  • Générer des flux RSS spécifiques par langue dans les sous-dossiers correspondants

2 - Configuration nginx

Cette étape est bien sûr optionelle, mais comme tous mes articles étaient disponibles au même niveau en rajoutant -fr dessus, le fait de passer aux subsites a cassé tous les liens qui y menaient.

J’ai donc rajouté une simple directive nginx qui permet de faire comme si ils n’avaient pas bougé, sans avoir à retoucher à Pelican.

location ~ /(.+)-fr.html {
    try_files $uri /fr/$1.html;
}
Si vous avez des remarques ou commentaires à propos de cet article, n’hésitez pas à me contacter.