GoLocal!
Guide technique

Guide de configuration complet

Tout ce dont vous avez besoin pour installer, configurer et utiliser GoLocal! afin de rendre votre application Bubble.io multilingue.

📦 Plugin Bubble gratuit + abonnement GoLocal! SaaS (clé API requise)
Actuel Clé gratuite/API PluginDurée d'exécution 4.1.23

Données Bubble sécurisées, traduction stable de l'interface utilisateur et logique multilingue explicite

Mettez à jour le plugin depuis Bubble Plugins avant de tester les fonctionnalités ci-dessous. La configuration du projet, les traductions et la facturation restent attachées au projet GoLocal. Les développeurs d'applications n'ont pas besoin de coller ou de conserver un script dans l'en-tête HTML de Bubble ; la version publiée du plugin contient le runtime pris en charge.

Les données modifiables restent intactes

Les entrées ordinaires, les entrées multilignes, les éditeurs Quill et les autres zones contenteditable ne sont pas traduites de manière inverse pendant la saisie par l'utilisateur.

Exclusions de contenu réutilisables

Protégez les valeurs de base de données saisies par l'utilisateur et les cellules de groupes répétitifs avec do_not_translate_selectors au lieu des ID HTML dupliqués.

Recherche inversée automatique et sécurisée

Bubble SearchBox, Dropdown, MultiDropdown hérité et Select2 MultiDropdown peuvent faire correspondre les choix traduits aux valeurs de la langue source.

Élément GoLocal Query

Utilisez un élément GoLocal Query indépendant par entrée ordinaire uniquement lorsque cette entrée pilote une recherche de texte, une condition ou un filtre API dans la langue source.

Lire le guide du développeur GoLocal Query →

1
Installer le plugin

GoLocal! est disponible sous forme de plugin gratuit sur la place de marché Bubble.io. Vous ne payez rien pour l'installer : le plugin lui-même coûte 0 $. La facturation ne s'applique que lorsque vous le connectez à un projet GoLocal! avec une clé API.

a

Ouvrez l'éditeur Bubble → onglet Plugins.

b

Cliquez sur "+ Ajouter des plugins" et recherchez "GoLocal" ou "Auto Translator".

c

Installez GoLocal! — Traducteur automatique. S'il est déjà installé, mettez-le à jour avec la dernière version publiée.

d

Faites glisser l'élément GoLocal! sur n'importe quelle page (généralement un en-tête réutilisable). L'élément est invisible.

💡
Bonne pratique : Placez GoLocal! sur un élément réutilisable (en-tête/pied de page) qui apparaît sur chaque page.

2
Créez votre compte et votre projet

Pour activer le plugin, vous avez besoin d'un Clé API. Les clés API sont générées dans votre tableau de bord GoLocal! lorsque vous créez un projet.

un
Aller à golocal.online/tableau de bord et connectez-vous avec Google. Instantané – aucun formulaire.
b
Cliquez "Nouveau projet". Saisissez le nom du projet, le domaine, la langue source et les langues cibles.
c

UN Essai gratuit de 5 jours démarre automatiquement. Aucune carte de crédit requise. Ton Clé API est généré immédiatement.

d

Copiez la clé API — vous en aurez besoin lors de la configuration du plugin dans Bubble.

⚠️
Le domaine doit correspondre exactement. La clé API est liée au domaine que vous spécifiez. Si votre application Bubble s'exécute sur myapp.bubbleapps.io, entrez exactement cela.

3
Configurer le plugin

Cliquez sur l'élément GoLocal!. Au minimum, définissez un champ:

Configuration minimale requise :

api_key→ collez la clé API de votre projet GoLocal!

Avec juste la clé API, GoLocal! charge la configuration du projet, utilise le navigateur du visiteur ou la sélection de widget enregistrée, traduit le texte visible de l'interface utilisateur et affiche le sélecteur de langue.

4
Champs du plugin — Référence

api_keyRequis

