Traduction(s) : aucune


Quelques trucs et astuces utiles pour les traducteurs

Les espaces insécables et vous

Vim

Différencier les espaces insécables des espaces normales

Les commandes suivantes permettent d'afficher un '·' (U+00b7) pour visualiser les espaces insécables (U+00a0). Le '·' peut être remplacé par le caractère de son choix.

:set listchars=nbsp:·
:set list

Exemple d'intégration dans le ~/.vimrc limitant la portée du réglage au buffer courant si le fichier est un *.po

autocmd Filetype po setlocal listchars=nbsp:· list

Insérer une espace insécable dans vim

En mode insertion, il est possible d'insérer un caractère unicode par son code hexadécimal avec CTRL-v u <code_hexadécimal>. Pour l'espace insécable la séquence est donc : CTRL-v u 00a0

Script bash/sed : remplacer les espaces normales par des insécables

#!/bin/bash

# Remplace les espaces normales (U+0020) par des espaces insécables
# (U+00a0) dans les lignes traduites d'un fichier fr.po passé en
# argument.
#   avant pour
#     ' »'
#     ' :'
#     ' ;'
#     ' !'
#     ' ?'
# et après pour
#     '« '
# Le résultat est livré sur la sortie standard.  Les paquets « gettext »
# et « file » doivent être installés. Le script ne fonctionne que pour
# des fichiers encodés en ISO-8859-* ou UTF-8.
#
# Prière de passer en revue les espaces insécables insérées par ce
# script afin d'éliminer d'éventuelles « intruses » qui se seraient
# invitées sur des lignes destinées à être reproduites litéralement
# (des lignes de commande, par exemple).

if
  file -bi $1 | grep -si --regexp='charset=ISO-8859-' > /dev/null ;
then
  nbsp="\xa0" ;    # espace insécable
  go="\xab" ;      # guillemet gauche
  gf="\xbb" ;      # guillemet droit
elif
  file -bi $1 | grep -si --regexp='charset=UTF-8' > /dev/null ;
then
  nbsp="\xc2\xa0"; # espace insécable
  go="\xc2\xab" ;  # guillemet gauche
  gf="\xc2\xbb" ;  # guillemet droit
else
  echo "Erreur : le script ne parvient pas à déterminer l'encodage du fichier.";
  exit 0;
fi


msgcat --no-wrap "$1" | sed -r -l0 '

/^msgstr\x20/ {
  s/\x20(\?|\!|\:|\;|'${gf}')/'${nbsp}'\1/g
  s/('${go}')\x20/\1'${nbsp}'/g
}

' | msgcat -