GoLocal!
Abrir panel
Guía para desarrolladores BubbleTiempo de ejecución gratuito 4.1.23

Búsqueda multilingüe segura con GoLocal Query

Una guía para principiantes sobre el elemento principal GoLocal, el elemento opcional GoLocal Query, los controles de búsqueda automática de Bubble y la forma más segura de mantener las interfaces traducidas separadas de la lógica de la base de datos.

El concepto central

Una aplicación Bubble normalmente tiene una lenguaje canónico en el que se crearon las etiquetas de su base de datos, los valores de visualización Option Set y las condiciones de texto codificadas. GoLocal puede mostrar esos valores en otro idioma, pero la lógica Bubble aún puede esperar el valor canónico.

Idioma original del proyecto

ingles

Categoría almacenada: Noticias

El visitante ve

francés

Etiqueta visible: Actualités

Búsquedas Bubble

Noticias

Valor fuente normalizado

Regla de seguridad: la entrada visible sigue siendo el valor para el usuario y para guardar. un separado normalized_query se utiliza sólo cuando Bubble necesita explícitamente texto en el idioma de origen.

¿Qué elemento GoLocal debo usar?

El complemento contiene dos elementos Bubble no visuales diferentes. Resuelven diferentes problemas. La mayoría de las páginas necesitan el principal. GoLocal! elemento; sólo las páginas con un problema específico de búsqueda de texto necesitan GoLocal Query.

Disponibilidad del complemento: el separado GoLocal Query El elemento está incluido en el complemento Bubble gratuito/API-key y funciona con un proyecto GoLocal SaaS activo.

Traductor requerido

GoLocal!

Este es el principal motor de traducción. Carga su proyecto, traduce el contenido de la página, muestra el widget de idioma y publica el idioma actual y los eventos de traducción.

  • Por lo general, coloque una instancia en un encabezado reutilizable u otro elemento compartido por la página.
  • Utilice sus campos para la clave API, el widget, los ID/selectores excluidos y el comportamiento de origen/destino.
  • Utilice sus estados y eventos cuando Bubble deba conocer el idioma seleccionado o el estado de la traducción.

Ayudante lógico opcional

GoLocal Query

Esto no traduce la página y no muestra un widget. Convierte una frase de búsqueda ingresada por un visitante en la frase canónica del idioma de origen de su aplicación para la lógica Bubble.

  • Agréguelo solo cuando una entrada normal deba buscar o comparar texto almacenado en el idioma de origen del proyecto.
  • Utilice un elemento de consulta por entrada de búsqueda independiente.
  • Nunca utilice normalized_query para guardar nombres, títulos, descripciones o mensajes creados por el usuario.
Elemento o tarea BubbleQue usar
Texto, botón, grupo, interfaz de usuario reutilizableSolo GoLocal!
Entrada que guarda los datos del usuarioValor de entrada original
Entrada simple filtrando un campo de texto en inglésUn GoLocal Query
Bubble SearchBox o menú desplegableAutomático
Legado o Select2 MultiDropdownAutomático
Entrada multilínea, Quill, contenteditableValor del editor original
Restricción de grupo repetidoCosa/Option Set/ID primero
Correo electrónico, teléfono, contraseña, número, fecha, DNI, archivoValor original
Decisión sencilla: si se muestra el valor, utilice el traductor principal. Si se guarda el valor, utilice el valor Bubble original. Si una frase traducida debe compararse con el texto del idioma de origen, utilice un control automático compatible o un elemento GoLocal Query dedicado.

Arquitectura Bubble preferida

Siempre que sea posible, cree condiciones en torno a cosas Bubble, opciones de Option Set, ID únicos o códigos estables (texto para mostrar no traducido). La traducción debería cambiar lo que ve una persona, no la identidad del registro.

Lo mejor: comparar el objeto

Current cell's Article's Category
is Category News

El visitante puede ver "Actualités", pero Bubble compara la opción Category Thing o Option Set en sí.

Utilice Consulta solo para coincidencia de texto

Category name contains
GoLocal Query Categories's normalized_query

