GoLocal!
Apri il cruscotto
Guida per sviluppatori BubbleTempo di esecuzione gratuito 4.1.23

Ricerca multilingue sicura con GoLocal Query

Una guida per principianti all'elemento principale GoLocal, all'elemento GoLocal Query opzionale, ai controlli di ricerca automatica di Bubble e al modo più sicuro per mantenere le interfacce tradotte separate dalla logica del database.

Il concetto centrale

Un'app Bubble normalmente ne ha uno linguaggio canonico in cui sono state create le etichette del database, i valori di visualizzazione Option Set e le condizioni di testo codificate. GoLocal potrebbe mostrare tali valori in un'altra lingua, ma la logica Bubble può comunque aspettarsi il valore canonico.

Proespulsione origine

Inglese

Categoria memorizzata: Notizie

Il visitatore vede

francese

Etichetta visibile: Actualités

Bubble effettua ricerche

Novità

Valore sorgente normalizzato

Regola di sicurezza: l'input visibile rimane il valore rivolto all'utente e al salvataggio. Un separato normalized_query viene utilizzato solo dove Bubble richiede esplicitamente il testo nella lingua di origine.

Quale elemento GoLocal dovrei utilizzare?

Il plugin contiene due diversi elementi Bubble non visivi. Risolvono diversi problemi. La maggior parte delle pagine necessita del file main GoLocal! elemento; necessitano solo le pagine con uno specifico problema di ricerca di testo GoLocal Query.

Disponibilità del plugin: il separato GoLocal Query L'elemento è incluso nel plugin Bubble con chiave Free/API e funziona con un progetto GoLocal SaaS attivo.

Traduttore richiesto

GoLocal!

Questo è il principale motore di traduzione. Carica il tuo progetto, traduce il contenuto della pagina, visualizza il widget della lingua e pubblica la lingua corrente e gli eventi di traduzione.

  • Di solito inserisci un'istanza in un'intestazione riutilizzabile o in un altro elemento condiviso dalla pagina.
  • Utilizza i relativi campi per la chiave API, il widget, gli ID/selettori esclusi e il comportamento di origine/destinazione.
  • Utilizza i suoi stati ed eventi quando Bubble deve conoscere la lingua selezionata o lo stato della traduzione.

Assistente logico opzionale

GoLocal Query

Questo non traduce la pagina e non visualizza un widget. Converte una frase di ricerca immessa dal visitatore nella frase canonica nella lingua di origine della tua app per la logica Bubble.

  • Aggiungilo solo quando un input normale deve cercare o confrontare il testo memorizzato nella lingua di origine del progetto.
  • Utilizza un elemento Query per input di ricerca indipendente.
  • Non utilizzare mai normalized_query per salvare nomi, titoli, descrizioni o messaggi creati dall'utente.
Elemento o attività BubbleCosa usare
Testo, pulsante, gruppo, interfaccia utente riutilizzabileSolo GoLocal!
Ingresso che salva i dati dell'utenteValore di input originale
Filtro di input semplice in un campo di testo in ingleseUno GoLocal Query
Bubble SearchBox o menu a discesaAutomatico
Legacy o Select2 MultiDropdownAutomatico
Ingresso multilinea, Quill, contenteditableValore dell'editor originale
Vincolo di gruppo ripetutoPrima l'oggetto/Option Set/ID
E-mail, telefono, password, numero, data, ID, fileValore originale
Decisione semplice: se il valore viene visualizzato, utilizzare il traduttore principale. Se il valore viene salvato, utilizzare il valore Bubble originale. Se una frase tradotta deve essere confrontata con il testo nella lingua di origine, utilizzare un controllo automatico supportato o un elemento GoLocal Query dedicato.

Architettura Bubble preferita

Quando possibile, crea condizioni attorno a cose Bubble, opzioni Option Set, ID univoci o codici stabili, non testo visualizzato tradotto. La traduzione dovrebbe cambiare ciò che una persona vede, non l’identità del documento.

Meglio: confrontare l'oggetto

Current cell's Article's Category
is Category News

Il visitatore può vedere "Attualità", ma Bubble confronta l'oggetto della categoria o l'opzione Option Set stessa.

