GoLocal!
Ouvrir le tableau de bord
Guide du développeur BubbleExécution gratuite 4.1.23

Recherche multilingue sécurisée avec GoLocal Query

Un guide convivial pour les débutants sur l'élément principal GoLocal, l'élément facultatif GoLocal Query, les contrôles de recherche automatique de Bubble et le moyen le plus sûr de séparer les interfaces traduites de la logique de base de données.

Le concept de base

Une application Bubble en possède normalement un langage canonique dans lequel ses étiquettes de base de données, les valeurs d'affichage Option Set et les conditions de texte codées en dur ont été créées. GoLocal peut afficher ces valeurs dans une autre langue, mais la logique Bubble peut toujours s'attendre à la valeur canonique.

Origine du projet

Anglais

Catégorie stockée : Actualités

Le visiteur voit

Français

Etiquette visible : Actualités

Recherches Bubble

Nouvelles

Valeur source normalisée

Règle de sécurité : l'entrée visible reste la valeur destinée à l'utilisateur et à la sauvegarde. Un séparé normalized_query est utilisé uniquement lorsque Bubble a explicitement besoin de texte dans la langue source.

Quel élément GoLocal dois-je utiliser ?

Le plugin contient deux éléments Bubble non visuels différents. Ils résolvent différents problèmes. La plupart des pages ont besoin du principal GoLocal! élément; seules les pages présentant un problème de recherche de texte spécifique doivent GoLocal Query.

Disponibilité du plugin : le séparé GoLocal Query L'élément est inclus dans le plugin Bubble Free/API-key et fonctionne avec un projet GoLocal SaaS actif.

Traducteur requis

GoLocal!

Il s'agit du principal moteur de traduction. Il charge votre projet, traduit le contenu de la page, affiche le widget de langue et publie les événements de langue et de traduction actuels.

  • Placez généralement une instance dans un en-tête réutilisable ou un autre élément partagé par la page.
  • Utilisez ses champs pour la clé API, le widget, les ID/sélecteurs exclus et le comportement source/cible.
  • Utilisez ses états et événements lorsque Bubble doit connaître la langue sélectionnée ou l'état de la traduction.

Assistant logique facultatif

GoLocal Query

Cela ne traduit pas la page et n'affiche pas de widget. Il convertit une expression de recherche saisie par un visiteur en expression canonique dans la langue source de votre application pour la logique Bubble.

  • Ajoutez-le uniquement lorsqu'une entrée normale doit rechercher ou comparer du texte stocké dans la langue source du projet.
  • Utilisez un élément de requête par entrée de recherche indépendante.
  • N'utilisez jamais normalized_query pour enregistrer des noms, titres, descriptions ou messages créés par l'utilisateur.
Élément ou tâche BubbleQuoi utiliser
Texte, bouton, groupe, interface utilisateur réutilisableGoLocal! uniquement
Entrée qui enregistre les données utilisateurValeur d'entrée d'origine
Entrée simple filtrant un champ de texte anglaisUn GoLocal Query
Bubble SearchBox ou liste déroulanteAutomatique
Héritage ou Select2 MultiDropdownAutomatique
Entrée multiligne, Quill, contenteditableValeur d'origine de l'éditeur
Contrainte de groupe répétitiveChose/Option Set/ID en premier
Email, téléphone, mot de passe, numéro, date, identifiant, fichierValeur originale
Décision simple : si la valeur est affichée, utilisez le traducteur principal. Si la valeur est enregistrée, utilisez la valeur Bubble d'origine. Si une phrase traduite doit être mise en correspondance avec le texte de la langue source, utilisez un contrôle automatique pris en charge ou un élément GoLocal Query dédié.

Architecture Bubble préférée

Dans la mesure du possible, créez des conditions autour des objets Bubble, des options Option Set, des identifiants uniques ou des codes stables, et non du texte affiché traduit. La traduction doit changer ce qu’une personne voit, et non l’identité du document.

Le mieux : comparer l'objet

Current cell's Article's Category
is Category News

Le visiteur peut voir « Actualités », mais Bubble compare l'option Category Thing ou Option Set elle-même.

Utiliser la requête uniquement pour la correspondance de texte

Category name contains
GoLocal Query Categories's normalized_query