Esto es apropiado cuando la base de datos o una condición existente realmente busca texto canónico en inglés.

Conjunto de categorías de ejemplo

Inglés canónicopantalla francesa
NoticiasActualidades
OpiniónOpinión
Tutoríatutorial
GuíaGuía
RevisiónAvis
Historiahistoria
OtroOtro

Búsqueda inversa automática

Tiempo de ejecución gratuito 4.1.23 aplica automáticamente la búsqueda inversa solo a los controles Bubble cuyo propósito es seleccionar o buscar un valor existente:

Bubble SearchBox
Menú desplegable Bubble
Legado Bubble MultiDropdown
Actual Select2 MultiDropdown

Tipos de visitantes: Actualidades

Controlar partidos: Noticias

El visitante continúa viendo: Actualidades

Cada control admitido tiene un estado inverso aislado, incluidos varios controles en la misma página. No agregue un elemento GoLocal Query solo para duplicar este comportamiento integrado.

Bubble SearchBox

Úselo cuando el visitante busque y seleccione una cosa Bubble existente. GoLocal ayuda a que la frase traducida coincida con el texto canónico utilizado por SearchBox.

Menú desplegable Bubble

Úselo para una única selección de una lista estática o dinámica existente. La opción seleccionada sigue siendo el valor real de Bubble.

Legado Bubble MultiDropdown

Úselo para seleccionar varias opciones existentes en aplicaciones Bubble más antiguas. Cada control se normaliza de forma independiente.

Select2 MultiDropdown

Úselo para los controles de selección múltiple actuales con capacidad de búsqueda. El texto de búsqueda escrito puede coincidir con las etiquetas de opciones del idioma de origen sin cambiar las entradas normales.

Una entrada simple Bubble deliberadamente no es automática. El complemento no puede adivinar con seguridad si una entrada es un cuadro de búsqueda, el nombre de una persona, el título de una base de datos, un valor condicional o el texto que se guardará. Agregue GoLocal Query solo para la entrada particular cuya lógica descendente requiere texto canónico.

Usando GoLocal Query

Utilice lo no visual GoLocal Query elemento cuando una entrada Bubble ordinaria impulsa intencionalmente una búsqueda de texto, un filtro condicional del idioma de origen o un filtro backend/API.

1

Agregue un elemento de consulta para esta entrada

Colóquelo una vez en la página o en el elemento reutilizable propietario de la Entrada. No lo coloque en cada celda del grupo repetido.

Element name: GoLocal Query Categories
2

Vincular su campo de consulta

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

Bubble actualiza automáticamente el elemento cuando cambia el valor de entrada dinámica. No se requiere ningún flujo de trabajo modificado en las entradas.

3

Utilice normalized_query solo en la lógica del idioma de origen

GoLocal Query Categories's normalized_query

Utilice este valor en una restricción de grupo repetido, un filtro avanzado, un texto condicional o un parámetro API que espere inglés.

4

Mantenga guardados y validación conectados a la entrada

Save Category Name = Input Category Search's value

Nunca reemplace un valor guardado normal, una verificación de correo electrónico, un cálculo numérico o una verificación de campo obligatorio con normalized_query.

¿Qué sucede mientras el visitante escribe?

  1. 1La entrada cambia: Bubble pasa el valor de entrada actual exacto al campo Consulta.
  2. 2El rebote espera brevemente: Los 180 ms predeterminados evitan una solicitud por cada pulsación de tecla.
  3. 3La frase más nueva está normalizada.: Por ejemplo, "Actualités" se resuelve en "Noticias". Las solicitudes más antiguas sin finalizar no pueden sobrescribir el resultado más reciente.
  4. 4Bubble recibe los estados: normalized_query se convierte en "Noticias", is_normalizing se convierte en no y se activa el evento normalizado.
  5. 5Sólo la lógica prevista lo consume.: El filtro de grupo repetido, condicional o API utiliza normalized_query; los guardados todavía usan la entrada original.

Ejemplos prácticos de Bubble

grupo repetitivo

