La plate-forme n’offre pas de localisation pour ses sites

Par localisation, entendez que les élément récurrents des gabarits de votre site comme “Précédent”, “Suivant”, les dates, seront en anglais. Vous aurez donc “Next”, “Previous” sans possibilité de modifier quoique ce soit. Vous pensiez avoir la solution idéale pour développer votre boutique en ligne, publier votre portfolio, et faire avec eux votre devanture commerciale? Si vous créez un site avec eux, attendez vous à vous taper la tête dans les murs. Faire un site ne serait-ce que bilingue restreint les choix dans les thèmes proposés, ainsi que les structures possibles.

Vous cherchez à faire un site multilingue, de plus de deux langues?

Squarespace propose plusieurs solutions pour traduire votre site comme localize.js ou Babel qui coûtent les yeux de la tête (plusieurs centaines d’euros par an).

Apprêtez vous à traduire vos blocs de textes un par un et à vous exposer à des bugs si vous modifiez le texte original. Vos traductions ne seront pas visibles par les moteurs de recherches car elles seront injectées en javascript une fois la page chargée. Votre code html restera dans la langue d’origine. Localize ou Babel vont charger un “calque” javascript par dessus votre contenu qui ne sera pas indexé par les moteurs de recherche. Je vous décommande ces solutions chères et inutiles.

Adaptation à une seule langue: localizer Squarespace

Squarespace n’est pas pour autant un mauvais CMS1. À un prix raisonnable, vous avez une solution homogène et évolutive, parfaite pour les néophytes qui n’ont pas de connaissance en informatique. Si vous souhaitez traduire tous les éléments de votre site en français, j’ai une astuce pour vous. Dans l’administration de votre site, rendez-vous dans

Settings > Advanced > Code Injection

Dans la section footer, insérez ceci:

<script>
   /*
   :::::::::::::::::::::::::::::::::::::::::::::
   ::: Construisons une table des mois en français
   */
   var month=new Array(12);
   month[0]="janvier";  month[1]="février";   month[2]="mars";
   month[3]="avril";    month[4]="mai";       month[5]="juin";
   month[6]="juillet";  month[7]="août";      month[8]="septembre";
   month[9]="octobre";  month[10]="novembre"; month[11]="décembre";
   Y.use('node', 'node-load', function(Y) {
     Y.on('domready', function() {
       /*
       :::::::::::::::::::::::::::::::::::::::::::::
       ::: Remplaçons des éléments spécifiques
       */
       Y.all('.ss-social-button').setHTML('<span class="ss-social-button-icon"></span>Partagez');
       Y.all('.inline-read-more').setHTML('Continuer à lire');
       Y.all('.newer-posts').setHTML('Suivant');
       Y.all('.older-posts').setHTML('Précédent');
       /*
       :::::::::::::::::::::::::::::::::::::::::::::
       ::: Reformatons la date de publication des articles .published
       */
       Y.all('time.published').each(
         function() {
           var pdate = new Date(this.getAttribute('datetime'));
           this.setHTML(pdate.getDate() + " " + month[pdate.getMonth()] + " " + pdate.getFullYear());
         }
       ); // .published
       /*
       :::::::::::::::::::::::::::::::::::::::::::::
       ::: Reformatons la date relative .timesince
       */
       Y.all('time.timestamp').each(
         function() {
           var tdate = new Date(this.getAttribute('datetime'));
           this.setHTML(tdate.getDate() + " " + month[tdate.getMonth()] + " " + tdate.getFullYear());
         }
       ); // .timestamp (.timesince)
     }); // Y.on
   });
 </script>

Si vous utilisez la solution e-commerce de Squarespace, vous pouvez également rajouter ceci :

<script>	
 Y.use('node', 'node-load', function(Y) {
     Y.on('domready', function() {
 
 
Y.all('.cart-title').setHTML('Votre panier');
Y.all('.content-group .item-label').setHTML('Produits');
Y.all('.item-quantity .item-label').setHTML('Qté');
Y.all('.item-price .item-label').setHTML('Prix');
Y.all('.checkout-button').setHTML('Commander');
Y.all('.subtotal .label').setHTML('Total produits');
Y.all('.quantity-label').setHTML('Quantité');
Y.all('.sqs-add-to-cart-button-inner').setHTML('Ajouter au panier');
Y.all('#productNav a').setHTML('← Retour à la boutique'); 
Y.all('.ss-social-button').setHTML('Partager cet article'); 
Y.all('.entry-meta em').setHTML('Trouvé dans'); 
Y.all('.back-to-all').setHTML('Retour à la boutique'); 
Y.all('.newer').setHTML('Précédent'); 
Y.all('.older').setHTML('Suivant');   
Y.all('.category-nav .all').setHTML('Toutes les collections');   
     }); // Y.on
   });
</script>

Ou simplement rajouter tous les Y.all(…) sous le "::: Remplaçons des éléments spécifiques".

On déplore avec Squarespace

La balise en tout début de code,

<html xmlns:og="http://opengraphprotocol.org/schema/"  
xmlns:fb="http://www.facebook.com/2008/fbml"  
xmlns:website="http://ogp.me/ns/website"  
lang="en-US"  
itemscope itemtype="http://schema.org/WebPage" >

Même si on lui spécifie qu’on se trouve en France, le lang="en-US" identifie le contenu vos pages comme de l’anglais américain. Je ne saurais mesurer l’impact négatif sur le SEO2

  1. CMS = Content Management System = Gestionnaire de contenu 

  2. SEO = Search Engine Optimisation