Ceci est approprié lorsque la base de données ou une condition existante recherche véritablement un texte anglais canonique.

Exemple d'ensemble de catégories

Anglais canoniqueAffichage français
NouvellesActualités
AvisAvis
TutorielTutoriel
GuideGuide
RevoirAvis
HistoireHistoire
AutreAutre

Recherche inversée automatique

Exécution gratuite 4.1.23 applique automatiquement la recherche inversée uniquement aux contrôles Bubble dont le but est de sélectionner ou de rechercher une valeur existante :

Bubble SearchBox
Liste déroulante Bubble
Héritage Bubble MultiDropdown
Actuel Select2 MultiDropdown

Types de visiteurs : Actualités

Matchs de contrôle : Nouvelles

Le visiteur continue de voir : Actualités

Chaque contrôle pris en charge a un état inversé isolé, y compris plusieurs contrôles sur la même page. N'ajoutez pas d'élément GoLocal Query uniquement pour dupliquer ce comportement intégré.

Bubble SearchBox

Utilisez-le lorsque le visiteur recherche et sélectionne un objet Bubble existant. GoLocal aide la phrase traduite à correspondre au texte canonique utilisé par le SearchBox.

Liste déroulante Bubble

Utilisez-le pour une sélection unique dans une liste statique ou dynamique existante. L'option sélectionnée reste la valeur réelle Bubble.

Héritage Bubble MultiDropdown

Utilisez-le pour sélectionner plusieurs options existantes dans les anciennes applications Bubble. Chaque contrôle est normalisé indépendamment.

Select2 MultiDropdown

Utilisez-le pour les contrôles à sélection multiple consultables actuels. Le texte de recherche saisi peut correspondre aux étiquettes des options de la langue source sans modifier les entrées ordinaires.

Une entrée simple Bubble n’est délibérément pas automatique. Le plugin ne peut pas deviner en toute sécurité si une entrée est un champ de recherche, le nom d'une personne, le titre d'une base de données, une valeur conditionnelle ou un texte qui sera enregistré. Ajoutez GoLocal Query uniquement pour l'entrée particulière dont la logique en aval nécessite un texte canonique.

Utilisation de GoLocal Query

Utiliser le non-visuel GoLocal Query élément lorsqu'une entrée Bubble ordinaire entraîne intentionnellement une recherche de texte, un filtre conditionnel dans la langue source ou un filtre backend/API.

1

Ajouter un élément de requête pour cette entrée

Placez-le une fois sur la page ou dans l'élément réutilisable propriétaire de l'Input. Ne le placez pas dans chaque cellule d’un groupe répétitif.

Element name: GoLocal Query Categories
2

Lier son champ de requête

Query = Input Category Search's value
Enabled = yes
Debounce (ms) = 180

Bubble met automatiquement à jour l'élément lorsque la valeur d'entrée dynamique change. Aucun flux de travail avec modification des entrées n'est requis.

3

Utilisez normalized_query uniquement dans la logique du langage source

GoLocal Query Categories's normalized_query

Utilisez cette valeur dans un paramètre de contrainte de groupe répétitif, de filtre avancé, de texte conditionnel ou API qui attend l'anglais.

4

Gardez les sauvegardes et la validation connectées à l'entrée

Save Category Name = Input Category Search's value

Ne remplacez jamais une valeur de sauvegarde normale, une vérification de courrier électronique, un calcul de nombre ou une vérification de champ obligatoire par normalized_query.

Que se passe-t-il pendant que le visiteur tape ?

  1. 1L'entrée change: Bubble transmet la valeur d'entrée actuelle exacte dans le champ Requête.
  2. 2Le rebond attend brièvement: La valeur par défaut de 180 ms empêche une demande pour chaque frappe.
  3. 3La phrase la plus récente est normalisée: Par exemple, « Actualités » est résolu en « News ». Les requêtes plus anciennes et inachevées ne peuvent pas écraser le résultat le plus récent.
  4. 4Bubble reçoit les états: normalized_query devient « News », is_normalizing devient non et l'événement normalisé se déclenche.
  5. 5Seule la logique prévue le consomme: Le filtre de groupe répétitif, conditionnel ou API utilise normalized_query ; les sauvegardes utilisent toujours l'entrée d'origine.

Exemples pratiques de Bubble

Groupe répétitif

