2016-10-24 2 views
1

J'ai un pseudo-site multilangue/blog hébergé sur Tumblr (donc je n'ai pas accès à la programmation côté serveur) basé sur la solution this stack.Pseudo-multilingue ne fonctionnant pas sur Chrome

<script> 

var defaultLanguage = 'pt'; 

$.ajax({ 

    url: "//ajaxhttpheaders.appspot.com", 

    dataType: 'jsonp', 

    success: function(headers) { 

     var language = headers['Accept-Language'].substring(0, 2); 

     if(language != defaultLanguage) { 

      $('span[lang="pt"], p[lang="pt"]').hide(0); 
      $('span[lang="' + language + '"], p[lang="' + language + '"]').show(0); 

     } 
    } 
}); 

</script> 

Très, très simple. Je traduis manuellement tout le contenu de chaque message (ouf!) Et ensuite je me cache en fonction de la requête AJAX.

Quand je l'ai trouvé, je testais sur Mozilla Firefox et ça fonctionnait comme un charme. Ensuite, j'ai été forcé de passer à Google Chrome pour d'autres raisons, puis l'implémentation ne fonctionnait plus.

Existe-t-il un moyen de forcer ce code à écraser tout ce qui est dans les paramètres de Chrome ou, vu que j'utilise Tumblr, d'offrir ces petits drapeaux à l'utilisateur?

+0

Pouvez-vous créer un lien vers le site? Est-ce que Chrome renvoie des erreurs dans la console? – lharby

+0

Bien sûr: http://chaoticbrasil.tk. La console a 3 avertissements et une erreur, mais je crois que tous les scripts utilisés par le thème par défaut de Tumblr (je suis toujours retiré des choses indésirables) – user5613506

+0

Hmmm, ça se voit pour moi avec lang = "en" dans Chrome et Firefox, mais peut-être que ce n'est pas le problème. J'ai ajouté le portugais à mes options de langue dans Firefox et il montre les deux travées. J'ai aussi fait cela dans Chrome, mais j'ai dû ajouter Portogeuse et le faire glisser en haut des préférences, puis les deux langues apparaissent dans votre tumblr. Vous ne savez pas vraiment comment l'imiter pour une personne avec un seul paramètre de langue. – lharby

Répondre

1

Untested, mais je pense que vous pouvez le faire:

var defaultLanguage = 'pt'; 
$.ajax({ 
    url: "//ajaxhttpheaders.appspot.com", 
    dataType: 'jsonp', 
    success: function(headers) { 
     var language = headers['Accept-Language'].substring(0, 2); 
     if(language != defaultLanguage) { 
      $('[lang="pt"]').hide(0); 
     }else{ 
      $('[lang="' + language + '"]').show(0); 
     } 
    } 
}); 

Il vous suffit de passer [lang] comme un sélecteur d'attribut une fois (on n'a pas besoin d'ajouter à la fois la portée et le paragraphe, comme cela devrait récupérer tout élément qui correspond au sélecteur).