Clé API de votre projet à partir du tableau de bord GoLocal!.

Lié au domaine – peut être inclus en toute sécurité dans le code côté client.

source_languageFacultatif

Code à deux lettres de la langue d'origine de votre application. Exemples : en, uk, de.

Normalement, laissez ce champ vide lorsque la langue source est déjà configurée dans le projet GoLocal. Définissez-le uniquement lorsque vous devez intentionnellement remplacer la valeur project/Worker.

target_languageFacultatif

Laissez normalement ce champ vide. Le widget et la sélection persistante du visiteur contrôlent la langue active lors du chargement des pages.

Une valeur codée en dur telle que fr force cette langue à chaque fois que l'élément s'initialise et peut remplacer le choix du visiteur. Liez une valeur dynamique uniquement lorsque votre application Bubble possède intentionnellement un état de langue et fournit un code de langue stable sur chaque page.

enabledFacultatif

Case à cocher contrôlant si la traduction est active. Défaut: à carreaux.

show_widgetFacultatif

Afficher le widget de changement de langue intégré. Défaut: à carreaux. Désactivez-le uniquement lorsque votre application Bubble fournit ses propres commandes et appels de langue. switch_language.

widget_positionFacultatif

Position des widgets : bottom-right (défaut), bottom-left, top-right, top-left.

dataset_1Facultatif

Pré-traduisez votre base de données Bubble pour un chargement instantané.

Format structuré (recommandé) :

// Configuration de Bubble :

Effectuez une recherche sur (Catégories) :format sous forme de texte

Contenu: {Le titre de cette catégorie ; Le nom de cette catégorie ; Le corps de cette catégorie}

Délimiteur : ,

// Ajoute un autre type :

:append Faites une recherche sur (Cures) :format sous forme de texte

Contenu: {Le titre de ce remède ; Le nom de ce remède ; La prescription de ce remède}

Délimiteur : ,

Champs à l'intérieur { } séparés par ; — des blocs séparés par ,. Voir Ensembles de données pour plus de détails.

do_not_translate_idsFacultatif

ID d'éléments séparés par des virgules à ne jamais traduire. La spécification d’un ID de groupe/conteneur exclut tous les enfants.

Exemple: user-bio, code-block, brand-section

Les ID HTML doivent être uniques. Ne réutilisez pas le même identifiant dans les cellules de groupes répétitifs ; utilisez plutôt do_not_translate_selectors avec une classe.

do_not_translate_selectorsFacultatif

Sélecteurs CSS pour le contenu réutilisable ou répétitif qui doit rester exactement tel que stocké. Un élément correspondant et tous ses enfants sont exclus.

Exemples : .gl-user-content, [data-user-content], [id^="gl-user-content-"]

Recommandé pour les valeurs de base de données saisies par l'utilisateur et les groupes répétitifs. Un sélecteur de classe ou de préfixe d'ID peut faire correspondre en toute sécurité de nombreuses lignes sans créer d'ID HTML en double.

private_translate_idsFacultatif

Des éléments qui sont traduits mais les traductions ne sont pas mis en cache globalement. À utiliser pour les données par utilisateur (noms, adresses).

Exemple: user-name, order-address

Si le contenu doit rester exactement tel que l'utilisateur l'a saisi, n'utilisez pas ce champ. Excluez-le plutôt avec do_not_translate_selectors.

5
Ensembles de données — Traduction de votre base de données Bubble

La plupart des applications Bubble affichent les données de la base de données. Sans ensembles de données, le contenu dynamique est traduit dès la première vue, ce qui entraîne un retard visible. Les ensembles de données prétraduisent tout pour chargement instantané.

Format 1 : Structuré – pour les éléments à plusieurs champs (recommandé)

Enveloppez chaque article dans {}, séparez les champs par ; (point-virgule), utilisez , comme délimiteur entre les éléments.

// Bubble : Effectuer une recherche sur (Catégories) :format en texte