Rechercher des catégories d'articles en anglais à partir d'une entrée en français

Les types de visiteurs Actualités. La base de données stocke Nouvelles. Définissez la contrainte de nom de catégorie du groupe répétitif sur :

GoLocal Query Categories's normalized_query

Préférez une sélection Catégorie Objet/Option Set lorsqu'elle est disponible ; utilisez la normalisation du texte uniquement lorsque le filtre est réellement basé sur du texte.

Bubble conditionnel

Comparer avec une valeur de langue source codée en dur

When GoLocal Query Status's is_normalizing is no
and GoLocal Query Status's normalized_query is "Archived"

Si la condition contrôle un flux de travail critique, attendez la fin de la normalisation. Pour le filtrage en affichage uniquement, le repli brut peut être suffisant.

Backend ou API

Envoyer une requête en langage canonique à un point de terminaison

API parameter q = GoLocal Query Products's normalized_query
Run only when is_normalizing is no

Les identifiants, UUID, les e-mails, les jetons, les dates et les valeurs numériques doivent contourner GoLocal Query et être envoyés tels quels.

Procédure pas à pas complète pour débutant

Filtrer les articles par un nom de catégorie traduit

Supposons que l'application ait été créée en anglais. Le champ de la base de données Nom de la catégorie contient Nouvelles, mais un visiteur français tape Actualités dans une entrée normale.

1. Nommez clairement l'entrée Bubble
Input Category Search
2. Ajoutez et nommez un assistant non visuel
GoLocal Query Categories
3. Liez le champ d'assistance
GoLocal Query Categories → Query
= Input Category Search's value
4. Définissez la contrainte de texte du groupe répétitif
Search for Articles
Category name = GoLocal Query Categories's normalized_query
5. Gardez les flux de travail de création/modification inchangés
Create a new Article's title
= Input Article Title's value

Résultat : le visiteur recherche en français, Bubble trouve la valeur de la base de données en anglais et aucun texte saisi par l'utilisateur n'est réécrit ou enregistré sous une autre forme.

Pages avec plusieurs entrées

Créez une instance GoLocal Query pour chaque contexte de recherche indépendant. Chaque instance a sa propre valeur, sa propre minuterie anti-rebond, sa garde de séquence, ses états et ses événements, de sorte qu'une entrée ne peut pas en écraser une autre.

Recherche d'articles d'entréeArticles GoLocal QueryGroupe répétitif d'articles
Saisir la recherche de clientsClients GoLocal QueryFiltre client API
Filtre de balise d'entréeGoLocal Query BalisesÉtat de l'étiquette
Ne réutilisez pas un élément de requête pour des entrées non liées. Si une valeur doit franchir une limite d'élément réutilisable, copiez le normalized_query de cet élément spécifique dans un état personnalisé Bubble dédié lorsque son normalized incendies événementiels.

Ce qui doit rester intact

Utilisez GoLocal Query pour

  • Texte de forme libre utilisé pour rechercher des champs de base de données en langage canonique
  • Conditions de texte qui attendent une constante anglaise
  • Paramètres de requête API dont le backend attend l'anglais
  • Contrôles de recherche tiers qui exposent leur requête saisie à Bubble

Ne l'utilisez pas pour

  • Noms, titres, commentaires, descriptions ou balises créées par l'utilisateur en cours d'enregistrement
  • Contenu Quill, texte enrichi, contenteditable ou entrée multiligne
  • E-mails, mots de passe, téléphones, identifiants, dates, numéros, fichiers ou validation
  • Objets Bubble ou objets Option Set pouvant être comparés directement

Contenu utilisateur enregistré affiché plus tard

Une entrée protégée peut toujours être rendue ultérieurement dans un élément de texte Bubble normal. Marquez le conteneur d'affichage avec une classe réutilisable telle que .gl-user-content et ajoutez-le à l'élément principal GoLocal do_not_translate_selectors. Pour les groupes répétitifs, utilisez une classe/un sélecteur au lieu de dupliquer le même ID HTML sur les lignes.

Champs, états et événements

Champs

Querytext

Lié à une valeur d’entrée Bubble visible.

Enabledyes/no

Par défaut oui. Lorsqu'il est désactivé, le texte coupé passe sans changement.

Debounce (ms)number