Buscar categorías de artículos en inglés a partir de una entrada en francés

Los tipos de visitantes Actualidades. La base de datos almacena Noticias. Establezca la restricción de nombre de categoría del grupo repetido en:

GoLocal Query Categories's normalized_query

Prefiere una selección de cosa de categoría/Option Set cuando esté disponible; use la normalización de texto solo cuando el filtro realmente esté basado en texto.

Bubble condicional

Comparar con un valor codificado en el idioma de origen

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

Si la condición controla un flujo de trabajo crítico, espere hasta que finalice la normalización. Para el filtrado de solo visualización, el respaldo sin formato puede ser suficiente.

Servidor o API

Enviar una consulta en lenguaje canónico a un punto final

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

Los ID, UUID, correos electrónicos, tokens, fechas y valores numéricos deben omitir GoLocal Query y enviarse sin cambios.

Tutorial completo para principiantes

Filtrar artículos por un nombre de categoría traducido

Supongamos que la aplicación se creó en inglés. El campo de la base de datos Nombre de categoría contiene Noticias, pero un visitante francés escribe Actualidades en una entrada normal.

1. Nombra claramente la entrada Bubble
Input Category Search
2. Agregue y nombre un ayudante no visual.
GoLocal Query Categories
3. Vincular el campo auxiliar
GoLocal Query Categories → Query
= Input Category Search's value
4. Establecer la restricción de texto del grupo repetido.
Search for Articles
Category name = GoLocal Query Categories's normalized_query
5. Mantenga sin cambios los flujos de trabajo de creación/edición
Create a new Article's title
= Input Article Title's value

Resultado: el visitante busca en francés, Bubble encuentra el valor de la base de datos en inglés y ningún texto ingresado por el usuario se reescribe ni se guarda en otro formato.

Páginas con múltiples entradas

Cree una instancia de GoLocal Query para cada contexto de búsqueda independiente. Cada instancia tiene su propio valor, temporizador antirrebote, protección de secuencia, estados y eventos, por lo que una entrada no puede sobrescribir a otra.

Entrada de búsqueda de artículosArtículos sobre GoLocal QueryArtículos que se repiten en el grupo.
Entrada de búsqueda de clientesClientes GoLocal QueryFiltro API del cliente
Filtro de etiqueta de entradaEtiquetas GoLocal QueryCondición de la etiqueta
No reutilice un elemento de consulta para entradas no relacionadas. Si un valor debe cruzar el límite de un elemento reutilizable, copie el normalized_query de ese elemento específico en un estado personalizado Bubble dedicado cuando normalized incendios de eventos.

¿Qué debe permanecer intacto?

Utilice GoLocal Query para

  • Texto de formato libre utilizado para buscar campos de bases de datos en lenguaje canónico
  • Condiciones de texto que esperan una constante en inglés
  • Parámetros de consulta API cuyo backend espera inglés
  • Controles de búsqueda de terceros que exponen su consulta escrita a Bubble

No lo utilices para

  • Se guardan nombres, títulos, comentarios, descripciones o etiquetas creadas por el usuario.
  • Contenido Quill, texto enriquecido, contenteditable o entrada multilínea
  • Correos electrónicos, contraseñas, teléfonos, identificaciones, fechas, números, archivos o validación
  • Bubble Cosas u objetos Option Set que se pueden comparar directamente

Contenido de usuario guardado que se muestra más tarde

Una entrada protegida aún se puede representar más tarde dentro de un elemento de texto Bubble normal. Marque el contenedor de visualización con una clase reutilizable como .gl-user-content y agréguelo al elemento principal de GoLocal do_not_translate_selectors. Para grupos repetidos, utilice una clase/selector en lugar de duplicar el mismo ID HTML en las filas.

Campos, estados y eventos.

Campos

Querytext

Vincular a un valor de entrada Bubble visible.

Enabledyes/no

Por defecto si. Cuando está deshabilitado, el texto recortado pasa sin cambios.

Debounce (ms)number

El valor predeterminado es 180. El rango recomendado para la búsqueda es de 150 a 250 ms.

Estados