Contenu: {Le titre de cette catégorie ; Le nom de cette catégorie ; Le corps de cette catégorie}

Délimiteur : ,

// Ajouter : Effectuer une recherche sur (Cures) :format sous forme de texte

Contenu: {Le titre de ce remède ; Le nom de ce remède ; La prescription de ce remède}

Délimiteur : ,

// Résultat: {Santé;Bien-être;Guide...},{Beauté ; Soins de la peau ; Routines...},{Aspirine;Soulagement;Prendre 2x...}

Clé: Champs à l'intérieur {} divisé par ; — blocs divisés par , — les virgules dans votre texte sont sûres.

Format 2 : Simple – pour les listes à valeur unique

Pour les valeurs courtes sans virgules (noms de catégories, balises) :

Contenu: Le nom de cette catégorie Délimiteur : ,

// Sortie : électronique, vêtements, livres, jouets

Important: Si le texte peut contenir des virgules, utilisez toujours le format structuré avec {field;field} emballage.

💡
Vous n'avez pas besoin de stocker les traductions dans votre base de données Bubble. GoLocal! traduit et met tout en cache automatiquement. Votre base de données reste dans une seule langue.
💡
La recherche multilingue est intentionnellement limitée. La recherche inversée automatique est disponible pour Bubble SearchBox, Dropdown, MultiDropdown hérité et Select2 MultiDropdown. Pour une entrée ordinaire qui filtre le texte dans la langue source, ajoutez-en une GoLocal Query élément et utiliser son normalized_query uniquement dans le filtre ou l'état. Consultez le guide complet Bubble.

6
Bubble États, événements et actions

L'élément principal GoLocal! possède la traduction de page et expose la langue active à Bubble. Utilisez ses états dans les conditions et ses événements pour démarrer les flux de travail au bon moment du cycle de vie de la traduction.

1. Prêt pour l'exécution

translator_ready = yes signifie GoLocal initialisé. Cela ne signifie pas que tous les éléments dynamiques Bubble ont fini de se traduire.

2. La langue a changé

language_changed se déclenche lorsque la langue active change. Lire current_language ici.

3. Réussite terminée

translation_complete se déclenche une fois qu'un lot de traduction est terminé. Le contenu dynamique peut créer des lots ultérieurs.

États exposés
current_languagetext

Le code de langue actif à deux lettres. Utilisez-le pour les liens PDF, les conditions Bubble et l'interface utilisateur linguistique appartenant à l'application.

detected_languagetext

Langue source/navigateur détectée signalée par le moteur d'exécution.

translator_readyyes/no

Oui, une fois le runtime de traduction initialisé.

is_translatingyes/no

Oui pendant que GoLocal traite une passe de traduction.

translation_completeyes/no

Indicateur d'achèvement pour la passe la plus récente.

total_textsnumber

Nombre d'éléments de texte observés dans la session d'exécution en cours.

cached_local / cached_bundle / cached_servernumber

Compteurs de cache de diagnostic. Utile pour le support et les contrôles de performances.

traduit / erreurs / tokens_usednumber

Traduction d’exécution et compteurs d’erreurs.

last_error / preload_statustext

La dernière erreur d'exécution et l'état de préchargement pour les diagnostics.

Actions des éléments

  • switch_language — passer au champ d'action requis target_lang, Par exemple fr.
  • Start_translation — commencer ou reprendre l'observation et la traduction.
  • Stop_translation - arrêtez d'observer et de traduire jusqu'à ce que vous redémarriez.
  • rescan_dom - analyse explicitement le contenu rendu après une fenêtre contextuelle Bubble, un élément réutilisable ou une mise à jour de groupe répétitif.

Exemple : afficher un lien PDF en français

Créez une condition Bubble sur le lien ou le groupe : When GoLocal! A's current_language is "fr". Si un workflow doit s'exécuter lorsque le visiteur change de langue, utilisez When GoLocal! A language_changed. Vous n'avez pas besoin d'attendre translation_complete juste pour lire la langue sélectionnée.