Par défaut 180. La plage recommandée pour la recherche est de 150 à 250 ms.

États

original_querytext

Valeur exacte reçue de Bubble avant normalisation.

normalized_querytext

Valeur canonique de la langue source pour la logique de recherche ou de comparaison.

is_normalizingyes/no

Oui pendant que la requête non vide la plus récente est en cours de résolution.

normalization_foundyes/no

Oui lorsqu'un mappage de langue source a été trouvé.

last_errortext

Message de panne technique ; vide en fonctionnement normal.

normalisé

Se déclenche une fois la dernière requête terminée. Utilisez-le lorsqu'un flux de travail doit attendre ou copier le résultat dans un état personnalisé.

normalization_failed

Se déclenche pour une panne technique. La requête brute reste une solution de secours utilisable et les détails apparaissent dans last_error.

Dépannage des configurations Bubble courantes

normalized_query est toujours égal à l'entrée brute

Confirmez que l'élément principal GoLocal! est présent et prêt, que la langue source du projet est correctement configurée et que le champ Requête est lié à l'entrée prévue. Une phrase inconnue peut intentionnellement utiliser le texte brut comme solution de repli sûre.

Le groupe répétitif montre brièvement le résultat précédent

Pour un filtrage strict, affichez un état de chargement ou exécutez la recherche finale uniquement lorsque l'état is_normalizing de l'élément de requête correspondant est non. Le garde de séquence empêche une requête plus ancienne de remplacer un résultat plus récent.

Un titre ou une description enregistré a été modifié

Le flux de travail de sauvegarde fait référence à normalized_query ou au texte affiché traduit. Remplacez-le par la valeur d'origine de l'entrée, de l'entrée multiligne ou de l'éditeur de texte enrichi. GoLocal Query est uniquement destiné à la logique de correspondance.

Deux entrées interfèrent l'une avec l'autre

Donnez à chaque entrée de recherche indépendante son propre élément GoLocal Query. Ne basculez pas dynamiquement un assistant entre des entrées non liées.

Un sélecteur tiers n'inverse pas la correspondance

La prise en charge automatique est limitée à Bubble SearchBox, Bubble Dropdown, MultiDropdown hérité et Select2 MultiDropdown. Si le contrôle tiers expose le texte saisi dans Bubble, connectez ce texte à un élément GoLocal Query dédié.

Le contenu utilisateur enregistré est traduit lorsqu'il est affiché ultérieurement

Ajoutez une classe réutilisable telle que .gl-user-content à son conteneur d'affichage et incluez ce sélecteur dans do_not_translate_selectors sur l'élément principal GoLocal!.

L'entrée est à l'intérieur d'un groupe répétitif

Ne placez pas un élément de requête dans chaque cellule et ne dupliquez pas les ID HTML. Préférez filtrer le groupe répétitif avant de le restituer ; sinon, conservez l'assistant de requête en dehors du groupe répétitif et transmettez-y une seule valeur sélectionnée/recherche.

Liste de contrôle d'acceptation

  1. 1Recherchez le même document en anglais et en français.
  2. 2Tapez rapidement et confirmez qu’un résultat plus ancien ne remplace jamais un résultat plus récent.
  3. 3Effacez l’entrée et confirmez les réinitialisations de groupe répétitives.
  4. 4Changer de langue alors que l’entrée n’est pas vide.
  5. 5Testez deux entrées de recherche indépendantes sur la même page.
  6. 6Enregistrez un titre français avec des accents et confirmez que le texte exact est stocké.
  7. 7Tapez et collez dans Quill ; aucun des deux chemins ne doit être réécrit.
  8. 8Testez une requête inconnue et confirmez que la solution de secours brute maintient la page utilisable.
  9. 9Confirmez que chaque flux de travail de sauvegarde utilise la valeur d'entrée d'origine.
  10. 10Confirmez que les flux de travail critiques en langue source attendent is_normalizing = non.

Règle de décision rapide

L'affichage et la sauvegarde utilisent l'entrée. La correspondance de texte canonique utilise GoLocal Query.

Si Bubble peut comparer un objet, une option Option Set, un ID ou un code stable, utilisez cet objet directement. Ajoutez GoLocal Query uniquement lorsqu'une valeur de texte libre traduite doit être mise en correspondance avec un texte canonique en langue source.