Utilizza Query solo per la corrispondenza del testo

Category name contains
GoLocal Query Categories's normalized_query

Ciò è appropriato quando il database o una condizione esistente ricerca realmente il testo inglese canonico.

Insieme di categorie di esempio

Inglese canonicoEsposizione francese
NovitàAttualità
OpinioneOpinione
EsercitazioneTutorial
GuidaGuida
RecensioneAvis
StoriaStoria
AltroAltro

Ricerca inversa automatica

Tempo di esecuzione gratuito 4.1.23 applica automaticamente la ricerca inversa solo ai controlli Bubble il cui scopo è selezionare o cercare un valore esistente:

Bubble SearchBox
Bubble Menu a discesa
Legacy Bubble MultiDropdown
Corrente Select2 MultiDropdown

Tipi di visitatori: Attualità

Corrispondenze di controllo: Novità

Il visitatore continua a vedere: Attualità

Ogni controllo supportato ha uno stato inverso isolato, inclusi più controlli sulla stessa pagina. Non aggiungere un elemento GoLocal Query solo per duplicare questo comportamento integrato.

Bubble SearchBox

Usalo quando il visitatore cerca e seleziona una cosa Bubble esistente. GoLocal aiuta la frase tradotta a corrispondere al testo canonico utilizzato da SearchBox.

Bubble Menu a discesa

Usalo per una singola selezione da un elenco statico o dinamico esistente. L'opzione selezionata rimane il valore Bubble reale.

Legacy Bubble MultiDropdown

Usalo per selezionare diverse opzioni esistenti nelle vecchie app Bubble. Ogni controllo è normalizzato in modo indipendente.

Select2 MultiDropdown

Usalo per i controlli di selezione multipla ricercabili correnti. Il testo di ricerca digitato può corrispondere alle etichette delle opzioni della lingua di origine senza modificare gli input ordinari.

Un semplice input Bubble non è deliberatamente automatico. Il plugin non può indovinare con sicurezza se un Input è una casella di ricerca, il nome di una persona, il titolo di un database, un valore condizionale o un testo che verrà salvato. Aggiungi GoLocal Query solo per l'input particolare la cui logica downstream richiede testo canonico.

Utilizzando GoLocal Query

Usa il non visivo GoLocal Query elemento quando un input Bubble ordinario guida intenzionalmente una ricerca di testo, un condizionale nella lingua di origine o un filtro backend/API.

1

Aggiungi un elemento di query per questo input

Posizionalo una volta sulla pagina o nell'elemento riutilizzabile che possiede l'Input. Non inserirlo in ogni cella del gruppo ripetuto.

Element name: GoLocal Query Categories
2

Associa il suo campo Query

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

Bubble aggiorna automaticamente l'elemento quando cambia il valore di input dinamico. Non è richiesto alcun flusso di lavoro con modifica dell'input.

3

Utilizzare normalized_query solo nella logica del linguaggio di origine

GoLocal Query Categories's normalized_query

Utilizzare questo valore in un vincolo di gruppo ripetuto, un filtro avanzato, un testo condizionale o un parametro API che prevede l'inglese.

4

Mantieni i salvataggi e la convalida collegati all'Input

Save Category Name = Input Category Search's value

Non sostituire mai un normale valore di salvataggio, un controllo e-mail, un calcolo numerico o un controllo dei campi obbligatori con normalized_query.

Cosa succede mentre il visitatore digita?

  1. 1L'ingresso cambia: Bubble passa l'esatto valore di input corrente nel campo Query.
  2. 2Debounce attende brevemente: I 180 ms predefiniti impediscono una richiesta per ogni singola pressione di un tasto.
  3. 3La frase più recente è normalizzata: Ad esempio, "Actualités" viene risolto in "News". Le richieste precedenti non completate non possono sovrascrivere il risultato più recente.
  4. 4Bubble riceve gli stati: normalized_query diventa "Novità", is_normalizing diventa no e l'evento normalizzato si attiva.
  5. 5Solo la logica prevista lo consuma: Il filtro gruppo ripetuto, condizionale o API utilizza normalized_query; i salvataggi utilizzano ancora l'input originale.

Esempi pratici Bubble

