GoLocal!
대시보드 열기
Bubble 개발자 가이드무료 런타임 4.1.23

GoLocal Query로 안전한 다국어 검색

기본 GoLocal 요소, 선택적 GoLocal Query 요소, Bubble의 자동 검색 제어 및 번역된 인터페이스를 데이터베이스 로직과 별도로 유지하는 가장 안전한 방법에 대한 초보자 친화적인 가이드입니다.

핵심 개념

Bubble 앱에는 일반적으로 하나가 있습니다. 표준 언어 데이터베이스 레이블, Option Set 표시 값 및 하드 코딩된 텍스트 조건이 생성되었습니다. GoLocal은 해당 값을 다른 언어로 표시할 수 있지만 Bubble 논리에서는 여전히 표준 값을 기대할 수 있습니다.

Pro추출 소스

영어

저장 카테고리: 뉴스

방문자가 본다

프랑스어

표시되는 라벨: Actualités

Bubble 검색

뉴스

정규화된 소스 값

안전 규칙: 표시되는 입력은 사용자에게 표시되고 저장되는 값으로 유지됩니다. 별도의 normalized_query Bubble가 명시적으로 소스 언어 텍스트를 필요로 하는 경우에만 사용됩니다.

어떤 GoLocal 요소를 사용해야 합니까?

플러그인에는 두 가지 비시각적 Bubble 요소가 포함되어 있습니다. 그들은 다양한 문제를 해결합니다. 대부분의 페이지에는 기본이 필요합니다. GoLocal! 요소; 특정 텍스트 검색 문제가 있는 페이지만 필요합니다. GoLocal Query.

플러그인 가용성: 별도의 GoLocal Query 요소는 Free/API-key Bubble 플러그인에 포함되어 있으며 활성 GoLocal SaaS 프로젝트와 함께 작동합니다.

필수 번역가

GoLocal!

이것이 주요 번역 엔진입니다. 프로젝트를 로드하고, 페이지 콘텐츠를 번역하고, 언어 위젯을 표시하고, 현재 언어 및 번역 이벤트를 게시합니다.

  • 일반적으로 재사용 가능한 헤더나 페이지에서 공유하는 다른 요소에 하나의 인스턴스를 배치합니다.
  • API 키, 위젯, 제외된 ID/선택기 및 소스/대상 동작에 해당 필드를 사용하세요.
  • Bubble가 선택한 언어 또는 번역 상태를 알아야 하는 경우 해당 상태 및 이벤트를 사용합니다.

선택적 논리 도우미

GoLocal Query

이는 페이지를 번역하지 않으며 위젯을 표시하지 않습니다. 방문자가 입력한 검색 문구 하나를 Bubble 논리에 대한 앱의 표준 소스 언어 문구로 변환합니다.

  • 일반 입력이 프로젝트의 소스 언어에 저장된 텍스트를 검색하거나 비교해야 하는 경우에만 추가하세요.
  • 독립적인 검색 입력당 하나의 쿼리 요소를 사용합니다.
  • 사용자가 만든 이름, 제목, 설명 또는 메시지를 저장하는 데 normalized_query를 사용하지 마십시오.
Bubble 요소 또는 작업무엇을 사용해야합니까?
텍스트, 버튼, 그룹, 재사용 가능한 UIGoLocal! 전용
사용자 데이터를 저장하는 입력원래 입력 값
영어 텍스트 필드를 필터링하는 일반 입력GoLocal Query 1개
Bubble SearchBox 또는 드롭다운자동
레거시 또는 Select2 MultiDropdown자동
여러 줄 입력, Quill, contenteditable원본 편집기 값
반복 그룹 제약사물/Option Set/ID 먼저
이메일, 전화번호, 비밀번호, 번호, 날짜, 아이디, 파일원래 값
간단한 결정: 값이 표시되는 경우 주 변환기를 사용하십시오. 값을 저장하는 경우 원래 Bubble 값을 사용하십시오. 번역된 문구를 소스 언어 텍스트와 일치시켜야 하는 경우 지원되는 자동 컨트롤 또는 하나의 전용 GoLocal Query 요소를 사용하십시오.

선호되는 Bubble 아키텍처

가능할 때마다 번역된 표시 텍스트가 아닌 Bubble 사물, Option Set 옵션, 고유 ID 또는 안정적인 코드에 대한 조건을 구축하세요. 번역은 기록의 정체성이 아니라 사람이 보는 것을 바꿔야 합니다.

최고: 객체를 비교하세요

Current cell's Article's Category
is Category News

방문자는 "Actualités"를 볼 수 있지만 Bubble는 Category Thing 또는 Option Set 옵션 자체를 비교합니다.

텍스트 일치에만 쿼리 사용