⚠️
GoLocal Query est un élément distinct. Il ne remplace pas l'élément principal GoLocal! et ses états ne font pas partie de l'élément principal. Ajoutez-le uniquement pour une entrée normale spécifique dont la logique Bubble en aval nécessite une valeur de texte en langue source. Ouvrez le guide de requête complet.

7
Données utilisateur, formulaires et groupes répétitifs

GoLocal traduit le texte de l'interface, mais les données saisies ou créées par vos utilisateurs doivent rester stables. Le runtime actuel protège les entrées ordinaires, les entrées multilignes, les éditeurs Quill et autres contenteditable zones pendant qu’une personne tape.

Coffre-fort par défaut

  • • Les valeurs d'entrée et d'entrée multiligne sont enregistrées exactement telles que saisies.
  • • Quill .ql-editor et d'autres régions modifiables sont ignorées lors de la saisie.
  • • Les e-mails, mots de passe, numéros, dates, identifiants et fichiers doivent toujours utiliser leurs valeurs Bubble d'origine.

L'affichage nécessite une exclusion

Lorsque le contenu utilisateur enregistré est affiché ultérieurement par un élément de texte Bubble normal, GoLocal ne peut pas savoir s'il s'agit d'une copie de l'interface utilisateur ou de données utilisateur. Marquez cet élément d’affichage ou son plus petit conteneur comme zone sans traduction.

Configuration de groupe répétitif recommandée

  1. 1. Sélectionnez uniquement l'élément Texte qui affiche le contenu utilisateur. N'excluez pas l'intégralité du groupe répétitif si ses boutons, titres et étiquettes statiques doivent toujours être traduits.
  2. 2. Donnez à chaque ligne un identifiant dynamique unique.
    gl-user-content-Identifiant unique de l'objet de la cellule actuelle
  3. 3. Ajoutez un sélecteur à l'élément GoLocal.
    do_not_translate_selectors = [id^="gl-user-content-"]

Si votre configuration Bubble ou un élément réutilisable peut appliquer une classe personnalisée, .gl-user-content est encore plus simple. Ajoutez cette classe une fois à do_not_translate_selectors.

Marqueurs sans traduction pris en charge

Le runtime respecte data-tr-skip, data-no-translate, translate="no", et imbriqué .notranslate éléments. Les champs de sélection ID et CSS configurés restent la méthode native Bubble la plus simple.

Passer par rapport à la traduction privée

do_not_translate_* conserve la valeur d'origine. private_translate_ids traduit toujours la valeur mais empêche un cache global partagé. Utilisez la traduction privée uniquement lorsque le contenu doit véritablement être traduit.

⚠️
Ne dupliquez jamais un ID HTML dans un groupe répétitif. Un ID en double peut entraîner une correspondance imprévisible d'un sélecteur ou exclure une zone plus grande que prévue. Utilisez une classe, un attribut de données ou un ID dynamique contenant l'ID unique de l'objet.
💡
Icônes matérielles et contrôles de glyphes personnalisés : certaines icônes Bubble ou tierces sont rendues à partir de noms de glyphes littéraux tels que home ou check_box. Si une icône est basée sur du texte, excluez le plus petit conteneur d'icône/de contrôle afin que le mot-clé glyphe ne soit jamais traduit.

8
Éditeur de traduction et corrections manuelles

Utilisez l'éditeur de traduction pour la copie de produit fixe : étiquettes de navigation, titres, boutons, texte d'aide et autres expressions qui doivent faire l'objet d'une traduction révisée. Les saisies manuelles sont verrouillées et ne sont pas remplacées par une traduction automatique ultérieure.

Bonne correction manuelle

Source Plan de mise à niveau → phrase produit française révisée Améliorer le plan. Il s'agit d'une copie d'interface stable et appartient à l'éditeur.

Ne corrigez pas les données utilisateur une ligne à la fois

