Основная концепция
Приложение Bubble обычно имеет один канонический язык , на котором были созданы метки базы данных, отображаемые значения Option Set и жестко закодированные текстовые условия. GoLocal может отображать эти значения на другом языке, но логика Bubble по-прежнему может ожидать канонического значения.
Источник Project
Английский
Сохраненная категория: Новости
Посетитель видит
Французский
Видимая метка: Актуальные данные
Поиск Bubble
Новости
Нормализованное исходное значение
normalized_query используется только там, где Bubble явно требуется текст на исходном языке.Какой элемент GoLocal мне следует использовать?
Плагин содержит два разных невизуальных элемента Bubble. Они решают разные проблемы. Большинству страниц нужен элемент main GoLocal! ; требуется только страницам с определенной проблемой текстового поиска. GoLocal Query.
Требуется переводчик
GoLocal!
Это основной механизм перевода. Он загружает ваш проект, переводит содержимое страницы, отображает языковой виджет и публикует текущий язык и события перевода.
- Обычно помещает один экземпляр в многоразовый заголовок или другой элемент, общий для страницы.
- Используйте его поля для ключа API, виджета, исключенных идентификаторов/селекторов и поведения источника/цели.
- Используйте его состояния и события, когда Bubble должен знать выбранный язык или статус перевода.
Дополнительный логический помощник
GoLocal Query
Это не переводит страницу и не отображает виджет. Он преобразует одну поисковую фразу, введенную посетителем, в каноническую фразу на исходном языке вашего приложения для логики Bubble.
- Добавляйте ее только тогда, когда обычный ввод должен искать или сравнивать текст, хранящийся на исходном языке проекта.
- Используйте один элемент Query для каждого независимого поискового ввода.
- Никогда не используйте normalized_query для сохранения созданных пользователем имен, заголовков, описаний или сообщения.
Предпочитаемая архитектура Bubble
По возможности создавайте условия на основе Bubble вещей, параметров Option Set, уникальных идентификаторов или стабильных кодов, а не переведенного отображаемого текста. Перевод должен менять то, что видит человек, а не идентичность записи.
Лучший вариант: сравнить объект
Current cell's Article's Category
is Category NewsПосетитель может видеть «Actualités», но Bubble сравнивает сам параметр «Категория» или Option Set.
Использовать запрос только для сопоставления текста
Category name contains
GoLocal Query Categories's normalized_queryЭто подходит, когда база данных или существующее условие действительно ищут канонический текст на английском языке.
Пример категории установить
Автоматический обратный поиск
Бесплатная среда выполнения 4.1.23 автоматически применяет обратный поиск только к элементам управления Bubble, целью которых является выбор или поиск существующего значения:
Типы посетителей: Актуальные новости
Соответствие элементов управления: Новости
Посетитель продолжает видеть: Актуальные новости
Каждый поддерживаемый элемент управления имеет изолированное обратное состояние, включая несколько элементов управления на одной странице. Не добавляйте элемент GoLocal Query только для того, чтобы дублировать это встроенное поведение.
Bubble SearchBox
Используйте его, когда посетитель ищет и выбирает существующую вещь Bubble. GoLocal помогает переведенной фразе соответствовать каноническому тексту, используемому SearchBox.
Bubble Раскрывающийся список
Используйте его для одного выбора из существующего статического или динамического списка. Выбранный параметр остается реальным значением Bubble.
Устаревший Bubble MultiDropdown
Используйте его для выбора нескольких существующих параметров в старых приложениях Bubble. Каждый элемент управления нормализуется независимо.
Select2 MultiDropdown
Используйте его для текущих элементов управления с возможностью поиска и множественного выбора. Набранный текст поиска может соответствовать меткам параметров исходного языка без изменения обычных входных данных.
Использование GoLocal Query
Используйте невизуальный GoLocal Query элемент, когда обычный ввод Bubble намеренно управляет текстовым поиском, условием исходного языка или внутренним фильтром/фильтром API.
Добавьте для этого один элемент запроса. input
Поместите его один раз на страницу или в повторно используемый элемент, которому принадлежит вход. Не размещайте его в каждой ячейке повторяющейся группы.
Element name: GoLocal Query CategoriesПривяжите его поле запроса
Query = Input Category Search's value
Enabled = yes
Debounce (ms) = 180Bubble автоматически обновляет элемент при изменении динамического входного значения. Рабочий процесс с изменением ввода не требуется.
Используйте normalized_query только в логике исходного языка
GoLocal Query Categories's normalized_queryИспользуйте это значение в ограничении повторяющейся группы, расширенном фильтре, текстовом условии или параметре API, который ожидает английского языка.
Сохраняйте и проверяйте связь с входными данными.
Save Category Name = Input Category Search's valueНикогда не заменяйте обычное значение сохранения, проверку электронной почты, вычисление числа или проверку обязательных полей на normalized_query.
Что происходит, пока посетитель вводит текст?
- 1Вводные данные изменения: Bubble передает точное текущее значение ввода в поле «Запрос».
- 2Debounce ожидает короткое время: По умолчанию 180 мс предотвращает запрос для каждого отдельного нажатия клавиши.
- 3Новейшая фраза нормализуется: Например, «Actualités» разрешается в «News». Более старые незавершенные запросы не могут перезаписать самый новый результат.
- 4Bubble получает состояния: normalized_query становится «Новости», is_normalizing становится «нет», и срабатывает нормализованное событие.
- 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Идентификаторы, UUID, электронные письма, токены, даты и числовые значения должны отправляться в обход GoLocal Query и отправляться без изменений.
Полное руководство для начинающих.
Фильтровать статьи по переведенному названию категории.
Предположим, приложение создано на английском языке. Поле базы данных Имя категории содержит Новости, но французский посетитель вводит Актуальные новости обычный ввод.
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 valueРезультат: посетитель выполняет поиск на французском языке, Bubble находит значение базы данных на английском языке, и никакой введенный пользователем текст не перезаписывается и не сохраняется в другой форме.
Страницы с несколькими входными данными
Создайте по одному экземпляру GoLocal Query для каждого независимого контекста поиска. Каждый экземпляр имеет свое собственное значение, таймер устранения дребезга, защиту последовательности, состояния и события, поэтому один ввод не может перезаписать другой.
Ввод поиска статейGoLocal Query СтатьиПовторяющаяся группа статейВвод клиента ПоискКлиенты GoLocal QueryФильтр API для клиентовФильтр входных теговТеги GoLocal QueryУсловие тегаnormalized событие.Что следует оставить нетронутым
Используйте GoLocal Query для
- текста произвольной формы, используемого для поиска в полях базы данных на каноническом языке.
- Текстовые условия, ожидающие английского языка. константа
- Параметры запроса API, серверная часть которых ожидает английского языка.
- Сторонние элементы управления поиском, которые предоставляют свой типизированный запрос Bubble.
Не используйте его для
- имен, заголовков, комментариев, описаний или тегов, созданных пользователем.
- Quill, форматированный текст, contenteditable или содержимое многострочного ввода
- Электронная почта, пароли, телефоны, идентификаторы, даты, числа, файлы или проверка
- Bubble Вещи или объекты Option Set, которые можно сравнивать напрямую
Сохраненный пользовательский контент, отображаемый позже
Защищенный ввод по-прежнему может быть отображен позже внутри обычного Bubble Текстовый элемент. Пометьте контейнер отображения повторно используемым классом, например .gl-user-content , и добавьте его в основной элемент GoLocal do_not_translate_selectors. Для повторяющихся групп используйте класс/селектор вместо дублирования одного и того же идентификатора HTML в строках.
Поля, состояния и события
Поля
QuerytextПривязка к одному видимому входному значению Bubble.
Enabledyes/noПо умолчанию да. Если отключено, обрезанный текст проходит без изменений.
Debounce (ms)numberПо умолчанию 180. Рекомендуемый диапазон для поиска — 150–250 мс.
Состояния
original_querytextТочное значение, полученное от Bubble перед нормализацией.
normalized_querytextКаноническое значение исходного языка для логики поиска или сравнения.
is_normalizingyes/noДа, пока самый новый непустой запрос обрабатывается.
normalization_foundyes/noДа, если найдено сопоставление исходного языка.
last_errortextСообщение о технической неисправности; пуст во время нормальной работы.
нормализовано
Срабатывает после завершения последнего запроса. Используйте его, когда рабочий процесс должен ожидать или копировать результат в пользовательское состояние.
normalization_failed
Срабатывает из-за технического сбоя. Необработанный запрос остается в качестве резервного варианта, а подробные сведения отображаются в last_error.
Устранение неполадок общих настроек Bubble
normalized_query всегда соответствует необработанному входному значению
Убедитесь, что основной элемент GoLocal! присутствует и готов, исходный язык проекта настроен правильно, а поле запроса привязано к предполагаемому входному значению. Неизвестная фраза может намеренно использовать необработанный текст в качестве безопасного запасного варианта.
Повторяющаяся группа кратко показывает предыдущий результат
Для строгой фильтрации показывайте состояние загрузки или запускайте окончательный поиск только тогда, когда состояние is_normalizing соответствующего элемента Query равно «Нет». Защита последовательности не позволяет более старому запросу заменить более новый результат.
Сохраненный заголовок или описание изменены
Рабочий процесс сохранения ссылается на normalized_query или переведенный отображаемый текст. Измените его обратно на исходное значение ввода, многострочного ввода или редактора форматированного текста. GoLocal Query предназначен только для логики сопоставления.
Два входа мешают друг другу
Дайте каждому независимому поисковому входу собственный элемент GoLocal Query. Не переключайте динамически один помощник между несвязанными входными данными.
Сторонний селектор не выполняет обратное сопоставление.
Автоматическая поддержка ограничена Bubble, SearchBox, Bubble Dropdown, устаревшими MultiDropdown и Select2 MultiDropdown. Если сторонний элемент управления предоставляет набранный текст в Bubble, подключите этот текст к выделенному элементу GoLocal Query.
Сохраненный пользовательский контент переводится при дальнейшем отображении
Добавьте повторно используемый класс, такой как .gl-user-content, в его контейнер отображения и включите этот селектор в do_not_translate_selectors в главном GoLocal!. элемент.
Ввод находится внутри повторяющейся группы
Не размещайте по одному элементу Query в каждой ячейке и не дублируйте идентификаторы HTML. Предпочитайте фильтрацию повторяющейся группы перед ее визуализацией; в противном случае оставьте помощник запроса вне повторяющейся группы и передайте в него одно выбранное/искомое значение.
Принятие контрольный список
- 1Выполните поиск одной и той же записи на английском и французском языках.
- 2Введите быстро и подтвердите, что старый результат никогда не заменяет новый.
- 3Очистите входные данные и подтвердите сброс повторяющейся группы.
- 4Переключите язык, пока входной нет пусто.
- 5Протестируйте два независимых ввода поиска на одной странице.
- 6Сохраните заголовок на французском языке с акцентами и убедитесь, что сохранен точный текст.
- 7Введите и вставьте в Quill; ни один путь не должен перезаписываться.
- 8Протестируйте неизвестный запрос и убедитесь, что необработанный резервный вариант сохраняет работоспособность страницы.
- 9Убедитесь, что в каждом рабочем процессе сохранения используется исходное входное значение.
- 10Подтвердите, что важные рабочие процессы на исходном языке ждут is_normalizing = no.
Правило быстрого принятия решения
При отображении и сохранении используйте Ввод. Каноническое сопоставление текста использует GoLocal Query.
Если Bubble может сравнивать вещь, опцию Option Set, идентификатор или стабильный код, используйте этот объект напрямую. Добавляйте GoLocal Query только в том случае, если переведенное текстовое значение в произвольной форме должно быть сопоставлено с каноническим текстом на исходном языке.