Script pour traduire Noloco en français

Ce script permet de traduire (presque) tous les éléments de l'application Noloco (le code ne traduit pas le builder panel, mais il serait possible d'ajouter du code pour cela), en manipulant le DOM grâce à du code JavaScript.

Utilisation
  • Copier ce code dans Settings -> Custom Code -> Footer code
  • Il est tout à fait possible d'ajouter des éléments supplémentaires de traduction : pour cela, ajoutez simplement ce que vous souhaitez traduire en répétant ce qui existe déjà dans le code.
  • Un point d'attention : ajoutez les traductions supplémentaires dans la bonne "section" : vous noterez que le code est divisé en querySelector (exemple : for (const parent of document.querySelectorAll("span")) { : cela signifie que la traduction de ce qu'il y a dans cette section portera sur les éléments span uniquement. Il faut donc bien regarder, avant l'ajout de traductions supplémentaires, quel balisage contient ce que vous souhaitez traduire.
  • sur Chrome : clic droit sur la page > Inspecter > sélectionner ce que vous souhaitez traduire.


Quelques éléments d'explication
  • fonction translate :
  • Il s'agit de la fonction qui contient les commandes permettant de manipuler les éléments du DOM.
  • C'est l'appel de fonction pour exécuter la fonction translate lorsque la page est chargée.

  • setInterval(translate, 333);
  • C'est une fonction d'intervalle qui appelle translate à nouveau dans l'intervalle défini. Cela est nécessaire car certains éléments de votre app Noloco sont régulièrement mis à jour et rechargés.


Code complet à copier :
<script>
setInterval(translate, 333);

function translate() {

for (const parent of document.querySelectorAll("span")) {

for (const child of parent.childNodes) {

if (child.data == "Save") {

child.data = "Enregistrer";

}

if (child.data == "Edit") {

child.data = "Modifier";

}

if (child.data == "Done") {

child.data = "Terminé";

}

if (child.data == "Or") {

child.data = "Ou";

}

if (child.data == "Already registered?") {

child.data = "Vous avez déjà un compte ?";

}

if (child.nodeValue && child.nodeValue.includes("Showing")) {

child.nodeValue = child.nodeValue.replace("Showing", "Montrer").replace("of", "de").replace("results", "résultats")

}

if (child.data == "Send a message") {

child.data = "Envoyer un message";

}

}

}

for (const parent of document.querySelectorAll("button")) {

for (const child of parent.childNodes) {

if (child.data == "Confirm") {

child.data = "Confirmer";

}

if (child.data == "Cancel") {

child.data = "Annuler";

}

if (child.data == "Sign out") {

child.data = "Déconnexion";

}

if (child.data == "Next") {

child.data = "Suivant";

}

if (child.data == "Sign in") {

child.data = "Se connecter";

}

if (child.data == "Email me a recovery link") {

child.data = "Recevoir un mail de récupération";

}

if (child.data == "Previous") {

child.data = "Précédent";

}

if (child.data == "Accept my invitation") {

child.data = "Valider";

}

}

}

for (const parent of document.querySelectorAll("a")) {

for (const child of parent.childNodes) {

if (child.data == "View profile") {

child.data = "Voir mon profil";

}

if (child.data == "Sign in now") {

child.data = "Se connecter";

}

if (child.data == "Forgot your password?") {

child.data = "Mot de passe oublié ?";

}

}

}

for (const parent of document.querySelectorAll("h2")) {

for (const child of parent.childNodes) {

if (child.data == "Sign in to your account") {

child.data = "Se connecter";

}

if (child.data == "Finish setting up your account") {

child.data = "Terminez la création de votre compte ci-dessous";

}

if (child.data == "Recover your password") {

child.data = "Récupérer mon mot de passe";

}

}

}

for (const parent of document.querySelectorAll("h3")) {

for (const child of parent.childNodes) {

if (child.data == "Magic link sent!") {

child.data = "Lien magique envoyé";

}

if (child.data == "Use your password to sign in") {

child.data = "Utilisez votre mot de passe pour vous connecter";

}

}

}

for (const parent of document.querySelectorAll("div")) {

for (const child of parent.childNodes) {

if (child.data == "The invitation token used is expired or invalid") {

child.data = "Il semble que vous ayez déjà effectué la création du compte : ce lien ne fonctionne donc plus, et il faut simplement vous connecter";

}

if (child.data == "Your password must include at least one number") {

child.data = "Votre mot de passe doit inclure au moins un chiffre";

}

if (child.data == "Your password does not match the confirmation") {

child.data = "Les deux mots de passe ne correspondent pas";

}

if (child.data == "Your password must include a mix of uppercase and lowercase letters") {

child.data = "Votre mot de passe doit inclure un mélange de lettres en minuscule et en majuscule";

}

if (child.data == "Your password must include a special character such as ($, %, *, @)") {

child.data = "Votre mot de passe doit inclure au moins un caractère spécial (par exemple : !, ?, @, *, etc.)";

}

}

}

for (const parent of document.querySelectorAll("p")) {

for (const child of parent.childNodes) {

if (child.nodeValue && child.nodeValue.includes("We have sent an email to")) {

child.nodeValue = "Nous avons envoyé un email à ";

}

else if (child.nodeValue && child.nodeValue.includes("Just click the link in the email to sign in!")) {

child.nodeValue = "Cliquez sur le lien pour vous connecter";

}

if (child.nodeValue && child.nodeValue.includes("If we find your account we will send you an email with more instructions. Just click the link if you get it")) {

child.nodeValue = "Si votre compte existe, nous vous avons envoyé un email avec des instructions.";

}

}

}

for (const parent of document.querySelectorAll("label")) {

for (const child of parent.childNodes) {

if (child.data == "Email address") {

child.data = "Adresse email";

}

if (child.data == "Your email") {

child.data = "Votre email";

}

if (child.data == "First name") {

child.data = "Prénom";

}

if (child.data == "Last name") {

child.data = "Nom de famille";

}

if (child.data == "Password") {

child.data = "Mot de passe";

}

if (child.data == "Confirm your password") {

child.data = "Confirmez le mot de passe";

}

}

}

for (const parent of document.querySelectorAll("li")) {

for (const child of parent.childNodes) {

if (child.data == "Text length should be equal to 4 characters") {

child.data = "La longueur devrait être égale à 4 caractères";

}
}

}

for (const parent of document.querySelectorAll("input")) {

if (parent.placeholder == "Password") {

parent.placeholder = "Mot de passe";

}

if (parent.placeholder == "lisa@example.com") {

parent.placeholder = "lisa@example.fr";

}

if (parent.placeholder == "Search...") {

parent.placeholder = "Chercher...";

}

}

}
</script >