Catégories
Développement Polyglots

Contribution : gestion des espaces insécables sur WordPress / GlotDict

Suite aux difficultés rencontrées par les PTE/GTE (validateurs de traductions WP) sur la gestion des espaces insécables dans les traductions de l’écosytème WordPress, j’ai proposé une amélioration visant a afficher ces caractères qui par définition ne sont pas visibles ou en tout cas distinguables des espaces classiques.

En effet, tout le monde connaît l’entité HTML utilisée pour générer un espace insécables :  . Sauf que cette entité n’est pas toujours correctement interprétée par GlotPress, l’outil de gestion des traductions de WordPress, et par les thèmes ou plugins qui l’utilisent. Il est donc recommandé d’utiliser les touches ALT+ESPACE (Apple) ou ALT+255 (Windows) pour générer un espace insécable.

Problème, le-dit espace n’est alors plus distinguable d’un espace normal, ce qui est surtout handicapant pour les personnes chargées de valider les traductions proposées par les contributeurs : comment alors savoir si le contributeur a bien mis un espace insécable ou s’il a juste mis un espace normal ?

Voici l’interface de GlotPress. A gauche, les chaînes en anglais et à droite les chaînes traduites en français.

Ma solution a été de proposer un script JS permettant de surligner les espaces insécables afin que les validateurs puissent tout de suite savoir si les espaces insécables ont bien été mis au bon endroit :

Après avoir proposé, sans succès, le correctif sur trac.meta.wordpress.org, je l’ai d’abord proposé sous la forme d’un script navigateur, que chacun pourrait exécuter sur Firefox ou Chrome sans de grandes connaissances techniques.

Ce patch a été finalement intégré à GlotDict qui est un utilitaire tiers installé par les traducteurs sous la forme d’une extension Chrome ou Firefox. Après quelques tests, le correctif fait désormais partie intégrante de ces extensions.

> Dépôt GitHub de GlotDict

Pour les curieux voici le script JS proposé :

jQuery('tr.preview > td.translation.foreign-text').each(function(){
	var translation_item = jQuery(this).text();
	if ( translation_item.indexOf(' ') > -1 ) {
		var translation_highlighted = '';
		for (var i = 0; i < translation_item.length; i++) {
			if (translation_item[i] == ' ') {
				translation_highlighted += ' ';
			} else {
				translation_highlighted += translation_item[i];
			}
		}
		jQuery(this).html(translation_highlighted);
	}
});

 

Mentions légales