Category name contains
GoLocal Query Categories's normalized_query

이는 데이터베이스나 기존 조건이 정식 영어 텍스트를 실제로 검색하는 경우에 적합합니다.

예시 카테고리 세트

정식 영어프렌치 디스플레이
뉴스실제 내용
의견의견
튜토리얼튜토리얼
가이드가이드
검토에이비스
역사역사
기타오트레

자동 역방향 조회

무료 런타임 4.1.23 기존 값을 선택하거나 검색하는 목적을 가진 Bubble 컨트롤에만 역방향 조회를 자동으로 적용합니다.

Bubble SearchBox
Bubble 드롭다운
레거시 Bubble MultiDropdown
현재 Select2 MultiDropdown

방문자 유형: 실제 내용

대조 경기: 뉴스

방문자는 계속해서 다음을 봅니다. 실제 내용

지원되는 각 컨트롤에는 동일한 페이지의 여러 컨트롤을 포함하여 격리된 역방향 상태가 있습니다. 단지 이 기본 제공 동작을 복제하기 위해 GoLocal Query 요소를 추가하지 마세요.

Bubble SearchBox

방문자가 기존 Bubble 사물을 검색하고 선택할 때 사용합니다. GoLocal은 번역된 문구가 SearchBox에서 사용되는 표준 텍스트와 일치하도록 도와줍니다.

Bubble 드롭다운

기존 정적 또는 동적 목록에서 단일 선택에 사용합니다. 선택한 옵션은 실제 Bubble 값으로 유지됩니다.

레거시 Bubble MultiDropdown

이전 Bubble 앱에서 여러 기존 옵션을 선택하는 데 사용합니다. 각 컨트롤은 독립적으로 정규화됩니다.

Select2 MultiDropdown

현재 검색 가능한 다중 선택 컨트롤에 사용합니다. 입력된 검색 텍스트는 일반 입력을 변경하지 않고도 소스 언어 옵션 레이블과 일치할 수 있습니다.

일반 Bubble 입력은 의도적으로 자동이 아닙니다. 플러그인은 입력이 검색 상자, 사람 이름, 데이터베이스 제목, 조건부 값 또는 저장될 텍스트인지 안전하게 추측할 수 없습니다. 다운스트림 로직에 표준 텍스트가 필요한 특정 입력에 대해서만 GoLocal Query를 추가하세요.

GoLocal Query 사용

비시각적 요소를 활용하라 GoLocal Query 일반 Bubble 입력이 의도적으로 텍스트 검색, 소스 언어 조건부 또는 백엔드/API 필터를 구동할 때 요소입니다.

1

이 입력에 대해 하나의 쿼리 요소를 추가하세요.

페이지나 입력을 소유한 재사용 가능한 요소에 한 번 배치하세요. 모든 반복 그룹 셀에 배치하지 마십시오.

Element name: GoLocal Query Categories
2

쿼리 필드 바인딩

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

Bubble는 동적 입력 값이 변경되면 자동으로 요소를 업데이트합니다. 입력 변경 작업 흐름이 필요하지 않습니다.

3

소스 언어 논리에서만 normalized_query를 사용하십시오.

GoLocal Query Categories's normalized_query

반복 그룹 제약 조건, 고급 필터, 텍스트 조건부 또는 영어가 필요한 API 매개 변수에 이 값을 사용하세요.

4

입력에 연결된 저장 및 유효성 검사를 유지하세요.

Save Category Name = Input Category Search's value

일반 저장 값, 이메일 확인, 숫자 계산 또는 필수 필드 확인을 normalized_query로 대체하지 마십시오.

방문자가 입력하는 동안 무슨 일이 발생합니까?

  1. 1입력 변경: Bubble는 정확한 현재 입력 값을 쿼리 필드에 전달합니다.
  2. 2디바운스는 잠시 기다립니다.: 기본값 180ms는 모든 단일 키 입력에 대한 요청을 방지합니다.
  3. 3최신 문구가 정규화되었습니다.: 예를 들어 "Actualités"는 "News"로 확인됩니다. 완료되지 않은 이전 요청은 최신 결과를 덮어쓸 수 없습니다.
  4. 4Bubble는 상태를 수신합니다.: normalized_query는 "News"가 되고 is_normalizing는 no가 되며 정규화된 이벤트가 시작됩니다.
  5. 5의도된 로직만이 이를 소비합니다.: 반복 그룹, 조건부 또는 API 필터는 normalized_query를 사용합니다. 저장은 여전히 ​​원래 입력을 사용합니다.

실용적인 Bubble 예

반복 그룹

프랑스어 입력에서 영어 기사 카테고리 검색

