Installer l'outil de traduction en ligne Pootle sur Debian
Pootle est une application Web de traduction collaborative. Elle permet l'édition des fichiers po par une ou plusieurs personnes.
Ce guide est testé sur:
- Debian 6.0 Squeeze
Pré-requis
Ce guide nécessite un serveur MySQL disposant du script mysql-tools disponible dans le guide Installer et configurer MySQL sur Debian.
Ce guide nécessite un serveur HTTP disposant du script suivant:
- Le script a2tools disponible dans le guide Installer Apache 2 sur Debian.
Paramètres
Renseignez le nom de domaine ou sera disponible l'application:
DOMAIN="traductions.domaine-exemple.fr"
Renseignez le nom d'hôte de votre serveur MySQL (si vous ne savez pas de quoi il s'agit, ne modifiez pas cette valeur):
MYSQL_HOST="localhost"
Si votre serveur MySQL n'est pas local, ce guide effectuera une connexion SSH pour y créer la base de données.
Renseignez l'adresse mél de contact par les utilisateurs du site:
CONTACT_EMAIL="contact@domaine-exemple.fr"
Installation
Installez les logiciels nécessaires:
command apt-get install bzip2 python-django python-mysqldb \
libapache2-mod-python zip unzip python gettext \
python-lxml python-enchant python-simplejson \
python-utidylib python-vobject python-levenshtein \
python-aeidon python-iniparse iso-codes aspell-fr \
python-memcache memcached
Installation du Translate Toolkit package
Récupérez le numéro de la dernière version de la bibliothèque:
VERSION=$(command wget 'http://sourceforge.net/projects/translate/files/Translate%20Toolkit/' \
--quiet --output-document=- \
| command egrep --max-count=1 'files/Translate%20Toolkit' \
| command sed -e 's|.*/\([^/]*\)/".*|\1|')
Téléchargez les sources:
command wget "http://sourceforge.net/projects/translate/files/Translate%20Toolkit/${VERSION}/translate-toolkit-${VERSION}.tar.bz2/download" \
--output-document="/tmp/translate-toolkit-${VERSION}.tar.bz2"
Décompressez l'archive:
command tar --directory='/tmp/' -xjf "/tmp/translate-toolkit-${VERSION}.tar.bz2"
Installez la bibliothèque:
command pushd "/tmp/translate-toolkit-${VERSION}"
command python setup.py install
command popd
Effacez le fichier téléchargé:
command rm "/tmp/translate-toolkit-${VERSION}.tar.bz2"
command rm -r "/tmp/translate-toolkit-${VERSION}"
Installation de Pootle
Récupérez le numéro de la dernière version de l'outil:
VERSION=$(command wget 'http://sourceforge.net/projects/translate/files/Pootle/' \
--quiet --output-document=- \
| command egrep --max-count=1 'files/Pootle' \
| command sed -e 's|.*/\([^/]*\)/".*|\1|')
Téléchargez les sources:
command wget "http://sourceforge.net/projects/translate/files/Pootle/${VERSION}/Pootle-${VERSION}.tar.bz2/download" \
--output-document="/tmp/Pootle-${VERSION}.tar.bz2"
Décompressez l'archive:
command tar --directory='/tmp' -xjf "/tmp/Pootle-${VERSION}.tar.bz2"
Déplacez le nouveau dossier vers son emplacement final:
command mv "/tmp/Pootle-${VERSION}" "/opt/${DOMAIN}"
Effacez le fichier téléchargé:
command rm "/tmp/Pootle-${VERSION}.tar.bz2"
Adaptez l'application aux recommandations de la LSB:
command mkdir --parent "/var/lib/pootle/${DOMAIN}/"
command mv "/opt/${DOMAIN}/"{dbs,po} "/var/lib/pootle/${DOMAIN}/"
command ln -s "/var/lib/pootle/${DOMAIN}/"{dbs,po} "/opt/${DOMAIN}/"
command chown -R www-data:www-data "/var/lib/pootle/${DOMAIN}/"{dbs,po}
Mettez en place l'adresse de contact:
command sed -i \
-e "s/^#DEFAULT_FROM_EMAIL.*/DEFAULT_FROM_EMAIL = '${CONTACT_EMAIL}'/" \
-e "s/^#CONTACT_EMAIL.*/CONTACT_EMAIL = '${CONTACT_EMAIL}'/" \
"/opt/${DOMAIN}/localsettings.py"
Activez la traduction automatique par Google:
command sed -i \
-e "s/^#\(.*('GOOGLE_TRANSLATE\)/\1/" \
"/opt/${DOMAIN}/localsettings.py"
Fermez l'inscription des nouveaux utilisateurs:
command sed -i \
-e "s/^\(CAN_REGISTER =\).*$/\1 False/" \
"/opt/${DOMAIN}/localsettings.py"
Activez le cache de donnée MemCache:
command sed -i \
-e 's/^CACHE_BACKEND =/\#&/' \
-e 's|#\(.*memcached://\)|\1|' \
-e 's|#\(SESSION_ENGINE.*cached_db\)|\1|' \
"/opt/${DOMAIN}/localsettings.py"
Création de la base de données
Créez la base de données:
if [ "${MYSQL_HOST}" = "localhost" ]; then MYSQL_PARAMS=$(command mysql-tools create-domain-db "${DOMAIN}") else command echo "Saisissez le mot de passe de l'utilisateur root MySQL :" command read PASSWORD MYSQL_PARAMS=$(command ssh "root@${MYSQL_HOST}" "command mysql-tools create-domain-db '${DOMAIN}' '$(command cat /etc/mailname)' '${PASSWORD}'") fi
Récupérez les paramètres de la nouvelle base de données:
MYSQL_DB="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_DB" \ | cut --delimiter="=" --fields="2-")" MYSQL_USER="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_USER" \ | cut --delimiter="=" --fields="2-")" MYSQL_PASSWORD="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_PASSWORD" \ | cut --delimiter="=" --fields="2-")" echo "${MYSQL_PARAMS}"
Mettez à jour le fichier de configuration de l'application:
command sed -i \
-e "s/\(DATABASE_ENGINE = '\)[^']*\('.*\)$/\1mysql\2/" \
-e "s/\(DATABASE_USER = '\)[^']*\('.*\)$/\1${MYSQL_USER}\2/" \
-e "s/\(DATABASE_PASSWORD = '\)[^']*\('.*\)$/\1${MYSQL_PASSWORD}\2/" \
-e "s/\(DATABASE_HOST = '\)[^']*\('.*\)$/\1${MYSQL_HOST}\2/" \
-e "s/\(DATABASE_NAME = \)working_path([^)]*)\(.*\)$/\1'${MYSQL_DB}'\2/" \
"/opt/${DOMAIN}/localsettings.py"
Initialisez la base de données et créez un super utilisateur (n'utilisez pas l'identifiant 'admin'):
command python "/opt/${DOMAIN}/manage.py" syncdb
Ajoutez les données nécessaires à la base:
command python "/opt/${DOMAIN}/manage.py" initdb
Initialisez les statistiques:
command python "/opt/${DOMAIN}/manage.py" refresh_stats
Mise en place de l'hôte virtuel
Créez la configuration du serveur HTTP pour votre domaine:
if [ -x "/usr/bin/a2tools" ]; then
command a2enmod python
command a2tools add-custom "${DOMAIN}" "
DocumentRoot /opt/${DOMAIN}
<Directory \"/opt/${DOMAIN}\">
<IfModule mod_python.c>
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE pootle.settings
#PythonOption django.root /
PythonPath \"['/opt/${DOMAIN}', '/opt/${DOMAIN}/local_apps', '/opt/${DOMAIN}/external_apps'] + sys.path\"
PythonInterpreter pootle
PythonDebug On
Order deny,allow
Allow from all
</IfModule>
<IfModule "\!"mod_python.c>
Order deny,allow
Deny from all
</IfModule>
</Directory>
<Directory \"/opt/${DOMAIN}/html\">
SetHandler None
</Directory>
" fi
L'application devrait maintenant être disponible sur le nom de domaine spécifié.
Sauvegardes
Pour sauvegarder votre installation, je vous propose d'utiliser Backup Manager. Pour l'installer, vous pouvez suivre mon guide:
Installer et configurer Backup Manager sur Debian
Une fois Backup Manager installé, configurez la sauvegarde des fichiers de l'application:
command backup-manager-tools add "/opt/${DOMAIN}"
command backup-manager-tools add "/var/lib/pootle"
Important: Sauvegarder les fichiers ne suffit pas ! Il faut aussi sauvegarder la base de données. La procédure pour ce faire est disponible dans l'article MySQL sur Debian.
Remerciements
- Merci aux développeurs de Pootle.