GoLocal! Website Translation & Localization
Base44 source adapter 0.1.1-preview / browser runtime 1.3.2
=======================================================

WHAT THIS IS
This is a small React source adapter, not a marketplace application and not a
script to paste into an iframe. It translates an explicitly public area of a
published Base44 app. Our real fictional Northline Fieldguide demo is at:
https://north-line-guide.base44.app/translation-lab
Localized setup guide: https://goinglocal.online/en/guide/platforms/base44

The demo has passed scoped native checks: public routing and delayed FAQ text,
stable-ID filtering with visible French search, typed accents, excluded saved
names, complete cold-request privacy capture, three repeated manual corrections,
warm reloads and actual disabled/re-enabled publication. This does NOT mean every
Base44 app, private SDK-auth route, theme or customer installation is accepted.

1. ACCOUNT, PROJECT AND LANGUAGE
Sign in at https://goinglocal.online/dashboard and add a Website project. Select
Base44 when that installation option is available. Use the exact published host,
not the Base44 editor URL. Add only your own exact preview/sandbox domains when
you also need to test them. Set the original interface language to the language
your authored UI actually uses (English in our demo), NOT the visitor's language
or the language of customer records. Review widget languages and the separate
GoLocal service plan. A free adapter does not make service usage or Base44 code
access free, and installing it never starts or cancels a subscription for you.

Copy the project's PUBLIC browser key. It intentionally appears in site source;
use project/domain restrictions and service limits. It is not an administrative
credential. Never substitute a Base44 SDK token, model key, database password,
server/service-role key or account secret. Origin alone is not authentication;
never expose a privileged endpoint through this key.

2. CHOOSE THE OFFICIAL EDITING PATH
Download and unzip the adapter. The archive contains no real project key, env,
customer records, platform token or provider credential. SHA256SUMS records each
shipped file. Review the code before using it.

In our account, direct Code editing and ZIP export required a paid Base44 plan.
The ordinary source-generation chat was available under existing message credits.
If you use that path, provide ai-editor-prompt.txt plus the two actual helper/
provider files and the layout example. A prompt alone is not the helper source.
Check its output diff; AI generation is not guaranteed to reproduce code exactly.
If your plan allows direct source editing, copy the files normally instead.
Do not bypass restrictions or upgrade merely because a guide says to paste code.

3. MERGE INTO THE PUBLIC SHELL, DO NOT REPLACE YOUR APP
Keep golocal-public-loader.mjs and GoLocalPublicProvider.jsx together, for example
under src/components/integrations/. Import the provider in your existing public
layout. Merge the public-layout-example.jsx pattern; replace YOUR_PROJECT_KEY.
Leave the app router, SDK authentication gates, providers and private layouts
unchanged. Mount one provider AFTER the committed public DOM, never inside a
repeated card. Do not add a generic GoLocal script alongside it.

Exactly one #golocal-public wraps authored PUBLIC navigation, main content and
footer. Private pages do not use this public provider/layout. Keep displayed
customer content outside that root where possible. Public labels can be inside;
names and descriptions entered by clients are not interface labels and must be
excluded before the translator can see them.

  <span>Source name</span>
  <span data-user-content translate="no">Travail à domicile</span>
  <section data-gl-private translate="no">Private account details</section>
  <span data-gl-record-id>record-42</span>

Inherited data-tr-skip, translate="no" and .notranslate also exclude descendants.
Do not mark the whole public root notranslate. Keep private portals/dialogs in a
separate host outside #golocal-public; a CSS-hidden private panel still needs an
explicit exclusion. Input/textarea/contenteditable values are not rewritten.
Our demo uses contenteditable, not a full Quill installation. UGC displayed in
ordinary text nodes is not automatically recognizable as customer-owned data.

4. PUBLISH AND CONFIRM THE ACTUAL BUILD
Review the diff, compile, then use Base44 Publish explicitly. Preview, source
sandbox and published site can show different snapshots. Open the actual allowed
published URL and reload. The current script must be golocal-web-1.3.2.min.js,
with the supplied SRI, one script[data-golocal], one #golocal-public and one widget.
No root, duplicate root or invalid key intentionally emits no loader. A conflicting
older loader/runtime is not silently replaced. Resolve the duplicate and reload.
If the domain was just added, reload to obtain fresh project configuration; do
not remove domain restrictions to hide an authorization error.

5. KEEP FILTERS AND DATABASE IDENTITIES STABLE
Example: the authored category key is objects; a public record ID is nf-object-01.
French visitors see Objets and La Bouilloire n°4. Conditions should compare the
original category object/ID, not translated captions. The ID stays nf-object-01.
Our demo's OWN search implementation can match visible public text: typing
bouilloire returns that record and leaves the typed query unchanged. This is not
automatic reverse-search support for every Base44 input or database query.
Implement a reviewed public search index/normalizer yourself if your text-only
backend requires it. The Bubble GoLocal Query element is not a Base44 component.
Never normalize client names, editable documents or saved descriptions in place.

6. MANUAL EDITS, CACHE AND QUALITY
In GoLocal Translation Editor, choose this project and the exact source/target
pair, for example en→fr. Save Translation Lab → Laboratoire de traduction as a
manual correction. Eligible repeated instances use the same pair. Visible online
pages poll bundles and update asynchronously without reload; this is not instant
push. Background tabs, offline connections and network errors can delay updates.
Excluded nodes remain excluded. Check all occurrences and the manual source after
refresh. A warm repeat visit should reuse previously requested phrases; a newly
opened FAQ or new result counter can legitimately need its first translation.
Do not clear all translations or replace manual entries just to test the cache.
Review product/material terminology: a separately observed Arabic fallback error
confusing ash timber with residue remains unresolved. Do not assume universal
semantic accuracy from a successful cache or widget test.

7. DISABLE, ROLLBACK AND RELEASE CHECKLIST
Back up the current layout through your normal version history. To disable/remove,
remove only the provider import and mount, compile, publish, then FULLY reload.
Deleting a script tag does not stop an already-running runtime. Confirm no widget,
loader or GoLocal network request on a fresh load, and recheck native controls.
Keep helper files/history for rollback; restore the exact reviewed mount and
publish/reload to re-enable. This does not delete dictionaries or cancel billing.

Before a customer release test: cold and warm languages, public→private→public,
an initially private page, delayed responses across boundaries, forms with accents,
saved UGC, stable filters, lazy content, manual repeated edits/restoration, failures,
mobile/keyboard/RTL/long labels, CSP, disable/reinstall and an independent account.
Our lab panel is NOT authentication; actual SDK-auth/private-app initial-entry
and delayed native auth boundaries remain pending. Independent accounts, full
assistive technology and physical-device acceptance are also pending.

Base44's latest native scan showed a contradictory exposed-secret classification:
its explanation identified SRI as a hash and SDK token usage as platform scaffolding
and said no hardcoded secrets were found. We did not dismiss it or disable SRI.
This is not a clean-scan certification. Review your own security report; do not
blindly modify SDK authentication or accept extra access to remove a warning.

Client-side translation does not create server-rendered localized URLs, translate
emails/checkout or guarantee SEO rankings. Do not layer two translators over native
localized content. Existing GoLocal SaaS plans apply; Base44 hosting/code access is
separate. There is no extra Base44 marketplace app to buy from us.

OFFICIAL REFERENCES (checked 2026-10-16; platform UI/entitlements can change)
https://docs.base44.com/developers/app-code/overview/project-structure
https://docs.base44.com/developers/app-code/editor/code-tab