방문자 유형 실제 내용. 데이터베이스 저장소 뉴스. 반복 그룹의 카테고리 이름 제약 조건을 다음과 같이 설정합니다.

GoLocal Query Categories's normalized_query

가능한 경우 Category Thing/Option Set 선택을 선호합니다. 필터가 실제로 텍스트 기반인 경우에만 텍스트 정규화를 사용하세요.

Bubble 조건부

하드 코딩된 소스 언어 값과 비교

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

조건이 중요한 워크플로우를 제어하는 경우 정규화가 완료될 때까지 기다리십시오. 표시 전용 필터링의 경우 원시 대체만으로 충분할 수 있습니다.

백엔드 또는 API

엔드포인트에 표준 언어 쿼리 보내기

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

ID, UUID, 이메일, 토큰, 날짜 및 숫자 값은 GoLocal Query를 우회하고 변경되지 않은 상태로 전송되어야 합니다.

완전한 초보자 연습

번역된 카테고리 이름으로 기사 필터링

앱이 영어로 제작되었다고 가정합니다. 데이터베이스 필드 카테고리 이름 포함 뉴스, 그런데 프랑스 방문자가 입력합니다. 실제 내용 일반 입력으로.

1. Bubble 입력 이름을 명확하게 지정하십시오.
Input Category Search
2. 비시각적 도우미 한 명을 추가하고 이름을 지정하세요.
GoLocal Query Categories
3. 도우미 필드 바인딩
GoLocal Query Categories → Query
= Input Category Search's value
4. 반복 그룹의 텍스트 제약 조건 설정
Search for Articles
Category name = GoLocal Query Categories's normalized_query
5. 생성/편집 작업 흐름을 변경하지 않고 유지하세요.
Create a new Article's title
= Input Article Title's value

결과: 방문자는 프랑스어로 검색하고 Bubble는 영어 데이터베이스 값을 찾으며 사용자가 입력한 텍스트는 다시 작성되거나 다른 형식으로 저장되지 않습니다.

여러 입력이 있는 페이지

각각의 독립적인 검색 컨텍스트에 대해 하나의 GoLocal Query 인스턴스를 만듭니다. 각 인스턴스에는 고유한 값, 디바운스 타이머, 시퀀스 가드, 상태 및 이벤트가 있으므로 한 입력이 다른 입력을 덮어쓸 수 없습니다.

입력기사 검색GoLocal Query 기사기사 반복 그룹
고객 검색 입력GoLocal Query 고객고객 API 필터
입력 태그 필터GoLocal Query 태그태그 조건
관련되지 않은 입력에 대해 하나의 쿼리 요소를 재사용하지 마십시오. 값이 재사용 가능한 요소 경계를 넘어야 하는 경우 해당 요소의 normalized_query를 전용 Bubble 사용자 정의 상태로 복사하세요. normalized 이벤트가 발생합니다.

손대지 말아야 할 것

다음에는 GoLocal Query를 사용하세요.

  • 표준 언어 데이터베이스 필드를 검색하는 데 사용되는 자유 형식 텍스트
  • 영어 상수가 필요한 텍스트 조건
  • 백엔드에 영어가 필요한 API 쿼리 매개변수
  • 입력된 쿼리를 Bubble에 노출하는 타사 검색 컨트롤

다음 용도로 사용하지 마세요.

  • 이름, 제목, 설명, 설명 또는 사용자가 만든 태그가 저장됩니다.
  • Quill, 서식 있는 텍스트, contenteditable 또는 여러 줄 입력 콘텐츠
  • 이메일, 비밀번호, 전화, ID, 날짜, 숫자, 파일 또는 유효성 검사
  • Bubble 직접 비교할 수 있는 사물 또는 Option Set 객체

저장된 사용자 콘텐츠가 나중에 표시됨

보호된 입력은 나중에 일반 Bubble 텍스트 요소 내에서 렌더링될 수 있습니다. 다음과 같은 재사용 가능한 클래스로 디스플레이 컨테이너를 표시합니다. .gl-user-content 기본 GoLocal 요소에 추가합니다. do_not_translate_selectors. 반복 그룹의 경우 행 전체에 동일한 HTML ID를 복제하는 대신 클래스/선택기를 사용하세요.

필드, 상태 및 이벤트

필드

Querytext

하나의 표시되는 Bubble 입력 값에 바인딩합니다.

Enabledyes/no

기본값은 그렇습니다. 비활성화하면 잘린 텍스트가 변경되지 않고 통과됩니다.

Debounce (ms)number

기본값은 180입니다. 권장 검색 범위는 150~250ms입니다.

상태

original_querytext

정규화 전 Bubble로부터 받은 정확한 값입니다.

normalized_querytext

검색 또는 비교 논리에 대한 표준 소스 언어 값입니다.