Un nom créé par le client tel que Travail à domicile doit être exclu au niveau de l’élément d’affichage Bubble. L’ajout de milliers de traductions d’identité ne constitue pas un remplacement sûr pour une zone sans traduction.

  1. 1. Ouvrez le projet dans le tableau de bord GoLocal et choisissez Traductions.
  2. 2. Recherchez l'expression source exacte et la paire de langues.
  3. 3. Modifiez la valeur cible ou utilisez Ajouter une traduction pour une nouvelle phrase source exacte.
  4. 4. Sauvegarder. L'entrée est marquée manuel, la version du bundle change et le runtime actualise le dictionnaire du projet.
  5. 5. Testez à nouveau l’itinéraire Bubble exact où la phrase est restituée. Utiliser rescan_dom uniquement si la phrase apparaît après un rendu tiers inhabituel.
💡
La paire exacte de langue source est importante. Si la langue source du projet est l'anglais, ajoutez la paire de manuels comme en → fr, pas auto → fr. Le runtime demande la paire de sources résolues du projet.

9
Comment fonctionne la traduction

GoLocal surveille le rendu Bubble DOM, applique d'abord les traductions du bundle de projet et du cache local, et ne demande que les phrases manquantes ou modifiées. Il continue d'observer les popups, les éléments réutilisables et les groupes répétitifs que Bubble restituera ultérieurement.

1

Chargement initial de la page

Le moteur d'exécution résout les langues source et cible, charge le groupe de projets en cours, analyse le texte visible de l'interface utilisateur et révèle la page via le flux anti-scintillement intégré.

2

Traductions mises en cache

Les phrases connues sont appliquées à partir du cache du bundle ou du navigateur sans les régénérer. Une version modifiée du bundle invalide les valeurs obsolètes mises en cache.

3

Contenu dynamique Bubble

L'observateur DOM récupère les fenêtres contextuelles nouvellement rendues, les éléments réutilisables, les groupes visibles sous condition et les cellules de groupes répétitifs. rescan_dom est une solution de secours explicite.

L'anti-scintillement est intégré au runtime du plugin publié. Les développeurs d'applications mettent à jour le plugin à partir de l'onglet Plugins de Bubble ; ils ne collent pas de script GoLocal dans l'en-tête HTML de l'application. Le délai d'attente de sécurité révèle toujours la page même si une requête réseau échoue.

10
Dépannage et tests de version

La page est réinitialisée dans une seule langue

Laissez target_language vide sur chaque page et élément GoLocal réutilisable, sauf si votre application Bubble possède délibérément le langage. Une valeur codée en dur est réappliquée lors de l’initialisation.

Le widget est manquant

Confirmez que show_widget est coché, que la version la plus récente du plugin est installée et qu'un seul élément GoLocal prévu contrôle la page. Testez ensuite en dehors du mode débogueur étape par étape de Bubble.

Une fenêtre contextuelle ou une nouvelle ligne de groupe répétitif reste non traduite

Attendez que l'élément devienne visible. L'observateur le trouve normalement automatiquement ; si un élément tiers s'affiche de manière inhabituelle, exécutez rescan_dom après l'affichage de la fenêtre contextuelle ou du groupe.

Modifications de saisie ou de texte enrichi lors de la saisie

Mettez à jour le plug-in, confirmez le runtime actuel et vérifiez que le flux de travail de sauvegarde lit la valeur d'entrée/éditeur d'origine, et non le texte d'affichage traduit ou normalized_query.

Le texte français créé par l'utilisateur est à nouveau traduit

Exclure l'affichage Texte/conteneur via do_not_translate_selectors. Protégez la plus petite valeur dynamique, pas toute l’interface utilisateur statique qui l’entoure.

Une correction manuelle revient en auto

Les entrées manuelles actuelles sont verrouillées. Confirmez que vous avez modifié le même texte source et la même paire de langues exactes utilisées par le moteur d'exécution, puis envoyez le projet, l'itinéraire, la phrase et la durée du test à l'assistance.