Gruppo ripetitivo

Cerca categorie di articoli in inglese da un input francese

Il visitatore digita Attualità. Il database memorizza Novità. Imposta il vincolo del nome categoria del gruppo ripetuto su:

GoLocal Query Categories's normalized_query

Preferire una selezione di categoria Cosa/Option Set quando disponibile; utilizzare la normalizzazione del testo solo quando il filtro è realmente basato sul testo.

Bubble condizionale

Confrontare con un valore della lingua di origine hardcoded

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

Se la condizione controlla un flusso di lavoro critico, attendere il completamento della normalizzazione. Per il filtraggio di sola visualizzazione, il fallback non elaborato potrebbe essere sufficiente.

Backend o API

Invia una query in linguaggio canonico a un endpoint

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

ID, UUID, e-mail, token, date e valori numerici devono ignorare GoLocal Query ed essere inviati senza modifiche.

Soluzione completa per principianti

Filtra gli articoli in base al nome di una categoria tradotta

Supponiamo che l'app sia stata creata in inglese. Il campo del database Nome della categoria contiene Novità, ma digita un visitatore francese Attualità in un ingresso normale.

1. Assegnare un nome chiaro all'ingresso Bubble
Input Category Search
2. Aggiungi e nomina un aiutante non visivo
GoLocal Query Categories
3. Associa il campo helper
GoLocal Query Categories → Query
= Input Category Search's value
4. Impostare il vincolo di testo del gruppo ripetuto
Search for Articles
Category name = GoLocal Query Categories's normalized_query
5. Mantieni invariati i flussi di lavoro di creazione/modifica
Create a new Article's title
= Input Article Title's value

Risultato: il visitatore effettua la ricerca in francese, Bubble trova il valore del database in inglese e nessun testo immesso dall'utente viene riscritto o salvato in un altro formato.

Pagine con più input

Crea un'istanza GoLocal Query per ogni contesto di ricerca indipendente. Ogni istanza ha il proprio valore, timer antirimbalzo, protezione della sequenza, stati ed eventi, quindi un input non può sovrascriverne un altro.

Inserisci la ricerca degli articoliGoLocal Query ArticoliGruppo di ripetizione articoli
Inserisci la ricerca del clienteClienti GoLocal QueryFiltro cliente API
Filtro tag di inputTag GoLocal QueryCondizione dell'etichetta
Non riutilizzare un elemento della query per input non correlati. Se un valore deve superare il limite di un elemento riutilizzabile, copia normalized_query di quell'elemento specifico in uno stato personalizzato Bubble dedicato quando è normalized incendi di eventi.

Ciò che deve rimanere intatto

Utilizzare GoLocal Query per

  • Testo in formato libero utilizzato per eseguire ricerche nei campi del database in linguaggio canonico
  • Condizioni di testo che prevedono una costante inglese
  • API Parametri di query il cui backend prevede l'inglese
  • Controlli di ricerca di terze parti che espongono la query digitata a Bubble

Non usarlo per

  • Nomi, titoli, commenti, descrizioni o tag creati dall'utente salvati
  • Quill, contenuto RTF, contenteditable o input multilinea
  • E-mail, password, telefoni, ID, date, numeri, file o convalida
  • Bubble Cose o oggetti Option Set che possono essere confrontati direttamente

Contenuti utente salvati visualizzati in seguito

Un input protetto può ancora essere sottoposto a rendering in seguito all'interno di un normale elemento testo Bubble. Contrassegna il contenitore di visualizzazione con una classe riutilizzabile come .gl-user-content e aggiungilo all'elemento principale di GoLocal do_not_translate_selectors. Per i gruppi ripetuti, utilizzare una classe/un selettore invece di duplicare lo stesso ID HTML su più righe.

Campi, stati ed eventi

Campi

Querytext

Associa a un valore di input Bubble visibile.

Enabledyes/no

Predefinito sì. Quando disabilitato, il testo tagliato rimane invariato.

Debounce (ms)number

Valore predefinito 180. L'intervallo consigliato per la ricerca è 150–250 ms.

Stati

original_querytext

Valore esatto ricevuto da Bubble prima della normalizzazione.

normalized_querytext