original_querytext

Valor exacto recibido de Bubble antes de la normalización.

normalized_querytext

Valor canónico del idioma de origen para la lógica de búsqueda o comparación.

is_normalizingyes/no

Sí, mientras se resuelve la consulta más reciente que no está vacía.

normalization_foundyes/no

Sí, cuando se encontró una asignación del idioma de origen.

last_errortext

Mensaje de falla técnica; vacío durante el funcionamiento normal.

normalizado

Se activa después de que finaliza la última consulta. Úselo cuando un flujo de trabajo deba esperar o copiar el resultado a un estado personalizado.

normalization_failed

Incendios por fallo técnico. La consulta sin formato permanece como un recurso alternativo utilizable y los detalles aparecen en last_error.

Solución de problemas de configuraciones comunes de Bubble

normalized_query siempre es igual a la entrada sin formato

Confirme que el elemento principal GoLocal! esté presente y listo, que el idioma fuente del proyecto esté configurado correctamente y que el campo Consulta esté vinculado a la entrada deseada. Una frase desconocida puede utilizar intencionadamente el texto sin formato como recurso seguro.

El grupo repetido muestra brevemente el resultado anterior.

Para un filtrado estricto, muestre un estado de carga o ejecute la búsqueda final solo cuando el estado is_normalizing del elemento de consulta coincidente sea no. La protección de secuencia evita que una solicitud anterior reemplace un resultado más nuevo.

Un título guardado o una descripción cambiada

El flujo de trabajo para guardar hace referencia a normalized_query o al texto para mostrar traducido. Vuelva a cambiarlo al valor original de Entrada, Entrada multilínea o editor de texto enriquecido. GoLocal Query es solo para lógica coincidente.

Dos entradas interfieren entre sí

Asigne a cada búsqueda independiente su propio elemento GoLocal Query. No cambie dinámicamente un ayudante entre entradas no relacionadas.

Un selector de terceros no realiza coincidencias inversas

La compatibilidad automática está limitada a Bubble SearchBox, Bubble Dropdown, MultiDropdown heredado y Select2 MultiDropdown. Si el control de terceros expone texto escrito en Bubble, conecte ese texto a un elemento GoLocal Query dedicado.

El contenido del usuario guardado se traduce cuando se muestra más tarde

Agregue una clase reutilizable como .gl-user-content a su contenedor de visualización e incluya ese selector en do_not_translate_selectors en el elemento principal GoLocal!.

La entrada está dentro de un grupo repetido.

No coloque un elemento de consulta en cada celda y no duplique los ID de HTML. Prefiere filtrar el grupo repetido antes de renderizarlo; de lo contrario, mantenga el asistente de consulta fuera del grupo repetido y pásele un único valor seleccionado/de búsqueda.

Lista de verificación de aceptación

  1. 1Busque el mismo registro en inglés y francés.
  2. 2Escriba rápidamente y confirme que un resultado anterior nunca reemplaza a uno más nuevo.
  3. 3Borre la entrada y confirme los reinicios del grupo repetido.
  4. 4Cambie de idioma mientras la entrada no esté vacía.
  5. 5Pruebe dos entradas de búsqueda independientes en la misma página.
  6. 6Guarde un título francés con acentos y confirme que el texto exacto esté almacenado.
  7. 7Escriba y pegue en Quill; ninguna ruta debe reescribirse.
  8. 8Pruebe una consulta desconocida y confirme que el respaldo sin procesar mantiene la página utilizable.
  9. 9Confirme que cada flujo de trabajo guardado utilice el valor de entrada original.
  10. 10Confirme que los flujos de trabajo críticos en el idioma de origen esperen a que is_normalizing = no.

Regla de decisión rápida

Mostrar y guardar utiliza la Entrada. La coincidencia de texto canónico utiliza GoLocal Query.

Si Bubble puede comparar una cosa, una opción, un ID o un código estable de Option Set, utilice ese objeto directamente. Agregue GoLocal Query solo cuando un valor de texto traducido de formato libre deba compararse con el texto del idioma de origen canónico.