Les noms de mois/jour restent en anglais

Le navigateur natif ou le chrome du sélecteur de date Bubble suit les paramètres régionaux du navigateur/contrôle. GoLocal traduit les étiquettes environnantes mais ne réécrit pas l'interface utilisateur interne du sélecteur de date.

Chrome propose sa propre traduction de page

Le plugin marque déjà le document notranslate pour la traduction du navigateur tout en permettant à GoLocal de s'exécuter. Mettez à jour le plugin ; n’ajoutez pas de deuxième extension de traduction ou de deuxième script.

Le texte s'enroule différemment après la traduction

GoLocal préserve la typographie Bubble. Les phrases traduites peuvent être plus longues, alors vérifiez la largeur minimale, la largeur maximale, la hauteur d'ajustement, le débordement et les règles réactives de Bubble à chaque point d'arrêt.

Liste de contrôle d'acceptation Bubble

  • ✓Changer de source → cible → source sans actualiser.
  • ✓Naviguez entre toutes les pages Bubble et les en-têtes réutilisables.
  • ✓Ouvrez les fenêtres contextuelles et chargez les lignes de groupes répétitifs après le chargement de la page.
  • ✓Tapez, collez, modifiez, enregistrez et rouvrez les champs de texte normal et riche.
  • ✓Testez une valeur de données utilisateur exclue dans chaque groupe répétitif.
  • ✓Testez SearchBox, liste déroulante, recherche héritée/Select2 MultiDropdown.
  • ✓Testez chaque lien conditionnel et PDF/ressource current_language.
  • ✓Testez à nouveau Chrome, Safari, la largeur mobile et une session privée.
💡
Preuves utiles à l’appui : envoyer l'URL exacte en direct ou de test de version, le nom du projet, les langues source et cible, le type d'élément Bubble concerné, les étapes à reproduire, l'heure de test avec le fuseau horaire, la capture d'écran et les lignes de console commençant par [GoLocal v4].

11
Tarifs& Facturation

Trois plans, tous avec mots de traduction illimités et langues cibles illimitées.

FonctionnalitéStarterProBusiness
Prix ​​mensuel$15/mo$35/mo$89/mo
Prix ​​annuel$149/yr$349/yr$890/yr
Langues ciblesIllimitéIllimitéIllimité
Limite MAU30K150K1M
Projets112

MAU

Visiteurs uniques qui ont vu les traductions. Les robots ont été filtrés. 10 % de dépassement gratuit, puis 3 $/10 000 $ supplémentaires.

Langues

Tous les forfaits payants incluent un nombre illimité de langues cibles sans frais supplémentaires par langue.

Essai gratuit de 5 jours

Chaque nouveau projet commence par un essai gratuit. Aucune carte de crédit requise.

12
Programme de partenariat

Gagnez de l'argent en recommandant GoLocal!

Partagez votre lien de parrainage - gagnez commissions récurrentes pour chaque client payant que vous apportez.

1

Inscrivez-vous en tant que partenaire

Tableau de bord → onglet Partenaire → « Rejoindre le programme partenaire ». Obtenez votre lien de parrainage unique.

2

Partagez votre lien

Blog, YouTube, forum Bubble, réseaux sociaux, tutoriels ou directement avec les clients.

3

Gagnez des commissions

Commission récurrente pour la durée de vie de l'abonnement de chaque utilisateur référé.

4

Soyez payé

Demandez un paiement par virement bancaire ou PayPal lorsque le solde atteint le seuil minimum.

💡
Parfait pour les agences Bubble : Recommander GoLocal! aux clients. Vous gagnez un revenu passif, ils bénéficient d’une traduction professionnelle.

Prêt à rendre votre application multilingue ?

Installez le plugin gratuit, créez un projet, collez votre clé API — et votre application Bubble parle toutes les langues.