Valore canonico della lingua di partenza per la logica di ricerca o confronto.

is_normalizingyes/no

Sì mentre viene risolta la query non vuota più recente.

normalization_foundyes/no

Sì, quando è stata trovata una mappatura della lingua di origine.

last_errortext

Messaggio di guasto tecnico; vuoto durante il normale funzionamento.

normalizzato

Si attiva al termine dell'ultima query. Usalo quando un flusso di lavoro deve attendere o copiare il risultato in uno stato personalizzato.

normalization_failed

Incendi per un guasto tecnico. La query non elaborata rimane come fallback utilizzabile e i dettagli vengono visualizzati in last_error.

Risoluzione dei problemi relativi alle configurazioni comuni di Bubble

normalized_query equivale sempre all'input grezzo

Confermare che l'elemento principale GoLocal! sia presente e pronto, che la lingua di origine del progetto sia configurata correttamente e che il campo Query sia associato all'input previsto. Una frase sconosciuta può utilizzare intenzionalmente il testo grezzo come riserva sicura.

Il gruppo ripetuto mostra brevemente il risultato precedente

Per un filtraggio rigoroso, mostra uno stato di caricamento o esegui la ricerca finale solo quando lo stato is_normalizing dell'elemento query corrispondente è no. La protezione della sequenza impedisce a una richiesta precedente di sostituire un risultato più recente.

Un titolo o una descrizione salvati sono stati modificati

Il flusso di lavoro di salvataggio fa riferimento a normalized_query o al testo visualizzato tradotto. Ripristina il valore originale di input, input multilinea o editor RTF. GoLocal Query serve solo per la corrispondenza logica.

Due ingressi interferiscono tra loro

Assegna a ciascun input di ricerca indipendente il proprio elemento GoLocal Query. Non scambiare dinamicamente un aiutante tra input non correlati.

Un selettore di terze parti non esegue la corrispondenza inversa

Il supporto automatico è limitato a Bubble SearchBox, Bubble Dropdown, MultiDropdown legacy e Select2 MultiDropdown. Se il controllo di terze parti espone il testo digitato a Bubble, collega quel testo a un elemento GoLocal Query dedicato.

Il contenuto utente salvato viene tradotto quando viene visualizzato successivamente

Aggiungi una classe riutilizzabile come .gl-user-content al suo contenitore di visualizzazione e includi quel selettore in do_not_translate_selectors sull'elemento GoLocal! principale.

L'Input è all'interno di un gruppo ripetuto

Non inserire un elemento Query in ogni cella e non duplicare gli ID HTML. Preferisci filtrare il gruppo ripetuto prima di eseguirne il rendering; altrimenti mantieni l'helper query fuori dal gruppo ripetuto e passa al suo interno un singolo valore selezionato/di ricerca.

Lista di controllo per l'accettazione

  1. 1Cerca lo stesso record in inglese e francese.
  2. 2Digita rapidamente e conferma che un risultato precedente non ne sostituisce mai uno più recente.
  3. 3Cancellare l'ingresso e confermare il ripristino del gruppo ripetuto.
  4. 4Cambia lingua mentre l'Input non è vuoto.
  5. 5Prova due input di ricerca indipendenti sulla stessa pagina.
  6. 6Salva un titolo francese con accenti e verifica che il testo esatto sia memorizzato.
  7. 7Digita e incolla in Quill; nessuno dei due percorsi dovrebbe essere riscritto.
  8. 8Testa una query sconosciuta e verifica che il fallback non elaborato mantenga la pagina utilizzabile.
  9. 9Conferma che ogni flusso di lavoro di salvataggio utilizza il valore di input originale.
  10. 10Conferma che i flussi di lavoro critici nella lingua di origine attendono is_normalizing = no.

Regola della decisione rapida

Visualizzazione e salvataggio utilizzano l'Input. La corrispondenza del testo canonico utilizza GoLocal Query.

Se Bubble può confrontare una cosa, un'opzione Option Set, un ID o un codice stabile, utilizza direttamente quell'oggetto. Aggiungere GoLocal Query solo quando un valore di testo in formato libero tradotto deve essere confrontato con il testo canonico nella lingua di origine.