is_normalizingyes/no

예, 비어 있지 않은 최신 쿼리가 해결되는 동안입니다.

normalization_foundyes/no

예, 소스 언어 매핑이 발견된 경우입니다.

last_errortext

기술적인 실패 메시지; 정상 작동 중에는 비어 있습니다.

표준화된

최신 쿼리가 완료된 후 실행됩니다. 워크플로가 결과를 사용자 정의 상태로 기다리거나 복사해야 하는 경우 이를 사용합니다.

normalization_failed

기술적인 실패로 인해 발생합니다. 원시 쿼리는 사용 가능한 대체 항목으로 유지되며 세부정보는 last_error에 표시됩니다.

일반적인 Bubble 설정 문제 해결

normalized_query는 항상 원시 입력과 같습니다.

기본 GoLocal! 요소가 존재하고 준비되었는지, 프로젝트 소스 언어가 올바르게 구성되었는지, 쿼리 필드가 의도한 입력에 바인딩되었는지 확인하세요. 알 수 없는 문구는 의도적으로 원시 텍스트를 안전한 대체 수단으로 사용할 수 있습니다.

반복 그룹에는 이전 결과가 간략하게 표시됩니다.

엄격한 필터링의 경우 로딩 상태를 표시하거나 일치하는 Query 요소의 is_normalizing 상태가 no인 경우에만 최종 검색을 실행합니다. 시퀀스 가드는 이전 요청이 새로운 결과를 대체하는 것을 방지합니다.

저장된 제목 또는 설명이 변경되었습니다.

저장 작업 흐름은 normalized_query 또는 번역된 표시 텍스트를 참조합니다. 원래 입력, 여러 줄 입력 또는 서식 있는 텍스트 편집기 값으로 다시 변경합니다. GoLocal Query는 로직 매칭에만 사용됩니다.

두 입력이 서로 간섭합니다.

각각의 독립적인 검색을 제공하십시오. 자체 GoLocal Query 요소를 입력하십시오. 관련되지 않은 입력 간에 하나의 도우미를 동적으로 전환하지 마세요.

타사 선택기는 역일치하지 않습니다.

자동 지원은 Bubble SearchBox, Bubble Dropdown, 레거시 MultiDropdown 및 Select2 MultiDropdown로 제한됩니다. 타사 컨트롤이 입력된 텍스트를 Bubble에 노출하는 경우 해당 텍스트를 전용 GoLocal Query 요소에 연결하세요.

저장된 사용자 콘텐츠는 나중에 표시될 때 번역됩니다.

.gl-user-content와 같은 재사용 가능한 클래스를 디스플레이 컨테이너에 추가하고 기본 GoLocal! 요소의 do_not_translate_selectors에 해당 선택기를 포함합니다.

입력이 반복 그룹 내에 있습니다.

모든 셀에 하나의 쿼리 요소를 배치하지 말고 HTML ID를 중복하지 마십시오. 렌더링하기 전에 반복 그룹을 필터링하는 것이 좋습니다. 그렇지 않으면 반복 그룹 외부에 쿼리 도우미를 유지하고 단일 선택/검색 값을 전달합니다.

수락 체크리스트

  1. 1영어와 프랑스어로 동일한 레코드를 검색합니다.
  2. 2빠르게 입력하고 이전 결과가 새 결과를 대체하지 않는지 확인하세요.
  3. 3입력을 지우고 반복 그룹 재설정을 확인합니다.
  4. 4입력이 비어 있지 않은 동안 언어를 전환합니다.
  5. 5동일한 페이지에서 두 개의 독립적인 검색 입력을 테스트합니다.
  6. 6악센트가 있는 프랑스어 제목을 저장하고 정확한 텍스트가 저장되었는지 확인하세요.
  7. 7Quill에 입력하고 붙여넣으세요. 두 경로 모두 다시 작성해서는 안 됩니다.
  8. 8알 수 없는 쿼리를 테스트하고 원시 폴백이 페이지를 계속 사용할 수 있는지 확인하세요.
  9. 9모든 저장 워크플로가 원래 입력 값을 사용하는지 확인하세요.
  10. 10중요한 소스 언어 워크플로가 is_normalizing = no를 기다리는지 확인하세요.

빠른 결정 규칙

표시 및 저장은 입력을 사용합니다. 정규 텍스트 일치는 GoLocal Query를 사용합니다.

Bubble가 사물, Option Set 옵션, ID 또는 안정적인 코드를 비교할 수 있는 경우 해당 개체를 직접 사용하세요. 번역된 자유 형식 텍스트 값이 표준 소스 언어 텍스트와 일치해야 하는 경우에만 GoLocal Query를 추가하세요.