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
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.
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.
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 NewsLe 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_queryCeci 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
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 :
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.
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.
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 CategoriesLier son champ de requête
Query = Input Category Search's value
Enabled = yes
Debounce (ms) = 180Bubble 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.
Utilisez normalized_query uniquement dans la logique du langage source
GoLocal Query Categories's normalized_queryUtilisez 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.
Gardez les sauvegardes et la validation connectées à l'entrée
Save Category Name = Input Category Search's valueNe 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 ?
- 1L'entrée change: Bubble transmet la valeur d'entrée actuelle exacte dans le champ Requête.
- 2Le rebond attend brièvement: La valeur par défaut de 180 ms empêche une demande pour chaque frappe.
- 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.
- 4Bubble reçoit les états: normalized_query devient « News », is_normalizing devient non et l'événement normalisé se déclenche.
- 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_queryPré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 noLes 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.
Input Category SearchGoLocal Query CategoriesGoLocal Query Categories → Query
= Input Category Search's valueSearch for Articles
Category name = GoLocal Query Categories's normalized_queryCreate a new Article's title
= Input Article Title's valueRé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'articlesSaisir la recherche de clientsClients GoLocal QueryFiltre client APIFiltre de balise d'entréeGoLocal Query BalisesÉtat de l'étiquettenormalized 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
QuerytextLié à une valeur d’entrée Bubble visible.
Enabledyes/noPar défaut oui. Lorsqu'il est désactivé, le texte coupé passe sans changement.
Debounce (ms)numberPar défaut 180. La plage recommandée pour la recherche est de 150 à 250 ms.
États
original_querytextValeur exacte reçue de Bubble avant normalisation.
normalized_querytextValeur canonique de la langue source pour la logique de recherche ou de comparaison.
is_normalizingyes/noOui pendant que la requête non vide la plus récente est en cours de résolution.
normalization_foundyes/noOui lorsqu'un mappage de langue source a été trouvé.
last_errortextMessage 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
- 1Recherchez le même document en anglais et en français.
- 2Tapez rapidement et confirmez qu’un résultat plus ancien ne remplace jamais un résultat plus récent.
- 3Effacez l’entrée et confirmez les réinitialisations de groupe répétitives.
- 4Changer de langue alors que l’entrée n’est pas vide.
- 5Testez deux entrées de recherche indépendantes sur la même page.
- 6Enregistrez un titre français avec des accents et confirmez que le texte exact est stocké.
- 7Tapez et collez dans Quill ; aucun des deux chemins ne doit être réécrit.
- 8Testez une requête inconnue et confirmez que la solution de secours brute maintient la page utilisable.
- 9Confirmez que chaque flux de travail de sauvegarde utilise la valeur d'entrée d'origine.
- 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.