GoLocal!
Відкрити інформаційну панель
Посібник розробника BubbleБезкоштовний час виконання 4.1.23

Безпечний багатомовний пошук із GoLocal Query

Посібник для початківців щодо основного елемента GoLocal, додаткового елемента GoLocal Query, елементів керування автоматичним пошуком Bubble і найбезпечнішого способу зберігати перекладені інтерфейси окремо від логіки бази даних.

Основна концепція

Додаток Bubble зазвичай має такий канонічна мова в якому були створені його мітки бази даних, значення відображення Option Set і жорстко закодовані текстові умови. GoLocal може показувати ці значення іншою мовою, але логіка Bubble може очікувати канонічного значення.

Джерело проекту

англійська

Збережена категорія: Новини

Відвідувач бачить

французька

Видима позначка: Actualités

Пошуки Bubble

Новини

Нормоване вихідне значення

Правила безпеки: видимий вхід залишається значенням для користувача та збереження. Окремий normalized_query використовується лише там, де Bubble явно потребує тексту мовою оригіналу.

Який елемент GoLocal слід використовувати?

Плагін містить два різні невізуальні елементи Bubble. Вони вирішують різні проблеми. Для більшості сторінок потрібна основна GoLocal! елемент; потрібні лише сторінки з певною проблемою текстового пошуку GoLocal Query.

Доступність плагіна: окремий GoLocal Query елемент включено в плагін Free/API-key Bubble і працює з активним проектом GoLocal SaaS.

Потрібен перекладач

GoLocal!

Це основний механізм перекладу. Він завантажує ваш проект, перекладає вміст сторінки, відображає мовний віджет і публікує поточну мову та події перекладу.

  • Зазвичай розміщують один екземпляр у багаторазовому заголовку або іншому елементі, спільному для сторінки.
  • Використовуйте його поля для ключа API, віджета, виключених ідентифікаторів/селекторів і поведінки джерела/цільової програми.
  • Використовуйте його стани та події, коли Bubble має знати вибрану мову або статус перекладу.

Додатковий логічний помічник

GoLocal Query

Це не перекладає сторінку та не відображає віджет. Він перетворює одну пошукову фразу, введену відвідувачем, у канонічну фразу вихідної мови вашого додатка для логіки Bubble.

  • Додайте його лише тоді, коли звичайний Input повинен шукати або порівнювати текст, що зберігається вихідною мовою проекту.
  • Використовуйте один елемент запиту на незалежний пошуковий вхід.
  • Ніколи не використовуйте normalized_query для збереження створених користувачами імен, назв, описів або повідомлень.
Елемент або завдання BubbleЩо використовувати
Текст, кнопка, група, інтерфейс багаторазового використанняЛише GoLocal!
Введення, яке зберігає дані користувачаОригінальне вхідне значення
Звичайний ввід фільтрує текстове поле англійською мовоюОдин GoLocal Query
Bubble SearchBox або DropdownАвтоматичний
Legacy або Select2 MultiDropdownАвтоматичний
Багаторядковий вхід, Quill, contenteditableОригінальне значення редактора
Повторюване групове обмеженняСпочатку Thing/Option Set/ID
Електронна пошта, телефон, пароль, номер, дата, ID, файлОригінальна вартість
Просте рішення: якщо значення відображається, використовуйте головний перекладач. Якщо значення зберігається, використовуйте вихідне значення Bubble. Якщо перекладену фразу потрібно зіставити з текстом вихідної мови, використовуйте підтримуваний автоматичний елемент керування або один виділений елемент GoLocal Query.

Бажана архітектура Bubble

За можливості створюйте умови навколо речей Bubble, опцій Option Set, унікальних ідентифікаторів або стабільних кодів — неперекладеного відображуваного тексту. Переклад має змінити те, що бачить людина, а не ідентичність запису.

Найкраще: порівняти об'єкт

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

Це доречно, коли база даних або існуюча умова справді шукає канонічний англійський текст.

Приклад набору категорій

Канонічна англійськаФранцузький дисплей
НовиниActualités
ДумкаДумка
ПідручникПідручник
ГідГід
оглядAvis
історіяHistoire
іншеAutre

Автоматичний зворотний пошук

Безкоштовний час виконання 4.1.23 автоматично застосовує зворотний пошук лише до елементів керування Bubble, метою яких є вибір або пошук існуючого значення:

Bubble SearchBox
Випадаюче меню Bubble
Застаріла Bubble MultiDropdown
Поточний Select2 MultiDropdown

Типи відвідувачів: Actualités

Контрольні матчі: Новини

Відвідувач продовжує бачити: Actualités

Кожен підтримуваний елемент керування має ізольований зворотний стан, включаючи кілька елементів керування на одній сторінці. Не додавайте елемент GoLocal Query просто для дублювання цієї вбудованої поведінки.

Bubble SearchBox

Використовуйте його, коли відвідувач шукає та вибирає існуючу річ Bubble. GoLocal допомагає перекладеній фразі відповідати канонічному тексту, який використовує SearchBox.

Випадаюче меню Bubble

Використовуйте його для окремого вибору з існуючого статичного або динамічного списку. Вибраний параметр залишається справжнім значенням Bubble.

Застаріла Bubble MultiDropdown

Використовуйте його для вибору кількох існуючих параметрів у старіших програмах Bubble. Кожен контроль нормалізується незалежно.

Select2 MultiDropdown

Використовуйте його для поточних елементів керування множинним вибором із можливістю пошуку. Введений пошуковий текст може збігатися з мітками параметрів вихідної мови без зміни звичайних вводів.

Простий вхід Bubble навмисно не є автоматичним. Плагін не може безпечно вгадати, чи буде введене поле пошуку, ім’я особи, назва бази даних, умовне значення чи текст, який буде збережено. Додайте GoLocal Query лише для певного введення, логіка низхідного потоку якого потребує канонічного тексту.

Використання GoLocal Query

Використовуйте невізуальне GoLocal Query елемент, коли звичайний Bubble Input навмисно запускає текстовий пошук, умовний вихідної мови або серверний/API фільтр.

1

Додайте один елемент запиту для цього введення

Розмістіть його один раз на сторінці або в багаторазовому елементі, якому належить Input. Не розміщуйте його в кожній клітинці повторюваної групи.

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. 2Debounce коротко чекає: За замовчуванням 180 мс запобігає запиту для кожного окремого натискання клавіші.
  3. 3Найновіша фраза нормалізована: Наприклад, «Actualités» має значення «Новини». Старіші незавершені запити не можуть перезаписати найновіший результат.
  4. 4Bubble отримує стани: normalized_query стає «Новинами», is_normalizing стає ні, і запускається нормалізована подія.
  5. 5Тільки передбачувана логіка споживає його: Повторювана група, умовний фільтр або фільтр API використовує normalized_query; збереження все ще використовують оригінальний вхід.

Практичні приклади Bubble

Група, що повторюється

Шукайте англійські категорії статей із французького введення

Типи відвідувачів Actualités. База даних зберігає Новини. Встановіть обмеження імені категорії повторюваної групи на:

GoLocal Query Categories's normalized_query

Віддавати перевагу вибору категорії 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 і надсилатися без змін.

Повне покрокове керівництво для початківців

Фільтрувати статті за перекладеною назвою категорії

Припустімо, що додаток створено англійською мовою. Поле бази даних Назва категорії містить Новини, але французький відвідувач типів Actualités у звичайний вхід.

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 або багаторядковий вміст
  • Електронні адреси, паролі, телефони, ідентифікатори, дати, номери, файли або підтвердження
  • 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

Повідомлення про технічний збій; empty during normal operation.

нормалізовано

Спрацьовує після завершення останнього запиту. Використовуйте його, коли робочий цикл повинен чекати або скопіювати результат у настроюваний стан.

normalization_failed

Пожежі через технічну несправність. Необроблений запит залишається резервним варіантом, а деталі з’являються в last_error.

Усунення несправностей типових налаштувань Bubble

normalized_query завжди дорівнює необробленому введенню

Переконайтеся, що основний елемент GoLocal! присутній і готовий, вихідну мову проекту налаштовано правильно, а поле запиту пов’язано з запланованим введенням. Невідома фраза може навмисно використовувати необроблений текст як безпечний запасний варіант.

Повторювана група коротко показує попередній результат

Для суворої фільтрації показуйте стан завантаження або запускайте остаточний пошук лише тоді, коли стан is_normalizing відповідного елемента запиту є ні. Захист послідовності запобігає заміні старішого запиту на новіший результат.

Збережену назву чи опис змінено

Робочий цикл збереження посилається на normalized_query або перекладений відображуваний текст. Поверніть його до початкового значення введення, багаторядкового введення або редактора форматованого тексту. GoLocal Query лише для відповідної логіки.

Два входи заважають один одному

Надайте кожному незалежному пошуковому введенню власний елемент GoLocal Query. Не перемикайте динамічно один помічник між непов’язаними входами.

Селектор третьої сторони не виконує зворотний збіг

Автоматична підтримка обмежена Bubble SearchBox, Bubble Dropdown, застарілою версією MultiDropdown і Select2 MultiDropdown. Якщо сторонній елемент керування надає введений текст Bubble, підключіть цей текст до виділеного елемента GoLocal Query.

Збережений вміст користувача перекладається, коли відображатиметься пізніше

Додайте повторно використовуваний клас, наприклад .gl-user-content, до його контейнера відображення та включіть цей селектор у do_not_translate_selectors основного елемента GoLocal!.

Вхід знаходиться всередині повторюваної групи

Не розміщуйте один елемент запиту в кожній клітинці та не дублюйте ідентифікатори HTML. Віддавайте перевагу фільтруванню повторюваної групи перед її рендерингом; інакше тримайте помічник запиту поза повторюваною групою та передавайте в нього одне вибране/пошукове значення.

Контрольний лист приймання

  1. 1Знайдіть той самий запис англійською та французькою мовами.
  2. 2Швидко вводьте текст і підтверджуйте, що старіший результат ніколи не замінює новіший.
  3. 3Очистіть введення та підтвердьте скидання повторюваних груп.
  4. 4Перемикайте мову, поки поле введення не порожнє.
  5. 5Перевірте два незалежних пошукових параметри на одній сторінці.
  6. 6Збережіть назву французькою мовою з наголосами та підтвердьте, що збережено точний текст.
  7. 7Введіть і вставте в Quill; жоден шлях не слід переписувати.
  8. 8Перевірте невідомий запит і підтвердьте, що необроблений резервний варіант підтримує сторінку придатною для використання.
  9. 9Переконайтеся, що кожен процес збереження використовує оригінальне вхідне значення.
  10. 10Підтвердьте критичні робочі цикли вихідної мови, зачекайте на is_normalizing = ні.

Правило швидкого прийняття рішень

Відображення та збереження використовуйте Вхід. Зіставлення канонічного тексту використовує GoLocal Query.

Якщо Bubble може порівняти річ, параметр Option Set, ідентифікатор або стабільний код, використовуйте цей об’єкт напряму. Додайте GoLocal Query лише тоді, коли перекладене текстове значення довільної форми має бути зіставлене з канонічним текстом вихідної мови.